diff --git a/packages/contracts/hardhat.config.ts b/packages/contracts/hardhat.config.ts index 1b2d8cd..4814cca 100644 --- a/packages/contracts/hardhat.config.ts +++ b/packages/contracts/hardhat.config.ts @@ -46,7 +46,7 @@ const config: HardhatUserConfig = { }, base: { enableRip7212: true, - url: process.env.BASE_RPC_URL ?? 'https://base.llamarpc.com', + url: process.env.BASE_RPC_URL ?? 'https://base-rpc.publicnode.com', accounts: process.env.BASE_PRIVATE_KEY ? [process.env.BASE_PRIVATE_KEY] : [], chainId: 8453, } diff --git a/packages/contracts/ignition/deployments/chain-8453/build-info/7a666ce27bb9e35ebaa3dab6aa458c3e.json b/packages/contracts/ignition/deployments/chain-8453/build-info/7a666ce27bb9e35ebaa3dab6aa458c3e.json new file mode 100644 index 0000000..6c6fcc6 --- /dev/null +++ b/packages/contracts/ignition/deployments/chain-8453/build-info/7a666ce27bb9e35ebaa3dab6aa458c3e.json @@ -0,0 +1,237447 @@ +{ + "id": "7a666ce27bb9e35ebaa3dab6aa458c3e", + "_format": "hh-sol-build-info-1", + "solcVersion": "0.8.28", + "solcLongVersion": "0.8.28+commit.7893614a", + "input": { + "language": "Solidity", + "sources": { + "@account-abstraction/contracts/core/Helpers.sol": { + "content": "// SPDX-License-Identifier: GPL-3.0\npragma solidity ^0.8.23;\n\n/* solhint-disable no-inline-assembly */\n\n\n /*\n * For simulation purposes, validateUserOp (and validatePaymasterUserOp)\n * must return this value in case of signature failure, instead of revert.\n */\nuint256 constant SIG_VALIDATION_FAILED = 1;\n\n\n/*\n * For simulation purposes, validateUserOp (and validatePaymasterUserOp)\n * return this value on success.\n */\nuint256 constant SIG_VALIDATION_SUCCESS = 0;\n\n\n/**\n * Returned data from validateUserOp.\n * validateUserOp returns a uint256, which is created by `_packedValidationData` and\n * parsed by `_parseValidationData`.\n * @param aggregator - address(0) - The account validated the signature by itself.\n * address(1) - The account failed to validate the signature.\n * otherwise - This is an address of a signature aggregator that must\n * be used to validate the signature.\n * @param validAfter - This UserOp is valid only after this timestamp.\n * @param validaUntil - This UserOp is valid only up to this timestamp.\n */\nstruct ValidationData {\n address aggregator;\n uint48 validAfter;\n uint48 validUntil;\n}\n\n/**\n * Extract sigFailed, validAfter, validUntil.\n * Also convert zero validUntil to type(uint48).max.\n * @param validationData - The packed validation data.\n */\nfunction _parseValidationData(\n uint256 validationData\n) pure returns (ValidationData memory data) {\n address aggregator = address(uint160(validationData));\n uint48 validUntil = uint48(validationData >> 160);\n if (validUntil == 0) {\n validUntil = type(uint48).max;\n }\n uint48 validAfter = uint48(validationData >> (48 + 160));\n return ValidationData(aggregator, validAfter, validUntil);\n}\n\n/**\n * Helper to pack the return value for validateUserOp.\n * @param data - The ValidationData to pack.\n */\nfunction _packValidationData(\n ValidationData memory data\n) pure returns (uint256) {\n return\n uint160(data.aggregator) |\n (uint256(data.validUntil) << 160) |\n (uint256(data.validAfter) << (160 + 48));\n}\n\n/**\n * Helper to pack the return value for validateUserOp, when not using an aggregator.\n * @param sigFailed - True for signature failure, false for success.\n * @param validUntil - Last timestamp this UserOperation is valid (or zero for infinite).\n * @param validAfter - First timestamp this UserOperation is valid.\n */\nfunction _packValidationData(\n bool sigFailed,\n uint48 validUntil,\n uint48 validAfter\n) pure returns (uint256) {\n return\n (sigFailed ? 1 : 0) |\n (uint256(validUntil) << 160) |\n (uint256(validAfter) << (160 + 48));\n}\n\n/**\n * keccak function over calldata.\n * @dev copy calldata into memory, do keccak and drop allocated memory. Strangely, this is more efficient than letting solidity do it.\n */\n function calldataKeccak(bytes calldata data) pure returns (bytes32 ret) {\n assembly (\"memory-safe\") {\n let mem := mload(0x40)\n let len := data.length\n calldatacopy(mem, data.offset, len)\n ret := keccak256(mem, len)\n }\n }\n\n\n/**\n * The minimum of two numbers.\n * @param a - First number.\n * @param b - Second number.\n */\n function min(uint256 a, uint256 b) pure returns (uint256) {\n return a < b ? a : b;\n }\n" + }, + "@account-abstraction/contracts/core/UserOperationLib.sol": { + "content": "// SPDX-License-Identifier: GPL-3.0\npragma solidity ^0.8.23;\n\n/* solhint-disable no-inline-assembly */\n\nimport \"../interfaces/PackedUserOperation.sol\";\nimport {calldataKeccak, min} from \"./Helpers.sol\";\n\n/**\n * Utility functions helpful when working with UserOperation structs.\n */\nlibrary UserOperationLib {\n\n uint256 public constant PAYMASTER_VALIDATION_GAS_OFFSET = 20;\n uint256 public constant PAYMASTER_POSTOP_GAS_OFFSET = 36;\n uint256 public constant PAYMASTER_DATA_OFFSET = 52;\n /**\n * Get sender from user operation data.\n * @param userOp - The user operation data.\n */\n function getSender(\n PackedUserOperation calldata userOp\n ) internal pure returns (address) {\n address data;\n //read sender from userOp, which is first userOp member (saves 800 gas...)\n assembly {\n data := calldataload(userOp)\n }\n return address(uint160(data));\n }\n\n /**\n * Relayer/block builder might submit the TX with higher priorityFee,\n * but the user should not pay above what he signed for.\n * @param userOp - The user operation data.\n */\n function gasPrice(\n PackedUserOperation calldata userOp\n ) internal view returns (uint256) {\n unchecked {\n (uint256 maxPriorityFeePerGas, uint256 maxFeePerGas) = unpackUints(userOp.gasFees);\n if (maxFeePerGas == maxPriorityFeePerGas) {\n //legacy mode (for networks that don't support basefee opcode)\n return maxFeePerGas;\n }\n return min(maxFeePerGas, maxPriorityFeePerGas + block.basefee);\n }\n }\n\n /**\n * Pack the user operation data into bytes for hashing.\n * @param userOp - The user operation data.\n */\n function encode(\n PackedUserOperation calldata userOp\n ) internal pure returns (bytes memory ret) {\n address sender = getSender(userOp);\n uint256 nonce = userOp.nonce;\n bytes32 hashInitCode = calldataKeccak(userOp.initCode);\n bytes32 hashCallData = calldataKeccak(userOp.callData);\n bytes32 accountGasLimits = userOp.accountGasLimits;\n uint256 preVerificationGas = userOp.preVerificationGas;\n bytes32 gasFees = userOp.gasFees;\n bytes32 hashPaymasterAndData = calldataKeccak(userOp.paymasterAndData);\n\n return abi.encode(\n sender, nonce,\n hashInitCode, hashCallData,\n accountGasLimits, preVerificationGas, gasFees,\n hashPaymasterAndData\n );\n }\n\n function unpackUints(\n bytes32 packed\n ) internal pure returns (uint256 high128, uint256 low128) {\n return (uint128(bytes16(packed)), uint128(uint256(packed)));\n }\n\n //unpack just the high 128-bits from a packed value\n function unpackHigh128(bytes32 packed) internal pure returns (uint256) {\n return uint256(packed) >> 128;\n }\n\n // unpack just the low 128-bits from a packed value\n function unpackLow128(bytes32 packed) internal pure returns (uint256) {\n return uint128(uint256(packed));\n }\n\n function unpackMaxPriorityFeePerGas(PackedUserOperation calldata userOp)\n internal pure returns (uint256) {\n return unpackHigh128(userOp.gasFees);\n }\n\n function unpackMaxFeePerGas(PackedUserOperation calldata userOp)\n internal pure returns (uint256) {\n return unpackLow128(userOp.gasFees);\n }\n\n function unpackVerificationGasLimit(PackedUserOperation calldata userOp)\n internal pure returns (uint256) {\n return unpackHigh128(userOp.accountGasLimits);\n }\n\n function unpackCallGasLimit(PackedUserOperation calldata userOp)\n internal pure returns (uint256) {\n return unpackLow128(userOp.accountGasLimits);\n }\n\n function unpackPaymasterVerificationGasLimit(PackedUserOperation calldata userOp)\n internal pure returns (uint256) {\n return uint128(bytes16(userOp.paymasterAndData[PAYMASTER_VALIDATION_GAS_OFFSET : PAYMASTER_POSTOP_GAS_OFFSET]));\n }\n\n function unpackPostOpGasLimit(PackedUserOperation calldata userOp)\n internal pure returns (uint256) {\n return uint128(bytes16(userOp.paymasterAndData[PAYMASTER_POSTOP_GAS_OFFSET : PAYMASTER_DATA_OFFSET]));\n }\n\n function unpackPaymasterStaticFields(\n bytes calldata paymasterAndData\n ) internal pure returns (address paymaster, uint256 validationGasLimit, uint256 postOpGasLimit) {\n return (\n address(bytes20(paymasterAndData[: PAYMASTER_VALIDATION_GAS_OFFSET])),\n uint128(bytes16(paymasterAndData[PAYMASTER_VALIDATION_GAS_OFFSET : PAYMASTER_POSTOP_GAS_OFFSET])),\n uint128(bytes16(paymasterAndData[PAYMASTER_POSTOP_GAS_OFFSET : PAYMASTER_DATA_OFFSET]))\n );\n }\n\n /**\n * Hash the user operation data.\n * @param userOp - The user operation data.\n */\n function hash(\n PackedUserOperation calldata userOp\n ) internal pure returns (bytes32) {\n return keccak256(encode(userOp));\n }\n}\n" + }, + "@account-abstraction/contracts/interfaces/IAccount.sol": { + "content": "// SPDX-License-Identifier: GPL-3.0\npragma solidity >=0.7.5;\n\nimport \"./PackedUserOperation.sol\";\n\ninterface IAccount {\n /**\n * Validate user's signature and nonce\n * the entryPoint will make the call to the recipient only if this validation call returns successfully.\n * signature failure should be reported by returning SIG_VALIDATION_FAILED (1).\n * This allows making a \"simulation call\" without a valid signature\n * Other failures (e.g. nonce mismatch, or invalid signature format) should still revert to signal failure.\n *\n * @dev Must validate caller is the entryPoint.\n * Must validate the signature and nonce\n * @param userOp - The operation that is about to be executed.\n * @param userOpHash - Hash of the user's request data. can be used as the basis for signature.\n * @param missingAccountFunds - Missing funds on the account's deposit in the entrypoint.\n * This is the minimum amount to transfer to the sender(entryPoint) to be\n * able to make the call. The excess is left as a deposit in the entrypoint\n * for future calls. Can be withdrawn anytime using \"entryPoint.withdrawTo()\".\n * In case there is a paymaster in the request (or the current deposit is high\n * enough), this value will be zero.\n * @return validationData - Packaged ValidationData structure. use `_packValidationData` and\n * `_unpackValidationData` to encode and decode.\n * <20-byte> sigAuthorizer - 0 for valid signature, 1 to mark signature failure,\n * otherwise, an address of an \"authorizer\" contract.\n * <6-byte> validUntil - Last timestamp this operation is valid. 0 for \"indefinite\"\n * <6-byte> validAfter - First timestamp this operation is valid\n * If an account doesn't use time-range, it is enough to\n * return SIG_VALIDATION_FAILED value (1) for signature failure.\n * Note that the validation code cannot use block.timestamp (or block.number) directly.\n */\n function validateUserOp(\n PackedUserOperation calldata userOp,\n bytes32 userOpHash,\n uint256 missingAccountFunds\n ) external returns (uint256 validationData);\n}\n" + }, + "@account-abstraction/contracts/interfaces/PackedUserOperation.sol": { + "content": "// SPDX-License-Identifier: GPL-3.0\npragma solidity >=0.7.5;\n\n/**\n * User Operation struct\n * @param sender - The sender account of this request.\n * @param nonce - Unique value the sender uses to verify it is not a replay.\n * @param initCode - If set, the account contract will be created by this constructor/\n * @param callData - The method call to execute on this account.\n * @param accountGasLimits - Packed gas limits for validateUserOp and gas limit passed to the callData method call.\n * @param preVerificationGas - Gas not calculated by the handleOps method, but added to the gas paid.\n * Covers batch overhead.\n * @param gasFees - packed gas fields maxPriorityFeePerGas and maxFeePerGas - Same as EIP-1559 gas parameters.\n * @param paymasterAndData - If set, this field holds the paymaster address, verification gas limit, postOp gas limit and paymaster-specific extra data\n * The paymaster will pay for the transaction instead of the sender.\n * @param signature - Sender-verified signature over the entire request, the EntryPoint address and the chain ID.\n */\nstruct PackedUserOperation {\n address sender;\n uint256 nonce;\n bytes initCode;\n bytes callData;\n bytes32 accountGasLimits;\n uint256 preVerificationGas;\n bytes32 gasFees;\n bytes paymasterAndData;\n bytes signature;\n}\n" + }, + "FreshCryptoLib/FCL_ecdsa.sol": { + "content": "//********************************************************************************************/\n// ___ _ ___ _ _ _ _\n// | __| _ ___ __| |_ / __|_ _ _ _ _ __| |_ ___ | | (_) |__\n// | _| '_/ -_|_-< ' \\ | (__| '_| || | '_ \\ _/ _ \\ | |__| | '_ \\\n// |_||_| \\___/__/_||_| \\___|_| \\_, | .__/\\__\\___/ |____|_|_.__/\n// |__/|_|\n///* Copyright (C) 2022 - Renaud Dubois - This file is part of FCL (Fresh CryptoLib) project\n///* License: This software is licensed under MIT License\n///* This Code may be reused including license and copyright notice.\n///* See LICENSE file at the root folder of the project.\n///* FILE: FCL_ecdsa.sol\n///*\n///*\n///* DESCRIPTION: ecdsa verification implementation\n///*\n//**************************************************************************************/\n//* WARNING: this code SHALL not be used for non prime order curves for security reasons.\n// Code is optimized for a=-3 only curves with prime order, constant like -1, -2 shall be replaced\n// if ever used for other curve than sec256R1\n// SPDX-License-Identifier: MIT\npragma solidity >=0.8.19 <0.9.0;\n\n\nimport {FCL_Elliptic_ZZ} from \"./FCL_elliptic.sol\";\n\n\n\nlibrary FCL_ecdsa {\n // Set parameters for curve sec256r1.public\n //curve order (number of points)\n uint256 constant n = FCL_Elliptic_ZZ.n;\n \n /**\n * @dev ECDSA verification, given , signature, and public key.\n */\n\n /**\n * @dev ECDSA verification, given , signature, and public key, no calldata version\n */\n function ecdsa_verify(bytes32 message, uint256 r, uint256 s, uint256 Qx, uint256 Qy) internal view returns (bool){\n\n if (r == 0 || r >= FCL_Elliptic_ZZ.n || s == 0 || s >= FCL_Elliptic_ZZ.n) {\n return false;\n }\n \n if (!FCL_Elliptic_ZZ.ecAff_isOnCurve(Qx, Qy)) {\n return false;\n }\n\n uint256 sInv = FCL_Elliptic_ZZ.FCL_nModInv(s);\n\n uint256 scalar_u = mulmod(uint256(message), sInv, FCL_Elliptic_ZZ.n);\n uint256 scalar_v = mulmod(r, sInv, FCL_Elliptic_ZZ.n);\n uint256 x1;\n\n x1 = FCL_Elliptic_ZZ.ecZZ_mulmuladd_S_asm(Qx, Qy, scalar_u, scalar_v);\n\n x1= addmod(x1, n-r,n );\n \n return x1 == 0;\n }\n\n function ec_recover_r1(uint256 h, uint256 v, uint256 r, uint256 s) internal view returns (address)\n {\n if (r == 0 || r >= FCL_Elliptic_ZZ.n || s == 0 || s >= FCL_Elliptic_ZZ.n) {\n return address(0);\n }\n uint256 y=FCL_Elliptic_ZZ.ec_Decompress(r, v-27);\n uint256 rinv=FCL_Elliptic_ZZ.FCL_nModInv(r);\n uint256 u1=mulmod(FCL_Elliptic_ZZ.n-addmod(0,h,FCL_Elliptic_ZZ.n), rinv,FCL_Elliptic_ZZ.n);//-hr^-1\n uint256 u2=mulmod(s, rinv,FCL_Elliptic_ZZ.n);//sr^-1\n\n uint256 Qx;\n uint256 Qy;\n (Qx,Qy)=FCL_Elliptic_ZZ.ecZZ_mulmuladd(r,y, u1, u2);\n\n return address(uint160(uint256(keccak256(abi.encodePacked(Qx, Qy)))));\n }\n\n function ecdsa_precomputed_verify(bytes32 message, uint256 r, uint256 s, address Shamir8)\n internal view\n returns (bool)\n {\n \n if (r == 0 || r >= n || s == 0 || s >= n) {\n return false;\n }\n /* Q is pushed via the contract at address Shamir8 assumed to be correct\n if (!isOnCurve(Q[0], Q[1])) {\n return false;\n }*/\n\n uint256 sInv = FCL_Elliptic_ZZ.FCL_nModInv(s);\n\n uint256 X;\n\n //Shamir 8 dimensions\n X = FCL_Elliptic_ZZ.ecZZ_mulmuladd_S8_extcode(mulmod(uint256(message), sInv, n), mulmod(r, sInv, n), Shamir8);\n\n X= addmod(X, n-r,n );\n\n return X == 0;\n } //end ecdsa_precomputed_verify()\n\n function ecdsa_precomputed_verify(bytes32 message, uint256[2] calldata rs, address Shamir8)\n internal view\n returns (bool)\n {\n uint256 r = rs[0];\n uint256 s = rs[1];\n if (r == 0 || r >= n || s == 0 || s >= n) {\n return false;\n }\n /* Q is pushed via the contract at address Shamir8 assumed to be correct\n if (!isOnCurve(Q[0], Q[1])) {\n return false;\n }*/\n\n uint256 sInv = FCL_Elliptic_ZZ.FCL_nModInv(s);\n\n uint256 X;\n\n //Shamir 8 dimensions\n X = FCL_Elliptic_ZZ.ecZZ_mulmuladd_S8_extcode(mulmod(uint256(message), sInv, n), mulmod(r, sInv, n), Shamir8);\n\n X= addmod(X, n-r,n );\n\n return X == 0;\n } //end ecdsa_precomputed_verify()\n\n}\n" + }, + "FreshCryptoLib/FCL_elliptic.sol": { + "content": "//********************************************************************************************/\n// ___ _ ___ _ _ _ _\n// | __| _ ___ __| |_ / __|_ _ _ _ _ __| |_ ___ | | (_) |__\n// | _| '_/ -_|_-< ' \\ | (__| '_| || | '_ \\ _/ _ \\ | |__| | '_ \\\n// |_||_| \\___/__/_||_| \\___|_| \\_, | .__/\\__\\___/ |____|_|_.__/\n// |__/|_|\n///* Copyright (C) 2022 - Renaud Dubois - This file is part of FCL (Fresh CryptoLib) project\n///* License: This software is licensed under MIT License\n///* This Code may be reused including license and copyright notice.\n///* See LICENSE file at the root folder of the project.\n///* FILE: FCL_elliptic.sol\n///*\n///*\n///* DESCRIPTION: modified XYZZ system coordinates for EVM elliptic point multiplication\n///* optimization\n///*\n//**************************************************************************************/\n//* WARNING: this code SHALL not be used for non prime order curves for security reasons.\n// Code is optimized for a=-3 only curves with prime order, constant like -1, -2 shall be replaced\n// if ever used for other curve than sec256R1\n// SPDX-License-Identifier: MIT\npragma solidity >=0.8.19 <0.9.0;\n\nlibrary FCL_Elliptic_ZZ {\n // Set parameters for curve sec256r1.\n\n // address of the ModExp precompiled contract (Arbitrary-precision exponentiation under modulo)\n address constant MODEXP_PRECOMPILE = 0x0000000000000000000000000000000000000005;\n //curve prime field modulus\n uint256 constant p = 0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF;\n //short weierstrass first coefficient\n uint256 constant a = 0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC;\n //short weierstrass second coefficient\n uint256 constant b = 0x5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B;\n //generating point affine coordinates\n uint256 constant gx = 0x6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296;\n uint256 constant gy = 0x4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5;\n //curve order (number of points)\n uint256 constant n = 0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551;\n /* -2 mod p constant, used to speed up inversion and doubling (avoid negation)*/\n uint256 constant minus_2 = 0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFD;\n /* -2 mod n constant, used to speed up inversion*/\n uint256 constant minus_2modn = 0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC63254F;\n\n uint256 constant minus_1 = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF;\n //P+1 div 4\n uint256 constant pp1div4=0x3fffffffc0000000400000000000000000000000400000000000000000000000;\n //arbitrary constant to express no quadratic residuosity\n uint256 constant _NOTSQUARE=0xFFFFFFFF00000002000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF;\n uint256 constant _NOTONCURVE=0xFFFFFFFF00000003000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF;\n\n /**\n * /* inversion mod n via a^(n-2), use of precompiled using little Fermat theorem\n */\n function FCL_nModInv(uint256 u) internal view returns (uint256 result) {\n assembly {\n let pointer := mload(0x40)\n // Define length of base, exponent and modulus. 0x20 == 32 bytes\n mstore(pointer, 0x20)\n mstore(add(pointer, 0x20), 0x20)\n mstore(add(pointer, 0x40), 0x20)\n // Define variables base, exponent and modulus\n mstore(add(pointer, 0x60), u)\n mstore(add(pointer, 0x80), minus_2modn)\n mstore(add(pointer, 0xa0), n)\n\n // Call the precompiled contract 0x05 = ModExp\n if iszero(staticcall(not(0), 0x05, pointer, 0xc0, pointer, 0x20)) { revert(0, 0) }\n result := mload(pointer)\n }\n }\n /**\n * /* @dev inversion mod nusing little Fermat theorem via a^(n-2), use of precompiled\n */\n\n function FCL_pModInv(uint256 u) internal view returns (uint256 result) {\n assembly {\n let pointer := mload(0x40)\n // Define length of base, exponent and modulus. 0x20 == 32 bytes\n mstore(pointer, 0x20)\n mstore(add(pointer, 0x20), 0x20)\n mstore(add(pointer, 0x40), 0x20)\n // Define variables base, exponent and modulus\n mstore(add(pointer, 0x60), u)\n mstore(add(pointer, 0x80), minus_2)\n mstore(add(pointer, 0xa0), p)\n\n // Call the precompiled contract 0x05 = ModExp\n if iszero(staticcall(not(0), 0x05, pointer, 0xc0, pointer, 0x20)) { revert(0, 0) }\n result := mload(pointer)\n }\n }\n\n //Coron projective shuffling, take as input alpha as blinding factor\n function ecZZ_Coronize(uint256 alpha, uint256 x, uint256 y, uint256 zz, uint256 zzz) internal pure returns (uint256 x3, uint256 y3, uint256 zz3, uint256 zzz3)\n {\n \n uint256 alpha2=mulmod(alpha,alpha,p);\n \n x3=mulmod(alpha2, x,p); //alpha^-2.x\n y3=mulmod(mulmod(alpha, alpha2,p), y,p);\n\n zz3=mulmod(zz,alpha2,p);//alpha^2 zz\n zzz3=mulmod(zzz,mulmod(alpha, alpha2,p),p);//alpha^3 zzz\n \n return (x3, y3, zz3, zzz3);\n }\n\n\n function ecZZ_Add(uint256 x1, uint256 y1, uint256 zz1, uint256 zzz1, uint256 x2, uint256 y2, uint256 zz2, uint256 zzz2) internal pure returns (uint256 x3, uint256 y3, uint256 zz3, uint256 zzz3)\n {\n uint256 u1=mulmod(x1,zz2,p); // U1 = X1*ZZ2\n uint256 u2=mulmod(x2, zz1,p); // U2 = X2*ZZ1\n u2=addmod(u2, p-u1, p);// P = U2-U1\n x1=mulmod(u2, u2, p);//PP\n x2=mulmod(x1, u2, p);//PPP\n \n zz3=mulmod(x1, mulmod(zz1, zz2, p),p);//ZZ3 = ZZ1*ZZ2*PP \n zzz3=mulmod(zzz1, mulmod(zzz2, x2, p),p);//ZZZ3 = ZZZ1*ZZZ2*PPP\n\n zz1=mulmod(y1, zzz2,p); // S1 = Y1*ZZZ2\n zz2=mulmod(y2, zzz1, p); // S2 = Y2*ZZZ1 \n zz2=addmod(zz2, p-zz1, p);//R = S2-S1\n zzz1=mulmod(u1, x1,p); //Q = U1*PP\n x3= addmod(addmod(mulmod(zz2, zz2, p), p-x2,p), mulmod(minus_2, zzz1,p),p); //X3 = R2-PPP-2*Q\n y3=addmod( mulmod(zz2, addmod(zzz1, p-x3, p),p), p-mulmod(zz1, x2, p),p);//R*(Q-X3)-S1*PPP\n\n return (x3, y3, zz3, zzz3);\n }\n\n/// @notice Calculate one modular square root of a given integer. Assume that p=3 mod 4.\n/// @dev Uses the ModExp precompiled contract at address 0x05 for fast computation using little Fermat theorem\n/// @param self The integer of which to find the modular inverse\n/// @return result The modular inverse of the input integer. If the modular inverse doesn't exist, it revert the tx\n\nfunction SqrtMod(uint256 self) internal view returns (uint256 result){\n assembly (\"memory-safe\") {\n // load the free memory pointer value\n let pointer := mload(0x40)\n\n // Define length of base (Bsize)\n mstore(pointer, 0x20)\n // Define the exponent size (Esize)\n mstore(add(pointer, 0x20), 0x20)\n // Define the modulus size (Msize)\n mstore(add(pointer, 0x40), 0x20)\n // Define variables base (B)\n mstore(add(pointer, 0x60), self)\n // Define the exponent (E)\n mstore(add(pointer, 0x80), pp1div4)\n // We save the point of the last argument, it will be override by the result\n // of the precompile call in order to avoid paying for the memory expansion properly\n let _result := add(pointer, 0xa0)\n // Define the modulus (M)\n mstore(_result, p)\n\n // Call the precompiled ModExp (0x05) https://www.evm.codes/precompiled#0x05\n if iszero(\n staticcall(\n not(0), // amount of gas to send\n MODEXP_PRECOMPILE, // target\n pointer, // argsOffset\n 0xc0, // argsSize (6 * 32 bytes)\n _result, // retOffset (we override M to avoid paying for the memory expansion)\n 0x20 // retSize (32 bytes)\n )\n ) { revert(0, 0) }\n\n result := mload(_result)\n// result :=addmod(result,0,p)\n }\n if(mulmod(result,result,p)!=self){\n result=_NOTSQUARE;\n }\n \n return result;\n}\n /**\n * /* @dev Convert from affine rep to XYZZ rep\n */\n function ecAff_SetZZ(uint256 x0, uint256 y0) internal pure returns (uint256[4] memory P) {\n unchecked {\n P[2] = 1; //ZZ\n P[3] = 1; //ZZZ\n P[0] = x0;\n P[1] = y0;\n }\n }\n\n function ec_Decompress(uint256 x, uint256 parity) internal view returns(uint256 y){ \n\n uint256 y2=mulmod(x,mulmod(x,x,p),p);//x3\n y2=addmod(b,addmod(y2,mulmod(x,a,p),p),p);//x3+ax+b\n\n y=SqrtMod(y2);\n if(y==_NOTSQUARE){\n return _NOTONCURVE;\n }\n if((y&1)!=(parity&1)){\n y=p-y;\n }\n }\n\n /**\n * /* @dev Convert from XYZZ rep to affine rep\n */\n /* https://hyperelliptic.org/EFD/g1p/auto-shortw-xyzz-3.html#addition-add-2008-s*/\n function ecZZ_SetAff(uint256 x, uint256 y, uint256 zz, uint256 zzz) internal view returns (uint256 x1, uint256 y1) {\n uint256 zzzInv = FCL_pModInv(zzz); //1/zzz\n y1 = mulmod(y, zzzInv, p); //Y/zzz\n uint256 _b = mulmod(zz, zzzInv, p); //1/z\n zzzInv = mulmod(_b, _b, p); //1/zz\n x1 = mulmod(x, zzzInv, p); //X/zz\n }\n\n /**\n * /* @dev Sutherland2008 doubling\n */\n /* The \"dbl-2008-s-1\" doubling formulas */\n\n function ecZZ_Dbl(uint256 x, uint256 y, uint256 zz, uint256 zzz)\n internal\n pure\n returns (uint256 P0, uint256 P1, uint256 P2, uint256 P3)\n {\n unchecked {\n assembly {\n P0 := mulmod(2, y, p) //U = 2*Y1\n P2 := mulmod(P0, P0, p) // V=U^2\n P3 := mulmod(x, P2, p) // S = X1*V\n P1 := mulmod(P0, P2, p) // W=UV\n P2 := mulmod(P2, zz, p) //zz3=V*ZZ1\n zz := mulmod(3, mulmod(addmod(x, sub(p, zz), p), addmod(x, zz, p), p), p) //M=3*(X1-ZZ1)*(X1+ZZ1)\n P0 := addmod(mulmod(zz, zz, p), mulmod(minus_2, P3, p), p) //X3=M^2-2S\n x := mulmod(zz, addmod(P3, sub(p, P0), p), p) //M(S-X3)\n P3 := mulmod(P1, zzz, p) //zzz3=W*zzz1\n P1 := addmod(x, sub(p, mulmod(P1, y, p)), p) //Y3= M(S-X3)-W*Y1\n }\n }\n return (P0, P1, P2, P3);\n }\n\n /**\n * @dev Sutherland2008 add a ZZ point with a normalized point and greedy formulae\n * warning: assume that P1(x1,y1)!=P2(x2,y2), true in multiplication loop with prime order (cofactor 1)\n */\n\n function ecZZ_AddN(uint256 x1, uint256 y1, uint256 zz1, uint256 zzz1, uint256 x2, uint256 y2)\n internal\n pure\n returns (uint256 P0, uint256 P1, uint256 P2, uint256 P3)\n {\n unchecked {\n if (y1 == 0) {\n return (x2, y2, 1, 1);\n }\n\n assembly {\n y1 := sub(p, y1)\n y2 := addmod(mulmod(y2, zzz1, p), y1, p)\n x2 := addmod(mulmod(x2, zz1, p), sub(p, x1), p)\n P0 := mulmod(x2, x2, p) //PP = P^2\n P1 := mulmod(P0, x2, p) //PPP = P*PP\n P2 := mulmod(zz1, P0, p) ////ZZ3 = ZZ1*PP\n P3 := mulmod(zzz1, P1, p) ////ZZZ3 = ZZZ1*PPP\n zz1 := mulmod(x1, P0, p) //Q = X1*PP\n P0 := addmod(addmod(mulmod(y2, y2, p), sub(p, P1), p), mulmod(minus_2, zz1, p), p) //R^2-PPP-2*Q\n P1 := addmod(mulmod(addmod(zz1, sub(p, P0), p), y2, p), mulmod(y1, P1, p), p) //R*(Q-X3)\n }\n //end assembly\n } //end unchecked\n return (P0, P1, P2, P3);\n }\n\n /**\n * @dev Return the zero curve in XYZZ coordinates.\n */\n function ecZZ_SetZero() internal pure returns (uint256 x, uint256 y, uint256 zz, uint256 zzz) {\n return (0, 0, 0, 0);\n }\n /**\n * @dev Check if point is the neutral of the curve\n */\n\n // uint256 x0, uint256 y0, uint256 zz0, uint256 zzz0\n function ecZZ_IsZero(uint256, uint256 y0, uint256, uint256) internal pure returns (bool) {\n return y0 == 0;\n }\n /**\n * @dev Return the zero curve in affine coordinates. Compatible with the double formulae (no special case)\n */\n\n function ecAff_SetZero() internal pure returns (uint256 x, uint256 y) {\n return (0, 0);\n }\n\n /**\n * @dev Check if the curve is the zero curve in affine rep.\n */\n // uint256 x, uint256 y)\n function ecAff_IsZero(uint256, uint256 y) internal pure returns (bool flag) {\n return (y == 0);\n }\n\n /**\n * @dev Check if a point in affine coordinates is on the curve (reject Neutral that is indeed on the curve).\n */\n function ecAff_isOnCurve(uint256 x, uint256 y) internal pure returns (bool) {\n if (x >= p || y >= p || ((x == 0) && (y == 0))) {\n return false;\n }\n unchecked {\n uint256 LHS = mulmod(y, y, p); // y^2\n uint256 RHS = addmod(mulmod(mulmod(x, x, p), x, p), mulmod(x, a, p), p); // x^3+ax\n RHS = addmod(RHS, b, p); // x^3 + a*x + b\n\n return LHS == RHS;\n }\n }\n\n /**\n * @dev Add two elliptic curve points in affine coordinates. Deal with P=Q\n */\n\n function ecAff_add(uint256 x0, uint256 y0, uint256 x1, uint256 y1) internal view returns (uint256, uint256) {\n uint256 zz0;\n uint256 zzz0;\n\n if (ecAff_IsZero(x0, y0)) return (x1, y1);\n if (ecAff_IsZero(x1, y1)) return (x0, y0);\n if((x0==x1)&&(y0==y1)) {\n (x0, y0, zz0, zzz0) = ecZZ_Dbl(x0, y0,1,1);\n }\n else{\n (x0, y0, zz0, zzz0) = ecZZ_AddN(x0, y0, 1, 1, x1, y1);\n }\n\n return ecZZ_SetAff(x0, y0, zz0, zzz0);\n }\n\n /**\n * @dev Computation of uG+vQ using Strauss-Shamir's trick, G basepoint, Q public key\n * Returns only x for ECDSA use \n * */\n function ecZZ_mulmuladd_S_asm(\n uint256 Q0,\n uint256 Q1, //affine rep for input point Q\n uint256 scalar_u,\n uint256 scalar_v\n ) internal view returns (uint256 X) {\n uint256 zz;\n uint256 zzz;\n uint256 Y;\n uint256 index = 255;\n uint256 H0;\n uint256 H1;\n\n unchecked {\n if (scalar_u == 0 && scalar_v == 0) return 0;\n\n (H0, H1) = ecAff_add(gx, gy, Q0, Q1); \n if((H0==0)&&(H1==0))//handling Q=-G\n {\n scalar_u=addmod(scalar_u, n-scalar_v, n);\n scalar_v=0;\n if (scalar_u == 0 && scalar_v == 0) return 0;\n }\n assembly {\n for { let T4 := add(shl(1, and(shr(index, scalar_v), 1)), and(shr(index, scalar_u), 1)) } eq(T4, 0) {\n index := sub(index, 1)\n T4 := add(shl(1, and(shr(index, scalar_v), 1)), and(shr(index, scalar_u), 1))\n } {}\n zz := add(shl(1, and(shr(index, scalar_v), 1)), and(shr(index, scalar_u), 1))\n\n if eq(zz, 1) {\n X := gx\n Y := gy\n }\n if eq(zz, 2) {\n X := Q0\n Y := Q1\n }\n if eq(zz, 3) {\n X := H0\n Y := H1\n }\n\n index := sub(index, 1)\n zz := 1\n zzz := 1\n\n for {} gt(minus_1, index) { index := sub(index, 1) } {\n // inlined EcZZ_Dbl\n let T1 := mulmod(2, Y, p) //U = 2*Y1, y free\n let T2 := mulmod(T1, T1, p) // V=U^2\n let T3 := mulmod(X, T2, p) // S = X1*V\n T1 := mulmod(T1, T2, p) // W=UV\n let T4 := mulmod(3, mulmod(addmod(X, sub(p, zz), p), addmod(X, zz, p), p), p) //M=3*(X1-ZZ1)*(X1+ZZ1)\n zzz := mulmod(T1, zzz, p) //zzz3=W*zzz1\n zz := mulmod(T2, zz, p) //zz3=V*ZZ1, V free\n\n X := addmod(mulmod(T4, T4, p), mulmod(minus_2, T3, p), p) //X3=M^2-2S\n T2 := mulmod(T4, addmod(X, sub(p, T3), p), p) //-M(S-X3)=M(X3-S)\n Y := addmod(mulmod(T1, Y, p), T2, p) //-Y3= W*Y1-M(S-X3), we replace Y by -Y to avoid a sub in ecAdd\n\n {\n //value of dibit\n T4 := add(shl(1, and(shr(index, scalar_v), 1)), and(shr(index, scalar_u), 1))\n\n if iszero(T4) {\n Y := sub(p, Y) //restore the -Y inversion\n continue\n } // if T4!=0\n\n if eq(T4, 1) {\n T1 := gx\n T2 := gy\n }\n if eq(T4, 2) {\n T1 := Q0\n T2 := Q1\n }\n if eq(T4, 3) {\n T1 := H0\n T2 := H1\n }\n if iszero(zz) {\n X := T1\n Y := T2\n zz := 1\n zzz := 1\n continue\n }\n // inlined EcZZ_AddN\n\n //T3:=sub(p, Y)\n //T3:=Y\n let y2 := addmod(mulmod(T2, zzz, p), Y, p) //R\n T2 := addmod(mulmod(T1, zz, p), sub(p, X), p) //P\n\n //special extremely rare case accumulator where EcAdd is replaced by EcDbl, no need to optimize this\n //todo : construct edge vector case\n if iszero(y2) {\n if iszero(T2) {\n T1 := mulmod(minus_2, Y, p) //U = 2*Y1, y free\n T2 := mulmod(T1, T1, p) // V=U^2\n T3 := mulmod(X, T2, p) // S = X1*V\n\n T1 := mulmod(T1, T2, p) // W=UV\n y2 := mulmod(addmod(X, zz, p), addmod(X, sub(p, zz), p), p) //(X-ZZ)(X+ZZ)\n T4 := mulmod(3, y2, p) //M=3*(X-ZZ)(X+ZZ)\n\n zzz := mulmod(T1, zzz, p) //zzz3=W*zzz1\n zz := mulmod(T2, zz, p) //zz3=V*ZZ1, V free\n\n X := addmod(mulmod(T4, T4, p), mulmod(minus_2, T3, p), p) //X3=M^2-2S\n T2 := mulmod(T4, addmod(T3, sub(p, X), p), p) //M(S-X3)\n\n Y := addmod(T2, mulmod(T1, Y, p), p) //Y3= M(S-X3)-W*Y1\n\n continue\n }\n }\n\n T4 := mulmod(T2, T2, p) //PP\n let TT1 := mulmod(T4, T2, p) //PPP, this one could be spared, but adding this register spare gas\n zz := mulmod(zz, T4, p)\n zzz := mulmod(zzz, TT1, p) //zz3=V*ZZ1\n let TT2 := mulmod(X, T4, p)\n T4 := addmod(addmod(mulmod(y2, y2, p), sub(p, TT1), p), mulmod(minus_2, TT2, p), p)\n Y := addmod(mulmod(addmod(TT2, sub(p, T4), p), y2, p), mulmod(Y, TT1, p), p)\n\n X := T4\n }\n } //end loop\n let T := mload(0x40)\n mstore(add(T, 0x60), zz)\n //(X,Y)=ecZZ_SetAff(X,Y,zz, zzz);\n //T[0] = inverseModp_Hard(T[0], p); //1/zzz, inline modular inversion using precompile:\n // Define length of base, exponent and modulus. 0x20 == 32 bytes\n mstore(T, 0x20)\n mstore(add(T, 0x20), 0x20)\n mstore(add(T, 0x40), 0x20)\n // Define variables base, exponent and modulus\n //mstore(add(pointer, 0x60), u)\n mstore(add(T, 0x80), minus_2)\n mstore(add(T, 0xa0), p)\n\n // Call the precompiled contract 0x05 = ModExp\n if iszero(staticcall(not(0), 0x05, T, 0xc0, T, 0x20)) { revert(0, 0) }\n\n //Y:=mulmod(Y,zzz,p)//Y/zzz\n //zz :=mulmod(zz, mload(T),p) //1/z\n //zz:= mulmod(zz,zz,p) //1/zz\n X := mulmod(X, mload(T), p) //X/zz\n } //end assembly\n } //end unchecked\n\n return X;\n }\n\n\n /**\n * @dev Computation of uG+vQ using Strauss-Shamir's trick, G basepoint, Q public key\n * Returns affine representation of point (normalized) \n * */\n function ecZZ_mulmuladd(\n uint256 Q0,\n uint256 Q1, //affine rep for input point Q\n uint256 scalar_u,\n uint256 scalar_v\n ) internal view returns (uint256 X, uint256 Y) {\n uint256 zz;\n uint256 zzz;\n uint256 index = 255;\n uint256[6] memory T;\n uint256[2] memory H;\n \n unchecked {\n if (scalar_u == 0 && scalar_v == 0) return (0,0);\n\n (H[0], H[1]) = ecAff_add(gx, gy, Q0, Q1); //will not work if Q=P, obvious forbidden private key\n\n assembly {\n for { let T4 := add(shl(1, and(shr(index, scalar_v), 1)), and(shr(index, scalar_u), 1)) } eq(T4, 0) {\n index := sub(index, 1)\n T4 := add(shl(1, and(shr(index, scalar_v), 1)), and(shr(index, scalar_u), 1))\n } {}\n zz := add(shl(1, and(shr(index, scalar_v), 1)), and(shr(index, scalar_u), 1))\n\n if eq(zz, 1) {\n X := gx\n Y := gy\n }\n if eq(zz, 2) {\n X := Q0\n Y := Q1\n }\n if eq(zz, 3) {\n Y := mload(add(H,32))\n X := mload(H)\n }\n\n index := sub(index, 1)\n zz := 1\n zzz := 1\n\n for {} gt(minus_1, index) { index := sub(index, 1) } {\n // inlined EcZZ_Dbl\n let T1 := mulmod(2, Y, p) //U = 2*Y1, y free\n let T2 := mulmod(T1, T1, p) // V=U^2\n let T3 := mulmod(X, T2, p) // S = X1*V\n T1 := mulmod(T1, T2, p) // W=UV\n let T4 := mulmod(3, mulmod(addmod(X, sub(p, zz), p), addmod(X, zz, p), p), p) //M=3*(X1-ZZ1)*(X1+ZZ1)\n zzz := mulmod(T1, zzz, p) //zzz3=W*zzz1\n zz := mulmod(T2, zz, p) //zz3=V*ZZ1, V free\n\n X := addmod(mulmod(T4, T4, p), mulmod(minus_2, T3, p), p) //X3=M^2-2S\n T2 := mulmod(T4, addmod(X, sub(p, T3), p), p) //-M(S-X3)=M(X3-S)\n Y := addmod(mulmod(T1, Y, p), T2, p) //-Y3= W*Y1-M(S-X3), we replace Y by -Y to avoid a sub in ecAdd\n\n {\n //value of dibit\n T4 := add(shl(1, and(shr(index, scalar_v), 1)), and(shr(index, scalar_u), 1))\n\n if iszero(T4) {\n Y := sub(p, Y) //restore the -Y inversion\n continue\n } // if T4!=0\n\n if eq(T4, 1) {\n T1 := gx\n T2 := gy\n }\n if eq(T4, 2) {\n T1 := Q0\n T2 := Q1\n }\n if eq(T4, 3) {\n T1 := mload(H)\n T2 := mload(add(H,32))\n }\n if iszero(zz) {\n X := T1\n Y := T2\n zz := 1\n zzz := 1\n continue\n }\n // inlined EcZZ_AddN\n\n //T3:=sub(p, Y)\n //T3:=Y\n let y2 := addmod(mulmod(T2, zzz, p), Y, p) //R\n T2 := addmod(mulmod(T1, zz, p), sub(p, X), p) //P\n\n //special extremely rare case accumulator where EcAdd is replaced by EcDbl, no need to optimize this\n //todo : construct edge vector case\n if iszero(y2) {\n if iszero(T2) {\n T1 := mulmod(minus_2, Y, p) //U = 2*Y1, y free\n T2 := mulmod(T1, T1, p) // V=U^2\n T3 := mulmod(X, T2, p) // S = X1*V\n\n T1 := mulmod(T1, T2, p) // W=UV\n y2 := mulmod(addmod(X, zz, p), addmod(X, sub(p, zz), p), p) //(X-ZZ)(X+ZZ)\n T4 := mulmod(3, y2, p) //M=3*(X-ZZ)(X+ZZ)\n\n zzz := mulmod(T1, zzz, p) //zzz3=W*zzz1\n zz := mulmod(T2, zz, p) //zz3=V*ZZ1, V free\n\n X := addmod(mulmod(T4, T4, p), mulmod(minus_2, T3, p), p) //X3=M^2-2S\n T2 := mulmod(T4, addmod(T3, sub(p, X), p), p) //M(S-X3)\n\n Y := addmod(T2, mulmod(T1, Y, p), p) //Y3= M(S-X3)-W*Y1\n\n continue\n }\n }\n\n T4 := mulmod(T2, T2, p) //PP\n let TT1 := mulmod(T4, T2, p) //PPP, this one could be spared, but adding this register spare gas\n zz := mulmod(zz, T4, p)\n zzz := mulmod(zzz, TT1, p) //zz3=V*ZZ1\n let TT2 := mulmod(X, T4, p)\n T4 := addmod(addmod(mulmod(y2, y2, p), sub(p, TT1), p), mulmod(minus_2, TT2, p), p)\n Y := addmod(mulmod(addmod(TT2, sub(p, T4), p), y2, p), mulmod(Y, TT1, p), p)\n\n X := T4\n }\n } //end loop\n mstore(add(T, 0x60), zzz)\n //(X,Y)=ecZZ_SetAff(X,Y,zz, zzz);\n //T[0] = inverseModp_Hard(T[0], p); //1/zzz, inline modular inversion using precompile:\n // Define length of base, exponent and modulus. 0x20 == 32 bytes\n mstore(T, 0x20)\n mstore(add(T, 0x20), 0x20)\n mstore(add(T, 0x40), 0x20)\n // Define variables base, exponent and modulus\n //mstore(add(pointer, 0x60), u)\n mstore(add(T, 0x80), minus_2)\n mstore(add(T, 0xa0), p)\n\n // Call the precompiled contract 0x05 = ModExp\n if iszero(staticcall(not(0), 0x05, T, 0xc0, T, 0x20)) { revert(0, 0) }\n\n Y:=mulmod(Y,mload(T),p)//Y/zzz\n zz :=mulmod(zz, mload(T),p) //1/z\n zz:= mulmod(zz,zz,p) //1/zz\n X := mulmod(X, zz, p) //X/zz\n } //end assembly\n } //end unchecked\n\n return (X,Y);\n }\n\n //8 dimensions Shamir's trick, using precomputations stored in Shamir8, stored as Bytecode of an external\n //contract at given address dataPointer\n //(thx to Lakhdar https://github.com/Kelvyne for EVM storage explanations and tricks)\n // the external tool to generate tables from public key is in the /sage directory\n function ecZZ_mulmuladd_S8_extcode(uint256 scalar_u, uint256 scalar_v, address dataPointer)\n internal view\n returns (uint256 X /*, uint Y*/ )\n {\n unchecked {\n uint256 zz; // third and coordinates of the point\n\n uint256[6] memory T;\n zz = 256; //start index\n\n while (T[0] == 0) {\n zz = zz - 1;\n //tbd case of msb octobit is null\n T[0] = 64\n * (\n 128 * ((scalar_v >> zz) & 1) + 64 * ((scalar_v >> (zz - 64)) & 1)\n + 32 * ((scalar_v >> (zz - 128)) & 1) + 16 * ((scalar_v >> (zz - 192)) & 1)\n + 8 * ((scalar_u >> zz) & 1) + 4 * ((scalar_u >> (zz - 64)) & 1)\n + 2 * ((scalar_u >> (zz - 128)) & 1) + ((scalar_u >> (zz - 192)) & 1)\n );\n }\n assembly {\n extcodecopy(dataPointer, T, mload(T), 64)\n let index := sub(zz, 1)\n X := mload(T)\n let Y := mload(add(T, 32))\n let zzz := 1\n zz := 1\n\n //loop over 1/4 of scalars thx to Shamir's trick over 8 points\n for {} gt(index, 191) { index := add(index, 191) } {\n //inline Double\n {\n let TT1 := mulmod(2, Y, p) //U = 2*Y1, y free\n let T2 := mulmod(TT1, TT1, p) // V=U^2\n let T3 := mulmod(X, T2, p) // S = X1*V\n let T1 := mulmod(TT1, T2, p) // W=UV\n let T4 := mulmod(3, mulmod(addmod(X, sub(p, zz), p), addmod(X, zz, p), p), p) //M=3*(X1-ZZ1)*(X1+ZZ1)\n zzz := mulmod(T1, zzz, p) //zzz3=W*zzz1\n zz := mulmod(T2, zz, p) //zz3=V*ZZ1, V free\n\n X := addmod(mulmod(T4, T4, p), mulmod(minus_2, T3, p), p) //X3=M^2-2S\n //T2:=mulmod(T4,addmod(T3, sub(p, X),p),p)//M(S-X3)\n let T5 := mulmod(T4, addmod(X, sub(p, T3), p), p) //-M(S-X3)=M(X3-S)\n\n //Y:= addmod(T2, sub(p, mulmod(T1, Y ,p)),p )//Y3= M(S-X3)-W*Y1\n Y := addmod(mulmod(T1, Y, p), T5, p) //-Y3= W*Y1-M(S-X3), we replace Y by -Y to avoid a sub in ecAdd\n\n /* compute element to access in precomputed table */\n }\n {\n let T4 := add(shl(13, and(shr(index, scalar_v), 1)), shl(9, and(shr(index, scalar_u), 1)))\n let index2 := sub(index, 64)\n let T3 :=\n add(T4, add(shl(12, and(shr(index2, scalar_v), 1)), shl(8, and(shr(index2, scalar_u), 1))))\n let index3 := sub(index2, 64)\n let T2 :=\n add(T3, add(shl(11, and(shr(index3, scalar_v), 1)), shl(7, and(shr(index3, scalar_u), 1))))\n index := sub(index3, 64)\n let T1 :=\n add(T2, add(shl(10, and(shr(index, scalar_v), 1)), shl(6, and(shr(index, scalar_u), 1))))\n\n //tbd: check validity of formulae with (0,1) to remove conditional jump\n if iszero(T1) {\n Y := sub(p, Y)\n\n continue\n }\n extcodecopy(dataPointer, T, T1, 64)\n }\n\n {\n /* Access to precomputed table using extcodecopy hack */\n\n // inlined EcZZ_AddN\n if iszero(zz) {\n X := mload(T)\n Y := mload(add(T, 32))\n zz := 1\n zzz := 1\n\n continue\n }\n\n let y2 := addmod(mulmod(mload(add(T, 32)), zzz, p), Y, p)\n let T2 := addmod(mulmod(mload(T), zz, p), sub(p, X), p)\n\n //special case ecAdd(P,P)=EcDbl\n if iszero(y2) {\n if iszero(T2) {\n let T1 := mulmod(minus_2, Y, p) //U = 2*Y1, y free\n T2 := mulmod(T1, T1, p) // V=U^2\n let T3 := mulmod(X, T2, p) // S = X1*V\n\n T1 := mulmod(T1, T2, p) // W=UV\n y2 := mulmod(addmod(X, zz, p), addmod(X, sub(p, zz), p), p) //(X-ZZ)(X+ZZ)\n let T4 := mulmod(3, y2, p) //M=3*(X-ZZ)(X+ZZ)\n\n zzz := mulmod(T1, zzz, p) //zzz3=W*zzz1\n zz := mulmod(T2, zz, p) //zz3=V*ZZ1, V free\n\n X := addmod(mulmod(T4, T4, p), mulmod(minus_2, T3, p), p) //X3=M^2-2S\n T2 := mulmod(T4, addmod(T3, sub(p, X), p), p) //M(S-X3)\n\n Y := addmod(T2, mulmod(T1, Y, p), p) //Y3= M(S-X3)-W*Y1\n\n continue\n }\n }\n\n let T4 := mulmod(T2, T2, p)\n let T1 := mulmod(T4, T2, p) //\n zz := mulmod(zz, T4, p)\n //zzz3=V*ZZ1\n zzz := mulmod(zzz, T1, p) // W=UV/\n let zz1 := mulmod(X, T4, p)\n X := addmod(addmod(mulmod(y2, y2, p), sub(p, T1), p), mulmod(minus_2, zz1, p), p)\n Y := addmod(mulmod(addmod(zz1, sub(p, X), p), y2, p), mulmod(Y, T1, p), p)\n }\n } //end loop\n mstore(add(T, 0x60), zz)\n\n //(X,Y)=ecZZ_SetAff(X,Y,zz, zzz);\n //T[0] = inverseModp_Hard(T[0], p); //1/zzz, inline modular inversion using precompile:\n // Define length of base, exponent and modulus. 0x20 == 32 bytes\n mstore(T, 0x20)\n mstore(add(T, 0x20), 0x20)\n mstore(add(T, 0x40), 0x20)\n // Define variables base, exponent and modulus\n //mstore(add(pointer, 0x60), u)\n mstore(add(T, 0x80), minus_2)\n mstore(add(T, 0xa0), p)\n\n // Call the precompiled contract 0x05 = ModExp\n if iszero(staticcall(not(0), 0x05, T, 0xc0, T, 0x20)) { revert(0, 0) }\n\n zz := mload(T)\n X := mulmod(X, zz, p) //X/zz\n }\n } //end unchecked\n }\n\n \n\n // improving the extcodecopy trick : append array at end of contract\n function ecZZ_mulmuladd_S8_hackmem(uint256 scalar_u, uint256 scalar_v, uint256 dataPointer)\n internal view\n returns (uint256 X /*, uint Y*/ )\n {\n uint256 zz; // third and coordinates of the point\n\n uint256[6] memory T;\n zz = 256; //start index\n\n unchecked {\n while (T[0] == 0) {\n zz = zz - 1;\n //tbd case of msb octobit is null\n T[0] = 64\n * (\n 128 * ((scalar_v >> zz) & 1) + 64 * ((scalar_v >> (zz - 64)) & 1)\n + 32 * ((scalar_v >> (zz - 128)) & 1) + 16 * ((scalar_v >> (zz - 192)) & 1)\n + 8 * ((scalar_u >> zz) & 1) + 4 * ((scalar_u >> (zz - 64)) & 1)\n + 2 * ((scalar_u >> (zz - 128)) & 1) + ((scalar_u >> (zz - 192)) & 1)\n );\n }\n assembly {\n codecopy(T, add(mload(T), dataPointer), 64)\n X := mload(T)\n let Y := mload(add(T, 32))\n let zzz := 1\n zz := 1\n\n //loop over 1/4 of scalars thx to Shamir's trick over 8 points\n for { let index := 254 } gt(index, 191) { index := add(index, 191) } {\n let T1 := mulmod(2, Y, p) //U = 2*Y1, y free\n let T2 := mulmod(T1, T1, p) // V=U^2\n let T3 := mulmod(X, T2, p) // S = X1*V\n T1 := mulmod(T1, T2, p) // W=UV\n let T4 := mulmod(3, mulmod(addmod(X, sub(p, zz), p), addmod(X, zz, p), p), p) //M=3*(X1-ZZ1)*(X1+ZZ1)\n zzz := mulmod(T1, zzz, p) //zzz3=W*zzz1\n zz := mulmod(T2, zz, p) //zz3=V*ZZ1, V free\n\n X := addmod(mulmod(T4, T4, p), mulmod(minus_2, T3, p), p) //X3=M^2-2S\n //T2:=mulmod(T4,addmod(T3, sub(p, X),p),p)//M(S-X3)\n T2 := mulmod(T4, addmod(X, sub(p, T3), p), p) //-M(S-X3)=M(X3-S)\n\n //Y:= addmod(T2, sub(p, mulmod(T1, Y ,p)),p )//Y3= M(S-X3)-W*Y1\n Y := addmod(mulmod(T1, Y, p), T2, p) //-Y3= W*Y1-M(S-X3), we replace Y by -Y to avoid a sub in ecAdd\n\n /* compute element to access in precomputed table */\n T4 := add(shl(13, and(shr(index, scalar_v), 1)), shl(9, and(shr(index, scalar_u), 1)))\n index := sub(index, 64)\n T4 := add(T4, add(shl(12, and(shr(index, scalar_v), 1)), shl(8, and(shr(index, scalar_u), 1))))\n index := sub(index, 64)\n T4 := add(T4, add(shl(11, and(shr(index, scalar_v), 1)), shl(7, and(shr(index, scalar_u), 1))))\n index := sub(index, 64)\n T4 := add(T4, add(shl(10, and(shr(index, scalar_v), 1)), shl(6, and(shr(index, scalar_u), 1))))\n //index:=add(index,192), restore index, interleaved with loop\n\n //tbd: check validity of formulae with (0,1) to remove conditional jump\n if iszero(T4) {\n Y := sub(p, Y)\n\n continue\n }\n {\n /* Access to precomputed table using extcodecopy hack */\n codecopy(T, add(T4, dataPointer), 64)\n\n // inlined EcZZ_AddN\n\n let y2 := addmod(mulmod(mload(add(T, 32)), zzz, p), Y, p)\n T2 := addmod(mulmod(mload(T), zz, p), sub(p, X), p)\n T4 := mulmod(T2, T2, p)\n T1 := mulmod(T4, T2, p)\n T2 := mulmod(zz, T4, p) // W=UV\n zzz := mulmod(zzz, T1, p) //zz3=V*ZZ1\n let zz1 := mulmod(X, T4, p)\n T4 := addmod(addmod(mulmod(y2, y2, p), sub(p, T1), p), mulmod(minus_2, zz1, p), p)\n Y := addmod(mulmod(addmod(zz1, sub(p, T4), p), y2, p), mulmod(Y, T1, p), p)\n zz := T2\n X := T4\n }\n } //end loop\n mstore(add(T, 0x60), zz)\n\n //(X,Y)=ecZZ_SetAff(X,Y,zz, zzz);\n //T[0] = inverseModp_Hard(T[0], p); //1/zzz, inline modular inversion using precompile:\n // Define length of base, exponent and modulus. 0x20 == 32 bytes\n mstore(T, 0x20)\n mstore(add(T, 0x20), 0x20)\n mstore(add(T, 0x40), 0x20)\n // Define variables base, exponent and modulus\n //mstore(add(pointer, 0x60), u)\n mstore(add(T, 0x80), minus_2)\n mstore(add(T, 0xa0), p)\n\n // Call the precompiled contract 0x05 = ModExp\n if iszero(staticcall(not(0), 0x05, T, 0xc0, T, 0x20)) { revert(0, 0) }\n\n zz := mload(T)\n X := mulmod(X, zz, p) //X/zz\n }\n } //end unchecked\n }\n\n\n /**\n * @dev ECDSA verification using a precomputed table of multiples of P and Q stored in contract at address Shamir8\n * generation of contract bytecode for precomputations is done using sagemath code\n * (see sage directory, WebAuthn_precompute.sage)\n */\n\n /**\n * @dev ECDSA verification using a precomputed table of multiples of P and Q appended at end of contract at address endcontract\n * generation of contract bytecode for precomputations is done using sagemath code\n * (see sage directory, WebAuthn_precompute.sage)\n */\n\n function ecdsa_precomputed_hackmem(bytes32 message, uint256[2] calldata rs, uint256 endcontract)\n internal view\n returns (bool)\n {\n uint256 r = rs[0];\n uint256 s = rs[1];\n if (r == 0 || r >= n || s == 0 || s >= n) {\n return false;\n }\n /* Q is pushed via bytecode assumed to be correct\n if (!isOnCurve(Q[0], Q[1])) {\n return false;\n }*/\n\n uint256 sInv = FCL_nModInv(s);\n uint256 X;\n\n //Shamir 8 dimensions\n X = ecZZ_mulmuladd_S8_hackmem(mulmod(uint256(message), sInv, n), mulmod(r, sInv, n), endcontract);\n\n assembly {\n X := addmod(X, sub(n, r), n)\n }\n return X == 0;\n } //end ecdsa_precomputed_verify()\n\n\n\n} //EOF\n" + }, + "openzeppelin-contracts/contracts/utils/Base64.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Base64.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Provides a set of functions to operate with Base64 strings.\n */\nlibrary Base64 {\n /**\n * @dev Base64 Encoding/Decoding Table\n * See sections 4 and 5 of https://datatracker.ietf.org/doc/html/rfc4648\n */\n string internal constant _TABLE = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n string internal constant _TABLE_URL = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_\";\n\n /**\n * @dev Converts a `bytes` to its Bytes64 `string` representation.\n */\n function encode(bytes memory data) internal pure returns (string memory) {\n return _encode(data, _TABLE, true);\n }\n\n /**\n * @dev Converts a `bytes` to its Bytes64Url `string` representation.\n * Output is not padded with `=` as specified in https://www.rfc-editor.org/rfc/rfc4648[rfc4648].\n */\n function encodeURL(bytes memory data) internal pure returns (string memory) {\n return _encode(data, _TABLE_URL, false);\n }\n\n /**\n * @dev Internal table-agnostic conversion\n */\n function _encode(bytes memory data, string memory table, bool withPadding) private pure returns (string memory) {\n /**\n * Inspired by Brecht Devos (Brechtpd) implementation - MIT licence\n * https://github.com/Brechtpd/base64/blob/e78d9fd951e7b0977ddca77d92dc85183770daf4/base64.sol\n */\n if (data.length == 0) return \"\";\n\n // If padding is enabled, the final length should be `bytes` data length divided by 3 rounded up and then\n // multiplied by 4 so that it leaves room for padding the last chunk\n // - `data.length + 2` -> Prepare for division rounding up\n // - `/ 3` -> Number of 3-bytes chunks (rounded up)\n // - `4 *` -> 4 characters for each chunk\n // This is equivalent to: 4 * Math.ceil(data.length / 3)\n //\n // If padding is disabled, the final length should be `bytes` data length multiplied by 4/3 rounded up as\n // opposed to when padding is required to fill the last chunk.\n // - `4 * data.length` -> 4 characters for each chunk\n // - ` + 2` -> Prepare for division rounding up\n // - `/ 3` -> Number of 3-bytes chunks (rounded up)\n // This is equivalent to: Math.ceil((4 * data.length) / 3)\n uint256 resultLength = withPadding ? 4 * ((data.length + 2) / 3) : (4 * data.length + 2) / 3;\n\n string memory result = new string(resultLength);\n\n assembly (\"memory-safe\") {\n // Prepare the lookup table (skip the first \"length\" byte)\n let tablePtr := add(table, 1)\n\n // Prepare result pointer, jump over length\n let resultPtr := add(result, 0x20)\n let dataPtr := data\n let endPtr := add(data, mload(data))\n\n // In some cases, the last iteration will read bytes after the end of the data. We cache the value, and\n // set it to zero to make sure no dirty bytes are read in that section.\n let afterPtr := add(endPtr, 0x20)\n let afterCache := mload(afterPtr)\n mstore(afterPtr, 0x00)\n\n // Run over the input, 3 bytes at a time\n for {\n\n } lt(dataPtr, endPtr) {\n\n } {\n // Advance 3 bytes\n dataPtr := add(dataPtr, 3)\n let input := mload(dataPtr)\n\n // To write each character, shift the 3 byte (24 bits) chunk\n // 4 times in blocks of 6 bits for each character (18, 12, 6, 0)\n // and apply logical AND with 0x3F to bitmask the least significant 6 bits.\n // Use this as an index into the lookup table, mload an entire word\n // so the desired character is in the least significant byte, and\n // mstore8 this least significant byte into the result and continue.\n\n mstore8(resultPtr, mload(add(tablePtr, and(shr(18, input), 0x3F))))\n resultPtr := add(resultPtr, 1) // Advance\n\n mstore8(resultPtr, mload(add(tablePtr, and(shr(12, input), 0x3F))))\n resultPtr := add(resultPtr, 1) // Advance\n\n mstore8(resultPtr, mload(add(tablePtr, and(shr(6, input), 0x3F))))\n resultPtr := add(resultPtr, 1) // Advance\n\n mstore8(resultPtr, mload(add(tablePtr, and(input, 0x3F))))\n resultPtr := add(resultPtr, 1) // Advance\n }\n\n // Reset the value that was cached\n mstore(afterPtr, afterCache)\n\n if withPadding {\n // When data `bytes` is not exactly 3 bytes long\n // it is padded with `=` characters at the end\n switch mod(mload(data), 3)\n case 1 {\n mstore8(sub(resultPtr, 1), 0x3d)\n mstore8(sub(resultPtr, 2), 0x3d)\n }\n case 2 {\n mstore8(sub(resultPtr, 1), 0x3d)\n }\n }\n }\n\n return result;\n }\n}\n" + }, + "solady/accounts/Receiver.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.4;\n\n/// @notice Receiver mixin for ETH and safe-transferred ERC721 and ERC1155 tokens.\n/// @author Solady (https://github.com/Vectorized/solady/blob/main/src/accounts/Receiver.sol)\n///\n/// @dev Note:\n/// - Handles all ERC721 and ERC1155 token safety callbacks.\n/// - Collapses function table gas overhead and code size.\n/// - Utilizes fallback so unknown calldata will pass on.\nabstract contract Receiver {\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* CUSTOM ERRORS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev The function selector is not recognized.\n error FnSelectorNotRecognized();\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* RECEIVE / FALLBACK */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev For receiving ETH.\n receive() external payable virtual {}\n\n /// @dev Fallback function with the `receiverFallback` modifier.\n fallback() external payable virtual receiverFallback {\n /// @solidity memory-safe-assembly\n assembly {\n mstore(0x00, 0x3c10b94e) // `FnSelectorNotRecognized()`.\n revert(0x1c, 0x04)\n }\n }\n\n /// @dev Modifier for the fallback function to handle token callbacks.\n modifier receiverFallback() virtual {\n _beforeReceiverFallbackBody();\n if (_useReceiverFallbackBody()) {\n /// @solidity memory-safe-assembly\n assembly {\n let s := shr(224, calldataload(0))\n // 0x150b7a02: `onERC721Received(address,address,uint256,bytes)`.\n // 0xf23a6e61: `onERC1155Received(address,address,uint256,uint256,bytes)`.\n // 0xbc197c81: `onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)`.\n if or(eq(s, 0x150b7a02), or(eq(s, 0xf23a6e61), eq(s, 0xbc197c81))) {\n // Assumes `mload(0x40) <= 0xffffffff` to save gas on cleaning lower bytes.\n mstore(0x20, s) // Store `msg.sig`.\n return(0x3c, 0x20) // Return `msg.sig`.\n }\n }\n }\n _afterReceiverFallbackBody();\n _;\n }\n\n /// @dev Whether we want to use the body of the `receiverFallback` modifier.\n function _useReceiverFallbackBody() internal view virtual returns (bool) {\n return true;\n }\n\n /// @dev Called before the body of the `receiverFallback` modifier.\n function _beforeReceiverFallbackBody() internal virtual {}\n\n /// @dev Called after the body of the `receiverFallback` modifier.\n function _afterReceiverFallbackBody() internal virtual {}\n}\n" + }, + "solady/utils/CallContextChecker.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.4;\n\n/// @notice Call context checker mixin.\n/// @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/CallContextChecker.sol)\ncontract CallContextChecker {\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* CUSTOM ERRORS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev The call is from an unauthorized call context.\n error UnauthorizedCallContext();\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* IMMUTABLES */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev For checking if the context is a delegate call.\n ///\n /// Note: To enable use cases with an immutable default implementation in the bytecode,\n /// (see: ERC6551Proxy), we don't require that the proxy address must match the\n /// value stored in the implementation slot, which may not be initialized.\n uint256 private immutable __self = uint256(uint160(address(this)));\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* CALL CONTEXT CHECKS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n // A proxy call can be either via a `delegatecall` to an implementation,\n // or a 7702 call on an authority that points to a delegation.\n\n /// @dev Returns whether the current call context is on a EIP7702 authority\n /// (i.e. externally owned account).\n function _onEIP7702Authority() internal view virtual returns (bool result) {\n /// @solidity memory-safe-assembly\n assembly {\n extcodecopy(address(), 0x00, 0x00, 0x20)\n // Note: Checking that it starts with hex\"ef01\" is the most general and futureproof.\n // 7702 bytecode is `abi.encodePacked(hex\"ef01\", uint8(version), address(delegation))`.\n result := eq(0xef01, shr(240, mload(0x00)))\n }\n }\n\n /// @dev Returns the implementation of this contract.\n function _selfImplementation() internal view virtual returns (address) {\n return address(uint160(__self));\n }\n\n /// @dev Returns whether the current call context is on the implementation itself.\n function _onImplementation() internal view virtual returns (bool) {\n return __self == uint160(address(this));\n }\n\n /// @dev Requires that the current call context is performed via a EIP7702 authority.\n function _checkOnlyEIP7702Authority() internal view virtual {\n if (!_onEIP7702Authority()) _revertUnauthorizedCallContext();\n }\n\n /// @dev Requires that the current call context is performed via a proxy.\n function _checkOnlyProxy() internal view virtual {\n if (_onImplementation()) _revertUnauthorizedCallContext();\n }\n\n /// @dev Requires that the current call context is NOT performed via a proxy.\n /// This is the opposite of `checkOnlyProxy`.\n function _checkNotDelegated() internal view virtual {\n if (!_onImplementation()) _revertUnauthorizedCallContext();\n }\n\n /// @dev Requires that the current call context is performed via a EIP7702 authority.\n modifier onlyEIP7702Authority() virtual {\n _checkOnlyEIP7702Authority();\n _;\n }\n\n /// @dev Requires that the current call context is performed via a proxy.\n modifier onlyProxy() virtual {\n _checkOnlyProxy();\n _;\n }\n\n /// @dev Requires that the current call context is NOT performed via a proxy.\n /// This is the opposite of `onlyProxy`.\n modifier notDelegated() virtual {\n _checkNotDelegated();\n _;\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* PRIVATE HELPERS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n function _revertUnauthorizedCallContext() private pure {\n /// @solidity memory-safe-assembly\n assembly {\n mstore(0x00, 0x9f03a026) // `UnauthorizedCallContext()`.\n revert(0x1c, 0x04)\n }\n }\n}\n" + }, + "solady/utils/LibBytes.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.4;\n\n/// @notice Library for byte related operations.\n/// @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/LibBytes.sol)\nlibrary LibBytes {\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* STRUCTS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Goated bytes storage struct that totally MOGs, no cap, fr.\n /// Uses less gas and bytecode than Solidity's native bytes storage. It's meta af.\n /// Packs length with the first 31 bytes if <255 bytes, so it’s mad tight.\n struct BytesStorage {\n bytes32 _spacer;\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* CONSTANTS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev The constant returned when the `search` is not found in the bytes.\n uint256 internal constant NOT_FOUND = type(uint256).max;\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* BYTE STORAGE OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Sets the value of the bytes storage `$` to `s`.\n function set(BytesStorage storage $, bytes memory s) internal {\n /// @solidity memory-safe-assembly\n assembly {\n let n := mload(s)\n let packed := or(0xff, shl(8, n))\n for { let i := 0 } 1 {} {\n if iszero(gt(n, 0xfe)) {\n i := 0x1f\n packed := or(n, shl(8, mload(add(s, i))))\n if iszero(gt(n, i)) { break }\n }\n let o := add(s, 0x20)\n mstore(0x00, $.slot)\n for { let p := keccak256(0x00, 0x20) } 1 {} {\n sstore(add(p, shr(5, i)), mload(add(o, i)))\n i := add(i, 0x20)\n if iszero(lt(i, n)) { break }\n }\n break\n }\n sstore($.slot, packed)\n }\n }\n\n /// @dev Sets the value of the bytes storage `$` to `s`.\n function setCalldata(BytesStorage storage $, bytes calldata s) internal {\n /// @solidity memory-safe-assembly\n assembly {\n let packed := or(0xff, shl(8, s.length))\n for { let i := 0 } 1 {} {\n if iszero(gt(s.length, 0xfe)) {\n i := 0x1f\n packed := or(s.length, shl(8, shr(8, calldataload(s.offset))))\n if iszero(gt(s.length, i)) { break }\n }\n mstore(0x00, $.slot)\n for { let p := keccak256(0x00, 0x20) } 1 {} {\n sstore(add(p, shr(5, i)), calldataload(add(s.offset, i)))\n i := add(i, 0x20)\n if iszero(lt(i, s.length)) { break }\n }\n break\n }\n sstore($.slot, packed)\n }\n }\n\n /// @dev Sets the value of the bytes storage `$` to the empty bytes.\n function clear(BytesStorage storage $) internal {\n delete $._spacer;\n }\n\n /// @dev Returns whether the value stored is `$` is the empty bytes \"\".\n function isEmpty(BytesStorage storage $) internal view returns (bool) {\n return uint256($._spacer) & 0xff == uint256(0);\n }\n\n /// @dev Returns the length of the value stored in `$`.\n function length(BytesStorage storage $) internal view returns (uint256 result) {\n result = uint256($._spacer);\n /// @solidity memory-safe-assembly\n assembly {\n let n := and(0xff, result)\n result := or(mul(shr(8, result), eq(0xff, n)), mul(n, iszero(eq(0xff, n))))\n }\n }\n\n /// @dev Returns the value stored in `$`.\n function get(BytesStorage storage $) internal view returns (bytes memory result) {\n /// @solidity memory-safe-assembly\n assembly {\n result := mload(0x40)\n let o := add(result, 0x20)\n let packed := sload($.slot)\n let n := shr(8, packed)\n for { let i := 0 } 1 {} {\n if iszero(eq(or(packed, 0xff), packed)) {\n mstore(o, packed)\n n := and(0xff, packed)\n i := 0x1f\n if iszero(gt(n, i)) { break }\n }\n mstore(0x00, $.slot)\n for { let p := keccak256(0x00, 0x20) } 1 {} {\n mstore(add(o, i), sload(add(p, shr(5, i))))\n i := add(i, 0x20)\n if iszero(lt(i, n)) { break }\n }\n break\n }\n mstore(result, n) // Store the length of the memory.\n mstore(add(o, n), 0) // Zeroize the slot after the bytes.\n mstore(0x40, add(add(o, n), 0x20)) // Allocate memory.\n }\n }\n\n /// @dev Returns the uint8 at index `i`. If out-of-bounds, returns 0.\n function uint8At(BytesStorage storage $, uint256 i) internal view returns (uint8 result) {\n /// @solidity memory-safe-assembly\n assembly {\n for { let packed := sload($.slot) } 1 {} {\n if iszero(eq(or(packed, 0xff), packed)) {\n if iszero(gt(i, 0x1e)) {\n result := byte(i, packed)\n break\n }\n if iszero(gt(i, and(0xff, packed))) {\n mstore(0x00, $.slot)\n let j := sub(i, 0x1f)\n result := byte(and(j, 0x1f), sload(add(keccak256(0x00, 0x20), shr(5, j))))\n }\n break\n }\n if iszero(gt(i, shr(8, packed))) {\n mstore(0x00, $.slot)\n result := byte(and(i, 0x1f), sload(add(keccak256(0x00, 0x20), shr(5, i))))\n }\n break\n }\n }\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* BYTES OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Returns `subject` all occurrences of `needle` replaced with `replacement`.\n function replace(bytes memory subject, bytes memory needle, bytes memory replacement)\n internal\n pure\n returns (bytes memory result)\n {\n /// @solidity memory-safe-assembly\n assembly {\n result := mload(0x40)\n let needleLen := mload(needle)\n let replacementLen := mload(replacement)\n let d := sub(result, subject) // Memory difference.\n let i := add(subject, 0x20) // Subject bytes pointer.\n mstore(0x00, add(i, mload(subject))) // End of subject.\n if iszero(gt(needleLen, mload(subject))) {\n let subjectSearchEnd := add(sub(mload(0x00), needleLen), 1)\n let h := 0 // The hash of `needle`.\n if iszero(lt(needleLen, 0x20)) { h := keccak256(add(needle, 0x20), needleLen) }\n let s := mload(add(needle, 0x20))\n for { let m := shl(3, sub(0x20, and(needleLen, 0x1f))) } 1 {} {\n let t := mload(i)\n // Whether the first `needleLen % 32` bytes of `subject` and `needle` matches.\n if iszero(shr(m, xor(t, s))) {\n if h {\n if iszero(eq(keccak256(i, needleLen), h)) {\n mstore(add(i, d), t)\n i := add(i, 1)\n if iszero(lt(i, subjectSearchEnd)) { break }\n continue\n }\n }\n // Copy the `replacement` one word at a time.\n for { let j := 0 } 1 {} {\n mstore(add(add(i, d), j), mload(add(add(replacement, 0x20), j)))\n j := add(j, 0x20)\n if iszero(lt(j, replacementLen)) { break }\n }\n d := sub(add(d, replacementLen), needleLen)\n if needleLen {\n i := add(i, needleLen)\n if iszero(lt(i, subjectSearchEnd)) { break }\n continue\n }\n }\n mstore(add(i, d), t)\n i := add(i, 1)\n if iszero(lt(i, subjectSearchEnd)) { break }\n }\n }\n let end := mload(0x00)\n let n := add(sub(d, add(result, 0x20)), end)\n // Copy the rest of the bytes one word at a time.\n for {} lt(i, end) { i := add(i, 0x20) } { mstore(add(i, d), mload(i)) }\n let o := add(i, d)\n mstore(o, 0) // Zeroize the slot after the bytes.\n mstore(0x40, add(o, 0x20)) // Allocate memory.\n mstore(result, n) // Store the length.\n }\n }\n\n /// @dev Returns the byte index of the first location of `needle` in `subject`,\n /// needleing from left to right, starting from `from`.\n /// Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `needle` is not found.\n function indexOf(bytes memory subject, bytes memory needle, uint256 from)\n internal\n pure\n returns (uint256 result)\n {\n /// @solidity memory-safe-assembly\n assembly {\n result := not(0) // Initialize to `NOT_FOUND`.\n for { let subjectLen := mload(subject) } 1 {} {\n if iszero(mload(needle)) {\n result := from\n if iszero(gt(from, subjectLen)) { break }\n result := subjectLen\n break\n }\n let needleLen := mload(needle)\n let subjectStart := add(subject, 0x20)\n\n subject := add(subjectStart, from)\n let end := add(sub(add(subjectStart, subjectLen), needleLen), 1)\n let m := shl(3, sub(0x20, and(needleLen, 0x1f)))\n let s := mload(add(needle, 0x20))\n\n if iszero(and(lt(subject, end), lt(from, subjectLen))) { break }\n\n if iszero(lt(needleLen, 0x20)) {\n for { let h := keccak256(add(needle, 0x20), needleLen) } 1 {} {\n if iszero(shr(m, xor(mload(subject), s))) {\n if eq(keccak256(subject, needleLen), h) {\n result := sub(subject, subjectStart)\n break\n }\n }\n subject := add(subject, 1)\n if iszero(lt(subject, end)) { break }\n }\n break\n }\n for {} 1 {} {\n if iszero(shr(m, xor(mload(subject), s))) {\n result := sub(subject, subjectStart)\n break\n }\n subject := add(subject, 1)\n if iszero(lt(subject, end)) { break }\n }\n break\n }\n }\n }\n\n /// @dev Returns the byte index of the first location of `needle` in `subject`,\n /// needleing from left to right.\n /// Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `needle` is not found.\n function indexOf(bytes memory subject, bytes memory needle) internal pure returns (uint256) {\n return indexOf(subject, needle, 0);\n }\n\n /// @dev Returns the byte index of the first location of `needle` in `subject`,\n /// needleing from right to left, starting from `from`.\n /// Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `needle` is not found.\n function lastIndexOf(bytes memory subject, bytes memory needle, uint256 from)\n internal\n pure\n returns (uint256 result)\n {\n /// @solidity memory-safe-assembly\n assembly {\n for {} 1 {} {\n result := not(0) // Initialize to `NOT_FOUND`.\n let needleLen := mload(needle)\n if gt(needleLen, mload(subject)) { break }\n let w := result\n\n let fromMax := sub(mload(subject), needleLen)\n if iszero(gt(fromMax, from)) { from := fromMax }\n\n let end := add(add(subject, 0x20), w)\n subject := add(add(subject, 0x20), from)\n if iszero(gt(subject, end)) { break }\n // As this function is not too often used,\n // we shall simply use keccak256 for smaller bytecode size.\n for { let h := keccak256(add(needle, 0x20), needleLen) } 1 {} {\n if eq(keccak256(subject, needleLen), h) {\n result := sub(subject, add(end, 1))\n break\n }\n subject := add(subject, w) // `sub(subject, 1)`.\n if iszero(gt(subject, end)) { break }\n }\n break\n }\n }\n }\n\n /// @dev Returns the byte index of the first location of `needle` in `subject`,\n /// needleing from right to left.\n /// Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `needle` is not found.\n function lastIndexOf(bytes memory subject, bytes memory needle)\n internal\n pure\n returns (uint256)\n {\n return lastIndexOf(subject, needle, type(uint256).max);\n }\n\n /// @dev Returns true if `needle` is found in `subject`, false otherwise.\n function contains(bytes memory subject, bytes memory needle) internal pure returns (bool) {\n return indexOf(subject, needle) != NOT_FOUND;\n }\n\n /// @dev Returns whether `subject` starts with `needle`.\n function startsWith(bytes memory subject, bytes memory needle)\n internal\n pure\n returns (bool result)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let n := mload(needle)\n // Just using keccak256 directly is actually cheaper.\n let t := eq(keccak256(add(subject, 0x20), n), keccak256(add(needle, 0x20), n))\n result := lt(gt(n, mload(subject)), t)\n }\n }\n\n /// @dev Returns whether `subject` ends with `needle`.\n function endsWith(bytes memory subject, bytes memory needle)\n internal\n pure\n returns (bool result)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let n := mload(needle)\n let notInRange := gt(n, mload(subject))\n // `subject + 0x20 + max(subject.length - needle.length, 0)`.\n let t := add(add(subject, 0x20), mul(iszero(notInRange), sub(mload(subject), n)))\n // Just using keccak256 directly is actually cheaper.\n result := gt(eq(keccak256(t, n), keccak256(add(needle, 0x20), n)), notInRange)\n }\n }\n\n /// @dev Returns `subject` repeated `times`.\n function repeat(bytes memory subject, uint256 times)\n internal\n pure\n returns (bytes memory result)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let l := mload(subject) // Subject length.\n if iszero(or(iszero(times), iszero(l))) {\n result := mload(0x40)\n subject := add(subject, 0x20)\n let o := add(result, 0x20)\n for {} 1 {} {\n // Copy the `subject` one word at a time.\n for { let j := 0 } 1 {} {\n mstore(add(o, j), mload(add(subject, j)))\n j := add(j, 0x20)\n if iszero(lt(j, l)) { break }\n }\n o := add(o, l)\n times := sub(times, 1)\n if iszero(times) { break }\n }\n mstore(o, 0) // Zeroize the slot after the bytes.\n mstore(0x40, add(o, 0x20)) // Allocate memory.\n mstore(result, sub(o, add(result, 0x20))) // Store the length.\n }\n }\n }\n\n /// @dev Returns a copy of `subject` sliced from `start` to `end` (exclusive).\n /// `start` and `end` are byte offsets.\n function slice(bytes memory subject, uint256 start, uint256 end)\n internal\n pure\n returns (bytes memory result)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let l := mload(subject) // Subject length.\n if iszero(gt(l, end)) { end := l }\n if iszero(gt(l, start)) { start := l }\n if lt(start, end) {\n result := mload(0x40)\n let n := sub(end, start)\n let i := add(subject, start)\n let w := not(0x1f)\n // Copy the `subject` one word at a time, backwards.\n for { let j := and(add(n, 0x1f), w) } 1 {} {\n mstore(add(result, j), mload(add(i, j)))\n j := add(j, w) // `sub(j, 0x20)`.\n if iszero(j) { break }\n }\n let o := add(add(result, 0x20), n)\n mstore(o, 0) // Zeroize the slot after the bytes.\n mstore(0x40, add(o, 0x20)) // Allocate memory.\n mstore(result, n) // Store the length.\n }\n }\n }\n\n /// @dev Returns a copy of `subject` sliced from `start` to the end of the bytes.\n /// `start` is a byte offset.\n function slice(bytes memory subject, uint256 start)\n internal\n pure\n returns (bytes memory result)\n {\n result = slice(subject, start, type(uint256).max);\n }\n\n /// @dev Returns a copy of `subject` sliced from `start` to `end` (exclusive).\n /// `start` and `end` are byte offsets. Faster than Solidity's native slicing.\n function sliceCalldata(bytes calldata subject, uint256 start, uint256 end)\n internal\n pure\n returns (bytes calldata result)\n {\n /// @solidity memory-safe-assembly\n assembly {\n end := xor(end, mul(xor(end, subject.length), lt(subject.length, end)))\n start := xor(start, mul(xor(start, subject.length), lt(subject.length, start)))\n result.offset := add(subject.offset, start)\n result.length := mul(lt(start, end), sub(end, start))\n }\n }\n\n /// @dev Returns a copy of `subject` sliced from `start` to the end of the bytes.\n /// `start` is a byte offset. Faster than Solidity's native slicing.\n function sliceCalldata(bytes calldata subject, uint256 start)\n internal\n pure\n returns (bytes calldata result)\n {\n /// @solidity memory-safe-assembly\n assembly {\n start := xor(start, mul(xor(start, subject.length), lt(subject.length, start)))\n result.offset := add(subject.offset, start)\n result.length := mul(lt(start, subject.length), sub(subject.length, start))\n }\n }\n\n /// @dev Reduces the size of `subject` to `n`.\n /// If `n` is greater than the size of `subject`, this will be a no-op.\n function truncate(bytes memory subject, uint256 n)\n internal\n pure\n returns (bytes memory result)\n {\n /// @solidity memory-safe-assembly\n assembly {\n result := subject\n mstore(mul(lt(n, mload(result)), result), n)\n }\n }\n\n /// @dev Returns a copy of `subject`, with the length reduced to `n`.\n /// If `n` is greater than the size of `subject`, this will be a no-op.\n function truncatedCalldata(bytes calldata subject, uint256 n)\n internal\n pure\n returns (bytes calldata result)\n {\n /// @solidity memory-safe-assembly\n assembly {\n result.offset := subject.offset\n result.length := xor(n, mul(xor(n, subject.length), lt(subject.length, n)))\n }\n }\n\n /// @dev Returns all the indices of `needle` in `subject`.\n /// The indices are byte offsets.\n function indicesOf(bytes memory subject, bytes memory needle)\n internal\n pure\n returns (uint256[] memory result)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let searchLen := mload(needle)\n if iszero(gt(searchLen, mload(subject))) {\n result := mload(0x40)\n let i := add(subject, 0x20)\n let o := add(result, 0x20)\n let subjectSearchEnd := add(sub(add(i, mload(subject)), searchLen), 1)\n let h := 0 // The hash of `needle`.\n if iszero(lt(searchLen, 0x20)) { h := keccak256(add(needle, 0x20), searchLen) }\n let s := mload(add(needle, 0x20))\n for { let m := shl(3, sub(0x20, and(searchLen, 0x1f))) } 1 {} {\n let t := mload(i)\n // Whether the first `searchLen % 32` bytes of `subject` and `needle` matches.\n if iszero(shr(m, xor(t, s))) {\n if h {\n if iszero(eq(keccak256(i, searchLen), h)) {\n i := add(i, 1)\n if iszero(lt(i, subjectSearchEnd)) { break }\n continue\n }\n }\n mstore(o, sub(i, add(subject, 0x20))) // Append to `result`.\n o := add(o, 0x20)\n i := add(i, searchLen) // Advance `i` by `searchLen`.\n if searchLen {\n if iszero(lt(i, subjectSearchEnd)) { break }\n continue\n }\n }\n i := add(i, 1)\n if iszero(lt(i, subjectSearchEnd)) { break }\n }\n mstore(result, shr(5, sub(o, add(result, 0x20)))) // Store the length of `result`.\n // Allocate memory for result.\n // We allocate one more word, so this array can be recycled for {split}.\n mstore(0x40, add(o, 0x20))\n }\n }\n }\n\n /// @dev Returns an arrays of bytess based on the `delimiter` inside of the `subject` bytes.\n function split(bytes memory subject, bytes memory delimiter)\n internal\n pure\n returns (bytes[] memory result)\n {\n uint256[] memory indices = indicesOf(subject, delimiter);\n /// @solidity memory-safe-assembly\n assembly {\n let w := not(0x1f)\n let indexPtr := add(indices, 0x20)\n let indicesEnd := add(indexPtr, shl(5, add(mload(indices), 1)))\n mstore(add(indicesEnd, w), mload(subject))\n mstore(indices, add(mload(indices), 1))\n for { let prevIndex := 0 } 1 {} {\n let index := mload(indexPtr)\n mstore(indexPtr, 0x60)\n if iszero(eq(index, prevIndex)) {\n let element := mload(0x40)\n let l := sub(index, prevIndex)\n mstore(element, l) // Store the length of the element.\n // Copy the `subject` one word at a time, backwards.\n for { let o := and(add(l, 0x1f), w) } 1 {} {\n mstore(add(element, o), mload(add(add(subject, prevIndex), o)))\n o := add(o, w) // `sub(o, 0x20)`.\n if iszero(o) { break }\n }\n mstore(add(add(element, 0x20), l), 0) // Zeroize the slot after the bytes.\n // Allocate memory for the length and the bytes, rounded up to a multiple of 32.\n mstore(0x40, add(element, and(add(l, 0x3f), w)))\n mstore(indexPtr, element) // Store the `element` into the array.\n }\n prevIndex := add(index, mload(delimiter))\n indexPtr := add(indexPtr, 0x20)\n if iszero(lt(indexPtr, indicesEnd)) { break }\n }\n result := indices\n if iszero(mload(delimiter)) {\n result := add(indices, 0x20)\n mstore(result, sub(mload(indices), 2))\n }\n }\n }\n\n /// @dev Returns a concatenated bytes of `a` and `b`.\n /// Cheaper than `bytes.concat()` and does not de-align the free memory pointer.\n function concat(bytes memory a, bytes memory b) internal pure returns (bytes memory result) {\n /// @solidity memory-safe-assembly\n assembly {\n result := mload(0x40)\n let w := not(0x1f)\n let aLen := mload(a)\n // Copy `a` one word at a time, backwards.\n for { let o := and(add(aLen, 0x20), w) } 1 {} {\n mstore(add(result, o), mload(add(a, o)))\n o := add(o, w) // `sub(o, 0x20)`.\n if iszero(o) { break }\n }\n let bLen := mload(b)\n let output := add(result, aLen)\n // Copy `b` one word at a time, backwards.\n for { let o := and(add(bLen, 0x20), w) } 1 {} {\n mstore(add(output, o), mload(add(b, o)))\n o := add(o, w) // `sub(o, 0x20)`.\n if iszero(o) { break }\n }\n let totalLen := add(aLen, bLen)\n let last := add(add(result, 0x20), totalLen)\n mstore(last, 0) // Zeroize the slot after the bytes.\n mstore(result, totalLen) // Store the length.\n mstore(0x40, add(last, 0x20)) // Allocate memory.\n }\n }\n\n /// @dev Returns whether `a` equals `b`.\n function eq(bytes memory a, bytes memory b) internal pure returns (bool result) {\n /// @solidity memory-safe-assembly\n assembly {\n result := eq(keccak256(add(a, 0x20), mload(a)), keccak256(add(b, 0x20), mload(b)))\n }\n }\n\n /// @dev Returns whether `a` equals `b`, where `b` is a null-terminated small bytes.\n function eqs(bytes memory a, bytes32 b) internal pure returns (bool result) {\n /// @solidity memory-safe-assembly\n assembly {\n // These should be evaluated on compile time, as far as possible.\n let m := not(shl(7, div(not(iszero(b)), 255))) // `0x7f7f ...`.\n let x := not(or(m, or(b, add(m, and(b, m)))))\n let r := shl(7, iszero(iszero(shr(128, x))))\n r := or(r, shl(6, iszero(iszero(shr(64, shr(r, x))))))\n r := or(r, shl(5, lt(0xffffffff, shr(r, x))))\n r := or(r, shl(4, lt(0xffff, shr(r, x))))\n r := or(r, shl(3, lt(0xff, shr(r, x))))\n // forgefmt: disable-next-item\n result := gt(eq(mload(a), add(iszero(x), xor(31, shr(3, r)))),\n xor(shr(add(8, r), b), shr(add(8, r), mload(add(a, 0x20)))))\n }\n }\n\n /// @dev Returns 0 if `a == b`, -1 if `a < b`, +1 if `a > b`.\n /// If `a` == b[:a.length]`, and `a.length < b.length`, returns -1.\n function cmp(bytes memory a, bytes memory b) internal pure returns (int256 result) {\n /// @solidity memory-safe-assembly\n assembly {\n let aLen := mload(a)\n let bLen := mload(b)\n let n := and(xor(aLen, mul(xor(aLen, bLen), lt(bLen, aLen))), not(0x1f))\n if n {\n for { let i := 0x20 } 1 {} {\n let x := mload(add(a, i))\n let y := mload(add(b, i))\n if iszero(or(xor(x, y), eq(i, n))) {\n i := add(i, 0x20)\n continue\n }\n result := sub(gt(x, y), lt(x, y))\n break\n }\n }\n // forgefmt: disable-next-item\n if iszero(result) {\n let l := 0x201f1e1d1c1b1a191817161514131211100f0e0d0c0b0a090807060504030201\n let x := and(mload(add(add(a, 0x20), n)), shl(shl(3, byte(sub(aLen, n), l)), not(0)))\n let y := and(mload(add(add(b, 0x20), n)), shl(shl(3, byte(sub(bLen, n), l)), not(0)))\n result := sub(gt(x, y), lt(x, y))\n if iszero(result) { result := sub(gt(aLen, bLen), lt(aLen, bLen)) }\n }\n }\n }\n\n /// @dev Directly returns `a` without copying.\n function directReturn(bytes memory a) internal pure {\n /// @solidity memory-safe-assembly\n assembly {\n // Assumes that the bytes does not start from the scratch space.\n let retStart := sub(a, 0x20)\n let retUnpaddedSize := add(mload(a), 0x40)\n // Right pad with zeroes. Just in case the bytes is produced\n // by a method that doesn't zero right pad.\n mstore(add(retStart, retUnpaddedSize), 0)\n mstore(retStart, 0x20) // Store the return offset.\n // End the transaction, returning the bytes.\n return(retStart, and(not(0x1f), add(0x1f, retUnpaddedSize)))\n }\n }\n\n /// @dev Directly returns `a` with minimal copying.\n function directReturn(bytes[] memory a) internal pure {\n /// @solidity memory-safe-assembly\n assembly {\n let n := mload(a) // `a.length`.\n let o := add(a, 0x20) // Start of elements in `a`.\n let u := a // Highest memory slot.\n let w := not(0x1f)\n for { let i := 0 } iszero(eq(i, n)) { i := add(i, 1) } {\n let c := add(o, shl(5, i)) // Location of pointer to `a[i]`.\n let s := mload(c) // `a[i]`.\n let l := mload(s) // `a[i].length`.\n let r := and(l, 0x1f) // `a[i].length % 32`.\n let z := add(0x20, and(l, w)) // Offset of last word in `a[i]` from `s`.\n // If `s` comes before `o`, or `s` is not zero right padded.\n if iszero(lt(lt(s, o), or(iszero(r), iszero(shl(shl(3, r), mload(add(s, z))))))) {\n let m := mload(0x40)\n mstore(m, l) // Copy `a[i].length`.\n for {} 1 {} {\n mstore(add(m, z), mload(add(s, z))) // Copy `a[i]`, backwards.\n z := add(z, w) // `sub(z, 0x20)`.\n if iszero(z) { break }\n }\n let e := add(add(m, 0x20), l)\n mstore(e, 0) // Zeroize the slot after the copied bytes.\n mstore(0x40, add(e, 0x20)) // Allocate memory.\n s := m\n }\n mstore(c, sub(s, o)) // Convert to calldata offset.\n let t := add(l, add(s, 0x20))\n if iszero(lt(t, u)) { u := t }\n }\n let retStart := add(a, w) // Assumes `a` doesn't start from scratch space.\n mstore(retStart, 0x20) // Store the return offset.\n return(retStart, add(0x40, sub(u, retStart))) // End the transaction.\n }\n }\n\n /// @dev Returns the word at `offset`, without any bounds checks.\n function load(bytes memory a, uint256 offset) internal pure returns (bytes32 result) {\n /// @solidity memory-safe-assembly\n assembly {\n result := mload(add(add(a, 0x20), offset))\n }\n }\n\n /// @dev Returns the word at `offset`, without any bounds checks.\n function loadCalldata(bytes calldata a, uint256 offset)\n internal\n pure\n returns (bytes32 result)\n {\n /// @solidity memory-safe-assembly\n assembly {\n result := calldataload(add(a.offset, offset))\n }\n }\n\n /// @dev Returns a slice representing a static struct in the calldata. Performs bounds checks.\n function staticStructInCalldata(bytes calldata a, uint256 offset)\n internal\n pure\n returns (bytes calldata result)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let l := sub(a.length, 0x20)\n result.offset := add(a.offset, offset)\n result.length := sub(a.length, offset)\n if or(shr(64, or(l, a.offset)), gt(offset, l)) { revert(l, 0x00) }\n }\n }\n\n /// @dev Returns a slice representing a dynamic struct in the calldata. Performs bounds checks.\n function dynamicStructInCalldata(bytes calldata a, uint256 offset)\n internal\n pure\n returns (bytes calldata result)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let l := sub(a.length, 0x20)\n let s := calldataload(add(a.offset, offset)) // Relative offset of `result` from `a.offset`.\n result.offset := add(a.offset, s)\n result.length := sub(a.length, s)\n if or(shr(64, or(s, or(l, a.offset))), gt(offset, l)) { revert(l, 0x00) }\n }\n }\n\n /// @dev Returns bytes in calldata. Performs bounds checks.\n function bytesInCalldata(bytes calldata a, uint256 offset)\n internal\n pure\n returns (bytes calldata result)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let l := sub(a.length, 0x20)\n let s := calldataload(add(a.offset, offset)) // Relative offset of `result` from `a.offset`.\n result.offset := add(add(a.offset, s), 0x20)\n result.length := calldataload(add(a.offset, s))\n // forgefmt: disable-next-item\n if or(shr(64, or(result.length, or(s, or(l, a.offset)))),\n or(gt(add(s, result.length), l), gt(offset, l))) { revert(l, 0x00) }\n }\n }\n\n /// @dev Returns empty calldata bytes. For silencing the compiler.\n function emptyCalldata() internal pure returns (bytes calldata result) {\n /// @solidity memory-safe-assembly\n assembly {\n result.length := 0\n }\n }\n}\n" + }, + "solady/utils/LibClone.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.4;\n\n/// @notice Minimal proxy library.\n/// @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/LibClone.sol)\n/// @author Minimal proxy by 0age (https://github.com/0age)\n/// @author Clones with immutable args by wighawag, zefram.eth, Saw-mon & Natalie\n/// (https://github.com/Saw-mon-and-Natalie/clones-with-immutable-args)\n/// @author Minimal ERC1967 proxy by jtriley-eth (https://github.com/jtriley-eth/minimum-viable-proxy)\n///\n/// @dev Minimal proxy:\n/// Although the sw0nt pattern saves 5 gas over the ERC1167 pattern during runtime,\n/// it is not supported out-of-the-box on Etherscan. Hence, we choose to use the 0age pattern,\n/// which saves 4 gas over the ERC1167 pattern during runtime, and has the smallest bytecode.\n/// - Automatically verified on Etherscan.\n///\n/// @dev Minimal proxy (PUSH0 variant):\n/// This is a new minimal proxy that uses the PUSH0 opcode introduced during Shanghai.\n/// It is optimized first for minimal runtime gas, then for minimal bytecode.\n/// The PUSH0 clone functions are intentionally postfixed with a jarring \"_PUSH0\" as\n/// many EVM chains may not support the PUSH0 opcode in the early months after Shanghai.\n/// Please use with caution.\n/// - Automatically verified on Etherscan.\n///\n/// @dev Clones with immutable args (CWIA):\n/// The implementation of CWIA here does NOT append the immutable args into the calldata\n/// passed into delegatecall. It is simply an ERC1167 minimal proxy with the immutable arguments\n/// appended to the back of the runtime bytecode.\n/// - Uses the identity precompile (0x4) to copy args during deployment.\n///\n/// @dev Minimal ERC1967 proxy:\n/// A minimal ERC1967 proxy, intended to be upgraded with UUPS.\n/// This is NOT the same as ERC1967Factory's transparent proxy, which includes admin logic.\n/// - Automatically verified on Etherscan.\n///\n/// @dev Minimal ERC1967 proxy with immutable args:\n/// - Uses the identity precompile (0x4) to copy args during deployment.\n/// - Automatically verified on Etherscan.\n///\n/// @dev ERC1967I proxy:\n/// A variant of the minimal ERC1967 proxy, with a special code path that activates\n/// if `calldatasize() == 1`. This code path skips the delegatecall and directly returns the\n/// `implementation` address. The returned implementation is guaranteed to be valid if the\n/// keccak256 of the proxy's code is equal to `ERC1967I_CODE_HASH`.\n///\n/// @dev ERC1967I proxy with immutable args:\n/// A variant of the minimal ERC1967 proxy, with a special code path that activates\n/// if `calldatasize() == 1`. This code path skips the delegatecall and directly returns the\n/// - Uses the identity precompile (0x4) to copy args during deployment.\n///\n/// @dev Minimal ERC1967 beacon proxy:\n/// A minimal beacon proxy, intended to be upgraded with an upgradable beacon.\n/// - Automatically verified on Etherscan.\n///\n/// @dev Minimal ERC1967 beacon proxy with immutable args:\n/// - Uses the identity precompile (0x4) to copy args during deployment.\n/// - Automatically verified on Etherscan.\n///\n/// @dev ERC1967I beacon proxy:\n/// A variant of the minimal ERC1967 beacon proxy, with a special code path that activates\n/// if `calldatasize() == 1`. This code path skips the delegatecall and directly returns the\n/// `implementation` address. The returned implementation is guaranteed to be valid if the\n/// keccak256 of the proxy's code is equal to `ERC1967I_CODE_HASH`.\n///\n/// @dev ERC1967I proxy with immutable args:\n/// A variant of the minimal ERC1967 beacon proxy, with a special code path that activates\n/// if `calldatasize() == 1`. This code path skips the delegatecall and directly returns the\n/// - Uses the identity precompile (0x4) to copy args during deployment.\nlibrary LibClone {\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* CONSTANTS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev The keccak256 of deployed code for the clone proxy,\n /// with the implementation set to `address(0)`.\n bytes32 internal constant CLONE_CODE_HASH =\n 0x48db2cfdb2853fce0b464f1f93a1996469459df3ab6c812106074c4106a1eb1f;\n\n /// @dev The keccak256 of deployed code for the PUSH0 proxy,\n /// with the implementation set to `address(0)`.\n bytes32 internal constant PUSH0_CLONE_CODE_HASH =\n 0x67bc6bde1b84d66e267c718ba44cf3928a615d29885537955cb43d44b3e789dc;\n\n /// @dev The keccak256 of deployed code for the ERC-1167 CWIA proxy,\n /// with the implementation set to `address(0)`.\n bytes32 internal constant CWIA_CODE_HASH =\n 0x3cf92464268225a4513da40a34d967354684c32cd0edd67b5f668dfe3550e940;\n\n /// @dev The keccak256 of the deployed code for the ERC1967 proxy.\n bytes32 internal constant ERC1967_CODE_HASH =\n 0xaaa52c8cc8a0e3fd27ce756cc6b4e70c51423e9b597b11f32d3e49f8b1fc890d;\n\n /// @dev The keccak256 of the deployed code for the ERC1967I proxy.\n bytes32 internal constant ERC1967I_CODE_HASH =\n 0xce700223c0d4cea4583409accfc45adac4a093b3519998a9cbbe1504dadba6f7;\n\n /// @dev The keccak256 of the deployed code for the ERC1967 beacon proxy.\n bytes32 internal constant ERC1967_BEACON_PROXY_CODE_HASH =\n 0x14044459af17bc4f0f5aa2f658cb692add77d1302c29fe2aebab005eea9d1162;\n\n /// @dev The keccak256 of the deployed code for the ERC1967 beacon proxy.\n bytes32 internal constant ERC1967I_BEACON_PROXY_CODE_HASH =\n 0xf8c46d2793d5aa984eb827aeaba4b63aedcab80119212fce827309788735519a;\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* CUSTOM ERRORS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Unable to deploy the clone.\n error DeploymentFailed();\n\n /// @dev The salt must start with either the zero address or `by`.\n error SaltDoesNotStartWith();\n\n /// @dev The ETH transfer has failed.\n error ETHTransferFailed();\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* MINIMAL PROXY OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Deploys a clone of `implementation`.\n function clone(address implementation) internal returns (address instance) {\n instance = clone(0, implementation);\n }\n\n /// @dev Deploys a clone of `implementation`.\n /// Deposits `value` ETH during deployment.\n function clone(uint256 value, address implementation) internal returns (address instance) {\n /// @solidity memory-safe-assembly\n assembly {\n /**\n * --------------------------------------------------------------------------+\n * CREATION (9 bytes) |\n * --------------------------------------------------------------------------|\n * Opcode | Mnemonic | Stack | Memory |\n * --------------------------------------------------------------------------|\n * 60 runSize | PUSH1 runSize | r | |\n * 3d | RETURNDATASIZE | 0 r | |\n * 81 | DUP2 | r 0 r | |\n * 60 offset | PUSH1 offset | o r 0 r | |\n * 3d | RETURNDATASIZE | 0 o r 0 r | |\n * 39 | CODECOPY | 0 r | [0..runSize): runtime code |\n * f3 | RETURN | | [0..runSize): runtime code |\n * --------------------------------------------------------------------------|\n * RUNTIME (44 bytes) |\n * --------------------------------------------------------------------------|\n * Opcode | Mnemonic | Stack | Memory |\n * --------------------------------------------------------------------------|\n * |\n * ::: keep some values in stack ::::::::::::::::::::::::::::::::::::::::::: |\n * 3d | RETURNDATASIZE | 0 | |\n * 3d | RETURNDATASIZE | 0 0 | |\n * 3d | RETURNDATASIZE | 0 0 0 | |\n * 3d | RETURNDATASIZE | 0 0 0 0 | |\n * |\n * ::: copy calldata to memory ::::::::::::::::::::::::::::::::::::::::::::: |\n * 36 | CALLDATASIZE | cds 0 0 0 0 | |\n * 3d | RETURNDATASIZE | 0 cds 0 0 0 0 | |\n * 3d | RETURNDATASIZE | 0 0 cds 0 0 0 0 | |\n * 37 | CALLDATACOPY | 0 0 0 0 | [0..cds): calldata |\n * |\n * ::: delegate call to the implementation contract :::::::::::::::::::::::: |\n * 36 | CALLDATASIZE | cds 0 0 0 0 | [0..cds): calldata |\n * 3d | RETURNDATASIZE | 0 cds 0 0 0 0 | [0..cds): calldata |\n * 73 addr | PUSH20 addr | addr 0 cds 0 0 0 0 | [0..cds): calldata |\n * 5a | GAS | gas addr 0 cds 0 0 0 0 | [0..cds): calldata |\n * f4 | DELEGATECALL | success 0 0 | [0..cds): calldata |\n * |\n * ::: copy return data to memory :::::::::::::::::::::::::::::::::::::::::: |\n * 3d | RETURNDATASIZE | rds success 0 0 | [0..cds): calldata |\n * 3d | RETURNDATASIZE | rds rds success 0 0 | [0..cds): calldata |\n * 93 | SWAP4 | 0 rds success 0 rds | [0..cds): calldata |\n * 80 | DUP1 | 0 0 rds success 0 rds | [0..cds): calldata |\n * 3e | RETURNDATACOPY | success 0 rds | [0..rds): returndata |\n * |\n * 60 0x2a | PUSH1 0x2a | 0x2a success 0 rds | [0..rds): returndata |\n * 57 | JUMPI | 0 rds | [0..rds): returndata |\n * |\n * ::: revert :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: |\n * fd | REVERT | | [0..rds): returndata |\n * |\n * ::: return :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: |\n * 5b | JUMPDEST | 0 rds | [0..rds): returndata |\n * f3 | RETURN | | [0..rds): returndata |\n * --------------------------------------------------------------------------+\n */\n mstore(0x21, 0x5af43d3d93803e602a57fd5bf3)\n mstore(0x14, implementation)\n mstore(0x00, 0x602c3d8160093d39f33d3d3d3d363d3d37363d73)\n instance := create(value, 0x0c, 0x35)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n mstore(0x21, 0) // Restore the overwritten part of the free memory pointer.\n }\n }\n\n /// @dev Deploys a deterministic clone of `implementation` with `salt`.\n function cloneDeterministic(address implementation, bytes32 salt)\n internal\n returns (address instance)\n {\n instance = cloneDeterministic(0, implementation, salt);\n }\n\n /// @dev Deploys a deterministic clone of `implementation` with `salt`.\n /// Deposits `value` ETH during deployment.\n function cloneDeterministic(uint256 value, address implementation, bytes32 salt)\n internal\n returns (address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n mstore(0x21, 0x5af43d3d93803e602a57fd5bf3)\n mstore(0x14, implementation)\n mstore(0x00, 0x602c3d8160093d39f33d3d3d3d363d3d37363d73)\n instance := create2(value, 0x0c, 0x35, salt)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n mstore(0x21, 0) // Restore the overwritten part of the free memory pointer.\n }\n }\n\n /// @dev Returns the initialization code of the clone of `implementation`.\n function initCode(address implementation) internal pure returns (bytes memory c) {\n /// @solidity memory-safe-assembly\n assembly {\n c := mload(0x40)\n mstore(add(c, 0x40), 0x5af43d3d93803e602a57fd5bf30000000000000000000000)\n mstore(add(c, 0x28), implementation)\n mstore(add(c, 0x14), 0x602c3d8160093d39f33d3d3d3d363d3d37363d73)\n mstore(c, 0x35) // Store the length.\n mstore(0x40, add(c, 0x60)) // Allocate memory.\n }\n }\n\n /// @dev Returns the initialization code hash of the clone of `implementation`.\n function initCodeHash(address implementation) internal pure returns (bytes32 hash) {\n /// @solidity memory-safe-assembly\n assembly {\n mstore(0x21, 0x5af43d3d93803e602a57fd5bf3)\n mstore(0x14, implementation)\n mstore(0x00, 0x602c3d8160093d39f33d3d3d3d363d3d37363d73)\n hash := keccak256(0x0c, 0x35)\n mstore(0x21, 0) // Restore the overwritten part of the free memory pointer.\n }\n }\n\n /// @dev Returns the address of the clone of `implementation`, with `salt` by `deployer`.\n /// Note: The returned result has dirty upper 96 bits. Please clean if used in assembly.\n function predictDeterministicAddress(address implementation, bytes32 salt, address deployer)\n internal\n pure\n returns (address predicted)\n {\n bytes32 hash = initCodeHash(implementation);\n predicted = predictDeterministicAddress(hash, salt, deployer);\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* MINIMAL PROXY OPERATIONS (PUSH0 VARIANT) */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Deploys a PUSH0 clone of `implementation`.\n function clone_PUSH0(address implementation) internal returns (address instance) {\n instance = clone_PUSH0(0, implementation);\n }\n\n /// @dev Deploys a PUSH0 clone of `implementation`.\n /// Deposits `value` ETH during deployment.\n function clone_PUSH0(uint256 value, address implementation)\n internal\n returns (address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n /**\n * --------------------------------------------------------------------------+\n * CREATION (9 bytes) |\n * --------------------------------------------------------------------------|\n * Opcode | Mnemonic | Stack | Memory |\n * --------------------------------------------------------------------------|\n * 60 runSize | PUSH1 runSize | r | |\n * 5f | PUSH0 | 0 r | |\n * 81 | DUP2 | r 0 r | |\n * 60 offset | PUSH1 offset | o r 0 r | |\n * 5f | PUSH0 | 0 o r 0 r | |\n * 39 | CODECOPY | 0 r | [0..runSize): runtime code |\n * f3 | RETURN | | [0..runSize): runtime code |\n * --------------------------------------------------------------------------|\n * RUNTIME (45 bytes) |\n * --------------------------------------------------------------------------|\n * Opcode | Mnemonic | Stack | Memory |\n * --------------------------------------------------------------------------|\n * |\n * ::: keep some values in stack ::::::::::::::::::::::::::::::::::::::::::: |\n * 5f | PUSH0 | 0 | |\n * 5f | PUSH0 | 0 0 | |\n * |\n * ::: copy calldata to memory ::::::::::::::::::::::::::::::::::::::::::::: |\n * 36 | CALLDATASIZE | cds 0 0 | |\n * 5f | PUSH0 | 0 cds 0 0 | |\n * 5f | PUSH0 | 0 0 cds 0 0 | |\n * 37 | CALLDATACOPY | 0 0 | [0..cds): calldata |\n * |\n * ::: delegate call to the implementation contract :::::::::::::::::::::::: |\n * 36 | CALLDATASIZE | cds 0 0 | [0..cds): calldata |\n * 5f | PUSH0 | 0 cds 0 0 | [0..cds): calldata |\n * 73 addr | PUSH20 addr | addr 0 cds 0 0 | [0..cds): calldata |\n * 5a | GAS | gas addr 0 cds 0 0 | [0..cds): calldata |\n * f4 | DELEGATECALL | success | [0..cds): calldata |\n * |\n * ::: copy return data to memory :::::::::::::::::::::::::::::::::::::::::: |\n * 3d | RETURNDATASIZE | rds success | [0..cds): calldata |\n * 5f | PUSH0 | 0 rds success | [0..cds): calldata |\n * 5f | PUSH0 | 0 0 rds success | [0..cds): calldata |\n * 3e | RETURNDATACOPY | success | [0..rds): returndata |\n * |\n * 60 0x29 | PUSH1 0x29 | 0x29 success | [0..rds): returndata |\n * 57 | JUMPI | | [0..rds): returndata |\n * |\n * ::: revert :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: |\n * 3d | RETURNDATASIZE | rds | [0..rds): returndata |\n * 5f | PUSH0 | 0 rds | [0..rds): returndata |\n * fd | REVERT | | [0..rds): returndata |\n * |\n * ::: return :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: |\n * 5b | JUMPDEST | | [0..rds): returndata |\n * 3d | RETURNDATASIZE | rds | [0..rds): returndata |\n * 5f | PUSH0 | 0 rds | [0..rds): returndata |\n * f3 | RETURN | | [0..rds): returndata |\n * --------------------------------------------------------------------------+\n */\n mstore(0x24, 0x5af43d5f5f3e6029573d5ffd5b3d5ff3) // 16\n mstore(0x14, implementation) // 20\n mstore(0x00, 0x602d5f8160095f39f35f5f365f5f37365f73) // 9 + 9\n instance := create(value, 0x0e, 0x36)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n mstore(0x24, 0) // Restore the overwritten part of the free memory pointer.\n }\n }\n\n /// @dev Deploys a deterministic PUSH0 clone of `implementation` with `salt`.\n function cloneDeterministic_PUSH0(address implementation, bytes32 salt)\n internal\n returns (address instance)\n {\n instance = cloneDeterministic_PUSH0(0, implementation, salt);\n }\n\n /// @dev Deploys a deterministic PUSH0 clone of `implementation` with `salt`.\n /// Deposits `value` ETH during deployment.\n function cloneDeterministic_PUSH0(uint256 value, address implementation, bytes32 salt)\n internal\n returns (address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n mstore(0x24, 0x5af43d5f5f3e6029573d5ffd5b3d5ff3) // 16\n mstore(0x14, implementation) // 20\n mstore(0x00, 0x602d5f8160095f39f35f5f365f5f37365f73) // 9 + 9\n instance := create2(value, 0x0e, 0x36, salt)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n mstore(0x24, 0) // Restore the overwritten part of the free memory pointer.\n }\n }\n\n /// @dev Returns the initialization code of the PUSH0 clone of `implementation`.\n function initCode_PUSH0(address implementation) internal pure returns (bytes memory c) {\n /// @solidity memory-safe-assembly\n assembly {\n c := mload(0x40)\n mstore(add(c, 0x40), 0x5af43d5f5f3e6029573d5ffd5b3d5ff300000000000000000000) // 16\n mstore(add(c, 0x26), implementation) // 20\n mstore(add(c, 0x12), 0x602d5f8160095f39f35f5f365f5f37365f73) // 9 + 9\n mstore(c, 0x36) // Store the length.\n mstore(0x40, add(c, 0x60)) // Allocate memory.\n }\n }\n\n /// @dev Returns the initialization code hash of the PUSH0 clone of `implementation`.\n function initCodeHash_PUSH0(address implementation) internal pure returns (bytes32 hash) {\n /// @solidity memory-safe-assembly\n assembly {\n mstore(0x24, 0x5af43d5f5f3e6029573d5ffd5b3d5ff3) // 16\n mstore(0x14, implementation) // 20\n mstore(0x00, 0x602d5f8160095f39f35f5f365f5f37365f73) // 9 + 9\n hash := keccak256(0x0e, 0x36)\n mstore(0x24, 0) // Restore the overwritten part of the free memory pointer.\n }\n }\n\n /// @dev Returns the address of the PUSH0 clone of `implementation`, with `salt` by `deployer`.\n /// Note: The returned result has dirty upper 96 bits. Please clean if used in assembly.\n function predictDeterministicAddress_PUSH0(\n address implementation,\n bytes32 salt,\n address deployer\n ) internal pure returns (address predicted) {\n bytes32 hash = initCodeHash_PUSH0(implementation);\n predicted = predictDeterministicAddress(hash, salt, deployer);\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* CLONES WITH IMMUTABLE ARGS OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Deploys a clone of `implementation` with immutable arguments encoded in `args`.\n function clone(address implementation, bytes memory args) internal returns (address instance) {\n instance = clone(0, implementation, args);\n }\n\n /// @dev Deploys a clone of `implementation` with immutable arguments encoded in `args`.\n /// Deposits `value` ETH during deployment.\n function clone(uint256 value, address implementation, bytes memory args)\n internal\n returns (address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n /**\n * ---------------------------------------------------------------------------+\n * CREATION (10 bytes) |\n * ---------------------------------------------------------------------------|\n * Opcode | Mnemonic | Stack | Memory |\n * ---------------------------------------------------------------------------|\n * 61 runSize | PUSH2 runSize | r | |\n * 3d | RETURNDATASIZE | 0 r | |\n * 81 | DUP2 | r 0 r | |\n * 60 offset | PUSH1 offset | o r 0 r | |\n * 3d | RETURNDATASIZE | 0 o r 0 r | |\n * 39 | CODECOPY | 0 r | [0..runSize): runtime code |\n * f3 | RETURN | | [0..runSize): runtime code |\n * ---------------------------------------------------------------------------|\n * RUNTIME (45 bytes + extraLength) |\n * ---------------------------------------------------------------------------|\n * Opcode | Mnemonic | Stack | Memory |\n * ---------------------------------------------------------------------------|\n * |\n * ::: copy calldata to memory :::::::::::::::::::::::::::::::::::::::::::::: |\n * 36 | CALLDATASIZE | cds | |\n * 3d | RETURNDATASIZE | 0 cds | |\n * 3d | RETURNDATASIZE | 0 0 cds | |\n * 37 | CALLDATACOPY | | [0..cds): calldata |\n * |\n * ::: delegate call to the implementation contract ::::::::::::::::::::::::: |\n * 3d | RETURNDATASIZE | 0 | [0..cds): calldata |\n * 3d | RETURNDATASIZE | 0 0 | [0..cds): calldata |\n * 3d | RETURNDATASIZE | 0 0 0 | [0..cds): calldata |\n * 36 | CALLDATASIZE | cds 0 0 0 | [0..cds): calldata |\n * 3d | RETURNDATASIZE | 0 cds 0 0 0 0 | [0..cds): calldata |\n * 73 addr | PUSH20 addr | addr 0 cds 0 0 0 0 | [0..cds): calldata |\n * 5a | GAS | gas addr 0 cds 0 0 0 0 | [0..cds): calldata |\n * f4 | DELEGATECALL | success 0 0 | [0..cds): calldata |\n * |\n * ::: copy return data to memory ::::::::::::::::::::::::::::::::::::::::::: |\n * 3d | RETURNDATASIZE | rds success 0 | [0..cds): calldata |\n * 82 | DUP3 | 0 rds success 0 | [0..cds): calldata |\n * 80 | DUP1 | 0 0 rds success 0 | [0..cds): calldata |\n * 3e | RETURNDATACOPY | success 0 | [0..rds): returndata |\n * 90 | SWAP1 | 0 success | [0..rds): returndata |\n * 3d | RETURNDATASIZE | rds 0 success | [0..rds): returndata |\n * 91 | SWAP2 | success 0 rds | [0..rds): returndata |\n * |\n * 60 0x2b | PUSH1 0x2b | 0x2b success 0 rds | [0..rds): returndata |\n * 57 | JUMPI | 0 rds | [0..rds): returndata |\n * |\n * ::: revert ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: |\n * fd | REVERT | | [0..rds): returndata |\n * |\n * ::: return ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: |\n * 5b | JUMPDEST | 0 rds | [0..rds): returndata |\n * f3 | RETURN | | [0..rds): returndata |\n * ---------------------------------------------------------------------------+\n */\n let m := mload(0x40)\n let n := mload(args)\n pop(staticcall(gas(), 4, add(args, 0x20), n, add(m, 0x43), n))\n mstore(add(m, 0x23), 0x5af43d82803e903d91602b57fd5bf3)\n mstore(add(m, 0x14), implementation)\n mstore(m, add(0xfe61002d3d81600a3d39f3363d3d373d3d3d363d73, shl(136, n)))\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x2d = 0xffd2`.\n instance := create(value, add(m, add(0x0b, lt(n, 0xffd3))), add(n, 0x37))\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n }\n }\n\n /// @dev Deploys a deterministic clone of `implementation`\n /// with immutable arguments encoded in `args` and `salt`.\n function cloneDeterministic(address implementation, bytes memory args, bytes32 salt)\n internal\n returns (address instance)\n {\n instance = cloneDeterministic(0, implementation, args, salt);\n }\n\n /// @dev Deploys a deterministic clone of `implementation`\n /// with immutable arguments encoded in `args` and `salt`.\n function cloneDeterministic(\n uint256 value,\n address implementation,\n bytes memory args,\n bytes32 salt\n ) internal returns (address instance) {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n let n := mload(args)\n pop(staticcall(gas(), 4, add(args, 0x20), n, add(m, 0x43), n))\n mstore(add(m, 0x23), 0x5af43d82803e903d91602b57fd5bf3)\n mstore(add(m, 0x14), implementation)\n mstore(m, add(0xfe61002d3d81600a3d39f3363d3d373d3d3d363d73, shl(136, n)))\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x2d = 0xffd2`.\n instance := create2(value, add(m, add(0x0b, lt(n, 0xffd3))), add(n, 0x37), salt)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n }\n }\n\n /// @dev Deploys a deterministic clone of `implementation`\n /// with immutable arguments encoded in `args` and `salt`.\n /// This method does not revert if the clone has already been deployed.\n function createDeterministicClone(address implementation, bytes memory args, bytes32 salt)\n internal\n returns (bool alreadyDeployed, address instance)\n {\n return createDeterministicClone(0, implementation, args, salt);\n }\n\n /// @dev Deploys a deterministic clone of `implementation`\n /// with immutable arguments encoded in `args` and `salt`.\n /// This method does not revert if the clone has already been deployed.\n function createDeterministicClone(\n uint256 value,\n address implementation,\n bytes memory args,\n bytes32 salt\n ) internal returns (bool alreadyDeployed, address instance) {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n let n := mload(args)\n pop(staticcall(gas(), 4, add(args, 0x20), n, add(m, 0x43), n))\n mstore(add(m, 0x23), 0x5af43d82803e903d91602b57fd5bf3)\n mstore(add(m, 0x14), implementation)\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x2d = 0xffd2`.\n // forgefmt: disable-next-item\n mstore(add(m, gt(n, 0xffd2)), add(0xfe61002d3d81600a3d39f3363d3d373d3d3d363d73, shl(136, n)))\n // Compute and store the bytecode hash.\n mstore8(0x00, 0xff) // Write the prefix.\n mstore(0x35, keccak256(add(m, 0x0c), add(n, 0x37)))\n mstore(0x01, shl(96, address()))\n mstore(0x15, salt)\n instance := keccak256(0x00, 0x55)\n for {} 1 {} {\n if iszero(extcodesize(instance)) {\n instance := create2(value, add(m, 0x0c), add(n, 0x37), salt)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n break\n }\n alreadyDeployed := 1\n if iszero(value) { break }\n if iszero(call(gas(), instance, value, codesize(), 0x00, codesize(), 0x00)) {\n mstore(0x00, 0xb12d13eb) // `ETHTransferFailed()`.\n revert(0x1c, 0x04)\n }\n break\n }\n mstore(0x35, 0) // Restore the overwritten part of the free memory pointer.\n }\n }\n\n /// @dev Returns the initialization code of the clone of `implementation`\n /// using immutable arguments encoded in `args`.\n function initCode(address implementation, bytes memory args)\n internal\n pure\n returns (bytes memory c)\n {\n /// @solidity memory-safe-assembly\n assembly {\n c := mload(0x40)\n let n := mload(args)\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x2d = 0xffd2`.\n returndatacopy(returndatasize(), returndatasize(), gt(n, 0xffd2))\n for { let i := 0 } lt(i, n) { i := add(i, 0x20) } {\n mstore(add(add(c, 0x57), i), mload(add(add(args, 0x20), i)))\n }\n mstore(add(c, 0x37), 0x5af43d82803e903d91602b57fd5bf3)\n mstore(add(c, 0x28), implementation)\n mstore(add(c, 0x14), add(0x61002d3d81600a3d39f3363d3d373d3d3d363d73, shl(136, n)))\n mstore(c, add(0x37, n)) // Store the length.\n mstore(add(c, add(n, 0x57)), 0) // Zeroize the slot after the bytes.\n mstore(0x40, add(c, add(n, 0x77))) // Allocate memory.\n }\n }\n\n /// @dev Returns the initialization code hash of the clone of `implementation`\n /// using immutable arguments encoded in `args`.\n function initCodeHash(address implementation, bytes memory args)\n internal\n pure\n returns (bytes32 hash)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n let n := mload(args)\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x2d = 0xffd2`.\n returndatacopy(returndatasize(), returndatasize(), gt(n, 0xffd2))\n for { let i := 0 } lt(i, n) { i := add(i, 0x20) } {\n mstore(add(add(m, 0x43), i), mload(add(add(args, 0x20), i)))\n }\n mstore(add(m, 0x23), 0x5af43d82803e903d91602b57fd5bf3)\n mstore(add(m, 0x14), implementation)\n mstore(m, add(0x61002d3d81600a3d39f3363d3d373d3d3d363d73, shl(136, n)))\n hash := keccak256(add(m, 0x0c), add(n, 0x37))\n }\n }\n\n /// @dev Returns the address of the clone of\n /// `implementation` using immutable arguments encoded in `args`, with `salt`, by `deployer`.\n /// Note: The returned result has dirty upper 96 bits. Please clean if used in assembly.\n function predictDeterministicAddress(\n address implementation,\n bytes memory data,\n bytes32 salt,\n address deployer\n ) internal pure returns (address predicted) {\n bytes32 hash = initCodeHash(implementation, data);\n predicted = predictDeterministicAddress(hash, salt, deployer);\n }\n\n /// @dev Equivalent to `argsOnClone(instance, 0, 2 ** 256 - 1)`.\n function argsOnClone(address instance) internal view returns (bytes memory args) {\n /// @solidity memory-safe-assembly\n assembly {\n args := mload(0x40)\n mstore(args, and(0xffffffffff, sub(extcodesize(instance), 0x2d))) // Store the length.\n extcodecopy(instance, add(args, 0x20), 0x2d, add(mload(args), 0x20))\n mstore(0x40, add(mload(args), add(args, 0x40))) // Allocate memory.\n }\n }\n\n /// @dev Equivalent to `argsOnClone(instance, start, 2 ** 256 - 1)`.\n function argsOnClone(address instance, uint256 start)\n internal\n view\n returns (bytes memory args)\n {\n /// @solidity memory-safe-assembly\n assembly {\n args := mload(0x40)\n let n := and(0xffffffffff, sub(extcodesize(instance), 0x2d))\n let l := sub(n, and(0xffffff, mul(lt(start, n), start)))\n extcodecopy(instance, args, add(start, 0x0d), add(l, 0x40))\n mstore(args, mul(sub(n, start), lt(start, n))) // Store the length.\n mstore(0x40, add(args, add(0x40, mload(args)))) // Allocate memory.\n }\n }\n\n /// @dev Returns a slice of the immutable arguments on `instance` from `start` to `end`.\n /// `start` and `end` will be clamped to the range `[0, args.length]`.\n /// The `instance` MUST be deployed via the clone with immutable args functions.\n /// Otherwise, the behavior is undefined.\n /// Out-of-gas reverts if `instance` does not have any code.\n function argsOnClone(address instance, uint256 start, uint256 end)\n internal\n view\n returns (bytes memory args)\n {\n /// @solidity memory-safe-assembly\n assembly {\n args := mload(0x40)\n if iszero(lt(end, 0xffff)) { end := 0xffff }\n let d := mul(sub(end, start), lt(start, end))\n extcodecopy(instance, args, add(start, 0x0d), add(d, 0x20))\n if iszero(and(0xff, mload(add(args, d)))) {\n let n := sub(extcodesize(instance), 0x2d)\n returndatacopy(returndatasize(), returndatasize(), shr(40, n))\n d := mul(gt(n, start), sub(d, mul(gt(end, n), sub(end, n))))\n }\n mstore(args, d) // Store the length.\n mstore(add(add(args, 0x20), d), 0) // Zeroize the slot after the bytes.\n mstore(0x40, add(add(args, 0x40), d)) // Allocate memory.\n }\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* MINIMAL ERC1967 PROXY OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n // Note: The ERC1967 proxy here is intended to be upgraded with UUPS.\n // This is NOT the same as ERC1967Factory's transparent proxy, which includes admin logic.\n\n /// @dev Deploys a minimal ERC1967 proxy with `implementation`.\n function deployERC1967(address implementation) internal returns (address instance) {\n instance = deployERC1967(0, implementation);\n }\n\n /// @dev Deploys a minimal ERC1967 proxy with `implementation`.\n /// Deposits `value` ETH during deployment.\n function deployERC1967(uint256 value, address implementation)\n internal\n returns (address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n /**\n * ---------------------------------------------------------------------------------+\n * CREATION (34 bytes) |\n * ---------------------------------------------------------------------------------|\n * Opcode | Mnemonic | Stack | Memory |\n * ---------------------------------------------------------------------------------|\n * 60 runSize | PUSH1 runSize | r | |\n * 3d | RETURNDATASIZE | 0 r | |\n * 81 | DUP2 | r 0 r | |\n * 60 offset | PUSH1 offset | o r 0 r | |\n * 3d | RETURNDATASIZE | 0 o r 0 r | |\n * 39 | CODECOPY | 0 r | [0..runSize): runtime code |\n * 73 impl | PUSH20 impl | impl 0 r | [0..runSize): runtime code |\n * 60 slotPos | PUSH1 slotPos | slotPos impl 0 r | [0..runSize): runtime code |\n * 51 | MLOAD | slot impl 0 r | [0..runSize): runtime code |\n * 55 | SSTORE | 0 r | [0..runSize): runtime code |\n * f3 | RETURN | | [0..runSize): runtime code |\n * ---------------------------------------------------------------------------------|\n * RUNTIME (61 bytes) |\n * ---------------------------------------------------------------------------------|\n * Opcode | Mnemonic | Stack | Memory |\n * ---------------------------------------------------------------------------------|\n * |\n * ::: copy calldata to memory :::::::::::::::::::::::::::::::::::::::::::::::::::: |\n * 36 | CALLDATASIZE | cds | |\n * 3d | RETURNDATASIZE | 0 cds | |\n * 3d | RETURNDATASIZE | 0 0 cds | |\n * 37 | CALLDATACOPY | | [0..calldatasize): calldata |\n * |\n * ::: delegatecall to implementation ::::::::::::::::::::::::::::::::::::::::::::: |\n * 3d | RETURNDATASIZE | 0 | |\n * 3d | RETURNDATASIZE | 0 0 | |\n * 36 | CALLDATASIZE | cds 0 0 | [0..calldatasize): calldata |\n * 3d | RETURNDATASIZE | 0 cds 0 0 | [0..calldatasize): calldata |\n * 7f slot | PUSH32 slot | s 0 cds 0 0 | [0..calldatasize): calldata |\n * 54 | SLOAD | i 0 cds 0 0 | [0..calldatasize): calldata |\n * 5a | GAS | g i 0 cds 0 0 | [0..calldatasize): calldata |\n * f4 | DELEGATECALL | succ | [0..calldatasize): calldata |\n * |\n * ::: copy returndata to memory :::::::::::::::::::::::::::::::::::::::::::::::::: |\n * 3d | RETURNDATASIZE | rds succ | [0..calldatasize): calldata |\n * 60 0x00 | PUSH1 0x00 | 0 rds succ | [0..calldatasize): calldata |\n * 80 | DUP1 | 0 0 rds succ | [0..calldatasize): calldata |\n * 3e | RETURNDATACOPY | succ | [0..returndatasize): returndata |\n * |\n * ::: branch on delegatecall status :::::::::::::::::::::::::::::::::::::::::::::: |\n * 60 0x38 | PUSH1 0x38 | dest succ | [0..returndatasize): returndata |\n * 57 | JUMPI | | [0..returndatasize): returndata |\n * |\n * ::: delegatecall failed, revert :::::::::::::::::::::::::::::::::::::::::::::::: |\n * 3d | RETURNDATASIZE | rds | [0..returndatasize): returndata |\n * 60 0x00 | PUSH1 0x00 | 0 rds | [0..returndatasize): returndata |\n * fd | REVERT | | [0..returndatasize): returndata |\n * |\n * ::: delegatecall succeeded, return ::::::::::::::::::::::::::::::::::::::::::::: |\n * 5b | JUMPDEST | | [0..returndatasize): returndata |\n * 3d | RETURNDATASIZE | rds | [0..returndatasize): returndata |\n * 60 0x00 | PUSH1 0x00 | 0 rds | [0..returndatasize): returndata |\n * f3 | RETURN | | [0..returndatasize): returndata |\n * ---------------------------------------------------------------------------------+\n */\n let m := mload(0x40) // Cache the free memory pointer.\n mstore(0x60, 0xcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f3)\n mstore(0x40, 0x5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076)\n mstore(0x20, 0x6009)\n mstore(0x1e, implementation)\n mstore(0x0a, 0x603d3d8160223d3973)\n instance := create(value, 0x21, 0x5f)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n mstore(0x40, m) // Restore the free memory pointer.\n mstore(0x60, 0) // Restore the zero slot.\n }\n }\n\n /// @dev Deploys a deterministic minimal ERC1967 proxy with `implementation` and `salt`.\n function deployDeterministicERC1967(address implementation, bytes32 salt)\n internal\n returns (address instance)\n {\n instance = deployDeterministicERC1967(0, implementation, salt);\n }\n\n /// @dev Deploys a deterministic minimal ERC1967 proxy with `implementation` and `salt`.\n /// Deposits `value` ETH during deployment.\n function deployDeterministicERC1967(uint256 value, address implementation, bytes32 salt)\n internal\n returns (address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40) // Cache the free memory pointer.\n mstore(0x60, 0xcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f3)\n mstore(0x40, 0x5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076)\n mstore(0x20, 0x6009)\n mstore(0x1e, implementation)\n mstore(0x0a, 0x603d3d8160223d3973)\n instance := create2(value, 0x21, 0x5f, salt)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n mstore(0x40, m) // Restore the free memory pointer.\n mstore(0x60, 0) // Restore the zero slot.\n }\n }\n\n /// @dev Creates a deterministic minimal ERC1967 proxy with `implementation` and `salt`.\n /// Note: This method is intended for use in ERC4337 factories,\n /// which are expected to NOT revert if the proxy is already deployed.\n function createDeterministicERC1967(address implementation, bytes32 salt)\n internal\n returns (bool alreadyDeployed, address instance)\n {\n return createDeterministicERC1967(0, implementation, salt);\n }\n\n /// @dev Creates a deterministic minimal ERC1967 proxy with `implementation` and `salt`.\n /// Deposits `value` ETH during deployment.\n /// Note: This method is intended for use in ERC4337 factories,\n /// which are expected to NOT revert if the proxy is already deployed.\n function createDeterministicERC1967(uint256 value, address implementation, bytes32 salt)\n internal\n returns (bool alreadyDeployed, address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40) // Cache the free memory pointer.\n mstore(0x60, 0xcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f3)\n mstore(0x40, 0x5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076)\n mstore(0x20, 0x6009)\n mstore(0x1e, implementation)\n mstore(0x0a, 0x603d3d8160223d3973)\n // Compute and store the bytecode hash.\n mstore(add(m, 0x35), keccak256(0x21, 0x5f))\n mstore(m, shl(88, address()))\n mstore8(m, 0xff) // Write the prefix.\n mstore(add(m, 0x15), salt)\n instance := keccak256(m, 0x55)\n for {} 1 {} {\n if iszero(extcodesize(instance)) {\n instance := create2(value, 0x21, 0x5f, salt)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n break\n }\n alreadyDeployed := 1\n if iszero(value) { break }\n if iszero(call(gas(), instance, value, codesize(), 0x00, codesize(), 0x00)) {\n mstore(0x00, 0xb12d13eb) // `ETHTransferFailed()`.\n revert(0x1c, 0x04)\n }\n break\n }\n mstore(0x40, m) // Restore the free memory pointer.\n mstore(0x60, 0) // Restore the zero slot.\n }\n }\n\n /// @dev Returns the initialization code of the minimal ERC1967 proxy of `implementation`.\n function initCodeERC1967(address implementation) internal pure returns (bytes memory c) {\n /// @solidity memory-safe-assembly\n assembly {\n c := mload(0x40)\n mstore(add(c, 0x60), 0x3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f300)\n mstore(add(c, 0x40), 0x55f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076cc)\n mstore(add(c, 0x20), or(shl(24, implementation), 0x600951))\n mstore(add(c, 0x09), 0x603d3d8160223d3973)\n mstore(c, 0x5f) // Store the length.\n mstore(0x40, add(c, 0x80)) // Allocate memory.\n }\n }\n\n /// @dev Returns the initialization code hash of the minimal ERC1967 proxy of `implementation`.\n function initCodeHashERC1967(address implementation) internal pure returns (bytes32 hash) {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40) // Cache the free memory pointer.\n mstore(0x60, 0xcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f3)\n mstore(0x40, 0x5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076)\n mstore(0x20, 0x6009)\n mstore(0x1e, implementation)\n mstore(0x0a, 0x603d3d8160223d3973)\n hash := keccak256(0x21, 0x5f)\n mstore(0x40, m) // Restore the free memory pointer.\n mstore(0x60, 0) // Restore the zero slot.\n }\n }\n\n /// @dev Returns the address of the ERC1967 proxy of `implementation`, with `salt` by `deployer`.\n /// Note: The returned result has dirty upper 96 bits. Please clean if used in assembly.\n function predictDeterministicAddressERC1967(\n address implementation,\n bytes32 salt,\n address deployer\n ) internal pure returns (address predicted) {\n bytes32 hash = initCodeHashERC1967(implementation);\n predicted = predictDeterministicAddress(hash, salt, deployer);\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* MINIMAL ERC1967 PROXY WITH IMMUTABLE ARGS OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Deploys a minimal ERC1967 proxy with `implementation` and `args`.\n function deployERC1967(address implementation, bytes memory args)\n internal\n returns (address instance)\n {\n instance = deployERC1967(0, implementation, args);\n }\n\n /// @dev Deploys a minimal ERC1967 proxy with `implementation` and `args`.\n /// Deposits `value` ETH during deployment.\n function deployERC1967(uint256 value, address implementation, bytes memory args)\n internal\n returns (address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n let n := mload(args)\n pop(staticcall(gas(), 4, add(args, 0x20), n, add(m, 0x60), n))\n mstore(add(m, 0x40), 0xcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f3)\n mstore(add(m, 0x20), 0x5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076)\n mstore(0x16, 0x6009)\n mstore(0x14, implementation)\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x3d = 0xffc2`.\n mstore(gt(n, 0xffc2), add(0xfe61003d3d8160233d3973, shl(56, n)))\n mstore(m, mload(0x16))\n instance := create(value, m, add(n, 0x60))\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n }\n }\n\n /// @dev Deploys a deterministic minimal ERC1967 proxy with `implementation`, `args` and `salt`.\n function deployDeterministicERC1967(address implementation, bytes memory args, bytes32 salt)\n internal\n returns (address instance)\n {\n instance = deployDeterministicERC1967(0, implementation, args, salt);\n }\n\n /// @dev Deploys a deterministic minimal ERC1967 proxy with `implementation`, `args` and `salt`.\n /// Deposits `value` ETH during deployment.\n function deployDeterministicERC1967(\n uint256 value,\n address implementation,\n bytes memory args,\n bytes32 salt\n ) internal returns (address instance) {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n let n := mload(args)\n pop(staticcall(gas(), 4, add(args, 0x20), n, add(m, 0x60), n))\n mstore(add(m, 0x40), 0xcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f3)\n mstore(add(m, 0x20), 0x5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076)\n mstore(0x16, 0x6009)\n mstore(0x14, implementation)\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x3d = 0xffc2`.\n mstore(gt(n, 0xffc2), add(0xfe61003d3d8160233d3973, shl(56, n)))\n mstore(m, mload(0x16))\n instance := create2(value, m, add(n, 0x60), salt)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n }\n }\n\n /// @dev Creates a deterministic minimal ERC1967 proxy with `implementation`, `args` and `salt`.\n /// Note: This method is intended for use in ERC4337 factories,\n /// which are expected to NOT revert if the proxy is already deployed.\n function createDeterministicERC1967(address implementation, bytes memory args, bytes32 salt)\n internal\n returns (bool alreadyDeployed, address instance)\n {\n return createDeterministicERC1967(0, implementation, args, salt);\n }\n\n /// @dev Creates a deterministic minimal ERC1967 proxy with `implementation`, `args` and `salt`.\n /// Deposits `value` ETH during deployment.\n /// Note: This method is intended for use in ERC4337 factories,\n /// which are expected to NOT revert if the proxy is already deployed.\n function createDeterministicERC1967(\n uint256 value,\n address implementation,\n bytes memory args,\n bytes32 salt\n ) internal returns (bool alreadyDeployed, address instance) {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n let n := mload(args)\n pop(staticcall(gas(), 4, add(args, 0x20), n, add(m, 0x60), n))\n mstore(add(m, 0x40), 0xcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f3)\n mstore(add(m, 0x20), 0x5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076)\n mstore(0x16, 0x6009)\n mstore(0x14, implementation)\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x3d = 0xffc2`.\n mstore(gt(n, 0xffc2), add(0xfe61003d3d8160233d3973, shl(56, n)))\n mstore(m, mload(0x16))\n // Compute and store the bytecode hash.\n mstore8(0x00, 0xff) // Write the prefix.\n mstore(0x35, keccak256(m, add(n, 0x60)))\n mstore(0x01, shl(96, address()))\n mstore(0x15, salt)\n instance := keccak256(0x00, 0x55)\n for {} 1 {} {\n if iszero(extcodesize(instance)) {\n instance := create2(value, m, add(n, 0x60), salt)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n break\n }\n alreadyDeployed := 1\n if iszero(value) { break }\n if iszero(call(gas(), instance, value, codesize(), 0x00, codesize(), 0x00)) {\n mstore(0x00, 0xb12d13eb) // `ETHTransferFailed()`.\n revert(0x1c, 0x04)\n }\n break\n }\n mstore(0x35, 0) // Restore the overwritten part of the free memory pointer.\n }\n }\n\n /// @dev Returns the initialization code of the minimal ERC1967 proxy of `implementation` and `args`.\n function initCodeERC1967(address implementation, bytes memory args)\n internal\n pure\n returns (bytes memory c)\n {\n /// @solidity memory-safe-assembly\n assembly {\n c := mload(0x40)\n let n := mload(args)\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x3d = 0xffc2`.\n returndatacopy(returndatasize(), returndatasize(), gt(n, 0xffc2))\n for { let i := 0 } lt(i, n) { i := add(i, 0x20) } {\n mstore(add(add(c, 0x80), i), mload(add(add(args, 0x20), i)))\n }\n mstore(add(c, 0x60), 0xcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f3)\n mstore(add(c, 0x40), 0x5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076)\n mstore(add(c, 0x20), 0x6009)\n mstore(add(c, 0x1e), implementation)\n mstore(add(c, 0x0a), add(0x61003d3d8160233d3973, shl(56, n)))\n mstore(c, add(n, 0x60)) // Store the length.\n mstore(add(c, add(n, 0x80)), 0) // Zeroize the slot after the bytes.\n mstore(0x40, add(c, add(n, 0xa0))) // Allocate memory.\n }\n }\n\n /// @dev Returns the initialization code hash of the minimal ERC1967 proxy of `implementation` and `args`.\n function initCodeHashERC1967(address implementation, bytes memory args)\n internal\n pure\n returns (bytes32 hash)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n let n := mload(args)\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x3d = 0xffc2`.\n returndatacopy(returndatasize(), returndatasize(), gt(n, 0xffc2))\n for { let i := 0 } lt(i, n) { i := add(i, 0x20) } {\n mstore(add(add(m, 0x60), i), mload(add(add(args, 0x20), i)))\n }\n mstore(add(m, 0x40), 0xcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f3)\n mstore(add(m, 0x20), 0x5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076)\n mstore(0x16, 0x6009)\n mstore(0x14, implementation)\n mstore(0x00, add(0x61003d3d8160233d3973, shl(56, n)))\n mstore(m, mload(0x16))\n hash := keccak256(m, add(n, 0x60))\n }\n }\n\n /// @dev Returns the address of the ERC1967 proxy of `implementation`, `args`, with `salt` by `deployer`.\n /// Note: The returned result has dirty upper 96 bits. Please clean if used in assembly.\n function predictDeterministicAddressERC1967(\n address implementation,\n bytes memory args,\n bytes32 salt,\n address deployer\n ) internal pure returns (address predicted) {\n bytes32 hash = initCodeHashERC1967(implementation, args);\n predicted = predictDeterministicAddress(hash, salt, deployer);\n }\n\n /// @dev Equivalent to `argsOnERC1967(instance, start, 2 ** 256 - 1)`.\n function argsOnERC1967(address instance) internal view returns (bytes memory args) {\n /// @solidity memory-safe-assembly\n assembly {\n args := mload(0x40)\n mstore(args, and(0xffffffffff, sub(extcodesize(instance), 0x3d))) // Store the length.\n extcodecopy(instance, add(args, 0x20), 0x3d, add(mload(args), 0x20))\n mstore(0x40, add(mload(args), add(args, 0x40))) // Allocate memory.\n }\n }\n\n /// @dev Equivalent to `argsOnERC1967(instance, start, 2 ** 256 - 1)`.\n function argsOnERC1967(address instance, uint256 start)\n internal\n view\n returns (bytes memory args)\n {\n /// @solidity memory-safe-assembly\n assembly {\n args := mload(0x40)\n let n := and(0xffffffffff, sub(extcodesize(instance), 0x3d))\n let l := sub(n, and(0xffffff, mul(lt(start, n), start)))\n extcodecopy(instance, args, add(start, 0x1d), add(l, 0x40))\n mstore(args, mul(sub(n, start), lt(start, n))) // Store the length.\n mstore(0x40, add(args, add(0x40, mload(args)))) // Allocate memory.\n }\n }\n\n /// @dev Returns a slice of the immutable arguments on `instance` from `start` to `end`.\n /// `start` and `end` will be clamped to the range `[0, args.length]`.\n /// The `instance` MUST be deployed via the ERC1967 with immutable args functions.\n /// Otherwise, the behavior is undefined.\n /// Out-of-gas reverts if `instance` does not have any code.\n function argsOnERC1967(address instance, uint256 start, uint256 end)\n internal\n view\n returns (bytes memory args)\n {\n /// @solidity memory-safe-assembly\n assembly {\n args := mload(0x40)\n if iszero(lt(end, 0xffff)) { end := 0xffff }\n let d := mul(sub(end, start), lt(start, end))\n extcodecopy(instance, args, add(start, 0x1d), add(d, 0x20))\n if iszero(and(0xff, mload(add(args, d)))) {\n let n := sub(extcodesize(instance), 0x3d)\n returndatacopy(returndatasize(), returndatasize(), shr(40, n))\n d := mul(gt(n, start), sub(d, mul(gt(end, n), sub(end, n))))\n }\n mstore(args, d) // Store the length.\n mstore(add(add(args, 0x20), d), 0) // Zeroize the slot after the bytes.\n mstore(0x40, add(add(args, 0x40), d)) // Allocate memory.\n }\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* ERC1967I PROXY OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n // Note: This proxy has a special code path that activates if `calldatasize() == 1`.\n // This code path skips the delegatecall and directly returns the `implementation` address.\n // The returned implementation is guaranteed to be valid if the keccak256 of the\n // proxy's code is equal to `ERC1967I_CODE_HASH`.\n\n /// @dev Deploys a ERC1967I proxy with `implementation`.\n function deployERC1967I(address implementation) internal returns (address instance) {\n instance = deployERC1967I(0, implementation);\n }\n\n /// @dev Deploys a ERC1967I proxy with `implementation`.\n /// Deposits `value` ETH during deployment.\n function deployERC1967I(uint256 value, address implementation)\n internal\n returns (address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n /**\n * ---------------------------------------------------------------------------------+\n * CREATION (34 bytes) |\n * ---------------------------------------------------------------------------------|\n * Opcode | Mnemonic | Stack | Memory |\n * ---------------------------------------------------------------------------------|\n * 60 runSize | PUSH1 runSize | r | |\n * 3d | RETURNDATASIZE | 0 r | |\n * 81 | DUP2 | r 0 r | |\n * 60 offset | PUSH1 offset | o r 0 r | |\n * 3d | RETURNDATASIZE | 0 o r 0 r | |\n * 39 | CODECOPY | 0 r | [0..runSize): runtime code |\n * 73 impl | PUSH20 impl | impl 0 r | [0..runSize): runtime code |\n * 60 slotPos | PUSH1 slotPos | slotPos impl 0 r | [0..runSize): runtime code |\n * 51 | MLOAD | slot impl 0 r | [0..runSize): runtime code |\n * 55 | SSTORE | 0 r | [0..runSize): runtime code |\n * f3 | RETURN | | [0..runSize): runtime code |\n * ---------------------------------------------------------------------------------|\n * RUNTIME (82 bytes) |\n * ---------------------------------------------------------------------------------|\n * Opcode | Mnemonic | Stack | Memory |\n * ---------------------------------------------------------------------------------|\n * |\n * ::: check calldatasize ::::::::::::::::::::::::::::::::::::::::::::::::::::::::: |\n * 36 | CALLDATASIZE | cds | |\n * 58 | PC | 1 cds | |\n * 14 | EQ | eqs | |\n * 60 0x43 | PUSH1 0x43 | dest eqs | |\n * 57 | JUMPI | | |\n * |\n * ::: copy calldata to memory :::::::::::::::::::::::::::::::::::::::::::::::::::: |\n * 36 | CALLDATASIZE | cds | |\n * 3d | RETURNDATASIZE | 0 cds | |\n * 3d | RETURNDATASIZE | 0 0 cds | |\n * 37 | CALLDATACOPY | | [0..calldatasize): calldata |\n * |\n * ::: delegatecall to implementation ::::::::::::::::::::::::::::::::::::::::::::: |\n * 3d | RETURNDATASIZE | 0 | |\n * 3d | RETURNDATASIZE | 0 0 | |\n * 36 | CALLDATASIZE | cds 0 0 | [0..calldatasize): calldata |\n * 3d | RETURNDATASIZE | 0 cds 0 0 | [0..calldatasize): calldata |\n * 7f slot | PUSH32 slot | s 0 cds 0 0 | [0..calldatasize): calldata |\n * 54 | SLOAD | i 0 cds 0 0 | [0..calldatasize): calldata |\n * 5a | GAS | g i 0 cds 0 0 | [0..calldatasize): calldata |\n * f4 | DELEGATECALL | succ | [0..calldatasize): calldata |\n * |\n * ::: copy returndata to memory :::::::::::::::::::::::::::::::::::::::::::::::::: |\n * 3d | RETURNDATASIZE | rds succ | [0..calldatasize): calldata |\n * 60 0x00 | PUSH1 0x00 | 0 rds succ | [0..calldatasize): calldata |\n * 80 | DUP1 | 0 0 rds succ | [0..calldatasize): calldata |\n * 3e | RETURNDATACOPY | succ | [0..returndatasize): returndata |\n * |\n * ::: branch on delegatecall status :::::::::::::::::::::::::::::::::::::::::::::: |\n * 60 0x3E | PUSH1 0x3E | dest succ | [0..returndatasize): returndata |\n * 57 | JUMPI | | [0..returndatasize): returndata |\n * |\n * ::: delegatecall failed, revert :::::::::::::::::::::::::::::::::::::::::::::::: |\n * 3d | RETURNDATASIZE | rds | [0..returndatasize): returndata |\n * 60 0x00 | PUSH1 0x00 | 0 rds | [0..returndatasize): returndata |\n * fd | REVERT | | [0..returndatasize): returndata |\n * |\n * ::: delegatecall succeeded, return ::::::::::::::::::::::::::::::::::::::::::::: |\n * 5b | JUMPDEST | | [0..returndatasize): returndata |\n * 3d | RETURNDATASIZE | rds | [0..returndatasize): returndata |\n * 60 0x00 | PUSH1 0x00 | 0 rds | [0..returndatasize): returndata |\n * f3 | RETURN | | [0..returndatasize): returndata |\n * |\n * ::: implementation , return :::::::::::::::::::::::::::::::::::::::::::::::::::: |\n * 5b | JUMPDEST | | |\n * 60 0x20 | PUSH1 0x20 | 32 | |\n * 60 0x0F | PUSH1 0x0F | o 32 | |\n * 3d | RETURNDATASIZE | 0 o 32 | |\n * 39 | CODECOPY | | [0..32): implementation slot |\n * 3d | RETURNDATASIZE | 0 | [0..32): implementation slot |\n * 51 | MLOAD | slot | [0..32): implementation slot |\n * 54 | SLOAD | impl | [0..32): implementation slot |\n * 3d | RETURNDATASIZE | 0 impl | [0..32): implementation slot |\n * 52 | MSTORE | | [0..32): implementation address |\n * 59 | MSIZE | 32 | [0..32): implementation address |\n * 3d | RETURNDATASIZE | 0 32 | [0..32): implementation address |\n * f3 | RETURN | | [0..32): implementation address |\n * ---------------------------------------------------------------------------------+\n */\n let m := mload(0x40) // Cache the free memory pointer.\n mstore(0x60, 0x3d6000803e603e573d6000fd5b3d6000f35b6020600f3d393d51543d52593df3)\n mstore(0x40, 0xa13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af4)\n mstore(0x20, 0x600f5155f3365814604357363d3d373d3d363d7f360894)\n mstore(0x09, or(shl(160, 0x60523d8160223d3973), shr(96, shl(96, implementation))))\n instance := create(value, 0x0c, 0x74)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n mstore(0x40, m) // Restore the free memory pointer.\n mstore(0x60, 0) // Restore the zero slot.\n }\n }\n\n /// @dev Deploys a deterministic ERC1967I proxy with `implementation` and `salt`.\n function deployDeterministicERC1967I(address implementation, bytes32 salt)\n internal\n returns (address instance)\n {\n instance = deployDeterministicERC1967I(0, implementation, salt);\n }\n\n /// @dev Deploys a deterministic ERC1967I proxy with `implementation` and `salt`.\n /// Deposits `value` ETH during deployment.\n function deployDeterministicERC1967I(uint256 value, address implementation, bytes32 salt)\n internal\n returns (address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40) // Cache the free memory pointer.\n mstore(0x60, 0x3d6000803e603e573d6000fd5b3d6000f35b6020600f3d393d51543d52593df3)\n mstore(0x40, 0xa13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af4)\n mstore(0x20, 0x600f5155f3365814604357363d3d373d3d363d7f360894)\n mstore(0x09, or(shl(160, 0x60523d8160223d3973), shr(96, shl(96, implementation))))\n instance := create2(value, 0x0c, 0x74, salt)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n mstore(0x40, m) // Restore the free memory pointer.\n mstore(0x60, 0) // Restore the zero slot.\n }\n }\n\n /// @dev Creates a deterministic ERC1967I proxy with `implementation` and `salt`.\n /// Note: This method is intended for use in ERC4337 factories,\n /// which are expected to NOT revert if the proxy is already deployed.\n function createDeterministicERC1967I(address implementation, bytes32 salt)\n internal\n returns (bool alreadyDeployed, address instance)\n {\n return createDeterministicERC1967I(0, implementation, salt);\n }\n\n /// @dev Creates a deterministic ERC1967I proxy with `implementation` and `salt`.\n /// Deposits `value` ETH during deployment.\n /// Note: This method is intended for use in ERC4337 factories,\n /// which are expected to NOT revert if the proxy is already deployed.\n function createDeterministicERC1967I(uint256 value, address implementation, bytes32 salt)\n internal\n returns (bool alreadyDeployed, address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40) // Cache the free memory pointer.\n mstore(0x60, 0x3d6000803e603e573d6000fd5b3d6000f35b6020600f3d393d51543d52593df3)\n mstore(0x40, 0xa13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af4)\n mstore(0x20, 0x600f5155f3365814604357363d3d373d3d363d7f360894)\n mstore(0x09, or(shl(160, 0x60523d8160223d3973), shr(96, shl(96, implementation))))\n // Compute and store the bytecode hash.\n mstore(add(m, 0x35), keccak256(0x0c, 0x74))\n mstore(m, shl(88, address()))\n mstore8(m, 0xff) // Write the prefix.\n mstore(add(m, 0x15), salt)\n instance := keccak256(m, 0x55)\n for {} 1 {} {\n if iszero(extcodesize(instance)) {\n instance := create2(value, 0x0c, 0x74, salt)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n break\n }\n alreadyDeployed := 1\n if iszero(value) { break }\n if iszero(call(gas(), instance, value, codesize(), 0x00, codesize(), 0x00)) {\n mstore(0x00, 0xb12d13eb) // `ETHTransferFailed()`.\n revert(0x1c, 0x04)\n }\n break\n }\n mstore(0x40, m) // Restore the free memory pointer.\n mstore(0x60, 0) // Restore the zero slot.\n }\n }\n\n /// @dev Returns the initialization code of the ERC1967I proxy of `implementation`.\n function initCodeERC1967I(address implementation) internal pure returns (bytes memory c) {\n /// @solidity memory-safe-assembly\n assembly {\n c := mload(0x40)\n mstore(add(c, 0x74), 0x3d6000803e603e573d6000fd5b3d6000f35b6020600f3d393d51543d52593df3)\n mstore(add(c, 0x54), 0xa13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af4)\n mstore(add(c, 0x34), 0x600f5155f3365814604357363d3d373d3d363d7f360894)\n mstore(add(c, 0x1d), implementation)\n mstore(add(c, 0x09), 0x60523d8160223d3973)\n mstore(add(c, 0x94), 0)\n mstore(c, 0x74) // Store the length.\n mstore(0x40, add(c, 0xa0)) // Allocate memory.\n }\n }\n\n /// @dev Returns the initialization code hash of the ERC1967I proxy of `implementation`.\n function initCodeHashERC1967I(address implementation) internal pure returns (bytes32 hash) {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40) // Cache the free memory pointer.\n mstore(0x60, 0x3d6000803e603e573d6000fd5b3d6000f35b6020600f3d393d51543d52593df3)\n mstore(0x40, 0xa13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af4)\n mstore(0x20, 0x600f5155f3365814604357363d3d373d3d363d7f360894)\n mstore(0x09, or(shl(160, 0x60523d8160223d3973), shr(96, shl(96, implementation))))\n hash := keccak256(0x0c, 0x74)\n mstore(0x40, m) // Restore the free memory pointer.\n mstore(0x60, 0) // Restore the zero slot.\n }\n }\n\n /// @dev Returns the address of the ERC1967I proxy of `implementation`, with `salt` by `deployer`.\n /// Note: The returned result has dirty upper 96 bits. Please clean if used in assembly.\n function predictDeterministicAddressERC1967I(\n address implementation,\n bytes32 salt,\n address deployer\n ) internal pure returns (address predicted) {\n bytes32 hash = initCodeHashERC1967I(implementation);\n predicted = predictDeterministicAddress(hash, salt, deployer);\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* ERC1967I PROXY WITH IMMUTABLE ARGS OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Deploys a minimal ERC1967I proxy with `implementation` and `args`.\n function deployERC1967I(address implementation, bytes memory args) internal returns (address) {\n return deployERC1967I(0, implementation, args);\n }\n\n /// @dev Deploys a minimal ERC1967I proxy with `implementation` and `args`.\n /// Deposits `value` ETH during deployment.\n function deployERC1967I(uint256 value, address implementation, bytes memory args)\n internal\n returns (address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n let n := mload(args)\n pop(staticcall(gas(), 4, add(args, 0x20), n, add(m, 0x8b), n))\n\n mstore(add(m, 0x6b), 0x3d6000803e603e573d6000fd5b3d6000f35b6020600f3d393d51543d52593df3)\n mstore(add(m, 0x4b), 0xa13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af4)\n mstore(add(m, 0x2b), 0x600f5155f3365814604357363d3d373d3d363d7f360894)\n mstore(add(m, 0x14), implementation)\n mstore(m, add(0xfe6100523d8160233d3973, shl(56, n)))\n\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x52 = 0xffad`.\n instance := create(value, add(m, add(0x15, lt(n, 0xffae))), add(0x75, n))\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n }\n }\n\n /// @dev Deploys a deterministic ERC1967I proxy with `implementation`, `args`, and `salt`.\n function deployDeterministicERC1967I(address implementation, bytes memory args, bytes32 salt)\n internal\n returns (address instance)\n {\n instance = deployDeterministicERC1967I(0, implementation, args, salt);\n }\n\n /// @dev Deploys a deterministic ERC1967I proxy with `implementation`, `args`, and `salt`.\n /// Deposits `value` ETH during deployment.\n function deployDeterministicERC1967I(\n uint256 value,\n address implementation,\n bytes memory args,\n bytes32 salt\n ) internal returns (address instance) {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n let n := mload(args)\n pop(staticcall(gas(), 4, add(args, 0x20), n, add(m, 0x8b), n))\n\n mstore(add(m, 0x6b), 0x3d6000803e603e573d6000fd5b3d6000f35b6020600f3d393d51543d52593df3)\n mstore(add(m, 0x4b), 0xa13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af4)\n mstore(add(m, 0x2b), 0x600f5155f3365814604357363d3d373d3d363d7f360894)\n mstore(add(m, 0x14), implementation)\n mstore(m, add(0xfe6100523d8160233d3973, shl(56, n)))\n\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x52 = 0xffad`.\n instance := create2(value, add(m, add(0x15, lt(n, 0xffae))), add(0x75, n), salt)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n }\n }\n\n /// @dev Creates a deterministic ERC1967I proxy with `implementation`, `args` and `salt`.\n /// Note: This method is intended for use in ERC4337 factories,\n /// which are expected to NOT revert if the proxy is already deployed.\n function createDeterministicERC1967I(address implementation, bytes memory args, bytes32 salt)\n internal\n returns (bool alreadyDeployed, address instance)\n {\n return createDeterministicERC1967I(0, implementation, args, salt);\n }\n\n /// @dev Creates a deterministic ERC1967I proxy with `implementation`, `args` and `salt`.\n /// Deposits `value` ETH during deployment.\n /// Note: This method is intended for use in ERC4337 factories,\n /// which are expected to NOT revert if the proxy is already deployed.\n function createDeterministicERC1967I(\n uint256 value,\n address implementation,\n bytes memory args,\n bytes32 salt\n ) internal returns (bool alreadyDeployed, address instance) {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n let n := mload(args)\n pop(staticcall(gas(), 4, add(args, 0x20), n, add(m, 0x75), n))\n mstore(add(m, 0x55), 0x3d6000803e603e573d6000fd5b3d6000f35b6020600f3d393d51543d52593df3)\n mstore(add(m, 0x35), 0xa13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af4)\n mstore(add(m, 0x15), 0x5155f3365814604357363d3d373d3d363d7f360894)\n mstore(0x16, 0x600f)\n mstore(0x14, implementation)\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x52 = 0xffad`.\n mstore(gt(n, 0xffad), add(0xfe6100523d8160233d3973, shl(56, n)))\n mstore(m, mload(0x16))\n // Compute and store the bytecode hash.\n mstore8(0x00, 0xff) // Write the prefix.\n mstore(0x35, keccak256(m, add(n, 0x75)))\n mstore(0x01, shl(96, address()))\n mstore(0x15, salt)\n instance := keccak256(0x00, 0x55)\n for {} 1 {} {\n if iszero(extcodesize(instance)) {\n instance := create2(value, m, add(0x75, n), salt)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n break\n }\n alreadyDeployed := 1\n if iszero(value) { break }\n if iszero(call(gas(), instance, value, codesize(), 0x00, codesize(), 0x00)) {\n mstore(0x00, 0xb12d13eb) // `ETHTransferFailed()`.\n revert(0x1c, 0x04)\n }\n break\n }\n mstore(0x35, 0) // Restore the overwritten part of the free memory pointer.\n }\n }\n\n /// @dev Returns the initialization code of the ERC1967I proxy of `implementation` and `args`.\n function initCodeERC1967I(address implementation, bytes memory args)\n internal\n pure\n returns (bytes memory c)\n {\n /// @solidity memory-safe-assembly\n assembly {\n c := mload(0x40)\n let n := mload(args)\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x52 = 0xffad`.\n returndatacopy(returndatasize(), returndatasize(), gt(n, 0xffad))\n for { let i := 0 } lt(i, n) { i := add(i, 0x20) } {\n mstore(add(add(c, 0x95), i), mload(add(add(args, 0x20), i)))\n }\n\n mstore(add(c, 0x75), 0x3d6000803e603e573d6000fd5b3d6000f35b6020600f3d393d51543d52593df3)\n mstore(add(c, 0x55), 0xa13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af4)\n mstore(add(c, 0x35), 0x600f5155f3365814604357363d3d373d3d363d7f360894)\n mstore(add(c, 0x1e), implementation)\n mstore(add(c, 0x0a), add(0x6100523d8160233d3973, shl(56, n)))\n mstore(add(c, add(n, 0x95)), 0)\n mstore(c, add(0x75, n)) // Store the length.\n mstore(0x40, add(c, add(n, 0xb5))) // Allocate memory.\n }\n }\n\n /// @dev Returns the initialization code hash of the ERC1967I proxy of `implementation` and `args.\n function initCodeHashERC1967I(address implementation, bytes memory args)\n internal\n pure\n returns (bytes32 hash)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40) // Cache the free memory pointer.\n let n := mload(args)\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x52 = 0xffad`.\n returndatacopy(returndatasize(), returndatasize(), gt(n, 0xffad))\n\n for { let i := 0 } lt(i, n) { i := add(i, 0x20) } {\n mstore(add(add(m, 0x75), i), mload(add(add(args, 0x20), i)))\n }\n\n mstore(add(m, 0x55), 0x3d6000803e603e573d6000fd5b3d6000f35b6020600f3d393d51543d52593df3)\n mstore(add(m, 0x35), 0xa13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af4)\n mstore(add(m, 0x15), 0x5155f3365814604357363d3d373d3d363d7f360894)\n mstore(0x16, 0x600f)\n mstore(0x14, implementation)\n mstore(0x00, add(0x6100523d8160233d3973, shl(56, n)))\n mstore(m, mload(0x16))\n hash := keccak256(m, add(0x75, n))\n }\n }\n\n /// @dev Returns the address of the ERC1967I proxy of `implementation`, `args` with `salt` by `deployer`.\n /// Note: The returned result has dirty upper 96 bits. Please clean if used in assembly.\n function predictDeterministicAddressERC1967I(\n address implementation,\n bytes memory args,\n bytes32 salt,\n address deployer\n ) internal pure returns (address predicted) {\n bytes32 hash = initCodeHashERC1967I(implementation, args);\n predicted = predictDeterministicAddress(hash, salt, deployer);\n }\n\n /// @dev Equivalent to `argsOnERC1967I(instance, start, 2 ** 256 - 1)`.\n function argsOnERC1967I(address instance) internal view returns (bytes memory args) {\n /// @solidity memory-safe-assembly\n assembly {\n args := mload(0x40)\n mstore(args, and(0xffffffffff, sub(extcodesize(instance), 0x52))) // Store the length.\n extcodecopy(instance, add(args, 0x20), 0x52, add(mload(args), 0x20))\n mstore(0x40, add(mload(args), add(args, 0x40))) // Allocate memory.\n }\n }\n\n /// @dev Equivalent to `argsOnERC1967I(instance, start, 2 ** 256 - 1)`.\n function argsOnERC1967I(address instance, uint256 start)\n internal\n view\n returns (bytes memory args)\n {\n /// @solidity memory-safe-assembly\n assembly {\n args := mload(0x40)\n let n := and(0xffffffffff, sub(extcodesize(instance), 0x52))\n let l := sub(n, and(0xffffff, mul(lt(start, n), start)))\n extcodecopy(instance, args, add(start, 0x32), add(l, 0x40))\n mstore(args, mul(sub(n, start), lt(start, n))) // Store the length.\n mstore(0x40, add(mload(args), add(args, 0x40))) // Allocate memory.\n }\n }\n\n /// @dev Returns a slice of the immutable arguments on `instance` from `start` to `end`.\n /// `start` and `end` will be clamped to the range `[0, args.length]`.\n /// The `instance` MUST be deployed via the ERC1967 with immutable args functions.\n /// Otherwise, the behavior is undefined.\n /// Out-of-gas reverts if `instance` does not have any code.\n function argsOnERC1967I(address instance, uint256 start, uint256 end)\n internal\n view\n returns (bytes memory args)\n {\n /// @solidity memory-safe-assembly\n assembly {\n args := mload(0x40)\n if iszero(lt(end, 0xffff)) { end := 0xffff }\n let d := mul(sub(end, start), lt(start, end))\n extcodecopy(instance, args, add(start, 0x32), add(d, 0x20))\n if iszero(and(0xff, mload(add(args, d)))) {\n let n := sub(extcodesize(instance), 0x52)\n returndatacopy(returndatasize(), returndatasize(), shr(40, n))\n d := mul(gt(n, start), sub(d, mul(gt(end, n), sub(end, n))))\n }\n mstore(args, d) // Store the length.\n mstore(add(add(args, 0x20), d), 0) // Zeroize the slot after the bytes.\n mstore(0x40, add(add(args, 0x40), d)) // Allocate memory.\n }\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* ERC1967 BOOTSTRAP OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n // A bootstrap is a minimal UUPS implementation that allows an ERC1967 proxy\n // pointing to it to be upgraded. The ERC1967 proxy can then be deployed to a\n // deterministic address independent of the implementation:\n // ```\n // address bootstrap = LibClone.erc1967Bootstrap();\n // address instance = LibClone.deployDeterministicERC1967(0, bootstrap, salt);\n // LibClone.bootstrapERC1967(bootstrap, implementation);\n // ```\n\n /// @dev Deploys the ERC1967 bootstrap if it has not been deployed.\n function erc1967Bootstrap() internal returns (address) {\n return erc1967Bootstrap(address(this));\n }\n\n /// @dev Deploys the ERC1967 bootstrap if it has not been deployed.\n function erc1967Bootstrap(address authorizedUpgrader) internal returns (address bootstrap) {\n bytes memory c = initCodeERC1967Bootstrap(authorizedUpgrader);\n bootstrap = predictDeterministicAddress(keccak256(c), bytes32(0), address(this));\n /// @solidity memory-safe-assembly\n assembly {\n if iszero(extcodesize(bootstrap)) {\n if iszero(create2(0, add(c, 0x20), mload(c), 0)) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n }\n }\n }\n\n /// @dev Replaces the implementation at `instance`.\n function bootstrapERC1967(address instance, address implementation) internal {\n /// @solidity memory-safe-assembly\n assembly {\n mstore(0x00, implementation)\n if iszero(call(gas(), instance, 0, 0x0c, 0x14, codesize(), 0x00)) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n }\n }\n\n /// @dev Replaces the implementation at `instance`, and then call it with `data`.\n function bootstrapERC1967AndCall(address instance, address implementation, bytes memory data)\n internal\n {\n /// @solidity memory-safe-assembly\n assembly {\n let n := mload(data)\n mstore(data, implementation)\n if iszero(call(gas(), instance, 0, add(data, 0x0c), add(n, 0x14), codesize(), 0x00)) {\n if iszero(returndatasize()) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n returndatacopy(mload(0x40), 0x00, returndatasize())\n revert(mload(0x40), returndatasize())\n }\n mstore(data, n) // Restore the length of `data`.\n }\n }\n\n /// @dev Returns the implementation address of the ERC1967 bootstrap for this contract.\n function predictDeterministicAddressERC1967Bootstrap() internal view returns (address) {\n return predictDeterministicAddressERC1967Bootstrap(address(this), address(this));\n }\n\n /// @dev Returns the implementation address of the ERC1967 bootstrap for this contract.\n function predictDeterministicAddressERC1967Bootstrap(\n address authorizedUpgrader,\n address deployer\n ) internal pure returns (address) {\n bytes32 hash = initCodeHashERC1967Bootstrap(authorizedUpgrader);\n return predictDeterministicAddress(hash, bytes32(0), deployer);\n }\n\n /// @dev Returns the initialization code of the ERC1967 bootstrap.\n function initCodeERC1967Bootstrap(address authorizedUpgrader)\n internal\n pure\n returns (bytes memory c)\n {\n /// @solidity memory-safe-assembly\n assembly {\n c := mload(0x40)\n mstore(add(c, 0x80), 0x3d3560601c5af46047573d6000383e3d38fd0000000000000000000000000000)\n mstore(add(c, 0x60), 0xa920a3ca505d382bbc55601436116049575b005b363d3d373d3d601436036014)\n mstore(add(c, 0x40), 0x0338573d3560601c7f360894a13ba1a3210667c828492db98dca3e2076cc3735)\n mstore(add(c, 0x20), authorizedUpgrader)\n mstore(add(c, 0x0c), 0x606880600a3d393df3fe3373)\n mstore(c, 0x72)\n mstore(0x40, add(c, 0xa0))\n }\n }\n\n /// @dev Returns the initialization code hash of the ERC1967 bootstrap.\n function initCodeHashERC1967Bootstrap(address authorizedUpgrader)\n internal\n pure\n returns (bytes32)\n {\n return keccak256(initCodeERC1967Bootstrap(authorizedUpgrader));\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* MINIMAL ERC1967 BEACON PROXY OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n // Note: If you use this proxy, you MUST make sure that the beacon is a\n // valid ERC1967 beacon. This means that the beacon must always return a valid\n // address upon a staticcall to `implementation()`, given sufficient gas.\n // For performance, the deployment operations and the proxy assumes that the\n // beacon is always valid and will NOT validate it.\n\n /// @dev Deploys a minimal ERC1967 beacon proxy.\n function deployERC1967BeaconProxy(address beacon) internal returns (address instance) {\n instance = deployERC1967BeaconProxy(0, beacon);\n }\n\n /// @dev Deploys a minimal ERC1967 beacon proxy.\n /// Deposits `value` ETH during deployment.\n function deployERC1967BeaconProxy(uint256 value, address beacon)\n internal\n returns (address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n /**\n * ---------------------------------------------------------------------------------+\n * CREATION (34 bytes) |\n * ---------------------------------------------------------------------------------|\n * Opcode | Mnemonic | Stack | Memory |\n * ---------------------------------------------------------------------------------|\n * 60 runSize | PUSH1 runSize | r | |\n * 3d | RETURNDATASIZE | 0 r | |\n * 81 | DUP2 | r 0 r | |\n * 60 offset | PUSH1 offset | o r 0 r | |\n * 3d | RETURNDATASIZE | 0 o r 0 r | |\n * 39 | CODECOPY | 0 r | [0..runSize): runtime code |\n * 73 beac | PUSH20 beac | beac 0 r | [0..runSize): runtime code |\n * 60 slotPos | PUSH1 slotPos | slotPos beac 0 r | [0..runSize): runtime code |\n * 51 | MLOAD | slot beac 0 r | [0..runSize): runtime code |\n * 55 | SSTORE | 0 r | [0..runSize): runtime code |\n * f3 | RETURN | | [0..runSize): runtime code |\n * ---------------------------------------------------------------------------------|\n * RUNTIME (82 bytes) |\n * ---------------------------------------------------------------------------------|\n * Opcode | Mnemonic | Stack | Memory |\n * ---------------------------------------------------------------------------------|\n * |\n * ::: copy calldata to memory :::::::::::::::::::::::::::::::::::::::::::::::::::: |\n * 36 | CALLDATASIZE | cds | |\n * 3d | RETURNDATASIZE | 0 cds | |\n * 3d | RETURNDATASIZE | 0 0 cds | |\n * 37 | CALLDATACOPY | | [0..calldatasize): calldata |\n * |\n * ::: delegatecall to implementation ::::::::::::::::::::::::::::::::::::::::::::: |\n * 3d | RETURNDATASIZE | 0 | |\n * 3d | RETURNDATASIZE | 0 0 | |\n * 36 | CALLDATASIZE | cds 0 0 | [0..calldatasize): calldata |\n * 3d | RETURNDATASIZE | 0 cds 0 0 | [0..calldatasize): calldata |\n * |\n * ~~~~~~~ beacon staticcall sub procedure ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |\n * 60 0x20 | PUSH1 0x20 | 32 | |\n * 36 | CALLDATASIZE | cds 32 | |\n * 60 0x04 | PUSH1 0x04 | 4 cds 32 | |\n * 36 | CALLDATASIZE | cds 4 cds 32 | |\n * 63 0x5c60da1b | PUSH4 0x5c60da1b | 0x5c60da1b cds 4 cds 32 | |\n * 60 0xe0 | PUSH1 0xe0 | 224 0x5c60da1b cds 4 cds 32 | |\n * 1b | SHL | sel cds 4 cds 32 | |\n * 36 | CALLDATASIZE | cds sel cds 4 cds 32 | |\n * 52 | MSTORE | cds 4 cds 32 | sel |\n * 7f slot | PUSH32 slot | s cds 4 cds 32 | sel |\n * 54 | SLOAD | beac cds 4 cds 32 | sel |\n * 5a | GAS | g beac cds 4 cds 32 | sel |\n * fa | STATICCALL | succ | impl |\n * 50 | POP | | impl |\n * 36 | CALLDATASIZE | cds | impl |\n * 51 | MLOAD | impl | impl |\n * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |\n * 5a | GAS | g impl 0 cds 0 0 | [0..calldatasize): calldata |\n * f4 | DELEGATECALL | succ | [0..calldatasize): calldata |\n * |\n * ::: copy returndata to memory :::::::::::::::::::::::::::::::::::::::::::::::::: |\n * 3d | RETURNDATASIZE | rds succ | [0..calldatasize): calldata |\n * 60 0x00 | PUSH1 0x00 | 0 rds succ | [0..calldatasize): calldata |\n * 80 | DUP1 | 0 0 rds succ | [0..calldatasize): calldata |\n * 3e | RETURNDATACOPY | succ | [0..returndatasize): returndata |\n * |\n * ::: branch on delegatecall status :::::::::::::::::::::::::::::::::::::::::::::: |\n * 60 0x4d | PUSH1 0x4d | dest succ | [0..returndatasize): returndata |\n * 57 | JUMPI | | [0..returndatasize): returndata |\n * |\n * ::: delegatecall failed, revert :::::::::::::::::::::::::::::::::::::::::::::::: |\n * 3d | RETURNDATASIZE | rds | [0..returndatasize): returndata |\n * 60 0x00 | PUSH1 0x00 | 0 rds | [0..returndatasize): returndata |\n * fd | REVERT | | [0..returndatasize): returndata |\n * |\n * ::: delegatecall succeeded, return ::::::::::::::::::::::::::::::::::::::::::::: |\n * 5b | JUMPDEST | | [0..returndatasize): returndata |\n * 3d | RETURNDATASIZE | rds | [0..returndatasize): returndata |\n * 60 0x00 | PUSH1 0x00 | 0 rds | [0..returndatasize): returndata |\n * f3 | RETURN | | [0..returndatasize): returndata |\n * ---------------------------------------------------------------------------------+\n */\n let m := mload(0x40) // Cache the free memory pointer.\n mstore(0x60, 0xb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f3)\n mstore(0x40, 0x1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c)\n mstore(0x20, 0x60195155f3363d3d373d3d363d602036600436635c60da)\n mstore(0x09, or(shl(160, 0x60523d8160223d3973), shr(96, shl(96, beacon))))\n instance := create(value, 0x0c, 0x74)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n mstore(0x40, m) // Restore the free memory pointer.\n mstore(0x60, 0) // Restore the zero slot.\n }\n }\n\n /// @dev Deploys a deterministic minimal ERC1967 beacon proxy with `salt`.\n function deployDeterministicERC1967BeaconProxy(address beacon, bytes32 salt)\n internal\n returns (address instance)\n {\n instance = deployDeterministicERC1967BeaconProxy(0, beacon, salt);\n }\n\n /// @dev Deploys a deterministic minimal ERC1967 beacon proxy with `salt`.\n /// Deposits `value` ETH during deployment.\n function deployDeterministicERC1967BeaconProxy(uint256 value, address beacon, bytes32 salt)\n internal\n returns (address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40) // Cache the free memory pointer.\n mstore(0x60, 0xb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f3)\n mstore(0x40, 0x1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c)\n mstore(0x20, 0x60195155f3363d3d373d3d363d602036600436635c60da)\n mstore(0x09, or(shl(160, 0x60523d8160223d3973), shr(96, shl(96, beacon))))\n instance := create2(value, 0x0c, 0x74, salt)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n mstore(0x40, m) // Restore the free memory pointer.\n mstore(0x60, 0) // Restore the zero slot.\n }\n }\n\n /// @dev Creates a deterministic minimal ERC1967 beacon proxy with `salt`.\n /// Note: This method is intended for use in ERC4337 factories,\n /// which are expected to NOT revert if the proxy is already deployed.\n function createDeterministicERC1967BeaconProxy(address beacon, bytes32 salt)\n internal\n returns (bool alreadyDeployed, address instance)\n {\n return createDeterministicERC1967BeaconProxy(0, beacon, salt);\n }\n\n /// @dev Creates a deterministic minimal ERC1967 beacon proxy with `salt`.\n /// Deposits `value` ETH during deployment.\n /// Note: This method is intended for use in ERC4337 factories,\n /// which are expected to NOT revert if the proxy is already deployed.\n function createDeterministicERC1967BeaconProxy(uint256 value, address beacon, bytes32 salt)\n internal\n returns (bool alreadyDeployed, address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40) // Cache the free memory pointer.\n mstore(0x60, 0xb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f3)\n mstore(0x40, 0x1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c)\n mstore(0x20, 0x60195155f3363d3d373d3d363d602036600436635c60da)\n mstore(0x09, or(shl(160, 0x60523d8160223d3973), shr(96, shl(96, beacon))))\n // Compute and store the bytecode hash.\n mstore(add(m, 0x35), keccak256(0x0c, 0x74))\n mstore(m, shl(88, address()))\n mstore8(m, 0xff) // Write the prefix.\n mstore(add(m, 0x15), salt)\n instance := keccak256(m, 0x55)\n for {} 1 {} {\n if iszero(extcodesize(instance)) {\n instance := create2(value, 0x0c, 0x74, salt)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n break\n }\n alreadyDeployed := 1\n if iszero(value) { break }\n if iszero(call(gas(), instance, value, codesize(), 0x00, codesize(), 0x00)) {\n mstore(0x00, 0xb12d13eb) // `ETHTransferFailed()`.\n revert(0x1c, 0x04)\n }\n break\n }\n mstore(0x40, m) // Restore the free memory pointer.\n mstore(0x60, 0) // Restore the zero slot.\n }\n }\n\n /// @dev Returns the initialization code of the minimal ERC1967 beacon proxy.\n function initCodeERC1967BeaconProxy(address beacon) internal pure returns (bytes memory c) {\n /// @solidity memory-safe-assembly\n assembly {\n c := mload(0x40)\n mstore(add(c, 0x74), 0xb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f3)\n mstore(add(c, 0x54), 0x1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c)\n mstore(add(c, 0x34), 0x60195155f3363d3d373d3d363d602036600436635c60da)\n mstore(add(c, 0x1d), beacon)\n mstore(add(c, 0x09), 0x60523d8160223d3973)\n mstore(add(c, 0x94), 0)\n mstore(c, 0x74) // Store the length.\n mstore(0x40, add(c, 0xa0)) // Allocate memory.\n }\n }\n\n /// @dev Returns the initialization code hash of the minimal ERC1967 beacon proxy.\n function initCodeHashERC1967BeaconProxy(address beacon) internal pure returns (bytes32 hash) {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40) // Cache the free memory pointer.\n mstore(0x60, 0xb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f3)\n mstore(0x40, 0x1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c)\n mstore(0x20, 0x60195155f3363d3d373d3d363d602036600436635c60da)\n mstore(0x09, or(shl(160, 0x60523d8160223d3973), shr(96, shl(96, beacon))))\n hash := keccak256(0x0c, 0x74)\n mstore(0x40, m) // Restore the free memory pointer.\n mstore(0x60, 0) // Restore the zero slot.\n }\n }\n\n /// @dev Returns the address of the ERC1967 beacon proxy, with `salt` by `deployer`.\n /// Note: The returned result has dirty upper 96 bits. Please clean if used in assembly.\n function predictDeterministicAddressERC1967BeaconProxy(\n address beacon,\n bytes32 salt,\n address deployer\n ) internal pure returns (address predicted) {\n bytes32 hash = initCodeHashERC1967BeaconProxy(beacon);\n predicted = predictDeterministicAddress(hash, salt, deployer);\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* ERC1967 BEACON PROXY WITH IMMUTABLE ARGS OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Deploys a minimal ERC1967 beacon proxy with `args`.\n function deployERC1967BeaconProxy(address beacon, bytes memory args)\n internal\n returns (address instance)\n {\n instance = deployERC1967BeaconProxy(0, beacon, args);\n }\n\n /// @dev Deploys a minimal ERC1967 beacon proxy with `args`.\n /// Deposits `value` ETH during deployment.\n function deployERC1967BeaconProxy(uint256 value, address beacon, bytes memory args)\n internal\n returns (address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n let n := mload(args)\n pop(staticcall(gas(), 4, add(args, 0x20), n, add(m, 0x8b), n))\n mstore(add(m, 0x6b), 0xb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f3)\n mstore(add(m, 0x4b), 0x1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c)\n mstore(add(m, 0x2b), 0x60195155f3363d3d373d3d363d602036600436635c60da)\n mstore(add(m, 0x14), beacon)\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x52 = 0xffad`.\n mstore(add(m, gt(n, 0xffad)), add(0xfe6100523d8160233d3973, shl(56, n)))\n instance := create(value, add(m, 0x16), add(n, 0x75))\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n }\n }\n\n /// @dev Deploys a deterministic minimal ERC1967 beacon proxy with `args` and `salt`.\n function deployDeterministicERC1967BeaconProxy(address beacon, bytes memory args, bytes32 salt)\n internal\n returns (address instance)\n {\n instance = deployDeterministicERC1967BeaconProxy(0, beacon, args, salt);\n }\n\n /// @dev Deploys a deterministic minimal ERC1967 beacon proxy with `args` and `salt`.\n /// Deposits `value` ETH during deployment.\n function deployDeterministicERC1967BeaconProxy(\n uint256 value,\n address beacon,\n bytes memory args,\n bytes32 salt\n ) internal returns (address instance) {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n let n := mload(args)\n pop(staticcall(gas(), 4, add(args, 0x20), n, add(m, 0x8b), n))\n mstore(add(m, 0x6b), 0xb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f3)\n mstore(add(m, 0x4b), 0x1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c)\n mstore(add(m, 0x2b), 0x60195155f3363d3d373d3d363d602036600436635c60da)\n mstore(add(m, 0x14), beacon)\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x52 = 0xffad`.\n mstore(add(m, gt(n, 0xffad)), add(0xfe6100523d8160233d3973, shl(56, n)))\n instance := create2(value, add(m, 0x16), add(n, 0x75), salt)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n }\n }\n\n /// @dev Creates a deterministic minimal ERC1967 beacon proxy with `args` and `salt`.\n /// Note: This method is intended for use in ERC4337 factories,\n /// which are expected to NOT revert if the proxy is already deployed.\n function createDeterministicERC1967BeaconProxy(address beacon, bytes memory args, bytes32 salt)\n internal\n returns (bool alreadyDeployed, address instance)\n {\n return createDeterministicERC1967BeaconProxy(0, beacon, args, salt);\n }\n\n /// @dev Creates a deterministic minimal ERC1967 beacon proxy with `args` and `salt`.\n /// Deposits `value` ETH during deployment.\n /// Note: This method is intended for use in ERC4337 factories,\n /// which are expected to NOT revert if the proxy is already deployed.\n function createDeterministicERC1967BeaconProxy(\n uint256 value,\n address beacon,\n bytes memory args,\n bytes32 salt\n ) internal returns (bool alreadyDeployed, address instance) {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n let n := mload(args)\n pop(staticcall(gas(), 4, add(args, 0x20), n, add(m, 0x8b), n))\n mstore(add(m, 0x6b), 0xb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f3)\n mstore(add(m, 0x4b), 0x1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c)\n mstore(add(m, 0x2b), 0x60195155f3363d3d373d3d363d602036600436635c60da)\n mstore(add(m, 0x14), beacon)\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x52 = 0xffad`.\n mstore(add(m, gt(n, 0xffad)), add(0xfe6100523d8160233d3973, shl(56, n)))\n // Compute and store the bytecode hash.\n mstore8(0x00, 0xff) // Write the prefix.\n mstore(0x35, keccak256(add(m, 0x16), add(n, 0x75)))\n mstore(0x01, shl(96, address()))\n mstore(0x15, salt)\n instance := keccak256(0x00, 0x55)\n for {} 1 {} {\n if iszero(extcodesize(instance)) {\n instance := create2(value, add(m, 0x16), add(n, 0x75), salt)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n break\n }\n alreadyDeployed := 1\n if iszero(value) { break }\n if iszero(call(gas(), instance, value, codesize(), 0x00, codesize(), 0x00)) {\n mstore(0x00, 0xb12d13eb) // `ETHTransferFailed()`.\n revert(0x1c, 0x04)\n }\n break\n }\n mstore(0x35, 0) // Restore the overwritten part of the free memory pointer.\n }\n }\n\n /// @dev Returns the initialization code of the minimal ERC1967 beacon proxy.\n function initCodeERC1967BeaconProxy(address beacon, bytes memory args)\n internal\n pure\n returns (bytes memory c)\n {\n /// @solidity memory-safe-assembly\n assembly {\n c := mload(0x40)\n let n := mload(args)\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x52 = 0xffad`.\n returndatacopy(returndatasize(), returndatasize(), gt(n, 0xffad))\n for { let i := 0 } lt(i, n) { i := add(i, 0x20) } {\n mstore(add(add(c, 0x95), i), mload(add(add(args, 0x20), i)))\n }\n mstore(add(c, 0x75), 0xb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f3)\n mstore(add(c, 0x55), 0x1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c)\n mstore(add(c, 0x35), 0x60195155f3363d3d373d3d363d602036600436635c60da)\n mstore(add(c, 0x1e), beacon)\n mstore(add(c, 0x0a), add(0x6100523d8160233d3973, shl(56, n)))\n mstore(c, add(n, 0x75)) // Store the length.\n mstore(add(c, add(n, 0x95)), 0) // Zeroize the slot after the bytes.\n mstore(0x40, add(c, add(n, 0xb5))) // Allocate memory.\n }\n }\n\n /// @dev Returns the initialization code hash of the minimal ERC1967 beacon proxy with `args`.\n function initCodeHashERC1967BeaconProxy(address beacon, bytes memory args)\n internal\n pure\n returns (bytes32 hash)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n let n := mload(args)\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x52 = 0xffad`.\n returndatacopy(returndatasize(), returndatasize(), gt(n, 0xffad))\n for { let i := 0 } lt(i, n) { i := add(i, 0x20) } {\n mstore(add(add(m, 0x8b), i), mload(add(add(args, 0x20), i)))\n }\n mstore(add(m, 0x6b), 0xb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f3)\n mstore(add(m, 0x4b), 0x1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c)\n mstore(add(m, 0x2b), 0x60195155f3363d3d373d3d363d602036600436635c60da)\n mstore(add(m, 0x14), beacon)\n mstore(m, add(0x6100523d8160233d3973, shl(56, n)))\n hash := keccak256(add(m, 0x16), add(n, 0x75))\n }\n }\n\n /// @dev Returns the address of the ERC1967 beacon proxy with `args`, with `salt` by `deployer`.\n /// Note: The returned result has dirty upper 96 bits. Please clean if used in assembly.\n function predictDeterministicAddressERC1967BeaconProxy(\n address beacon,\n bytes memory args,\n bytes32 salt,\n address deployer\n ) internal pure returns (address predicted) {\n bytes32 hash = initCodeHashERC1967BeaconProxy(beacon, args);\n predicted = predictDeterministicAddress(hash, salt, deployer);\n }\n\n /// @dev Equivalent to `argsOnERC1967BeaconProxy(instance, start, 2 ** 256 - 1)`.\n function argsOnERC1967BeaconProxy(address instance) internal view returns (bytes memory args) {\n /// @solidity memory-safe-assembly\n assembly {\n args := mload(0x40)\n mstore(args, and(0xffffffffff, sub(extcodesize(instance), 0x52))) // Store the length.\n extcodecopy(instance, add(args, 0x20), 0x52, add(mload(args), 0x20))\n mstore(0x40, add(mload(args), add(args, 0x40))) // Allocate memory.\n }\n }\n\n /// @dev Equivalent to `argsOnERC1967BeaconProxy(instance, start, 2 ** 256 - 1)`.\n function argsOnERC1967BeaconProxy(address instance, uint256 start)\n internal\n view\n returns (bytes memory args)\n {\n /// @solidity memory-safe-assembly\n assembly {\n args := mload(0x40)\n let n := and(0xffffffffff, sub(extcodesize(instance), 0x52))\n let l := sub(n, and(0xffffff, mul(lt(start, n), start)))\n extcodecopy(instance, args, add(start, 0x32), add(l, 0x40))\n mstore(args, mul(sub(n, start), lt(start, n))) // Store the length.\n mstore(0x40, add(args, add(0x40, mload(args)))) // Allocate memory.\n }\n }\n\n /// @dev Returns a slice of the immutable arguments on `instance` from `start` to `end`.\n /// `start` and `end` will be clamped to the range `[0, args.length]`.\n /// The `instance` MUST be deployed via the ERC1967 beacon proxy with immutable args functions.\n /// Otherwise, the behavior is undefined.\n /// Out-of-gas reverts if `instance` does not have any code.\n function argsOnERC1967BeaconProxy(address instance, uint256 start, uint256 end)\n internal\n view\n returns (bytes memory args)\n {\n /// @solidity memory-safe-assembly\n assembly {\n args := mload(0x40)\n if iszero(lt(end, 0xffff)) { end := 0xffff }\n let d := mul(sub(end, start), lt(start, end))\n extcodecopy(instance, args, add(start, 0x32), add(d, 0x20))\n if iszero(and(0xff, mload(add(args, d)))) {\n let n := sub(extcodesize(instance), 0x52)\n returndatacopy(returndatasize(), returndatasize(), shr(40, n))\n d := mul(gt(n, start), sub(d, mul(gt(end, n), sub(end, n))))\n }\n mstore(args, d) // Store the length.\n mstore(add(add(args, 0x20), d), 0) // Zeroize the slot after the bytes.\n mstore(0x40, add(add(args, 0x40), d)) // Allocate memory.\n }\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* ERC1967I BEACON PROXY OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n // Note: This proxy has a special code path that activates if `calldatasize() == 1`.\n // This code path skips the delegatecall and directly returns the `implementation` address.\n // The returned implementation is guaranteed to be valid if the keccak256 of the\n // proxy's code is equal to `ERC1967_BEACON_PROXY_CODE_HASH`.\n //\n // If you use this proxy, you MUST make sure that the beacon is a\n // valid ERC1967 beacon. This means that the beacon must always return a valid\n // address upon a staticcall to `implementation()`, given sufficient gas.\n // For performance, the deployment operations and the proxy assumes that the\n // beacon is always valid and will NOT validate it.\n\n /// @dev Deploys a ERC1967I beacon proxy.\n function deployERC1967IBeaconProxy(address beacon) internal returns (address instance) {\n instance = deployERC1967IBeaconProxy(0, beacon);\n }\n\n /// @dev Deploys a ERC1967I beacon proxy.\n /// Deposits `value` ETH during deployment.\n function deployERC1967IBeaconProxy(uint256 value, address beacon)\n internal\n returns (address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n /**\n * ---------------------------------------------------------------------------------+\n * CREATION (34 bytes) |\n * ---------------------------------------------------------------------------------|\n * Opcode | Mnemonic | Stack | Memory |\n * ---------------------------------------------------------------------------------|\n * 60 runSize | PUSH1 runSize | r | |\n * 3d | RETURNDATASIZE | 0 r | |\n * 81 | DUP2 | r 0 r | |\n * 60 offset | PUSH1 offset | o r 0 r | |\n * 3d | RETURNDATASIZE | 0 o r 0 r | |\n * 39 | CODECOPY | 0 r | [0..runSize): runtime code |\n * 73 beac | PUSH20 beac | beac 0 r | [0..runSize): runtime code |\n * 60 slotPos | PUSH1 slotPos | slotPos beac 0 r | [0..runSize): runtime code |\n * 51 | MLOAD | slot beac 0 r | [0..runSize): runtime code |\n * 55 | SSTORE | 0 r | [0..runSize): runtime code |\n * f3 | RETURN | | [0..runSize): runtime code |\n * ---------------------------------------------------------------------------------|\n * RUNTIME (87 bytes) |\n * ---------------------------------------------------------------------------------|\n * Opcode | Mnemonic | Stack | Memory |\n * ---------------------------------------------------------------------------------|\n * |\n * ::: copy calldata to memory :::::::::::::::::::::::::::::::::::::::::::::::::::: |\n * 36 | CALLDATASIZE | cds | |\n * 3d | RETURNDATASIZE | 0 cds | |\n * 3d | RETURNDATASIZE | 0 0 cds | |\n * 37 | CALLDATACOPY | | [0..calldatasize): calldata |\n * |\n * ::: delegatecall to implementation ::::::::::::::::::::::::::::::::::::::::::::: |\n * 3d | RETURNDATASIZE | 0 | |\n * 3d | RETURNDATASIZE | 0 0 | |\n * 36 | CALLDATASIZE | cds 0 0 | [0..calldatasize): calldata |\n * 3d | RETURNDATASIZE | 0 cds 0 0 | [0..calldatasize): calldata |\n * |\n * ~~~~~~~ beacon staticcall sub procedure ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |\n * 60 0x20 | PUSH1 0x20 | 32 | |\n * 36 | CALLDATASIZE | cds 32 | |\n * 60 0x04 | PUSH1 0x04 | 4 cds 32 | |\n * 36 | CALLDATASIZE | cds 4 cds 32 | |\n * 63 0x5c60da1b | PUSH4 0x5c60da1b | 0x5c60da1b cds 4 cds 32 | |\n * 60 0xe0 | PUSH1 0xe0 | 224 0x5c60da1b cds 4 cds 32 | |\n * 1b | SHL | sel cds 4 cds 32 | |\n * 36 | CALLDATASIZE | cds sel cds 4 cds 32 | |\n * 52 | MSTORE | cds 4 cds 32 | sel |\n * 7f slot | PUSH32 slot | s cds 4 cds 32 | sel |\n * 54 | SLOAD | beac cds 4 cds 32 | sel |\n * 5a | GAS | g beac cds 4 cds 32 | sel |\n * fa | STATICCALL | succ | impl |\n * ~~~~~~ check calldatasize ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |\n * 36 | CALLDATASIZE | cds succ | |\n * 14 | EQ | | impl |\n * 60 0x52 | PUSH1 0x52 | | impl |\n * 57 | JUMPI | | impl |\n * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |\n * 36 | CALLDATASIZE | cds | impl |\n * 51 | MLOAD | impl | impl |\n * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |\n * 5a | GAS | g impl 0 cds 0 0 | [0..calldatasize): calldata |\n * f4 | DELEGATECALL | succ | [0..calldatasize): calldata |\n * |\n * ::: copy returndata to memory :::::::::::::::::::::::::::::::::::::::::::::::::: |\n * 3d | RETURNDATASIZE | rds succ | [0..calldatasize): calldata |\n * 60 0x00 | PUSH1 0x00 | 0 rds succ | [0..calldatasize): calldata |\n * 60 0x01 | PUSH1 0x01 | 1 0 rds succ | [0..calldatasize): calldata |\n * 3e | RETURNDATACOPY | succ | [1..returndatasize): returndata |\n * |\n * ::: branch on delegatecall status :::::::::::::::::::::::::::::::::::::::::::::: |\n * 60 0x52 | PUSH1 0x52 | dest succ | [1..returndatasize): returndata |\n * 57 | JUMPI | | [1..returndatasize): returndata |\n * |\n * ::: delegatecall failed, revert :::::::::::::::::::::::::::::::::::::::::::::::: |\n * 3d | RETURNDATASIZE | rds | [1..returndatasize): returndata |\n * 60 0x01 | PUSH1 0x01 | 1 rds | [1..returndatasize): returndata |\n * fd | REVERT | | [1..returndatasize): returndata |\n * |\n * ::: delegatecall succeeded, return ::::::::::::::::::::::::::::::::::::::::::::: |\n * 5b | JUMPDEST | | [1..returndatasize): returndata |\n * 3d | RETURNDATASIZE | rds | [1..returndatasize): returndata |\n * 60 0x01 | PUSH1 0x01 | 1 rds | [1..returndatasize): returndata |\n * f3 | RETURN | | [1..returndatasize): returndata |\n * ---------------------------------------------------------------------------------+\n */\n let m := mload(0x40) // Cache the free memory pointer.\n mstore(0x60, 0x3d50545afa361460525736515af43d600060013e6052573d6001fd5b3d6001f3)\n mstore(0x40, 0x527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b3513)\n mstore(0x20, 0x60195155f3363d3d373d3d363d602036600436635c60da1b60e01b36)\n mstore(0x04, or(shl(160, 0x60573d8160223d3973), shr(96, shl(96, beacon))))\n instance := create(value, 0x07, 0x79)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n mstore(0x40, m) // Restore the free memory pointer.\n mstore(0x60, 0) // Restore the zero slot.\n }\n }\n\n /// @dev Deploys a deterministic ERC1967I beacon proxy with `salt`.\n function deployDeterministicERC1967IBeaconProxy(address beacon, bytes32 salt)\n internal\n returns (address instance)\n {\n instance = deployDeterministicERC1967IBeaconProxy(0, beacon, salt);\n }\n\n /// @dev Deploys a deterministic ERC1967I beacon proxy with `salt`.\n /// Deposits `value` ETH during deployment.\n function deployDeterministicERC1967IBeaconProxy(uint256 value, address beacon, bytes32 salt)\n internal\n returns (address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40) // Cache the free memory pointer.\n mstore(0x60, 0x3d50545afa361460525736515af43d600060013e6052573d6001fd5b3d6001f3)\n mstore(0x40, 0x527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b3513)\n mstore(0x20, 0x60195155f3363d3d373d3d363d602036600436635c60da1b60e01b36)\n mstore(0x04, or(shl(160, 0x60573d8160223d3973), shr(96, shl(96, beacon))))\n instance := create2(value, 0x07, 0x79, salt)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n mstore(0x40, m) // Restore the free memory pointer.\n mstore(0x60, 0) // Restore the zero slot.\n }\n }\n\n /// @dev Creates a deterministic ERC1967I beacon proxy with `salt`.\n /// Note: This method is intended for use in ERC4337 factories,\n /// which are expected to NOT revert if the proxy is already deployed.\n function createDeterministicERC1967IBeaconProxy(address beacon, bytes32 salt)\n internal\n returns (bool alreadyDeployed, address instance)\n {\n return createDeterministicERC1967IBeaconProxy(0, beacon, salt);\n }\n\n /// @dev Creates a deterministic ERC1967I beacon proxy with `salt`.\n /// Deposits `value` ETH during deployment.\n /// Note: This method is intended for use in ERC4337 factories,\n /// which are expected to NOT revert if the proxy is already deployed.\n function createDeterministicERC1967IBeaconProxy(uint256 value, address beacon, bytes32 salt)\n internal\n returns (bool alreadyDeployed, address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40) // Cache the free memory pointer.\n mstore(0x60, 0x3d50545afa361460525736515af43d600060013e6052573d6001fd5b3d6001f3)\n mstore(0x40, 0x527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b3513)\n mstore(0x20, 0x60195155f3363d3d373d3d363d602036600436635c60da1b60e01b36)\n mstore(0x04, or(shl(160, 0x60573d8160223d3973), shr(96, shl(96, beacon))))\n // Compute and store the bytecode hash.\n mstore(add(m, 0x35), keccak256(0x07, 0x79))\n mstore(m, shl(88, address()))\n mstore8(m, 0xff) // Write the prefix.\n mstore(add(m, 0x15), salt)\n instance := keccak256(m, 0x55)\n for {} 1 {} {\n if iszero(extcodesize(instance)) {\n instance := create2(value, 0x07, 0x79, salt)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n break\n }\n alreadyDeployed := 1\n if iszero(value) { break }\n if iszero(call(gas(), instance, value, codesize(), 0x00, codesize(), 0x00)) {\n mstore(0x00, 0xb12d13eb) // `ETHTransferFailed()`.\n revert(0x1c, 0x04)\n }\n break\n }\n mstore(0x40, m) // Restore the free memory pointer.\n mstore(0x60, 0) // Restore the zero slot.\n }\n }\n\n /// @dev Returns the initialization code of the ERC1967I beacon proxy.\n function initCodeERC1967IBeaconProxy(address beacon) internal pure returns (bytes memory c) {\n /// @solidity memory-safe-assembly\n assembly {\n c := mload(0x40)\n mstore(add(c, 0x79), 0x3d50545afa361460525736515af43d600060013e6052573d6001fd5b3d6001f3)\n mstore(add(c, 0x59), 0x527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b3513)\n mstore(add(c, 0x39), 0x60195155f3363d3d373d3d363d602036600436635c60da1b60e01b36)\n mstore(add(c, 0x1d), beacon)\n mstore(add(c, 0x09), 0x60573d8160223d3973)\n mstore(add(c, 0x99), 0)\n mstore(c, 0x79) // Store the length.\n mstore(0x40, add(c, 0xa0)) // Allocate memory.\n }\n }\n\n /// @dev Returns the initialization code hash of the ERC1967I beacon proxy.\n function initCodeHashERC1967IBeaconProxy(address beacon) internal pure returns (bytes32 hash) {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40) // Cache the free memory pointer.\n mstore(0x60, 0x3d50545afa361460525736515af43d600060013e6052573d6001fd5b3d6001f3)\n mstore(0x40, 0x527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b3513)\n mstore(0x20, 0x60195155f3363d3d373d3d363d602036600436635c60da1b60e01b36)\n mstore(0x04, or(shl(160, 0x60573d8160223d3973), shr(96, shl(96, beacon))))\n hash := keccak256(0x07, 0x79)\n mstore(0x40, m) // Restore the free memory pointer.\n mstore(0x60, 0) // Restore the zero slot.\n }\n }\n\n /// @dev Returns the address of the ERC1967I beacon proxy, with `salt` by `deployer`.\n /// Note: The returned result has dirty upper 96 bits. Please clean if used in assembly.\n function predictDeterministicAddressERC1967IBeaconProxy(\n address beacon,\n bytes32 salt,\n address deployer\n ) internal pure returns (address predicted) {\n bytes32 hash = initCodeHashERC1967IBeaconProxy(beacon);\n predicted = predictDeterministicAddress(hash, salt, deployer);\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* ERC1967I BEACON PROXY WITH IMMUTABLE ARGS OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Deploys a ERC1967I beacon proxy with `args.\n function deployERC1967IBeaconProxy(address beacon, bytes memory args)\n internal\n returns (address instance)\n {\n instance = deployERC1967IBeaconProxy(0, beacon, args);\n }\n\n /// @dev Deploys a ERC1967I beacon proxy with `args.\n /// Deposits `value` ETH during deployment.\n function deployERC1967IBeaconProxy(uint256 value, address beacon, bytes memory args)\n internal\n returns (address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40) // Cache the free memory pointer.\n let n := mload(args)\n pop(staticcall(gas(), 4, add(args, 0x20), n, add(m, 0x90), n))\n mstore(add(m, 0x70), 0x3d50545afa361460525736515af43d600060013e6052573d6001fd5b3d6001f3)\n mstore(add(m, 0x50), 0x527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b3513)\n mstore(add(m, 0x30), 0x60195155f3363d3d373d3d363d602036600436635c60da1b60e01b36)\n mstore(add(m, 0x14), beacon)\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x57 = 0xffa8`.\n mstore(add(m, gt(n, 0xffa8)), add(0xfe6100573d8160233d3973, shl(56, n)))\n instance := create(value, add(m, 0x16), add(n, 0x7a))\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n }\n }\n\n /// @dev Deploys a deterministic ERC1967I beacon proxy with `args` and `salt`.\n function deployDeterministicERC1967IBeaconProxy(address beacon, bytes memory args, bytes32 salt)\n internal\n returns (address instance)\n {\n instance = deployDeterministicERC1967IBeaconProxy(0, beacon, args, salt);\n }\n\n /// @dev Deploys a deterministic ERC1967I beacon proxy with `args` and `salt`.\n /// Deposits `value` ETH during deployment.\n function deployDeterministicERC1967IBeaconProxy(\n uint256 value,\n address beacon,\n bytes memory args,\n bytes32 salt\n ) internal returns (address instance) {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40) // Cache the free memory pointer.\n let n := mload(args)\n pop(staticcall(gas(), 4, add(args, 0x20), n, add(m, 0x90), n))\n mstore(add(m, 0x70), 0x3d50545afa361460525736515af43d600060013e6052573d6001fd5b3d6001f3)\n mstore(add(m, 0x50), 0x527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b3513)\n mstore(add(m, 0x30), 0x60195155f3363d3d373d3d363d602036600436635c60da1b60e01b36)\n mstore(add(m, 0x14), beacon)\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x57 = 0xffa8`.\n mstore(add(m, gt(n, 0xffa8)), add(0xfe6100573d8160233d3973, shl(56, n)))\n instance := create2(value, add(m, 0x16), add(n, 0x7a), salt)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n }\n }\n\n /// @dev Creates a deterministic ERC1967I beacon proxy with `args` and `salt`.\n /// Note: This method is intended for use in ERC4337 factories,\n /// which are expected to NOT revert if the proxy is already deployed.\n function createDeterministicERC1967IBeaconProxy(address beacon, bytes memory args, bytes32 salt)\n internal\n returns (bool alreadyDeployed, address instance)\n {\n return createDeterministicERC1967IBeaconProxy(0, beacon, args, salt);\n }\n\n /// @dev Creates a deterministic ERC1967I beacon proxy with `args` and `salt`.\n /// Deposits `value` ETH during deployment.\n /// Note: This method is intended for use in ERC4337 factories,\n /// which are expected to NOT revert if the proxy is already deployed.\n function createDeterministicERC1967IBeaconProxy(\n uint256 value,\n address beacon,\n bytes memory args,\n bytes32 salt\n ) internal returns (bool alreadyDeployed, address instance) {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n let n := mload(args)\n pop(staticcall(gas(), 4, add(args, 0x20), n, add(m, 0x90), n))\n mstore(add(m, 0x70), 0x3d50545afa361460525736515af43d600060013e6052573d6001fd5b3d6001f3)\n mstore(add(m, 0x50), 0x527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b3513)\n mstore(add(m, 0x30), 0x60195155f3363d3d373d3d363d602036600436635c60da1b60e01b36)\n mstore(add(m, 0x14), beacon)\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x57 = 0xffa8`.\n mstore(add(m, gt(n, 0xffa8)), add(0xfe6100573d8160233d3973, shl(56, n)))\n // Compute and store the bytecode hash.\n mstore8(0x00, 0xff) // Write the prefix.\n mstore(0x35, keccak256(add(m, 0x16), add(n, 0x7a)))\n mstore(0x01, shl(96, address()))\n mstore(0x15, salt)\n instance := keccak256(0x00, 0x55)\n for {} 1 {} {\n if iszero(extcodesize(instance)) {\n instance := create2(value, add(m, 0x16), add(n, 0x7a), salt)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n break\n }\n alreadyDeployed := 1\n if iszero(value) { break }\n if iszero(call(gas(), instance, value, codesize(), 0x00, codesize(), 0x00)) {\n mstore(0x00, 0xb12d13eb) // `ETHTransferFailed()`.\n revert(0x1c, 0x04)\n }\n break\n }\n mstore(0x35, 0) // Restore the overwritten part of the free memory pointer.\n }\n }\n\n /// @dev Returns the initialization code of the ERC1967I beacon proxy with `args`.\n function initCodeERC1967IBeaconProxy(address beacon, bytes memory args)\n internal\n pure\n returns (bytes memory c)\n {\n /// @solidity memory-safe-assembly\n assembly {\n c := mload(0x40)\n let n := mload(args)\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x57 = 0xffa8`.\n returndatacopy(returndatasize(), returndatasize(), gt(n, 0xffa8))\n for { let i := 0 } lt(i, n) { i := add(i, 0x20) } {\n mstore(add(add(c, 0x9a), i), mload(add(add(args, 0x20), i)))\n }\n mstore(add(c, 0x7a), 0x3d50545afa361460525736515af43d600060013e6052573d6001fd5b3d6001f3)\n mstore(add(c, 0x5a), 0x527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b3513)\n mstore(add(c, 0x3a), 0x60195155f3363d3d373d3d363d602036600436635c60da1b60e01b36)\n mstore(add(c, 0x1e), beacon)\n mstore(add(c, 0x0a), add(0x6100573d8160233d3973, shl(56, n)))\n mstore(add(c, add(n, 0x9a)), 0)\n mstore(c, add(n, 0x7a)) // Store the length.\n mstore(0x40, add(c, add(n, 0xba))) // Allocate memory.\n }\n }\n\n /// @dev Returns the initialization code hash of the ERC1967I beacon proxy with `args`.\n function initCodeHashERC1967IBeaconProxy(address beacon, bytes memory args)\n internal\n pure\n returns (bytes32 hash)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let c := mload(0x40) // Cache the free memory pointer.\n let n := mload(args)\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x57 = 0xffa8`.\n returndatacopy(returndatasize(), returndatasize(), gt(n, 0xffa8))\n for { let i := 0 } lt(i, n) { i := add(i, 0x20) } {\n mstore(add(add(c, 0x90), i), mload(add(add(args, 0x20), i)))\n }\n mstore(add(c, 0x70), 0x3d50545afa361460525736515af43d600060013e6052573d6001fd5b3d6001f3)\n mstore(add(c, 0x50), 0x527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b3513)\n mstore(add(c, 0x30), 0x60195155f3363d3d373d3d363d602036600436635c60da1b60e01b36)\n mstore(add(c, 0x14), beacon)\n mstore(c, add(0x6100573d8160233d3973, shl(56, n)))\n hash := keccak256(add(c, 0x16), add(n, 0x7a))\n }\n }\n\n /// @dev Returns the address of the ERC1967I beacon proxy, with `args` and salt` by `deployer`.\n /// Note: The returned result has dirty upper 96 bits. Please clean if used in assembly.\n function predictDeterministicAddressERC1967IBeaconProxy(\n address beacon,\n bytes memory args,\n bytes32 salt,\n address deployer\n ) internal pure returns (address predicted) {\n bytes32 hash = initCodeHashERC1967IBeaconProxy(beacon, args);\n predicted = predictDeterministicAddress(hash, salt, deployer);\n }\n\n /// @dev Equivalent to `argsOnERC1967IBeaconProxy(instance, start, 2 ** 256 - 1)`.\n function argsOnERC1967IBeaconProxy(address instance)\n internal\n view\n returns (bytes memory args)\n {\n /// @solidity memory-safe-assembly\n assembly {\n args := mload(0x40)\n mstore(args, and(0xffffffffff, sub(extcodesize(instance), 0x57))) // Store the length.\n extcodecopy(instance, add(args, 0x20), 0x57, add(mload(args), 0x20))\n mstore(0x40, add(mload(args), add(args, 0x40))) // Allocate memory.\n }\n }\n\n /// @dev Equivalent to `argsOnERC1967IBeaconProxy(instance, start, 2 ** 256 - 1)`.\n function argsOnERC1967IBeaconProxy(address instance, uint256 start)\n internal\n view\n returns (bytes memory args)\n {\n /// @solidity memory-safe-assembly\n assembly {\n args := mload(0x40)\n let n := and(0xffffffffff, sub(extcodesize(instance), 0x57))\n let l := sub(n, and(0xffffff, mul(lt(start, n), start)))\n extcodecopy(instance, args, add(start, 0x37), add(l, 0x40))\n mstore(args, mul(sub(n, start), lt(start, n))) // Store the length.\n mstore(0x40, add(args, add(0x40, mload(args)))) // Allocate memory.\n }\n }\n\n /// @dev Returns a slice of the immutable arguments on `instance` from `start` to `end`.\n /// `start` and `end` will be clamped to the range `[0, args.length]`.\n /// The `instance` MUST be deployed via the ERC1967I beacon proxy with immutable args functions.\n /// Otherwise, the behavior is undefined.\n /// Out-of-gas reverts if `instance` does not have any code.\n function argsOnERC1967IBeaconProxy(address instance, uint256 start, uint256 end)\n internal\n view\n returns (bytes memory args)\n {\n /// @solidity memory-safe-assembly\n assembly {\n args := mload(0x40)\n if iszero(lt(end, 0xffff)) { end := 0xffff }\n let d := mul(sub(end, start), lt(start, end))\n extcodecopy(instance, args, add(start, 0x37), add(d, 0x20))\n if iszero(and(0xff, mload(add(args, d)))) {\n let n := sub(extcodesize(instance), 0x57)\n returndatacopy(returndatasize(), returndatasize(), shr(40, n))\n d := mul(gt(n, start), sub(d, mul(gt(end, n), sub(end, n))))\n }\n mstore(args, d) // Store the length.\n mstore(add(add(args, 0x20), d), 0) // Zeroize the slot after the bytes.\n mstore(0x40, add(add(args, 0x40), d)) // Allocate memory.\n }\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* OTHER OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Returns `address(0)` if the implementation address cannot be determined.\n function implementationOf(address instance) internal view returns (address result) {\n /// @solidity memory-safe-assembly\n assembly {\n for { extcodecopy(instance, 0x00, 0x00, 0x57) } 1 {} {\n if mload(0x2d) {\n // ERC1967I and ERC1967IBeaconProxy detection.\n if or(\n eq(keccak256(0x00, 0x52), ERC1967I_CODE_HASH),\n eq(keccak256(0x00, 0x57), ERC1967I_BEACON_PROXY_CODE_HASH)\n ) {\n pop(staticcall(gas(), instance, 0x00, 0x01, 0x00, 0x20))\n result := mload(0x0c)\n break\n }\n }\n // 0age clone detection.\n result := mload(0x0b)\n codecopy(0x0b, codesize(), 0x14) // Zeroize the 20 bytes for the address.\n if iszero(xor(keccak256(0x00, 0x2c), CLONE_CODE_HASH)) { break }\n mstore(0x0b, result) // Restore the zeroized memory.\n // CWIA detection.\n result := mload(0x0a)\n codecopy(0x0a, codesize(), 0x14) // Zeroize the 20 bytes for the address.\n if iszero(xor(keccak256(0x00, 0x2d), CWIA_CODE_HASH)) { break }\n mstore(0x0a, result) // Restore the zeroized memory.\n // PUSH0 clone detection.\n result := mload(0x09)\n codecopy(0x09, codesize(), 0x14) // Zeroize the 20 bytes for the address.\n result := shr(xor(keccak256(0x00, 0x2d), PUSH0_CLONE_CODE_HASH), result)\n break\n }\n result := shr(96, result)\n mstore(0x37, 0) // Restore the overwritten part of the free memory pointer.\n }\n }\n\n /// @dev Returns the address when a contract with initialization code hash,\n /// `hash`, is deployed with `salt`, by `deployer`.\n /// Note: The returned result has dirty upper 96 bits. Please clean if used in assembly.\n function predictDeterministicAddress(bytes32 hash, bytes32 salt, address deployer)\n internal\n pure\n returns (address predicted)\n {\n /// @solidity memory-safe-assembly\n assembly {\n // Compute and store the bytecode hash.\n mstore8(0x00, 0xff) // Write the prefix.\n mstore(0x35, hash)\n mstore(0x01, shl(96, deployer))\n mstore(0x15, salt)\n predicted := keccak256(0x00, 0x55)\n mstore(0x35, 0) // Restore the overwritten part of the free memory pointer.\n }\n }\n\n /// @dev Requires that `salt` starts with either the zero address or `by`.\n function checkStartsWith(bytes32 salt, address by) internal pure {\n /// @solidity memory-safe-assembly\n assembly {\n // If the salt does not start with the zero address or `by`.\n if iszero(or(iszero(shr(96, salt)), eq(shr(96, shl(96, by)), shr(96, salt)))) {\n mstore(0x00, 0x0c4549ef) // `SaltDoesNotStartWith()`.\n revert(0x1c, 0x04)\n }\n }\n }\n\n /// @dev Returns the `bytes32` at `offset` in `args`, without any bounds checks.\n /// To load an address, you can use `address(bytes20(argLoad(args, offset)))`.\n function argLoad(bytes memory args, uint256 offset) internal pure returns (bytes32 result) {\n /// @solidity memory-safe-assembly\n assembly {\n result := mload(add(add(args, 0x20), offset))\n }\n }\n}\n" + }, + "solady/utils/LibString.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.4;\n\nimport {LibBytes} from \"./LibBytes.sol\";\n\n/// @notice Library for converting numbers into strings and other string operations.\n/// @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/LibString.sol)\n/// @author Modified from Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/LibString.sol)\n///\n/// @dev Note:\n/// For performance and bytecode compactness, most of the string operations are restricted to\n/// byte strings (7-bit ASCII), except where otherwise specified.\n/// Usage of byte string operations on charsets with runes spanning two or more bytes\n/// can lead to undefined behavior.\nlibrary LibString {\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* STRUCTS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Goated string storage struct that totally MOGs, no cap, fr.\n /// Uses less gas and bytecode than Solidity's native string storage. It's meta af.\n /// Packs length with the first 31 bytes if <255 bytes, so it’s mad tight.\n struct StringStorage {\n bytes32 _spacer;\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* CUSTOM ERRORS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev The length of the output is too small to contain all the hex digits.\n error HexLengthInsufficient();\n\n /// @dev The length of the string is more than 32 bytes.\n error TooBigForSmallString();\n\n /// @dev The input string must be a 7-bit ASCII.\n error StringNot7BitASCII();\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* CONSTANTS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev The constant returned when the `search` is not found in the string.\n uint256 internal constant NOT_FOUND = type(uint256).max;\n\n /// @dev Lookup for '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.\n uint128 internal constant ALPHANUMERIC_7_BIT_ASCII = 0x7fffffe07fffffe03ff000000000000;\n\n /// @dev Lookup for 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.\n uint128 internal constant LETTERS_7_BIT_ASCII = 0x7fffffe07fffffe0000000000000000;\n\n /// @dev Lookup for 'abcdefghijklmnopqrstuvwxyz'.\n uint128 internal constant LOWERCASE_7_BIT_ASCII = 0x7fffffe000000000000000000000000;\n\n /// @dev Lookup for 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.\n uint128 internal constant UPPERCASE_7_BIT_ASCII = 0x7fffffe0000000000000000;\n\n /// @dev Lookup for '0123456789'.\n uint128 internal constant DIGITS_7_BIT_ASCII = 0x3ff000000000000;\n\n /// @dev Lookup for '0123456789abcdefABCDEF'.\n uint128 internal constant HEXDIGITS_7_BIT_ASCII = 0x7e0000007e03ff000000000000;\n\n /// @dev Lookup for '01234567'.\n uint128 internal constant OCTDIGITS_7_BIT_ASCII = 0xff000000000000;\n\n /// @dev Lookup for '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!\"#$%&\\'()*+,-./:;<=>?@[\\\\]^_`{|}~ \\t\\n\\r\\x0b\\x0c'.\n uint128 internal constant PRINTABLE_7_BIT_ASCII = 0x7fffffffffffffffffffffff00003e00;\n\n /// @dev Lookup for '!\"#$%&\\'()*+,-./:;<=>?@[\\\\]^_`{|}~'.\n uint128 internal constant PUNCTUATION_7_BIT_ASCII = 0x78000001f8000001fc00fffe00000000;\n\n /// @dev Lookup for ' \\t\\n\\r\\x0b\\x0c'.\n uint128 internal constant WHITESPACE_7_BIT_ASCII = 0x100003e00;\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* STRING STORAGE OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Sets the value of the string storage `$` to `s`.\n function set(StringStorage storage $, string memory s) internal {\n LibBytes.set(bytesStorage($), bytes(s));\n }\n\n /// @dev Sets the value of the string storage `$` to `s`.\n function setCalldata(StringStorage storage $, string calldata s) internal {\n LibBytes.setCalldata(bytesStorage($), bytes(s));\n }\n\n /// @dev Sets the value of the string storage `$` to the empty string.\n function clear(StringStorage storage $) internal {\n delete $._spacer;\n }\n\n /// @dev Returns whether the value stored is `$` is the empty string \"\".\n function isEmpty(StringStorage storage $) internal view returns (bool) {\n return uint256($._spacer) & 0xff == uint256(0);\n }\n\n /// @dev Returns the length of the value stored in `$`.\n function length(StringStorage storage $) internal view returns (uint256) {\n return LibBytes.length(bytesStorage($));\n }\n\n /// @dev Returns the value stored in `$`.\n function get(StringStorage storage $) internal view returns (string memory) {\n return string(LibBytes.get(bytesStorage($)));\n }\n\n /// @dev Returns the uint8 at index `i`. If out-of-bounds, returns 0.\n function uint8At(StringStorage storage $, uint256 i) internal view returns (uint8) {\n return LibBytes.uint8At(bytesStorage($), i);\n }\n\n /// @dev Helper to cast `$` to a `BytesStorage`.\n function bytesStorage(StringStorage storage $)\n internal\n pure\n returns (LibBytes.BytesStorage storage casted)\n {\n /// @solidity memory-safe-assembly\n assembly {\n casted.slot := $.slot\n }\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* DECIMAL OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Returns the base 10 decimal representation of `value`.\n function toString(uint256 value) internal pure returns (string memory result) {\n /// @solidity memory-safe-assembly\n assembly {\n // The maximum value of a uint256 contains 78 digits (1 byte per digit), but\n // we allocate 0xa0 bytes to keep the free memory pointer 32-byte word aligned.\n // We will need 1 word for the trailing zeros padding, 1 word for the length,\n // and 3 words for a maximum of 78 digits.\n result := add(mload(0x40), 0x80)\n mstore(0x40, add(result, 0x20)) // Allocate memory.\n mstore(result, 0) // Zeroize the slot after the string.\n\n let end := result // Cache the end of the memory to calculate the length later.\n let w := not(0) // Tsk.\n // We write the string from rightmost digit to leftmost digit.\n // The following is essentially a do-while loop that also handles the zero case.\n for { let temp := value } 1 {} {\n result := add(result, w) // `sub(result, 1)`.\n // Store the character to the pointer.\n // The ASCII index of the '0' character is 48.\n mstore8(result, add(48, mod(temp, 10)))\n temp := div(temp, 10) // Keep dividing `temp` until zero.\n if iszero(temp) { break }\n }\n let n := sub(end, result)\n result := sub(result, 0x20) // Move the pointer 32 bytes back to make room for the length.\n mstore(result, n) // Store the length.\n }\n }\n\n /// @dev Returns the base 10 decimal representation of `value`.\n function toString(int256 value) internal pure returns (string memory result) {\n if (value >= 0) return toString(uint256(value));\n unchecked {\n result = toString(~uint256(value) + 1);\n }\n /// @solidity memory-safe-assembly\n assembly {\n // We still have some spare memory space on the left,\n // as we have allocated 3 words (96 bytes) for up to 78 digits.\n let n := mload(result) // Load the string length.\n mstore(result, 0x2d) // Store the '-' character.\n result := sub(result, 1) // Move back the string pointer by a byte.\n mstore(result, add(n, 1)) // Update the string length.\n }\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* HEXADECIMAL OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Returns the hexadecimal representation of `value`,\n /// left-padded to an input length of `byteCount` bytes.\n /// The output is prefixed with \"0x\" encoded using 2 hexadecimal digits per byte,\n /// giving a total length of `byteCount * 2 + 2` bytes.\n /// Reverts if `byteCount` is too small for the output to contain all the digits.\n function toHexString(uint256 value, uint256 byteCount)\n internal\n pure\n returns (string memory result)\n {\n result = toHexStringNoPrefix(value, byteCount);\n /// @solidity memory-safe-assembly\n assembly {\n let n := add(mload(result), 2) // Compute the length.\n mstore(result, 0x3078) // Store the \"0x\" prefix.\n result := sub(result, 2) // Move the pointer.\n mstore(result, n) // Store the length.\n }\n }\n\n /// @dev Returns the hexadecimal representation of `value`,\n /// left-padded to an input length of `byteCount` bytes.\n /// The output is not prefixed with \"0x\" and is encoded using 2 hexadecimal digits per byte,\n /// giving a total length of `byteCount * 2` bytes.\n /// Reverts if `byteCount` is too small for the output to contain all the digits.\n function toHexStringNoPrefix(uint256 value, uint256 byteCount)\n internal\n pure\n returns (string memory result)\n {\n /// @solidity memory-safe-assembly\n assembly {\n // We need 0x20 bytes for the trailing zeros padding, `byteCount * 2` bytes\n // for the digits, 0x02 bytes for the prefix, and 0x20 bytes for the length.\n // We add 0x20 to the total and round down to a multiple of 0x20.\n // (0x20 + 0x20 + 0x02 + 0x20) = 0x62.\n result := add(mload(0x40), and(add(shl(1, byteCount), 0x42), not(0x1f)))\n mstore(0x40, add(result, 0x20)) // Allocate memory.\n mstore(result, 0) // Zeroize the slot after the string.\n\n let end := result // Cache the end to calculate the length later.\n // Store \"0123456789abcdef\" in scratch space.\n mstore(0x0f, 0x30313233343536373839616263646566)\n\n let start := sub(result, add(byteCount, byteCount))\n let w := not(1) // Tsk.\n let temp := value\n // We write the string from rightmost digit to leftmost digit.\n // The following is essentially a do-while loop that also handles the zero case.\n for {} 1 {} {\n result := add(result, w) // `sub(result, 2)`.\n mstore8(add(result, 1), mload(and(temp, 15)))\n mstore8(result, mload(and(shr(4, temp), 15)))\n temp := shr(8, temp)\n if iszero(xor(result, start)) { break }\n }\n if temp {\n mstore(0x00, 0x2194895a) // `HexLengthInsufficient()`.\n revert(0x1c, 0x04)\n }\n let n := sub(end, result)\n result := sub(result, 0x20)\n mstore(result, n) // Store the length.\n }\n }\n\n /// @dev Returns the hexadecimal representation of `value`.\n /// The output is prefixed with \"0x\" and encoded using 2 hexadecimal digits per byte.\n /// As address are 20 bytes long, the output will left-padded to have\n /// a length of `20 * 2 + 2` bytes.\n function toHexString(uint256 value) internal pure returns (string memory result) {\n result = toHexStringNoPrefix(value);\n /// @solidity memory-safe-assembly\n assembly {\n let n := add(mload(result), 2) // Compute the length.\n mstore(result, 0x3078) // Store the \"0x\" prefix.\n result := sub(result, 2) // Move the pointer.\n mstore(result, n) // Store the length.\n }\n }\n\n /// @dev Returns the hexadecimal representation of `value`.\n /// The output is prefixed with \"0x\".\n /// The output excludes leading \"0\" from the `toHexString` output.\n /// `0x00: \"0x0\", 0x01: \"0x1\", 0x12: \"0x12\", 0x123: \"0x123\"`.\n function toMinimalHexString(uint256 value) internal pure returns (string memory result) {\n result = toHexStringNoPrefix(value);\n /// @solidity memory-safe-assembly\n assembly {\n let o := eq(byte(0, mload(add(result, 0x20))), 0x30) // Whether leading zero is present.\n let n := add(mload(result), 2) // Compute the length.\n mstore(add(result, o), 0x3078) // Store the \"0x\" prefix, accounting for leading zero.\n result := sub(add(result, o), 2) // Move the pointer, accounting for leading zero.\n mstore(result, sub(n, o)) // Store the length, accounting for leading zero.\n }\n }\n\n /// @dev Returns the hexadecimal representation of `value`.\n /// The output excludes leading \"0\" from the `toHexStringNoPrefix` output.\n /// `0x00: \"0\", 0x01: \"1\", 0x12: \"12\", 0x123: \"123\"`.\n function toMinimalHexStringNoPrefix(uint256 value)\n internal\n pure\n returns (string memory result)\n {\n result = toHexStringNoPrefix(value);\n /// @solidity memory-safe-assembly\n assembly {\n let o := eq(byte(0, mload(add(result, 0x20))), 0x30) // Whether leading zero is present.\n let n := mload(result) // Get the length.\n result := add(result, o) // Move the pointer, accounting for leading zero.\n mstore(result, sub(n, o)) // Store the length, accounting for leading zero.\n }\n }\n\n /// @dev Returns the hexadecimal representation of `value`.\n /// The output is encoded using 2 hexadecimal digits per byte.\n /// As address are 20 bytes long, the output will left-padded to have\n /// a length of `20 * 2` bytes.\n function toHexStringNoPrefix(uint256 value) internal pure returns (string memory result) {\n /// @solidity memory-safe-assembly\n assembly {\n // We need 0x20 bytes for the trailing zeros padding, 0x20 bytes for the length,\n // 0x02 bytes for the prefix, and 0x40 bytes for the digits.\n // The next multiple of 0x20 above (0x20 + 0x20 + 0x02 + 0x40) is 0xa0.\n result := add(mload(0x40), 0x80)\n mstore(0x40, add(result, 0x20)) // Allocate memory.\n mstore(result, 0) // Zeroize the slot after the string.\n\n let end := result // Cache the end to calculate the length later.\n mstore(0x0f, 0x30313233343536373839616263646566) // Store the \"0123456789abcdef\" lookup.\n\n let w := not(1) // Tsk.\n // We write the string from rightmost digit to leftmost digit.\n // The following is essentially a do-while loop that also handles the zero case.\n for { let temp := value } 1 {} {\n result := add(result, w) // `sub(result, 2)`.\n mstore8(add(result, 1), mload(and(temp, 15)))\n mstore8(result, mload(and(shr(4, temp), 15)))\n temp := shr(8, temp)\n if iszero(temp) { break }\n }\n let n := sub(end, result)\n result := sub(result, 0x20)\n mstore(result, n) // Store the length.\n }\n }\n\n /// @dev Returns the hexadecimal representation of `value`.\n /// The output is prefixed with \"0x\", encoded using 2 hexadecimal digits per byte,\n /// and the alphabets are capitalized conditionally according to\n /// https://eips.ethereum.org/EIPS/eip-55\n function toHexStringChecksummed(address value) internal pure returns (string memory result) {\n result = toHexString(value);\n /// @solidity memory-safe-assembly\n assembly {\n let mask := shl(6, div(not(0), 255)) // `0b010000000100000000 ...`\n let o := add(result, 0x22)\n let hashed := and(keccak256(o, 40), mul(34, mask)) // `0b10001000 ... `\n let t := shl(240, 136) // `0b10001000 << 240`\n for { let i := 0 } 1 {} {\n mstore(add(i, i), mul(t, byte(i, hashed)))\n i := add(i, 1)\n if eq(i, 20) { break }\n }\n mstore(o, xor(mload(o), shr(1, and(mload(0x00), and(mload(o), mask)))))\n o := add(o, 0x20)\n mstore(o, xor(mload(o), shr(1, and(mload(0x20), and(mload(o), mask)))))\n }\n }\n\n /// @dev Returns the hexadecimal representation of `value`.\n /// The output is prefixed with \"0x\" and encoded using 2 hexadecimal digits per byte.\n function toHexString(address value) internal pure returns (string memory result) {\n result = toHexStringNoPrefix(value);\n /// @solidity memory-safe-assembly\n assembly {\n let n := add(mload(result), 2) // Compute the length.\n mstore(result, 0x3078) // Store the \"0x\" prefix.\n result := sub(result, 2) // Move the pointer.\n mstore(result, n) // Store the length.\n }\n }\n\n /// @dev Returns the hexadecimal representation of `value`.\n /// The output is encoded using 2 hexadecimal digits per byte.\n function toHexStringNoPrefix(address value) internal pure returns (string memory result) {\n /// @solidity memory-safe-assembly\n assembly {\n result := mload(0x40)\n // Allocate memory.\n // We need 0x20 bytes for the trailing zeros padding, 0x20 bytes for the length,\n // 0x02 bytes for the prefix, and 0x28 bytes for the digits.\n // The next multiple of 0x20 above (0x20 + 0x20 + 0x02 + 0x28) is 0x80.\n mstore(0x40, add(result, 0x80))\n mstore(0x0f, 0x30313233343536373839616263646566) // Store the \"0123456789abcdef\" lookup.\n\n result := add(result, 2)\n mstore(result, 40) // Store the length.\n let o := add(result, 0x20)\n mstore(add(o, 40), 0) // Zeroize the slot after the string.\n value := shl(96, value)\n // We write the string from rightmost digit to leftmost digit.\n // The following is essentially a do-while loop that also handles the zero case.\n for { let i := 0 } 1 {} {\n let p := add(o, add(i, i))\n let temp := byte(i, value)\n mstore8(add(p, 1), mload(and(temp, 15)))\n mstore8(p, mload(shr(4, temp)))\n i := add(i, 1)\n if eq(i, 20) { break }\n }\n }\n }\n\n /// @dev Returns the hex encoded string from the raw bytes.\n /// The output is encoded using 2 hexadecimal digits per byte.\n function toHexString(bytes memory raw) internal pure returns (string memory result) {\n result = toHexStringNoPrefix(raw);\n /// @solidity memory-safe-assembly\n assembly {\n let n := add(mload(result), 2) // Compute the length.\n mstore(result, 0x3078) // Store the \"0x\" prefix.\n result := sub(result, 2) // Move the pointer.\n mstore(result, n) // Store the length.\n }\n }\n\n /// @dev Returns the hex encoded string from the raw bytes.\n /// The output is encoded using 2 hexadecimal digits per byte.\n function toHexStringNoPrefix(bytes memory raw) internal pure returns (string memory result) {\n /// @solidity memory-safe-assembly\n assembly {\n let n := mload(raw)\n result := add(mload(0x40), 2) // Skip 2 bytes for the optional prefix.\n mstore(result, add(n, n)) // Store the length of the output.\n\n mstore(0x0f, 0x30313233343536373839616263646566) // Store the \"0123456789abcdef\" lookup.\n let o := add(result, 0x20)\n let end := add(raw, n)\n for {} iszero(eq(raw, end)) {} {\n raw := add(raw, 1)\n mstore8(add(o, 1), mload(and(mload(raw), 15)))\n mstore8(o, mload(and(shr(4, mload(raw)), 15)))\n o := add(o, 2)\n }\n mstore(o, 0) // Zeroize the slot after the string.\n mstore(0x40, add(o, 0x20)) // Allocate memory.\n }\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* RUNE STRING OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Returns the number of UTF characters in the string.\n function runeCount(string memory s) internal pure returns (uint256 result) {\n /// @solidity memory-safe-assembly\n assembly {\n if mload(s) {\n mstore(0x00, div(not(0), 255))\n mstore(0x20, 0x0202020202020202020202020202020202020202020202020303030304040506)\n let o := add(s, 0x20)\n let end := add(o, mload(s))\n for { result := 1 } 1 { result := add(result, 1) } {\n o := add(o, byte(0, mload(shr(250, mload(o)))))\n if iszero(lt(o, end)) { break }\n }\n }\n }\n }\n\n /// @dev Returns if this string is a 7-bit ASCII string.\n /// (i.e. all characters codes are in [0..127])\n function is7BitASCII(string memory s) internal pure returns (bool result) {\n /// @solidity memory-safe-assembly\n assembly {\n result := 1\n let mask := shl(7, div(not(0), 255))\n let n := mload(s)\n if n {\n let o := add(s, 0x20)\n let end := add(o, n)\n let last := mload(end)\n mstore(end, 0)\n for {} 1 {} {\n if and(mask, mload(o)) {\n result := 0\n break\n }\n o := add(o, 0x20)\n if iszero(lt(o, end)) { break }\n }\n mstore(end, last)\n }\n }\n }\n\n /// @dev Returns if this string is a 7-bit ASCII string,\n /// AND all characters are in the `allowed` lookup.\n /// Note: If `s` is empty, returns true regardless of `allowed`.\n function is7BitASCII(string memory s, uint128 allowed) internal pure returns (bool result) {\n /// @solidity memory-safe-assembly\n assembly {\n result := 1\n if mload(s) {\n let allowed_ := shr(128, shl(128, allowed))\n let o := add(s, 0x20)\n for { let end := add(o, mload(s)) } 1 {} {\n result := and(result, shr(byte(0, mload(o)), allowed_))\n o := add(o, 1)\n if iszero(and(result, lt(o, end))) { break }\n }\n }\n }\n }\n\n /// @dev Converts the bytes in the 7-bit ASCII string `s` to\n /// an allowed lookup for use in `is7BitASCII(s, allowed)`.\n /// To save runtime gas, you can cache the result in an immutable variable.\n function to7BitASCIIAllowedLookup(string memory s) internal pure returns (uint128 result) {\n /// @solidity memory-safe-assembly\n assembly {\n if mload(s) {\n let o := add(s, 0x20)\n for { let end := add(o, mload(s)) } 1 {} {\n result := or(result, shl(byte(0, mload(o)), 1))\n o := add(o, 1)\n if iszero(lt(o, end)) { break }\n }\n if shr(128, result) {\n mstore(0x00, 0xc9807e0d) // `StringNot7BitASCII()`.\n revert(0x1c, 0x04)\n }\n }\n }\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* BYTE STRING OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n // For performance and bytecode compactness, byte string operations are restricted\n // to 7-bit ASCII strings. All offsets are byte offsets, not UTF character offsets.\n // Usage of byte string operations on charsets with runes spanning two or more bytes\n // can lead to undefined behavior.\n\n /// @dev Returns `subject` all occurrences of `needle` replaced with `replacement`.\n function replace(string memory subject, string memory needle, string memory replacement)\n internal\n pure\n returns (string memory)\n {\n return string(LibBytes.replace(bytes(subject), bytes(needle), bytes(replacement)));\n }\n\n /// @dev Returns the byte index of the first location of `needle` in `subject`,\n /// needleing from left to right, starting from `from`.\n /// Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `needle` is not found.\n function indexOf(string memory subject, string memory needle, uint256 from)\n internal\n pure\n returns (uint256)\n {\n return LibBytes.indexOf(bytes(subject), bytes(needle), from);\n }\n\n /// @dev Returns the byte index of the first location of `needle` in `subject`,\n /// needleing from left to right.\n /// Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `needle` is not found.\n function indexOf(string memory subject, string memory needle) internal pure returns (uint256) {\n return LibBytes.indexOf(bytes(subject), bytes(needle), 0);\n }\n\n /// @dev Returns the byte index of the first location of `needle` in `subject`,\n /// needleing from right to left, starting from `from`.\n /// Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `needle` is not found.\n function lastIndexOf(string memory subject, string memory needle, uint256 from)\n internal\n pure\n returns (uint256)\n {\n return LibBytes.lastIndexOf(bytes(subject), bytes(needle), from);\n }\n\n /// @dev Returns the byte index of the first location of `needle` in `subject`,\n /// needleing from right to left.\n /// Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `needle` is not found.\n function lastIndexOf(string memory subject, string memory needle)\n internal\n pure\n returns (uint256)\n {\n return LibBytes.lastIndexOf(bytes(subject), bytes(needle), type(uint256).max);\n }\n\n /// @dev Returns true if `needle` is found in `subject`, false otherwise.\n function contains(string memory subject, string memory needle) internal pure returns (bool) {\n return LibBytes.contains(bytes(subject), bytes(needle));\n }\n\n /// @dev Returns whether `subject` starts with `needle`.\n function startsWith(string memory subject, string memory needle) internal pure returns (bool) {\n return LibBytes.startsWith(bytes(subject), bytes(needle));\n }\n\n /// @dev Returns whether `subject` ends with `needle`.\n function endsWith(string memory subject, string memory needle) internal pure returns (bool) {\n return LibBytes.endsWith(bytes(subject), bytes(needle));\n }\n\n /// @dev Returns `subject` repeated `times`.\n function repeat(string memory subject, uint256 times) internal pure returns (string memory) {\n return string(LibBytes.repeat(bytes(subject), times));\n }\n\n /// @dev Returns a copy of `subject` sliced from `start` to `end` (exclusive).\n /// `start` and `end` are byte offsets.\n function slice(string memory subject, uint256 start, uint256 end)\n internal\n pure\n returns (string memory)\n {\n return string(LibBytes.slice(bytes(subject), start, end));\n }\n\n /// @dev Returns a copy of `subject` sliced from `start` to the end of the string.\n /// `start` is a byte offset.\n function slice(string memory subject, uint256 start) internal pure returns (string memory) {\n return string(LibBytes.slice(bytes(subject), start, type(uint256).max));\n }\n\n /// @dev Returns all the indices of `needle` in `subject`.\n /// The indices are byte offsets.\n function indicesOf(string memory subject, string memory needle)\n internal\n pure\n returns (uint256[] memory)\n {\n return LibBytes.indicesOf(bytes(subject), bytes(needle));\n }\n\n /// @dev Returns an arrays of strings based on the `delimiter` inside of the `subject` string.\n function split(string memory subject, string memory delimiter)\n internal\n pure\n returns (string[] memory result)\n {\n bytes[] memory a = LibBytes.split(bytes(subject), bytes(delimiter));\n /// @solidity memory-safe-assembly\n assembly {\n result := a\n }\n }\n\n /// @dev Returns a concatenated string of `a` and `b`.\n /// Cheaper than `string.concat()` and does not de-align the free memory pointer.\n function concat(string memory a, string memory b) internal pure returns (string memory) {\n return string(LibBytes.concat(bytes(a), bytes(b)));\n }\n\n /// @dev Returns a copy of the string in either lowercase or UPPERCASE.\n /// WARNING! This function is only compatible with 7-bit ASCII strings.\n function toCase(string memory subject, bool toUpper)\n internal\n pure\n returns (string memory result)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let n := mload(subject)\n if n {\n result := mload(0x40)\n let o := add(result, 0x20)\n let d := sub(subject, result)\n let flags := shl(add(70, shl(5, toUpper)), 0x3ffffff)\n for { let end := add(o, n) } 1 {} {\n let b := byte(0, mload(add(d, o)))\n mstore8(o, xor(and(shr(b, flags), 0x20), b))\n o := add(o, 1)\n if eq(o, end) { break }\n }\n mstore(result, n) // Store the length.\n mstore(o, 0) // Zeroize the slot after the string.\n mstore(0x40, add(o, 0x20)) // Allocate memory.\n }\n }\n }\n\n /// @dev Returns a string from a small bytes32 string.\n /// `s` must be null-terminated, or behavior will be undefined.\n function fromSmallString(bytes32 s) internal pure returns (string memory result) {\n /// @solidity memory-safe-assembly\n assembly {\n result := mload(0x40)\n let n := 0\n for {} byte(n, s) { n := add(n, 1) } {} // Scan for '\\0'.\n mstore(result, n) // Store the length.\n let o := add(result, 0x20)\n mstore(o, s) // Store the bytes of the string.\n mstore(add(o, n), 0) // Zeroize the slot after the string.\n mstore(0x40, add(result, 0x40)) // Allocate memory.\n }\n }\n\n /// @dev Returns the small string, with all bytes after the first null byte zeroized.\n function normalizeSmallString(bytes32 s) internal pure returns (bytes32 result) {\n /// @solidity memory-safe-assembly\n assembly {\n for {} byte(result, s) { result := add(result, 1) } {} // Scan for '\\0'.\n mstore(0x00, s)\n mstore(result, 0x00)\n result := mload(0x00)\n }\n }\n\n /// @dev Returns the string as a normalized null-terminated small string.\n function toSmallString(string memory s) internal pure returns (bytes32 result) {\n /// @solidity memory-safe-assembly\n assembly {\n result := mload(s)\n if iszero(lt(result, 33)) {\n mstore(0x00, 0xec92f9a3) // `TooBigForSmallString()`.\n revert(0x1c, 0x04)\n }\n result := shl(shl(3, sub(32, result)), mload(add(s, result)))\n }\n }\n\n /// @dev Returns a lowercased copy of the string.\n /// WARNING! This function is only compatible with 7-bit ASCII strings.\n function lower(string memory subject) internal pure returns (string memory result) {\n result = toCase(subject, false);\n }\n\n /// @dev Returns an UPPERCASED copy of the string.\n /// WARNING! This function is only compatible with 7-bit ASCII strings.\n function upper(string memory subject) internal pure returns (string memory result) {\n result = toCase(subject, true);\n }\n\n /// @dev Escapes the string to be used within HTML tags.\n function escapeHTML(string memory s) internal pure returns (string memory result) {\n /// @solidity memory-safe-assembly\n assembly {\n result := mload(0x40)\n let end := add(s, mload(s))\n let o := add(result, 0x20)\n // Store the bytes of the packed offsets and strides into the scratch space.\n // `packed = (stride << 5) | offset`. Max offset is 20. Max stride is 6.\n mstore(0x1f, 0x900094)\n mstore(0x08, 0xc0000000a6ab)\n // Store \""&'<>\" into the scratch space.\n mstore(0x00, shl(64, 0x2671756f743b26616d703b262333393b266c743b2667743b))\n for {} iszero(eq(s, end)) {} {\n s := add(s, 1)\n let c := and(mload(s), 0xff)\n // Not in `[\"\\\"\",\"'\",\"&\",\"<\",\">\"]`.\n if iszero(and(shl(c, 1), 0x500000c400000000)) {\n mstore8(o, c)\n o := add(o, 1)\n continue\n }\n let t := shr(248, mload(c))\n mstore(o, mload(and(t, 0x1f)))\n o := add(o, shr(5, t))\n }\n mstore(o, 0) // Zeroize the slot after the string.\n mstore(result, sub(o, add(result, 0x20))) // Store the length.\n mstore(0x40, add(o, 0x20)) // Allocate memory.\n }\n }\n\n /// @dev Escapes the string to be used within double-quotes in a JSON.\n /// If `addDoubleQuotes` is true, the result will be enclosed in double-quotes.\n function escapeJSON(string memory s, bool addDoubleQuotes)\n internal\n pure\n returns (string memory result)\n {\n /// @solidity memory-safe-assembly\n assembly {\n result := mload(0x40)\n let o := add(result, 0x20)\n if addDoubleQuotes {\n mstore8(o, 34)\n o := add(1, o)\n }\n // Store \"\\\\u0000\" in scratch space.\n // Store \"0123456789abcdef\" in scratch space.\n // Also, store `{0x08:\"b\", 0x09:\"t\", 0x0a:\"n\", 0x0c:\"f\", 0x0d:\"r\"}`.\n // into the scratch space.\n mstore(0x15, 0x5c75303030303031323334353637383961626364656662746e006672)\n // Bitmask for detecting `[\"\\\"\",\"\\\\\"]`.\n let e := or(shl(0x22, 1), shl(0x5c, 1))\n for { let end := add(s, mload(s)) } iszero(eq(s, end)) {} {\n s := add(s, 1)\n let c := and(mload(s), 0xff)\n if iszero(lt(c, 0x20)) {\n if iszero(and(shl(c, 1), e)) {\n // Not in `[\"\\\"\",\"\\\\\"]`.\n mstore8(o, c)\n o := add(o, 1)\n continue\n }\n mstore8(o, 0x5c) // \"\\\\\".\n mstore8(add(o, 1), c)\n o := add(o, 2)\n continue\n }\n if iszero(and(shl(c, 1), 0x3700)) {\n // Not in `[\"\\b\",\"\\t\",\"\\n\",\"\\f\",\"\\d\"]`.\n mstore8(0x1d, mload(shr(4, c))) // Hex value.\n mstore8(0x1e, mload(and(c, 15))) // Hex value.\n mstore(o, mload(0x19)) // \"\\\\u00XX\".\n o := add(o, 6)\n continue\n }\n mstore8(o, 0x5c) // \"\\\\\".\n mstore8(add(o, 1), mload(add(c, 8)))\n o := add(o, 2)\n }\n if addDoubleQuotes {\n mstore8(o, 34)\n o := add(1, o)\n }\n mstore(o, 0) // Zeroize the slot after the string.\n mstore(result, sub(o, add(result, 0x20))) // Store the length.\n mstore(0x40, add(o, 0x20)) // Allocate memory.\n }\n }\n\n /// @dev Escapes the string to be used within double-quotes in a JSON.\n function escapeJSON(string memory s) internal pure returns (string memory result) {\n result = escapeJSON(s, false);\n }\n\n /// @dev Encodes `s` so that it can be safely used in a URI,\n /// just like `encodeURIComponent` in JavaScript.\n /// See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent\n /// See: https://datatracker.ietf.org/doc/html/rfc2396\n /// See: https://datatracker.ietf.org/doc/html/rfc3986\n function encodeURIComponent(string memory s) internal pure returns (string memory result) {\n /// @solidity memory-safe-assembly\n assembly {\n result := mload(0x40)\n // Store \"0123456789ABCDEF\" in scratch space.\n // Uppercased to be consistent with JavaScript's implementation.\n mstore(0x0f, 0x30313233343536373839414243444546)\n let o := add(result, 0x20)\n for { let end := add(s, mload(s)) } iszero(eq(s, end)) {} {\n s := add(s, 1)\n let c := and(mload(s), 0xff)\n // If not in `[0-9A-Z-a-z-_.!~*'()]`.\n if iszero(and(1, shr(c, 0x47fffffe87fffffe03ff678200000000))) {\n mstore8(o, 0x25) // '%'.\n mstore8(add(o, 1), mload(and(shr(4, c), 15)))\n mstore8(add(o, 2), mload(and(c, 15)))\n o := add(o, 3)\n continue\n }\n mstore8(o, c)\n o := add(o, 1)\n }\n mstore(result, sub(o, add(result, 0x20))) // Store the length.\n mstore(o, 0) // Zeroize the slot after the string.\n mstore(0x40, add(o, 0x20)) // Allocate memory.\n }\n }\n\n /// @dev Returns whether `a` equals `b`.\n function eq(string memory a, string memory b) internal pure returns (bool result) {\n /// @solidity memory-safe-assembly\n assembly {\n result := eq(keccak256(add(a, 0x20), mload(a)), keccak256(add(b, 0x20), mload(b)))\n }\n }\n\n /// @dev Returns whether `a` equals `b`, where `b` is a null-terminated small string.\n function eqs(string memory a, bytes32 b) internal pure returns (bool result) {\n /// @solidity memory-safe-assembly\n assembly {\n // These should be evaluated on compile time, as far as possible.\n let m := not(shl(7, div(not(iszero(b)), 255))) // `0x7f7f ...`.\n let x := not(or(m, or(b, add(m, and(b, m)))))\n let r := shl(7, iszero(iszero(shr(128, x))))\n r := or(r, shl(6, iszero(iszero(shr(64, shr(r, x))))))\n r := or(r, shl(5, lt(0xffffffff, shr(r, x))))\n r := or(r, shl(4, lt(0xffff, shr(r, x))))\n r := or(r, shl(3, lt(0xff, shr(r, x))))\n // forgefmt: disable-next-item\n result := gt(eq(mload(a), add(iszero(x), xor(31, shr(3, r)))),\n xor(shr(add(8, r), b), shr(add(8, r), mload(add(a, 0x20)))))\n }\n }\n\n /// @dev Returns 0 if `a == b`, -1 if `a < b`, +1 if `a > b`.\n /// If `a` == b[:a.length]`, and `a.length < b.length`, returns -1.\n function cmp(string memory a, string memory b) internal pure returns (int256) {\n return LibBytes.cmp(bytes(a), bytes(b));\n }\n\n /// @dev Packs a single string with its length into a single word.\n /// Returns `bytes32(0)` if the length is zero or greater than 31.\n function packOne(string memory a) internal pure returns (bytes32 result) {\n /// @solidity memory-safe-assembly\n assembly {\n // We don't need to zero right pad the string,\n // since this is our own custom non-standard packing scheme.\n result :=\n mul(\n // Load the length and the bytes.\n mload(add(a, 0x1f)),\n // `length != 0 && length < 32`. Abuses underflow.\n // Assumes that the length is valid and within the block gas limit.\n lt(sub(mload(a), 1), 0x1f)\n )\n }\n }\n\n /// @dev Unpacks a string packed using {packOne}.\n /// Returns the empty string if `packed` is `bytes32(0)`.\n /// If `packed` is not an output of {packOne}, the output behavior is undefined.\n function unpackOne(bytes32 packed) internal pure returns (string memory result) {\n /// @solidity memory-safe-assembly\n assembly {\n result := mload(0x40) // Grab the free memory pointer.\n mstore(0x40, add(result, 0x40)) // Allocate 2 words (1 for the length, 1 for the bytes).\n mstore(result, 0) // Zeroize the length slot.\n mstore(add(result, 0x1f), packed) // Store the length and bytes.\n mstore(add(add(result, 0x20), mload(result)), 0) // Right pad with zeroes.\n }\n }\n\n /// @dev Packs two strings with their lengths into a single word.\n /// Returns `bytes32(0)` if combined length is zero or greater than 30.\n function packTwo(string memory a, string memory b) internal pure returns (bytes32 result) {\n /// @solidity memory-safe-assembly\n assembly {\n let aLen := mload(a)\n // We don't need to zero right pad the strings,\n // since this is our own custom non-standard packing scheme.\n result :=\n mul(\n or( // Load the length and the bytes of `a` and `b`.\n shl(shl(3, sub(0x1f, aLen)), mload(add(a, aLen))), mload(sub(add(b, 0x1e), aLen))),\n // `totalLen != 0 && totalLen < 31`. Abuses underflow.\n // Assumes that the lengths are valid and within the block gas limit.\n lt(sub(add(aLen, mload(b)), 1), 0x1e)\n )\n }\n }\n\n /// @dev Unpacks strings packed using {packTwo}.\n /// Returns the empty strings if `packed` is `bytes32(0)`.\n /// If `packed` is not an output of {packTwo}, the output behavior is undefined.\n function unpackTwo(bytes32 packed)\n internal\n pure\n returns (string memory resultA, string memory resultB)\n {\n /// @solidity memory-safe-assembly\n assembly {\n resultA := mload(0x40) // Grab the free memory pointer.\n resultB := add(resultA, 0x40)\n // Allocate 2 words for each string (1 for the length, 1 for the byte). Total 4 words.\n mstore(0x40, add(resultB, 0x40))\n // Zeroize the length slots.\n mstore(resultA, 0)\n mstore(resultB, 0)\n // Store the lengths and bytes.\n mstore(add(resultA, 0x1f), packed)\n mstore(add(resultB, 0x1f), mload(add(add(resultA, 0x20), mload(resultA))))\n // Right pad with zeroes.\n mstore(add(add(resultA, 0x20), mload(resultA)), 0)\n mstore(add(add(resultB, 0x20), mload(resultB)), 0)\n }\n }\n\n /// @dev Directly returns `a` without copying.\n function directReturn(string memory a) internal pure {\n /// @solidity memory-safe-assembly\n assembly {\n // Assumes that the string does not start from the scratch space.\n let retStart := sub(a, 0x20)\n let retUnpaddedSize := add(mload(a), 0x40)\n // Right pad with zeroes. Just in case the string is produced\n // by a method that doesn't zero right pad.\n mstore(add(retStart, retUnpaddedSize), 0)\n mstore(retStart, 0x20) // Store the return offset.\n // End the transaction, returning the string.\n return(retStart, and(not(0x1f), add(0x1f, retUnpaddedSize)))\n }\n }\n}\n" + }, + "solady/utils/SignatureCheckerLib.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.4;\n\n/// @notice Signature verification helper that supports both ECDSA signatures from EOAs\n/// and ERC1271 signatures from smart contract wallets like Argent and Gnosis safe.\n/// @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/SignatureCheckerLib.sol)\n/// @author Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/SignatureChecker.sol)\n///\n/// @dev Note:\n/// - The signature checking functions use the ecrecover precompile (0x1).\n/// - The `bytes memory signature` variants use the identity precompile (0x4)\n/// to copy memory internally.\n/// - Unlike ECDSA signatures, contract signatures are revocable.\n/// - As of Solady version 0.0.134, all `bytes signature` variants accept both\n/// regular 65-byte `(r, s, v)` and EIP-2098 `(r, vs)` short form signatures.\n/// See: https://eips.ethereum.org/EIPS/eip-2098\n/// This is for calldata efficiency on smart accounts prevalent on L2s.\n///\n/// WARNING! Do NOT use signatures as unique identifiers:\n/// - Use a nonce in the digest to prevent replay attacks on the same contract.\n/// - Use EIP-712 for the digest to prevent replay attacks across different chains and contracts.\n/// EIP-712 also enables readable signing of typed data for better user safety.\n/// This implementation does NOT check if a signature is non-malleable.\nlibrary SignatureCheckerLib {\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* SIGNATURE CHECKING OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Returns whether `signature` is valid for `signer` and `hash`.\n /// If `signer.code.length == 0`, then validate with `ecrecover`, else\n /// it will validate with ERC1271 on `signer`.\n function isValidSignatureNow(address signer, bytes32 hash, bytes memory signature)\n internal\n view\n returns (bool isValid)\n {\n if (signer == address(0)) return isValid;\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n for {} 1 {} {\n if iszero(extcodesize(signer)) {\n switch mload(signature)\n case 64 {\n let vs := mload(add(signature, 0x40))\n mstore(0x20, add(shr(255, vs), 27)) // `v`.\n mstore(0x60, shr(1, shl(1, vs))) // `s`.\n }\n case 65 {\n mstore(0x20, byte(0, mload(add(signature, 0x60)))) // `v`.\n mstore(0x60, mload(add(signature, 0x40))) // `s`.\n }\n default { break }\n mstore(0x00, hash)\n mstore(0x40, mload(add(signature, 0x20))) // `r`.\n let recovered := mload(staticcall(gas(), 1, 0x00, 0x80, 0x01, 0x20))\n isValid := gt(returndatasize(), shl(96, xor(signer, recovered)))\n mstore(0x60, 0) // Restore the zero slot.\n mstore(0x40, m) // Restore the free memory pointer.\n break\n }\n let f := shl(224, 0x1626ba7e)\n mstore(m, f) // `bytes4(keccak256(\"isValidSignature(bytes32,bytes)\"))`.\n mstore(add(m, 0x04), hash)\n let d := add(m, 0x24)\n mstore(d, 0x40) // The offset of the `signature` in the calldata.\n // Copy the `signature` over.\n let n := add(0x20, mload(signature))\n let copied := staticcall(gas(), 4, signature, n, add(m, 0x44), n)\n isValid := staticcall(gas(), signer, m, add(returndatasize(), 0x44), d, 0x20)\n isValid := and(eq(mload(d), f), and(isValid, copied))\n break\n }\n }\n }\n\n /// @dev Returns whether `signature` is valid for `signer` and `hash`.\n /// If `signer.code.length == 0`, then validate with `ecrecover`, else\n /// it will validate with ERC1271 on `signer`.\n function isValidSignatureNowCalldata(address signer, bytes32 hash, bytes calldata signature)\n internal\n view\n returns (bool isValid)\n {\n if (signer == address(0)) return isValid;\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n for {} 1 {} {\n if iszero(extcodesize(signer)) {\n switch signature.length\n case 64 {\n let vs := calldataload(add(signature.offset, 0x20))\n mstore(0x20, add(shr(255, vs), 27)) // `v`.\n mstore(0x40, calldataload(signature.offset)) // `r`.\n mstore(0x60, shr(1, shl(1, vs))) // `s`.\n }\n case 65 {\n mstore(0x20, byte(0, calldataload(add(signature.offset, 0x40)))) // `v`.\n calldatacopy(0x40, signature.offset, 0x40) // `r`, `s`.\n }\n default { break }\n mstore(0x00, hash)\n let recovered := mload(staticcall(gas(), 1, 0x00, 0x80, 0x01, 0x20))\n isValid := gt(returndatasize(), shl(96, xor(signer, recovered)))\n mstore(0x60, 0) // Restore the zero slot.\n mstore(0x40, m) // Restore the free memory pointer.\n break\n }\n let f := shl(224, 0x1626ba7e)\n mstore(m, f) // `bytes4(keccak256(\"isValidSignature(bytes32,bytes)\"))`.\n mstore(add(m, 0x04), hash)\n let d := add(m, 0x24)\n mstore(d, 0x40) // The offset of the `signature` in the calldata.\n mstore(add(m, 0x44), signature.length)\n // Copy the `signature` over.\n calldatacopy(add(m, 0x64), signature.offset, signature.length)\n isValid := staticcall(gas(), signer, m, add(signature.length, 0x64), d, 0x20)\n isValid := and(eq(mload(d), f), isValid)\n break\n }\n }\n }\n\n /// @dev Returns whether the signature (`r`, `vs`) is valid for `signer` and `hash`.\n /// If `signer.code.length == 0`, then validate with `ecrecover`, else\n /// it will validate with ERC1271 on `signer`.\n function isValidSignatureNow(address signer, bytes32 hash, bytes32 r, bytes32 vs)\n internal\n view\n returns (bool isValid)\n {\n if (signer == address(0)) return isValid;\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n for {} 1 {} {\n if iszero(extcodesize(signer)) {\n mstore(0x00, hash)\n mstore(0x20, add(shr(255, vs), 27)) // `v`.\n mstore(0x40, r) // `r`.\n mstore(0x60, shr(1, shl(1, vs))) // `s`.\n let recovered := mload(staticcall(gas(), 1, 0x00, 0x80, 0x01, 0x20))\n isValid := gt(returndatasize(), shl(96, xor(signer, recovered)))\n mstore(0x60, 0) // Restore the zero slot.\n mstore(0x40, m) // Restore the free memory pointer.\n break\n }\n let f := shl(224, 0x1626ba7e)\n mstore(m, f) // `bytes4(keccak256(\"isValidSignature(bytes32,bytes)\"))`.\n mstore(add(m, 0x04), hash)\n let d := add(m, 0x24)\n mstore(d, 0x40) // The offset of the `signature` in the calldata.\n mstore(add(m, 0x44), 65) // Length of the signature.\n mstore(add(m, 0x64), r) // `r`.\n mstore(add(m, 0x84), shr(1, shl(1, vs))) // `s`.\n mstore8(add(m, 0xa4), add(shr(255, vs), 27)) // `v`.\n isValid := staticcall(gas(), signer, m, 0xa5, d, 0x20)\n isValid := and(eq(mload(d), f), isValid)\n break\n }\n }\n }\n\n /// @dev Returns whether the signature (`v`, `r`, `s`) is valid for `signer` and `hash`.\n /// If `signer.code.length == 0`, then validate with `ecrecover`, else\n /// it will validate with ERC1271 on `signer`.\n function isValidSignatureNow(address signer, bytes32 hash, uint8 v, bytes32 r, bytes32 s)\n internal\n view\n returns (bool isValid)\n {\n if (signer == address(0)) return isValid;\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n for {} 1 {} {\n if iszero(extcodesize(signer)) {\n mstore(0x00, hash)\n mstore(0x20, and(v, 0xff)) // `v`.\n mstore(0x40, r) // `r`.\n mstore(0x60, s) // `s`.\n let recovered := mload(staticcall(gas(), 1, 0x00, 0x80, 0x01, 0x20))\n isValid := gt(returndatasize(), shl(96, xor(signer, recovered)))\n mstore(0x60, 0) // Restore the zero slot.\n mstore(0x40, m) // Restore the free memory pointer.\n break\n }\n let f := shl(224, 0x1626ba7e)\n mstore(m, f) // `bytes4(keccak256(\"isValidSignature(bytes32,bytes)\"))`.\n mstore(add(m, 0x04), hash)\n let d := add(m, 0x24)\n mstore(d, 0x40) // The offset of the `signature` in the calldata.\n mstore(add(m, 0x44), 65) // Length of the signature.\n mstore(add(m, 0x64), r) // `r`.\n mstore(add(m, 0x84), s) // `s`.\n mstore8(add(m, 0xa4), v) // `v`.\n isValid := staticcall(gas(), signer, m, 0xa5, d, 0x20)\n isValid := and(eq(mload(d), f), isValid)\n break\n }\n }\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* ERC1271 OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n // Note: These ERC1271 operations do NOT have an ECDSA fallback.\n\n /// @dev Returns whether `signature` is valid for `hash` for an ERC1271 `signer` contract.\n function isValidERC1271SignatureNow(address signer, bytes32 hash, bytes memory signature)\n internal\n view\n returns (bool isValid)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n let f := shl(224, 0x1626ba7e)\n mstore(m, f) // `bytes4(keccak256(\"isValidSignature(bytes32,bytes)\"))`.\n mstore(add(m, 0x04), hash)\n let d := add(m, 0x24)\n mstore(d, 0x40) // The offset of the `signature` in the calldata.\n // Copy the `signature` over.\n let n := add(0x20, mload(signature))\n let copied := staticcall(gas(), 4, signature, n, add(m, 0x44), n)\n isValid := staticcall(gas(), signer, m, add(returndatasize(), 0x44), d, 0x20)\n isValid := and(eq(mload(d), f), and(isValid, copied))\n }\n }\n\n /// @dev Returns whether `signature` is valid for `hash` for an ERC1271 `signer` contract.\n function isValidERC1271SignatureNowCalldata(\n address signer,\n bytes32 hash,\n bytes calldata signature\n ) internal view returns (bool isValid) {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n let f := shl(224, 0x1626ba7e)\n mstore(m, f) // `bytes4(keccak256(\"isValidSignature(bytes32,bytes)\"))`.\n mstore(add(m, 0x04), hash)\n let d := add(m, 0x24)\n mstore(d, 0x40) // The offset of the `signature` in the calldata.\n mstore(add(m, 0x44), signature.length)\n // Copy the `signature` over.\n calldatacopy(add(m, 0x64), signature.offset, signature.length)\n isValid := staticcall(gas(), signer, m, add(signature.length, 0x64), d, 0x20)\n isValid := and(eq(mload(d), f), isValid)\n }\n }\n\n /// @dev Returns whether the signature (`r`, `vs`) is valid for `hash`\n /// for an ERC1271 `signer` contract.\n function isValidERC1271SignatureNow(address signer, bytes32 hash, bytes32 r, bytes32 vs)\n internal\n view\n returns (bool isValid)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n let f := shl(224, 0x1626ba7e)\n mstore(m, f) // `bytes4(keccak256(\"isValidSignature(bytes32,bytes)\"))`.\n mstore(add(m, 0x04), hash)\n let d := add(m, 0x24)\n mstore(d, 0x40) // The offset of the `signature` in the calldata.\n mstore(add(m, 0x44), 65) // Length of the signature.\n mstore(add(m, 0x64), r) // `r`.\n mstore(add(m, 0x84), shr(1, shl(1, vs))) // `s`.\n mstore8(add(m, 0xa4), add(shr(255, vs), 27)) // `v`.\n isValid := staticcall(gas(), signer, m, 0xa5, d, 0x20)\n isValid := and(eq(mload(d), f), isValid)\n }\n }\n\n /// @dev Returns whether the signature (`v`, `r`, `s`) is valid for `hash`\n /// for an ERC1271 `signer` contract.\n function isValidERC1271SignatureNow(address signer, bytes32 hash, uint8 v, bytes32 r, bytes32 s)\n internal\n view\n returns (bool isValid)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n let f := shl(224, 0x1626ba7e)\n mstore(m, f) // `bytes4(keccak256(\"isValidSignature(bytes32,bytes)\"))`.\n mstore(add(m, 0x04), hash)\n let d := add(m, 0x24)\n mstore(d, 0x40) // The offset of the `signature` in the calldata.\n mstore(add(m, 0x44), 65) // Length of the signature.\n mstore(add(m, 0x64), r) // `r`.\n mstore(add(m, 0x84), s) // `s`.\n mstore8(add(m, 0xa4), v) // `v`.\n isValid := staticcall(gas(), signer, m, 0xa5, d, 0x20)\n isValid := and(eq(mload(d), f), isValid)\n }\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* ERC6492 OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n // Note: These ERC6492 operations now include an ECDSA fallback at the very end.\n // The calldata variants are excluded for brevity.\n\n /// @dev Returns whether `signature` is valid for `hash`.\n /// If the signature is postfixed with the ERC6492 magic number, it will attempt to\n /// deploy / prepare the `signer` smart account before doing a regular ERC1271 check.\n /// Note: This function is NOT reentrancy safe.\n /// The verifier must be deployed.\n /// Otherwise, the function will return false if `signer` is not yet deployed / prepared.\n /// See: https://gist.github.com/Vectorized/011d6becff6e0a73e42fe100f8d7ef04\n /// With a dedicated verifier, this function is safe to use in contracts\n /// that have been granted special permissions.\n function isValidERC6492SignatureNowAllowSideEffects(\n address signer,\n bytes32 hash,\n bytes memory signature\n ) internal returns (bool isValid) {\n /// @solidity memory-safe-assembly\n assembly {\n function callIsValidSignature(signer_, hash_, signature_) -> _isValid {\n let m_ := mload(0x40)\n let f_ := shl(224, 0x1626ba7e)\n mstore(m_, f_) // `bytes4(keccak256(\"isValidSignature(bytes32,bytes)\"))`.\n mstore(add(m_, 0x04), hash_)\n let d_ := add(m_, 0x24)\n mstore(d_, 0x40) // The offset of the `signature` in the calldata.\n let n_ := add(0x20, mload(signature_))\n let copied_ := staticcall(gas(), 4, signature_, n_, add(m_, 0x44), n_)\n _isValid := staticcall(gas(), signer_, m_, add(returndatasize(), 0x44), d_, 0x20)\n _isValid := and(eq(mload(d_), f_), and(_isValid, copied_))\n }\n let noCode := iszero(extcodesize(signer))\n let n := mload(signature)\n for {} 1 {} {\n if iszero(eq(mload(add(signature, n)), mul(0x6492, div(not(isValid), 0xffff)))) {\n if iszero(noCode) { isValid := callIsValidSignature(signer, hash, signature) }\n break\n }\n if iszero(noCode) {\n let o := add(signature, 0x20) // Signature bytes.\n isValid := callIsValidSignature(signer, hash, add(o, mload(add(o, 0x40))))\n if isValid { break }\n }\n let m := mload(0x40)\n mstore(m, signer)\n mstore(add(m, 0x20), hash)\n pop(\n call(\n gas(), // Remaining gas.\n 0x0000bc370E4DC924F427d84e2f4B9Ec81626ba7E, // Non-reverting verifier.\n 0, // Send zero ETH.\n m, // Start of memory.\n add(returndatasize(), 0x40), // Length of calldata in memory.\n staticcall(gas(), 4, add(signature, 0x20), n, add(m, 0x40), n), // 1.\n 0x00 // Length of returndata to write.\n )\n )\n isValid := returndatasize()\n break\n }\n // Do `ecrecover` fallback if `noCode && !isValid`.\n for {} gt(noCode, isValid) {} {\n switch n\n case 64 {\n let vs := mload(add(signature, 0x40))\n mstore(0x20, add(shr(255, vs), 27)) // `v`.\n mstore(0x60, shr(1, shl(1, vs))) // `s`.\n }\n case 65 {\n mstore(0x20, byte(0, mload(add(signature, 0x60)))) // `v`.\n mstore(0x60, mload(add(signature, 0x40))) // `s`.\n }\n default { break }\n let m := mload(0x40)\n mstore(0x00, hash)\n mstore(0x40, mload(add(signature, 0x20))) // `r`.\n let recovered := mload(staticcall(gas(), 1, 0x00, 0x80, 0x01, 0x20))\n isValid := gt(returndatasize(), shl(96, xor(signer, recovered)))\n mstore(0x60, 0) // Restore the zero slot.\n mstore(0x40, m) // Restore the free memory pointer.\n break\n }\n }\n }\n\n /// @dev Returns whether `signature` is valid for `hash`.\n /// If the signature is postfixed with the ERC6492 magic number, it will attempt\n /// to use a reverting verifier to deploy / prepare the `signer` smart account\n /// and do a `isValidSignature` check via the reverting verifier.\n /// Note: This function is reentrancy safe.\n /// The reverting verifier must be deployed.\n /// Otherwise, the function will return false if `signer` is not yet deployed / prepared.\n /// See: https://gist.github.com/Vectorized/846a474c855eee9e441506676800a9ad\n function isValidERC6492SignatureNow(address signer, bytes32 hash, bytes memory signature)\n internal\n returns (bool isValid)\n {\n /// @solidity memory-safe-assembly\n assembly {\n function callIsValidSignature(signer_, hash_, signature_) -> _isValid {\n let m_ := mload(0x40)\n let f_ := shl(224, 0x1626ba7e)\n mstore(m_, f_) // `bytes4(keccak256(\"isValidSignature(bytes32,bytes)\"))`.\n mstore(add(m_, 0x04), hash_)\n let d_ := add(m_, 0x24)\n mstore(d_, 0x40) // The offset of the `signature` in the calldata.\n let n_ := add(0x20, mload(signature_))\n let copied_ := staticcall(gas(), 4, signature_, n_, add(m_, 0x44), n_)\n _isValid := staticcall(gas(), signer_, m_, add(returndatasize(), 0x44), d_, 0x20)\n _isValid := and(eq(mload(d_), f_), and(_isValid, copied_))\n }\n let noCode := iszero(extcodesize(signer))\n let n := mload(signature)\n for {} 1 {} {\n if iszero(eq(mload(add(signature, n)), mul(0x6492, div(not(isValid), 0xffff)))) {\n if iszero(noCode) { isValid := callIsValidSignature(signer, hash, signature) }\n break\n }\n if iszero(noCode) {\n let o := add(signature, 0x20) // Signature bytes.\n isValid := callIsValidSignature(signer, hash, add(o, mload(add(o, 0x40))))\n if isValid { break }\n }\n let m := mload(0x40)\n mstore(m, signer)\n mstore(add(m, 0x20), hash)\n let willBeZeroIfRevertingVerifierExists :=\n call(\n gas(), // Remaining gas.\n 0x00007bd799e4A591FeA53f8A8a3E9f931626Ba7e, // Reverting verifier.\n 0, // Send zero ETH.\n m, // Start of memory.\n add(returndatasize(), 0x40), // Length of calldata in memory.\n staticcall(gas(), 4, add(signature, 0x20), n, add(m, 0x40), n), // 1.\n 0x00 // Length of returndata to write.\n )\n isValid := gt(returndatasize(), willBeZeroIfRevertingVerifierExists)\n break\n }\n // Do `ecrecover` fallback if `noCode && !isValid`.\n for {} gt(noCode, isValid) {} {\n switch n\n case 64 {\n let vs := mload(add(signature, 0x40))\n mstore(0x20, add(shr(255, vs), 27)) // `v`.\n mstore(0x60, shr(1, shl(1, vs))) // `s`.\n }\n case 65 {\n mstore(0x20, byte(0, mload(add(signature, 0x60)))) // `v`.\n mstore(0x60, mload(add(signature, 0x40))) // `s`.\n }\n default { break }\n let m := mload(0x40)\n mstore(0x00, hash)\n mstore(0x40, mload(add(signature, 0x20))) // `r`.\n let recovered := mload(staticcall(gas(), 1, 0x00, 0x80, 0x01, 0x20))\n isValid := gt(returndatasize(), shl(96, xor(signer, recovered)))\n mstore(0x60, 0) // Restore the zero slot.\n mstore(0x40, m) // Restore the free memory pointer.\n break\n }\n }\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* HASHING OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Returns an Ethereum Signed Message, created from a `hash`.\n /// This produces a hash corresponding to the one signed with the\n /// [`eth_sign`](https://eth.wiki/json-rpc/API#eth_sign)\n /// JSON-RPC method as part of EIP-191.\n function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32 result) {\n /// @solidity memory-safe-assembly\n assembly {\n mstore(0x20, hash) // Store into scratch space for keccak256.\n mstore(0x00, \"\\x00\\x00\\x00\\x00\\x19Ethereum Signed Message:\\n32\") // 28 bytes.\n result := keccak256(0x04, 0x3c) // `32 * 2 - (32 - 28) = 60 = 0x3c`.\n }\n }\n\n /// @dev Returns an Ethereum Signed Message, created from `s`.\n /// This produces a hash corresponding to the one signed with the\n /// [`eth_sign`](https://eth.wiki/json-rpc/API#eth_sign)\n /// JSON-RPC method as part of EIP-191.\n /// Note: Supports lengths of `s` up to 999999 bytes.\n function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32 result) {\n /// @solidity memory-safe-assembly\n assembly {\n let sLength := mload(s)\n let o := 0x20\n mstore(o, \"\\x19Ethereum Signed Message:\\n\") // 26 bytes, zero-right-padded.\n mstore(0x00, 0x00)\n // Convert the `s.length` to ASCII decimal representation: `base10(s.length)`.\n for { let temp := sLength } 1 {} {\n o := sub(o, 1)\n mstore8(o, add(48, mod(temp, 10)))\n temp := div(temp, 10)\n if iszero(temp) { break }\n }\n let n := sub(0x3a, o) // Header length: `26 + 32 - o`.\n // Throw an out-of-offset error (consumes all gas) if the header exceeds 32 bytes.\n returndatacopy(returndatasize(), returndatasize(), gt(n, 0x20))\n mstore(s, or(mload(0x00), mload(n))) // Temporarily store the header.\n result := keccak256(add(s, sub(0x20, n)), add(n, sLength))\n mstore(s, sLength) // Restore the length.\n }\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* EMPTY CALLDATA HELPERS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Returns an empty calldata bytes.\n function emptySignature() internal pure returns (bytes calldata signature) {\n /// @solidity memory-safe-assembly\n assembly {\n signature.length := 0\n }\n }\n}\n" + }, + "solady/utils/UUPSUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.4;\n\nimport {CallContextChecker} from \"./CallContextChecker.sol\";\n\n/// @notice UUPS proxy mixin.\n/// @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/UUPSUpgradeable.sol)\n/// @author Modified from OpenZeppelin\n/// (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/proxy/utils/UUPSUpgradeable.sol)\n///\n/// @dev Note:\n/// - This implementation is intended to be used with ERC1967 proxies.\n/// See: `LibClone.deployERC1967` and related functions.\n/// - This implementation is NOT compatible with legacy OpenZeppelin proxies\n/// which do not store the implementation at `_ERC1967_IMPLEMENTATION_SLOT`.\nabstract contract UUPSUpgradeable is CallContextChecker {\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* CUSTOM ERRORS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev The upgrade failed.\n error UpgradeFailed();\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* EVENTS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Emitted when the proxy's implementation is upgraded.\n event Upgraded(address indexed implementation);\n\n /// @dev `keccak256(bytes(\"Upgraded(address)\"))`.\n uint256 private constant _UPGRADED_EVENT_SIGNATURE =\n 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b;\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* STORAGE */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev The ERC-1967 storage slot for the implementation in the proxy.\n /// `uint256(keccak256(\"eip1967.proxy.implementation\")) - 1`.\n bytes32 internal constant _ERC1967_IMPLEMENTATION_SLOT =\n 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* UUPS OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Please override this function to check if `msg.sender` is authorized\n /// to upgrade the proxy to `newImplementation`, reverting if not.\n /// ```\n /// function _authorizeUpgrade(address) internal override onlyOwner {}\n /// ```\n function _authorizeUpgrade(address newImplementation) internal virtual;\n\n /// @dev Returns the storage slot used by the implementation,\n /// as specified in [ERC1822](https://eips.ethereum.org/EIPS/eip-1822).\n ///\n /// Note: The `notDelegated` modifier prevents accidental upgrades to\n /// an implementation that is a proxy contract.\n function proxiableUUID() public view virtual notDelegated returns (bytes32) {\n // This function must always return `_ERC1967_IMPLEMENTATION_SLOT` to comply with ERC1967.\n return _ERC1967_IMPLEMENTATION_SLOT;\n }\n\n /// @dev Upgrades the proxy's implementation to `newImplementation`.\n /// Emits a {Upgraded} event.\n ///\n /// Note: Passing in empty `data` skips the delegatecall to `newImplementation`.\n function upgradeToAndCall(address newImplementation, bytes calldata data)\n public\n payable\n virtual\n onlyProxy\n {\n _authorizeUpgrade(newImplementation);\n /// @solidity memory-safe-assembly\n assembly {\n newImplementation := shr(96, shl(96, newImplementation)) // Clears upper 96 bits.\n mstore(0x00, returndatasize())\n mstore(0x01, 0x52d1902d) // `proxiableUUID()`.\n let s := _ERC1967_IMPLEMENTATION_SLOT\n // Check if `newImplementation` implements `proxiableUUID` correctly.\n if iszero(eq(mload(staticcall(gas(), newImplementation, 0x1d, 0x04, 0x01, 0x20)), s)) {\n mstore(0x01, 0x55299b49) // `UpgradeFailed()`.\n revert(0x1d, 0x04)\n }\n // Emit the {Upgraded} event.\n log2(codesize(), 0x00, _UPGRADED_EVENT_SIGNATURE, newImplementation)\n sstore(s, newImplementation) // Updates the implementation.\n\n // Perform a delegatecall to `newImplementation` if `data` is non-empty.\n if data.length {\n // Forwards the `data` to `newImplementation` via delegatecall.\n let m := mload(0x40)\n calldatacopy(m, data.offset, data.length)\n if iszero(delegatecall(gas(), newImplementation, m, data.length, codesize(), 0x00))\n {\n // Bubble up the revert if the call reverts.\n returndatacopy(m, 0x00, returndatasize())\n revert(m, returndatasize())\n }\n }\n }\n }\n}\n" + }, + "src/AuthenticatedStaticCaller.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.28;\nimport {ERC1271} from './ERC1271.sol';\n\nstruct StaticCall {\n address target;\n bytes data;\n uint256 signedAt;\n bytes signature;\n}\n\nabstract contract AuthenticatedStaticCaller is ERC1271 {\n error SignatureExpired(uint256 expiredAt, uint256 currentTimestamp);\n error InvalidSignature();\n\n //TODO: Make this configurable?\n uint256 constant signatureLifetime = 30 minutes;\n\n function getSignatureLifetime() external view returns (uint256) {\n return signatureLifetime;\n }\n\n function signedStaticCall(StaticCall calldata call) external view returns (bytes memory) {\n if (call.signedAt + signatureLifetime < block.timestamp) {\n revert SignatureExpired(call.signedAt + signatureLifetime, block.timestamp);\n }\n bytes32 hash = keccak256(bytes.concat(this.signedStaticCall.selector, bytes32(call.signedAt)));\n if (!_isValidSignature(replaySafeHash(hash), call.signature)) {\n revert InvalidSignature();\n }\n (bool success, bytes memory result) = call.target.staticcall(call.data);\n if (!success) {\n assembly {\n revert(add(result, 32), mload(result))\n }\n }\n return result;\n }\n}\n" + }, + "src/ERC1271.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.4;\n\n/// @title ERC-1271\n///\n/// @notice Abstract ERC-1271 implementation (based on Solady's) with guards to handle the same\n/// signer being used on multiple accounts.\n///\n/// @dev To prevent the same signature from being validated on different accounts owned by the samer signer,\n/// we introduce an anti cross-account-replay layer: the original hash is input into a new EIP-712 compliant\n/// hash. The domain separator of this outer hash contains the chain id and address of this contract, so that\n/// it cannot be used on two accounts (see `replaySafeHash()` for the implementation details).\n///\n/// @author Applied Blockchain (https://github.com/appliedblockchain/giano)\n/// @author Coinbase (https://github.com/coinbase/smart-wallet)\n/// @author Solady (https://github.com/vectorized/solady/blob/main/src/accounts/ERC1271.sol)\nabstract contract ERC1271 {\n /// @dev Precomputed `typeHash` used to produce EIP-712 compliant hash when applying the anti\n /// cross-account-replay layer.\n ///\n /// The original hash must either be:\n /// - An EIP-191 hash: keccak256(\"\\x19Ethereum Signed Message:\\n\" || len(someMessage) || someMessage)\n /// - An EIP-712 hash: keccak256(\"\\x19\\x01\" || someDomainSeparator || hashStruct(someStruct))\n bytes32 private constant _MESSAGE_TYPEHASH = keccak256(\"GianoSmartWalletMessage(bytes32 hash)\");\n\n /// @notice Returns information about the `EIP712Domain` used to create EIP-712 compliant hashes.\n ///\n /// @dev Follows ERC-5267 (see https://eips.ethereum.org/EIPS/eip-5267).\n ///\n /// @return fields The bitmap of used fields.\n /// @return name The value of the `EIP712Domain.name` field.\n /// @return version The value of the `EIP712Domain.version` field.\n /// @return chainId The value of the `EIP712Domain.chainId` field.\n /// @return verifyingContract The value of the `EIP712Domain.verifyingContract` field.\n /// @return salt The value of the `EIP712Domain.salt` field.\n /// @return extensions The list of EIP numbers, that extends EIP-712 with new domain fields.\n function eip712Domain()\n external\n view\n virtual\n returns (\n bytes1 fields,\n string memory name,\n string memory version,\n uint256 chainId,\n address verifyingContract,\n bytes32 salt,\n uint256[] memory extensions\n )\n {\n fields = hex\"0f\"; // `0b1111`.\n (name, version) = _domainNameAndVersion();\n chainId = block.chainid;\n verifyingContract = address(this);\n salt = salt; // `bytes32(0)`.\n extensions = extensions; // `new uint256[](0)`.\n }\n\n /// @notice Validates the `signature` against the given `hash`.\n ///\n /// @dev This implementation follows ERC-1271. See https://eips.ethereum.org/EIPS/eip-1271.\n /// @dev IMPORTANT: Signature verification is performed on the hash produced AFTER applying the anti\n /// cross-account-replay layer on the given `hash` (i.e., verification is run on the replay-safe\n /// hash version).\n ///\n /// @param hash The original hash.\n /// @param signature The signature of the replay-safe hash to validate.\n ///\n /// @return result `0x1626ba7e` if validation succeeded, else `0xffffffff`.\n function isValidSignature(bytes32 hash, bytes calldata signature) public view virtual returns (bytes4 result) {\n if (_isValidSignature({hash: replaySafeHash(hash), signature: signature})) {\n // bytes4(keccak256(\"isValidSignature(bytes32,bytes)\"))\n return 0x1626ba7e;\n }\n\n return 0xffffffff;\n }\n\n /// @notice Wrapper around `_eip712Hash()` to produce a replay-safe hash fron the given `hash`.\n ///\n /// @dev The returned EIP-712 compliant replay-safe hash is the result of:\n /// keccak256(\n /// \\x19\\x01 ||\n /// this.domainSeparator ||\n /// hashStruct(GianoSmartWalletMessage({ hash: `hash`}))\n /// )\n ///\n /// @param hash The original hash.\n ///\n /// @return The corresponding replay-safe hash.\n function replaySafeHash(bytes32 hash) public view virtual returns (bytes32) {\n return _eip712Hash(hash);\n }\n\n /// @notice Returns the `domainSeparator` used to create EIP-712 compliant hashes.\n ///\n /// @dev Implements domainSeparator = hashStruct(eip712Domain).\n /// See https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator.\n ///\n /// @return The 32 bytes domain separator result.\n function domainSeparator() public view returns (bytes32) {\n (string memory name, string memory version) = _domainNameAndVersion();\n return keccak256(\n abi.encode(\n keccak256(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"),\n keccak256(bytes(name)),\n keccak256(bytes(version)),\n block.chainid,\n address(this)\n )\n );\n }\n\n /// @notice Returns the EIP-712 typed hash of the `GianoSmartWalletMessage(bytes32 hash)` data structure.\n ///\n /// @dev Implements encode(domainSeparator : 𝔹²⁵⁶, message : 𝕊) = \"\\x19\\x01\" || domainSeparator ||\n /// hashStruct(message).\n /// @dev See https://eips.ethereum.org/EIPS/eip-712#specification.\n ///\n /// @param hash The `GianoSmartWalletMessage.hash` field to hash.\n ////\n /// @return The resulting EIP-712 hash.\n function _eip712Hash(bytes32 hash) internal view virtual returns (bytes32) {\n return keccak256(abi.encodePacked(\"\\x19\\x01\", domainSeparator(), _hashStruct(hash)));\n }\n\n /// @notice Returns the EIP-712 `hashStruct` result of the `GianoSmartWalletMessage(bytes32 hash)` data\n /// structure.\n ///\n /// @dev Implements hashStruct(s : 𝕊) = keccak256(typeHash || encodeData(s)).\n /// @dev See https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct.\n ///\n /// @param hash The `GianoSmartWalletMessage.hash` field.\n ///\n /// @return The EIP-712 `hashStruct` result.\n function _hashStruct(bytes32 hash) internal view virtual returns (bytes32) {\n return keccak256(abi.encode(_MESSAGE_TYPEHASH, hash));\n }\n\n /// @notice Returns the domain name and version to use when creating EIP-712 signatures.\n ///\n /// @dev MUST be defined by the implementation.\n ///\n /// @return name The user readable name of signing domain.\n /// @return version The current major version of the signing domain.\n function _domainNameAndVersion() internal view virtual returns (string memory name, string memory version);\n\n /// @notice Validates the `signature` against the given `hash`.\n ///\n /// @dev MUST be defined by the implementation.\n ///\n /// @param hash The hash whose signature has been performed on.\n /// @param signature The signature associated with `hash`.\n ///\n /// @return `true` is the signature is valid, else `false`.\n function _isValidSignature(bytes32 hash, bytes calldata signature) internal view virtual returns (bool);\n}\n" + }, + "src/GianoSmartWallet.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.28;\n\nimport {IAccount} from '@account-abstraction/contracts/interfaces/IAccount.sol';\n\nimport {PackedUserOperation} from '@account-abstraction/contracts/interfaces/PackedUserOperation.sol';\nimport {UserOperationLib} from '@account-abstraction/contracts/core/UserOperationLib.sol';\nimport {Receiver} from 'solady/accounts/Receiver.sol';\nimport {SignatureCheckerLib} from 'solady/utils/SignatureCheckerLib.sol';\nimport {UUPSUpgradeable} from 'solady/utils/UUPSUpgradeable.sol';\nimport {WebAuthn} from 'webauthn-sol/WebAuthn.sol';\nimport {AuthenticatedStaticCaller} from './AuthenticatedStaticCaller.sol';\n\nimport {ERC1271} from './ERC1271.sol';\nimport {MultiOwnable} from './MultiOwnable.sol';\n\n/// @title Giano Smart Wallet\n///\n/// @notice ERC-4337-compatible smart account, based on Solady's ERC4337 account implementation\n/// with inspiration from Alchemy's LightAccount and Daimo's DaimoAccount.\n///\n/// @author Applied Blockchain (https://github.com/appliedblockchain/giano)\n/// @author Coinbase (https://github.com/coinbase/smart-wallet)\n/// @author Solady (https://github.com/vectorized/solady/blob/main/src/accounts/ERC4337.sol)\ncontract GianoSmartWallet is ERC1271, IAccount, MultiOwnable, UUPSUpgradeable, Receiver, AuthenticatedStaticCaller {\n /// @notice A wrapper struct used for signature validation so that callers\n /// can identify the owner that signed.\n struct SignatureWrapper {\n /// @dev The owner bytes that signed, should be ABI encoded address (32 bytes) or public key (64 bytes)\n bytes ownerBytes;\n /// @dev If `ownerBytes` is an Ethereum address, this should be `abi.encodePacked(r, s, v)`\n /// If `ownerBytes` is a public key, this should be `abi.encode(WebAuthnAuth)`.\n bytes signatureData;\n }\n\n /// @notice Represents a call to make.\n struct Call {\n /// @dev The address to call.\n address target;\n /// @dev The value to send when making the call.\n uint256 value;\n /// @dev The data of the call.\n bytes data;\n }\n\n /// @notice Reserved nonce key (upper 192 bits of `UserOperation.nonce`) for cross-chain replayable\n /// transactions.\n ///\n /// @dev MUST BE the `UserOperation.nonce` key when `UserOperation.calldata` is calling\n /// `executeWithoutChainIdValidation`and MUST NOT BE `UserOperation.nonce` key when `UserOperation.calldata` is\n /// NOT calling `executeWithoutChainIdValidation`.\n ///\n /// @dev Helps enforce sequential sequencing of replayable transactions.\n uint256 public constant REPLAYABLE_NONCE_KEY = 8453;\n\n /// @notice Thrown when `initialize` is called but the account already has had at least one owner.\n error Initialized();\n\n /// @notice Thrown when a call is passed to `executeWithoutChainIdValidation` that is not allowed by\n /// `canSkipChainIdValidation`\n ///\n /// @param selector The selector of the call.\n error SelectorNotAllowed(bytes4 selector);\n\n /// @notice Thrown in validateUserOp if the key of `UserOperation.nonce` does not match the calldata.\n ///\n /// @dev Calls to `this.executeWithoutChainIdValidation` MUST use `REPLAYABLE_NONCE_KEY` and\n /// calls NOT to `this.executeWithoutChainIdValidation` MUST NOT use `REPLAYABLE_NONCE_KEY`.\n ///\n /// @param key The invalid `UserOperation.nonce` key.\n error InvalidNonceKey(uint256 key);\n\n /// @notice Thrown when an upgrade is attempted to an implementation that does not exist.\n ///\n /// @param implementation The address of the implementation that has no code.\n error InvalidImplementation(address implementation);\n\n /// @notice Reverts if the caller is not the EntryPoint.\n modifier onlyEntryPoint() virtual {\n if (msg.sender != entryPoint()) {\n revert Unauthorized();\n }\n\n _;\n }\n\n /// @notice Reverts if the caller is neither the EntryPoint, the owner, nor the account itself.\n modifier onlyEntryPointOrOwner() virtual {\n if (msg.sender != entryPoint()) {\n _checkOwner();\n }\n\n _;\n }\n\n /// @notice Sends to the EntryPoint (i.e. `msg.sender`) the missing funds for this transaction.\n ///\n /// @dev Subclass MAY override this modifier for better funds management (e.g. send to the\n /// EntryPoint more than the minimum required, so that in future transactions it will not\n /// be required to send again).\n ///\n /// @param missingAccountFunds The minimum value this modifier should send the EntryPoint which\n /// MAY be zero, in case there is enough deposit, or the userOp has a\n /// paymaster.\n modifier payPrefund(uint256 missingAccountFunds) virtual {\n _;\n\n assembly ('memory-safe') {\n if missingAccountFunds {\n // Ignore failure (it's EntryPoint's job to verify, not the account's).\n pop(call(gas(), caller(), missingAccountFunds, codesize(), 0x00, codesize(), 0x00))\n }\n }\n }\n\n constructor() {\n // Implementation should not be initializable (does not affect proxies which use their own storage).\n bytes[] memory owners = new bytes[](1);\n owners[0] = abi.encode(address(0));\n _initializeOwners(owners);\n }\n\n /// @notice Initializes the account with the `owners`.\n ///\n /// @dev Reverts if the account has had at least one owner, i.e. has been initialized.\n ///\n /// @param owners Array of initial owners for this account. Each item should be\n /// an ABI encoded Ethereum address, i.e. 32 bytes with 12 leading 0 bytes,\n /// or a 64 byte public key.\n function initialize(bytes[] calldata owners) external payable virtual {\n if (nextOwnerIndex() != 0) {\n revert Initialized();\n }\n\n _initializeOwners(owners);\n }\n\n /// @inheritdoc IAccount\n ///\n /// @notice ERC-4337 `validateUserOp` method. The EntryPoint will\n /// call `UserOperation.sender.call(UserOperation.callData)` only if this validation call returns\n /// successfully.\n ///\n /// @dev Signature failure should be reported by returning 1 (see: `this._isValidSignature`). This\n /// allows making a \"simulation call\" without a valid signature. Other failures (e.g. invalid signature format)\n /// should still revert to signal failure.\n /// @dev Reverts if the `UserOperation.nonce` key is invalid for `UserOperation.calldata`.\n /// @dev Reverts if the signature format is incorrect or invalid for owner type.\n ///\n /// @param userOp The `UserOperation` to validate.\n /// @param userOpHash The `UserOperation` hash, as computed by `EntryPoint.getUserOpHash(UserOperation)`.\n /// @param missingAccountFunds The missing account funds that must be deposited on the Entrypoint.\n ///\n /// @return validationData The encoded `ValidationData` structure:\n /// `(uint256(validAfter) << (160 + 48)) | (uint256(validUntil) << 160) | (success ? 0 : 1)`\n /// where `validUntil` is 0 (indefinite) and `validAfter` is 0.\n function validateUserOp(\n PackedUserOperation calldata userOp,\n bytes32 userOpHash,\n uint256 missingAccountFunds\n ) external virtual onlyEntryPoint payPrefund(missingAccountFunds) returns (uint256 validationData) {\n uint256 key = userOp.nonce >> 64;\n\n if (bytes4(userOp.callData) == this.executeWithoutChainIdValidation.selector) {\n userOpHash = getUserOpHashWithoutChainId(userOp);\n if (key != REPLAYABLE_NONCE_KEY) {\n revert InvalidNonceKey(key);\n }\n\n // Check for upgrade calls in the batch and validate implementation has code\n bytes[] memory calls = abi.decode(userOp.callData[4:], (bytes[]));\n for (uint256 i; i < calls.length; i++) {\n bytes memory callData = calls[i];\n bytes4 selector = bytes4(callData);\n\n if (selector == UUPSUpgradeable.upgradeToAndCall.selector) {\n address newImplementation;\n assembly {\n // Skip reading the first 32 bytes (length prefix) + 4 bytes (function selector)\n newImplementation := mload(add(callData, 36))\n }\n if (newImplementation.code.length == 0) revert InvalidImplementation(newImplementation);\n }\n }\n } else {\n if (key == REPLAYABLE_NONCE_KEY) {\n revert InvalidNonceKey(key);\n }\n }\n\n // Return 0 if the recovered address matches the owner.\n if (_isValidSignature(userOpHash, userOp.signature)) {\n return 0;\n }\n\n // Else return 1\n return 1;\n }\n\n /// @notice Executes `calls` on this account (i.e. self call).\n ///\n /// @dev Can only be called by the Entrypoint.\n /// @dev Reverts if the given call is not authorized to skip the chain ID validtion.\n /// @dev `validateUserOp()` will recompute the `userOpHash` without the chain ID before validating\n /// it if the `UserOperation.calldata` is calling this function. This allows certain UserOperations\n /// to be replayed for all accounts sharing the same address across chains. E.g. This may be\n /// useful for syncing owner changes.\n ///\n /// @param calls An array of calldata to use for separate self calls.\n function executeWithoutChainIdValidation(bytes[] calldata calls) external payable virtual onlyEntryPoint {\n for (uint256 i; i < calls.length; i++) {\n bytes calldata call = calls[i];\n bytes4 selector = bytes4(call);\n if (!canSkipChainIdValidation(selector)) {\n revert SelectorNotAllowed(selector);\n }\n\n _call(address(this), 0, call);\n }\n }\n\n /// @notice Executes the given call from this account.\n ///\n /// @dev Can only be called by the Entrypoint or an owner of this account (including itself).\n ///\n /// @param target The address to call.\n /// @param value The value to send with the call.\n /// @param data The data of the call.\n function execute(address target, uint256 value, bytes calldata data) external payable virtual onlyEntryPointOrOwner {\n _call(target, value, data);\n }\n\n /// @notice Executes batch of `Call`s.\n ///\n /// @dev Can only be called by the Entrypoint or an owner of this account (including itself).\n ///\n /// @param calls The list of `Call`s to execute.\n function executeBatch(Call[] calldata calls) external payable virtual onlyEntryPointOrOwner {\n for (uint256 i; i < calls.length; i++) {\n _call(calls[i].target, calls[i].value, calls[i].data);\n }\n }\n\n /// @notice Returns the address of the EntryPoint v0.7.\n ///\n /// @return The address of the EntryPoint v0.7\n function entryPoint() public view virtual returns (address) {\n return 0x0000000071727De22E5E9d8BAf0edAc6f37da032;\n }\n\n /// @notice Computes the hash of the `UserOperation` in the same way as EntryPoint v0.6, but\n /// leaves out the chain ID.\n ///\n /// @dev This allows accounts to sign a hash that can be used on many chains.\n ///\n /// @param userOp The `UserOperation` to compute the hash for.\n ///\n /// @return The `UserOperation` hash, which does not depend on chain ID.\n function getUserOpHashWithoutChainId(PackedUserOperation calldata userOp) public view virtual returns (bytes32) {\n return keccak256(abi.encode(UserOperationLib.hash(userOp), entryPoint()));\n }\n\n /// @notice Returns the implementation of the ERC1967 proxy.\n ///\n /// @return $ The address of implementation contract.\n function implementation() public view returns (address $) {\n assembly {\n $ := sload(_ERC1967_IMPLEMENTATION_SLOT)\n }\n }\n\n /// @notice Returns whether `functionSelector` can be called in `executeWithoutChainIdValidation`.\n ///\n /// @param functionSelector The function selector to check.\n ////\n /// @return `true` is the function selector is allowed to skip the chain ID validation, else `false`.\n function canSkipChainIdValidation(bytes4 functionSelector) public pure returns (bool) {\n if (\n functionSelector == MultiOwnable.addOwnerPublicKey.selector ||\n functionSelector == MultiOwnable.addOwnerAddress.selector ||\n functionSelector == MultiOwnable.removeOwnerAtIndex.selector ||\n functionSelector == MultiOwnable.removeLastOwner.selector ||\n functionSelector == UUPSUpgradeable.upgradeToAndCall.selector\n ) {\n return true;\n }\n return false;\n }\n\n /// @notice Executes the given call from this account.\n ///\n /// @dev Reverts if the call reverted.\n /// @dev Implementation taken from\n /// https://github.com/alchemyplatform/light-account/blob/43f625afdda544d5e5af9c370c9f4be0943e4e90/src/common/BaseLightAccount.sol#L125\n ///\n /// @param target The target call address.\n /// @param value The call value to user.\n /// @param data The raw call data.\n function _call(address target, uint256 value, bytes memory data) internal {\n (bool success, bytes memory result) = target.call{value: value}(data);\n if (!success) {\n assembly ('memory-safe') {\n revert(add(result, 32), mload(result))\n }\n }\n }\n\n /// @inheritdoc ERC1271\n ///\n /// @dev Used by both `ERC1271.isValidSignature` AND `IAccount.validateUserOp` signature validation.\n /// @dev Reverts if `ownerBytes` is not compatible with `signature` format.\n ///\n /// @param signature ABI encoded `SignatureWrapper`.\n function _isValidSignature(bytes32 hash, bytes calldata signature) internal view virtual override returns (bool) {\n SignatureWrapper memory sigWrapper = abi.decode(signature, (SignatureWrapper));\n bytes memory ownerBytes = sigWrapper.ownerBytes;\n\n // First validate that the provided owner bytes are actually an owner\n if (!isOwnerBytes(ownerBytes)) {\n return false;\n }\n\n if (ownerBytes.length == 32) {\n if (uint256(bytes32(ownerBytes)) > type(uint160).max) {\n // technically should be impossible given owners can only be added with\n // addOwnerAddress and addOwnerPublicKey, but we leave incase of future changes.\n revert InvalidEthereumAddressOwner(ownerBytes);\n }\n\n address owner;\n assembly ('memory-safe') {\n owner := mload(add(ownerBytes, 32))\n }\n\n return SignatureCheckerLib.isValidSignatureNow(owner, hash, sigWrapper.signatureData);\n }\n\n if (ownerBytes.length == 64) {\n (uint256 x, uint256 y) = abi.decode(ownerBytes, (uint256, uint256));\n\n WebAuthn.WebAuthnAuth memory auth = abi.decode(sigWrapper.signatureData, (WebAuthn.WebAuthnAuth));\n\n return WebAuthn.verify({challenge: abi.encode(hash), requireUV: false, webAuthnAuth: auth, x: x, y: y});\n }\n\n revert InvalidOwnerBytesLength(ownerBytes);\n }\n\n /// @inheritdoc UUPSUpgradeable\n ///\n /// @dev Authorization logic is only based on the `msg.sender` being an owner of this account,\n /// or `address(this)`.\n function _authorizeUpgrade(address) internal view virtual override(UUPSUpgradeable) onlyOwner {}\n\n /// @inheritdoc ERC1271\n function _domainNameAndVersion() internal pure override(ERC1271) returns (string memory, string memory) {\n return ('Giano Smart Wallet', '1');\n }\n}\n" + }, + "src/GianoSmartWalletFactory.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.4;\n\nimport {GianoSmartWallet} from './GianoSmartWallet.sol';\nimport {LibClone} from 'solady/utils/LibClone.sol';\n\n/// @title Giano Smart Wallet Factory\n///\n/// @notice GianoSmartWallet factory, based on Solady's ERC4337Factory.\n///\n/// @author Applied Blockchain (https://github.com/appliedblockchain/giano)\n/// @author Coinbase (https://github.com/coinbase/smart-wallet)\n/// @author Solady (https://github.com/vectorized/solady/blob/main/src/accounts/ERC4337Factory.sol)\ncontract GianoSmartWalletFactory {\n /// @notice Address of the ERC-4337 implementation used as implementation for new accounts.\n address public immutable implementation;\n\n /// @notice Emitted when a new account is created.\n ///\n /// @param account The address of the created account.\n /// @param owners Array of initial owners.\n /// @param nonce The nonce of the created account.\n event AccountCreated(address indexed account, bytes[] owners, uint256 nonce);\n\n /// @notice Thrown when trying to construct with an implementation that is not deployed.\n error ImplementationUndeployed();\n\n\n /// @notice Thrown when trying to create a new `GianoSmartWallet` account without any owner.\n error OwnerRequired();\n\n /// @notice Factory constructor used to initialize the implementation address to use for future\n /// GianoSmartWallet deployments.\n ///\n /// @param implementation_ The address of the GianoSmartWallet implementation which new accounts will proxy to.\n constructor(address implementation_) payable {\n if (implementation_.code.length == 0) revert ImplementationUndeployed();\n implementation = implementation_;\n }\n\n /// @notice Returns the deterministic address for a GianoSmartWallet created with `owners` and `nonce`\n /// deploys and initializes contract if it has not yet been created.\n ///\n /// @dev Deployed as a ERC-1967 proxy that's implementation is `this.implementation`.\n ///\n /// @param owners Array of initial owners. Each item should be an ABI encoded address or 64 byte public key.\n /// @param nonce The nonce of the account, a caller defined value which allows multiple accounts\n /// with the same `owners` to exist at different addresses.\n ///\n /// @return account The address of the ERC-1967 proxy created with inputs `owners`, `nonce`, and\n /// `this.implementation`.\n function createAccount(bytes[] calldata owners, uint256 nonce) external payable virtual returns (GianoSmartWallet account) {\n if (owners.length == 0) {\n revert OwnerRequired();\n }\n\n (bool alreadyDeployed, address accountAddress) = LibClone.createDeterministicERC1967(msg.value, implementation, _getSalt(owners, nonce));\n\n account = GianoSmartWallet(payable(accountAddress));\n\n if (!alreadyDeployed) {\n emit AccountCreated(accountAddress, owners, nonce);\n account.initialize(owners);\n }\n }\n\n /// @notice Returns the deterministic address of the account that would be created by `createAccount`.\n ///\n /// @param owners Array of initial owners. Each item should be an ABI encoded address or 64 byte public key.\n /// @param nonce The nonce provided to `createAccount()`.\n ///\n /// @return The predicted account deployment address.\n function getAddress(bytes[] calldata owners, uint256 nonce) external view returns (address) {\n return LibClone.predictDeterministicAddress(initCodeHash(), _getSalt(owners, nonce), address(this));\n }\n\n /// @notice Returns the initialization code hash of the account:\n /// a ERC1967 proxy that's implementation is `this.implementation`.\n ///\n /// @return The initialization code hash.\n function initCodeHash() public view virtual returns (bytes32) {\n return LibClone.initCodeHashERC1967(implementation);\n }\n\n /// @notice Returns the create2 salt for `LibClone.predictDeterministicAddress`\n ///\n /// @param owners Array of initial owners. Each item should be an ABI encoded address or 64 byte public key.\n /// @param nonce The nonce provided to `createAccount()`.\n ///\n /// @return The computed salt.\n function _getSalt(bytes[] calldata owners, uint256 nonce) internal pure returns (bytes32) {\n return keccak256(abi.encode(owners, nonce));\n }\n}\n" + }, + "src/MultiOwnable.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.18;\n\n/// @notice Storage layout used by this contract.\n///\n/// @custom:storage-location erc7201:appliedblockchain.storage.MultiOwnable\nstruct MultiOwnableStorage {\n /// @dev Tracks the index of the next owner to add.\n uint256 nextOwnerIndex;\n /// @dev Tracks number of owners that have been removed.\n uint256 removedOwnersCount;\n /// @dev Maps index to owner bytes, used to idenfitied owners via a uint256 index.\n ///\n /// Some uses—-such as signature validation for secp256r1 public key owners—-\n /// requires the caller to assert the public key of the caller. To economize calldata,\n /// we allow an index to identify an owner, so that the full owner bytes do\n /// not need to be passed.\n ///\n /// The `owner` bytes should either be\n /// - An ABI encoded Ethereum address\n /// - An ABI encoded public key\n mapping(uint256 index => bytes owner) ownerAtIndex;\n /// @dev Mapping of bytes to booleans indicating whether or not\n /// bytes_ is an owner of this contract.\n mapping(bytes bytes_ => bool isOwner_) isOwner;\n}\n\n/// @title Multi Ownable\n///\n/// @notice Auth contract allowing multiple owners, each identified as bytes.\n///\n/// @author Applied Blockchain (https://github.com/appliedblockchain/giano)\n/// @author Coinbase (https://github.com/coinbase/smart-wallet)\ncontract MultiOwnable {\n /// @dev Slot for the `MultiOwnableStorage` struct in storage.\n /// Computed from\n /// keccak256(abi.encode(uint256(keccak256(\"appliedblockchain.storage.MultiOwnable\")) - 1)) & ~bytes32(uint256(0xff))\n /// Follows ERC-7201 (see https://eips.ethereum.org/EIPS/eip-7201).\n bytes32 private constant MUTLI_OWNABLE_STORAGE_LOCATION =\n 0x0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f500;\n\n /// @notice Thrown when the `msg.sender` is not an owner and is trying to call a privileged function.\n error Unauthorized();\n\n /// @notice Thrown when trying to add an already registered owner.\n ///\n /// @param owner The owner bytes.\n error AlreadyOwner(bytes owner);\n\n /// @notice Thrown when trying to remove an owner from an index that is empty.\n ///\n /// @param index The targeted index for removal.\n error NoOwnerAtIndex(uint256 index);\n\n /// @notice Thrown when `owner` argument does not match owner found at index.\n ///\n /// @param index The index of the owner to be removed.\n /// @param expectedOwner The owner passed in the remove call.\n /// @param actualOwner The actual owner at `index`.\n error WrongOwnerAtIndex(uint256 index, bytes expectedOwner, bytes actualOwner);\n\n /// @notice Thrown when a provided owner is neither 64 bytes long (for public key)\n /// nor a ABI encoded address.\n ///\n /// @param owner The invalid owner.\n error InvalidOwnerBytesLength(bytes owner);\n\n /// @notice Thrown if a provided owner is 32 bytes long but does not fit in an `address` type.\n ///\n /// @param owner The invalid owner.\n error InvalidEthereumAddressOwner(bytes owner);\n\n /// @notice Thrown when removeOwnerAtIndex is called and there is only one current owner.\n error LastOwner();\n\n /// @notice Thrown when removeLastOwner is called and there is more than one current owner.\n ///\n /// @param ownersRemaining The number of current owners.\n error NotLastOwner(uint256 ownersRemaining);\n\n /// @notice Emitted when a new owner is registered.\n ///\n /// @param index The owner index of the owner added.\n /// @param owner The owner added.\n event AddOwner(uint256 indexed index, bytes owner);\n\n /// @notice Emitted when an owner is removed.\n ///\n /// @param index The owner index of the owner removed.\n /// @param owner The owner removed.\n event RemoveOwner(uint256 indexed index, bytes owner);\n\n /// @notice Access control modifier ensuring the caller is an authorized owner\n modifier onlyOwner() virtual {\n _checkOwner();\n _;\n }\n\n /// @notice Adds a new Ethereum-address owner.\n ///\n /// @param owner The owner address.\n function addOwnerAddress(address owner) external virtual onlyOwner {\n _addOwnerAtIndex(abi.encode(owner), _getMultiOwnableStorage().nextOwnerIndex++);\n }\n\n /// @notice Adds a new public-key owner.\n ///\n /// @param x The owner public key x coordinate.\n /// @param y The owner public key y coordinate.\n function addOwnerPublicKey(bytes32 x, bytes32 y) external virtual onlyOwner {\n _addOwnerAtIndex(abi.encode(x, y), _getMultiOwnableStorage().nextOwnerIndex++);\n }\n\n /// @notice Removes owner at the given `index`.\n ///\n /// @dev Reverts if the owner is not registered at `index`.\n /// @dev Reverts if there is currently only one owner.\n /// @dev Reverts if `owner` does not match bytes found at `index`.\n ///\n /// @param index The index of the owner to be removed.\n /// @param owner The ABI encoded bytes of the owner to be removed.\n function removeOwnerAtIndex(uint256 index, bytes calldata owner) external virtual onlyOwner {\n if (ownerCount() == 1) {\n revert LastOwner();\n }\n\n _removeOwnerAtIndex(index, owner);\n }\n\n /// @notice Removes owner at the given `index`, which should be the only current owner.\n ///\n /// @dev Reverts if the owner is not registered at `index`.\n /// @dev Reverts if there is currently more than one owner.\n /// @dev Reverts if `owner` does not match bytes found at `index`.\n ///\n /// @param index The index of the owner to be removed.\n /// @param owner The ABI encoded bytes of the owner to be removed.\n function removeLastOwner(uint256 index, bytes calldata owner) external virtual onlyOwner {\n uint256 ownersRemaining = ownerCount();\n if (ownersRemaining > 1) {\n revert NotLastOwner(ownersRemaining);\n }\n\n _removeOwnerAtIndex(index, owner);\n }\n\n /// @notice Checks if the given `account` address is registered as owner.\n ///\n /// @param account The account address to check.\n ///\n /// @return `true` if the account is an owner else `false`.\n function isOwnerAddress(address account) public view virtual returns (bool) {\n return _getMultiOwnableStorage().isOwner[abi.encode(account)];\n }\n\n /// @notice Checks if the given `x`, `y` public key is registered as owner.\n ///\n /// @param x The public key x coordinate.\n /// @param y The public key y coordinate.\n ///\n /// @return `true` if the account is an owner else `false`.\n function isOwnerPublicKey(bytes32 x, bytes32 y) public view virtual returns (bool) {\n return _getMultiOwnableStorage().isOwner[abi.encode(x, y)];\n }\n\n /// @notice Checks if the given `account` bytes is registered as owner.\n ///\n /// @param account The account, should be ABI encoded address or public key.\n ///\n /// @return `true` if the account is an owner else `false`.\n function isOwnerBytes(bytes memory account) public view virtual returns (bool) {\n return _getMultiOwnableStorage().isOwner[account];\n }\n\n /// @notice Returns the owner bytes at the given `index`.\n ///\n /// @param index The index to lookup.\n ///\n /// @return The owner bytes (empty if no owner is registered at this `index`).\n function ownerAtIndex(uint256 index) public view virtual returns (bytes memory) {\n return _getMultiOwnableStorage().ownerAtIndex[index];\n }\n\n /// @notice Returns the next index that will be used to add a new owner.\n ///\n /// @return The next index that will be used to add a new owner.\n function nextOwnerIndex() public view virtual returns (uint256) {\n return _getMultiOwnableStorage().nextOwnerIndex;\n }\n\n /// @notice Returns the current number of owners\n ///\n /// @return The current owner count\n function ownerCount() public view virtual returns (uint256) {\n MultiOwnableStorage storage $ = _getMultiOwnableStorage();\n return $.nextOwnerIndex - $.removedOwnersCount;\n }\n\n /// @notice Tracks the number of owners removed\n ///\n /// @dev Used with `this.nextOwnerIndex` to avoid removing all owners\n ///\n /// @return The number of owners that have been removed.\n function removedOwnersCount() public view virtual returns (uint256) {\n return _getMultiOwnableStorage().removedOwnersCount;\n }\n\n /// @notice Initialize the owners of this contract.\n ///\n /// @dev Intended to be called contract is first deployed and never again.\n /// @dev Reverts if a provided owner is neither 64 bytes long (for public key) nor a valid address.\n ///\n /// @param owners The initial set of owners.\n function _initializeOwners(bytes[] memory owners) internal virtual {\n MultiOwnableStorage storage $ = _getMultiOwnableStorage();\n uint256 nextOwnerIndex_ = $.nextOwnerIndex;\n for (uint256 i; i < owners.length; i++) {\n if (owners[i].length != 32 && owners[i].length != 64) {\n revert InvalidOwnerBytesLength(owners[i]);\n }\n\n if (owners[i].length == 32 && uint256(bytes32(owners[i])) > type(uint160).max) {\n revert InvalidEthereumAddressOwner(owners[i]);\n }\n\n _addOwnerAtIndex(owners[i], nextOwnerIndex_++);\n }\n $.nextOwnerIndex = nextOwnerIndex_;\n }\n\n /// @notice Adds an owner at the given `index`.\n ///\n /// @dev Reverts if `owner` is already registered as an owner.\n ///\n /// @param owner The owner raw bytes to register.\n /// @param index The index to write to.\n function _addOwnerAtIndex(bytes memory owner, uint256 index) internal virtual {\n if (isOwnerBytes(owner)) revert AlreadyOwner(owner);\n\n MultiOwnableStorage storage $ = _getMultiOwnableStorage();\n $.isOwner[owner] = true;\n $.ownerAtIndex[index] = owner;\n\n emit AddOwner(index, owner);\n }\n\n /// @notice Removes owner at the given `index`.\n ///\n /// @dev Reverts if the owner is not registered at `index`.\n /// @dev Reverts if `owner` does not match bytes found at `index`.\n ///\n /// @param index The index of the owner to be removed.\n /// @param owner The ABI encoded bytes of the owner to be removed.\n function _removeOwnerAtIndex(uint256 index, bytes calldata owner) internal virtual {\n bytes memory owner_ = ownerAtIndex(index);\n if (owner_.length == 0) revert NoOwnerAtIndex(index);\n if (keccak256(owner_) != keccak256(owner)) {\n revert WrongOwnerAtIndex({index: index, expectedOwner: owner, actualOwner: owner_});\n }\n\n MultiOwnableStorage storage $ = _getMultiOwnableStorage();\n delete $.isOwner[owner];\n delete $.ownerAtIndex[index];\n $.removedOwnersCount++;\n\n emit RemoveOwner(index, owner);\n }\n\n /// @notice Checks if the sender is an owner of this contract or the contract itself.\n ///\n /// @dev Revert if the sender is not an owner fo the contract itself.\n function _checkOwner() internal view virtual {\n if (isOwnerAddress(msg.sender) || (msg.sender == address(this))) {\n return;\n }\n\n revert Unauthorized();\n }\n\n /// @notice Helper function to get a storage reference to the `MultiOwnableStorage` struct.\n ///\n /// @return $ A storage reference to the `MultiOwnableStorage` struct.\n function _getMultiOwnableStorage() internal pure returns (MultiOwnableStorage storage $) {\n assembly (\"memory-safe\") {\n $.slot := MUTLI_OWNABLE_STORAGE_LOCATION\n }\n }\n}\n" + }, + "src/utils/ERC1271InputGenerator.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {GianoSmartWallet} from \"../GianoSmartWallet.sol\";\n\n/// @title ERC1271 Input Generator\n///\n/// @notice Helper contract for generating an ERC-1271 input hash to sign for deployed and undeployed\n/// GianoSmartWallet. May be useful for generating ERC-6492 compliant signatures.\n/// Inspired by Ambire's DeploylessUniversalSigValidator\n/// https://github.com/AmbireTech/signature-validator/blob/d5f84f5fc00bfdf79b80205b983a8258b6d1b3ea/contracts/DeploylessUniversalSigValidator.sol.\n///\n/// @dev This contract is not meant to ever actually be deployed, only mock deployed and used via a static eth_call.\n///\n/// @author Applied Blockchain (https://github.com/appliedblockchain/giano)\n/// @author Coinbase (https://github.com/coinbase/smart-wallet)\ncontract ERC1271InputGenerator {\n /// @notice Thrown when call to `accountFactory` with `factoryCalldata` fails.\n error AccountDeploymentFailed();\n\n /// @notice Thrown when the address returned from call to `accountFactory` does not\n /// match passed account\n ///\n /// @param account The passed account\n /// @param returned The returned account\n error ReturnedAddressDoesNotMatchAccount(address account, address returned);\n\n /// @notice Computes and returns the expected ERC-1271 replay-safe hash for a GianoSmartWallet.\n ///\n /// @dev `accountFactory` can be any address if the account is already deployed.\n /// @dev `factoryCalldata` can be 0x if the account is already deployed.\n /// @dev If calling with solidity, the `replaySafeHash` will be `.code`.\n ///\n /// @param account The account that will receive the ERC-1271 `isValidSignature` call.\n /// @param hash The hash the wallet was asked to sign.\n /// @param accountFactory The factory that will be used to deploy the account (if not already deployed).\n /// @param factoryCalldata The calldata that will be used to deploy the account (if not already deployed).\n constructor(GianoSmartWallet account, bytes32 hash, address accountFactory, bytes memory factoryCalldata) {\n // This allows us to get a replay-safe hash on any deployed or undeployed account\n // in a single eth_call, i.e. without deploying the contract. We do this by calling replaySafeHash on a deployed\n // account,\n // or by simulating the deployment of an undeployed account and then calling replaySafeHash on it.\n bytes32 replaySafeHash = _gianoSmartWallet1271Input(account, hash, accountFactory, factoryCalldata);\n assembly {\n // store replay safe hash\n mstore(0x80, replaySafeHash)\n // return replay safe hash\n return(0x80, 0x20)\n }\n }\n\n /// @notice Helper method to get a replay-safe hash from the given `account` by calling its `replaySafeHash()`\n /// method.\n ///\n ///\n /// @dev Deploys the account if not already deployed before calling `replaySafeHash` on it.\n /// @dev Implements ERC-6492, see https://eips.ethereum.org/EIPS/eip-6492.\n ///\n /// @param account The account that will receive the ERC-1271 `isValidSignature` call.\n /// @param hash The hash the wallet was asked to sign.\n /// @param accountFactory The factory that will be used to deploy the account (if not already deployed).\n /// @param factoryCalldata The calldata that will be used to deploy the account (if not already deployed).\n ///\n /// @return The replay-safe hash.\n function _gianoSmartWallet1271Input(\n GianoSmartWallet account,\n bytes32 hash,\n address accountFactory,\n bytes memory factoryCalldata\n ) internal returns (bytes32) {\n // If the account is already deployed, call and return replaySafeHash.\n if (address(account).code.length > 0) {\n return account.replaySafeHash(hash);\n }\n\n // Deploy the account.\n (bool success, bytes memory result) = accountFactory.call(factoryCalldata);\n if (!success) {\n revert AccountDeploymentFailed();\n }\n\n address returnAddress = abi.decode(result, (address));\n if (returnAddress != address(account)) {\n revert ReturnedAddressDoesNotMatchAccount(address(account), returnAddress);\n }\n\n // Call and return replaySafeHash on the now-deployed account.\n return account.replaySafeHash(hash);\n }\n}\n" + }, + "webauthn-sol/WebAuthn.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {FCL_ecdsa} from \"FreshCryptoLib/FCL_ecdsa.sol\";\nimport {FCL_Elliptic_ZZ} from \"FreshCryptoLib/FCL_elliptic.sol\";\nimport {Base64} from \"openzeppelin-contracts/contracts/utils/Base64.sol\";\nimport {LibString} from \"solady/utils/LibString.sol\";\n\n/// @title WebAuthn\n///\n/// @notice A library for verifying WebAuthn Authentication Assertions, built off the work\n/// of Daimo.\n///\n/// @dev Attempts to use the RIP-7212 precompile for signature verification.\n/// If precompile verification fails, it falls back to FreshCryptoLib.\n///\n/// @author Coinbase (https://github.com/base-org/webauthn-sol)\n/// @author Daimo (https://github.com/daimo-eth/p256-verifier/blob/master/src/WebAuthn.sol)\nlibrary WebAuthn {\n using LibString for string;\n\n struct WebAuthnAuth {\n /// @dev The WebAuthn authenticator data.\n /// See https://www.w3.org/TR/webauthn-2/#dom-authenticatorassertionresponse-authenticatordata.\n bytes authenticatorData;\n /// @dev The WebAuthn client data JSON.\n /// See https://www.w3.org/TR/webauthn-2/#dom-authenticatorresponse-clientdatajson.\n string clientDataJSON;\n /// @dev The index at which \"challenge\":\"...\" occurs in `clientDataJSON`.\n uint256 challengeIndex;\n /// @dev The index at which \"type\":\"...\" occurs in `clientDataJSON`.\n uint256 typeIndex;\n /// @dev The r value of secp256r1 signature\n uint256 r;\n /// @dev The s value of secp256r1 signature\n uint256 s;\n }\n\n /// @dev Bit 0 of the authenticator data struct, corresponding to the \"User Present\" bit.\n /// See https://www.w3.org/TR/webauthn-2/#flags.\n bytes1 private constant _AUTH_DATA_FLAGS_UP = 0x01;\n\n /// @dev Bit 2 of the authenticator data struct, corresponding to the \"User Verified\" bit.\n /// See https://www.w3.org/TR/webauthn-2/#flags.\n bytes1 private constant _AUTH_DATA_FLAGS_UV = 0x04;\n\n /// @dev Secp256r1 curve order / 2 used as guard to prevent signature malleability issue.\n uint256 private constant _P256_N_DIV_2 = FCL_Elliptic_ZZ.n / 2;\n\n /// @dev The precompiled contract address to use for signature verification in the “secp256r1” elliptic curve.\n /// See https://github.com/ethereum/RIPs/blob/master/RIPS/rip-7212.md.\n address private constant _VERIFIER = address(0x100);\n\n /// @dev The expected type (hash) in the client data JSON when verifying assertion signatures.\n /// See https://www.w3.org/TR/webauthn-2/#dom-collectedclientdata-type\n bytes32 private constant _EXPECTED_TYPE_HASH = keccak256('\"type\":\"webauthn.get\"');\n\n ///\n /// @notice Verifies a Webauthn Authentication Assertion as described\n /// in https://www.w3.org/TR/webauthn-2/#sctn-verifying-assertion.\n ///\n /// @dev We do not verify all the steps as described in the specification, only ones relevant to our context.\n /// Please carefully read through this list before usage.\n ///\n /// Specifically, we do verify the following:\n /// - Verify that authenticatorData (which comes from the authenticator, such as iCloud Keychain) indicates\n /// a well-formed assertion with the user present bit set. If `requireUV` is set, checks that the authenticator\n /// enforced user verification. User verification should be required if, and only if, options.userVerification\n /// is set to required in the request.\n /// - Verifies that the client JSON is of type \"webauthn.get\", i.e. the client was responding to a request to\n /// assert authentication.\n /// - Verifies that the client JSON contains the requested challenge.\n /// - Verifies that (r, s) constitute a valid signature over both the authenicatorData and client JSON, for public\n /// key (x, y).\n ///\n /// We make some assumptions about the particular use case of this verifier, so we do NOT verify the following:\n /// - Does NOT verify that the origin in the `clientDataJSON` matches the Relying Party's origin: tt is considered\n /// the authenticator's responsibility to ensure that the user is interacting with the correct RP. This is\n /// enforced by most high quality authenticators properly, particularly the iCloud Keychain and Google Password\n /// Manager were tested.\n /// - Does NOT verify That `topOrigin` in `clientDataJSON` is well-formed: We assume it would never be present, i.e.\n /// the credentials are never used in a cross-origin/iframe context. The website/app set up should disallow\n /// cross-origin usage of the credentials. This is the default behaviour for created credentials in common settings.\n /// - Does NOT verify that the `rpIdHash` in `authenticatorData` is the SHA-256 hash of the RP ID expected by the Relying\n /// Party: this means that we rely on the authenticator to properly enforce credentials to be used only by the correct RP.\n /// This is generally enforced with features like Apple App Site Association and Google Asset Links. To protect from\n /// edge cases in which a previously-linked RP ID is removed from the authorised RP IDs, we recommend that messages\n /// signed by the authenticator include some expiry mechanism.\n /// - Does NOT verify the credential backup state: this assumes the credential backup state is NOT used as part of Relying\n /// Party business logic or policy.\n /// - Does NOT verify the values of the client extension outputs: this assumes that the Relying Party does not use client\n /// extension outputs.\n /// - Does NOT verify the signature counter: signature counters are intended to enable risk scoring for the Relying Party.\n /// This assumes risk scoring is not used as part of Relying Party business logic or policy.\n /// - Does NOT verify the attestation object: this assumes that response.attestationObject is NOT present in the response,\n /// i.e. the RP does not intend to verify an attestation.\n ///\n /// @param challenge The challenge that was provided by the relying party.\n /// @param requireUV A boolean indicating whether user verification is required.\n /// @param webAuthnAuth The `WebAuthnAuth` struct.\n /// @param x The x coordinate of the public key.\n /// @param y The y coordinate of the public key.\n ///\n /// @return `true` if the authentication assertion passed validation, else `false`.\n function verify(bytes memory challenge, bool requireUV, WebAuthnAuth memory webAuthnAuth, uint256 x, uint256 y)\n internal\n view\n returns (bool)\n {\n if (webAuthnAuth.s > _P256_N_DIV_2) {\n // guard against signature malleability\n return false;\n }\n\n // 11. Verify that the value of C.type is the string webauthn.get.\n // bytes(\"type\":\"webauthn.get\").length = 21\n string memory _type = webAuthnAuth.clientDataJSON.slice(webAuthnAuth.typeIndex, webAuthnAuth.typeIndex + 21);\n if (keccak256(bytes(_type)) != _EXPECTED_TYPE_HASH) {\n return false;\n }\n\n // 12. Verify that the value of C.challenge equals the base64url encoding of options.challenge.\n bytes memory expectedChallenge = bytes(string.concat('\"challenge\":\"', Base64.encodeURL(challenge), '\"'));\n string memory actualChallenge =\n webAuthnAuth.clientDataJSON.slice(webAuthnAuth.challengeIndex, webAuthnAuth.challengeIndex + expectedChallenge.length);\n if (keccak256(bytes(actualChallenge)) != keccak256(expectedChallenge)) {\n return false;\n }\n\n // Skip 13., 14., 15.\n\n // 16. Verify that the UP bit of the flags in authData is set.\n if (webAuthnAuth.authenticatorData[32] & _AUTH_DATA_FLAGS_UP != _AUTH_DATA_FLAGS_UP) {\n return false;\n }\n\n // 17. If user verification is required for this assertion, verify that the User Verified bit of the flags in\n // authData is set.\n if (requireUV && (webAuthnAuth.authenticatorData[32] & _AUTH_DATA_FLAGS_UV) != _AUTH_DATA_FLAGS_UV) {\n return false;\n }\n\n // skip 18.\n\n // 19. Let hash be the result of computing a hash over the cData using SHA-256.\n bytes32 clientDataJSONHash = sha256(bytes(webAuthnAuth.clientDataJSON));\n\n // 20. Using credentialPublicKey, verify that sig is a valid signature over the binary concatenation of authData\n // and hash.\n bytes32 messageHash = sha256(abi.encodePacked(webAuthnAuth.authenticatorData, clientDataJSONHash));\n bytes memory args = abi.encode(messageHash, webAuthnAuth.r, webAuthnAuth.s, x, y);\n // try the RIP-7212 precompile address\n (bool success, bytes memory ret) = _VERIFIER.staticcall(args);\n // staticcall will not revert if address has no code\n // check return length\n // note that even if precompile exists, ret.length is 0 when verification returns false\n // so an invalid signature will be checked twice: once by the precompile and once by FCL.\n // Ideally this signature failure is simulated offchain and no one actually pay this gas.\n bool valid = ret.length > 0;\n if (success && valid) return abi.decode(ret, (uint256)) == 1;\n\n return FCL_ecdsa.ecdsa_verify(messageHash, webAuthnAuth.r, webAuthnAuth.s, x, y);\n }\n}\n" + } + }, + "settings": { + "optimizer": { + "enabled": true, + "runs": 200 + }, + "viaIR": true, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "output": { + "errors": [ + { + "component": "general", + "errorCode": "2018", + "formattedMessage": "Warning: Function state mutability can be restricted to pure\n --> src/AuthenticatedStaticCaller.sol:19:5:\n |\n19 | function getSignatureLifetime() external view returns (uint256) {\n | ^ (Relevant source part starts here and spans across multiple lines).\n\n", + "message": "Function state mutability can be restricted to pure", + "severity": "warning", + "sourceLocation": { + "end": 559, + "file": "src/AuthenticatedStaticCaller.sol", + "start": 454 + }, + "type": "Warning" + } + ], + "sources": { + "@account-abstraction/contracts/core/Helpers.sol": { + "ast": { + "absolutePath": "@account-abstraction/contracts/core/Helpers.sol", + "exportedSymbols": { + "SIG_VALIDATION_FAILED": [ + 4 + ], + "SIG_VALIDATION_SUCCESS": [ + 7 + ], + "ValidationData": [ + 15 + ], + "_packValidationData": [ + 112, + 150 + ], + "_parseValidationData": [ + 75 + ], + "calldataKeccak": [ + 160 + ], + "min": [ + 178 + ] + }, + "id": 179, + "license": "GPL-3.0", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "^", + "0.8", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "36:24:0" + }, + { + "constant": true, + "id": 4, + "mutability": "constant", + "name": "SIG_VALIDATION_FAILED", + "nameLocation": "281:21:0", + "nodeType": "VariableDeclaration", + "scope": 179, + "src": "264:42:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "264:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "31", + "id": 3, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "305:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 7, + "mutability": "constant", + "name": "SIG_VALIDATION_SUCCESS", + "nameLocation": "440:22:0", + "nodeType": "VariableDeclaration", + "scope": 179, + "src": "423:43:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "423:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "30", + "id": 6, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "465:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "visibility": "internal" + }, + { + "canonicalName": "ValidationData", + "documentation": { + "id": 8, + "nodeType": "StructuredDocumentation", + "src": "470:640:0", + "text": " Returned data from validateUserOp.\n validateUserOp returns a uint256, which is created by `_packedValidationData` and\n parsed by `_parseValidationData`.\n @param aggregator - address(0) - The account validated the signature by itself.\n address(1) - The account failed to validate the signature.\n otherwise - This is an address of a signature aggregator that must\n be used to validate the signature.\n @param validAfter - This UserOp is valid only after this timestamp.\n @param validaUntil - This UserOp is valid only up to this timestamp." + }, + "id": 15, + "members": [ + { + "constant": false, + "id": 10, + "mutability": "mutable", + "name": "aggregator", + "nameLocation": "1147:10:0", + "nodeType": "VariableDeclaration", + "scope": 15, + "src": "1139:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1139:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12, + "mutability": "mutable", + "name": "validAfter", + "nameLocation": "1170:10:0", + "nodeType": "VariableDeclaration", + "scope": 15, + "src": "1163:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + }, + "typeName": { + "id": 11, + "name": "uint48", + "nodeType": "ElementaryTypeName", + "src": "1163:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14, + "mutability": "mutable", + "name": "validUntil", + "nameLocation": "1193:10:0", + "nodeType": "VariableDeclaration", + "scope": 15, + "src": "1186:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + }, + "typeName": { + "id": 13, + "name": "uint48", + "nodeType": "ElementaryTypeName", + "src": "1186:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "visibility": "internal" + } + ], + "name": "ValidationData", + "nameLocation": "1118:14:0", + "nodeType": "StructDefinition", + "scope": 179, + "src": "1111:95:0", + "visibility": "public" + }, + { + "body": { + "id": 74, + "nodeType": "Block", + "src": "1472:314:0", + "statements": [ + { + "assignments": [ + 25 + ], + "declarations": [ + { + "constant": false, + "id": 25, + "mutability": "mutable", + "name": "aggregator", + "nameLocation": "1486:10:0", + "nodeType": "VariableDeclaration", + "scope": 74, + "src": "1478:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 24, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1478:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 33, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 30, + "name": "validationData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18, + "src": "1515:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 29, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1507:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 28, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "1507:7:0", + "typeDescriptions": {} + } + }, + "id": 31, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1507:23:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 27, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1499:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 26, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1499:7:0", + "typeDescriptions": {} + } + }, + "id": 32, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1499:32:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1478:53:0" + }, + { + "assignments": [ + 35 + ], + "declarations": [ + { + "constant": false, + "id": 35, + "mutability": "mutable", + "name": "validUntil", + "nameLocation": "1544:10:0", + "nodeType": "VariableDeclaration", + "scope": 74, + "src": "1537:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + }, + "typeName": { + "id": 34, + "name": "uint48", + "nodeType": "ElementaryTypeName", + "src": "1537:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "visibility": "internal" + } + ], + "id": 42, + "initialValue": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 40, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 38, + "name": "validationData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18, + "src": "1564:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "313630", + "id": 39, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1582:3:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_160_by_1", + "typeString": "int_const 160" + }, + "value": "160" + }, + "src": "1564:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 37, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1557:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint48_$", + "typeString": "type(uint48)" + }, + "typeName": { + "id": 36, + "name": "uint48", + "nodeType": "ElementaryTypeName", + "src": "1557:6:0", + "typeDescriptions": {} + } + }, + "id": 41, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1557:29:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1537:49:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + }, + "id": 45, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 43, + "name": "validUntil", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "1596:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 44, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1610:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1596:15:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 55, + "nodeType": "IfStatement", + "src": "1592:67:0", + "trueBody": { + "id": 54, + "nodeType": "Block", + "src": "1613:46:0", + "statements": [ + { + "expression": { + "id": 52, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 46, + "name": "validUntil", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "1623:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "arguments": [ + { + "id": 49, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1641:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint48_$", + "typeString": "type(uint48)" + }, + "typeName": { + "id": 48, + "name": "uint48", + "nodeType": "ElementaryTypeName", + "src": "1641:6:0", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint48_$", + "typeString": "type(uint48)" + } + ], + "id": 47, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "1636:4:0", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 50, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1636:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint48", + "typeString": "type(uint48)" + } + }, + "id": 51, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1649:3:0", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "1636:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "src": "1623:29:0", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "id": 53, + "nodeType": "ExpressionStatement", + "src": "1623:29:0" + } + ] + } + }, + { + "assignments": [ + 57 + ], + "declarations": [ + { + "constant": false, + "id": 57, + "mutability": "mutable", + "name": "validAfter", + "nameLocation": "1671:10:0", + "nodeType": "VariableDeclaration", + "scope": 74, + "src": "1664:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + }, + "typeName": { + "id": 56, + "name": "uint48", + "nodeType": "ElementaryTypeName", + "src": "1664:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "visibility": "internal" + } + ], + "id": 67, + "initialValue": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 65, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 60, + "name": "validationData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18, + "src": "1691:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_rational_208_by_1", + "typeString": "int_const 208" + }, + "id": 63, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3438", + "id": 61, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1710:2:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_48_by_1", + "typeString": "int_const 48" + }, + "value": "48" + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "313630", + "id": 62, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1715:3:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_160_by_1", + "typeString": "int_const 160" + }, + "value": "160" + }, + "src": "1710:8:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_208_by_1", + "typeString": "int_const 208" + } + } + ], + "id": 64, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1709:10:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_208_by_1", + "typeString": "int_const 208" + } + }, + "src": "1691:28:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 59, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1684:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint48_$", + "typeString": "type(uint48)" + }, + "typeName": { + "id": 58, + "name": "uint48", + "nodeType": "ElementaryTypeName", + "src": "1684:6:0", + "typeDescriptions": {} + } + }, + "id": 66, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1684:36:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1664:56:0" + }, + { + "expression": { + "arguments": [ + { + "id": 69, + "name": "aggregator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 25, + "src": "1748:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 70, + "name": "validAfter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57, + "src": "1760:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + { + "id": 71, + "name": "validUntil", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "1772:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + }, + { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + ], + "id": 68, + "name": "ValidationData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15, + "src": "1733:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_ValidationData_$15_storage_ptr_$", + "typeString": "type(struct ValidationData storage pointer)" + } + }, + "id": 72, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1733:50:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ValidationData_$15_memory_ptr", + "typeString": "struct ValidationData memory" + } + }, + "functionReturnParameters": 23, + "id": 73, + "nodeType": "Return", + "src": "1726:57:0" + } + ] + }, + "documentation": { + "id": 16, + "nodeType": "StructuredDocumentation", + "src": "1208:161:0", + "text": " Extract sigFailed, validAfter, validUntil.\n Also convert zero validUntil to type(uint48).max.\n @param validationData - The packed validation data." + }, + "id": 75, + "implemented": true, + "kind": "freeFunction", + "modifiers": [], + "name": "_parseValidationData", + "nameLocation": "1379:20:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 19, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 18, + "mutability": "mutable", + "name": "validationData", + "nameLocation": "1413:14:0", + "nodeType": "VariableDeclaration", + "scope": 75, + "src": "1405:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 17, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1405:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1399:30:0" + }, + "returnParameters": { + "id": 23, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 22, + "mutability": "mutable", + "name": "data", + "nameLocation": "1466:4:0", + "nodeType": "VariableDeclaration", + "scope": 75, + "src": "1444:26:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ValidationData_$15_memory_ptr", + "typeString": "struct ValidationData" + }, + "typeName": { + "id": 21, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 20, + "name": "ValidationData", + "nameLocations": [ + "1444:14:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 15, + "src": "1444:14:0" + }, + "referencedDeclaration": 15, + "src": "1444:14:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ValidationData_$15_storage_ptr", + "typeString": "struct ValidationData" + } + }, + "visibility": "internal" + } + ], + "src": "1443:28:0" + }, + "scope": 179, + "src": "1370:416:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 111, + "nodeType": "Block", + "src": "1982:143:0", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 109, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 97, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "expression": { + "id": 86, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 79, + "src": "2011:4:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ValidationData_$15_memory_ptr", + "typeString": "struct ValidationData memory" + } + }, + "id": 87, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2016:10:0", + "memberName": "aggregator", + "nodeType": "MemberAccess", + "referencedDeclaration": 10, + "src": "2011:15:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 85, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2003:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 84, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "2003:7:0", + "typeDescriptions": {} + } + }, + "id": 88, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2003:24:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "nodeType": "BinaryOperation", + "operator": "|", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 95, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "expression": { + "id": 91, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 79, + "src": "2047:4:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ValidationData_$15_memory_ptr", + "typeString": "struct ValidationData memory" + } + }, + "id": 92, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2052:10:0", + "memberName": "validUntil", + "nodeType": "MemberAccess", + "referencedDeclaration": 14, + "src": "2047:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + ], + "id": 90, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2039:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 89, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2039:7:0", + "typeDescriptions": {} + } + }, + "id": 93, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2039:24:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "313630", + "id": 94, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2067:3:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_160_by_1", + "typeString": "int_const 160" + }, + "value": "160" + }, + "src": "2039:31:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 96, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2038:33:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2003:68:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "|", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 107, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "expression": { + "id": 100, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 79, + "src": "2091:4:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ValidationData_$15_memory_ptr", + "typeString": "struct ValidationData memory" + } + }, + "id": 101, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2096:10:0", + "memberName": "validAfter", + "nodeType": "MemberAccess", + "referencedDeclaration": 12, + "src": "2091:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + ], + "id": 99, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2083:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 98, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2083:7:0", + "typeDescriptions": {} + } + }, + "id": 102, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2083:24:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_rational_208_by_1", + "typeString": "int_const 208" + }, + "id": 105, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "313630", + "id": 103, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2112:3:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_160_by_1", + "typeString": "int_const 160" + }, + "value": "160" + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "3438", + "id": 104, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2118:2:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_48_by_1", + "typeString": "int_const 48" + }, + "value": "48" + }, + "src": "2112:8:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_208_by_1", + "typeString": "int_const 208" + } + } + ], + "id": 106, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2111:10:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_208_by_1", + "typeString": "int_const 208" + } + }, + "src": "2083:38:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 108, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2082:40:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2003:119:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 83, + "id": 110, + "nodeType": "Return", + "src": "1988:134:0" + } + ] + }, + "documentation": { + "id": 76, + "nodeType": "StructuredDocumentation", + "src": "1788:107:0", + "text": " Helper to pack the return value for validateUserOp.\n @param data - The ValidationData to pack." + }, + "id": 112, + "implemented": true, + "kind": "freeFunction", + "modifiers": [], + "name": "_packValidationData", + "nameLocation": "1905:19:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 80, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 79, + "mutability": "mutable", + "name": "data", + "nameLocation": "1952:4:0", + "nodeType": "VariableDeclaration", + "scope": 112, + "src": "1930:26:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ValidationData_$15_memory_ptr", + "typeString": "struct ValidationData" + }, + "typeName": { + "id": 78, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 77, + "name": "ValidationData", + "nameLocations": [ + "1930:14:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 15, + "src": "1930:14:0" + }, + "referencedDeclaration": 15, + "src": "1930:14:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ValidationData_$15_storage_ptr", + "typeString": "struct ValidationData" + } + }, + "visibility": "internal" + } + ], + "src": "1924:34:0" + }, + "returnParameters": { + "id": 83, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 82, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 112, + "src": "1973:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 81, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1973:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1972:9:0" + }, + "scope": 179, + "src": "1896:229:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 149, + "nodeType": "Block", + "src": "2568:128:0", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 147, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 136, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "condition": { + "id": 124, + "name": "sigFailed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 115, + "src": "2590:9:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "hexValue": "30", + "id": 126, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2606:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "id": 127, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "2590:17:0", + "trueExpression": { + "hexValue": "31", + "id": 125, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2602:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "id": 128, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2589:19:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "|", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 134, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 131, + "name": "validUntil", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 117, + "src": "2628:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + ], + "id": 130, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2620:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 129, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2620:7:0", + "typeDescriptions": {} + } + }, + "id": 132, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2620:19:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "313630", + "id": 133, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2643:3:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_160_by_1", + "typeString": "int_const 160" + }, + "value": "160" + }, + "src": "2620:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 135, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2619:28:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2589:58:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "|", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 139, + "name": "validAfter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "2667:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + ], + "id": 138, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2659:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 137, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2659:7:0", + "typeDescriptions": {} + } + }, + "id": 140, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2659:19:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_rational_208_by_1", + "typeString": "int_const 208" + }, + "id": 143, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "313630", + "id": 141, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2683:3:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_160_by_1", + "typeString": "int_const 160" + }, + "value": "160" + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "3438", + "id": 142, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2689:2:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_48_by_1", + "typeString": "int_const 48" + }, + "value": "48" + }, + "src": "2683:8:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_208_by_1", + "typeString": "int_const 208" + } + } + ], + "id": 144, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2682:10:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_208_by_1", + "typeString": "int_const 208" + } + }, + "src": "2659:33:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 146, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2658:35:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2589:104:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 123, + "id": 148, + "nodeType": "Return", + "src": "2574:119:0" + } + ] + }, + "documentation": { + "id": 113, + "nodeType": "StructuredDocumentation", + "src": "2127:320:0", + "text": " Helper to pack the return value for validateUserOp, when not using an aggregator.\n @param sigFailed - True for signature failure, false for success.\n @param validUntil - Last timestamp this UserOperation is valid (or zero for infinite).\n @param validAfter - First timestamp this UserOperation is valid." + }, + "id": 150, + "implemented": true, + "kind": "freeFunction", + "modifiers": [], + "name": "_packValidationData", + "nameLocation": "2457:19:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 120, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 115, + "mutability": "mutable", + "name": "sigFailed", + "nameLocation": "2487:9:0", + "nodeType": "VariableDeclaration", + "scope": 150, + "src": "2482:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 114, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2482:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 117, + "mutability": "mutable", + "name": "validUntil", + "nameLocation": "2509:10:0", + "nodeType": "VariableDeclaration", + "scope": 150, + "src": "2502:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + }, + "typeName": { + "id": 116, + "name": "uint48", + "nodeType": "ElementaryTypeName", + "src": "2502:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 119, + "mutability": "mutable", + "name": "validAfter", + "nameLocation": "2532:10:0", + "nodeType": "VariableDeclaration", + "scope": 150, + "src": "2525:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + }, + "typeName": { + "id": 118, + "name": "uint48", + "nodeType": "ElementaryTypeName", + "src": "2525:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "visibility": "internal" + } + ], + "src": "2476:68:0" + }, + "returnParameters": { + "id": 123, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 122, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 150, + "src": "2559:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 121, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2559:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2558:9:0" + }, + "scope": 179, + "src": "2448:248:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 159, + "nodeType": "Block", + "src": "2951:209:0", + "statements": [ + { + "AST": { + "nativeSrc": "2986:168:0", + "nodeType": "YulBlock", + "src": "2986:168:0", + "statements": [ + { + "nativeSrc": "3000:22:0", + "nodeType": "YulVariableDeclaration", + "src": "3000:22:0", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3017:4:0", + "nodeType": "YulLiteral", + "src": "3017:4:0", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "3011:5:0", + "nodeType": "YulIdentifier", + "src": "3011:5:0" + }, + "nativeSrc": "3011:11:0", + "nodeType": "YulFunctionCall", + "src": "3011:11:0" + }, + "variables": [ + { + "name": "mem", + "nativeSrc": "3004:3:0", + "nodeType": "YulTypedName", + "src": "3004:3:0", + "type": "" + } + ] + }, + { + "nativeSrc": "3035:22:0", + "nodeType": "YulVariableDeclaration", + "src": "3035:22:0", + "value": { + "name": "data.length", + "nativeSrc": "3046:11:0", + "nodeType": "YulIdentifier", + "src": "3046:11:0" + }, + "variables": [ + { + "name": "len", + "nativeSrc": "3039:3:0", + "nodeType": "YulTypedName", + "src": "3039:3:0", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "mem", + "nativeSrc": "3083:3:0", + "nodeType": "YulIdentifier", + "src": "3083:3:0" + }, + { + "name": "data.offset", + "nativeSrc": "3088:11:0", + "nodeType": "YulIdentifier", + "src": "3088:11:0" + }, + { + "name": "len", + "nativeSrc": "3101:3:0", + "nodeType": "YulIdentifier", + "src": "3101:3:0" + } + ], + "functionName": { + "name": "calldatacopy", + "nativeSrc": "3070:12:0", + "nodeType": "YulIdentifier", + "src": "3070:12:0" + }, + "nativeSrc": "3070:35:0", + "nodeType": "YulFunctionCall", + "src": "3070:35:0" + }, + "nativeSrc": "3070:35:0", + "nodeType": "YulExpressionStatement", + "src": "3070:35:0" + }, + { + "nativeSrc": "3118:26:0", + "nodeType": "YulAssignment", + "src": "3118:26:0", + "value": { + "arguments": [ + { + "name": "mem", + "nativeSrc": "3135:3:0", + "nodeType": "YulIdentifier", + "src": "3135:3:0" + }, + { + "name": "len", + "nativeSrc": "3140:3:0", + "nodeType": "YulIdentifier", + "src": "3140:3:0" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "3125:9:0", + "nodeType": "YulIdentifier", + "src": "3125:9:0" + }, + "nativeSrc": "3125:19:0", + "nodeType": "YulFunctionCall", + "src": "3125:19:0" + }, + "variableNames": [ + { + "name": "ret", + "nativeSrc": "3118:3:0", + "nodeType": "YulIdentifier", + "src": "3118:3:0" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 153, + "isOffset": false, + "isSlot": false, + "src": "3046:11:0", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 153, + "isOffset": true, + "isSlot": false, + "src": "3088:11:0", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 156, + "isOffset": false, + "isSlot": false, + "src": "3118:3:0", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 158, + "nodeType": "InlineAssembly", + "src": "2961:193:0" + } + ] + }, + "documentation": { + "id": 151, + "nodeType": "StructuredDocumentation", + "src": "2698:176:0", + "text": " keccak function over calldata.\n @dev copy calldata into memory, do keccak and drop allocated memory. Strangely, this is more efficient than letting solidity do it." + }, + "id": 160, + "implemented": true, + "kind": "freeFunction", + "modifiers": [], + "name": "calldataKeccak", + "nameLocation": "2888:14:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 154, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 153, + "mutability": "mutable", + "name": "data", + "nameLocation": "2918:4:0", + "nodeType": "VariableDeclaration", + "scope": 160, + "src": "2903:19:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 152, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2903:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "2902:21:0" + }, + "returnParameters": { + "id": 157, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 156, + "mutability": "mutable", + "name": "ret", + "nameLocation": "2946:3:0", + "nodeType": "VariableDeclaration", + "scope": 160, + "src": "2938:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 155, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2938:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2937:13:0" + }, + "scope": 179, + "src": "2879:281:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 177, + "nodeType": "Block", + "src": "3321:37:0", + "statements": [ + { + "expression": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 170, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "3338:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 171, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "3342:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3338:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "id": 174, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "3350:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 175, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "3338:13:0", + "trueExpression": { + "id": 173, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "3346:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 169, + "id": 176, + "nodeType": "Return", + "src": "3331:20:0" + } + ] + }, + "documentation": { + "id": 161, + "nodeType": "StructuredDocumentation", + "src": "3163:95:0", + "text": " The minimum of two numbers.\n @param a - First number.\n @param b - Second number." + }, + "id": 178, + "implemented": true, + "kind": "freeFunction", + "modifiers": [], + "name": "min", + "nameLocation": "3272:3:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 166, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 163, + "mutability": "mutable", + "name": "a", + "nameLocation": "3284:1:0", + "nodeType": "VariableDeclaration", + "scope": 178, + "src": "3276:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 162, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3276:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 165, + "mutability": "mutable", + "name": "b", + "nameLocation": "3295:1:0", + "nodeType": "VariableDeclaration", + "scope": 178, + "src": "3287:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 164, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3287:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3275:22:0" + }, + "returnParameters": { + "id": 169, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 168, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 178, + "src": "3312:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 167, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3312:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3311:9:0" + }, + "scope": 179, + "src": "3263:95:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "src": "36:3323:0" + }, + "id": 0 + }, + "@account-abstraction/contracts/core/UserOperationLib.sol": { + "ast": { + "absolutePath": "@account-abstraction/contracts/core/UserOperationLib.sol", + "exportedSymbols": { + "PackedUserOperation": [ + 574 + ], + "UserOperationLib": [ + 535 + ], + "calldataKeccak": [ + 160 + ], + "min": [ + 178 + ] + }, + "id": 536, + "license": "GPL-3.0", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 180, + "literals": [ + "solidity", + "^", + "0.8", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "36:24:1" + }, + { + "absolutePath": "@account-abstraction/contracts/interfaces/PackedUserOperation.sol", + "file": "../interfaces/PackedUserOperation.sol", + "id": 181, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 536, + "sourceUnit": 575, + "src": "104:47:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@account-abstraction/contracts/core/Helpers.sol", + "file": "./Helpers.sol", + "id": 184, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 536, + "sourceUnit": 179, + "src": "152:50:1", + "symbolAliases": [ + { + "foreign": { + "id": 182, + "name": "calldataKeccak", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 160, + "src": "160:14:1", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 183, + "name": "min", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 178, + "src": "176:3:1", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "UserOperationLib", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 185, + "nodeType": "StructuredDocumentation", + "src": "204:77:1", + "text": " Utility functions helpful when working with UserOperation structs." + }, + "fullyImplemented": true, + "id": 535, + "linearizedBaseContracts": [ + 535 + ], + "name": "UserOperationLib", + "nameLocation": "290:16:1", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "functionSelector": "b29a8ff4", + "id": 188, + "mutability": "constant", + "name": "PAYMASTER_VALIDATION_GAS_OFFSET", + "nameLocation": "338:31:1", + "nodeType": "VariableDeclaration", + "scope": 535, + "src": "314:60:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 186, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "314:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "3230", + "id": 187, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "372:2:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_20_by_1", + "typeString": "int_const 20" + }, + "value": "20" + }, + "visibility": "public" + }, + { + "constant": true, + "functionSelector": "25093e1b", + "id": 191, + "mutability": "constant", + "name": "PAYMASTER_POSTOP_GAS_OFFSET", + "nameLocation": "404:27:1", + "nodeType": "VariableDeclaration", + "scope": 535, + "src": "380:56:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 189, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "380:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "3336", + "id": 190, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "434:2:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_36_by_1", + "typeString": "int_const 36" + }, + "value": "36" + }, + "visibility": "public" + }, + { + "constant": true, + "functionSelector": "ede31502", + "id": 194, + "mutability": "constant", + "name": "PAYMASTER_DATA_OFFSET", + "nameLocation": "466:21:1", + "nodeType": "VariableDeclaration", + "scope": 535, + "src": "442:50:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 192, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "442:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "3532", + "id": 193, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "490:2:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_52_by_1", + "typeString": "int_const 52" + }, + "value": "52" + }, + "visibility": "public" + }, + { + "body": { + "id": 215, + "nodeType": "Block", + "src": "708:221:1", + "statements": [ + { + "assignments": [ + 204 + ], + "declarations": [ + { + "constant": false, + "id": 204, + "mutability": "mutable", + "name": "data", + "nameLocation": "726:4:1", + "nodeType": "VariableDeclaration", + "scope": 215, + "src": "718:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 203, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "718:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 205, + "nodeType": "VariableDeclarationStatement", + "src": "718:12:1" + }, + { + "AST": { + "nativeSrc": "832:52:1", + "nodeType": "YulBlock", + "src": "832:52:1", + "statements": [ + { + "nativeSrc": "846:28:1", + "nodeType": "YulAssignment", + "src": "846:28:1", + "value": { + "arguments": [ + { + "name": "userOp", + "nativeSrc": "867:6:1", + "nodeType": "YulIdentifier", + "src": "867:6:1" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "854:12:1", + "nodeType": "YulIdentifier", + "src": "854:12:1" + }, + "nativeSrc": "854:20:1", + "nodeType": "YulFunctionCall", + "src": "854:20:1" + }, + "variableNames": [ + { + "name": "data", + "nativeSrc": "846:4:1", + "nodeType": "YulIdentifier", + "src": "846:4:1" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 204, + "isOffset": false, + "isSlot": false, + "src": "846:4:1", + "valueSize": 1 + }, + { + "declaration": 198, + "isOffset": false, + "isSlot": false, + "src": "867:6:1", + "valueSize": 1 + } + ], + "id": 206, + "nodeType": "InlineAssembly", + "src": "823:61:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 211, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 204, + "src": "916:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 210, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "908:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 209, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "908:7:1", + "typeDescriptions": {} + } + }, + "id": 212, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "908:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 208, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "900:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 207, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "900:7:1", + "typeDescriptions": {} + } + }, + "id": 213, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "900:22:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 202, + "id": 214, + "nodeType": "Return", + "src": "893:29:1" + } + ] + }, + "documentation": { + "id": 195, + "nodeType": "StructuredDocumentation", + "src": "498:103:1", + "text": " Get sender from user operation data.\n @param userOp - The user operation data." + }, + "id": 216, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getSender", + "nameLocation": "615:9:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 199, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 198, + "mutability": "mutable", + "name": "userOp", + "nameLocation": "663:6:1", + "nodeType": "VariableDeclaration", + "scope": 216, + "src": "634:35:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation" + }, + "typeName": { + "id": 197, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 196, + "name": "PackedUserOperation", + "nameLocations": [ + "634:19:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 574, + "src": "634:19:1" + }, + "referencedDeclaration": 574, + "src": "634:19:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_storage_ptr", + "typeString": "struct PackedUserOperation" + } + }, + "visibility": "internal" + } + ], + "src": "624:51:1" + }, + "returnParameters": { + "id": 202, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 201, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 216, + "src": "699:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 200, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "699:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "698:9:1" + }, + "scope": 535, + "src": "606:323:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 250, + "nodeType": "Block", + "src": "1235:395:1", + "statements": [ + { + "id": 249, + "nodeType": "UncheckedBlock", + "src": "1245:379:1", + "statements": [ + { + "assignments": [ + 226, + 228 + ], + "declarations": [ + { + "constant": false, + "id": 226, + "mutability": "mutable", + "name": "maxPriorityFeePerGas", + "nameLocation": "1278:20:1", + "nodeType": "VariableDeclaration", + "scope": 249, + "src": "1270:28:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 225, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1270:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 228, + "mutability": "mutable", + "name": "maxFeePerGas", + "nameLocation": "1308:12:1", + "nodeType": "VariableDeclaration", + "scope": 249, + "src": "1300:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 227, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1300:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 233, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 230, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "1336:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + }, + "id": 231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1343:7:1", + "memberName": "gasFees", + "nodeType": "MemberAccess", + "referencedDeclaration": 569, + "src": "1336:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 229, + "name": "unpackUints", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 346, + "src": "1324:11:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (bytes32) pure returns (uint256,uint256)" + } + }, + "id": 232, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1324:27:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1269:82:1" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 236, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 234, + "name": "maxFeePerGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 228, + "src": "1369:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 235, + "name": "maxPriorityFeePerGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 226, + "src": "1385:20:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1369:36:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 240, + "nodeType": "IfStatement", + "src": "1365:173:1", + "trueBody": { + "id": 239, + "nodeType": "Block", + "src": "1407:131:1", + "statements": [ + { + "expression": { + "id": 237, + "name": "maxFeePerGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 228, + "src": "1511:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 224, + "id": 238, + "nodeType": "Return", + "src": "1504:19:1" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 242, + "name": "maxFeePerGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 228, + "src": "1562:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 246, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 243, + "name": "maxPriorityFeePerGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 226, + "src": "1576:20:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "expression": { + "id": 244, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "1599:5:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 245, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1605:7:1", + "memberName": "basefee", + "nodeType": "MemberAccess", + "src": "1599:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1576:36:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 241, + "name": "min", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 178, + "src": "1558:3:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 247, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1558:55:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 224, + "id": 248, + "nodeType": "Return", + "src": "1551:62:1" + } + ] + } + ] + }, + "documentation": { + "id": 217, + "nodeType": "StructuredDocumentation", + "src": "935:194:1", + "text": " Relayer/block builder might submit the TX with higher priorityFee,\n but the user should not pay above what he signed for.\n @param userOp - The user operation data." + }, + "id": 251, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "gasPrice", + "nameLocation": "1143:8:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 221, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 220, + "mutability": "mutable", + "name": "userOp", + "nameLocation": "1190:6:1", + "nodeType": "VariableDeclaration", + "scope": 251, + "src": "1161:35:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation" + }, + "typeName": { + "id": 219, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 218, + "name": "PackedUserOperation", + "nameLocations": [ + "1161:19:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 574, + "src": "1161:19:1" + }, + "referencedDeclaration": 574, + "src": "1161:19:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_storage_ptr", + "typeString": "struct PackedUserOperation" + } + }, + "visibility": "internal" + } + ], + "src": "1151:51:1" + }, + "returnParameters": { + "id": 224, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 223, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 251, + "src": "1226:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 222, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1226:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1225:9:1" + }, + "scope": 535, + "src": "1134:496:1", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 319, + "nodeType": "Block", + "src": "1868:661:1", + "statements": [ + { + "assignments": [ + 261 + ], + "declarations": [ + { + "constant": false, + "id": 261, + "mutability": "mutable", + "name": "sender", + "nameLocation": "1886:6:1", + "nodeType": "VariableDeclaration", + "scope": 319, + "src": "1878:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 260, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1878:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 265, + "initialValue": { + "arguments": [ + { + "id": 263, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 255, + "src": "1905:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + ], + "id": 262, + "name": "getSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 216, + "src": "1895:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_PackedUserOperation_$574_calldata_ptr_$returns$_t_address_$", + "typeString": "function (struct PackedUserOperation calldata) pure returns (address)" + } + }, + "id": 264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1895:17:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1878:34:1" + }, + { + "assignments": [ + 267 + ], + "declarations": [ + { + "constant": false, + "id": 267, + "mutability": "mutable", + "name": "nonce", + "nameLocation": "1930:5:1", + "nodeType": "VariableDeclaration", + "scope": 319, + "src": "1922:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 266, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1922:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 270, + "initialValue": { + "expression": { + "id": 268, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 255, + "src": "1938:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + }, + "id": 269, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1945:5:1", + "memberName": "nonce", + "nodeType": "MemberAccess", + "referencedDeclaration": 559, + "src": "1938:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1922:28:1" + }, + { + "assignments": [ + 272 + ], + "declarations": [ + { + "constant": false, + "id": 272, + "mutability": "mutable", + "name": "hashInitCode", + "nameLocation": "1968:12:1", + "nodeType": "VariableDeclaration", + "scope": 319, + "src": "1960:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 271, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1960:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 277, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 274, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 255, + "src": "1998:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + }, + "id": 275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2005:8:1", + "memberName": "initCode", + "nodeType": "MemberAccess", + "referencedDeclaration": 561, + "src": "1998:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 273, + "name": "calldataKeccak", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 160, + "src": "1983:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes calldata) pure returns (bytes32)" + } + }, + "id": 276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1983:31:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1960:54:1" + }, + { + "assignments": [ + 279 + ], + "declarations": [ + { + "constant": false, + "id": 279, + "mutability": "mutable", + "name": "hashCallData", + "nameLocation": "2032:12:1", + "nodeType": "VariableDeclaration", + "scope": 319, + "src": "2024:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 278, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2024:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 284, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 281, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 255, + "src": "2062:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + }, + "id": 282, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2069:8:1", + "memberName": "callData", + "nodeType": "MemberAccess", + "referencedDeclaration": 563, + "src": "2062:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 280, + "name": "calldataKeccak", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 160, + "src": "2047:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes calldata) pure returns (bytes32)" + } + }, + "id": 283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2047:31:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2024:54:1" + }, + { + "assignments": [ + 286 + ], + "declarations": [ + { + "constant": false, + "id": 286, + "mutability": "mutable", + "name": "accountGasLimits", + "nameLocation": "2096:16:1", + "nodeType": "VariableDeclaration", + "scope": 319, + "src": "2088:24:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 285, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2088:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 289, + "initialValue": { + "expression": { + "id": 287, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 255, + "src": "2115:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + }, + "id": 288, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2122:16:1", + "memberName": "accountGasLimits", + "nodeType": "MemberAccess", + "referencedDeclaration": 565, + "src": "2115:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2088:50:1" + }, + { + "assignments": [ + 291 + ], + "declarations": [ + { + "constant": false, + "id": 291, + "mutability": "mutable", + "name": "preVerificationGas", + "nameLocation": "2156:18:1", + "nodeType": "VariableDeclaration", + "scope": 319, + "src": "2148:26:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 290, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2148:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 294, + "initialValue": { + "expression": { + "id": 292, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 255, + "src": "2177:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + }, + "id": 293, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2184:18:1", + "memberName": "preVerificationGas", + "nodeType": "MemberAccess", + "referencedDeclaration": 567, + "src": "2177:25:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2148:54:1" + }, + { + "assignments": [ + 296 + ], + "declarations": [ + { + "constant": false, + "id": 296, + "mutability": "mutable", + "name": "gasFees", + "nameLocation": "2220:7:1", + "nodeType": "VariableDeclaration", + "scope": 319, + "src": "2212:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 295, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2212:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 299, + "initialValue": { + "expression": { + "id": 297, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 255, + "src": "2230:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + }, + "id": 298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2237:7:1", + "memberName": "gasFees", + "nodeType": "MemberAccess", + "referencedDeclaration": 569, + "src": "2230:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2212:32:1" + }, + { + "assignments": [ + 301 + ], + "declarations": [ + { + "constant": false, + "id": 301, + "mutability": "mutable", + "name": "hashPaymasterAndData", + "nameLocation": "2262:20:1", + "nodeType": "VariableDeclaration", + "scope": 319, + "src": "2254:28:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 300, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2254:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 306, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 303, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 255, + "src": "2300:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + }, + "id": 304, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2307:16:1", + "memberName": "paymasterAndData", + "nodeType": "MemberAccess", + "referencedDeclaration": 571, + "src": "2300:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 302, + "name": "calldataKeccak", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 160, + "src": "2285:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes calldata) pure returns (bytes32)" + } + }, + "id": 305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2285:39:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2254:70:1" + }, + { + "expression": { + "arguments": [ + { + "id": 309, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 261, + "src": "2366:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 310, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 267, + "src": "2374:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 311, + "name": "hashInitCode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 272, + "src": "2393:12:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 312, + "name": "hashCallData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 279, + "src": "2407:12:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 313, + "name": "accountGasLimits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 286, + "src": "2433:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 314, + "name": "preVerificationGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 291, + "src": "2451:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 315, + "name": "gasFees", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 296, + "src": "2471:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 316, + "name": "hashPaymasterAndData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 301, + "src": "2492:20:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 307, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "2342:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 308, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2346:6:1", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "2342:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 317, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2342:180:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 259, + "id": 318, + "nodeType": "Return", + "src": "2335:187:1" + } + ] + }, + "documentation": { + "id": 252, + "nodeType": "StructuredDocumentation", + "src": "1636:119:1", + "text": " Pack the user operation data into bytes for hashing.\n @param userOp - The user operation data." + }, + "id": 320, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "encode", + "nameLocation": "1769:6:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 256, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 255, + "mutability": "mutable", + "name": "userOp", + "nameLocation": "1814:6:1", + "nodeType": "VariableDeclaration", + "scope": 320, + "src": "1785:35:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation" + }, + "typeName": { + "id": 254, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 253, + "name": "PackedUserOperation", + "nameLocations": [ + "1785:19:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 574, + "src": "1785:19:1" + }, + "referencedDeclaration": 574, + "src": "1785:19:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_storage_ptr", + "typeString": "struct PackedUserOperation" + } + }, + "visibility": "internal" + } + ], + "src": "1775:51:1" + }, + "returnParameters": { + "id": 259, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 258, + "mutability": "mutable", + "name": "ret", + "nameLocation": "1863:3:1", + "nodeType": "VariableDeclaration", + "scope": 320, + "src": "1850:16:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 257, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1850:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "1849:18:1" + }, + "scope": 535, + "src": "1760:769:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 345, + "nodeType": "Block", + "src": "2642:76:1", + "statements": [ + { + "expression": { + "components": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 333, + "name": "packed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 322, + "src": "2676:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 332, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2668:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes16_$", + "typeString": "type(bytes16)" + }, + "typeName": { + "id": 331, + "name": "bytes16", + "nodeType": "ElementaryTypeName", + "src": "2668:7:1", + "typeDescriptions": {} + } + }, + "id": 334, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2668:15:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + ], + "id": 330, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2660:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + }, + "typeName": { + "id": 329, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "2660:7:1", + "typeDescriptions": {} + } + }, + "id": 335, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2660:24:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "id": 340, + "name": "packed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 322, + "src": "2702:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 339, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2694:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 338, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2694:7:1", + "typeDescriptions": {} + } + }, + "id": 341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2694:15:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 337, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2686:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + }, + "typeName": { + "id": 336, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "2686:7:1", + "typeDescriptions": {} + } + }, + "id": 342, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2686:24:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "id": 343, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2659:52:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint128_$_t_uint128_$", + "typeString": "tuple(uint128,uint128)" + } + }, + "functionReturnParameters": 328, + "id": 344, + "nodeType": "Return", + "src": "2652:59:1" + } + ] + }, + "id": 346, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "unpackUints", + "nameLocation": "2544:11:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 323, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 322, + "mutability": "mutable", + "name": "packed", + "nameLocation": "2573:6:1", + "nodeType": "VariableDeclaration", + "scope": 346, + "src": "2565:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 321, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2565:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2555:30:1" + }, + "returnParameters": { + "id": 328, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 325, + "mutability": "mutable", + "name": "high128", + "nameLocation": "2617:7:1", + "nodeType": "VariableDeclaration", + "scope": 346, + "src": "2609:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 324, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2609:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 327, + "mutability": "mutable", + "name": "low128", + "nameLocation": "2634:6:1", + "nodeType": "VariableDeclaration", + "scope": 346, + "src": "2626:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 326, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2626:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2608:33:1" + }, + "scope": 535, + "src": "2535:183:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 360, + "nodeType": "Block", + "src": "2851:46:1", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 355, + "name": "packed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 348, + "src": "2876:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 354, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2868:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 353, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2868:7:1", + "typeDescriptions": {} + } + }, + "id": 356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2868:15:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "313238", + "id": 357, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2887:3:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "2868:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 352, + "id": 359, + "nodeType": "Return", + "src": "2861:29:1" + } + ] + }, + "id": 361, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "unpackHigh128", + "nameLocation": "2789:13:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 349, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 348, + "mutability": "mutable", + "name": "packed", + "nameLocation": "2811:6:1", + "nodeType": "VariableDeclaration", + "scope": 361, + "src": "2803:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 347, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2803:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2802:16:1" + }, + "returnParameters": { + "id": 352, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 351, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 361, + "src": "2842:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 350, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2842:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2841:9:1" + }, + "scope": 535, + "src": "2780:117:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 376, + "nodeType": "Block", + "src": "3029:48:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 372, + "name": "packed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 363, + "src": "3062:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 371, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3054:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 370, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3054:7:1", + "typeDescriptions": {} + } + }, + "id": 373, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3054:15:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 369, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3046:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + }, + "typeName": { + "id": 368, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "3046:7:1", + "typeDescriptions": {} + } + }, + "id": 374, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3046:24:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "functionReturnParameters": 367, + "id": 375, + "nodeType": "Return", + "src": "3039:31:1" + } + ] + }, + "id": 377, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "unpackLow128", + "nameLocation": "2968:12:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 364, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 363, + "mutability": "mutable", + "name": "packed", + "nameLocation": "2989:6:1", + "nodeType": "VariableDeclaration", + "scope": 377, + "src": "2981:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 362, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2981:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2980:16:1" + }, + "returnParameters": { + "id": 367, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 366, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 377, + "src": "3020:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 365, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3020:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3019:9:1" + }, + "scope": 535, + "src": "2959:118:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 390, + "nodeType": "Block", + "src": "3192:53:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 386, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 380, + "src": "3223:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + }, + "id": 387, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3230:7:1", + "memberName": "gasFees", + "nodeType": "MemberAccess", + "referencedDeclaration": 569, + "src": "3223:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 385, + "name": "unpackHigh128", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 361, + "src": "3209:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$", + "typeString": "function (bytes32) pure returns (uint256)" + } + }, + "id": 388, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3209:29:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 384, + "id": 389, + "nodeType": "Return", + "src": "3202:36:1" + } + ] + }, + "id": 391, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "unpackMaxPriorityFeePerGas", + "nameLocation": "3092:26:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 381, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 380, + "mutability": "mutable", + "name": "userOp", + "nameLocation": "3148:6:1", + "nodeType": "VariableDeclaration", + "scope": 391, + "src": "3119:35:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation" + }, + "typeName": { + "id": 379, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 378, + "name": "PackedUserOperation", + "nameLocations": [ + "3119:19:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 574, + "src": "3119:19:1" + }, + "referencedDeclaration": 574, + "src": "3119:19:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_storage_ptr", + "typeString": "struct PackedUserOperation" + } + }, + "visibility": "internal" + } + ], + "src": "3118:37:1" + }, + "returnParameters": { + "id": 384, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 383, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 391, + "src": "3183:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 382, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3183:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3182:9:1" + }, + "scope": 535, + "src": "3083:162:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 404, + "nodeType": "Block", + "src": "3352:52:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 400, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 394, + "src": "3382:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + }, + "id": 401, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3389:7:1", + "memberName": "gasFees", + "nodeType": "MemberAccess", + "referencedDeclaration": 569, + "src": "3382:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 399, + "name": "unpackLow128", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 377, + "src": "3369:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$", + "typeString": "function (bytes32) pure returns (uint256)" + } + }, + "id": 402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3369:28:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 398, + "id": 403, + "nodeType": "Return", + "src": "3362:35:1" + } + ] + }, + "id": 405, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "unpackMaxFeePerGas", + "nameLocation": "3260:18:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 395, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 394, + "mutability": "mutable", + "name": "userOp", + "nameLocation": "3308:6:1", + "nodeType": "VariableDeclaration", + "scope": 405, + "src": "3279:35:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation" + }, + "typeName": { + "id": 393, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 392, + "name": "PackedUserOperation", + "nameLocations": [ + "3279:19:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 574, + "src": "3279:19:1" + }, + "referencedDeclaration": 574, + "src": "3279:19:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_storage_ptr", + "typeString": "struct PackedUserOperation" + } + }, + "visibility": "internal" + } + ], + "src": "3278:37:1" + }, + "returnParameters": { + "id": 398, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 397, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 405, + "src": "3343:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 396, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3343:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3342:9:1" + }, + "scope": 535, + "src": "3251:153:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 418, + "nodeType": "Block", + "src": "3519:62:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 414, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 408, + "src": "3550:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + }, + "id": 415, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3557:16:1", + "memberName": "accountGasLimits", + "nodeType": "MemberAccess", + "referencedDeclaration": 565, + "src": "3550:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 413, + "name": "unpackHigh128", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 361, + "src": "3536:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$", + "typeString": "function (bytes32) pure returns (uint256)" + } + }, + "id": 416, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3536:38:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 412, + "id": 417, + "nodeType": "Return", + "src": "3529:45:1" + } + ] + }, + "id": 419, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "unpackVerificationGasLimit", + "nameLocation": "3419:26:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 409, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 408, + "mutability": "mutable", + "name": "userOp", + "nameLocation": "3475:6:1", + "nodeType": "VariableDeclaration", + "scope": 419, + "src": "3446:35:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation" + }, + "typeName": { + "id": 407, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 406, + "name": "PackedUserOperation", + "nameLocations": [ + "3446:19:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 574, + "src": "3446:19:1" + }, + "referencedDeclaration": 574, + "src": "3446:19:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_storage_ptr", + "typeString": "struct PackedUserOperation" + } + }, + "visibility": "internal" + } + ], + "src": "3445:37:1" + }, + "returnParameters": { + "id": 412, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 411, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 419, + "src": "3510:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 410, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3510:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3509:9:1" + }, + "scope": 535, + "src": "3410:171:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 432, + "nodeType": "Block", + "src": "3688:61:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 428, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 422, + "src": "3718:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + }, + "id": 429, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3725:16:1", + "memberName": "accountGasLimits", + "nodeType": "MemberAccess", + "referencedDeclaration": 565, + "src": "3718:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 427, + "name": "unpackLow128", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 377, + "src": "3705:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$", + "typeString": "function (bytes32) pure returns (uint256)" + } + }, + "id": 430, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3705:37:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 426, + "id": 431, + "nodeType": "Return", + "src": "3698:44:1" + } + ] + }, + "id": 433, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "unpackCallGasLimit", + "nameLocation": "3596:18:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 423, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 422, + "mutability": "mutable", + "name": "userOp", + "nameLocation": "3644:6:1", + "nodeType": "VariableDeclaration", + "scope": 433, + "src": "3615:35:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation" + }, + "typeName": { + "id": 421, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 420, + "name": "PackedUserOperation", + "nameLocations": [ + "3615:19:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 574, + "src": "3615:19:1" + }, + "referencedDeclaration": 574, + "src": "3615:19:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_storage_ptr", + "typeString": "struct PackedUserOperation" + } + }, + "visibility": "internal" + } + ], + "src": "3614:37:1" + }, + "returnParameters": { + "id": 426, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 425, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 433, + "src": "3679:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 424, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3679:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3678:9:1" + }, + "scope": 535, + "src": "3587:162:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 453, + "nodeType": "Block", + "src": "3873:128:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "baseExpression": { + "expression": { + "id": 445, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 436, + "src": "3906:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + }, + "id": 446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3913:16:1", + "memberName": "paymasterAndData", + "nodeType": "MemberAccess", + "referencedDeclaration": 571, + "src": "3906:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "endExpression": { + "id": 448, + "name": "PAYMASTER_POSTOP_GAS_OFFSET", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 191, + "src": "3964:27:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 449, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexRangeAccess", + "src": "3906:86:1", + "startExpression": { + "id": 447, + "name": "PAYMASTER_VALIDATION_GAS_OFFSET", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 188, + "src": "3930:31:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr_slice", + "typeString": "bytes calldata slice" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr_slice", + "typeString": "bytes calldata slice" + } + ], + "id": 444, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3898:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes16_$", + "typeString": "type(bytes16)" + }, + "typeName": { + "id": 443, + "name": "bytes16", + "nodeType": "ElementaryTypeName", + "src": "3898:7:1", + "typeDescriptions": {} + } + }, + "id": 450, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3898:95:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + ], + "id": 442, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3890:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + }, + "typeName": { + "id": 441, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "3890:7:1", + "typeDescriptions": {} + } + }, + "id": 451, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3890:104:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "functionReturnParameters": 440, + "id": 452, + "nodeType": "Return", + "src": "3883:111:1" + } + ] + }, + "id": 454, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "unpackPaymasterVerificationGasLimit", + "nameLocation": "3764:35:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 437, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 436, + "mutability": "mutable", + "name": "userOp", + "nameLocation": "3829:6:1", + "nodeType": "VariableDeclaration", + "scope": 454, + "src": "3800:35:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation" + }, + "typeName": { + "id": 435, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 434, + "name": "PackedUserOperation", + "nameLocations": [ + "3800:19:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 574, + "src": "3800:19:1" + }, + "referencedDeclaration": 574, + "src": "3800:19:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_storage_ptr", + "typeString": "struct PackedUserOperation" + } + }, + "visibility": "internal" + } + ], + "src": "3799:37:1" + }, + "returnParameters": { + "id": 440, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 439, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 454, + "src": "3864:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 438, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3864:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3863:9:1" + }, + "scope": 535, + "src": "3755:246:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 474, + "nodeType": "Block", + "src": "4110:118:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "baseExpression": { + "expression": { + "id": 466, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 457, + "src": "4143:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + }, + "id": 467, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4150:16:1", + "memberName": "paymasterAndData", + "nodeType": "MemberAccess", + "referencedDeclaration": 571, + "src": "4143:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "endExpression": { + "id": 469, + "name": "PAYMASTER_DATA_OFFSET", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 194, + "src": "4197:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 470, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexRangeAccess", + "src": "4143:76:1", + "startExpression": { + "id": 468, + "name": "PAYMASTER_POSTOP_GAS_OFFSET", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 191, + "src": "4167:27:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr_slice", + "typeString": "bytes calldata slice" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr_slice", + "typeString": "bytes calldata slice" + } + ], + "id": 465, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4135:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes16_$", + "typeString": "type(bytes16)" + }, + "typeName": { + "id": 464, + "name": "bytes16", + "nodeType": "ElementaryTypeName", + "src": "4135:7:1", + "typeDescriptions": {} + } + }, + "id": 471, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4135:85:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + ], + "id": 463, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4127:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + }, + "typeName": { + "id": 462, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "4127:7:1", + "typeDescriptions": {} + } + }, + "id": 472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4127:94:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "functionReturnParameters": 461, + "id": 473, + "nodeType": "Return", + "src": "4120:101:1" + } + ] + }, + "id": 475, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "unpackPostOpGasLimit", + "nameLocation": "4016:20:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 458, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 457, + "mutability": "mutable", + "name": "userOp", + "nameLocation": "4066:6:1", + "nodeType": "VariableDeclaration", + "scope": 475, + "src": "4037:35:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation" + }, + "typeName": { + "id": 456, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 455, + "name": "PackedUserOperation", + "nameLocations": [ + "4037:19:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 574, + "src": "4037:19:1" + }, + "referencedDeclaration": 574, + "src": "4037:19:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_storage_ptr", + "typeString": "struct PackedUserOperation" + } + }, + "visibility": "internal" + } + ], + "src": "4036:37:1" + }, + "returnParameters": { + "id": 461, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 460, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 475, + "src": "4101:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 459, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4101:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4100:9:1" + }, + "scope": 535, + "src": "4007:221:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 517, + "nodeType": "Block", + "src": "4412:329:1", + "statements": [ + { + "expression": { + "components": [ + { + "arguments": [ + { + "arguments": [ + { + "baseExpression": { + "id": 490, + "name": "paymasterAndData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 477, + "src": "4459:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "endExpression": { + "id": 491, + "name": "PAYMASTER_VALIDATION_GAS_OFFSET", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 188, + "src": "4478:31:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 492, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexRangeAccess", + "src": "4459:51:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr_slice", + "typeString": "bytes calldata slice" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr_slice", + "typeString": "bytes calldata slice" + } + ], + "id": 489, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4451:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes20_$", + "typeString": "type(bytes20)" + }, + "typeName": { + "id": 488, + "name": "bytes20", + "nodeType": "ElementaryTypeName", + "src": "4451:7:1", + "typeDescriptions": {} + } + }, + "id": 493, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4451:60:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes20", + "typeString": "bytes20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes20", + "typeString": "bytes20" + } + ], + "id": 487, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4443:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 486, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4443:7:1", + "typeDescriptions": {} + } + }, + "id": 494, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4443:69:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "baseExpression": { + "id": 499, + "name": "paymasterAndData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 477, + "src": "4542:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "endExpression": { + "id": 501, + "name": "PAYMASTER_POSTOP_GAS_OFFSET", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 191, + "src": "4593:27:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 502, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexRangeAccess", + "src": "4542:79:1", + "startExpression": { + "id": 500, + "name": "PAYMASTER_VALIDATION_GAS_OFFSET", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 188, + "src": "4559:31:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr_slice", + "typeString": "bytes calldata slice" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr_slice", + "typeString": "bytes calldata slice" + } + ], + "id": 498, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4534:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes16_$", + "typeString": "type(bytes16)" + }, + "typeName": { + "id": 497, + "name": "bytes16", + "nodeType": "ElementaryTypeName", + "src": "4534:7:1", + "typeDescriptions": {} + } + }, + "id": 503, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4534:88:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + ], + "id": 496, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4526:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + }, + "typeName": { + "id": 495, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "4526:7:1", + "typeDescriptions": {} + } + }, + "id": 504, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4526:97:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "baseExpression": { + "id": 509, + "name": "paymasterAndData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 477, + "src": "4653:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "endExpression": { + "id": 511, + "name": "PAYMASTER_DATA_OFFSET", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 194, + "src": "4700:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexRangeAccess", + "src": "4653:69:1", + "startExpression": { + "id": 510, + "name": "PAYMASTER_POSTOP_GAS_OFFSET", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 191, + "src": "4670:27:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr_slice", + "typeString": "bytes calldata slice" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr_slice", + "typeString": "bytes calldata slice" + } + ], + "id": 508, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4645:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes16_$", + "typeString": "type(bytes16)" + }, + "typeName": { + "id": 507, + "name": "bytes16", + "nodeType": "ElementaryTypeName", + "src": "4645:7:1", + "typeDescriptions": {} + } + }, + "id": 513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4645:78:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + ], + "id": 506, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4637:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + }, + "typeName": { + "id": 505, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "4637:7:1", + "typeDescriptions": {} + } + }, + "id": 514, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4637:87:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "id": 515, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4429:305:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_uint128_$_t_uint128_$", + "typeString": "tuple(address,uint128,uint128)" + } + }, + "functionReturnParameters": 485, + "id": 516, + "nodeType": "Return", + "src": "4422:312:1" + } + ] + }, + "id": 518, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "unpackPaymasterStaticFields", + "nameLocation": "4243:27:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 478, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 477, + "mutability": "mutable", + "name": "paymasterAndData", + "nameLocation": "4295:16:1", + "nodeType": "VariableDeclaration", + "scope": 518, + "src": "4280:31:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 476, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4280:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4270:47:1" + }, + "returnParameters": { + "id": 485, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 480, + "mutability": "mutable", + "name": "paymaster", + "nameLocation": "4349:9:1", + "nodeType": "VariableDeclaration", + "scope": 518, + "src": "4341:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 479, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4341:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 482, + "mutability": "mutable", + "name": "validationGasLimit", + "nameLocation": "4368:18:1", + "nodeType": "VariableDeclaration", + "scope": 518, + "src": "4360:26:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 481, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4360:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 484, + "mutability": "mutable", + "name": "postOpGasLimit", + "nameLocation": "4396:14:1", + "nodeType": "VariableDeclaration", + "scope": 518, + "src": "4388:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 483, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4388:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4340:71:1" + }, + "scope": 535, + "src": "4234:507:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 533, + "nodeType": "Block", + "src": "4945:49:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 529, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 522, + "src": "4979:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + ], + "id": 528, + "name": "encode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 320, + "src": "4972:6:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_PackedUserOperation_$574_calldata_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (struct PackedUserOperation calldata) pure returns (bytes memory)" + } + }, + "id": 530, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4972:14:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 527, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "4962:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 531, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4962:25:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 526, + "id": 532, + "nodeType": "Return", + "src": "4955:32:1" + } + ] + }, + "documentation": { + "id": 519, + "nodeType": "StructuredDocumentation", + "src": "4747:96:1", + "text": " Hash the user operation data.\n @param userOp - The user operation data." + }, + "id": 534, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "hash", + "nameLocation": "4857:4:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 523, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 522, + "mutability": "mutable", + "name": "userOp", + "nameLocation": "4900:6:1", + "nodeType": "VariableDeclaration", + "scope": 534, + "src": "4871:35:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation" + }, + "typeName": { + "id": 521, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 520, + "name": "PackedUserOperation", + "nameLocations": [ + "4871:19:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 574, + "src": "4871:19:1" + }, + "referencedDeclaration": 574, + "src": "4871:19:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_storage_ptr", + "typeString": "struct PackedUserOperation" + } + }, + "visibility": "internal" + } + ], + "src": "4861:51:1" + }, + "returnParameters": { + "id": 526, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 525, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 534, + "src": "4936:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 524, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4936:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4935:9:1" + }, + "scope": 535, + "src": "4848:146:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 536, + "src": "282:4714:1", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "36:4961:1" + }, + "id": 1 + }, + "@account-abstraction/contracts/interfaces/IAccount.sol": { + "ast": { + "absolutePath": "@account-abstraction/contracts/interfaces/IAccount.sol", + "exportedSymbols": { + "IAccount": [ + 552 + ], + "PackedUserOperation": [ + 574 + ] + }, + "id": 553, + "license": "GPL-3.0", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 537, + "literals": [ + "solidity", + ">=", + "0.7", + ".5" + ], + "nodeType": "PragmaDirective", + "src": "36:24:2" + }, + { + "absolutePath": "@account-abstraction/contracts/interfaces/PackedUserOperation.sol", + "file": "./PackedUserOperation.sol", + "id": 538, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 553, + "sourceUnit": 575, + "src": "62:35:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IAccount", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 552, + "linearizedBaseContracts": [ + 552 + ], + "name": "IAccount", + "nameLocation": "109:8:2", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 539, + "nodeType": "StructuredDocumentation", + "src": "124:2290:2", + "text": " Validate user's signature and nonce\n the entryPoint will make the call to the recipient only if this validation call returns successfully.\n signature failure should be reported by returning SIG_VALIDATION_FAILED (1).\n This allows making a \"simulation call\" without a valid signature\n Other failures (e.g. nonce mismatch, or invalid signature format) should still revert to signal failure.\n @dev Must validate caller is the entryPoint.\n Must validate the signature and nonce\n @param userOp - The operation that is about to be executed.\n @param userOpHash - Hash of the user's request data. can be used as the basis for signature.\n @param missingAccountFunds - Missing funds on the account's deposit in the entrypoint.\n This is the minimum amount to transfer to the sender(entryPoint) to be\n able to make the call. The excess is left as a deposit in the entrypoint\n for future calls. Can be withdrawn anytime using \"entryPoint.withdrawTo()\".\n In case there is a paymaster in the request (or the current deposit is high\n enough), this value will be zero.\n @return validationData - Packaged ValidationData structure. use `_packValidationData` and\n `_unpackValidationData` to encode and decode.\n <20-byte> sigAuthorizer - 0 for valid signature, 1 to mark signature failure,\n otherwise, an address of an \"authorizer\" contract.\n <6-byte> validUntil - Last timestamp this operation is valid. 0 for \"indefinite\"\n <6-byte> validAfter - First timestamp this operation is valid\n If an account doesn't use time-range, it is enough to\n return SIG_VALIDATION_FAILED value (1) for signature failure.\n Note that the validation code cannot use block.timestamp (or block.number) directly." + }, + "functionSelector": "19822f7c", + "id": 551, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "validateUserOp", + "nameLocation": "2428:14:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 547, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 542, + "mutability": "mutable", + "name": "userOp", + "nameLocation": "2481:6:2", + "nodeType": "VariableDeclaration", + "scope": 551, + "src": "2452:35:2", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation" + }, + "typeName": { + "id": 541, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 540, + "name": "PackedUserOperation", + "nameLocations": [ + "2452:19:2" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 574, + "src": "2452:19:2" + }, + "referencedDeclaration": 574, + "src": "2452:19:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_storage_ptr", + "typeString": "struct PackedUserOperation" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 544, + "mutability": "mutable", + "name": "userOpHash", + "nameLocation": "2505:10:2", + "nodeType": "VariableDeclaration", + "scope": 551, + "src": "2497:18:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 543, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2497:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 546, + "mutability": "mutable", + "name": "missingAccountFunds", + "nameLocation": "2533:19:2", + "nodeType": "VariableDeclaration", + "scope": 551, + "src": "2525:27:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 545, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2525:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2442:116:2" + }, + "returnParameters": { + "id": 550, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 549, + "mutability": "mutable", + "name": "validationData", + "nameLocation": "2585:14:2", + "nodeType": "VariableDeclaration", + "scope": 551, + "src": "2577:22:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 548, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2577:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2576:24:2" + }, + "scope": 552, + "src": "2419:182:2", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 553, + "src": "99:2504:2", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "36:2568:2" + }, + "id": 2 + }, + "@account-abstraction/contracts/interfaces/PackedUserOperation.sol": { + "ast": { + "absolutePath": "@account-abstraction/contracts/interfaces/PackedUserOperation.sol", + "exportedSymbols": { + "PackedUserOperation": [ + 574 + ] + }, + "id": 575, + "license": "GPL-3.0", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 554, + "literals": [ + "solidity", + ">=", + "0.7", + ".5" + ], + "nodeType": "PragmaDirective", + "src": "36:24:3" + }, + { + "canonicalName": "PackedUserOperation", + "documentation": { + "id": 555, + "nodeType": "StructuredDocumentation", + "src": "62:1164:3", + "text": " User Operation struct\n @param sender - The sender account of this request.\n @param nonce - Unique value the sender uses to verify it is not a replay.\n @param initCode - If set, the account contract will be created by this constructor/\n @param callData - The method call to execute on this account.\n @param accountGasLimits - Packed gas limits for validateUserOp and gas limit passed to the callData method call.\n @param preVerificationGas - Gas not calculated by the handleOps method, but added to the gas paid.\n Covers batch overhead.\n @param gasFees - packed gas fields maxPriorityFeePerGas and maxFeePerGas - Same as EIP-1559 gas parameters.\n @param paymasterAndData - If set, this field holds the paymaster address, verification gas limit, postOp gas limit and paymaster-specific extra data\n The paymaster will pay for the transaction instead of the sender.\n @param signature - Sender-verified signature over the entire request, the EntryPoint address and the chain ID." + }, + "id": 574, + "members": [ + { + "constant": false, + "id": 557, + "mutability": "mutable", + "name": "sender", + "nameLocation": "1268:6:3", + "nodeType": "VariableDeclaration", + "scope": 574, + "src": "1260:14:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 556, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1260:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 559, + "mutability": "mutable", + "name": "nonce", + "nameLocation": "1288:5:3", + "nodeType": "VariableDeclaration", + "scope": 574, + "src": "1280:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 558, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1280:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 561, + "mutability": "mutable", + "name": "initCode", + "nameLocation": "1305:8:3", + "nodeType": "VariableDeclaration", + "scope": 574, + "src": "1299:14:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 560, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1299:5:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 563, + "mutability": "mutable", + "name": "callData", + "nameLocation": "1325:8:3", + "nodeType": "VariableDeclaration", + "scope": 574, + "src": "1319:14:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 562, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1319:5:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 565, + "mutability": "mutable", + "name": "accountGasLimits", + "nameLocation": "1347:16:3", + "nodeType": "VariableDeclaration", + "scope": 574, + "src": "1339:24:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 564, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1339:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 567, + "mutability": "mutable", + "name": "preVerificationGas", + "nameLocation": "1377:18:3", + "nodeType": "VariableDeclaration", + "scope": 574, + "src": "1369:26:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 566, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1369:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 569, + "mutability": "mutable", + "name": "gasFees", + "nameLocation": "1409:7:3", + "nodeType": "VariableDeclaration", + "scope": 574, + "src": "1401:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 568, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1401:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 571, + "mutability": "mutable", + "name": "paymasterAndData", + "nameLocation": "1428:16:3", + "nodeType": "VariableDeclaration", + "scope": 574, + "src": "1422:22:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 570, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1422:5:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 573, + "mutability": "mutable", + "name": "signature", + "nameLocation": "1456:9:3", + "nodeType": "VariableDeclaration", + "scope": 574, + "src": "1450:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 572, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1450:5:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "name": "PackedUserOperation", + "nameLocation": "1234:19:3", + "nodeType": "StructDefinition", + "scope": 575, + "src": "1227:241:3", + "visibility": "public" + } + ], + "src": "36:1433:3" + }, + "id": 3 + }, + "FreshCryptoLib/FCL_ecdsa.sol": { + "ast": { + "absolutePath": "FreshCryptoLib/FCL_ecdsa.sol", + "exportedSymbols": { + "FCL_Elliptic_ZZ": [ + 2309 + ], + "FCL_ecdsa": [ + 968 + ] + }, + "id": 969, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 576, + "literals": [ + "solidity", + ">=", + "0.8", + ".19", + "<", + "0.9", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "1127:32:4" + }, + { + "absolutePath": "FreshCryptoLib/FCL_elliptic.sol", + "file": "./FCL_elliptic.sol", + "id": 578, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 969, + "sourceUnit": 2310, + "src": "1162:51:4", + "symbolAliases": [ + { + "foreign": { + "id": 577, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "1170:15:4", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "FCL_ecdsa", + "contractDependencies": [], + "contractKind": "library", + "fullyImplemented": true, + "id": 968, + "linearizedBaseContracts": [ + 968 + ], + "name": "FCL_ecdsa", + "nameLocation": "1225:9:4", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 582, + "mutability": "constant", + "name": "n", + "nameLocation": "1345:1:4", + "nodeType": "VariableDeclaration", + "scope": 968, + "src": "1328:38:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 579, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1328:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "expression": { + "id": 580, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "1349:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 581, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1365:1:4", + "memberName": "n", + "nodeType": "MemberAccess", + "referencedDeclaration": 991, + "src": "1349:17:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "body": { + "id": 684, + "nodeType": "Block", + "src": "1676:589:4", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 614, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 609, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 598, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 587, + "src": "1691:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 599, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1696:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1691:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 604, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 601, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 587, + "src": "1701:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "expression": { + "id": 602, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "1706:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 603, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1722:1:4", + "memberName": "n", + "nodeType": "MemberAccess", + "referencedDeclaration": 991, + "src": "1706:17:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1701:22:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1691:32:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 606, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 589, + "src": "1727:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 607, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1732:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1727:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1691:42:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 613, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 610, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 589, + "src": "1737:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "expression": { + "id": 611, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "1742:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 612, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1758:1:4", + "memberName": "n", + "nodeType": "MemberAccess", + "referencedDeclaration": 991, + "src": "1742:17:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1737:22:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1691:68:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 618, + "nodeType": "IfStatement", + "src": "1687:111:4", + "trueBody": { + "id": 617, + "nodeType": "Block", + "src": "1761:37:4", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 615, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1782:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 597, + "id": 616, + "nodeType": "Return", + "src": "1775:12:4" + } + ] + } + }, + { + "condition": { + "id": 624, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1820:40:4", + "subExpression": { + "arguments": [ + { + "id": 621, + "name": "Qx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 591, + "src": "1853:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 622, + "name": "Qy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "1857:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 619, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "1821:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 620, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1837:15:4", + "memberName": "ecAff_isOnCurve", + "nodeType": "MemberAccess", + "referencedDeclaration": 1685, + "src": "1821:31:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256,uint256) pure returns (bool)" + } + }, + "id": 623, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1821:39:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 628, + "nodeType": "IfStatement", + "src": "1816:83:4", + "trueBody": { + "id": 627, + "nodeType": "Block", + "src": "1862:37:4", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 625, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1883:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 597, + "id": 626, + "nodeType": "Return", + "src": "1876:12:4" + } + ] + } + }, + { + "assignments": [ + 630 + ], + "declarations": [ + { + "constant": false, + "id": 630, + "mutability": "mutable", + "name": "sInv", + "nameLocation": "1917:4:4", + "nodeType": "VariableDeclaration", + "scope": 684, + "src": "1909:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 629, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1909:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 635, + "initialValue": { + "arguments": [ + { + "id": 633, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 589, + "src": "1952:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 631, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "1924:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 632, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1940:11:4", + "memberName": "FCL_nModInv", + "nodeType": "MemberAccess", + "referencedDeclaration": 1019, + "src": "1924:27:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) view returns (uint256)" + } + }, + "id": 634, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1924:30:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1909:45:4" + }, + { + "assignments": [ + 637 + ], + "declarations": [ + { + "constant": false, + "id": 637, + "mutability": "mutable", + "name": "scalar_u", + "nameLocation": "1973:8:4", + "nodeType": "VariableDeclaration", + "scope": 684, + "src": "1965:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 636, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1965:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 647, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 641, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 585, + "src": "1999:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 640, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1991:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 639, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1991:7:4", + "typeDescriptions": {} + } + }, + "id": 642, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1991:16:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 643, + "name": "sInv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 630, + "src": "2009:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 644, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "2015:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 645, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2031:1:4", + "memberName": "n", + "nodeType": "MemberAccess", + "referencedDeclaration": 991, + "src": "2015:17:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 638, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "1984:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 646, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1984:49:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1965:68:4" + }, + { + "assignments": [ + 649 + ], + "declarations": [ + { + "constant": false, + "id": 649, + "mutability": "mutable", + "name": "scalar_v", + "nameLocation": "2051:8:4", + "nodeType": "VariableDeclaration", + "scope": 684, + "src": "2043:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 648, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2043:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 656, + "initialValue": { + "arguments": [ + { + "id": 651, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 587, + "src": "2069:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 652, + "name": "sInv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 630, + "src": "2072:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 653, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "2078:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 654, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2094:1:4", + "memberName": "n", + "nodeType": "MemberAccess", + "referencedDeclaration": 991, + "src": "2078:17:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 650, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "2062:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 655, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2062:34:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2043:53:4" + }, + { + "assignments": [ + 658 + ], + "declarations": [ + { + "constant": false, + "id": 658, + "mutability": "mutable", + "name": "x1", + "nameLocation": "2114:2:4", + "nodeType": "VariableDeclaration", + "scope": 684, + "src": "2106:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 657, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2106:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 659, + "nodeType": "VariableDeclarationStatement", + "src": "2106:10:4" + }, + { + "expression": { + "id": 668, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 660, + "name": "x1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 658, + "src": "2127:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 663, + "name": "Qx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 591, + "src": "2169:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 664, + "name": "Qy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "2173:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 665, + "name": "scalar_u", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 637, + "src": "2177:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 666, + "name": "scalar_v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 649, + "src": "2187:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 661, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "2132:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 662, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2148:20:4", + "memberName": "ecZZ_mulmuladd_S_asm", + "nodeType": "MemberAccess", + "referencedDeclaration": 1867, + "src": "2132:36:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256,uint256) view returns (uint256)" + } + }, + "id": 667, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2132:64:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2127:69:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 669, + "nodeType": "ExpressionStatement", + "src": "2127:69:4" + }, + { + "expression": { + "id": 678, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 670, + "name": "x1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 658, + "src": "2207:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 672, + "name": "x1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 658, + "src": "2218:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 675, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 673, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 582, + "src": "2222:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 674, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 587, + "src": "2224:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2222:3:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 676, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 582, + "src": "2226:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 671, + "name": "addmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -2, + "src": "2211:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 677, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2211:18:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2207:22:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 679, + "nodeType": "ExpressionStatement", + "src": "2207:22:4" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 682, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 680, + "name": "x1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 658, + "src": "2251:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 681, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2257:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2251:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 597, + "id": 683, + "nodeType": "Return", + "src": "2244:14:4" + } + ] + }, + "documentation": { + "id": 583, + "nodeType": "StructuredDocumentation", + "src": "1459:98:4", + "text": " @dev ECDSA verification, given , signature, and public key, no calldata version" + }, + "id": 685, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ecdsa_verify", + "nameLocation": "1571:12:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 594, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 585, + "mutability": "mutable", + "name": "message", + "nameLocation": "1592:7:4", + "nodeType": "VariableDeclaration", + "scope": 685, + "src": "1584:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 584, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1584:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 587, + "mutability": "mutable", + "name": "r", + "nameLocation": "1609:1:4", + "nodeType": "VariableDeclaration", + "scope": 685, + "src": "1601:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 586, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1601:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 589, + "mutability": "mutable", + "name": "s", + "nameLocation": "1620:1:4", + "nodeType": "VariableDeclaration", + "scope": 685, + "src": "1612:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 588, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1612:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 591, + "mutability": "mutable", + "name": "Qx", + "nameLocation": "1631:2:4", + "nodeType": "VariableDeclaration", + "scope": 685, + "src": "1623:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 590, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1623:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 593, + "mutability": "mutable", + "name": "Qy", + "nameLocation": "1643:2:4", + "nodeType": "VariableDeclaration", + "scope": 685, + "src": "1635:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 592, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1635:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1583:63:4" + }, + "returnParameters": { + "id": 597, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 596, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 685, + "src": "1671:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 595, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1671:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1670:6:4" + }, + "scope": 968, + "src": "1562:703:4", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 800, + "nodeType": "Block", + "src": "2374:595:4", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 714, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 709, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 705, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 700, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 698, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 691, + "src": "2389:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 699, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2394:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2389:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 704, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 701, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 691, + "src": "2399:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "expression": { + "id": 702, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "2404:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 703, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2420:1:4", + "memberName": "n", + "nodeType": "MemberAccess", + "referencedDeclaration": 991, + "src": "2404:17:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2399:22:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2389:32:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 708, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 706, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 693, + "src": "2425:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 707, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2430:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2425:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2389:42:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 713, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 710, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 693, + "src": "2435:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "expression": { + "id": 711, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "2440:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 712, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2456:1:4", + "memberName": "n", + "nodeType": "MemberAccess", + "referencedDeclaration": 991, + "src": "2440:17:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2435:22:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2389:68:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 721, + "nodeType": "IfStatement", + "src": "2385:116:4", + "trueBody": { + "id": 720, + "nodeType": "Block", + "src": "2459:42:4", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "30", + "id": 717, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2488:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 716, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2480:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 715, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2480:7:4", + "typeDescriptions": {} + } + }, + "id": 718, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2480:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 697, + "id": 719, + "nodeType": "Return", + "src": "2473:17:4" + } + ] + } + }, + { + "assignments": [ + 723 + ], + "declarations": [ + { + "constant": false, + "id": 723, + "mutability": "mutable", + "name": "y", + "nameLocation": "2518:1:4", + "nodeType": "VariableDeclaration", + "scope": 800, + "src": "2510:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 722, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2510:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 731, + "initialValue": { + "arguments": [ + { + "id": 726, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 691, + "src": "2550:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 729, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 727, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 689, + "src": "2553:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "3237", + "id": 728, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2555:2:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_27_by_1", + "typeString": "int_const 27" + }, + "value": "27" + }, + "src": "2553:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 724, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "2520:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 725, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2536:13:4", + "memberName": "ec_Decompress", + "nodeType": "MemberAccess", + "referencedDeclaration": 1416, + "src": "2520:29:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) view returns (uint256)" + } + }, + "id": 730, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2520:38:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2510:48:4" + }, + { + "assignments": [ + 733 + ], + "declarations": [ + { + "constant": false, + "id": 733, + "mutability": "mutable", + "name": "rinv", + "nameLocation": "2576:4:4", + "nodeType": "VariableDeclaration", + "scope": 800, + "src": "2568:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 732, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2568:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 738, + "initialValue": { + "arguments": [ + { + "id": 736, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 691, + "src": "2609:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 734, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "2581:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 735, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2597:11:4", + "memberName": "FCL_nModInv", + "nodeType": "MemberAccess", + "referencedDeclaration": 1019, + "src": "2581:27:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) view returns (uint256)" + } + }, + "id": 737, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2581:30:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2568:43:4" + }, + { + "assignments": [ + 740 + ], + "declarations": [ + { + "constant": false, + "id": 740, + "mutability": "mutable", + "name": "u1", + "nameLocation": "2629:2:4", + "nodeType": "VariableDeclaration", + "scope": 800, + "src": "2621:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 739, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2621:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 755, + "initialValue": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 750, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 742, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "2639:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 743, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2655:1:4", + "memberName": "n", + "nodeType": "MemberAccess", + "referencedDeclaration": 991, + "src": "2639:17:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 745, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2664:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 746, + "name": "h", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 687, + "src": "2666:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 747, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "2668:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 748, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2684:1:4", + "memberName": "n", + "nodeType": "MemberAccess", + "referencedDeclaration": 991, + "src": "2668:17:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 744, + "name": "addmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -2, + "src": "2657:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 749, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2657:29:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2639:47:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 751, + "name": "rinv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 733, + "src": "2688:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 752, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "2693:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 753, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2709:1:4", + "memberName": "n", + "nodeType": "MemberAccess", + "referencedDeclaration": 991, + "src": "2693:17:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 741, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "2632:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2632:79:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2621:90:4" + }, + { + "assignments": [ + 757 + ], + "declarations": [ + { + "constant": false, + "id": 757, + "mutability": "mutable", + "name": "u2", + "nameLocation": "2737:2:4", + "nodeType": "VariableDeclaration", + "scope": 800, + "src": "2729:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 756, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2729:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 764, + "initialValue": { + "arguments": [ + { + "id": 759, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 693, + "src": "2747:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 760, + "name": "rinv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 733, + "src": "2750:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 761, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "2755:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 762, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2771:1:4", + "memberName": "n", + "nodeType": "MemberAccess", + "referencedDeclaration": 991, + "src": "2755:17:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 758, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "2740:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2740:33:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2729:44:4" + }, + { + "assignments": [ + 766 + ], + "declarations": [ + { + "constant": false, + "id": 766, + "mutability": "mutable", + "name": "Qx", + "nameLocation": "2799:2:4", + "nodeType": "VariableDeclaration", + "scope": 800, + "src": "2791:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 765, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2791:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 767, + "nodeType": "VariableDeclarationStatement", + "src": "2791:10:4" + }, + { + "assignments": [ + 769 + ], + "declarations": [ + { + "constant": false, + "id": 769, + "mutability": "mutable", + "name": "Qy", + "nameLocation": "2819:2:4", + "nodeType": "VariableDeclaration", + "scope": 800, + "src": "2811:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 768, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2811:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 770, + "nodeType": "VariableDeclarationStatement", + "src": "2811:10:4" + }, + { + "expression": { + "id": 781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "components": [ + { + "id": 771, + "name": "Qx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 766, + "src": "2832:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 772, + "name": "Qy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 769, + "src": "2835:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 773, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "2831:7:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 776, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 691, + "src": "2870:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 777, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 723, + "src": "2872:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 778, + "name": "u1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 740, + "src": "2875:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 779, + "name": "u2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 757, + "src": "2879:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 774, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "2839:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2855:14:4", + "memberName": "ecZZ_mulmuladd", + "nodeType": "MemberAccess", + "referencedDeclaration": 1941, + "src": "2839:30:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256,uint256) view returns (uint256,uint256)" + } + }, + "id": 780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2839:43:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "src": "2831:51:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 782, + "nodeType": "ExpressionStatement", + "src": "2831:51:4" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 792, + "name": "Qx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 766, + "src": "2951:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 793, + "name": "Qy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 769, + "src": "2955:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 790, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "2934:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 791, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2938:12:4", + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "2934:16:4", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 794, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2934:24:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 789, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "2924:9:4", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 795, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2924:35:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 788, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2916:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 787, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2916:7:4", + "typeDescriptions": {} + } + }, + "id": 796, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2916:44:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 786, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2908:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 785, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "2908:7:4", + "typeDescriptions": {} + } + }, + "id": 797, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2908:53:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 784, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2900:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 783, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2900:7:4", + "typeDescriptions": {} + } + }, + "id": 798, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2900:62:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 697, + "id": 799, + "nodeType": "Return", + "src": "2893:69:4" + } + ] + }, + "id": 801, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ec_recover_r1", + "nameLocation": "2280:13:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 694, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 687, + "mutability": "mutable", + "name": "h", + "nameLocation": "2302:1:4", + "nodeType": "VariableDeclaration", + "scope": 801, + "src": "2294:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 686, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2294:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 689, + "mutability": "mutable", + "name": "v", + "nameLocation": "2313:1:4", + "nodeType": "VariableDeclaration", + "scope": 801, + "src": "2305:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 688, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2305:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 691, + "mutability": "mutable", + "name": "r", + "nameLocation": "2324:1:4", + "nodeType": "VariableDeclaration", + "scope": 801, + "src": "2316:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 690, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2316:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 693, + "mutability": "mutable", + "name": "s", + "nameLocation": "2335:1:4", + "nodeType": "VariableDeclaration", + "scope": 801, + "src": "2327:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 692, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2327:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2293:44:4" + }, + "returnParameters": { + "id": 697, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 696, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 801, + "src": "2361:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 695, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2361:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2360:9:4" + }, + "scope": 968, + "src": "2271:698:4", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 877, + "nodeType": "Block", + "src": "3114:541:4", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 828, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 824, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 820, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 816, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 814, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 805, + "src": "3136:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 815, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3141:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3136:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 819, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 817, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 805, + "src": "3146:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 818, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 582, + "src": "3151:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3146:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3136:16:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 823, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 821, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 807, + "src": "3156:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 822, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3161:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3156:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3136:26:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 827, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 825, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 807, + "src": "3166:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 826, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 582, + "src": "3171:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3166:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3136:36:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 832, + "nodeType": "IfStatement", + "src": "3132:79:4", + "trueBody": { + "id": 831, + "nodeType": "Block", + "src": "3174:37:4", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 829, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3195:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 813, + "id": 830, + "nodeType": "Return", + "src": "3188:12:4" + } + ] + } + }, + { + "assignments": [ + 834 + ], + "declarations": [ + { + "constant": false, + "id": 834, + "mutability": "mutable", + "name": "sInv", + "nameLocation": "3386:4:4", + "nodeType": "VariableDeclaration", + "scope": 877, + "src": "3378:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 833, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3378:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 839, + "initialValue": { + "arguments": [ + { + "id": 837, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 807, + "src": "3421:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 835, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "3393:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 836, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3409:11:4", + "memberName": "FCL_nModInv", + "nodeType": "MemberAccess", + "referencedDeclaration": 1019, + "src": "3393:27:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) view returns (uint256)" + } + }, + "id": 838, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3393:30:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3378:45:4" + }, + { + "assignments": [ + 841 + ], + "declarations": [ + { + "constant": false, + "id": 841, + "mutability": "mutable", + "name": "X", + "nameLocation": "3442:1:4", + "nodeType": "VariableDeclaration", + "scope": 877, + "src": "3434:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 840, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3434:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 842, + "nodeType": "VariableDeclarationStatement", + "src": "3434:9:4" + }, + { + "expression": { + "id": 861, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 843, + "name": "X", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 841, + "src": "3484:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 849, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 803, + "src": "3545:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 848, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3537:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 847, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3537:7:4", + "typeDescriptions": {} + } + }, + "id": 850, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3537:16:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 851, + "name": "sInv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 834, + "src": "3555:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 852, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 582, + "src": "3561:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 846, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "3530:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 853, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3530:33:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 855, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 805, + "src": "3572:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 856, + "name": "sInv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 834, + "src": "3575:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 857, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 582, + "src": "3581:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 854, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "3565:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 858, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3565:18:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 859, + "name": "Shamir8", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 809, + "src": "3585:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 844, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "3488:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 845, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3504:25:4", + "memberName": "ecZZ_mulmuladd_S8_extcode", + "nodeType": "MemberAccess", + "referencedDeclaration": 2085, + "src": "3488:41:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_address_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,address) view returns (uint256)" + } + }, + "id": 860, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3488:105:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3484:109:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 862, + "nodeType": "ExpressionStatement", + "src": "3484:109:4" + }, + { + "expression": { + "id": 871, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 863, + "name": "X", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 841, + "src": "3604:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 865, + "name": "X", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 841, + "src": "3614:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 866, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 582, + "src": "3617:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 867, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 805, + "src": "3619:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3617:3:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 869, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 582, + "src": "3621:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 864, + "name": "addmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -2, + "src": "3607:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 870, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3607:17:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3604:20:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 872, + "nodeType": "ExpressionStatement", + "src": "3604:20:4" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 875, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 873, + "name": "X", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 841, + "src": "3642:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 874, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3647:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3642:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 813, + "id": 876, + "nodeType": "Return", + "src": "3635:13:4" + } + ] + }, + "id": 878, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ecdsa_precomputed_verify", + "nameLocation": "2984:24:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 810, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 803, + "mutability": "mutable", + "name": "message", + "nameLocation": "3017:7:4", + "nodeType": "VariableDeclaration", + "scope": 878, + "src": "3009:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 802, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3009:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 805, + "mutability": "mutable", + "name": "r", + "nameLocation": "3034:1:4", + "nodeType": "VariableDeclaration", + "scope": 878, + "src": "3026:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 804, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3026:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 807, + "mutability": "mutable", + "name": "s", + "nameLocation": "3045:1:4", + "nodeType": "VariableDeclaration", + "scope": 878, + "src": "3037:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 806, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3037:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 809, + "mutability": "mutable", + "name": "Shamir8", + "nameLocation": "3056:7:4", + "nodeType": "VariableDeclaration", + "scope": 878, + "src": "3048:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 808, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3048:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3008:56:4" + }, + "returnParameters": { + "id": 813, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 812, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 878, + "src": "3104:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 811, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3104:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3103:6:4" + }, + "scope": 968, + "src": "2975:680:4", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 966, + "nodeType": "Block", + "src": "3837:587:4", + "statements": [ + { + "assignments": [ + 892 + ], + "declarations": [ + { + "constant": false, + "id": 892, + "mutability": "mutable", + "name": "r", + "nameLocation": "3855:1:4", + "nodeType": "VariableDeclaration", + "scope": 966, + "src": "3847:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 891, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3847:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 896, + "initialValue": { + "baseExpression": { + "id": 893, + "name": "rs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 884, + "src": "3859:2:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_calldata_ptr", + "typeString": "uint256[2] calldata" + } + }, + "id": 895, + "indexExpression": { + "hexValue": "30", + "id": 894, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3862:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3859:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3847:17:4" + }, + { + "assignments": [ + 898 + ], + "declarations": [ + { + "constant": false, + "id": 898, + "mutability": "mutable", + "name": "s", + "nameLocation": "3882:1:4", + "nodeType": "VariableDeclaration", + "scope": 966, + "src": "3874:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 897, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3874:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 902, + "initialValue": { + "baseExpression": { + "id": 899, + "name": "rs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 884, + "src": "3886:2:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_calldata_ptr", + "typeString": "uint256[2] calldata" + } + }, + "id": 901, + "indexExpression": { + "hexValue": "31", + "id": 900, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3889:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3886:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3874:17:4" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 917, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 913, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 909, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 905, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 903, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 892, + "src": "3905:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 904, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3910:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3905:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 908, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 906, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 892, + "src": "3915:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 907, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 582, + "src": "3920:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3915:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3905:16:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 912, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 910, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 898, + "src": "3925:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 911, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3930:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3925:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3905:26:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 916, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 914, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 898, + "src": "3935:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 915, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 582, + "src": "3940:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3935:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3905:36:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 921, + "nodeType": "IfStatement", + "src": "3901:79:4", + "trueBody": { + "id": 920, + "nodeType": "Block", + "src": "3943:37:4", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 918, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3964:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 890, + "id": 919, + "nodeType": "Return", + "src": "3957:12:4" + } + ] + } + }, + { + "assignments": [ + 923 + ], + "declarations": [ + { + "constant": false, + "id": 923, + "mutability": "mutable", + "name": "sInv", + "nameLocation": "4155:4:4", + "nodeType": "VariableDeclaration", + "scope": 966, + "src": "4147:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 922, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4147:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 928, + "initialValue": { + "arguments": [ + { + "id": 926, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 898, + "src": "4190:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 924, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "4162:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 925, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4178:11:4", + "memberName": "FCL_nModInv", + "nodeType": "MemberAccess", + "referencedDeclaration": 1019, + "src": "4162:27:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) view returns (uint256)" + } + }, + "id": 927, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4162:30:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4147:45:4" + }, + { + "assignments": [ + 930 + ], + "declarations": [ + { + "constant": false, + "id": 930, + "mutability": "mutable", + "name": "X", + "nameLocation": "4211:1:4", + "nodeType": "VariableDeclaration", + "scope": 966, + "src": "4203:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 929, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4203:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 931, + "nodeType": "VariableDeclarationStatement", + "src": "4203:9:4" + }, + { + "expression": { + "id": 950, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 932, + "name": "X", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 930, + "src": "4253:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 938, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 880, + "src": "4314:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 937, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4306:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 936, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4306:7:4", + "typeDescriptions": {} + } + }, + "id": 939, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4306:16:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 940, + "name": "sInv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 923, + "src": "4324:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 941, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 582, + "src": "4330:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 935, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "4299:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 942, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4299:33:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 944, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 892, + "src": "4341:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 945, + "name": "sInv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 923, + "src": "4344:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 946, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 582, + "src": "4350:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 943, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "4334:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 947, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4334:18:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 948, + "name": "Shamir8", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 886, + "src": "4354:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 933, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "4257:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 934, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4273:25:4", + "memberName": "ecZZ_mulmuladd_S8_extcode", + "nodeType": "MemberAccess", + "referencedDeclaration": 2085, + "src": "4257:41:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_address_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,address) view returns (uint256)" + } + }, + "id": 949, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4257:105:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4253:109:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 951, + "nodeType": "ExpressionStatement", + "src": "4253:109:4" + }, + { + "expression": { + "id": 960, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 952, + "name": "X", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 930, + "src": "4373:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 954, + "name": "X", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 930, + "src": "4383:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 957, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 955, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 582, + "src": "4386:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 956, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 892, + "src": "4388:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4386:3:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 958, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 582, + "src": "4390:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 953, + "name": "addmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -2, + "src": "4376:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 959, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4376:17:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4373:20:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 961, + "nodeType": "ExpressionStatement", + "src": "4373:20:4" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 964, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 962, + "name": "X", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 930, + "src": "4411:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 963, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4416:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4411:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 890, + "id": 965, + "nodeType": "Return", + "src": "4404:13:4" + } + ] + }, + "id": 967, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ecdsa_precomputed_verify", + "nameLocation": "3705:24:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 887, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 880, + "mutability": "mutable", + "name": "message", + "nameLocation": "3738:7:4", + "nodeType": "VariableDeclaration", + "scope": 967, + "src": "3730:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 879, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3730:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 884, + "mutability": "mutable", + "name": "rs", + "nameLocation": "3767:2:4", + "nodeType": "VariableDeclaration", + "scope": 967, + "src": "3747:22:4", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_calldata_ptr", + "typeString": "uint256[2]" + }, + "typeName": { + "baseType": { + "id": 881, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3747:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 883, + "length": { + "hexValue": "32", + "id": 882, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3755:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "ArrayTypeName", + "src": "3747:10:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr", + "typeString": "uint256[2]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 886, + "mutability": "mutable", + "name": "Shamir8", + "nameLocation": "3779:7:4", + "nodeType": "VariableDeclaration", + "scope": 967, + "src": "3771:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 885, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3771:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3729:58:4" + }, + "returnParameters": { + "id": 890, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 889, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 967, + "src": "3827:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 888, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3827:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3826:6:4" + }, + "scope": 968, + "src": "3696:728:4", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 969, + "src": "1217:3244:4", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "1127:3335:4" + }, + "id": 4 + }, + "FreshCryptoLib/FCL_elliptic.sol": { + "ast": { + "absolutePath": "FreshCryptoLib/FCL_elliptic.sol", + "exportedSymbols": { + "FCL_Elliptic_ZZ": [ + 2309 + ] + }, + "id": 2310, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 970, + "literals": [ + "solidity", + ">=", + "0.8", + ".19", + "<", + "0.9", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "1186:32:5" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "FCL_Elliptic_ZZ", + "contractDependencies": [], + "contractKind": "library", + "fullyImplemented": true, + "id": 2309, + "linearizedBaseContracts": [ + 2309 + ], + "name": "FCL_Elliptic_ZZ", + "nameLocation": "1228:15:5", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 973, + "mutability": "constant", + "name": "MODEXP_PRECOMPILE", + "nameLocation": "1410:17:5", + "nodeType": "VariableDeclaration", + "scope": 2309, + "src": "1393:79:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 971, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1393:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": { + "hexValue": "307830303030303030303030303030303030303030303030303030303030303030303030303030303035", + "id": 972, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1430:42:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "value": "0x0000000000000000000000000000000000000005" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 976, + "mutability": "constant", + "name": "p", + "nameLocation": "1527:1:5", + "nodeType": "VariableDeclaration", + "scope": 2309, + "src": "1510:87:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 974, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1510:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "307846464646464646463030303030303031303030303030303030303030303030303030303030303030464646464646464646464646464646464646464646464646", + "id": 975, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1531:66:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_115792089210356248762697446949407573530086143415290314195533631308867097853951_by_1", + "typeString": "int_const 1157...(70 digits omitted)...3951" + }, + "value": "0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 979, + "mutability": "constant", + "name": "a", + "nameLocation": "1662:1:5", + "nodeType": "VariableDeclaration", + "scope": 2309, + "src": "1645:87:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 977, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1645:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "307846464646464646463030303030303031303030303030303030303030303030303030303030303030464646464646464646464646464646464646464646464643", + "id": 978, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1666:66:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_115792089210356248762697446949407573530086143415290314195533631308867097853948_by_1", + "typeString": "int_const 1157...(70 digits omitted)...3948" + }, + "value": "0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 982, + "mutability": "constant", + "name": "b", + "nameLocation": "1798:1:5", + "nodeType": "VariableDeclaration", + "scope": 2309, + "src": "1781:87:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 980, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1781:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "307835414336333544384141334139334537423345424244353537363938383642433635314430364230434335334230463633424345334333453237443236303442", + "id": 981, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1802:66:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_41058363725152142129326129780047268409114441015993725554835256314039467401291_by_1", + "typeString": "int_const 4105...(69 digits omitted)...1291" + }, + "value": "0x5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 985, + "mutability": "constant", + "name": "gx", + "nameLocation": "1933:2:5", + "nodeType": "VariableDeclaration", + "scope": 2309, + "src": "1916:88:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 983, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1916:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "307836423137443146324531324334323437463842434536453536334134343046323737303337443831324445423333413046344131333934354438393843323936", + "id": 984, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1938:66:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_48439561293906451759052585252797914202762949526041747995844080717082404635286_by_1", + "typeString": "int_const 4843...(69 digits omitted)...5286" + }, + "value": "0x6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 988, + "mutability": "constant", + "name": "gy", + "nameLocation": "2027:2:5", + "nodeType": "VariableDeclaration", + "scope": 2309, + "src": "2010:88:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 986, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2010:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "307834464533343245324645314137463942384545374542344137433046394531363242434533333537364233313545434543424236343036383337424635314635", + "id": 987, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2032:66:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_36134250956749795798585127919587881956611106672985015071877198253568414405109_by_1", + "typeString": "int_const 3613...(69 digits omitted)...5109" + }, + "value": "0x4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 991, + "mutability": "constant", + "name": "n", + "nameLocation": "2158:1:5", + "nodeType": "VariableDeclaration", + "scope": 2309, + "src": "2141:87:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 989, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2141:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "307846464646464646463030303030303030464646464646464646464646464646464243453646414144413731373945383446334239434143324643363332353531", + "id": 990, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2162:66:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_115792089210356248762697446949407573529996955224135760342422259061068512044369_by_1", + "typeString": "int_const 1157...(70 digits omitted)...4369" + }, + "value": "0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 994, + "mutability": "constant", + "name": "minus_2", + "nameLocation": "2336:7:5", + "nodeType": "VariableDeclaration", + "scope": 2309, + "src": "2319:93:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 992, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2319:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "307846464646464646463030303030303031303030303030303030303030303030303030303030303030464646464646464646464646464646464646464646464644", + "id": 993, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2346:66:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_115792089210356248762697446949407573530086143415290314195533631308867097853949_by_1", + "typeString": "int_const 1157...(70 digits omitted)...3949" + }, + "value": "0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFD" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 997, + "mutability": "constant", + "name": "minus_2modn", + "nameLocation": "2490:11:5", + "nodeType": "VariableDeclaration", + "scope": 2309, + "src": "2473:97:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 995, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2473:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "307846464646464646463030303030303030464646464646464646464646464646464243453646414144413731373945383446334239434143324643363332353446", + "id": 996, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2504:66:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_115792089210356248762697446949407573529996955224135760342422259061068512044367_by_1", + "typeString": "int_const 1157...(70 digits omitted)...4367" + }, + "value": "0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC63254F" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 1000, + "mutability": "constant", + "name": "minus_1", + "nameLocation": "2594:7:5", + "nodeType": "VariableDeclaration", + "scope": 2309, + "src": "2577:93:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 998, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2577:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "307846464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646", + "id": 999, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2604:66:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639935_by_1", + "typeString": "int_const 1157...(70 digits omitted)...9935" + }, + "value": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 1003, + "mutability": "constant", + "name": "pp1div4", + "nameLocation": "2709:7:5", + "nodeType": "VariableDeclaration", + "scope": 2309, + "src": "2692:91:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1001, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2692:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "307833666666666666666330303030303030343030303030303030303030303030303030303030303030343030303030303030303030303030303030303030303030", + "id": 1002, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2717:66:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_28948022302589062190674361737351893382521535853822578548883407827216774463488_by_1", + "typeString": "int_const 2894...(69 digits omitted)...3488" + }, + "value": "0x3fffffffc0000000400000000000000000000000400000000000000000000000" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 1006, + "mutability": "constant", + "name": "_NOTSQUARE", + "nameLocation": "2867:10:5", + "nodeType": "VariableDeclaration", + "scope": 2309, + "src": "2850:94:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1004, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2850:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "307846464646464646463030303030303032303030303030303030303030303030303030303030303030464646464646464646464646464646464646464646464646", + "id": 1005, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2878:66:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_115792089210356248768974548684794254293921932838497980611635986753331132366847_by_1", + "typeString": "int_const 1157...(70 digits omitted)...6847" + }, + "value": "0xFFFFFFFF00000002000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 1009, + "mutability": "constant", + "name": "_NOTONCURVE", + "nameLocation": "2967:11:5", + "nodeType": "VariableDeclaration", + "scope": 2309, + "src": "2950:95:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1007, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2950:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "307846464646464646463030303030303033303030303030303030303030303030303030303030303030464646464646464646464646464646464646464646464646", + "id": 1008, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2979:66:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_115792089210356248775251650420180935057757722261705647027738342197795166879743_by_1", + "typeString": "int_const 1157...(70 digits omitted)...9743" + }, + "value": "0xFFFFFFFF00000003000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF" + }, + "visibility": "internal" + }, + { + "body": { + "id": 1018, + "nodeType": "Block", + "src": "3225:663:5", + "statements": [ + { + "AST": { + "nativeSrc": "3244:638:5", + "nodeType": "YulBlock", + "src": "3244:638:5", + "statements": [ + { + "nativeSrc": "3258:26:5", + "nodeType": "YulVariableDeclaration", + "src": "3258:26:5", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3279:4:5", + "nodeType": "YulLiteral", + "src": "3279:4:5", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "3273:5:5", + "nodeType": "YulIdentifier", + "src": "3273:5:5" + }, + "nativeSrc": "3273:11:5", + "nodeType": "YulFunctionCall", + "src": "3273:11:5" + }, + "variables": [ + { + "name": "pointer", + "nativeSrc": "3262:7:5", + "nodeType": "YulTypedName", + "src": "3262:7:5", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pointer", + "nativeSrc": "3381:7:5", + "nodeType": "YulIdentifier", + "src": "3381:7:5" + }, + { + "kind": "number", + "nativeSrc": "3390:4:5", + "nodeType": "YulLiteral", + "src": "3390:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3374:6:5", + "nodeType": "YulIdentifier", + "src": "3374:6:5" + }, + "nativeSrc": "3374:21:5", + "nodeType": "YulFunctionCall", + "src": "3374:21:5" + }, + "nativeSrc": "3374:21:5", + "nodeType": "YulExpressionStatement", + "src": "3374:21:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pointer", + "nativeSrc": "3419:7:5", + "nodeType": "YulIdentifier", + "src": "3419:7:5" + }, + { + "kind": "number", + "nativeSrc": "3428:4:5", + "nodeType": "YulLiteral", + "src": "3428:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3415:3:5", + "nodeType": "YulIdentifier", + "src": "3415:3:5" + }, + "nativeSrc": "3415:18:5", + "nodeType": "YulFunctionCall", + "src": "3415:18:5" + }, + { + "kind": "number", + "nativeSrc": "3435:4:5", + "nodeType": "YulLiteral", + "src": "3435:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3408:6:5", + "nodeType": "YulIdentifier", + "src": "3408:6:5" + }, + "nativeSrc": "3408:32:5", + "nodeType": "YulFunctionCall", + "src": "3408:32:5" + }, + "nativeSrc": "3408:32:5", + "nodeType": "YulExpressionStatement", + "src": "3408:32:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pointer", + "nativeSrc": "3464:7:5", + "nodeType": "YulIdentifier", + "src": "3464:7:5" + }, + { + "kind": "number", + "nativeSrc": "3473:4:5", + "nodeType": "YulLiteral", + "src": "3473:4:5", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3460:3:5", + "nodeType": "YulIdentifier", + "src": "3460:3:5" + }, + "nativeSrc": "3460:18:5", + "nodeType": "YulFunctionCall", + "src": "3460:18:5" + }, + { + "kind": "number", + "nativeSrc": "3480:4:5", + "nodeType": "YulLiteral", + "src": "3480:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3453:6:5", + "nodeType": "YulIdentifier", + "src": "3453:6:5" + }, + "nativeSrc": "3453:32:5", + "nodeType": "YulFunctionCall", + "src": "3453:32:5" + }, + "nativeSrc": "3453:32:5", + "nodeType": "YulExpressionStatement", + "src": "3453:32:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pointer", + "nativeSrc": "3568:7:5", + "nodeType": "YulIdentifier", + "src": "3568:7:5" + }, + { + "kind": "number", + "nativeSrc": "3577:4:5", + "nodeType": "YulLiteral", + "src": "3577:4:5", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3564:3:5", + "nodeType": "YulIdentifier", + "src": "3564:3:5" + }, + "nativeSrc": "3564:18:5", + "nodeType": "YulFunctionCall", + "src": "3564:18:5" + }, + { + "name": "u", + "nativeSrc": "3584:1:5", + "nodeType": "YulIdentifier", + "src": "3584:1:5" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3557:6:5", + "nodeType": "YulIdentifier", + "src": "3557:6:5" + }, + "nativeSrc": "3557:29:5", + "nodeType": "YulFunctionCall", + "src": "3557:29:5" + }, + "nativeSrc": "3557:29:5", + "nodeType": "YulExpressionStatement", + "src": "3557:29:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pointer", + "nativeSrc": "3610:7:5", + "nodeType": "YulIdentifier", + "src": "3610:7:5" + }, + { + "kind": "number", + "nativeSrc": "3619:4:5", + "nodeType": "YulLiteral", + "src": "3619:4:5", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3606:3:5", + "nodeType": "YulIdentifier", + "src": "3606:3:5" + }, + "nativeSrc": "3606:18:5", + "nodeType": "YulFunctionCall", + "src": "3606:18:5" + }, + { + "name": "minus_2modn", + "nativeSrc": "3626:11:5", + "nodeType": "YulIdentifier", + "src": "3626:11:5" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3599:6:5", + "nodeType": "YulIdentifier", + "src": "3599:6:5" + }, + "nativeSrc": "3599:39:5", + "nodeType": "YulFunctionCall", + "src": "3599:39:5" + }, + "nativeSrc": "3599:39:5", + "nodeType": "YulExpressionStatement", + "src": "3599:39:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pointer", + "nativeSrc": "3662:7:5", + "nodeType": "YulIdentifier", + "src": "3662:7:5" + }, + { + "kind": "number", + "nativeSrc": "3671:4:5", + "nodeType": "YulLiteral", + "src": "3671:4:5", + "type": "", + "value": "0xa0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3658:3:5", + "nodeType": "YulIdentifier", + "src": "3658:3:5" + }, + "nativeSrc": "3658:18:5", + "nodeType": "YulFunctionCall", + "src": "3658:18:5" + }, + { + "name": "n", + "nativeSrc": "3678:1:5", + "nodeType": "YulIdentifier", + "src": "3678:1:5" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3651:6:5", + "nodeType": "YulIdentifier", + "src": "3651:6:5" + }, + "nativeSrc": "3651:29:5", + "nodeType": "YulFunctionCall", + "src": "3651:29:5" + }, + "nativeSrc": "3651:29:5", + "nodeType": "YulExpressionStatement", + "src": "3651:29:5" + }, + { + "body": { + "nativeSrc": "3819:16:5", + "nodeType": "YulBlock", + "src": "3819:16:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3828:1:5", + "nodeType": "YulLiteral", + "src": "3828:1:5", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "3831:1:5", + "nodeType": "YulLiteral", + "src": "3831:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "3821:6:5", + "nodeType": "YulIdentifier", + "src": "3821:6:5" + }, + "nativeSrc": "3821:12:5", + "nodeType": "YulFunctionCall", + "src": "3821:12:5" + }, + "nativeSrc": "3821:12:5", + "nodeType": "YulExpressionStatement", + "src": "3821:12:5" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3778:1:5", + "nodeType": "YulLiteral", + "src": "3778:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "3774:3:5", + "nodeType": "YulIdentifier", + "src": "3774:3:5" + }, + "nativeSrc": "3774:6:5", + "nodeType": "YulFunctionCall", + "src": "3774:6:5" + }, + { + "kind": "number", + "nativeSrc": "3782:4:5", + "nodeType": "YulLiteral", + "src": "3782:4:5", + "type": "", + "value": "0x05" + }, + { + "name": "pointer", + "nativeSrc": "3788:7:5", + "nodeType": "YulIdentifier", + "src": "3788:7:5" + }, + { + "kind": "number", + "nativeSrc": "3797:4:5", + "nodeType": "YulLiteral", + "src": "3797:4:5", + "type": "", + "value": "0xc0" + }, + { + "name": "pointer", + "nativeSrc": "3803:7:5", + "nodeType": "YulIdentifier", + "src": "3803:7:5" + }, + { + "kind": "number", + "nativeSrc": "3812:4:5", + "nodeType": "YulLiteral", + "src": "3812:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "3763:10:5", + "nodeType": "YulIdentifier", + "src": "3763:10:5" + }, + "nativeSrc": "3763:54:5", + "nodeType": "YulFunctionCall", + "src": "3763:54:5" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "3756:6:5", + "nodeType": "YulIdentifier", + "src": "3756:6:5" + }, + "nativeSrc": "3756:62:5", + "nodeType": "YulFunctionCall", + "src": "3756:62:5" + }, + "nativeSrc": "3753:82:5", + "nodeType": "YulIf", + "src": "3753:82:5" + }, + { + "nativeSrc": "3848:24:5", + "nodeType": "YulAssignment", + "src": "3848:24:5", + "value": { + "arguments": [ + { + "name": "pointer", + "nativeSrc": "3864:7:5", + "nodeType": "YulIdentifier", + "src": "3864:7:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "3858:5:5", + "nodeType": "YulIdentifier", + "src": "3858:5:5" + }, + "nativeSrc": "3858:14:5", + "nodeType": "YulFunctionCall", + "src": "3858:14:5" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "3848:6:5", + "nodeType": "YulIdentifier", + "src": "3848:6:5" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 997, + "isOffset": false, + "isSlot": false, + "src": "3626:11:5", + "valueSize": 1 + }, + { + "declaration": 991, + "isOffset": false, + "isSlot": false, + "src": "3678:1:5", + "valueSize": 1 + }, + { + "declaration": 1015, + "isOffset": false, + "isSlot": false, + "src": "3848:6:5", + "valueSize": 1 + }, + { + "declaration": 1012, + "isOffset": false, + "isSlot": false, + "src": "3584:1:5", + "valueSize": 1 + } + ], + "id": 1017, + "nodeType": "InlineAssembly", + "src": "3235:647:5" + } + ] + }, + "documentation": { + "id": 1010, + "nodeType": "StructuredDocumentation", + "src": "3052:97:5", + "text": " /* inversion mod n via a^(n-2), use of precompiled using little Fermat theorem" + }, + "id": 1019, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "FCL_nModInv", + "nameLocation": "3163:11:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1013, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1012, + "mutability": "mutable", + "name": "u", + "nameLocation": "3183:1:5", + "nodeType": "VariableDeclaration", + "scope": 1019, + "src": "3175:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1011, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3175:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3174:11:5" + }, + "returnParameters": { + "id": 1016, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1015, + "mutability": "mutable", + "name": "result", + "nameLocation": "3217:6:5", + "nodeType": "VariableDeclaration", + "scope": 1019, + "src": "3209:14:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1014, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3209:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3208:16:5" + }, + "scope": 2309, + "src": "3154:734:5", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1028, + "nodeType": "Block", + "src": "4071:659:5", + "statements": [ + { + "AST": { + "nativeSrc": "4090:634:5", + "nodeType": "YulBlock", + "src": "4090:634:5", + "statements": [ + { + "nativeSrc": "4104:26:5", + "nodeType": "YulVariableDeclaration", + "src": "4104:26:5", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4125:4:5", + "nodeType": "YulLiteral", + "src": "4125:4:5", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "4119:5:5", + "nodeType": "YulIdentifier", + "src": "4119:5:5" + }, + "nativeSrc": "4119:11:5", + "nodeType": "YulFunctionCall", + "src": "4119:11:5" + }, + "variables": [ + { + "name": "pointer", + "nativeSrc": "4108:7:5", + "nodeType": "YulTypedName", + "src": "4108:7:5", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pointer", + "nativeSrc": "4227:7:5", + "nodeType": "YulIdentifier", + "src": "4227:7:5" + }, + { + "kind": "number", + "nativeSrc": "4236:4:5", + "nodeType": "YulLiteral", + "src": "4236:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4220:6:5", + "nodeType": "YulIdentifier", + "src": "4220:6:5" + }, + "nativeSrc": "4220:21:5", + "nodeType": "YulFunctionCall", + "src": "4220:21:5" + }, + "nativeSrc": "4220:21:5", + "nodeType": "YulExpressionStatement", + "src": "4220:21:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pointer", + "nativeSrc": "4265:7:5", + "nodeType": "YulIdentifier", + "src": "4265:7:5" + }, + { + "kind": "number", + "nativeSrc": "4274:4:5", + "nodeType": "YulLiteral", + "src": "4274:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4261:3:5", + "nodeType": "YulIdentifier", + "src": "4261:3:5" + }, + "nativeSrc": "4261:18:5", + "nodeType": "YulFunctionCall", + "src": "4261:18:5" + }, + { + "kind": "number", + "nativeSrc": "4281:4:5", + "nodeType": "YulLiteral", + "src": "4281:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4254:6:5", + "nodeType": "YulIdentifier", + "src": "4254:6:5" + }, + "nativeSrc": "4254:32:5", + "nodeType": "YulFunctionCall", + "src": "4254:32:5" + }, + "nativeSrc": "4254:32:5", + "nodeType": "YulExpressionStatement", + "src": "4254:32:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pointer", + "nativeSrc": "4310:7:5", + "nodeType": "YulIdentifier", + "src": "4310:7:5" + }, + { + "kind": "number", + "nativeSrc": "4319:4:5", + "nodeType": "YulLiteral", + "src": "4319:4:5", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4306:3:5", + "nodeType": "YulIdentifier", + "src": "4306:3:5" + }, + "nativeSrc": "4306:18:5", + "nodeType": "YulFunctionCall", + "src": "4306:18:5" + }, + { + "kind": "number", + "nativeSrc": "4326:4:5", + "nodeType": "YulLiteral", + "src": "4326:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4299:6:5", + "nodeType": "YulIdentifier", + "src": "4299:6:5" + }, + "nativeSrc": "4299:32:5", + "nodeType": "YulFunctionCall", + "src": "4299:32:5" + }, + "nativeSrc": "4299:32:5", + "nodeType": "YulExpressionStatement", + "src": "4299:32:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pointer", + "nativeSrc": "4414:7:5", + "nodeType": "YulIdentifier", + "src": "4414:7:5" + }, + { + "kind": "number", + "nativeSrc": "4423:4:5", + "nodeType": "YulLiteral", + "src": "4423:4:5", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4410:3:5", + "nodeType": "YulIdentifier", + "src": "4410:3:5" + }, + "nativeSrc": "4410:18:5", + "nodeType": "YulFunctionCall", + "src": "4410:18:5" + }, + { + "name": "u", + "nativeSrc": "4430:1:5", + "nodeType": "YulIdentifier", + "src": "4430:1:5" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4403:6:5", + "nodeType": "YulIdentifier", + "src": "4403:6:5" + }, + "nativeSrc": "4403:29:5", + "nodeType": "YulFunctionCall", + "src": "4403:29:5" + }, + "nativeSrc": "4403:29:5", + "nodeType": "YulExpressionStatement", + "src": "4403:29:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pointer", + "nativeSrc": "4456:7:5", + "nodeType": "YulIdentifier", + "src": "4456:7:5" + }, + { + "kind": "number", + "nativeSrc": "4465:4:5", + "nodeType": "YulLiteral", + "src": "4465:4:5", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4452:3:5", + "nodeType": "YulIdentifier", + "src": "4452:3:5" + }, + "nativeSrc": "4452:18:5", + "nodeType": "YulFunctionCall", + "src": "4452:18:5" + }, + { + "name": "minus_2", + "nativeSrc": "4472:7:5", + "nodeType": "YulIdentifier", + "src": "4472:7:5" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4445:6:5", + "nodeType": "YulIdentifier", + "src": "4445:6:5" + }, + "nativeSrc": "4445:35:5", + "nodeType": "YulFunctionCall", + "src": "4445:35:5" + }, + "nativeSrc": "4445:35:5", + "nodeType": "YulExpressionStatement", + "src": "4445:35:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pointer", + "nativeSrc": "4504:7:5", + "nodeType": "YulIdentifier", + "src": "4504:7:5" + }, + { + "kind": "number", + "nativeSrc": "4513:4:5", + "nodeType": "YulLiteral", + "src": "4513:4:5", + "type": "", + "value": "0xa0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4500:3:5", + "nodeType": "YulIdentifier", + "src": "4500:3:5" + }, + "nativeSrc": "4500:18:5", + "nodeType": "YulFunctionCall", + "src": "4500:18:5" + }, + { + "name": "p", + "nativeSrc": "4520:1:5", + "nodeType": "YulIdentifier", + "src": "4520:1:5" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4493:6:5", + "nodeType": "YulIdentifier", + "src": "4493:6:5" + }, + "nativeSrc": "4493:29:5", + "nodeType": "YulFunctionCall", + "src": "4493:29:5" + }, + "nativeSrc": "4493:29:5", + "nodeType": "YulExpressionStatement", + "src": "4493:29:5" + }, + { + "body": { + "nativeSrc": "4661:16:5", + "nodeType": "YulBlock", + "src": "4661:16:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4670:1:5", + "nodeType": "YulLiteral", + "src": "4670:1:5", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "4673:1:5", + "nodeType": "YulLiteral", + "src": "4673:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "4663:6:5", + "nodeType": "YulIdentifier", + "src": "4663:6:5" + }, + "nativeSrc": "4663:12:5", + "nodeType": "YulFunctionCall", + "src": "4663:12:5" + }, + "nativeSrc": "4663:12:5", + "nodeType": "YulExpressionStatement", + "src": "4663:12:5" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4620:1:5", + "nodeType": "YulLiteral", + "src": "4620:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "4616:3:5", + "nodeType": "YulIdentifier", + "src": "4616:3:5" + }, + "nativeSrc": "4616:6:5", + "nodeType": "YulFunctionCall", + "src": "4616:6:5" + }, + { + "kind": "number", + "nativeSrc": "4624:4:5", + "nodeType": "YulLiteral", + "src": "4624:4:5", + "type": "", + "value": "0x05" + }, + { + "name": "pointer", + "nativeSrc": "4630:7:5", + "nodeType": "YulIdentifier", + "src": "4630:7:5" + }, + { + "kind": "number", + "nativeSrc": "4639:4:5", + "nodeType": "YulLiteral", + "src": "4639:4:5", + "type": "", + "value": "0xc0" + }, + { + "name": "pointer", + "nativeSrc": "4645:7:5", + "nodeType": "YulIdentifier", + "src": "4645:7:5" + }, + { + "kind": "number", + "nativeSrc": "4654:4:5", + "nodeType": "YulLiteral", + "src": "4654:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "4605:10:5", + "nodeType": "YulIdentifier", + "src": "4605:10:5" + }, + "nativeSrc": "4605:54:5", + "nodeType": "YulFunctionCall", + "src": "4605:54:5" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "4598:6:5", + "nodeType": "YulIdentifier", + "src": "4598:6:5" + }, + "nativeSrc": "4598:62:5", + "nodeType": "YulFunctionCall", + "src": "4598:62:5" + }, + "nativeSrc": "4595:82:5", + "nodeType": "YulIf", + "src": "4595:82:5" + }, + { + "nativeSrc": "4690:24:5", + "nodeType": "YulAssignment", + "src": "4690:24:5", + "value": { + "arguments": [ + { + "name": "pointer", + "nativeSrc": "4706:7:5", + "nodeType": "YulIdentifier", + "src": "4706:7:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "4700:5:5", + "nodeType": "YulIdentifier", + "src": "4700:5:5" + }, + "nativeSrc": "4700:14:5", + "nodeType": "YulFunctionCall", + "src": "4700:14:5" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "4690:6:5", + "nodeType": "YulIdentifier", + "src": "4690:6:5" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 994, + "isOffset": false, + "isSlot": false, + "src": "4472:7:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "4520:1:5", + "valueSize": 1 + }, + { + "declaration": 1025, + "isOffset": false, + "isSlot": false, + "src": "4690:6:5", + "valueSize": 1 + }, + { + "declaration": 1022, + "isOffset": false, + "isSlot": false, + "src": "4430:1:5", + "valueSize": 1 + } + ], + "id": 1027, + "nodeType": "InlineAssembly", + "src": "4081:643:5" + } + ] + }, + "documentation": { + "id": 1020, + "nodeType": "StructuredDocumentation", + "src": "3893:101:5", + "text": " /* @dev inversion mod nusing little Fermat theorem via a^(n-2), use of precompiled" + }, + "id": 1029, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "FCL_pModInv", + "nameLocation": "4009:11:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1023, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1022, + "mutability": "mutable", + "name": "u", + "nameLocation": "4029:1:5", + "nodeType": "VariableDeclaration", + "scope": 1029, + "src": "4021:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1021, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4021:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4020:11:5" + }, + "returnParameters": { + "id": 1026, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1025, + "mutability": "mutable", + "name": "result", + "nameLocation": "4063:6:5", + "nodeType": "VariableDeclaration", + "scope": 1029, + "src": "4055:14:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1024, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4055:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4054:16:5" + }, + "scope": 2309, + "src": "4000:730:5", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1104, + "nodeType": "Block", + "src": "4972:318:5", + "statements": [ + { + "assignments": [ + 1051 + ], + "declarations": [ + { + "constant": false, + "id": 1051, + "mutability": "mutable", + "name": "alpha2", + "nameLocation": "4998:6:5", + "nodeType": "VariableDeclaration", + "scope": 1104, + "src": "4990:14:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1050, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4990:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1057, + "initialValue": { + "arguments": [ + { + "id": 1053, + "name": "alpha", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1031, + "src": "5012:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1054, + "name": "alpha", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1031, + "src": "5018:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1055, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "5024:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1052, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "5005:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1056, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5005:21:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4990:36:5" + }, + { + "expression": { + "id": 1064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1058, + "name": "x3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1042, + "src": "5044:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1060, + "name": "alpha2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1051, + "src": "5054:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1061, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1033, + "src": "5062:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1062, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "5064:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1059, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "5047:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1063, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5047:19:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5044:22:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1065, + "nodeType": "ExpressionStatement", + "src": "5044:22:5" + }, + { + "expression": { + "id": 1076, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1066, + "name": "y3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1044, + "src": "5089:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 1069, + "name": "alpha", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1031, + "src": "5106:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1070, + "name": "alpha2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1051, + "src": "5113:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1071, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "5120:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1068, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "5099:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1072, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5099:23:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1073, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1035, + "src": "5124:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1074, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "5126:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1067, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "5092:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1075, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5092:36:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5089:39:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1077, + "nodeType": "ExpressionStatement", + "src": "5089:39:5" + }, + { + "expression": { + "id": 1084, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1078, + "name": "zz3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1046, + "src": "5139:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1080, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1037, + "src": "5150:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1081, + "name": "alpha2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1051, + "src": "5153:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1082, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "5160:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1079, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "5143:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1083, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5143:19:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5139:23:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1085, + "nodeType": "ExpressionStatement", + "src": "5139:23:5" + }, + { + "expression": { + "id": 1096, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1086, + "name": "zzz3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1048, + "src": "5184:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1088, + "name": "zzz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1039, + "src": "5196:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 1090, + "name": "alpha", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1031, + "src": "5207:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1091, + "name": "alpha2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1051, + "src": "5214:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1092, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "5221:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1089, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "5200:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1093, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5200:23:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1094, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "5224:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1087, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "5189:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1095, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5189:37:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5184:42:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1097, + "nodeType": "ExpressionStatement", + "src": "5184:42:5" + }, + { + "expression": { + "components": [ + { + "id": 1098, + "name": "x3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1042, + "src": "5266:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1099, + "name": "y3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1044, + "src": "5270:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1100, + "name": "zz3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1046, + "src": "5274:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1101, + "name": "zzz3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1048, + "src": "5279:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1102, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5265:19:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256,uint256,uint256)" + } + }, + "functionReturnParameters": 1049, + "id": 1103, + "nodeType": "Return", + "src": "5258:26:5" + } + ] + }, + "id": 1105, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ecZZ_Coronize", + "nameLocation": "4817:13:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1040, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1031, + "mutability": "mutable", + "name": "alpha", + "nameLocation": "4839:5:5", + "nodeType": "VariableDeclaration", + "scope": 1105, + "src": "4831:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1030, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4831:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1033, + "mutability": "mutable", + "name": "x", + "nameLocation": "4854:1:5", + "nodeType": "VariableDeclaration", + "scope": 1105, + "src": "4846:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1032, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4846:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1035, + "mutability": "mutable", + "name": "y", + "nameLocation": "4865:1:5", + "nodeType": "VariableDeclaration", + "scope": 1105, + "src": "4857:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1034, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4857:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1037, + "mutability": "mutable", + "name": "zz", + "nameLocation": "4877:2:5", + "nodeType": "VariableDeclaration", + "scope": 1105, + "src": "4869:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1036, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4869:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1039, + "mutability": "mutable", + "name": "zzz", + "nameLocation": "4889:3:5", + "nodeType": "VariableDeclaration", + "scope": 1105, + "src": "4881:11:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1038, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4881:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4830:63:5" + }, + "returnParameters": { + "id": 1049, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1042, + "mutability": "mutable", + "name": "x3", + "nameLocation": "4926:2:5", + "nodeType": "VariableDeclaration", + "scope": 1105, + "src": "4918:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1041, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4918:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1044, + "mutability": "mutable", + "name": "y3", + "nameLocation": "4938:2:5", + "nodeType": "VariableDeclaration", + "scope": 1105, + "src": "4930:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1043, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4930:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1046, + "mutability": "mutable", + "name": "zz3", + "nameLocation": "4950:3:5", + "nodeType": "VariableDeclaration", + "scope": 1105, + "src": "4942:11:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1045, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4942:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1048, + "mutability": "mutable", + "name": "zzz3", + "nameLocation": "4963:4:5", + "nodeType": "VariableDeclaration", + "scope": 1105, + "src": "4955:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1047, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4955:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4917:51:5" + }, + "scope": 2309, + "src": "4808:482:5", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1284, + "nodeType": "Block", + "src": "5491:757:5", + "statements": [ + { + "assignments": [ + 1133 + ], + "declarations": [ + { + "constant": false, + "id": 1133, + "mutability": "mutable", + "name": "u1", + "nameLocation": "5505:2:5", + "nodeType": "VariableDeclaration", + "scope": 1284, + "src": "5497:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1132, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5497:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1139, + "initialValue": { + "arguments": [ + { + "id": 1135, + "name": "x1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1107, + "src": "5515:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1136, + "name": "zz2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1119, + "src": "5518:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1137, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "5522:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1134, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "5508:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5508:16:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5497:27:5" + }, + { + "assignments": [ + 1141 + ], + "declarations": [ + { + "constant": false, + "id": 1141, + "mutability": "mutable", + "name": "u2", + "nameLocation": "5553:2:5", + "nodeType": "VariableDeclaration", + "scope": 1284, + "src": "5545:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1140, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5545:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1147, + "initialValue": { + "arguments": [ + { + "id": 1143, + "name": "x2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1115, + "src": "5563:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1144, + "name": "zz1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1111, + "src": "5567:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1145, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "5571:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1142, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "5556:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1146, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5556:17:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5545:28:5" + }, + { + "expression": { + "id": 1156, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1148, + "name": "u2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1141, + "src": "5609:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1150, + "name": "u2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1141, + "src": "5619:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1153, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1151, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "5623:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 1152, + "name": "u1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1133, + "src": "5625:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5623:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1154, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "5629:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1149, + "name": "addmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -2, + "src": "5612:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5612:19:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5609:22:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1157, + "nodeType": "ExpressionStatement", + "src": "5609:22:5" + }, + { + "expression": { + "id": 1164, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1158, + "name": "x1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1107, + "src": "5650:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1160, + "name": "u2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1141, + "src": "5660:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1161, + "name": "u2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1141, + "src": "5664:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1162, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "5668:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1159, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "5653:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1163, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5653:17:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5650:20:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1165, + "nodeType": "ExpressionStatement", + "src": "5650:20:5" + }, + { + "expression": { + "id": 1172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1166, + "name": "x2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1115, + "src": "5680:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1168, + "name": "x1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1107, + "src": "5690:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1169, + "name": "u2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1141, + "src": "5694:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1170, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "5698:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1167, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "5683:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1171, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5683:17:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5680:20:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1173, + "nodeType": "ExpressionStatement", + "src": "5680:20:5" + }, + { + "expression": { + "id": 1184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1174, + "name": "zz3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1128, + "src": "5716:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1176, + "name": "x1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1107, + "src": "5727:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 1178, + "name": "zz1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1111, + "src": "5738:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1179, + "name": "zz2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1119, + "src": "5743:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1180, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "5748:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1177, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "5731:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5731:19:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1182, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "5751:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1175, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "5720:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1183, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5720:33:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5716:37:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1185, + "nodeType": "ExpressionStatement", + "src": "5716:37:5" + }, + { + "expression": { + "id": 1196, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1186, + "name": "zzz3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1130, + "src": "5779:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1188, + "name": "zzz1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1113, + "src": "5791:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 1190, + "name": "zzz2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1121, + "src": "5804:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1191, + "name": "x2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1115, + "src": "5810:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1192, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "5814:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1189, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "5797:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1193, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5797:19:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1194, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "5817:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1187, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "5784:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1195, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5784:35:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5779:40:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1197, + "nodeType": "ExpressionStatement", + "src": "5779:40:5" + }, + { + "expression": { + "id": 1204, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1198, + "name": "zz1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1111, + "src": "5848:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1200, + "name": "y1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1109, + "src": "5859:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1201, + "name": "zzz2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1121, + "src": "5863:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1202, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "5868:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1199, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "5852:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1203, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5852:18:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5848:22:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1205, + "nodeType": "ExpressionStatement", + "src": "5848:22:5" + }, + { + "expression": { + "id": 1212, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1206, + "name": "zz2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1119, + "src": "5893:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1208, + "name": "y2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1117, + "src": "5904:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1209, + "name": "zzz1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1113, + "src": "5908:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1210, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "5914:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1207, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "5897:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1211, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5897:19:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5893:23:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1213, + "nodeType": "ExpressionStatement", + "src": "5893:23:5" + }, + { + "expression": { + "id": 1222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1214, + "name": "zz2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1119, + "src": "5942:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1216, + "name": "zz2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1119, + "src": "5953:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1217, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "5958:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 1218, + "name": "zz1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1111, + "src": "5960:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5958:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1220, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "5965:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1215, + "name": "addmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -2, + "src": "5946:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1221, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5946:21:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5942:25:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1223, + "nodeType": "ExpressionStatement", + "src": "5942:25:5" + }, + { + "expression": { + "id": 1230, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1224, + "name": "zzz1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1113, + "src": "5984:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1226, + "name": "u1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1133, + "src": "5996:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1227, + "name": "x1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1107, + "src": "6000:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1228, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "6003:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1225, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "5989:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5989:16:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5984:21:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1231, + "nodeType": "ExpressionStatement", + "src": "5984:21:5" + }, + { + "expression": { + "id": 1252, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1232, + "name": "x3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1124, + "src": "6023:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 1236, + "name": "zz2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1119, + "src": "6048:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1237, + "name": "zz2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1119, + "src": "6053:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1238, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "6058:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1235, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "6041:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1239, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6041:19:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1240, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "6062:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 1241, + "name": "x2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1115, + "src": "6064:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6062:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1243, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "6067:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1234, + "name": "addmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -2, + "src": "6034:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1244, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6034:35:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 1246, + "name": "minus_2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 994, + "src": "6078:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1247, + "name": "zzz1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1113, + "src": "6087:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1248, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "6092:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1245, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "6071:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1249, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6071:23:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1250, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "6095:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1233, + "name": "addmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -2, + "src": "6027:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1251, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6027:70:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6023:74:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1253, + "nodeType": "ExpressionStatement", + "src": "6023:74:5" + }, + { + "expression": { + "id": 1276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1254, + "name": "y3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1126, + "src": "6121:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 1257, + "name": "zz2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1119, + "src": "6139:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 1259, + "name": "zzz1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1113, + "src": "6151:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1262, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1260, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "6157:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 1261, + "name": "x3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1124, + "src": "6159:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6157:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1263, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "6163:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1258, + "name": "addmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -2, + "src": "6144:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6144:21:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1265, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "6166:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1256, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "6132:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6132:36:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1273, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1267, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "6170:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "arguments": [ + { + "id": 1269, + "name": "zz1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1111, + "src": "6179:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1270, + "name": "x2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1115, + "src": "6184:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1271, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "6188:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1268, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "6172:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1272, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6172:18:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6170:20:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1274, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "6191:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1255, + "name": "addmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -2, + "src": "6124:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6124:69:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6121:72:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1277, + "nodeType": "ExpressionStatement", + "src": "6121:72:5" + }, + { + "expression": { + "components": [ + { + "id": 1278, + "name": "x3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1124, + "src": "6225:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1279, + "name": "y3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1126, + "src": "6229:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1280, + "name": "zz3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1128, + "src": "6233:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1281, + "name": "zzz3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1130, + "src": "6238:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1282, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "6224:19:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256,uint256,uint256)" + } + }, + "functionReturnParameters": 1131, + "id": 1283, + "nodeType": "Return", + "src": "6217:26:5" + } + ] + }, + "id": 1285, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ecZZ_Add", + "nameLocation": "5303:8:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1122, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1107, + "mutability": "mutable", + "name": "x1", + "nameLocation": "5320:2:5", + "nodeType": "VariableDeclaration", + "scope": 1285, + "src": "5312:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1106, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5312:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1109, + "mutability": "mutable", + "name": "y1", + "nameLocation": "5332:2:5", + "nodeType": "VariableDeclaration", + "scope": 1285, + "src": "5324:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1108, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5324:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1111, + "mutability": "mutable", + "name": "zz1", + "nameLocation": "5344:3:5", + "nodeType": "VariableDeclaration", + "scope": 1285, + "src": "5336:11:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1110, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5336:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1113, + "mutability": "mutable", + "name": "zzz1", + "nameLocation": "5357:4:5", + "nodeType": "VariableDeclaration", + "scope": 1285, + "src": "5349:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1112, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5349:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1115, + "mutability": "mutable", + "name": "x2", + "nameLocation": "5371:2:5", + "nodeType": "VariableDeclaration", + "scope": 1285, + "src": "5363:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1114, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5363:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1117, + "mutability": "mutable", + "name": "y2", + "nameLocation": "5383:2:5", + "nodeType": "VariableDeclaration", + "scope": 1285, + "src": "5375:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1116, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5375:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1119, + "mutability": "mutable", + "name": "zz2", + "nameLocation": "5395:3:5", + "nodeType": "VariableDeclaration", + "scope": 1285, + "src": "5387:11:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1118, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5387:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1121, + "mutability": "mutable", + "name": "zzz2", + "nameLocation": "5408:4:5", + "nodeType": "VariableDeclaration", + "scope": 1285, + "src": "5400:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1120, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5400:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5311:102:5" + }, + "returnParameters": { + "id": 1131, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1124, + "mutability": "mutable", + "name": "x3", + "nameLocation": "5446:2:5", + "nodeType": "VariableDeclaration", + "scope": 1285, + "src": "5438:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1123, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5438:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1126, + "mutability": "mutable", + "name": "y3", + "nameLocation": "5458:2:5", + "nodeType": "VariableDeclaration", + "scope": 1285, + "src": "5450:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1125, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5450:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1128, + "mutability": "mutable", + "name": "zz3", + "nameLocation": "5470:3:5", + "nodeType": "VariableDeclaration", + "scope": 1285, + "src": "5462:11:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1127, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5462:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1130, + "mutability": "mutable", + "name": "zzz3", + "nameLocation": "5483:4:5", + "nodeType": "VariableDeclaration", + "scope": 1285, + "src": "5475:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1129, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5475:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5437:51:5" + }, + "scope": 2309, + "src": "5294:954:5", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1309, + "nodeType": "Block", + "src": "6701:1432:5", + "statements": [ + { + "AST": { + "nativeSrc": "6729:1314:5", + "nodeType": "YulBlock", + "src": "6729:1314:5", + "statements": [ + { + "nativeSrc": "6785:26:5", + "nodeType": "YulVariableDeclaration", + "src": "6785:26:5", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6806:4:5", + "nodeType": "YulLiteral", + "src": "6806:4:5", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "6800:5:5", + "nodeType": "YulIdentifier", + "src": "6800:5:5" + }, + "nativeSrc": "6800:11:5", + "nodeType": "YulFunctionCall", + "src": "6800:11:5" + }, + "variables": [ + { + "name": "pointer", + "nativeSrc": "6789:7:5", + "nodeType": "YulTypedName", + "src": "6789:7:5", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pointer", + "nativeSrc": "6869:7:5", + "nodeType": "YulIdentifier", + "src": "6869:7:5" + }, + { + "kind": "number", + "nativeSrc": "6878:4:5", + "nodeType": "YulLiteral", + "src": "6878:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6862:6:5", + "nodeType": "YulIdentifier", + "src": "6862:6:5" + }, + "nativeSrc": "6862:21:5", + "nodeType": "YulFunctionCall", + "src": "6862:21:5" + }, + "nativeSrc": "6862:21:5", + "nodeType": "YulExpressionStatement", + "src": "6862:21:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pointer", + "nativeSrc": "6947:7:5", + "nodeType": "YulIdentifier", + "src": "6947:7:5" + }, + { + "kind": "number", + "nativeSrc": "6956:4:5", + "nodeType": "YulLiteral", + "src": "6956:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6943:3:5", + "nodeType": "YulIdentifier", + "src": "6943:3:5" + }, + "nativeSrc": "6943:18:5", + "nodeType": "YulFunctionCall", + "src": "6943:18:5" + }, + { + "kind": "number", + "nativeSrc": "6963:4:5", + "nodeType": "YulLiteral", + "src": "6963:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6936:6:5", + "nodeType": "YulIdentifier", + "src": "6936:6:5" + }, + "nativeSrc": "6936:32:5", + "nodeType": "YulFunctionCall", + "src": "6936:32:5" + }, + "nativeSrc": "6936:32:5", + "nodeType": "YulExpressionStatement", + "src": "6936:32:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pointer", + "nativeSrc": "7031:7:5", + "nodeType": "YulIdentifier", + "src": "7031:7:5" + }, + { + "kind": "number", + "nativeSrc": "7040:4:5", + "nodeType": "YulLiteral", + "src": "7040:4:5", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7027:3:5", + "nodeType": "YulIdentifier", + "src": "7027:3:5" + }, + "nativeSrc": "7027:18:5", + "nodeType": "YulFunctionCall", + "src": "7027:18:5" + }, + { + "kind": "number", + "nativeSrc": "7047:4:5", + "nodeType": "YulLiteral", + "src": "7047:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7020:6:5", + "nodeType": "YulIdentifier", + "src": "7020:6:5" + }, + "nativeSrc": "7020:32:5", + "nodeType": "YulFunctionCall", + "src": "7020:32:5" + }, + "nativeSrc": "7020:32:5", + "nodeType": "YulExpressionStatement", + "src": "7020:32:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pointer", + "nativeSrc": "7109:7:5", + "nodeType": "YulIdentifier", + "src": "7109:7:5" + }, + { + "kind": "number", + "nativeSrc": "7118:4:5", + "nodeType": "YulLiteral", + "src": "7118:4:5", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7105:3:5", + "nodeType": "YulIdentifier", + "src": "7105:3:5" + }, + "nativeSrc": "7105:18:5", + "nodeType": "YulFunctionCall", + "src": "7105:18:5" + }, + { + "name": "self", + "nativeSrc": "7125:4:5", + "nodeType": "YulIdentifier", + "src": "7125:4:5" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7098:6:5", + "nodeType": "YulIdentifier", + "src": "7098:6:5" + }, + "nativeSrc": "7098:32:5", + "nodeType": "YulFunctionCall", + "src": "7098:32:5" + }, + "nativeSrc": "7098:32:5", + "nodeType": "YulExpressionStatement", + "src": "7098:32:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pointer", + "nativeSrc": "7185:7:5", + "nodeType": "YulIdentifier", + "src": "7185:7:5" + }, + { + "kind": "number", + "nativeSrc": "7194:4:5", + "nodeType": "YulLiteral", + "src": "7194:4:5", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7181:3:5", + "nodeType": "YulIdentifier", + "src": "7181:3:5" + }, + "nativeSrc": "7181:18:5", + "nodeType": "YulFunctionCall", + "src": "7181:18:5" + }, + { + "name": "pp1div4", + "nativeSrc": "7201:7:5", + "nodeType": "YulIdentifier", + "src": "7201:7:5" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7174:6:5", + "nodeType": "YulIdentifier", + "src": "7174:6:5" + }, + "nativeSrc": "7174:35:5", + "nodeType": "YulFunctionCall", + "src": "7174:35:5" + }, + "nativeSrc": "7174:35:5", + "nodeType": "YulExpressionStatement", + "src": "7174:35:5" + }, + { + "nativeSrc": "7396:33:5", + "nodeType": "YulVariableDeclaration", + "src": "7396:33:5", + "value": { + "arguments": [ + { + "name": "pointer", + "nativeSrc": "7415:7:5", + "nodeType": "YulIdentifier", + "src": "7415:7:5" + }, + { + "kind": "number", + "nativeSrc": "7424:4:5", + "nodeType": "YulLiteral", + "src": "7424:4:5", + "type": "", + "value": "0xa0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7411:3:5", + "nodeType": "YulIdentifier", + "src": "7411:3:5" + }, + "nativeSrc": "7411:18:5", + "nodeType": "YulFunctionCall", + "src": "7411:18:5" + }, + "variables": [ + { + "name": "_result", + "nativeSrc": "7400:7:5", + "nodeType": "YulTypedName", + "src": "7400:7:5", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "_result", + "nativeSrc": "7479:7:5", + "nodeType": "YulIdentifier", + "src": "7479:7:5" + }, + { + "name": "p", + "nativeSrc": "7488:1:5", + "nodeType": "YulIdentifier", + "src": "7488:1:5" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7472:6:5", + "nodeType": "YulIdentifier", + "src": "7472:6:5" + }, + "nativeSrc": "7472:18:5", + "nodeType": "YulFunctionCall", + "src": "7472:18:5" + }, + "nativeSrc": "7472:18:5", + "nodeType": "YulExpressionStatement", + "src": "7472:18:5" + }, + { + "body": { + "nativeSrc": "7964:16:5", + "nodeType": "YulBlock", + "src": "7964:16:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7973:1:5", + "nodeType": "YulLiteral", + "src": "7973:1:5", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "7976:1:5", + "nodeType": "YulLiteral", + "src": "7976:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "7966:6:5", + "nodeType": "YulIdentifier", + "src": "7966:6:5" + }, + "nativeSrc": "7966:12:5", + "nodeType": "YulFunctionCall", + "src": "7966:12:5" + }, + "nativeSrc": "7966:12:5", + "nodeType": "YulExpressionStatement", + "src": "7966:12:5" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7640:1:5", + "nodeType": "YulLiteral", + "src": "7640:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "7636:3:5", + "nodeType": "YulIdentifier", + "src": "7636:3:5" + }, + "nativeSrc": "7636:6:5", + "nodeType": "YulFunctionCall", + "src": "7636:6:5" + }, + { + "name": "MODEXP_PRECOMPILE", + "nativeSrc": "7685:17:5", + "nodeType": "YulIdentifier", + "src": "7685:17:5" + }, + { + "name": "pointer", + "nativeSrc": "7730:7:5", + "nodeType": "YulIdentifier", + "src": "7730:7:5" + }, + { + "kind": "number", + "nativeSrc": "7769:4:5", + "nodeType": "YulLiteral", + "src": "7769:4:5", + "type": "", + "value": "0xc0" + }, + { + "name": "_result", + "nativeSrc": "7818:7:5", + "nodeType": "YulIdentifier", + "src": "7818:7:5" + }, + { + "kind": "number", + "nativeSrc": "7913:4:5", + "nodeType": "YulLiteral", + "src": "7913:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "7608:10:5", + "nodeType": "YulIdentifier", + "src": "7608:10:5" + }, + "nativeSrc": "7608:345:5", + "nodeType": "YulFunctionCall", + "src": "7608:345:5" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "7588:6:5", + "nodeType": "YulIdentifier", + "src": "7588:6:5" + }, + "nativeSrc": "7588:375:5", + "nodeType": "YulFunctionCall", + "src": "7588:375:5" + }, + "nativeSrc": "7585:395:5", + "nodeType": "YulIf", + "src": "7585:395:5" + }, + { + "nativeSrc": "7984:24:5", + "nodeType": "YulAssignment", + "src": "7984:24:5", + "value": { + "arguments": [ + { + "name": "_result", + "nativeSrc": "8000:7:5", + "nodeType": "YulIdentifier", + "src": "8000:7:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "7994:5:5", + "nodeType": "YulIdentifier", + "src": "7994:5:5" + }, + "nativeSrc": "7994:14:5", + "nodeType": "YulFunctionCall", + "src": "7994:14:5" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "7984:6:5", + "nodeType": "YulIdentifier", + "src": "7984:6:5" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 973, + "isOffset": false, + "isSlot": false, + "src": "7685:17:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "7488:1:5", + "valueSize": 1 + }, + { + "declaration": 1003, + "isOffset": false, + "isSlot": false, + "src": "7201:7:5", + "valueSize": 1 + }, + { + "declaration": 1291, + "isOffset": false, + "isSlot": false, + "src": "7984:6:5", + "valueSize": 1 + }, + { + "declaration": 1288, + "isOffset": false, + "isSlot": false, + "src": "7125:4:5", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 1293, + "nodeType": "InlineAssembly", + "src": "6704:1339:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1300, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 1295, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1291, + "src": "8057:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1296, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1291, + "src": "8064:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1297, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "8071:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1294, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "8050:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8050:23:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 1299, + "name": "self", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1288, + "src": "8075:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8050:29:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1306, + "nodeType": "IfStatement", + "src": "8047:63:5", + "trueBody": { + "id": 1305, + "nodeType": "Block", + "src": "8080:30:5", + "statements": [ + { + "expression": { + "id": 1303, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1301, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1291, + "src": "8087:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1302, + "name": "_NOTSQUARE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1006, + "src": "8094:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8087:17:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1304, + "nodeType": "ExpressionStatement", + "src": "8087:17:5" + } + ] + } + }, + { + "expression": { + "id": 1307, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1291, + "src": "8124:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1292, + "id": 1308, + "nodeType": "Return", + "src": "8117:13:5" + } + ] + }, + "documentation": { + "id": 1286, + "nodeType": "StructuredDocumentation", + "src": "6250:381:5", + "text": "@notice Calculate one modular square root of a given integer. Assume that p=3 mod 4.\n @dev Uses the ModExp precompiled contract at address 0x05 for fast computation using little Fermat theorem\n @param self The integer of which to find the modular inverse\n @return result The modular inverse of the input integer. If the modular inverse doesn't exist, it revert the tx" + }, + "id": 1310, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "SqrtMod", + "nameLocation": "6641:7:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1289, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1288, + "mutability": "mutable", + "name": "self", + "nameLocation": "6657:4:5", + "nodeType": "VariableDeclaration", + "scope": 1310, + "src": "6649:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1287, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6649:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6648:14:5" + }, + "returnParameters": { + "id": 1292, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1291, + "mutability": "mutable", + "name": "result", + "nameLocation": "6694:6:5", + "nodeType": "VariableDeclaration", + "scope": 1310, + "src": "6686:14:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1290, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6686:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6685:16:5" + }, + "scope": 2309, + "src": "6632:1501:5", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1347, + "nodeType": "Block", + "src": "8294:138:5", + "statements": [ + { + "id": 1346, + "nodeType": "UncheckedBlock", + "src": "8304:122:5", + "statements": [ + { + "expression": { + "id": 1326, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 1322, + "name": "P", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1320, + "src": "8328:1:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", + "typeString": "uint256[4] memory" + } + }, + "id": 1324, + "indexExpression": { + "hexValue": "32", + "id": 1323, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8330:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8328:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "31", + "id": 1325, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8335:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "8328:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1327, + "nodeType": "ExpressionStatement", + "src": "8328:8:5" + }, + { + "expression": { + "id": 1332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 1328, + "name": "P", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1320, + "src": "8355:1:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", + "typeString": "uint256[4] memory" + } + }, + "id": 1330, + "indexExpression": { + "hexValue": "33", + "id": 1329, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8357:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8355:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "31", + "id": 1331, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8362:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "8355:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1333, + "nodeType": "ExpressionStatement", + "src": "8355:8:5" + }, + { + "expression": { + "id": 1338, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 1334, + "name": "P", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1320, + "src": "8383:1:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", + "typeString": "uint256[4] memory" + } + }, + "id": 1336, + "indexExpression": { + "hexValue": "30", + "id": 1335, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8385:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8383:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1337, + "name": "x0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1313, + "src": "8390:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8383:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1339, + "nodeType": "ExpressionStatement", + "src": "8383:9:5" + }, + { + "expression": { + "id": 1344, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 1340, + "name": "P", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1320, + "src": "8406:1:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", + "typeString": "uint256[4] memory" + } + }, + "id": 1342, + "indexExpression": { + "hexValue": "31", + "id": 1341, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8408:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8406:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1343, + "name": "y0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1315, + "src": "8413:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8406:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1345, + "nodeType": "ExpressionStatement", + "src": "8406:9:5" + } + ] + } + ] + }, + "documentation": { + "id": 1311, + "nodeType": "StructuredDocumentation", + "src": "8138:62:5", + "text": " /* @dev Convert from affine rep to XYZZ rep" + }, + "id": 1348, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ecAff_SetZZ", + "nameLocation": "8214:11:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1316, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1313, + "mutability": "mutable", + "name": "x0", + "nameLocation": "8234:2:5", + "nodeType": "VariableDeclaration", + "scope": 1348, + "src": "8226:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1312, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8226:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1315, + "mutability": "mutable", + "name": "y0", + "nameLocation": "8246:2:5", + "nodeType": "VariableDeclaration", + "scope": 1348, + "src": "8238:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1314, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8238:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8225:24:5" + }, + "returnParameters": { + "id": 1321, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1320, + "mutability": "mutable", + "name": "P", + "nameLocation": "8291:1:5", + "nodeType": "VariableDeclaration", + "scope": 1348, + "src": "8273:19:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", + "typeString": "uint256[4]" + }, + "typeName": { + "baseType": { + "id": 1317, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8273:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1319, + "length": { + "hexValue": "34", + "id": 1318, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8281:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "nodeType": "ArrayTypeName", + "src": "8273:10:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$4_storage_ptr", + "typeString": "uint256[4]" + } + }, + "visibility": "internal" + } + ], + "src": "8272:21:5" + }, + "scope": 2309, + "src": "8205:227:5", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1415, + "nodeType": "Block", + "src": "8520:271:5", + "statements": [ + { + "assignments": [ + 1358 + ], + "declarations": [ + { + "constant": false, + "id": 1358, + "mutability": "mutable", + "name": "y2", + "nameLocation": "8540:2:5", + "nodeType": "VariableDeclaration", + "scope": 1415, + "src": "8532:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1357, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8532:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1368, + "initialValue": { + "arguments": [ + { + "id": 1360, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1350, + "src": "8550:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 1362, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1350, + "src": "8559:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1363, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1350, + "src": "8561:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1364, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "8563:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1361, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "8552:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1365, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8552:13:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1366, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "8566:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1359, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "8543:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1367, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8543:25:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8532:36:5" + }, + { + "expression": { + "id": 1383, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1369, + "name": "y2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1358, + "src": "8582:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1371, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 982, + "src": "8592:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 1373, + "name": "y2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1358, + "src": "8601:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 1375, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1350, + "src": "8611:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1376, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 979, + "src": "8613:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1377, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "8615:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1374, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "8604:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1378, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8604:13:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1379, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "8618:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1372, + "name": "addmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -2, + "src": "8594:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1380, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8594:26:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1381, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "8621:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1370, + "name": "addmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -2, + "src": "8585:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8585:38:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8582:41:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1384, + "nodeType": "ExpressionStatement", + "src": "8582:41:5" + }, + { + "expression": { + "id": 1389, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1385, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1355, + "src": "8643:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1387, + "name": "y2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1358, + "src": "8653:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1386, + "name": "SqrtMod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1310, + "src": "8645:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) view returns (uint256)" + } + }, + "id": 1388, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8645:11:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8643:13:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1390, + "nodeType": "ExpressionStatement", + "src": "8643:13:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1393, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1391, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1355, + "src": "8669:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 1392, + "name": "_NOTSQUARE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1006, + "src": "8672:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8669:13:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1397, + "nodeType": "IfStatement", + "src": "8666:59:5", + "trueBody": { + "id": 1396, + "nodeType": "Block", + "src": "8683:42:5", + "statements": [ + { + "expression": { + "id": 1394, + "name": "_NOTONCURVE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1009, + "src": "8703:11:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1356, + "id": 1395, + "nodeType": "Return", + "src": "8696:18:5" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1406, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1400, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1398, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1355, + "src": "8738:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "31", + "id": 1399, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8740:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "8738:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1401, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8737:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1404, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1402, + "name": "parity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1352, + "src": "8745:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "31", + "id": 1403, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8752:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "8745:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1405, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8744:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8737:17:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1414, + "nodeType": "IfStatement", + "src": "8734:51:5", + "trueBody": { + "id": 1413, + "nodeType": "Block", + "src": "8755:30:5", + "statements": [ + { + "expression": { + "id": 1411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1407, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1355, + "src": "8769:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1410, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1408, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "8771:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 1409, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1355, + "src": "8773:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8771:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8769:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1412, + "nodeType": "ExpressionStatement", + "src": "8769:5:5" + } + ] + } + } + ] + }, + "id": 1416, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ec_Decompress", + "nameLocation": "8447:13:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1353, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1350, + "mutability": "mutable", + "name": "x", + "nameLocation": "8469:1:5", + "nodeType": "VariableDeclaration", + "scope": 1416, + "src": "8461:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1349, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8461:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1352, + "mutability": "mutable", + "name": "parity", + "nameLocation": "8480:6:5", + "nodeType": "VariableDeclaration", + "scope": 1416, + "src": "8472:14:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1351, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8472:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8460:27:5" + }, + "returnParameters": { + "id": 1356, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1355, + "mutability": "mutable", + "name": "y", + "nameLocation": "8518:1:5", + "nodeType": "VariableDeclaration", + "scope": 1416, + "src": "8510:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1354, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8510:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8509:11:5" + }, + "scope": 2309, + "src": "8438:353:5", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1470, + "nodeType": "Block", + "src": "9069:236:5", + "statements": [ + { + "assignments": [ + 1433 + ], + "declarations": [ + { + "constant": false, + "id": 1433, + "mutability": "mutable", + "name": "zzzInv", + "nameLocation": "9087:6:5", + "nodeType": "VariableDeclaration", + "scope": 1470, + "src": "9079:14:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1432, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9079:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1437, + "initialValue": { + "arguments": [ + { + "id": 1435, + "name": "zzz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1425, + "src": "9108:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1434, + "name": "FCL_pModInv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1029, + "src": "9096:11:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) view returns (uint256)" + } + }, + "id": 1436, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9096:16:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9079:33:5" + }, + { + "expression": { + "id": 1444, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1438, + "name": "y1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1430, + "src": "9130:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1440, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1421, + "src": "9142:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1441, + "name": "zzzInv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1433, + "src": "9145:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1442, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "9153:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1439, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "9135:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1443, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9135:20:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9130:25:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1445, + "nodeType": "ExpressionStatement", + "src": "9130:25:5" + }, + { + "assignments": [ + 1447 + ], + "declarations": [ + { + "constant": false, + "id": 1447, + "mutability": "mutable", + "name": "_b", + "nameLocation": "9181:2:5", + "nodeType": "VariableDeclaration", + "scope": 1470, + "src": "9173:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1446, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9173:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1453, + "initialValue": { + "arguments": [ + { + "id": 1449, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1423, + "src": "9193:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1450, + "name": "zzzInv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1433, + "src": "9197:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1451, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "9205:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1448, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "9186:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1452, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9186:21:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9173:34:5" + }, + { + "expression": { + "id": 1460, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1454, + "name": "zzzInv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1433, + "src": "9223:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1456, + "name": "_b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1447, + "src": "9239:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1457, + "name": "_b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1447, + "src": "9243:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1458, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "9247:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1455, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "9232:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1459, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9232:17:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9223:26:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1461, + "nodeType": "ExpressionStatement", + "src": "9223:26:5" + }, + { + "expression": { + "id": 1468, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1462, + "name": "x1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1428, + "src": "9266:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1464, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1419, + "src": "9278:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1465, + "name": "zzzInv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1433, + "src": "9281:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1466, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "9289:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1463, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "9271:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1467, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9271:20:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9266:25:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1469, + "nodeType": "ExpressionStatement", + "src": "9266:25:5" + } + ] + }, + "documentation": { + "id": 1417, + "nodeType": "StructuredDocumentation", + "src": "8797:62:5", + "text": " /* @dev Convert from XYZZ rep to affine rep" + }, + "id": 1471, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ecZZ_SetAff", + "nameLocation": "8963:11:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1426, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1419, + "mutability": "mutable", + "name": "x", + "nameLocation": "8983:1:5", + "nodeType": "VariableDeclaration", + "scope": 1471, + "src": "8975:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1418, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8975:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1421, + "mutability": "mutable", + "name": "y", + "nameLocation": "8994:1:5", + "nodeType": "VariableDeclaration", + "scope": 1471, + "src": "8986:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1420, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8986:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1423, + "mutability": "mutable", + "name": "zz", + "nameLocation": "9005:2:5", + "nodeType": "VariableDeclaration", + "scope": 1471, + "src": "8997:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1422, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8997:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1425, + "mutability": "mutable", + "name": "zzz", + "nameLocation": "9017:3:5", + "nodeType": "VariableDeclaration", + "scope": 1471, + "src": "9009:11:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1424, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9009:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8974:47:5" + }, + "returnParameters": { + "id": 1431, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1428, + "mutability": "mutable", + "name": "x1", + "nameLocation": "9053:2:5", + "nodeType": "VariableDeclaration", + "scope": 1471, + "src": "9045:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1427, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9045:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1430, + "mutability": "mutable", + "name": "y1", + "nameLocation": "9065:2:5", + "nodeType": "VariableDeclaration", + "scope": 1471, + "src": "9057:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1429, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9057:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9044:24:5" + }, + "scope": 2309, + "src": "8954:351:5", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1499, + "nodeType": "Block", + "src": "9578:764:5", + "statements": [ + { + "id": 1492, + "nodeType": "UncheckedBlock", + "src": "9588:715:5", + "statements": [ + { + "AST": { + "nativeSrc": "9621:672:5", + "nodeType": "YulBlock", + "src": "9621:672:5", + "statements": [ + { + "nativeSrc": "9639:21:5", + "nodeType": "YulAssignment", + "src": "9639:21:5", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9652:1:5", + "nodeType": "YulLiteral", + "src": "9652:1:5", + "type": "", + "value": "2" + }, + { + "name": "y", + "nativeSrc": "9655:1:5", + "nodeType": "YulIdentifier", + "src": "9655:1:5" + }, + { + "name": "p", + "nativeSrc": "9658:1:5", + "nodeType": "YulIdentifier", + "src": "9658:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "9645:6:5", + "nodeType": "YulIdentifier", + "src": "9645:6:5" + }, + "nativeSrc": "9645:15:5", + "nodeType": "YulFunctionCall", + "src": "9645:15:5" + }, + "variableNames": [ + { + "name": "P0", + "nativeSrc": "9639:2:5", + "nodeType": "YulIdentifier", + "src": "9639:2:5" + } + ] + }, + { + "nativeSrc": "9688:23:5", + "nodeType": "YulAssignment", + "src": "9688:23:5", + "value": { + "arguments": [ + { + "name": "P0", + "nativeSrc": "9701:2:5", + "nodeType": "YulIdentifier", + "src": "9701:2:5" + }, + { + "name": "P0", + "nativeSrc": "9705:2:5", + "nodeType": "YulIdentifier", + "src": "9705:2:5" + }, + { + "name": "p", + "nativeSrc": "9709:1:5", + "nodeType": "YulIdentifier", + "src": "9709:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "9694:6:5", + "nodeType": "YulIdentifier", + "src": "9694:6:5" + }, + "nativeSrc": "9694:17:5", + "nodeType": "YulFunctionCall", + "src": "9694:17:5" + }, + "variableNames": [ + { + "name": "P2", + "nativeSrc": "9688:2:5", + "nodeType": "YulIdentifier", + "src": "9688:2:5" + } + ] + }, + { + "nativeSrc": "9737:22:5", + "nodeType": "YulAssignment", + "src": "9737:22:5", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "9750:1:5", + "nodeType": "YulIdentifier", + "src": "9750:1:5" + }, + { + "name": "P2", + "nativeSrc": "9753:2:5", + "nodeType": "YulIdentifier", + "src": "9753:2:5" + }, + { + "name": "p", + "nativeSrc": "9757:1:5", + "nodeType": "YulIdentifier", + "src": "9757:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "9743:6:5", + "nodeType": "YulIdentifier", + "src": "9743:6:5" + }, + "nativeSrc": "9743:16:5", + "nodeType": "YulFunctionCall", + "src": "9743:16:5" + }, + "variableNames": [ + { + "name": "P3", + "nativeSrc": "9737:2:5", + "nodeType": "YulIdentifier", + "src": "9737:2:5" + } + ] + }, + { + "nativeSrc": "9788:23:5", + "nodeType": "YulAssignment", + "src": "9788:23:5", + "value": { + "arguments": [ + { + "name": "P0", + "nativeSrc": "9801:2:5", + "nodeType": "YulIdentifier", + "src": "9801:2:5" + }, + { + "name": "P2", + "nativeSrc": "9805:2:5", + "nodeType": "YulIdentifier", + "src": "9805:2:5" + }, + { + "name": "p", + "nativeSrc": "9809:1:5", + "nodeType": "YulIdentifier", + "src": "9809:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "9794:6:5", + "nodeType": "YulIdentifier", + "src": "9794:6:5" + }, + "nativeSrc": "9794:17:5", + "nodeType": "YulFunctionCall", + "src": "9794:17:5" + }, + "variableNames": [ + { + "name": "P1", + "nativeSrc": "9788:2:5", + "nodeType": "YulIdentifier", + "src": "9788:2:5" + } + ] + }, + { + "nativeSrc": "9836:23:5", + "nodeType": "YulAssignment", + "src": "9836:23:5", + "value": { + "arguments": [ + { + "name": "P2", + "nativeSrc": "9849:2:5", + "nodeType": "YulIdentifier", + "src": "9849:2:5" + }, + { + "name": "zz", + "nativeSrc": "9853:2:5", + "nodeType": "YulIdentifier", + "src": "9853:2:5" + }, + { + "name": "p", + "nativeSrc": "9857:1:5", + "nodeType": "YulIdentifier", + "src": "9857:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "9842:6:5", + "nodeType": "YulIdentifier", + "src": "9842:6:5" + }, + "nativeSrc": "9842:17:5", + "nodeType": "YulFunctionCall", + "src": "9842:17:5" + }, + "variableNames": [ + { + "name": "P2", + "nativeSrc": "9836:2:5", + "nodeType": "YulIdentifier", + "src": "9836:2:5" + } + ] + }, + { + "nativeSrc": "9888:73:5", + "nodeType": "YulAssignment", + "src": "9888:73:5", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9901:1:5", + "nodeType": "YulLiteral", + "src": "9901:1:5", + "type": "", + "value": "3" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "x", + "nativeSrc": "9918:1:5", + "nodeType": "YulIdentifier", + "src": "9918:1:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "9925:1:5", + "nodeType": "YulIdentifier", + "src": "9925:1:5" + }, + { + "name": "zz", + "nativeSrc": "9928:2:5", + "nodeType": "YulIdentifier", + "src": "9928:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "9921:3:5", + "nodeType": "YulIdentifier", + "src": "9921:3:5" + }, + "nativeSrc": "9921:10:5", + "nodeType": "YulFunctionCall", + "src": "9921:10:5" + }, + { + "name": "p", + "nativeSrc": "9933:1:5", + "nodeType": "YulIdentifier", + "src": "9933:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "9911:6:5", + "nodeType": "YulIdentifier", + "src": "9911:6:5" + }, + "nativeSrc": "9911:24:5", + "nodeType": "YulFunctionCall", + "src": "9911:24:5" + }, + { + "arguments": [ + { + "name": "x", + "nativeSrc": "9944:1:5", + "nodeType": "YulIdentifier", + "src": "9944:1:5" + }, + { + "name": "zz", + "nativeSrc": "9947:2:5", + "nodeType": "YulIdentifier", + "src": "9947:2:5" + }, + { + "name": "p", + "nativeSrc": "9951:1:5", + "nodeType": "YulIdentifier", + "src": "9951:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "9937:6:5", + "nodeType": "YulIdentifier", + "src": "9937:6:5" + }, + "nativeSrc": "9937:16:5", + "nodeType": "YulFunctionCall", + "src": "9937:16:5" + }, + { + "name": "p", + "nativeSrc": "9955:1:5", + "nodeType": "YulIdentifier", + "src": "9955:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "9904:6:5", + "nodeType": "YulIdentifier", + "src": "9904:6:5" + }, + "nativeSrc": "9904:53:5", + "nodeType": "YulFunctionCall", + "src": "9904:53:5" + }, + { + "name": "p", + "nativeSrc": "9959:1:5", + "nodeType": "YulIdentifier", + "src": "9959:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "9894:6:5", + "nodeType": "YulIdentifier", + "src": "9894:6:5" + }, + "nativeSrc": "9894:67:5", + "nodeType": "YulFunctionCall", + "src": "9894:67:5" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "9888:2:5", + "nodeType": "YulIdentifier", + "src": "9888:2:5" + } + ] + }, + { + "nativeSrc": "10002:58:5", + "nodeType": "YulAssignment", + "src": "10002:58:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "zz", + "nativeSrc": "10022:2:5", + "nodeType": "YulIdentifier", + "src": "10022:2:5" + }, + { + "name": "zz", + "nativeSrc": "10026:2:5", + "nodeType": "YulIdentifier", + "src": "10026:2:5" + }, + { + "name": "p", + "nativeSrc": "10030:1:5", + "nodeType": "YulIdentifier", + "src": "10030:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "10015:6:5", + "nodeType": "YulIdentifier", + "src": "10015:6:5" + }, + "nativeSrc": "10015:17:5", + "nodeType": "YulFunctionCall", + "src": "10015:17:5" + }, + { + "arguments": [ + { + "name": "minus_2", + "nativeSrc": "10041:7:5", + "nodeType": "YulIdentifier", + "src": "10041:7:5" + }, + { + "name": "P3", + "nativeSrc": "10050:2:5", + "nodeType": "YulIdentifier", + "src": "10050:2:5" + }, + { + "name": "p", + "nativeSrc": "10054:1:5", + "nodeType": "YulIdentifier", + "src": "10054:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "10034:6:5", + "nodeType": "YulIdentifier", + "src": "10034:6:5" + }, + "nativeSrc": "10034:22:5", + "nodeType": "YulFunctionCall", + "src": "10034:22:5" + }, + { + "name": "p", + "nativeSrc": "10058:1:5", + "nodeType": "YulIdentifier", + "src": "10058:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "10008:6:5", + "nodeType": "YulIdentifier", + "src": "10008:6:5" + }, + "nativeSrc": "10008:52:5", + "nodeType": "YulFunctionCall", + "src": "10008:52:5" + }, + "variableNames": [ + { + "name": "P0", + "nativeSrc": "10002:2:5", + "nodeType": "YulIdentifier", + "src": "10002:2:5" + } + ] + }, + { + "nativeSrc": "10089:45:5", + "nodeType": "YulAssignment", + "src": "10089:45:5", + "value": { + "arguments": [ + { + "name": "zz", + "nativeSrc": "10101:2:5", + "nodeType": "YulIdentifier", + "src": "10101:2:5" + }, + { + "arguments": [ + { + "name": "P3", + "nativeSrc": "10112:2:5", + "nodeType": "YulIdentifier", + "src": "10112:2:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "10120:1:5", + "nodeType": "YulIdentifier", + "src": "10120:1:5" + }, + { + "name": "P0", + "nativeSrc": "10123:2:5", + "nodeType": "YulIdentifier", + "src": "10123:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "10116:3:5", + "nodeType": "YulIdentifier", + "src": "10116:3:5" + }, + "nativeSrc": "10116:10:5", + "nodeType": "YulFunctionCall", + "src": "10116:10:5" + }, + { + "name": "p", + "nativeSrc": "10128:1:5", + "nodeType": "YulIdentifier", + "src": "10128:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "10105:6:5", + "nodeType": "YulIdentifier", + "src": "10105:6:5" + }, + "nativeSrc": "10105:25:5", + "nodeType": "YulFunctionCall", + "src": "10105:25:5" + }, + { + "name": "p", + "nativeSrc": "10132:1:5", + "nodeType": "YulIdentifier", + "src": "10132:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "10094:6:5", + "nodeType": "YulIdentifier", + "src": "10094:6:5" + }, + "nativeSrc": "10094:40:5", + "nodeType": "YulFunctionCall", + "src": "10094:40:5" + }, + "variableNames": [ + { + "name": "x", + "nativeSrc": "10089:1:5", + "nodeType": "YulIdentifier", + "src": "10089:1:5" + } + ] + }, + { + "nativeSrc": "10161:24:5", + "nodeType": "YulAssignment", + "src": "10161:24:5", + "value": { + "arguments": [ + { + "name": "P1", + "nativeSrc": "10174:2:5", + "nodeType": "YulIdentifier", + "src": "10174:2:5" + }, + { + "name": "zzz", + "nativeSrc": "10178:3:5", + "nodeType": "YulIdentifier", + "src": "10178:3:5" + }, + { + "name": "p", + "nativeSrc": "10183:1:5", + "nodeType": "YulIdentifier", + "src": "10183:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "10167:6:5", + "nodeType": "YulIdentifier", + "src": "10167:6:5" + }, + "nativeSrc": "10167:18:5", + "nodeType": "YulFunctionCall", + "src": "10167:18:5" + }, + "variableNames": [ + { + "name": "P3", + "nativeSrc": "10161:2:5", + "nodeType": "YulIdentifier", + "src": "10161:2:5" + } + ] + }, + { + "nativeSrc": "10216:44:5", + "nodeType": "YulAssignment", + "src": "10216:44:5", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "10229:1:5", + "nodeType": "YulIdentifier", + "src": "10229:1:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "10236:1:5", + "nodeType": "YulIdentifier", + "src": "10236:1:5" + }, + { + "arguments": [ + { + "name": "P1", + "nativeSrc": "10246:2:5", + "nodeType": "YulIdentifier", + "src": "10246:2:5" + }, + { + "name": "y", + "nativeSrc": "10250:1:5", + "nodeType": "YulIdentifier", + "src": "10250:1:5" + }, + { + "name": "p", + "nativeSrc": "10253:1:5", + "nodeType": "YulIdentifier", + "src": "10253:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "10239:6:5", + "nodeType": "YulIdentifier", + "src": "10239:6:5" + }, + "nativeSrc": "10239:16:5", + "nodeType": "YulFunctionCall", + "src": "10239:16:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "10232:3:5", + "nodeType": "YulIdentifier", + "src": "10232:3:5" + }, + "nativeSrc": "10232:24:5", + "nodeType": "YulFunctionCall", + "src": "10232:24:5" + }, + { + "name": "p", + "nativeSrc": "10258:1:5", + "nodeType": "YulIdentifier", + "src": "10258:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "10222:6:5", + "nodeType": "YulIdentifier", + "src": "10222:6:5" + }, + "nativeSrc": "10222:38:5", + "nodeType": "YulFunctionCall", + "src": "10222:38:5" + }, + "variableNames": [ + { + "name": "P1", + "nativeSrc": "10216:2:5", + "nodeType": "YulIdentifier", + "src": "10216:2:5" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 1483, + "isOffset": false, + "isSlot": false, + "src": "10002:2:5", + "valueSize": 1 + }, + { + "declaration": 1483, + "isOffset": false, + "isSlot": false, + "src": "10123:2:5", + "valueSize": 1 + }, + { + "declaration": 1483, + "isOffset": false, + "isSlot": false, + "src": "9639:2:5", + "valueSize": 1 + }, + { + "declaration": 1483, + "isOffset": false, + "isSlot": false, + "src": "9701:2:5", + "valueSize": 1 + }, + { + "declaration": 1483, + "isOffset": false, + "isSlot": false, + "src": "9705:2:5", + "valueSize": 1 + }, + { + "declaration": 1483, + "isOffset": false, + "isSlot": false, + "src": "9801:2:5", + "valueSize": 1 + }, + { + "declaration": 1485, + "isOffset": false, + "isSlot": false, + "src": "10174:2:5", + "valueSize": 1 + }, + { + "declaration": 1485, + "isOffset": false, + "isSlot": false, + "src": "10216:2:5", + "valueSize": 1 + }, + { + "declaration": 1485, + "isOffset": false, + "isSlot": false, + "src": "10246:2:5", + "valueSize": 1 + }, + { + "declaration": 1485, + "isOffset": false, + "isSlot": false, + "src": "9788:2:5", + "valueSize": 1 + }, + { + "declaration": 1487, + "isOffset": false, + "isSlot": false, + "src": "9688:2:5", + "valueSize": 1 + }, + { + "declaration": 1487, + "isOffset": false, + "isSlot": false, + "src": "9753:2:5", + "valueSize": 1 + }, + { + "declaration": 1487, + "isOffset": false, + "isSlot": false, + "src": "9805:2:5", + "valueSize": 1 + }, + { + "declaration": 1487, + "isOffset": false, + "isSlot": false, + "src": "9836:2:5", + "valueSize": 1 + }, + { + "declaration": 1487, + "isOffset": false, + "isSlot": false, + "src": "9849:2:5", + "valueSize": 1 + }, + { + "declaration": 1489, + "isOffset": false, + "isSlot": false, + "src": "10050:2:5", + "valueSize": 1 + }, + { + "declaration": 1489, + "isOffset": false, + "isSlot": false, + "src": "10112:2:5", + "valueSize": 1 + }, + { + "declaration": 1489, + "isOffset": false, + "isSlot": false, + "src": "10161:2:5", + "valueSize": 1 + }, + { + "declaration": 1489, + "isOffset": false, + "isSlot": false, + "src": "9737:2:5", + "valueSize": 1 + }, + { + "declaration": 994, + "isOffset": false, + "isSlot": false, + "src": "10041:7:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "10030:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "10054:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "10058:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "10120:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "10128:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "10132:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "10183:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "10236:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "10253:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "10258:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "9658:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "9709:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "9757:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "9809:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "9857:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "9925:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "9933:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "9951:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "9955:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "9959:1:5", + "valueSize": 1 + }, + { + "declaration": 1474, + "isOffset": false, + "isSlot": false, + "src": "10089:1:5", + "valueSize": 1 + }, + { + "declaration": 1474, + "isOffset": false, + "isSlot": false, + "src": "10229:1:5", + "valueSize": 1 + }, + { + "declaration": 1474, + "isOffset": false, + "isSlot": false, + "src": "9750:1:5", + "valueSize": 1 + }, + { + "declaration": 1474, + "isOffset": false, + "isSlot": false, + "src": "9918:1:5", + "valueSize": 1 + }, + { + "declaration": 1474, + "isOffset": false, + "isSlot": false, + "src": "9944:1:5", + "valueSize": 1 + }, + { + "declaration": 1476, + "isOffset": false, + "isSlot": false, + "src": "10250:1:5", + "valueSize": 1 + }, + { + "declaration": 1476, + "isOffset": false, + "isSlot": false, + "src": "9655:1:5", + "valueSize": 1 + }, + { + "declaration": 1478, + "isOffset": false, + "isSlot": false, + "src": "10022:2:5", + "valueSize": 1 + }, + { + "declaration": 1478, + "isOffset": false, + "isSlot": false, + "src": "10026:2:5", + "valueSize": 1 + }, + { + "declaration": 1478, + "isOffset": false, + "isSlot": false, + "src": "10101:2:5", + "valueSize": 1 + }, + { + "declaration": 1478, + "isOffset": false, + "isSlot": false, + "src": "9853:2:5", + "valueSize": 1 + }, + { + "declaration": 1478, + "isOffset": false, + "isSlot": false, + "src": "9888:2:5", + "valueSize": 1 + }, + { + "declaration": 1478, + "isOffset": false, + "isSlot": false, + "src": "9928:2:5", + "valueSize": 1 + }, + { + "declaration": 1478, + "isOffset": false, + "isSlot": false, + "src": "9947:2:5", + "valueSize": 1 + }, + { + "declaration": 1480, + "isOffset": false, + "isSlot": false, + "src": "10178:3:5", + "valueSize": 1 + } + ], + "id": 1491, + "nodeType": "InlineAssembly", + "src": "9612:681:5" + } + ] + }, + { + "expression": { + "components": [ + { + "id": 1493, + "name": "P0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1483, + "src": "10320:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1494, + "name": "P1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1485, + "src": "10324:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1495, + "name": "P2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1487, + "src": "10328:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1496, + "name": "P3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1489, + "src": "10332:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1497, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10319:16:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256,uint256,uint256)" + } + }, + "functionReturnParameters": 1490, + "id": 1498, + "nodeType": "Return", + "src": "10312:23:5" + } + ] + }, + "documentation": { + "id": 1472, + "nodeType": "StructuredDocumentation", + "src": "9311:50:5", + "text": " /* @dev Sutherland2008 doubling" + }, + "id": 1500, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ecZZ_Dbl", + "nameLocation": "9423:8:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1481, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1474, + "mutability": "mutable", + "name": "x", + "nameLocation": "9440:1:5", + "nodeType": "VariableDeclaration", + "scope": 1500, + "src": "9432:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1473, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9432:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1476, + "mutability": "mutable", + "name": "y", + "nameLocation": "9451:1:5", + "nodeType": "VariableDeclaration", + "scope": 1500, + "src": "9443:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1475, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9443:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1478, + "mutability": "mutable", + "name": "zz", + "nameLocation": "9462:2:5", + "nodeType": "VariableDeclaration", + "scope": 1500, + "src": "9454:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1477, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9454:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1480, + "mutability": "mutable", + "name": "zzz", + "nameLocation": "9474:3:5", + "nodeType": "VariableDeclaration", + "scope": 1500, + "src": "9466:11:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1479, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9466:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9431:47:5" + }, + "returnParameters": { + "id": 1490, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1483, + "mutability": "mutable", + "name": "P0", + "nameLocation": "9534:2:5", + "nodeType": "VariableDeclaration", + "scope": 1500, + "src": "9526:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1482, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9526:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1485, + "mutability": "mutable", + "name": "P1", + "nameLocation": "9546:2:5", + "nodeType": "VariableDeclaration", + "scope": 1500, + "src": "9538:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1484, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9538:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1487, + "mutability": "mutable", + "name": "P2", + "nameLocation": "9558:2:5", + "nodeType": "VariableDeclaration", + "scope": 1500, + "src": "9550:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1486, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9550:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1489, + "mutability": "mutable", + "name": "P3", + "nameLocation": "9570:2:5", + "nodeType": "VariableDeclaration", + "scope": 1500, + "src": "9562:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1488, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9562:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9525:48:5" + }, + "scope": 2309, + "src": "9414:928:5", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1543, + "nodeType": "Block", + "src": "10752:880:5", + "statements": [ + { + "id": 1536, + "nodeType": "UncheckedBlock", + "src": "10762:815:5", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1526, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1524, + "name": "y1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1505, + "src": "10790:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1525, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10796:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "10790:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1534, + "nodeType": "IfStatement", + "src": "10786:67:5", + "trueBody": { + "id": 1533, + "nodeType": "Block", + "src": "10799:54:5", + "statements": [ + { + "expression": { + "components": [ + { + "id": 1527, + "name": "x2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1511, + "src": "10825:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1528, + "name": "y2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1513, + "src": "10829:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "31", + "id": 1529, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10833:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + { + "hexValue": "31", + "id": 1530, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10836:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "id": 1531, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10824:14:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_rational_1_by_1_$_t_rational_1_by_1_$", + "typeString": "tuple(uint256,uint256,int_const 1,int_const 1)" + } + }, + "functionReturnParameters": 1523, + "id": 1532, + "nodeType": "Return", + "src": "10817:21:5" + } + ] + } + }, + { + "AST": { + "nativeSrc": "10876:664:5", + "nodeType": "YulBlock", + "src": "10876:664:5", + "statements": [ + { + "nativeSrc": "10894:16:5", + "nodeType": "YulAssignment", + "src": "10894:16:5", + "value": { + "arguments": [ + { + "name": "p", + "nativeSrc": "10904:1:5", + "nodeType": "YulIdentifier", + "src": "10904:1:5" + }, + { + "name": "y1", + "nativeSrc": "10907:2:5", + "nodeType": "YulIdentifier", + "src": "10907:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "10900:3:5", + "nodeType": "YulIdentifier", + "src": "10900:3:5" + }, + "nativeSrc": "10900:10:5", + "nodeType": "YulFunctionCall", + "src": "10900:10:5" + }, + "variableNames": [ + { + "name": "y1", + "nativeSrc": "10894:2:5", + "nodeType": "YulIdentifier", + "src": "10894:2:5" + } + ] + }, + { + "nativeSrc": "10927:40:5", + "nodeType": "YulAssignment", + "src": "10927:40:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "y2", + "nativeSrc": "10947:2:5", + "nodeType": "YulIdentifier", + "src": "10947:2:5" + }, + { + "name": "zzz1", + "nativeSrc": "10951:4:5", + "nodeType": "YulIdentifier", + "src": "10951:4:5" + }, + { + "name": "p", + "nativeSrc": "10957:1:5", + "nodeType": "YulIdentifier", + "src": "10957:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "10940:6:5", + "nodeType": "YulIdentifier", + "src": "10940:6:5" + }, + "nativeSrc": "10940:19:5", + "nodeType": "YulFunctionCall", + "src": "10940:19:5" + }, + { + "name": "y1", + "nativeSrc": "10961:2:5", + "nodeType": "YulIdentifier", + "src": "10961:2:5" + }, + { + "name": "p", + "nativeSrc": "10965:1:5", + "nodeType": "YulIdentifier", + "src": "10965:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "10933:6:5", + "nodeType": "YulIdentifier", + "src": "10933:6:5" + }, + "nativeSrc": "10933:34:5", + "nodeType": "YulFunctionCall", + "src": "10933:34:5" + }, + "variableNames": [ + { + "name": "y2", + "nativeSrc": "10927:2:5", + "nodeType": "YulIdentifier", + "src": "10927:2:5" + } + ] + }, + { + "nativeSrc": "10984:47:5", + "nodeType": "YulAssignment", + "src": "10984:47:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "x2", + "nativeSrc": "11004:2:5", + "nodeType": "YulIdentifier", + "src": "11004:2:5" + }, + { + "name": "zz1", + "nativeSrc": "11008:3:5", + "nodeType": "YulIdentifier", + "src": "11008:3:5" + }, + { + "name": "p", + "nativeSrc": "11013:1:5", + "nodeType": "YulIdentifier", + "src": "11013:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "10997:6:5", + "nodeType": "YulIdentifier", + "src": "10997:6:5" + }, + "nativeSrc": "10997:18:5", + "nodeType": "YulFunctionCall", + "src": "10997:18:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "11021:1:5", + "nodeType": "YulIdentifier", + "src": "11021:1:5" + }, + { + "name": "x1", + "nativeSrc": "11024:2:5", + "nodeType": "YulIdentifier", + "src": "11024:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "11017:3:5", + "nodeType": "YulIdentifier", + "src": "11017:3:5" + }, + "nativeSrc": "11017:10:5", + "nodeType": "YulFunctionCall", + "src": "11017:10:5" + }, + { + "name": "p", + "nativeSrc": "11029:1:5", + "nodeType": "YulIdentifier", + "src": "11029:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "10990:6:5", + "nodeType": "YulIdentifier", + "src": "10990:6:5" + }, + "nativeSrc": "10990:41:5", + "nodeType": "YulFunctionCall", + "src": "10990:41:5" + }, + "variableNames": [ + { + "name": "x2", + "nativeSrc": "10984:2:5", + "nodeType": "YulIdentifier", + "src": "10984:2:5" + } + ] + }, + { + "nativeSrc": "11048:23:5", + "nodeType": "YulAssignment", + "src": "11048:23:5", + "value": { + "arguments": [ + { + "name": "x2", + "nativeSrc": "11061:2:5", + "nodeType": "YulIdentifier", + "src": "11061:2:5" + }, + { + "name": "x2", + "nativeSrc": "11065:2:5", + "nodeType": "YulIdentifier", + "src": "11065:2:5" + }, + { + "name": "p", + "nativeSrc": "11069:1:5", + "nodeType": "YulIdentifier", + "src": "11069:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "11054:6:5", + "nodeType": "YulIdentifier", + "src": "11054:6:5" + }, + "nativeSrc": "11054:17:5", + "nodeType": "YulFunctionCall", + "src": "11054:17:5" + }, + "variableNames": [ + { + "name": "P0", + "nativeSrc": "11048:2:5", + "nodeType": "YulIdentifier", + "src": "11048:2:5" + } + ] + }, + { + "nativeSrc": "11099:23:5", + "nodeType": "YulAssignment", + "src": "11099:23:5", + "value": { + "arguments": [ + { + "name": "P0", + "nativeSrc": "11112:2:5", + "nodeType": "YulIdentifier", + "src": "11112:2:5" + }, + { + "name": "x2", + "nativeSrc": "11116:2:5", + "nodeType": "YulIdentifier", + "src": "11116:2:5" + }, + { + "name": "p", + "nativeSrc": "11120:1:5", + "nodeType": "YulIdentifier", + "src": "11120:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "11105:6:5", + "nodeType": "YulIdentifier", + "src": "11105:6:5" + }, + "nativeSrc": "11105:17:5", + "nodeType": "YulFunctionCall", + "src": "11105:17:5" + }, + "variableNames": [ + { + "name": "P1", + "nativeSrc": "11099:2:5", + "nodeType": "YulIdentifier", + "src": "11099:2:5" + } + ] + }, + { + "nativeSrc": "11152:24:5", + "nodeType": "YulAssignment", + "src": "11152:24:5", + "value": { + "arguments": [ + { + "name": "zz1", + "nativeSrc": "11165:3:5", + "nodeType": "YulIdentifier", + "src": "11165:3:5" + }, + { + "name": "P0", + "nativeSrc": "11170:2:5", + "nodeType": "YulIdentifier", + "src": "11170:2:5" + }, + { + "name": "p", + "nativeSrc": "11174:1:5", + "nodeType": "YulIdentifier", + "src": "11174:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "11158:6:5", + "nodeType": "YulIdentifier", + "src": "11158:6:5" + }, + "nativeSrc": "11158:18:5", + "nodeType": "YulFunctionCall", + "src": "11158:18:5" + }, + "variableNames": [ + { + "name": "P2", + "nativeSrc": "11152:2:5", + "nodeType": "YulIdentifier", + "src": "11152:2:5" + } + ] + }, + { + "nativeSrc": "11210:25:5", + "nodeType": "YulAssignment", + "src": "11210:25:5", + "value": { + "arguments": [ + { + "name": "zzz1", + "nativeSrc": "11223:4:5", + "nodeType": "YulIdentifier", + "src": "11223:4:5" + }, + { + "name": "P1", + "nativeSrc": "11229:2:5", + "nodeType": "YulIdentifier", + "src": "11229:2:5" + }, + { + "name": "p", + "nativeSrc": "11233:1:5", + "nodeType": "YulIdentifier", + "src": "11233:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "11216:6:5", + "nodeType": "YulIdentifier", + "src": "11216:6:5" + }, + "nativeSrc": "11216:19:5", + "nodeType": "YulFunctionCall", + "src": "11216:19:5" + }, + "variableNames": [ + { + "name": "P3", + "nativeSrc": "11210:2:5", + "nodeType": "YulIdentifier", + "src": "11210:2:5" + } + ] + }, + { + "nativeSrc": "11272:24:5", + "nodeType": "YulAssignment", + "src": "11272:24:5", + "value": { + "arguments": [ + { + "name": "x1", + "nativeSrc": "11286:2:5", + "nodeType": "YulIdentifier", + "src": "11286:2:5" + }, + { + "name": "P0", + "nativeSrc": "11290:2:5", + "nodeType": "YulIdentifier", + "src": "11290:2:5" + }, + { + "name": "p", + "nativeSrc": "11294:1:5", + "nodeType": "YulIdentifier", + "src": "11294:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "11279:6:5", + "nodeType": "YulIdentifier", + "src": "11279:6:5" + }, + "nativeSrc": "11279:17:5", + "nodeType": "YulFunctionCall", + "src": "11279:17:5" + }, + "variableNames": [ + { + "name": "zz1", + "nativeSrc": "11272:3:5", + "nodeType": "YulIdentifier", + "src": "11272:3:5" + } + ] + }, + { + "nativeSrc": "11325:82:5", + "nodeType": "YulAssignment", + "src": "11325:82:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "y2", + "nativeSrc": "11352:2:5", + "nodeType": "YulIdentifier", + "src": "11352:2:5" + }, + { + "name": "y2", + "nativeSrc": "11356:2:5", + "nodeType": "YulIdentifier", + "src": "11356:2:5" + }, + { + "name": "p", + "nativeSrc": "11360:1:5", + "nodeType": "YulIdentifier", + "src": "11360:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "11345:6:5", + "nodeType": "YulIdentifier", + "src": "11345:6:5" + }, + "nativeSrc": "11345:17:5", + "nodeType": "YulFunctionCall", + "src": "11345:17:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "11368:1:5", + "nodeType": "YulIdentifier", + "src": "11368:1:5" + }, + { + "name": "P1", + "nativeSrc": "11371:2:5", + "nodeType": "YulIdentifier", + "src": "11371:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "11364:3:5", + "nodeType": "YulIdentifier", + "src": "11364:3:5" + }, + "nativeSrc": "11364:10:5", + "nodeType": "YulFunctionCall", + "src": "11364:10:5" + }, + { + "name": "p", + "nativeSrc": "11376:1:5", + "nodeType": "YulIdentifier", + "src": "11376:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "11338:6:5", + "nodeType": "YulIdentifier", + "src": "11338:6:5" + }, + "nativeSrc": "11338:40:5", + "nodeType": "YulFunctionCall", + "src": "11338:40:5" + }, + { + "arguments": [ + { + "name": "minus_2", + "nativeSrc": "11387:7:5", + "nodeType": "YulIdentifier", + "src": "11387:7:5" + }, + { + "name": "zz1", + "nativeSrc": "11396:3:5", + "nodeType": "YulIdentifier", + "src": "11396:3:5" + }, + { + "name": "p", + "nativeSrc": "11401:1:5", + "nodeType": "YulIdentifier", + "src": "11401:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "11380:6:5", + "nodeType": "YulIdentifier", + "src": "11380:6:5" + }, + "nativeSrc": "11380:23:5", + "nodeType": "YulFunctionCall", + "src": "11380:23:5" + }, + { + "name": "p", + "nativeSrc": "11405:1:5", + "nodeType": "YulIdentifier", + "src": "11405:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "11331:6:5", + "nodeType": "YulIdentifier", + "src": "11331:6:5" + }, + "nativeSrc": "11331:76:5", + "nodeType": "YulFunctionCall", + "src": "11331:76:5" + }, + "variableNames": [ + { + "name": "P0", + "nativeSrc": "11325:2:5", + "nodeType": "YulIdentifier", + "src": "11325:2:5" + } + ] + }, + { + "nativeSrc": "11438:77:5", + "nodeType": "YulAssignment", + "src": "11438:77:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "zz1", + "nativeSrc": "11465:3:5", + "nodeType": "YulIdentifier", + "src": "11465:3:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "11474:1:5", + "nodeType": "YulIdentifier", + "src": "11474:1:5" + }, + { + "name": "P0", + "nativeSrc": "11477:2:5", + "nodeType": "YulIdentifier", + "src": "11477:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "11470:3:5", + "nodeType": "YulIdentifier", + "src": "11470:3:5" + }, + "nativeSrc": "11470:10:5", + "nodeType": "YulFunctionCall", + "src": "11470:10:5" + }, + { + "name": "p", + "nativeSrc": "11482:1:5", + "nodeType": "YulIdentifier", + "src": "11482:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "11458:6:5", + "nodeType": "YulIdentifier", + "src": "11458:6:5" + }, + "nativeSrc": "11458:26:5", + "nodeType": "YulFunctionCall", + "src": "11458:26:5" + }, + { + "name": "y2", + "nativeSrc": "11486:2:5", + "nodeType": "YulIdentifier", + "src": "11486:2:5" + }, + { + "name": "p", + "nativeSrc": "11490:1:5", + "nodeType": "YulIdentifier", + "src": "11490:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "11451:6:5", + "nodeType": "YulIdentifier", + "src": "11451:6:5" + }, + "nativeSrc": "11451:41:5", + "nodeType": "YulFunctionCall", + "src": "11451:41:5" + }, + { + "arguments": [ + { + "name": "y1", + "nativeSrc": "11501:2:5", + "nodeType": "YulIdentifier", + "src": "11501:2:5" + }, + { + "name": "P1", + "nativeSrc": "11505:2:5", + "nodeType": "YulIdentifier", + "src": "11505:2:5" + }, + { + "name": "p", + "nativeSrc": "11509:1:5", + "nodeType": "YulIdentifier", + "src": "11509:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "11494:6:5", + "nodeType": "YulIdentifier", + "src": "11494:6:5" + }, + "nativeSrc": "11494:17:5", + "nodeType": "YulFunctionCall", + "src": "11494:17:5" + }, + { + "name": "p", + "nativeSrc": "11513:1:5", + "nodeType": "YulIdentifier", + "src": "11513:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "11444:6:5", + "nodeType": "YulIdentifier", + "src": "11444:6:5" + }, + "nativeSrc": "11444:71:5", + "nodeType": "YulFunctionCall", + "src": "11444:71:5" + }, + "variableNames": [ + { + "name": "P1", + "nativeSrc": "11438:2:5", + "nodeType": "YulIdentifier", + "src": "11438:2:5" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 1516, + "isOffset": false, + "isSlot": false, + "src": "11048:2:5", + "valueSize": 1 + }, + { + "declaration": 1516, + "isOffset": false, + "isSlot": false, + "src": "11112:2:5", + "valueSize": 1 + }, + { + "declaration": 1516, + "isOffset": false, + "isSlot": false, + "src": "11170:2:5", + "valueSize": 1 + }, + { + "declaration": 1516, + "isOffset": false, + "isSlot": false, + "src": "11290:2:5", + "valueSize": 1 + }, + { + "declaration": 1516, + "isOffset": false, + "isSlot": false, + "src": "11325:2:5", + "valueSize": 1 + }, + { + "declaration": 1516, + "isOffset": false, + "isSlot": false, + "src": "11477:2:5", + "valueSize": 1 + }, + { + "declaration": 1518, + "isOffset": false, + "isSlot": false, + "src": "11099:2:5", + "valueSize": 1 + }, + { + "declaration": 1518, + "isOffset": false, + "isSlot": false, + "src": "11229:2:5", + "valueSize": 1 + }, + { + "declaration": 1518, + "isOffset": false, + "isSlot": false, + "src": "11371:2:5", + "valueSize": 1 + }, + { + "declaration": 1518, + "isOffset": false, + "isSlot": false, + "src": "11438:2:5", + "valueSize": 1 + }, + { + "declaration": 1518, + "isOffset": false, + "isSlot": false, + "src": "11505:2:5", + "valueSize": 1 + }, + { + "declaration": 1520, + "isOffset": false, + "isSlot": false, + "src": "11152:2:5", + "valueSize": 1 + }, + { + "declaration": 1522, + "isOffset": false, + "isSlot": false, + "src": "11210:2:5", + "valueSize": 1 + }, + { + "declaration": 994, + "isOffset": false, + "isSlot": false, + "src": "11387:7:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "10904:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "10957:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "10965:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "11013:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "11021:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "11029:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "11069:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "11120:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "11174:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "11233:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "11294:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "11360:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "11368:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "11376:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "11401:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "11405:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "11474:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "11482:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "11490:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "11509:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "11513:1:5", + "valueSize": 1 + }, + { + "declaration": 1503, + "isOffset": false, + "isSlot": false, + "src": "11024:2:5", + "valueSize": 1 + }, + { + "declaration": 1503, + "isOffset": false, + "isSlot": false, + "src": "11286:2:5", + "valueSize": 1 + }, + { + "declaration": 1511, + "isOffset": false, + "isSlot": false, + "src": "10984:2:5", + "valueSize": 1 + }, + { + "declaration": 1511, + "isOffset": false, + "isSlot": false, + "src": "11004:2:5", + "valueSize": 1 + }, + { + "declaration": 1511, + "isOffset": false, + "isSlot": false, + "src": "11061:2:5", + "valueSize": 1 + }, + { + "declaration": 1511, + "isOffset": false, + "isSlot": false, + "src": "11065:2:5", + "valueSize": 1 + }, + { + "declaration": 1511, + "isOffset": false, + "isSlot": false, + "src": "11116:2:5", + "valueSize": 1 + }, + { + "declaration": 1505, + "isOffset": false, + "isSlot": false, + "src": "10894:2:5", + "valueSize": 1 + }, + { + "declaration": 1505, + "isOffset": false, + "isSlot": false, + "src": "10907:2:5", + "valueSize": 1 + }, + { + "declaration": 1505, + "isOffset": false, + "isSlot": false, + "src": "10961:2:5", + "valueSize": 1 + }, + { + "declaration": 1505, + "isOffset": false, + "isSlot": false, + "src": "11501:2:5", + "valueSize": 1 + }, + { + "declaration": 1513, + "isOffset": false, + "isSlot": false, + "src": "10927:2:5", + "valueSize": 1 + }, + { + "declaration": 1513, + "isOffset": false, + "isSlot": false, + "src": "10947:2:5", + "valueSize": 1 + }, + { + "declaration": 1513, + "isOffset": false, + "isSlot": false, + "src": "11352:2:5", + "valueSize": 1 + }, + { + "declaration": 1513, + "isOffset": false, + "isSlot": false, + "src": "11356:2:5", + "valueSize": 1 + }, + { + "declaration": 1513, + "isOffset": false, + "isSlot": false, + "src": "11486:2:5", + "valueSize": 1 + }, + { + "declaration": 1507, + "isOffset": false, + "isSlot": false, + "src": "11008:3:5", + "valueSize": 1 + }, + { + "declaration": 1507, + "isOffset": false, + "isSlot": false, + "src": "11165:3:5", + "valueSize": 1 + }, + { + "declaration": 1507, + "isOffset": false, + "isSlot": false, + "src": "11272:3:5", + "valueSize": 1 + }, + { + "declaration": 1507, + "isOffset": false, + "isSlot": false, + "src": "11396:3:5", + "valueSize": 1 + }, + { + "declaration": 1507, + "isOffset": false, + "isSlot": false, + "src": "11465:3:5", + "valueSize": 1 + }, + { + "declaration": 1509, + "isOffset": false, + "isSlot": false, + "src": "10951:4:5", + "valueSize": 1 + }, + { + "declaration": 1509, + "isOffset": false, + "isSlot": false, + "src": "11223:4:5", + "valueSize": 1 + } + ], + "id": 1535, + "nodeType": "InlineAssembly", + "src": "10867:673:5" + } + ] + }, + { + "expression": { + "components": [ + { + "id": 1537, + "name": "P0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1516, + "src": "11610:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1538, + "name": "P1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1518, + "src": "11614:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1539, + "name": "P2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1520, + "src": "11618:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1540, + "name": "P3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1522, + "src": "11622:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1541, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11609:16:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256,uint256,uint256)" + } + }, + "functionReturnParameters": 1523, + "id": 1542, + "nodeType": "Return", + "src": "11602:23:5" + } + ] + }, + "documentation": { + "id": 1501, + "nodeType": "StructuredDocumentation", + "src": "10348:205:5", + "text": " @dev Sutherland2008 add a ZZ point with a normalized point and greedy formulae\n warning: assume that P1(x1,y1)!=P2(x2,y2), true in multiplication loop with prime order (cofactor 1)" + }, + "id": 1544, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ecZZ_AddN", + "nameLocation": "10568:9:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1514, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1503, + "mutability": "mutable", + "name": "x1", + "nameLocation": "10586:2:5", + "nodeType": "VariableDeclaration", + "scope": 1544, + "src": "10578:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1502, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10578:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1505, + "mutability": "mutable", + "name": "y1", + "nameLocation": "10598:2:5", + "nodeType": "VariableDeclaration", + "scope": 1544, + "src": "10590:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1504, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10590:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1507, + "mutability": "mutable", + "name": "zz1", + "nameLocation": "10610:3:5", + "nodeType": "VariableDeclaration", + "scope": 1544, + "src": "10602:11:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1506, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10602:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1509, + "mutability": "mutable", + "name": "zzz1", + "nameLocation": "10623:4:5", + "nodeType": "VariableDeclaration", + "scope": 1544, + "src": "10615:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1508, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10615:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1511, + "mutability": "mutable", + "name": "x2", + "nameLocation": "10637:2:5", + "nodeType": "VariableDeclaration", + "scope": 1544, + "src": "10629:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1510, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10629:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1513, + "mutability": "mutable", + "name": "y2", + "nameLocation": "10649:2:5", + "nodeType": "VariableDeclaration", + "scope": 1544, + "src": "10641:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1512, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10641:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10577:75:5" + }, + "returnParameters": { + "id": 1523, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1516, + "mutability": "mutable", + "name": "P0", + "nameLocation": "10708:2:5", + "nodeType": "VariableDeclaration", + "scope": 1544, + "src": "10700:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1515, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10700:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1518, + "mutability": "mutable", + "name": "P1", + "nameLocation": "10720:2:5", + "nodeType": "VariableDeclaration", + "scope": 1544, + "src": "10712:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1517, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10712:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1520, + "mutability": "mutable", + "name": "P2", + "nameLocation": "10732:2:5", + "nodeType": "VariableDeclaration", + "scope": 1544, + "src": "10724:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1519, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10724:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1522, + "mutability": "mutable", + "name": "P3", + "nameLocation": "10744:2:5", + "nodeType": "VariableDeclaration", + "scope": 1544, + "src": "10736:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1521, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10736:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10699:48:5" + }, + "scope": 2309, + "src": "10559:1073:5", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1562, + "nodeType": "Block", + "src": "11803:36:5", + "statements": [ + { + "expression": { + "components": [ + { + "hexValue": "30", + "id": 1556, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11821:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "hexValue": "30", + "id": 1557, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11824:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "hexValue": "30", + "id": 1558, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11827:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "hexValue": "30", + "id": 1559, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11830:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 1560, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11820:12:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_rational_0_by_1_$_t_rational_0_by_1_$_t_rational_0_by_1_$", + "typeString": "tuple(int_const 0,int_const 0,int_const 0,int_const 0)" + } + }, + "functionReturnParameters": 1555, + "id": 1561, + "nodeType": "Return", + "src": "11813:19:5" + } + ] + }, + "documentation": { + "id": 1545, + "nodeType": "StructuredDocumentation", + "src": "11638:66:5", + "text": " @dev Return the zero curve in XYZZ coordinates." + }, + "id": 1563, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ecZZ_SetZero", + "nameLocation": "11718:12:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1546, + "nodeType": "ParameterList", + "parameters": [], + "src": "11730:2:5" + }, + "returnParameters": { + "id": 1555, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1548, + "mutability": "mutable", + "name": "x", + "nameLocation": "11764:1:5", + "nodeType": "VariableDeclaration", + "scope": 1563, + "src": "11756:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1547, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11756:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1550, + "mutability": "mutable", + "name": "y", + "nameLocation": "11775:1:5", + "nodeType": "VariableDeclaration", + "scope": 1563, + "src": "11767:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1549, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11767:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1552, + "mutability": "mutable", + "name": "zz", + "nameLocation": "11786:2:5", + "nodeType": "VariableDeclaration", + "scope": 1563, + "src": "11778:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1551, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11778:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1554, + "mutability": "mutable", + "name": "zzz", + "nameLocation": "11798:3:5", + "nodeType": "VariableDeclaration", + "scope": 1563, + "src": "11790:11:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1553, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11790:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11755:47:5" + }, + "scope": 2309, + "src": "11709:130:5", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1581, + "nodeType": "Block", + "src": "12062:31:5", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1579, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1577, + "name": "y0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1568, + "src": "12079:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1578, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12085:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "12079:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1576, + "id": 1580, + "nodeType": "Return", + "src": "12072:14:5" + } + ] + }, + "documentation": { + "id": 1564, + "nodeType": "StructuredDocumentation", + "src": "11844:66:5", + "text": " @dev Check if point is the neutral of the curve" + }, + "id": 1582, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ecZZ_IsZero", + "nameLocation": "11982:11:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1573, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1566, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1582, + "src": "11994:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1565, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11994:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1568, + "mutability": "mutable", + "name": "y0", + "nameLocation": "12011:2:5", + "nodeType": "VariableDeclaration", + "scope": 1582, + "src": "12003:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1567, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12003:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1570, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1582, + "src": "12015:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1569, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12015:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1572, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1582, + "src": "12024:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1571, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12024:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11993:39:5" + }, + "returnParameters": { + "id": 1576, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1575, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1582, + "src": "12056:4:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1574, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "12056:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "12055:6:5" + }, + "scope": 2309, + "src": "11973:120:5", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1594, + "nodeType": "Block", + "src": "12296:30:5", + "statements": [ + { + "expression": { + "components": [ + { + "hexValue": "30", + "id": 1590, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12314:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "hexValue": "30", + "id": 1591, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12317:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 1592, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "12313:6:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_rational_0_by_1_$", + "typeString": "tuple(int_const 0,int_const 0)" + } + }, + "functionReturnParameters": 1589, + "id": 1593, + "nodeType": "Return", + "src": "12306:13:5" + } + ] + }, + "documentation": { + "id": 1583, + "nodeType": "StructuredDocumentation", + "src": "12098:122:5", + "text": " @dev Return the zero curve in affine coordinates. Compatible with the double formulae (no special case)" + }, + "id": 1595, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ecAff_SetZero", + "nameLocation": "12235:13:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1584, + "nodeType": "ParameterList", + "parameters": [], + "src": "12248:2:5" + }, + "returnParameters": { + "id": 1589, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1586, + "mutability": "mutable", + "name": "x", + "nameLocation": "12282:1:5", + "nodeType": "VariableDeclaration", + "scope": 1595, + "src": "12274:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1585, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12274:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1588, + "mutability": "mutable", + "name": "y", + "nameLocation": "12293:1:5", + "nodeType": "VariableDeclaration", + "scope": 1595, + "src": "12285:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1587, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12285:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12273:22:5" + }, + "scope": 2309, + "src": "12226:100:5", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1610, + "nodeType": "Block", + "src": "12517:32:5", + "statements": [ + { + "expression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1607, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1605, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1600, + "src": "12535:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1606, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12540:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "12535:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 1608, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "12534:8:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1604, + "id": 1609, + "nodeType": "Return", + "src": "12527:15:5" + } + ] + }, + "documentation": { + "id": 1596, + "nodeType": "StructuredDocumentation", + "src": "12332:75:5", + "text": " @dev Check if the curve is the zero curve in affine rep." + }, + "id": 1611, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ecAff_IsZero", + "nameLocation": "12450:12:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1601, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1598, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1611, + "src": "12463:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1597, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12463:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1600, + "mutability": "mutable", + "name": "y", + "nameLocation": "12480:1:5", + "nodeType": "VariableDeclaration", + "scope": 1611, + "src": "12472:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1599, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12472:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12462:20:5" + }, + "returnParameters": { + "id": 1604, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1603, + "mutability": "mutable", + "name": "flag", + "nameLocation": "12511:4:5", + "nodeType": "VariableDeclaration", + "scope": 1611, + "src": "12506:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1602, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "12506:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "12505:11:5" + }, + "scope": 2309, + "src": "12441:108:5", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1684, + "nodeType": "Block", + "src": "12760:362:5", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1638, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1627, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1623, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1621, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1614, + "src": "12774:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 1622, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "12779:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12774:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1626, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1624, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1616, + "src": "12784:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 1625, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "12789:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12784:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "12774:16:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1630, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1628, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1614, + "src": "12796:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1629, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12801:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "12796:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 1631, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "12795:8:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1634, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1632, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1616, + "src": "12808:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1633, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12813:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "12808:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 1635, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "12807:8:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "12795:20:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 1637, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "12794:22:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "12774:42:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1642, + "nodeType": "IfStatement", + "src": "12770:85:5", + "trueBody": { + "id": 1641, + "nodeType": "Block", + "src": "12818:37:5", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 1639, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12839:5:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 1620, + "id": 1640, + "nodeType": "Return", + "src": "12832:12:5" + } + ] + } + }, + { + "id": 1683, + "nodeType": "UncheckedBlock", + "src": "12864:252:5", + "statements": [ + { + "assignments": [ + 1644 + ], + "declarations": [ + { + "constant": false, + "id": 1644, + "mutability": "mutable", + "name": "LHS", + "nameLocation": "12896:3:5", + "nodeType": "VariableDeclaration", + "scope": 1683, + "src": "12888:11:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1643, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12888:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1650, + "initialValue": { + "arguments": [ + { + "id": 1646, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1616, + "src": "12909:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1647, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1616, + "src": "12912:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1648, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "12915:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1645, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "12902:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12902:15:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12888:29:5" + }, + { + "assignments": [ + 1652 + ], + "declarations": [ + { + "constant": false, + "id": 1652, + "mutability": "mutable", + "name": "RHS", + "nameLocation": "12946:3:5", + "nodeType": "VariableDeclaration", + "scope": 1683, + "src": "12938:11:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1651, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12938:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1670, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 1656, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1614, + "src": "12973:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1657, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1614, + "src": "12976:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1658, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "12979:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1655, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "12966:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1659, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12966:15:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1660, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1614, + "src": "12983:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1661, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "12986:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1654, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "12959:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1662, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12959:29:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 1664, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1614, + "src": "12997:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1665, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 979, + "src": "13000:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1666, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "13003:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1663, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "12990:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1667, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12990:15:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1668, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "13007:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1653, + "name": "addmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -2, + "src": "12952:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1669, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12952:57:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12938:71:5" + }, + { + "expression": { + "id": 1677, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1671, + "name": "RHS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1652, + "src": "13033:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1673, + "name": "RHS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1652, + "src": "13046:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1674, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 982, + "src": "13051:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1675, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "13054:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1672, + "name": "addmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -2, + "src": "13039:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1676, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13039:17:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13033:23:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1678, + "nodeType": "ExpressionStatement", + "src": "13033:23:5" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1681, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1679, + "name": "LHS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1644, + "src": "13095:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 1680, + "name": "RHS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1652, + "src": "13102:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13095:10:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1620, + "id": 1682, + "nodeType": "Return", + "src": "13088:17:5" + } + ] + } + ] + }, + "documentation": { + "id": 1612, + "nodeType": "StructuredDocumentation", + "src": "12555:124:5", + "text": " @dev Check if a point in affine coordinates is on the curve (reject Neutral that is indeed on the curve)." + }, + "id": 1685, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ecAff_isOnCurve", + "nameLocation": "12693:15:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1617, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1614, + "mutability": "mutable", + "name": "x", + "nameLocation": "12717:1:5", + "nodeType": "VariableDeclaration", + "scope": 1685, + "src": "12709:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1613, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12709:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1616, + "mutability": "mutable", + "name": "y", + "nameLocation": "12728:1:5", + "nodeType": "VariableDeclaration", + "scope": 1685, + "src": "12720:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1615, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12720:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12708:22:5" + }, + "returnParameters": { + "id": 1620, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1619, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1685, + "src": "12754:4:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1618, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "12754:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "12753:6:5" + }, + "scope": 2309, + "src": "12684:438:5", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1772, + "nodeType": "Block", + "src": "13332:391:5", + "statements": [ + { + "assignments": [ + 1702 + ], + "declarations": [ + { + "constant": false, + "id": 1702, + "mutability": "mutable", + "name": "zz0", + "nameLocation": "13350:3:5", + "nodeType": "VariableDeclaration", + "scope": 1772, + "src": "13342:11:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1701, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13342:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1703, + "nodeType": "VariableDeclarationStatement", + "src": "13342:11:5" + }, + { + "assignments": [ + 1705 + ], + "declarations": [ + { + "constant": false, + "id": 1705, + "mutability": "mutable", + "name": "zzz0", + "nameLocation": "13371:4:5", + "nodeType": "VariableDeclaration", + "scope": 1772, + "src": "13363:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1704, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13363:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1706, + "nodeType": "VariableDeclarationStatement", + "src": "13363:12:5" + }, + { + "condition": { + "arguments": [ + { + "id": 1708, + "name": "x0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1688, + "src": "13403:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1709, + "name": "y0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "13407:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1707, + "name": "ecAff_IsZero", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1611, + "src": "13390:12:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256,uint256) pure returns (bool)" + } + }, + "id": 1710, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13390:20:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1715, + "nodeType": "IfStatement", + "src": "13386:41:5", + "trueBody": { + "expression": { + "components": [ + { + "id": 1711, + "name": "x1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1692, + "src": "13420:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1712, + "name": "y1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1694, + "src": "13424:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1713, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "13419:8:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "functionReturnParameters": 1700, + "id": 1714, + "nodeType": "Return", + "src": "13412:15:5" + } + }, + { + "condition": { + "arguments": [ + { + "id": 1717, + "name": "x1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1692, + "src": "13454:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1718, + "name": "y1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1694, + "src": "13458:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1716, + "name": "ecAff_IsZero", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1611, + "src": "13441:12:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256,uint256) pure returns (bool)" + } + }, + "id": 1719, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13441:20:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1724, + "nodeType": "IfStatement", + "src": "13437:41:5", + "trueBody": { + "expression": { + "components": [ + { + "id": 1720, + "name": "x0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1688, + "src": "13471:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1721, + "name": "y0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "13475:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1722, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "13470:8:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "functionReturnParameters": 1700, + "id": 1723, + "nodeType": "Return", + "src": "13463:15:5" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1733, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1727, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1725, + "name": "x0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1688, + "src": "13492:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 1726, + "name": "x1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1692, + "src": "13496:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13492:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 1728, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "13491:8:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1731, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1729, + "name": "y0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "13502:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 1730, + "name": "y1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1694, + "src": "13506:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13502:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 1732, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "13501:8:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "13491:18:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1763, + "nodeType": "Block", + "src": "13591:78:5", + "statements": [ + { + "expression": { + "id": 1761, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "components": [ + { + "id": 1748, + "name": "x0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1688, + "src": "13606:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1749, + "name": "y0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "13610:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1750, + "name": "zz0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1702, + "src": "13614:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1751, + "name": "zzz0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1705, + "src": "13619:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1752, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "13605:19:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256,uint256,uint256)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1754, + "name": "x0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1688, + "src": "13637:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1755, + "name": "y0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "13641:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "31", + "id": 1756, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13645:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + { + "hexValue": "31", + "id": 1757, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13648:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + { + "id": 1758, + "name": "x1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1692, + "src": "13651:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1759, + "name": "y1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1694, + "src": "13655:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1753, + "name": "ecZZ_AddN", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1544, + "src": "13627:9:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256,uint256,uint256,uint256) pure returns (uint256,uint256,uint256,uint256)" + } + }, + "id": 1760, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13627:31:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256,uint256,uint256)" + } + }, + "src": "13605:53:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1762, + "nodeType": "ExpressionStatement", + "src": "13605:53:5" + } + ] + }, + "id": 1764, + "nodeType": "IfStatement", + "src": "13488:181:5", + "trueBody": { + "id": 1747, + "nodeType": "Block", + "src": "13511:67:5", + "statements": [ + { + "expression": { + "id": 1745, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "components": [ + { + "id": 1734, + "name": "x0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1688, + "src": "13526:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1735, + "name": "y0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "13530:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1736, + "name": "zz0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1702, + "src": "13534:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1737, + "name": "zzz0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1705, + "src": "13539:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1738, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "13525:19:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256,uint256,uint256)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1740, + "name": "x0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1688, + "src": "13556:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1741, + "name": "y0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "13560:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "31", + "id": 1742, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13563:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + { + "hexValue": "31", + "id": 1743, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13565:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "id": 1739, + "name": "ecZZ_Dbl", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1500, + "src": "13547:8:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256,uint256,uint256)" + } + }, + "id": 1744, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13547:20:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256,uint256,uint256)" + } + }, + "src": "13525:42:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1746, + "nodeType": "ExpressionStatement", + "src": "13525:42:5" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 1766, + "name": "x0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1688, + "src": "13698:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1767, + "name": "y0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "13702:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1768, + "name": "zz0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1702, + "src": "13706:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1769, + "name": "zzz0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1705, + "src": "13711:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1765, + "name": "ecZZ_SetAff", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1471, + "src": "13686:11:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256,uint256) view returns (uint256,uint256)" + } + }, + "id": 1770, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13686:30:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "functionReturnParameters": 1700, + "id": 1771, + "nodeType": "Return", + "src": "13679:37:5" + } + ] + }, + "documentation": { + "id": 1686, + "nodeType": "StructuredDocumentation", + "src": "13128:90:5", + "text": " @dev Add two elliptic curve points in affine coordinates. Deal with P=Q" + }, + "id": 1773, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ecAff_add", + "nameLocation": "13233:9:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1695, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1688, + "mutability": "mutable", + "name": "x0", + "nameLocation": "13251:2:5", + "nodeType": "VariableDeclaration", + "scope": 1773, + "src": "13243:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1687, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13243:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1690, + "mutability": "mutable", + "name": "y0", + "nameLocation": "13263:2:5", + "nodeType": "VariableDeclaration", + "scope": 1773, + "src": "13255:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1689, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13255:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1692, + "mutability": "mutable", + "name": "x1", + "nameLocation": "13275:2:5", + "nodeType": "VariableDeclaration", + "scope": 1773, + "src": "13267:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1691, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13267:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1694, + "mutability": "mutable", + "name": "y1", + "nameLocation": "13287:2:5", + "nodeType": "VariableDeclaration", + "scope": 1773, + "src": "13279:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1693, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13279:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "13242:48:5" + }, + "returnParameters": { + "id": 1700, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1697, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1773, + "src": "13314:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1696, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13314:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1699, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1773, + "src": "13323:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1698, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13323:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "13313:18:5" + }, + "scope": 2309, + "src": "13224:499:5", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1866, + "nodeType": "Block", + "src": "14088:6394:5", + "statements": [ + { + "assignments": [ + 1788 + ], + "declarations": [ + { + "constant": false, + "id": 1788, + "mutability": "mutable", + "name": "zz", + "nameLocation": "14106:2:5", + "nodeType": "VariableDeclaration", + "scope": 1866, + "src": "14098:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1787, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14098:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1789, + "nodeType": "VariableDeclarationStatement", + "src": "14098:10:5" + }, + { + "assignments": [ + 1791 + ], + "declarations": [ + { + "constant": false, + "id": 1791, + "mutability": "mutable", + "name": "zzz", + "nameLocation": "14126:3:5", + "nodeType": "VariableDeclaration", + "scope": 1866, + "src": "14118:11:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1790, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14118:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1792, + "nodeType": "VariableDeclarationStatement", + "src": "14118:11:5" + }, + { + "assignments": [ + 1794 + ], + "declarations": [ + { + "constant": false, + "id": 1794, + "mutability": "mutable", + "name": "Y", + "nameLocation": "14147:1:5", + "nodeType": "VariableDeclaration", + "scope": 1866, + "src": "14139:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1793, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14139:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1795, + "nodeType": "VariableDeclarationStatement", + "src": "14139:9:5" + }, + { + "assignments": [ + 1797 + ], + "declarations": [ + { + "constant": false, + "id": 1797, + "mutability": "mutable", + "name": "index", + "nameLocation": "14166:5:5", + "nodeType": "VariableDeclaration", + "scope": 1866, + "src": "14158:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1796, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14158:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1799, + "initialValue": { + "hexValue": "323535", + "id": 1798, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14174:3:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_255_by_1", + "typeString": "int_const 255" + }, + "value": "255" + }, + "nodeType": "VariableDeclarationStatement", + "src": "14158:19:5" + }, + { + "assignments": [ + 1801 + ], + "declarations": [ + { + "constant": false, + "id": 1801, + "mutability": "mutable", + "name": "H0", + "nameLocation": "14195:2:5", + "nodeType": "VariableDeclaration", + "scope": 1866, + "src": "14187:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1800, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14187:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1802, + "nodeType": "VariableDeclarationStatement", + "src": "14187:10:5" + }, + { + "assignments": [ + 1804 + ], + "declarations": [ + { + "constant": false, + "id": 1804, + "mutability": "mutable", + "name": "H1", + "nameLocation": "14215:2:5", + "nodeType": "VariableDeclaration", + "scope": 1866, + "src": "14207:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1803, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14207:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1805, + "nodeType": "VariableDeclarationStatement", + "src": "14207:10:5" + }, + { + "id": 1863, + "nodeType": "UncheckedBlock", + "src": "14228:6213:5", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1812, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1808, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1806, + "name": "scalar_u", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1780, + "src": "14256:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1807, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14268:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14256:13:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1811, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1809, + "name": "scalar_v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1782, + "src": "14273:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1810, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14285:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14273:13:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "14256:30:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1815, + "nodeType": "IfStatement", + "src": "14252:44:5", + "trueBody": { + "expression": { + "hexValue": "30", + "id": 1813, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14295:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 1786, + "id": 1814, + "nodeType": "Return", + "src": "14288:8:5" + } + }, + { + "expression": { + "id": 1825, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "components": [ + { + "id": 1816, + "name": "H0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1801, + "src": "14312:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1817, + "name": "H1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1804, + "src": "14316:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1818, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "14311:8:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1820, + "name": "gx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "14332:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1821, + "name": "gy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 988, + "src": "14336:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1822, + "name": "Q0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1776, + "src": "14340:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1823, + "name": "Q1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1778, + "src": "14344:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1819, + "name": "ecAff_add", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1773, + "src": "14322:9:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256,uint256) view returns (uint256,uint256)" + } + }, + "id": 1824, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14322:25:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "src": "14311:36:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1826, + "nodeType": "ExpressionStatement", + "src": "14311:36:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1835, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1829, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1827, + "name": "H0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1801, + "src": "14366:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1828, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14370:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14366:5:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 1830, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "14365:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1833, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1831, + "name": "H1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1804, + "src": "14375:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1832, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14379:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14375:5:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 1834, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "14374:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "14365:16:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1861, + "nodeType": "IfStatement", + "src": "14362:211:5", + "trueBody": { + "id": 1860, + "nodeType": "Block", + "src": "14410:163:5", + "statements": [ + { + "expression": { + "id": 1844, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1836, + "name": "scalar_u", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1780, + "src": "14428:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1838, + "name": "scalar_u", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1780, + "src": "14444:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1841, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1839, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 991, + "src": "14454:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 1840, + "name": "scalar_v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1782, + "src": "14456:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14454:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1842, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 991, + "src": "14466:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1837, + "name": "addmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -2, + "src": "14437:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1843, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14437:31:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14428:40:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1845, + "nodeType": "ExpressionStatement", + "src": "14428:40:5" + }, + { + "expression": { + "id": 1848, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1846, + "name": "scalar_v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1782, + "src": "14486:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 1847, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14495:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14486:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1849, + "nodeType": "ExpressionStatement", + "src": "14486:10:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1856, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1852, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1850, + "name": "scalar_u", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1780, + "src": "14518:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1851, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14530:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14518:13:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1855, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1853, + "name": "scalar_v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1782, + "src": "14535:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1854, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14547:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14535:13:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "14518:30:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1859, + "nodeType": "IfStatement", + "src": "14514:44:5", + "trueBody": { + "expression": { + "hexValue": "30", + "id": 1857, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14557:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 1786, + "id": 1858, + "nodeType": "Return", + "src": "14550:8:5" + } + } + ] + } + }, + { + "AST": { + "nativeSrc": "14595:5821:5", + "nodeType": "YulBlock", + "src": "14595:5821:5", + "statements": [ + { + "body": { + "nativeSrc": "14874:2:5", + "nodeType": "YulBlock", + "src": "14874:2:5", + "statements": [] + }, + "condition": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "14706:2:5", + "nodeType": "YulIdentifier", + "src": "14706:2:5" + }, + { + "kind": "number", + "nativeSrc": "14710:1:5", + "nodeType": "YulLiteral", + "src": "14710:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "14703:2:5", + "nodeType": "YulIdentifier", + "src": "14703:2:5" + }, + "nativeSrc": "14703:9:5", + "nodeType": "YulFunctionCall", + "src": "14703:9:5" + }, + "nativeSrc": "14613:263:5", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "14713:160:5", + "nodeType": "YulBlock", + "src": "14713:160:5", + "statements": [ + { + "nativeSrc": "14735:22:5", + "nodeType": "YulAssignment", + "src": "14735:22:5", + "value": { + "arguments": [ + { + "name": "index", + "nativeSrc": "14748:5:5", + "nodeType": "YulIdentifier", + "src": "14748:5:5" + }, + { + "kind": "number", + "nativeSrc": "14755:1:5", + "nodeType": "YulLiteral", + "src": "14755:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "14744:3:5", + "nodeType": "YulIdentifier", + "src": "14744:3:5" + }, + "nativeSrc": "14744:13:5", + "nodeType": "YulFunctionCall", + "src": "14744:13:5" + }, + "variableNames": [ + { + "name": "index", + "nativeSrc": "14735:5:5", + "nodeType": "YulIdentifier", + "src": "14735:5:5" + } + ] + }, + { + "nativeSrc": "14778:77:5", + "nodeType": "YulAssignment", + "src": "14778:77:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14792:1:5", + "nodeType": "YulLiteral", + "src": "14792:1:5", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "14803:5:5", + "nodeType": "YulIdentifier", + "src": "14803:5:5" + }, + { + "name": "scalar_v", + "nativeSrc": "14810:8:5", + "nodeType": "YulIdentifier", + "src": "14810:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "14799:3:5", + "nodeType": "YulIdentifier", + "src": "14799:3:5" + }, + "nativeSrc": "14799:20:5", + "nodeType": "YulFunctionCall", + "src": "14799:20:5" + }, + { + "kind": "number", + "nativeSrc": "14821:1:5", + "nodeType": "YulLiteral", + "src": "14821:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "14795:3:5", + "nodeType": "YulIdentifier", + "src": "14795:3:5" + }, + "nativeSrc": "14795:28:5", + "nodeType": "YulFunctionCall", + "src": "14795:28:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "14788:3:5", + "nodeType": "YulIdentifier", + "src": "14788:3:5" + }, + "nativeSrc": "14788:36:5", + "nodeType": "YulFunctionCall", + "src": "14788:36:5" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "14834:5:5", + "nodeType": "YulIdentifier", + "src": "14834:5:5" + }, + { + "name": "scalar_u", + "nativeSrc": "14841:8:5", + "nodeType": "YulIdentifier", + "src": "14841:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "14830:3:5", + "nodeType": "YulIdentifier", + "src": "14830:3:5" + }, + "nativeSrc": "14830:20:5", + "nodeType": "YulFunctionCall", + "src": "14830:20:5" + }, + { + "kind": "number", + "nativeSrc": "14852:1:5", + "nodeType": "YulLiteral", + "src": "14852:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "14826:3:5", + "nodeType": "YulIdentifier", + "src": "14826:3:5" + }, + "nativeSrc": "14826:28:5", + "nodeType": "YulFunctionCall", + "src": "14826:28:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14784:3:5", + "nodeType": "YulIdentifier", + "src": "14784:3:5" + }, + "nativeSrc": "14784:71:5", + "nodeType": "YulFunctionCall", + "src": "14784:71:5" + }, + "variableNames": [ + { + "name": "T4", + "nativeSrc": "14778:2:5", + "nodeType": "YulIdentifier", + "src": "14778:2:5" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "14617:85:5", + "nodeType": "YulBlock", + "src": "14617:85:5", + "statements": [ + { + "nativeSrc": "14619:81:5", + "nodeType": "YulVariableDeclaration", + "src": "14619:81:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14637:1:5", + "nodeType": "YulLiteral", + "src": "14637:1:5", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "14648:5:5", + "nodeType": "YulIdentifier", + "src": "14648:5:5" + }, + { + "name": "scalar_v", + "nativeSrc": "14655:8:5", + "nodeType": "YulIdentifier", + "src": "14655:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "14644:3:5", + "nodeType": "YulIdentifier", + "src": "14644:3:5" + }, + "nativeSrc": "14644:20:5", + "nodeType": "YulFunctionCall", + "src": "14644:20:5" + }, + { + "kind": "number", + "nativeSrc": "14666:1:5", + "nodeType": "YulLiteral", + "src": "14666:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "14640:3:5", + "nodeType": "YulIdentifier", + "src": "14640:3:5" + }, + "nativeSrc": "14640:28:5", + "nodeType": "YulFunctionCall", + "src": "14640:28:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "14633:3:5", + "nodeType": "YulIdentifier", + "src": "14633:3:5" + }, + "nativeSrc": "14633:36:5", + "nodeType": "YulFunctionCall", + "src": "14633:36:5" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "14679:5:5", + "nodeType": "YulIdentifier", + "src": "14679:5:5" + }, + { + "name": "scalar_u", + "nativeSrc": "14686:8:5", + "nodeType": "YulIdentifier", + "src": "14686:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "14675:3:5", + "nodeType": "YulIdentifier", + "src": "14675:3:5" + }, + "nativeSrc": "14675:20:5", + "nodeType": "YulFunctionCall", + "src": "14675:20:5" + }, + { + "kind": "number", + "nativeSrc": "14697:1:5", + "nodeType": "YulLiteral", + "src": "14697:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "14671:3:5", + "nodeType": "YulIdentifier", + "src": "14671:3:5" + }, + "nativeSrc": "14671:28:5", + "nodeType": "YulFunctionCall", + "src": "14671:28:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14629:3:5", + "nodeType": "YulIdentifier", + "src": "14629:3:5" + }, + "nativeSrc": "14629:71:5", + "nodeType": "YulFunctionCall", + "src": "14629:71:5" + }, + "variables": [ + { + "name": "T4", + "nativeSrc": "14623:2:5", + "nodeType": "YulTypedName", + "src": "14623:2:5", + "type": "" + } + ] + } + ] + }, + "src": "14613:263:5" + }, + { + "nativeSrc": "14893:77:5", + "nodeType": "YulAssignment", + "src": "14893:77:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14907:1:5", + "nodeType": "YulLiteral", + "src": "14907:1:5", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "14918:5:5", + "nodeType": "YulIdentifier", + "src": "14918:5:5" + }, + { + "name": "scalar_v", + "nativeSrc": "14925:8:5", + "nodeType": "YulIdentifier", + "src": "14925:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "14914:3:5", + "nodeType": "YulIdentifier", + "src": "14914:3:5" + }, + "nativeSrc": "14914:20:5", + "nodeType": "YulFunctionCall", + "src": "14914:20:5" + }, + { + "kind": "number", + "nativeSrc": "14936:1:5", + "nodeType": "YulLiteral", + "src": "14936:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "14910:3:5", + "nodeType": "YulIdentifier", + "src": "14910:3:5" + }, + "nativeSrc": "14910:28:5", + "nodeType": "YulFunctionCall", + "src": "14910:28:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "14903:3:5", + "nodeType": "YulIdentifier", + "src": "14903:3:5" + }, + "nativeSrc": "14903:36:5", + "nodeType": "YulFunctionCall", + "src": "14903:36:5" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "14949:5:5", + "nodeType": "YulIdentifier", + "src": "14949:5:5" + }, + { + "name": "scalar_u", + "nativeSrc": "14956:8:5", + "nodeType": "YulIdentifier", + "src": "14956:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "14945:3:5", + "nodeType": "YulIdentifier", + "src": "14945:3:5" + }, + "nativeSrc": "14945:20:5", + "nodeType": "YulFunctionCall", + "src": "14945:20:5" + }, + { + "kind": "number", + "nativeSrc": "14967:1:5", + "nodeType": "YulLiteral", + "src": "14967:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "14941:3:5", + "nodeType": "YulIdentifier", + "src": "14941:3:5" + }, + "nativeSrc": "14941:28:5", + "nodeType": "YulFunctionCall", + "src": "14941:28:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14899:3:5", + "nodeType": "YulIdentifier", + "src": "14899:3:5" + }, + "nativeSrc": "14899:71:5", + "nodeType": "YulFunctionCall", + "src": "14899:71:5" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "14893:2:5", + "nodeType": "YulIdentifier", + "src": "14893:2:5" + } + ] + }, + { + "body": { + "nativeSrc": "15001:75:5", + "nodeType": "YulBlock", + "src": "15001:75:5", + "statements": [ + { + "nativeSrc": "15023:7:5", + "nodeType": "YulAssignment", + "src": "15023:7:5", + "value": { + "name": "gx", + "nativeSrc": "15028:2:5", + "nodeType": "YulIdentifier", + "src": "15028:2:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "15023:1:5", + "nodeType": "YulIdentifier", + "src": "15023:1:5" + } + ] + }, + { + "nativeSrc": "15051:7:5", + "nodeType": "YulAssignment", + "src": "15051:7:5", + "value": { + "name": "gy", + "nativeSrc": "15056:2:5", + "nodeType": "YulIdentifier", + "src": "15056:2:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "15051:1:5", + "nodeType": "YulIdentifier", + "src": "15051:1:5" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "zz", + "nativeSrc": "14994:2:5", + "nodeType": "YulIdentifier", + "src": "14994:2:5" + }, + { + "kind": "number", + "nativeSrc": "14998:1:5", + "nodeType": "YulLiteral", + "src": "14998:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "14991:2:5", + "nodeType": "YulIdentifier", + "src": "14991:2:5" + }, + "nativeSrc": "14991:9:5", + "nodeType": "YulFunctionCall", + "src": "14991:9:5" + }, + "nativeSrc": "14988:88:5", + "nodeType": "YulIf", + "src": "14988:88:5" + }, + { + "body": { + "nativeSrc": "15106:75:5", + "nodeType": "YulBlock", + "src": "15106:75:5", + "statements": [ + { + "nativeSrc": "15128:7:5", + "nodeType": "YulAssignment", + "src": "15128:7:5", + "value": { + "name": "Q0", + "nativeSrc": "15133:2:5", + "nodeType": "YulIdentifier", + "src": "15133:2:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "15128:1:5", + "nodeType": "YulIdentifier", + "src": "15128:1:5" + } + ] + }, + { + "nativeSrc": "15156:7:5", + "nodeType": "YulAssignment", + "src": "15156:7:5", + "value": { + "name": "Q1", + "nativeSrc": "15161:2:5", + "nodeType": "YulIdentifier", + "src": "15161:2:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "15156:1:5", + "nodeType": "YulIdentifier", + "src": "15156:1:5" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "zz", + "nativeSrc": "15099:2:5", + "nodeType": "YulIdentifier", + "src": "15099:2:5" + }, + { + "kind": "number", + "nativeSrc": "15103:1:5", + "nodeType": "YulLiteral", + "src": "15103:1:5", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "15096:2:5", + "nodeType": "YulIdentifier", + "src": "15096:2:5" + }, + "nativeSrc": "15096:9:5", + "nodeType": "YulFunctionCall", + "src": "15096:9:5" + }, + "nativeSrc": "15093:88:5", + "nodeType": "YulIf", + "src": "15093:88:5" + }, + { + "body": { + "nativeSrc": "15211:75:5", + "nodeType": "YulBlock", + "src": "15211:75:5", + "statements": [ + { + "nativeSrc": "15233:7:5", + "nodeType": "YulAssignment", + "src": "15233:7:5", + "value": { + "name": "H0", + "nativeSrc": "15238:2:5", + "nodeType": "YulIdentifier", + "src": "15238:2:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "15233:1:5", + "nodeType": "YulIdentifier", + "src": "15233:1:5" + } + ] + }, + { + "nativeSrc": "15261:7:5", + "nodeType": "YulAssignment", + "src": "15261:7:5", + "value": { + "name": "H1", + "nativeSrc": "15266:2:5", + "nodeType": "YulIdentifier", + "src": "15266:2:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "15261:1:5", + "nodeType": "YulIdentifier", + "src": "15261:1:5" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "zz", + "nativeSrc": "15204:2:5", + "nodeType": "YulIdentifier", + "src": "15204:2:5" + }, + { + "kind": "number", + "nativeSrc": "15208:1:5", + "nodeType": "YulLiteral", + "src": "15208:1:5", + "type": "", + "value": "3" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "15201:2:5", + "nodeType": "YulIdentifier", + "src": "15201:2:5" + }, + "nativeSrc": "15201:9:5", + "nodeType": "YulFunctionCall", + "src": "15201:9:5" + }, + "nativeSrc": "15198:88:5", + "nodeType": "YulIf", + "src": "15198:88:5" + }, + { + "nativeSrc": "15304:22:5", + "nodeType": "YulAssignment", + "src": "15304:22:5", + "value": { + "arguments": [ + { + "name": "index", + "nativeSrc": "15317:5:5", + "nodeType": "YulIdentifier", + "src": "15317:5:5" + }, + { + "kind": "number", + "nativeSrc": "15324:1:5", + "nodeType": "YulLiteral", + "src": "15324:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "15313:3:5", + "nodeType": "YulIdentifier", + "src": "15313:3:5" + }, + "nativeSrc": "15313:13:5", + "nodeType": "YulFunctionCall", + "src": "15313:13:5" + }, + "variableNames": [ + { + "name": "index", + "nativeSrc": "15304:5:5", + "nodeType": "YulIdentifier", + "src": "15304:5:5" + } + ] + }, + { + "nativeSrc": "15343:7:5", + "nodeType": "YulAssignment", + "src": "15343:7:5", + "value": { + "kind": "number", + "nativeSrc": "15349:1:5", + "nodeType": "YulLiteral", + "src": "15349:1:5", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "15343:2:5", + "nodeType": "YulIdentifier", + "src": "15343:2:5" + } + ] + }, + { + "nativeSrc": "15367:8:5", + "nodeType": "YulAssignment", + "src": "15367:8:5", + "value": { + "kind": "number", + "nativeSrc": "15374:1:5", + "nodeType": "YulLiteral", + "src": "15374:1:5", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "zzz", + "nativeSrc": "15367:3:5", + "nodeType": "YulIdentifier", + "src": "15367:3:5" + } + ] + }, + { + "body": { + "nativeSrc": "15446:3972:5", + "nodeType": "YulBlock", + "src": "15446:3972:5", + "statements": [ + { + "nativeSrc": "15508:25:5", + "nodeType": "YulVariableDeclaration", + "src": "15508:25:5", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "15525:1:5", + "nodeType": "YulLiteral", + "src": "15525:1:5", + "type": "", + "value": "2" + }, + { + "name": "Y", + "nativeSrc": "15528:1:5", + "nodeType": "YulIdentifier", + "src": "15528:1:5" + }, + { + "name": "p", + "nativeSrc": "15531:1:5", + "nodeType": "YulIdentifier", + "src": "15531:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "15518:6:5", + "nodeType": "YulIdentifier", + "src": "15518:6:5" + }, + "nativeSrc": "15518:15:5", + "nodeType": "YulFunctionCall", + "src": "15518:15:5" + }, + "variables": [ + { + "name": "T1", + "nativeSrc": "15512:2:5", + "nodeType": "YulTypedName", + "src": "15512:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "15573:27:5", + "nodeType": "YulVariableDeclaration", + "src": "15573:27:5", + "value": { + "arguments": [ + { + "name": "T1", + "nativeSrc": "15590:2:5", + "nodeType": "YulIdentifier", + "src": "15590:2:5" + }, + { + "name": "T1", + "nativeSrc": "15594:2:5", + "nodeType": "YulIdentifier", + "src": "15594:2:5" + }, + { + "name": "p", + "nativeSrc": "15598:1:5", + "nodeType": "YulIdentifier", + "src": "15598:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "15583:6:5", + "nodeType": "YulIdentifier", + "src": "15583:6:5" + }, + "nativeSrc": "15583:17:5", + "nodeType": "YulFunctionCall", + "src": "15583:17:5" + }, + "variables": [ + { + "name": "T2", + "nativeSrc": "15577:2:5", + "nodeType": "YulTypedName", + "src": "15577:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "15630:26:5", + "nodeType": "YulVariableDeclaration", + "src": "15630:26:5", + "value": { + "arguments": [ + { + "name": "X", + "nativeSrc": "15647:1:5", + "nodeType": "YulIdentifier", + "src": "15647:1:5" + }, + { + "name": "T2", + "nativeSrc": "15650:2:5", + "nodeType": "YulIdentifier", + "src": "15650:2:5" + }, + { + "name": "p", + "nativeSrc": "15654:1:5", + "nodeType": "YulIdentifier", + "src": "15654:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "15640:6:5", + "nodeType": "YulIdentifier", + "src": "15640:6:5" + }, + "nativeSrc": "15640:16:5", + "nodeType": "YulFunctionCall", + "src": "15640:16:5" + }, + "variables": [ + { + "name": "T3", + "nativeSrc": "15634:2:5", + "nodeType": "YulTypedName", + "src": "15634:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "15689:23:5", + "nodeType": "YulAssignment", + "src": "15689:23:5", + "value": { + "arguments": [ + { + "name": "T1", + "nativeSrc": "15702:2:5", + "nodeType": "YulIdentifier", + "src": "15702:2:5" + }, + { + "name": "T2", + "nativeSrc": "15706:2:5", + "nodeType": "YulIdentifier", + "src": "15706:2:5" + }, + { + "name": "p", + "nativeSrc": "15710:1:5", + "nodeType": "YulIdentifier", + "src": "15710:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "15695:6:5", + "nodeType": "YulIdentifier", + "src": "15695:6:5" + }, + "nativeSrc": "15695:17:5", + "nodeType": "YulFunctionCall", + "src": "15695:17:5" + }, + "variableNames": [ + { + "name": "T1", + "nativeSrc": "15689:2:5", + "nodeType": "YulIdentifier", + "src": "15689:2:5" + } + ] + }, + { + "nativeSrc": "15741:77:5", + "nodeType": "YulVariableDeclaration", + "src": "15741:77:5", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "15758:1:5", + "nodeType": "YulLiteral", + "src": "15758:1:5", + "type": "", + "value": "3" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "X", + "nativeSrc": "15775:1:5", + "nodeType": "YulIdentifier", + "src": "15775:1:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "15782:1:5", + "nodeType": "YulIdentifier", + "src": "15782:1:5" + }, + { + "name": "zz", + "nativeSrc": "15785:2:5", + "nodeType": "YulIdentifier", + "src": "15785:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "15778:3:5", + "nodeType": "YulIdentifier", + "src": "15778:3:5" + }, + "nativeSrc": "15778:10:5", + "nodeType": "YulFunctionCall", + "src": "15778:10:5" + }, + { + "name": "p", + "nativeSrc": "15790:1:5", + "nodeType": "YulIdentifier", + "src": "15790:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "15768:6:5", + "nodeType": "YulIdentifier", + "src": "15768:6:5" + }, + "nativeSrc": "15768:24:5", + "nodeType": "YulFunctionCall", + "src": "15768:24:5" + }, + { + "arguments": [ + { + "name": "X", + "nativeSrc": "15801:1:5", + "nodeType": "YulIdentifier", + "src": "15801:1:5" + }, + { + "name": "zz", + "nativeSrc": "15804:2:5", + "nodeType": "YulIdentifier", + "src": "15804:2:5" + }, + { + "name": "p", + "nativeSrc": "15808:1:5", + "nodeType": "YulIdentifier", + "src": "15808:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "15794:6:5", + "nodeType": "YulIdentifier", + "src": "15794:6:5" + }, + "nativeSrc": "15794:16:5", + "nodeType": "YulFunctionCall", + "src": "15794:16:5" + }, + { + "name": "p", + "nativeSrc": "15812:1:5", + "nodeType": "YulIdentifier", + "src": "15812:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "15761:6:5", + "nodeType": "YulIdentifier", + "src": "15761:6:5" + }, + "nativeSrc": "15761:53:5", + "nodeType": "YulFunctionCall", + "src": "15761:53:5" + }, + { + "name": "p", + "nativeSrc": "15816:1:5", + "nodeType": "YulIdentifier", + "src": "15816:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "15751:6:5", + "nodeType": "YulIdentifier", + "src": "15751:6:5" + }, + "nativeSrc": "15751:67:5", + "nodeType": "YulFunctionCall", + "src": "15751:67:5" + }, + "variables": [ + { + "name": "T4", + "nativeSrc": "15745:2:5", + "nodeType": "YulTypedName", + "src": "15745:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "15863:25:5", + "nodeType": "YulAssignment", + "src": "15863:25:5", + "value": { + "arguments": [ + { + "name": "T1", + "nativeSrc": "15877:2:5", + "nodeType": "YulIdentifier", + "src": "15877:2:5" + }, + { + "name": "zzz", + "nativeSrc": "15881:3:5", + "nodeType": "YulIdentifier", + "src": "15881:3:5" + }, + { + "name": "p", + "nativeSrc": "15886:1:5", + "nodeType": "YulIdentifier", + "src": "15886:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "15870:6:5", + "nodeType": "YulIdentifier", + "src": "15870:6:5" + }, + "nativeSrc": "15870:18:5", + "nodeType": "YulFunctionCall", + "src": "15870:18:5" + }, + "variableNames": [ + { + "name": "zzz", + "nativeSrc": "15863:3:5", + "nodeType": "YulIdentifier", + "src": "15863:3:5" + } + ] + }, + { + "nativeSrc": "15923:23:5", + "nodeType": "YulAssignment", + "src": "15923:23:5", + "value": { + "arguments": [ + { + "name": "T2", + "nativeSrc": "15936:2:5", + "nodeType": "YulIdentifier", + "src": "15936:2:5" + }, + { + "name": "zz", + "nativeSrc": "15940:2:5", + "nodeType": "YulIdentifier", + "src": "15940:2:5" + }, + { + "name": "p", + "nativeSrc": "15944:1:5", + "nodeType": "YulIdentifier", + "src": "15944:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "15929:6:5", + "nodeType": "YulIdentifier", + "src": "15929:6:5" + }, + "nativeSrc": "15929:17:5", + "nodeType": "YulFunctionCall", + "src": "15929:17:5" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "15923:2:5", + "nodeType": "YulIdentifier", + "src": "15923:2:5" + } + ] + }, + { + "nativeSrc": "15988:57:5", + "nodeType": "YulAssignment", + "src": "15988:57:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "T4", + "nativeSrc": "16007:2:5", + "nodeType": "YulIdentifier", + "src": "16007:2:5" + }, + { + "name": "T4", + "nativeSrc": "16011:2:5", + "nodeType": "YulIdentifier", + "src": "16011:2:5" + }, + { + "name": "p", + "nativeSrc": "16015:1:5", + "nodeType": "YulIdentifier", + "src": "16015:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "16000:6:5", + "nodeType": "YulIdentifier", + "src": "16000:6:5" + }, + "nativeSrc": "16000:17:5", + "nodeType": "YulFunctionCall", + "src": "16000:17:5" + }, + { + "arguments": [ + { + "name": "minus_2", + "nativeSrc": "16026:7:5", + "nodeType": "YulIdentifier", + "src": "16026:7:5" + }, + { + "name": "T3", + "nativeSrc": "16035:2:5", + "nodeType": "YulIdentifier", + "src": "16035:2:5" + }, + { + "name": "p", + "nativeSrc": "16039:1:5", + "nodeType": "YulIdentifier", + "src": "16039:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "16019:6:5", + "nodeType": "YulIdentifier", + "src": "16019:6:5" + }, + "nativeSrc": "16019:22:5", + "nodeType": "YulFunctionCall", + "src": "16019:22:5" + }, + { + "name": "p", + "nativeSrc": "16043:1:5", + "nodeType": "YulIdentifier", + "src": "16043:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "15993:6:5", + "nodeType": "YulIdentifier", + "src": "15993:6:5" + }, + "nativeSrc": "15993:52:5", + "nodeType": "YulFunctionCall", + "src": "15993:52:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "15988:1:5", + "nodeType": "YulIdentifier", + "src": "15988:1:5" + } + ] + }, + { + "nativeSrc": "16078:45:5", + "nodeType": "YulAssignment", + "src": "16078:45:5", + "value": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "16091:2:5", + "nodeType": "YulIdentifier", + "src": "16091:2:5" + }, + { + "arguments": [ + { + "name": "X", + "nativeSrc": "16102:1:5", + "nodeType": "YulIdentifier", + "src": "16102:1:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "16109:1:5", + "nodeType": "YulIdentifier", + "src": "16109:1:5" + }, + { + "name": "T3", + "nativeSrc": "16112:2:5", + "nodeType": "YulIdentifier", + "src": "16112:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "16105:3:5", + "nodeType": "YulIdentifier", + "src": "16105:3:5" + }, + "nativeSrc": "16105:10:5", + "nodeType": "YulFunctionCall", + "src": "16105:10:5" + }, + { + "name": "p", + "nativeSrc": "16117:1:5", + "nodeType": "YulIdentifier", + "src": "16117:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "16095:6:5", + "nodeType": "YulIdentifier", + "src": "16095:6:5" + }, + "nativeSrc": "16095:24:5", + "nodeType": "YulFunctionCall", + "src": "16095:24:5" + }, + { + "name": "p", + "nativeSrc": "16121:1:5", + "nodeType": "YulIdentifier", + "src": "16121:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "16084:6:5", + "nodeType": "YulIdentifier", + "src": "16084:6:5" + }, + "nativeSrc": "16084:39:5", + "nodeType": "YulFunctionCall", + "src": "16084:39:5" + }, + "variableNames": [ + { + "name": "T2", + "nativeSrc": "16078:2:5", + "nodeType": "YulIdentifier", + "src": "16078:2:5" + } + ] + }, + { + "nativeSrc": "16163:36:5", + "nodeType": "YulAssignment", + "src": "16163:36:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "T1", + "nativeSrc": "16182:2:5", + "nodeType": "YulIdentifier", + "src": "16182:2:5" + }, + { + "name": "Y", + "nativeSrc": "16186:1:5", + "nodeType": "YulIdentifier", + "src": "16186:1:5" + }, + { + "name": "p", + "nativeSrc": "16189:1:5", + "nodeType": "YulIdentifier", + "src": "16189:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "16175:6:5", + "nodeType": "YulIdentifier", + "src": "16175:6:5" + }, + "nativeSrc": "16175:16:5", + "nodeType": "YulFunctionCall", + "src": "16175:16:5" + }, + { + "name": "T2", + "nativeSrc": "16193:2:5", + "nodeType": "YulIdentifier", + "src": "16193:2:5" + }, + { + "name": "p", + "nativeSrc": "16197:1:5", + "nodeType": "YulIdentifier", + "src": "16197:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "16168:6:5", + "nodeType": "YulIdentifier", + "src": "16168:6:5" + }, + "nativeSrc": "16168:31:5", + "nodeType": "YulFunctionCall", + "src": "16168:31:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "16163:1:5", + "nodeType": "YulIdentifier", + "src": "16163:1:5" + } + ] + }, + { + "nativeSrc": "16285:3115:5", + "nodeType": "YulBlock", + "src": "16285:3115:5", + "statements": [ + { + "nativeSrc": "16352:77:5", + "nodeType": "YulAssignment", + "src": "16352:77:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "16366:1:5", + "nodeType": "YulLiteral", + "src": "16366:1:5", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "16377:5:5", + "nodeType": "YulIdentifier", + "src": "16377:5:5" + }, + { + "name": "scalar_v", + "nativeSrc": "16384:8:5", + "nodeType": "YulIdentifier", + "src": "16384:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "16373:3:5", + "nodeType": "YulIdentifier", + "src": "16373:3:5" + }, + "nativeSrc": "16373:20:5", + "nodeType": "YulFunctionCall", + "src": "16373:20:5" + }, + { + "kind": "number", + "nativeSrc": "16395:1:5", + "nodeType": "YulLiteral", + "src": "16395:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "16369:3:5", + "nodeType": "YulIdentifier", + "src": "16369:3:5" + }, + "nativeSrc": "16369:28:5", + "nodeType": "YulFunctionCall", + "src": "16369:28:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "16362:3:5", + "nodeType": "YulIdentifier", + "src": "16362:3:5" + }, + "nativeSrc": "16362:36:5", + "nodeType": "YulFunctionCall", + "src": "16362:36:5" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "16408:5:5", + "nodeType": "YulIdentifier", + "src": "16408:5:5" + }, + { + "name": "scalar_u", + "nativeSrc": "16415:8:5", + "nodeType": "YulIdentifier", + "src": "16415:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "16404:3:5", + "nodeType": "YulIdentifier", + "src": "16404:3:5" + }, + "nativeSrc": "16404:20:5", + "nodeType": "YulFunctionCall", + "src": "16404:20:5" + }, + { + "kind": "number", + "nativeSrc": "16426:1:5", + "nodeType": "YulLiteral", + "src": "16426:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "16400:3:5", + "nodeType": "YulIdentifier", + "src": "16400:3:5" + }, + "nativeSrc": "16400:28:5", + "nodeType": "YulFunctionCall", + "src": "16400:28:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16358:3:5", + "nodeType": "YulIdentifier", + "src": "16358:3:5" + }, + "nativeSrc": "16358:71:5", + "nodeType": "YulFunctionCall", + "src": "16358:71:5" + }, + "variableNames": [ + { + "name": "T4", + "nativeSrc": "16352:2:5", + "nodeType": "YulIdentifier", + "src": "16352:2:5" + } + ] + }, + { + "body": { + "nativeSrc": "16469:134:5", + "nodeType": "YulBlock", + "src": "16469:134:5", + "statements": [ + { + "nativeSrc": "16499:14:5", + "nodeType": "YulAssignment", + "src": "16499:14:5", + "value": { + "arguments": [ + { + "name": "p", + "nativeSrc": "16508:1:5", + "nodeType": "YulIdentifier", + "src": "16508:1:5" + }, + { + "name": "Y", + "nativeSrc": "16511:1:5", + "nodeType": "YulIdentifier", + "src": "16511:1:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "16504:3:5", + "nodeType": "YulIdentifier", + "src": "16504:3:5" + }, + "nativeSrc": "16504:9:5", + "nodeType": "YulFunctionCall", + "src": "16504:9:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "16499:1:5", + "nodeType": "YulIdentifier", + "src": "16499:1:5" + } + ] + }, + { + "nativeSrc": "16569:8:5", + "nodeType": "YulContinue", + "src": "16569:8:5" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "16465:2:5", + "nodeType": "YulIdentifier", + "src": "16465:2:5" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "16458:6:5", + "nodeType": "YulIdentifier", + "src": "16458:6:5" + }, + "nativeSrc": "16458:10:5", + "nodeType": "YulFunctionCall", + "src": "16458:10:5" + }, + "nativeSrc": "16455:148:5", + "nodeType": "YulIf", + "src": "16455:148:5" + }, + { + "body": { + "nativeSrc": "16654:101:5", + "nodeType": "YulBlock", + "src": "16654:101:5", + "statements": [ + { + "nativeSrc": "16684:8:5", + "nodeType": "YulAssignment", + "src": "16684:8:5", + "value": { + "name": "gx", + "nativeSrc": "16690:2:5", + "nodeType": "YulIdentifier", + "src": "16690:2:5" + }, + "variableNames": [ + { + "name": "T1", + "nativeSrc": "16684:2:5", + "nodeType": "YulIdentifier", + "src": "16684:2:5" + } + ] + }, + { + "nativeSrc": "16721:8:5", + "nodeType": "YulAssignment", + "src": "16721:8:5", + "value": { + "name": "gy", + "nativeSrc": "16727:2:5", + "nodeType": "YulIdentifier", + "src": "16727:2:5" + }, + "variableNames": [ + { + "name": "T2", + "nativeSrc": "16721:2:5", + "nodeType": "YulIdentifier", + "src": "16721:2:5" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "16647:2:5", + "nodeType": "YulIdentifier", + "src": "16647:2:5" + }, + { + "kind": "number", + "nativeSrc": "16651:1:5", + "nodeType": "YulLiteral", + "src": "16651:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "16644:2:5", + "nodeType": "YulIdentifier", + "src": "16644:2:5" + }, + "nativeSrc": "16644:9:5", + "nodeType": "YulFunctionCall", + "src": "16644:9:5" + }, + "nativeSrc": "16641:114:5", + "nodeType": "YulIf", + "src": "16641:114:5" + }, + { + "body": { + "nativeSrc": "16793:101:5", + "nodeType": "YulBlock", + "src": "16793:101:5", + "statements": [ + { + "nativeSrc": "16823:8:5", + "nodeType": "YulAssignment", + "src": "16823:8:5", + "value": { + "name": "Q0", + "nativeSrc": "16829:2:5", + "nodeType": "YulIdentifier", + "src": "16829:2:5" + }, + "variableNames": [ + { + "name": "T1", + "nativeSrc": "16823:2:5", + "nodeType": "YulIdentifier", + "src": "16823:2:5" + } + ] + }, + { + "nativeSrc": "16860:8:5", + "nodeType": "YulAssignment", + "src": "16860:8:5", + "value": { + "name": "Q1", + "nativeSrc": "16866:2:5", + "nodeType": "YulIdentifier", + "src": "16866:2:5" + }, + "variableNames": [ + { + "name": "T2", + "nativeSrc": "16860:2:5", + "nodeType": "YulIdentifier", + "src": "16860:2:5" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "16786:2:5", + "nodeType": "YulIdentifier", + "src": "16786:2:5" + }, + { + "kind": "number", + "nativeSrc": "16790:1:5", + "nodeType": "YulLiteral", + "src": "16790:1:5", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "16783:2:5", + "nodeType": "YulIdentifier", + "src": "16783:2:5" + }, + "nativeSrc": "16783:9:5", + "nodeType": "YulFunctionCall", + "src": "16783:9:5" + }, + "nativeSrc": "16780:114:5", + "nodeType": "YulIf", + "src": "16780:114:5" + }, + { + "body": { + "nativeSrc": "16932:101:5", + "nodeType": "YulBlock", + "src": "16932:101:5", + "statements": [ + { + "nativeSrc": "16962:8:5", + "nodeType": "YulAssignment", + "src": "16962:8:5", + "value": { + "name": "H0", + "nativeSrc": "16968:2:5", + "nodeType": "YulIdentifier", + "src": "16968:2:5" + }, + "variableNames": [ + { + "name": "T1", + "nativeSrc": "16962:2:5", + "nodeType": "YulIdentifier", + "src": "16962:2:5" + } + ] + }, + { + "nativeSrc": "16999:8:5", + "nodeType": "YulAssignment", + "src": "16999:8:5", + "value": { + "name": "H1", + "nativeSrc": "17005:2:5", + "nodeType": "YulIdentifier", + "src": "17005:2:5" + }, + "variableNames": [ + { + "name": "T2", + "nativeSrc": "16999:2:5", + "nodeType": "YulIdentifier", + "src": "16999:2:5" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "16925:2:5", + "nodeType": "YulIdentifier", + "src": "16925:2:5" + }, + { + "kind": "number", + "nativeSrc": "16929:1:5", + "nodeType": "YulLiteral", + "src": "16929:1:5", + "type": "", + "value": "3" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "16922:2:5", + "nodeType": "YulIdentifier", + "src": "16922:2:5" + }, + "nativeSrc": "16922:9:5", + "nodeType": "YulFunctionCall", + "src": "16922:9:5" + }, + "nativeSrc": "16919:114:5", + "nodeType": "YulIf", + "src": "16919:114:5" + }, + { + "body": { + "nativeSrc": "17072:209:5", + "nodeType": "YulBlock", + "src": "17072:209:5", + "statements": [ + { + "nativeSrc": "17102:7:5", + "nodeType": "YulAssignment", + "src": "17102:7:5", + "value": { + "name": "T1", + "nativeSrc": "17107:2:5", + "nodeType": "YulIdentifier", + "src": "17107:2:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "17102:1:5", + "nodeType": "YulIdentifier", + "src": "17102:1:5" + } + ] + }, + { + "nativeSrc": "17138:7:5", + "nodeType": "YulAssignment", + "src": "17138:7:5", + "value": { + "name": "T2", + "nativeSrc": "17143:2:5", + "nodeType": "YulIdentifier", + "src": "17143:2:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "17138:1:5", + "nodeType": "YulIdentifier", + "src": "17138:1:5" + } + ] + }, + { + "nativeSrc": "17174:7:5", + "nodeType": "YulAssignment", + "src": "17174:7:5", + "value": { + "kind": "number", + "nativeSrc": "17180:1:5", + "nodeType": "YulLiteral", + "src": "17180:1:5", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "17174:2:5", + "nodeType": "YulIdentifier", + "src": "17174:2:5" + } + ] + }, + { + "nativeSrc": "17210:8:5", + "nodeType": "YulAssignment", + "src": "17210:8:5", + "value": { + "kind": "number", + "nativeSrc": "17217:1:5", + "nodeType": "YulLiteral", + "src": "17217:1:5", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "zzz", + "nativeSrc": "17210:3:5", + "nodeType": "YulIdentifier", + "src": "17210:3:5" + } + ] + }, + { + "nativeSrc": "17247:8:5", + "nodeType": "YulContinue", + "src": "17247:8:5" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "zz", + "nativeSrc": "17068:2:5", + "nodeType": "YulIdentifier", + "src": "17068:2:5" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "17061:6:5", + "nodeType": "YulIdentifier", + "src": "17061:6:5" + }, + "nativeSrc": "17061:10:5", + "nodeType": "YulFunctionCall", + "src": "17061:10:5" + }, + "nativeSrc": "17058:223:5", + "nodeType": "YulIf", + "src": "17058:223:5" + }, + { + "nativeSrc": "17424:42:5", + "nodeType": "YulVariableDeclaration", + "src": "17424:42:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "T2", + "nativeSrc": "17448:2:5", + "nodeType": "YulIdentifier", + "src": "17448:2:5" + }, + { + "name": "zzz", + "nativeSrc": "17452:3:5", + "nodeType": "YulIdentifier", + "src": "17452:3:5" + }, + { + "name": "p", + "nativeSrc": "17457:1:5", + "nodeType": "YulIdentifier", + "src": "17457:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "17441:6:5", + "nodeType": "YulIdentifier", + "src": "17441:6:5" + }, + "nativeSrc": "17441:18:5", + "nodeType": "YulFunctionCall", + "src": "17441:18:5" + }, + { + "name": "Y", + "nativeSrc": "17461:1:5", + "nodeType": "YulIdentifier", + "src": "17461:1:5" + }, + { + "name": "p", + "nativeSrc": "17464:1:5", + "nodeType": "YulIdentifier", + "src": "17464:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "17434:6:5", + "nodeType": "YulIdentifier", + "src": "17434:6:5" + }, + "nativeSrc": "17434:32:5", + "nodeType": "YulFunctionCall", + "src": "17434:32:5" + }, + "variables": [ + { + "name": "y2", + "nativeSrc": "17428:2:5", + "nodeType": "YulTypedName", + "src": "17428:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "17495:45:5", + "nodeType": "YulAssignment", + "src": "17495:45:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "T1", + "nativeSrc": "17515:2:5", + "nodeType": "YulIdentifier", + "src": "17515:2:5" + }, + { + "name": "zz", + "nativeSrc": "17519:2:5", + "nodeType": "YulIdentifier", + "src": "17519:2:5" + }, + { + "name": "p", + "nativeSrc": "17523:1:5", + "nodeType": "YulIdentifier", + "src": "17523:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "17508:6:5", + "nodeType": "YulIdentifier", + "src": "17508:6:5" + }, + "nativeSrc": "17508:17:5", + "nodeType": "YulFunctionCall", + "src": "17508:17:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "17531:1:5", + "nodeType": "YulIdentifier", + "src": "17531:1:5" + }, + { + "name": "X", + "nativeSrc": "17534:1:5", + "nodeType": "YulIdentifier", + "src": "17534:1:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "17527:3:5", + "nodeType": "YulIdentifier", + "src": "17527:3:5" + }, + "nativeSrc": "17527:9:5", + "nodeType": "YulFunctionCall", + "src": "17527:9:5" + }, + { + "name": "p", + "nativeSrc": "17538:1:5", + "nodeType": "YulIdentifier", + "src": "17538:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "17501:6:5", + "nodeType": "YulIdentifier", + "src": "17501:6:5" + }, + "nativeSrc": "17501:39:5", + "nodeType": "YulFunctionCall", + "src": "17501:39:5" + }, + "variableNames": [ + { + "name": "T2", + "nativeSrc": "17495:2:5", + "nodeType": "YulIdentifier", + "src": "17495:2:5" + } + ] + }, + { + "body": { + "nativeSrc": "17769:1029:5", + "nodeType": "YulBlock", + "src": "17769:1029:5", + "statements": [ + { + "body": { + "nativeSrc": "17813:959:5", + "nodeType": "YulBlock", + "src": "17813:959:5", + "statements": [ + { + "nativeSrc": "17847:27:5", + "nodeType": "YulAssignment", + "src": "17847:27:5", + "value": { + "arguments": [ + { + "name": "minus_2", + "nativeSrc": "17860:7:5", + "nodeType": "YulIdentifier", + "src": "17860:7:5" + }, + { + "name": "Y", + "nativeSrc": "17869:1:5", + "nodeType": "YulIdentifier", + "src": "17869:1:5" + }, + { + "name": "p", + "nativeSrc": "17872:1:5", + "nodeType": "YulIdentifier", + "src": "17872:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "17853:6:5", + "nodeType": "YulIdentifier", + "src": "17853:6:5" + }, + "nativeSrc": "17853:21:5", + "nodeType": "YulFunctionCall", + "src": "17853:21:5" + }, + "variableNames": [ + { + "name": "T1", + "nativeSrc": "17847:2:5", + "nodeType": "YulIdentifier", + "src": "17847:2:5" + } + ] + }, + { + "nativeSrc": "17926:23:5", + "nodeType": "YulAssignment", + "src": "17926:23:5", + "value": { + "arguments": [ + { + "name": "T1", + "nativeSrc": "17939:2:5", + "nodeType": "YulIdentifier", + "src": "17939:2:5" + }, + { + "name": "T1", + "nativeSrc": "17943:2:5", + "nodeType": "YulIdentifier", + "src": "17943:2:5" + }, + { + "name": "p", + "nativeSrc": "17947:1:5", + "nodeType": "YulIdentifier", + "src": "17947:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "17932:6:5", + "nodeType": "YulIdentifier", + "src": "17932:6:5" + }, + "nativeSrc": "17932:17:5", + "nodeType": "YulFunctionCall", + "src": "17932:17:5" + }, + "variableNames": [ + { + "name": "T2", + "nativeSrc": "17926:2:5", + "nodeType": "YulIdentifier", + "src": "17926:2:5" + } + ] + }, + { + "nativeSrc": "17991:22:5", + "nodeType": "YulAssignment", + "src": "17991:22:5", + "value": { + "arguments": [ + { + "name": "X", + "nativeSrc": "18004:1:5", + "nodeType": "YulIdentifier", + "src": "18004:1:5" + }, + { + "name": "T2", + "nativeSrc": "18007:2:5", + "nodeType": "YulIdentifier", + "src": "18007:2:5" + }, + { + "name": "p", + "nativeSrc": "18011:1:5", + "nodeType": "YulIdentifier", + "src": "18011:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "17997:6:5", + "nodeType": "YulIdentifier", + "src": "17997:6:5" + }, + "nativeSrc": "17997:16:5", + "nodeType": "YulFunctionCall", + "src": "17997:16:5" + }, + "variableNames": [ + { + "name": "T3", + "nativeSrc": "17991:2:5", + "nodeType": "YulIdentifier", + "src": "17991:2:5" + } + ] + }, + { + "nativeSrc": "18059:23:5", + "nodeType": "YulAssignment", + "src": "18059:23:5", + "value": { + "arguments": [ + { + "name": "T1", + "nativeSrc": "18072:2:5", + "nodeType": "YulIdentifier", + "src": "18072:2:5" + }, + { + "name": "T2", + "nativeSrc": "18076:2:5", + "nodeType": "YulIdentifier", + "src": "18076:2:5" + }, + { + "name": "p", + "nativeSrc": "18080:1:5", + "nodeType": "YulIdentifier", + "src": "18080:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "18065:6:5", + "nodeType": "YulIdentifier", + "src": "18065:6:5" + }, + "nativeSrc": "18065:17:5", + "nodeType": "YulFunctionCall", + "src": "18065:17:5" + }, + "variableNames": [ + { + "name": "T1", + "nativeSrc": "18059:2:5", + "nodeType": "YulIdentifier", + "src": "18059:2:5" + } + ] + }, + { + "nativeSrc": "18123:59:5", + "nodeType": "YulAssignment", + "src": "18123:59:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "X", + "nativeSrc": "18143:1:5", + "nodeType": "YulIdentifier", + "src": "18143:1:5" + }, + { + "name": "zz", + "nativeSrc": "18146:2:5", + "nodeType": "YulIdentifier", + "src": "18146:2:5" + }, + { + "name": "p", + "nativeSrc": "18150:1:5", + "nodeType": "YulIdentifier", + "src": "18150:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "18136:6:5", + "nodeType": "YulIdentifier", + "src": "18136:6:5" + }, + "nativeSrc": "18136:16:5", + "nodeType": "YulFunctionCall", + "src": "18136:16:5" + }, + { + "arguments": [ + { + "name": "X", + "nativeSrc": "18161:1:5", + "nodeType": "YulIdentifier", + "src": "18161:1:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "18168:1:5", + "nodeType": "YulIdentifier", + "src": "18168:1:5" + }, + { + "name": "zz", + "nativeSrc": "18171:2:5", + "nodeType": "YulIdentifier", + "src": "18171:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "18164:3:5", + "nodeType": "YulIdentifier", + "src": "18164:3:5" + }, + "nativeSrc": "18164:10:5", + "nodeType": "YulFunctionCall", + "src": "18164:10:5" + }, + { + "name": "p", + "nativeSrc": "18176:1:5", + "nodeType": "YulIdentifier", + "src": "18176:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "18154:6:5", + "nodeType": "YulIdentifier", + "src": "18154:6:5" + }, + "nativeSrc": "18154:24:5", + "nodeType": "YulFunctionCall", + "src": "18154:24:5" + }, + { + "name": "p", + "nativeSrc": "18180:1:5", + "nodeType": "YulIdentifier", + "src": "18180:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "18129:6:5", + "nodeType": "YulIdentifier", + "src": "18129:6:5" + }, + "nativeSrc": "18129:53:5", + "nodeType": "YulFunctionCall", + "src": "18129:53:5" + }, + "variableNames": [ + { + "name": "y2", + "nativeSrc": "18123:2:5", + "nodeType": "YulIdentifier", + "src": "18123:2:5" + } + ] + }, + { + "nativeSrc": "18230:22:5", + "nodeType": "YulAssignment", + "src": "18230:22:5", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18243:1:5", + "nodeType": "YulLiteral", + "src": "18243:1:5", + "type": "", + "value": "3" + }, + { + "name": "y2", + "nativeSrc": "18246:2:5", + "nodeType": "YulIdentifier", + "src": "18246:2:5" + }, + { + "name": "p", + "nativeSrc": "18250:1:5", + "nodeType": "YulIdentifier", + "src": "18250:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "18236:6:5", + "nodeType": "YulIdentifier", + "src": "18236:6:5" + }, + "nativeSrc": "18236:16:5", + "nodeType": "YulFunctionCall", + "src": "18236:16:5" + }, + "variableNames": [ + { + "name": "T4", + "nativeSrc": "18230:2:5", + "nodeType": "YulIdentifier", + "src": "18230:2:5" + } + ] + }, + { + "nativeSrc": "18305:25:5", + "nodeType": "YulAssignment", + "src": "18305:25:5", + "value": { + "arguments": [ + { + "name": "T1", + "nativeSrc": "18319:2:5", + "nodeType": "YulIdentifier", + "src": "18319:2:5" + }, + { + "name": "zzz", + "nativeSrc": "18323:3:5", + "nodeType": "YulIdentifier", + "src": "18323:3:5" + }, + { + "name": "p", + "nativeSrc": "18328:1:5", + "nodeType": "YulIdentifier", + "src": "18328:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "18312:6:5", + "nodeType": "YulIdentifier", + "src": "18312:6:5" + }, + "nativeSrc": "18312:18:5", + "nodeType": "YulFunctionCall", + "src": "18312:18:5" + }, + "variableNames": [ + { + "name": "zzz", + "nativeSrc": "18305:3:5", + "nodeType": "YulIdentifier", + "src": "18305:3:5" + } + ] + }, + { + "nativeSrc": "18377:23:5", + "nodeType": "YulAssignment", + "src": "18377:23:5", + "value": { + "arguments": [ + { + "name": "T2", + "nativeSrc": "18390:2:5", + "nodeType": "YulIdentifier", + "src": "18390:2:5" + }, + { + "name": "zz", + "nativeSrc": "18394:2:5", + "nodeType": "YulIdentifier", + "src": "18394:2:5" + }, + { + "name": "p", + "nativeSrc": "18398:1:5", + "nodeType": "YulIdentifier", + "src": "18398:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "18383:6:5", + "nodeType": "YulIdentifier", + "src": "18383:6:5" + }, + "nativeSrc": "18383:17:5", + "nodeType": "YulFunctionCall", + "src": "18383:17:5" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "18377:2:5", + "nodeType": "YulIdentifier", + "src": "18377:2:5" + } + ] + }, + { + "nativeSrc": "18454:57:5", + "nodeType": "YulAssignment", + "src": "18454:57:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "T4", + "nativeSrc": "18473:2:5", + "nodeType": "YulIdentifier", + "src": "18473:2:5" + }, + { + "name": "T4", + "nativeSrc": "18477:2:5", + "nodeType": "YulIdentifier", + "src": "18477:2:5" + }, + { + "name": "p", + "nativeSrc": "18481:1:5", + "nodeType": "YulIdentifier", + "src": "18481:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "18466:6:5", + "nodeType": "YulIdentifier", + "src": "18466:6:5" + }, + "nativeSrc": "18466:17:5", + "nodeType": "YulFunctionCall", + "src": "18466:17:5" + }, + { + "arguments": [ + { + "name": "minus_2", + "nativeSrc": "18492:7:5", + "nodeType": "YulIdentifier", + "src": "18492:7:5" + }, + { + "name": "T3", + "nativeSrc": "18501:2:5", + "nodeType": "YulIdentifier", + "src": "18501:2:5" + }, + { + "name": "p", + "nativeSrc": "18505:1:5", + "nodeType": "YulIdentifier", + "src": "18505:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "18485:6:5", + "nodeType": "YulIdentifier", + "src": "18485:6:5" + }, + "nativeSrc": "18485:22:5", + "nodeType": "YulFunctionCall", + "src": "18485:22:5" + }, + { + "name": "p", + "nativeSrc": "18509:1:5", + "nodeType": "YulIdentifier", + "src": "18509:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "18459:6:5", + "nodeType": "YulIdentifier", + "src": "18459:6:5" + }, + "nativeSrc": "18459:52:5", + "nodeType": "YulFunctionCall", + "src": "18459:52:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "18454:1:5", + "nodeType": "YulIdentifier", + "src": "18454:1:5" + } + ] + }, + { + "nativeSrc": "18556:45:5", + "nodeType": "YulAssignment", + "src": "18556:45:5", + "value": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "18569:2:5", + "nodeType": "YulIdentifier", + "src": "18569:2:5" + }, + { + "arguments": [ + { + "name": "T3", + "nativeSrc": "18580:2:5", + "nodeType": "YulIdentifier", + "src": "18580:2:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "18588:1:5", + "nodeType": "YulIdentifier", + "src": "18588:1:5" + }, + { + "name": "X", + "nativeSrc": "18591:1:5", + "nodeType": "YulIdentifier", + "src": "18591:1:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "18584:3:5", + "nodeType": "YulIdentifier", + "src": "18584:3:5" + }, + "nativeSrc": "18584:9:5", + "nodeType": "YulFunctionCall", + "src": "18584:9:5" + }, + { + "name": "p", + "nativeSrc": "18595:1:5", + "nodeType": "YulIdentifier", + "src": "18595:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "18573:6:5", + "nodeType": "YulIdentifier", + "src": "18573:6:5" + }, + "nativeSrc": "18573:24:5", + "nodeType": "YulFunctionCall", + "src": "18573:24:5" + }, + { + "name": "p", + "nativeSrc": "18599:1:5", + "nodeType": "YulIdentifier", + "src": "18599:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "18562:6:5", + "nodeType": "YulIdentifier", + "src": "18562:6:5" + }, + "nativeSrc": "18562:39:5", + "nodeType": "YulFunctionCall", + "src": "18562:39:5" + }, + "variableNames": [ + { + "name": "T2", + "nativeSrc": "18556:2:5", + "nodeType": "YulIdentifier", + "src": "18556:2:5" + } + ] + }, + { + "nativeSrc": "18645:36:5", + "nodeType": "YulAssignment", + "src": "18645:36:5", + "value": { + "arguments": [ + { + "name": "T2", + "nativeSrc": "18657:2:5", + "nodeType": "YulIdentifier", + "src": "18657:2:5" + }, + { + "arguments": [ + { + "name": "T1", + "nativeSrc": "18668:2:5", + "nodeType": "YulIdentifier", + "src": "18668:2:5" + }, + { + "name": "Y", + "nativeSrc": "18672:1:5", + "nodeType": "YulIdentifier", + "src": "18672:1:5" + }, + { + "name": "p", + "nativeSrc": "18675:1:5", + "nodeType": "YulIdentifier", + "src": "18675:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "18661:6:5", + "nodeType": "YulIdentifier", + "src": "18661:6:5" + }, + "nativeSrc": "18661:16:5", + "nodeType": "YulFunctionCall", + "src": "18661:16:5" + }, + { + "name": "p", + "nativeSrc": "18679:1:5", + "nodeType": "YulIdentifier", + "src": "18679:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "18650:6:5", + "nodeType": "YulIdentifier", + "src": "18650:6:5" + }, + "nativeSrc": "18650:31:5", + "nodeType": "YulFunctionCall", + "src": "18650:31:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "18645:1:5", + "nodeType": "YulIdentifier", + "src": "18645:1:5" + } + ] + }, + { + "nativeSrc": "18734:8:5", + "nodeType": "YulContinue", + "src": "18734:8:5" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "T2", + "nativeSrc": "17809:2:5", + "nodeType": "YulIdentifier", + "src": "17809:2:5" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "17802:6:5", + "nodeType": "YulIdentifier", + "src": "17802:6:5" + }, + "nativeSrc": "17802:10:5", + "nodeType": "YulFunctionCall", + "src": "17802:10:5" + }, + "nativeSrc": "17799:973:5", + "nodeType": "YulIf", + "src": "17799:973:5" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "y2", + "nativeSrc": "17765:2:5", + "nodeType": "YulIdentifier", + "src": "17765:2:5" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "17758:6:5", + "nodeType": "YulIdentifier", + "src": "17758:6:5" + }, + "nativeSrc": "17758:10:5", + "nodeType": "YulFunctionCall", + "src": "17758:10:5" + }, + "nativeSrc": "17755:1043:5", + "nodeType": "YulIf", + "src": "17755:1043:5" + }, + { + "nativeSrc": "18824:23:5", + "nodeType": "YulAssignment", + "src": "18824:23:5", + "value": { + "arguments": [ + { + "name": "T2", + "nativeSrc": "18837:2:5", + "nodeType": "YulIdentifier", + "src": "18837:2:5" + }, + { + "name": "T2", + "nativeSrc": "18841:2:5", + "nodeType": "YulIdentifier", + "src": "18841:2:5" + }, + { + "name": "p", + "nativeSrc": "18845:1:5", + "nodeType": "YulIdentifier", + "src": "18845:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "18830:6:5", + "nodeType": "YulIdentifier", + "src": "18830:6:5" + }, + "nativeSrc": "18830:17:5", + "nodeType": "YulFunctionCall", + "src": "18830:17:5" + }, + "variableNames": [ + { + "name": "T4", + "nativeSrc": "18824:2:5", + "nodeType": "YulIdentifier", + "src": "18824:2:5" + } + ] + }, + { + "nativeSrc": "18877:28:5", + "nodeType": "YulVariableDeclaration", + "src": "18877:28:5", + "value": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "18895:2:5", + "nodeType": "YulIdentifier", + "src": "18895:2:5" + }, + { + "name": "T2", + "nativeSrc": "18899:2:5", + "nodeType": "YulIdentifier", + "src": "18899:2:5" + }, + { + "name": "p", + "nativeSrc": "18903:1:5", + "nodeType": "YulIdentifier", + "src": "18903:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "18888:6:5", + "nodeType": "YulIdentifier", + "src": "18888:6:5" + }, + "nativeSrc": "18888:17:5", + "nodeType": "YulFunctionCall", + "src": "18888:17:5" + }, + "variables": [ + { + "name": "TT1", + "nativeSrc": "18881:3:5", + "nodeType": "YulTypedName", + "src": "18881:3:5", + "type": "" + } + ] + }, + { + "nativeSrc": "18998:23:5", + "nodeType": "YulAssignment", + "src": "18998:23:5", + "value": { + "arguments": [ + { + "name": "zz", + "nativeSrc": "19011:2:5", + "nodeType": "YulIdentifier", + "src": "19011:2:5" + }, + { + "name": "T4", + "nativeSrc": "19015:2:5", + "nodeType": "YulIdentifier", + "src": "19015:2:5" + }, + { + "name": "p", + "nativeSrc": "19019:1:5", + "nodeType": "YulIdentifier", + "src": "19019:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "19004:6:5", + "nodeType": "YulIdentifier", + "src": "19004:6:5" + }, + "nativeSrc": "19004:17:5", + "nodeType": "YulFunctionCall", + "src": "19004:17:5" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "18998:2:5", + "nodeType": "YulIdentifier", + "src": "18998:2:5" + } + ] + }, + { + "nativeSrc": "19046:26:5", + "nodeType": "YulAssignment", + "src": "19046:26:5", + "value": { + "arguments": [ + { + "name": "zzz", + "nativeSrc": "19060:3:5", + "nodeType": "YulIdentifier", + "src": "19060:3:5" + }, + { + "name": "TT1", + "nativeSrc": "19065:3:5", + "nodeType": "YulIdentifier", + "src": "19065:3:5" + }, + { + "name": "p", + "nativeSrc": "19070:1:5", + "nodeType": "YulIdentifier", + "src": "19070:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "19053:6:5", + "nodeType": "YulIdentifier", + "src": "19053:6:5" + }, + "nativeSrc": "19053:19:5", + "nodeType": "YulFunctionCall", + "src": "19053:19:5" + }, + "variableNames": [ + { + "name": "zzz", + "nativeSrc": "19046:3:5", + "nodeType": "YulIdentifier", + "src": "19046:3:5" + } + ] + }, + { + "nativeSrc": "19109:27:5", + "nodeType": "YulVariableDeclaration", + "src": "19109:27:5", + "value": { + "arguments": [ + { + "name": "X", + "nativeSrc": "19127:1:5", + "nodeType": "YulIdentifier", + "src": "19127:1:5" + }, + { + "name": "T4", + "nativeSrc": "19130:2:5", + "nodeType": "YulIdentifier", + "src": "19130:2:5" + }, + { + "name": "p", + "nativeSrc": "19134:1:5", + "nodeType": "YulIdentifier", + "src": "19134:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "19120:6:5", + "nodeType": "YulIdentifier", + "src": "19120:6:5" + }, + "nativeSrc": "19120:16:5", + "nodeType": "YulFunctionCall", + "src": "19120:16:5" + }, + "variables": [ + { + "name": "TT2", + "nativeSrc": "19113:3:5", + "nodeType": "YulTypedName", + "src": "19113:3:5", + "type": "" + } + ] + }, + { + "nativeSrc": "19161:83:5", + "nodeType": "YulAssignment", + "src": "19161:83:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "y2", + "nativeSrc": "19188:2:5", + "nodeType": "YulIdentifier", + "src": "19188:2:5" + }, + { + "name": "y2", + "nativeSrc": "19192:2:5", + "nodeType": "YulIdentifier", + "src": "19192:2:5" + }, + { + "name": "p", + "nativeSrc": "19196:1:5", + "nodeType": "YulIdentifier", + "src": "19196:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "19181:6:5", + "nodeType": "YulIdentifier", + "src": "19181:6:5" + }, + "nativeSrc": "19181:17:5", + "nodeType": "YulFunctionCall", + "src": "19181:17:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "19204:1:5", + "nodeType": "YulIdentifier", + "src": "19204:1:5" + }, + { + "name": "TT1", + "nativeSrc": "19207:3:5", + "nodeType": "YulIdentifier", + "src": "19207:3:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "19200:3:5", + "nodeType": "YulIdentifier", + "src": "19200:3:5" + }, + "nativeSrc": "19200:11:5", + "nodeType": "YulFunctionCall", + "src": "19200:11:5" + }, + { + "name": "p", + "nativeSrc": "19213:1:5", + "nodeType": "YulIdentifier", + "src": "19213:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "19174:6:5", + "nodeType": "YulIdentifier", + "src": "19174:6:5" + }, + "nativeSrc": "19174:41:5", + "nodeType": "YulFunctionCall", + "src": "19174:41:5" + }, + { + "arguments": [ + { + "name": "minus_2", + "nativeSrc": "19224:7:5", + "nodeType": "YulIdentifier", + "src": "19224:7:5" + }, + { + "name": "TT2", + "nativeSrc": "19233:3:5", + "nodeType": "YulIdentifier", + "src": "19233:3:5" + }, + { + "name": "p", + "nativeSrc": "19238:1:5", + "nodeType": "YulIdentifier", + "src": "19238:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "19217:6:5", + "nodeType": "YulIdentifier", + "src": "19217:6:5" + }, + "nativeSrc": "19217:23:5", + "nodeType": "YulFunctionCall", + "src": "19217:23:5" + }, + { + "name": "p", + "nativeSrc": "19242:1:5", + "nodeType": "YulIdentifier", + "src": "19242:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "19167:6:5", + "nodeType": "YulIdentifier", + "src": "19167:6:5" + }, + "nativeSrc": "19167:77:5", + "nodeType": "YulFunctionCall", + "src": "19167:77:5" + }, + "variableNames": [ + { + "name": "T4", + "nativeSrc": "19161:2:5", + "nodeType": "YulIdentifier", + "src": "19161:2:5" + } + ] + }, + { + "nativeSrc": "19269:76:5", + "nodeType": "YulAssignment", + "src": "19269:76:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "TT2", + "nativeSrc": "19295:3:5", + "nodeType": "YulIdentifier", + "src": "19295:3:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "19304:1:5", + "nodeType": "YulIdentifier", + "src": "19304:1:5" + }, + { + "name": "T4", + "nativeSrc": "19307:2:5", + "nodeType": "YulIdentifier", + "src": "19307:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "19300:3:5", + "nodeType": "YulIdentifier", + "src": "19300:3:5" + }, + "nativeSrc": "19300:10:5", + "nodeType": "YulFunctionCall", + "src": "19300:10:5" + }, + { + "name": "p", + "nativeSrc": "19312:1:5", + "nodeType": "YulIdentifier", + "src": "19312:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "19288:6:5", + "nodeType": "YulIdentifier", + "src": "19288:6:5" + }, + "nativeSrc": "19288:26:5", + "nodeType": "YulFunctionCall", + "src": "19288:26:5" + }, + { + "name": "y2", + "nativeSrc": "19316:2:5", + "nodeType": "YulIdentifier", + "src": "19316:2:5" + }, + { + "name": "p", + "nativeSrc": "19320:1:5", + "nodeType": "YulIdentifier", + "src": "19320:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "19281:6:5", + "nodeType": "YulIdentifier", + "src": "19281:6:5" + }, + "nativeSrc": "19281:41:5", + "nodeType": "YulFunctionCall", + "src": "19281:41:5" + }, + { + "arguments": [ + { + "name": "Y", + "nativeSrc": "19331:1:5", + "nodeType": "YulIdentifier", + "src": "19331:1:5" + }, + { + "name": "TT1", + "nativeSrc": "19334:3:5", + "nodeType": "YulIdentifier", + "src": "19334:3:5" + }, + { + "name": "p", + "nativeSrc": "19339:1:5", + "nodeType": "YulIdentifier", + "src": "19339:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "19324:6:5", + "nodeType": "YulIdentifier", + "src": "19324:6:5" + }, + "nativeSrc": "19324:17:5", + "nodeType": "YulFunctionCall", + "src": "19324:17:5" + }, + { + "name": "p", + "nativeSrc": "19343:1:5", + "nodeType": "YulIdentifier", + "src": "19343:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "19274:6:5", + "nodeType": "YulIdentifier", + "src": "19274:6:5" + }, + "nativeSrc": "19274:71:5", + "nodeType": "YulFunctionCall", + "src": "19274:71:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "19269:1:5", + "nodeType": "YulIdentifier", + "src": "19269:1:5" + } + ] + }, + { + "nativeSrc": "19371:7:5", + "nodeType": "YulAssignment", + "src": "19371:7:5", + "value": { + "name": "T4", + "nativeSrc": "19376:2:5", + "nodeType": "YulIdentifier", + "src": "19376:2:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "19371:1:5", + "nodeType": "YulIdentifier", + "src": "19371:1:5" + } + ] + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "minus_1", + "nativeSrc": "15403:7:5", + "nodeType": "YulIdentifier", + "src": "15403:7:5" + }, + { + "name": "index", + "nativeSrc": "15412:5:5", + "nodeType": "YulIdentifier", + "src": "15412:5:5" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "15400:2:5", + "nodeType": "YulIdentifier", + "src": "15400:2:5" + }, + "nativeSrc": "15400:18:5", + "nodeType": "YulFunctionCall", + "src": "15400:18:5" + }, + "nativeSrc": "15393:4025:5", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "15419:26:5", + "nodeType": "YulBlock", + "src": "15419:26:5", + "statements": [ + { + "nativeSrc": "15421:22:5", + "nodeType": "YulAssignment", + "src": "15421:22:5", + "value": { + "arguments": [ + { + "name": "index", + "nativeSrc": "15434:5:5", + "nodeType": "YulIdentifier", + "src": "15434:5:5" + }, + { + "kind": "number", + "nativeSrc": "15441:1:5", + "nodeType": "YulLiteral", + "src": "15441:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "15430:3:5", + "nodeType": "YulIdentifier", + "src": "15430:3:5" + }, + "nativeSrc": "15430:13:5", + "nodeType": "YulFunctionCall", + "src": "15430:13:5" + }, + "variableNames": [ + { + "name": "index", + "nativeSrc": "15421:5:5", + "nodeType": "YulIdentifier", + "src": "15421:5:5" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "15397:2:5", + "nodeType": "YulBlock", + "src": "15397:2:5", + "statements": [] + }, + "src": "15393:4025:5" + }, + { + "nativeSrc": "19446:20:5", + "nodeType": "YulVariableDeclaration", + "src": "19446:20:5", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "19461:4:5", + "nodeType": "YulLiteral", + "src": "19461:4:5", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "19455:5:5", + "nodeType": "YulIdentifier", + "src": "19455:5:5" + }, + "nativeSrc": "19455:11:5", + "nodeType": "YulFunctionCall", + "src": "19455:11:5" + }, + "variables": [ + { + "name": "T", + "nativeSrc": "19450:1:5", + "nodeType": "YulTypedName", + "src": "19450:1:5", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "19494:1:5", + "nodeType": "YulIdentifier", + "src": "19494:1:5" + }, + { + "kind": "number", + "nativeSrc": "19497:4:5", + "nodeType": "YulLiteral", + "src": "19497:4:5", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19490:3:5", + "nodeType": "YulIdentifier", + "src": "19490:3:5" + }, + "nativeSrc": "19490:12:5", + "nodeType": "YulFunctionCall", + "src": "19490:12:5" + }, + { + "name": "zz", + "nativeSrc": "19504:2:5", + "nodeType": "YulIdentifier", + "src": "19504:2:5" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "19483:6:5", + "nodeType": "YulIdentifier", + "src": "19483:6:5" + }, + "nativeSrc": "19483:24:5", + "nodeType": "YulFunctionCall", + "src": "19483:24:5" + }, + "nativeSrc": "19483:24:5", + "nodeType": "YulExpressionStatement", + "src": "19483:24:5" + }, + { + "expression": { + "arguments": [ + { + "name": "T", + "nativeSrc": "19766:1:5", + "nodeType": "YulIdentifier", + "src": "19766:1:5" + }, + { + "kind": "number", + "nativeSrc": "19769:4:5", + "nodeType": "YulLiteral", + "src": "19769:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "19759:6:5", + "nodeType": "YulIdentifier", + "src": "19759:6:5" + }, + "nativeSrc": "19759:15:5", + "nodeType": "YulFunctionCall", + "src": "19759:15:5" + }, + "nativeSrc": "19759:15:5", + "nodeType": "YulExpressionStatement", + "src": "19759:15:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "19802:1:5", + "nodeType": "YulIdentifier", + "src": "19802:1:5" + }, + { + "kind": "number", + "nativeSrc": "19805:4:5", + "nodeType": "YulLiteral", + "src": "19805:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19798:3:5", + "nodeType": "YulIdentifier", + "src": "19798:3:5" + }, + "nativeSrc": "19798:12:5", + "nodeType": "YulFunctionCall", + "src": "19798:12:5" + }, + { + "kind": "number", + "nativeSrc": "19812:4:5", + "nodeType": "YulLiteral", + "src": "19812:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "19791:6:5", + "nodeType": "YulIdentifier", + "src": "19791:6:5" + }, + "nativeSrc": "19791:26:5", + "nodeType": "YulFunctionCall", + "src": "19791:26:5" + }, + "nativeSrc": "19791:26:5", + "nodeType": "YulExpressionStatement", + "src": "19791:26:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "19845:1:5", + "nodeType": "YulIdentifier", + "src": "19845:1:5" + }, + { + "kind": "number", + "nativeSrc": "19848:4:5", + "nodeType": "YulLiteral", + "src": "19848:4:5", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19841:3:5", + "nodeType": "YulIdentifier", + "src": "19841:3:5" + }, + "nativeSrc": "19841:12:5", + "nodeType": "YulFunctionCall", + "src": "19841:12:5" + }, + { + "kind": "number", + "nativeSrc": "19855:4:5", + "nodeType": "YulLiteral", + "src": "19855:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "19834:6:5", + "nodeType": "YulIdentifier", + "src": "19834:6:5" + }, + "nativeSrc": "19834:26:5", + "nodeType": "YulFunctionCall", + "src": "19834:26:5" + }, + "nativeSrc": "19834:26:5", + "nodeType": "YulExpressionStatement", + "src": "19834:26:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "19999:1:5", + "nodeType": "YulIdentifier", + "src": "19999:1:5" + }, + { + "kind": "number", + "nativeSrc": "20002:4:5", + "nodeType": "YulLiteral", + "src": "20002:4:5", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19995:3:5", + "nodeType": "YulIdentifier", + "src": "19995:3:5" + }, + "nativeSrc": "19995:12:5", + "nodeType": "YulFunctionCall", + "src": "19995:12:5" + }, + { + "name": "minus_2", + "nativeSrc": "20009:7:5", + "nodeType": "YulIdentifier", + "src": "20009:7:5" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "19988:6:5", + "nodeType": "YulIdentifier", + "src": "19988:6:5" + }, + "nativeSrc": "19988:29:5", + "nodeType": "YulFunctionCall", + "src": "19988:29:5" + }, + "nativeSrc": "19988:29:5", + "nodeType": "YulExpressionStatement", + "src": "19988:29:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "20045:1:5", + "nodeType": "YulIdentifier", + "src": "20045:1:5" + }, + { + "kind": "number", + "nativeSrc": "20048:4:5", + "nodeType": "YulLiteral", + "src": "20048:4:5", + "type": "", + "value": "0xa0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20041:3:5", + "nodeType": "YulIdentifier", + "src": "20041:3:5" + }, + "nativeSrc": "20041:12:5", + "nodeType": "YulFunctionCall", + "src": "20041:12:5" + }, + { + "name": "p", + "nativeSrc": "20055:1:5", + "nodeType": "YulIdentifier", + "src": "20055:1:5" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "20034:6:5", + "nodeType": "YulIdentifier", + "src": "20034:6:5" + }, + "nativeSrc": "20034:23:5", + "nodeType": "YulFunctionCall", + "src": "20034:23:5" + }, + "nativeSrc": "20034:23:5", + "nodeType": "YulExpressionStatement", + "src": "20034:23:5" + }, + { + "body": { + "nativeSrc": "20192:16:5", + "nodeType": "YulBlock", + "src": "20192:16:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20201:1:5", + "nodeType": "YulLiteral", + "src": "20201:1:5", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "20204:1:5", + "nodeType": "YulLiteral", + "src": "20204:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "20194:6:5", + "nodeType": "YulIdentifier", + "src": "20194:6:5" + }, + "nativeSrc": "20194:12:5", + "nodeType": "YulFunctionCall", + "src": "20194:12:5" + }, + "nativeSrc": "20194:12:5", + "nodeType": "YulExpressionStatement", + "src": "20194:12:5" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20163:1:5", + "nodeType": "YulLiteral", + "src": "20163:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "20159:3:5", + "nodeType": "YulIdentifier", + "src": "20159:3:5" + }, + "nativeSrc": "20159:6:5", + "nodeType": "YulFunctionCall", + "src": "20159:6:5" + }, + { + "kind": "number", + "nativeSrc": "20167:4:5", + "nodeType": "YulLiteral", + "src": "20167:4:5", + "type": "", + "value": "0x05" + }, + { + "name": "T", + "nativeSrc": "20173:1:5", + "nodeType": "YulIdentifier", + "src": "20173:1:5" + }, + { + "kind": "number", + "nativeSrc": "20176:4:5", + "nodeType": "YulLiteral", + "src": "20176:4:5", + "type": "", + "value": "0xc0" + }, + { + "name": "T", + "nativeSrc": "20182:1:5", + "nodeType": "YulIdentifier", + "src": "20182:1:5" + }, + { + "kind": "number", + "nativeSrc": "20185:4:5", + "nodeType": "YulLiteral", + "src": "20185:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "20148:10:5", + "nodeType": "YulIdentifier", + "src": "20148:10:5" + }, + "nativeSrc": "20148:42:5", + "nodeType": "YulFunctionCall", + "src": "20148:42:5" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "20141:6:5", + "nodeType": "YulIdentifier", + "src": "20141:6:5" + }, + "nativeSrc": "20141:50:5", + "nodeType": "YulFunctionCall", + "src": "20141:50:5" + }, + "nativeSrc": "20138:70:5", + "nodeType": "YulIf", + "src": "20138:70:5" + }, + { + "nativeSrc": "20368:27:5", + "nodeType": "YulAssignment", + "src": "20368:27:5", + "value": { + "arguments": [ + { + "name": "X", + "nativeSrc": "20380:1:5", + "nodeType": "YulIdentifier", + "src": "20380:1:5" + }, + { + "arguments": [ + { + "name": "T", + "nativeSrc": "20389:1:5", + "nodeType": "YulIdentifier", + "src": "20389:1:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "20383:5:5", + "nodeType": "YulIdentifier", + "src": "20383:5:5" + }, + "nativeSrc": "20383:8:5", + "nodeType": "YulFunctionCall", + "src": "20383:8:5" + }, + { + "name": "p", + "nativeSrc": "20393:1:5", + "nodeType": "YulIdentifier", + "src": "20393:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "20373:6:5", + "nodeType": "YulIdentifier", + "src": "20373:6:5" + }, + "nativeSrc": "20373:22:5", + "nodeType": "YulFunctionCall", + "src": "20373:22:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "20368:1:5", + "nodeType": "YulIdentifier", + "src": "20368:1:5" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 1801, + "isOffset": false, + "isSlot": false, + "src": "15238:2:5", + "valueSize": 1 + }, + { + "declaration": 1801, + "isOffset": false, + "isSlot": false, + "src": "16968:2:5", + "valueSize": 1 + }, + { + "declaration": 1804, + "isOffset": false, + "isSlot": false, + "src": "15266:2:5", + "valueSize": 1 + }, + { + "declaration": 1804, + "isOffset": false, + "isSlot": false, + "src": "17005:2:5", + "valueSize": 1 + }, + { + "declaration": 1776, + "isOffset": false, + "isSlot": false, + "src": "15133:2:5", + "valueSize": 1 + }, + { + "declaration": 1776, + "isOffset": false, + "isSlot": false, + "src": "16829:2:5", + "valueSize": 1 + }, + { + "declaration": 1778, + "isOffset": false, + "isSlot": false, + "src": "15161:2:5", + "valueSize": 1 + }, + { + "declaration": 1778, + "isOffset": false, + "isSlot": false, + "src": "16866:2:5", + "valueSize": 1 + }, + { + "declaration": 1785, + "isOffset": false, + "isSlot": false, + "src": "15023:1:5", + "valueSize": 1 + }, + { + "declaration": 1785, + "isOffset": false, + "isSlot": false, + "src": "15128:1:5", + "valueSize": 1 + }, + { + "declaration": 1785, + "isOffset": false, + "isSlot": false, + "src": "15233:1:5", + "valueSize": 1 + }, + { + "declaration": 1785, + "isOffset": false, + "isSlot": false, + "src": "15647:1:5", + "valueSize": 1 + }, + { + "declaration": 1785, + "isOffset": false, + "isSlot": false, + "src": "15775:1:5", + "valueSize": 1 + }, + { + "declaration": 1785, + "isOffset": false, + "isSlot": false, + "src": "15801:1:5", + "valueSize": 1 + }, + { + "declaration": 1785, + "isOffset": false, + "isSlot": false, + "src": "15988:1:5", + "valueSize": 1 + }, + { + "declaration": 1785, + "isOffset": false, + "isSlot": false, + "src": "16102:1:5", + "valueSize": 1 + }, + { + "declaration": 1785, + "isOffset": false, + "isSlot": false, + "src": "17102:1:5", + "valueSize": 1 + }, + { + "declaration": 1785, + "isOffset": false, + "isSlot": false, + "src": "17534:1:5", + "valueSize": 1 + }, + { + "declaration": 1785, + "isOffset": false, + "isSlot": false, + "src": "18004:1:5", + "valueSize": 1 + }, + { + "declaration": 1785, + "isOffset": false, + "isSlot": false, + "src": "18143:1:5", + "valueSize": 1 + }, + { + "declaration": 1785, + "isOffset": false, + "isSlot": false, + "src": "18161:1:5", + "valueSize": 1 + }, + { + "declaration": 1785, + "isOffset": false, + "isSlot": false, + "src": "18454:1:5", + "valueSize": 1 + }, + { + "declaration": 1785, + "isOffset": false, + "isSlot": false, + "src": "18591:1:5", + "valueSize": 1 + }, + { + "declaration": 1785, + "isOffset": false, + "isSlot": false, + "src": "19127:1:5", + "valueSize": 1 + }, + { + "declaration": 1785, + "isOffset": false, + "isSlot": false, + "src": "19371:1:5", + "valueSize": 1 + }, + { + "declaration": 1785, + "isOffset": false, + "isSlot": false, + "src": "20368:1:5", + "valueSize": 1 + }, + { + "declaration": 1785, + "isOffset": false, + "isSlot": false, + "src": "20380:1:5", + "valueSize": 1 + }, + { + "declaration": 1794, + "isOffset": false, + "isSlot": false, + "src": "15051:1:5", + "valueSize": 1 + }, + { + "declaration": 1794, + "isOffset": false, + "isSlot": false, + "src": "15156:1:5", + "valueSize": 1 + }, + { + "declaration": 1794, + "isOffset": false, + "isSlot": false, + "src": "15261:1:5", + "valueSize": 1 + }, + { + "declaration": 1794, + "isOffset": false, + "isSlot": false, + "src": "15528:1:5", + "valueSize": 1 + }, + { + "declaration": 1794, + "isOffset": false, + "isSlot": false, + "src": "16163:1:5", + "valueSize": 1 + }, + { + "declaration": 1794, + "isOffset": false, + "isSlot": false, + "src": "16186:1:5", + "valueSize": 1 + }, + { + "declaration": 1794, + "isOffset": false, + "isSlot": false, + "src": "16499:1:5", + "valueSize": 1 + }, + { + "declaration": 1794, + "isOffset": false, + "isSlot": false, + "src": "16511:1:5", + "valueSize": 1 + }, + { + "declaration": 1794, + "isOffset": false, + "isSlot": false, + "src": "17138:1:5", + "valueSize": 1 + }, + { + "declaration": 1794, + "isOffset": false, + "isSlot": false, + "src": "17461:1:5", + "valueSize": 1 + }, + { + "declaration": 1794, + "isOffset": false, + "isSlot": false, + "src": "17869:1:5", + "valueSize": 1 + }, + { + "declaration": 1794, + "isOffset": false, + "isSlot": false, + "src": "18645:1:5", + "valueSize": 1 + }, + { + "declaration": 1794, + "isOffset": false, + "isSlot": false, + "src": "18672:1:5", + "valueSize": 1 + }, + { + "declaration": 1794, + "isOffset": false, + "isSlot": false, + "src": "19269:1:5", + "valueSize": 1 + }, + { + "declaration": 1794, + "isOffset": false, + "isSlot": false, + "src": "19331:1:5", + "valueSize": 1 + }, + { + "declaration": 985, + "isOffset": false, + "isSlot": false, + "src": "15028:2:5", + "valueSize": 1 + }, + { + "declaration": 985, + "isOffset": false, + "isSlot": false, + "src": "16690:2:5", + "valueSize": 1 + }, + { + "declaration": 988, + "isOffset": false, + "isSlot": false, + "src": "15056:2:5", + "valueSize": 1 + }, + { + "declaration": 988, + "isOffset": false, + "isSlot": false, + "src": "16727:2:5", + "valueSize": 1 + }, + { + "declaration": 1797, + "isOffset": false, + "isSlot": false, + "src": "14648:5:5", + "valueSize": 1 + }, + { + "declaration": 1797, + "isOffset": false, + "isSlot": false, + "src": "14679:5:5", + "valueSize": 1 + }, + { + "declaration": 1797, + "isOffset": false, + "isSlot": false, + "src": "14735:5:5", + "valueSize": 1 + }, + { + "declaration": 1797, + "isOffset": false, + "isSlot": false, + "src": "14748:5:5", + "valueSize": 1 + }, + { + "declaration": 1797, + "isOffset": false, + "isSlot": false, + "src": "14803:5:5", + "valueSize": 1 + }, + { + "declaration": 1797, + "isOffset": false, + "isSlot": false, + "src": "14834:5:5", + "valueSize": 1 + }, + { + "declaration": 1797, + "isOffset": false, + "isSlot": false, + "src": "14918:5:5", + "valueSize": 1 + }, + { + "declaration": 1797, + "isOffset": false, + "isSlot": false, + "src": "14949:5:5", + "valueSize": 1 + }, + { + "declaration": 1797, + "isOffset": false, + "isSlot": false, + "src": "15304:5:5", + "valueSize": 1 + }, + { + "declaration": 1797, + "isOffset": false, + "isSlot": false, + "src": "15317:5:5", + "valueSize": 1 + }, + { + "declaration": 1797, + "isOffset": false, + "isSlot": false, + "src": "15412:5:5", + "valueSize": 1 + }, + { + "declaration": 1797, + "isOffset": false, + "isSlot": false, + "src": "15421:5:5", + "valueSize": 1 + }, + { + "declaration": 1797, + "isOffset": false, + "isSlot": false, + "src": "15434:5:5", + "valueSize": 1 + }, + { + "declaration": 1797, + "isOffset": false, + "isSlot": false, + "src": "16377:5:5", + "valueSize": 1 + }, + { + "declaration": 1797, + "isOffset": false, + "isSlot": false, + "src": "16408:5:5", + "valueSize": 1 + }, + { + "declaration": 1000, + "isOffset": false, + "isSlot": false, + "src": "15403:7:5", + "valueSize": 1 + }, + { + "declaration": 994, + "isOffset": false, + "isSlot": false, + "src": "16026:7:5", + "valueSize": 1 + }, + { + "declaration": 994, + "isOffset": false, + "isSlot": false, + "src": "17860:7:5", + "valueSize": 1 + }, + { + "declaration": 994, + "isOffset": false, + "isSlot": false, + "src": "18492:7:5", + "valueSize": 1 + }, + { + "declaration": 994, + "isOffset": false, + "isSlot": false, + "src": "19224:7:5", + "valueSize": 1 + }, + { + "declaration": 994, + "isOffset": false, + "isSlot": false, + "src": "20009:7:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "15531:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "15598:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "15654:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "15710:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "15782:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "15790:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "15808:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "15812:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "15816:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "15886:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "15944:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "16015:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "16039:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "16043:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "16109:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "16117:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "16121:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "16189:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "16197:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "16508:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "17457:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "17464:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "17523:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "17531:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "17538:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "17872:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "17947:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "18011:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "18080:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "18150:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "18168:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "18176:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "18180:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "18250:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "18328:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "18398:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "18481:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "18505:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "18509:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "18588:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "18595:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "18599:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "18675:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "18679:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "18845:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "18903:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "19019:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "19070:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "19134:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "19196:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "19204:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "19213:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "19238:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "19242:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "19304:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "19312:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "19320:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "19339:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "19343:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "20055:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "20393:1:5", + "valueSize": 1 + }, + { + "declaration": 1780, + "isOffset": false, + "isSlot": false, + "src": "14686:8:5", + "valueSize": 1 + }, + { + "declaration": 1780, + "isOffset": false, + "isSlot": false, + "src": "14841:8:5", + "valueSize": 1 + }, + { + "declaration": 1780, + "isOffset": false, + "isSlot": false, + "src": "14956:8:5", + "valueSize": 1 + }, + { + "declaration": 1780, + "isOffset": false, + "isSlot": false, + "src": "16415:8:5", + "valueSize": 1 + }, + { + "declaration": 1782, + "isOffset": false, + "isSlot": false, + "src": "14655:8:5", + "valueSize": 1 + }, + { + "declaration": 1782, + "isOffset": false, + "isSlot": false, + "src": "14810:8:5", + "valueSize": 1 + }, + { + "declaration": 1782, + "isOffset": false, + "isSlot": false, + "src": "14925:8:5", + "valueSize": 1 + }, + { + "declaration": 1782, + "isOffset": false, + "isSlot": false, + "src": "16384:8:5", + "valueSize": 1 + }, + { + "declaration": 1788, + "isOffset": false, + "isSlot": false, + "src": "14893:2:5", + "valueSize": 1 + }, + { + "declaration": 1788, + "isOffset": false, + "isSlot": false, + "src": "14994:2:5", + "valueSize": 1 + }, + { + "declaration": 1788, + "isOffset": false, + "isSlot": false, + "src": "15099:2:5", + "valueSize": 1 + }, + { + "declaration": 1788, + "isOffset": false, + "isSlot": false, + "src": "15204:2:5", + "valueSize": 1 + }, + { + "declaration": 1788, + "isOffset": false, + "isSlot": false, + "src": "15343:2:5", + "valueSize": 1 + }, + { + "declaration": 1788, + "isOffset": false, + "isSlot": false, + "src": "15785:2:5", + "valueSize": 1 + }, + { + "declaration": 1788, + "isOffset": false, + "isSlot": false, + "src": "15804:2:5", + "valueSize": 1 + }, + { + "declaration": 1788, + "isOffset": false, + "isSlot": false, + "src": "15923:2:5", + "valueSize": 1 + }, + { + "declaration": 1788, + "isOffset": false, + "isSlot": false, + "src": "15940:2:5", + "valueSize": 1 + }, + { + "declaration": 1788, + "isOffset": false, + "isSlot": false, + "src": "17068:2:5", + "valueSize": 1 + }, + { + "declaration": 1788, + "isOffset": false, + "isSlot": false, + "src": "17174:2:5", + "valueSize": 1 + }, + { + "declaration": 1788, + "isOffset": false, + "isSlot": false, + "src": "17519:2:5", + "valueSize": 1 + }, + { + "declaration": 1788, + "isOffset": false, + "isSlot": false, + "src": "18146:2:5", + "valueSize": 1 + }, + { + "declaration": 1788, + "isOffset": false, + "isSlot": false, + "src": "18171:2:5", + "valueSize": 1 + }, + { + "declaration": 1788, + "isOffset": false, + "isSlot": false, + "src": "18377:2:5", + "valueSize": 1 + }, + { + "declaration": 1788, + "isOffset": false, + "isSlot": false, + "src": "18394:2:5", + "valueSize": 1 + }, + { + "declaration": 1788, + "isOffset": false, + "isSlot": false, + "src": "18998:2:5", + "valueSize": 1 + }, + { + "declaration": 1788, + "isOffset": false, + "isSlot": false, + "src": "19011:2:5", + "valueSize": 1 + }, + { + "declaration": 1788, + "isOffset": false, + "isSlot": false, + "src": "19504:2:5", + "valueSize": 1 + }, + { + "declaration": 1791, + "isOffset": false, + "isSlot": false, + "src": "15367:3:5", + "valueSize": 1 + }, + { + "declaration": 1791, + "isOffset": false, + "isSlot": false, + "src": "15863:3:5", + "valueSize": 1 + }, + { + "declaration": 1791, + "isOffset": false, + "isSlot": false, + "src": "15881:3:5", + "valueSize": 1 + }, + { + "declaration": 1791, + "isOffset": false, + "isSlot": false, + "src": "17210:3:5", + "valueSize": 1 + }, + { + "declaration": 1791, + "isOffset": false, + "isSlot": false, + "src": "17452:3:5", + "valueSize": 1 + }, + { + "declaration": 1791, + "isOffset": false, + "isSlot": false, + "src": "18305:3:5", + "valueSize": 1 + }, + { + "declaration": 1791, + "isOffset": false, + "isSlot": false, + "src": "18323:3:5", + "valueSize": 1 + }, + { + "declaration": 1791, + "isOffset": false, + "isSlot": false, + "src": "19046:3:5", + "valueSize": 1 + }, + { + "declaration": 1791, + "isOffset": false, + "isSlot": false, + "src": "19060:3:5", + "valueSize": 1 + } + ], + "id": 1862, + "nodeType": "InlineAssembly", + "src": "14586:5830:5" + } + ] + }, + { + "expression": { + "id": 1864, + "name": "X", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1785, + "src": "20474:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1786, + "id": 1865, + "nodeType": "Return", + "src": "20467:8:5" + } + ] + }, + "documentation": { + "id": 1774, + "nodeType": "StructuredDocumentation", + "src": "13729:161:5", + "text": " @dev Computation of uG+vQ using Strauss-Shamir's trick, G basepoint, Q public key\n Returns only x for ECDSA use \n " + }, + "id": 1867, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ecZZ_mulmuladd_S_asm", + "nameLocation": "13904:20:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1783, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1776, + "mutability": "mutable", + "name": "Q0", + "nameLocation": "13942:2:5", + "nodeType": "VariableDeclaration", + "scope": 1867, + "src": "13934:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1775, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13934:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1778, + "mutability": "mutable", + "name": "Q1", + "nameLocation": "13962:2:5", + "nodeType": "VariableDeclaration", + "scope": 1867, + "src": "13954:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1777, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13954:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1780, + "mutability": "mutable", + "name": "scalar_u", + "nameLocation": "14013:8:5", + "nodeType": "VariableDeclaration", + "scope": 1867, + "src": "14005:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1779, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14005:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1782, + "mutability": "mutable", + "name": "scalar_v", + "nameLocation": "14039:8:5", + "nodeType": "VariableDeclaration", + "scope": 1867, + "src": "14031:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1781, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14031:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "13924:129:5" + }, + "returnParameters": { + "id": 1786, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1785, + "mutability": "mutable", + "name": "X", + "nameLocation": "14085:1:5", + "nodeType": "VariableDeclaration", + "scope": 1867, + "src": "14077:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1784, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14077:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "14076:11:5" + }, + "scope": 2309, + "src": "13895:6587:5", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1940, + "nodeType": "Block", + "src": "20871:6233:5", + "statements": [ + { + "assignments": [ + 1884 + ], + "declarations": [ + { + "constant": false, + "id": 1884, + "mutability": "mutable", + "name": "zz", + "nameLocation": "20889:2:5", + "nodeType": "VariableDeclaration", + "scope": 1940, + "src": "20881:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1883, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20881:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1885, + "nodeType": "VariableDeclarationStatement", + "src": "20881:10:5" + }, + { + "assignments": [ + 1887 + ], + "declarations": [ + { + "constant": false, + "id": 1887, + "mutability": "mutable", + "name": "zzz", + "nameLocation": "20909:3:5", + "nodeType": "VariableDeclaration", + "scope": 1940, + "src": "20901:11:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1886, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20901:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1888, + "nodeType": "VariableDeclarationStatement", + "src": "20901:11:5" + }, + { + "assignments": [ + 1890 + ], + "declarations": [ + { + "constant": false, + "id": 1890, + "mutability": "mutable", + "name": "index", + "nameLocation": "20930:5:5", + "nodeType": "VariableDeclaration", + "scope": 1940, + "src": "20922:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1889, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20922:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1892, + "initialValue": { + "hexValue": "323535", + "id": 1891, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20938:3:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_255_by_1", + "typeString": "int_const 255" + }, + "value": "255" + }, + "nodeType": "VariableDeclarationStatement", + "src": "20922:19:5" + }, + { + "assignments": [ + 1898 + ], + "declarations": [ + { + "constant": false, + "id": 1898, + "mutability": "mutable", + "name": "T", + "nameLocation": "20969:1:5", + "nodeType": "VariableDeclaration", + "scope": 1940, + "src": "20951:19:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6]" + }, + "typeName": { + "baseType": { + "id": 1896, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20951:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1897, + "length": { + "hexValue": "36", + "id": 1895, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20959:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_6_by_1", + "typeString": "int_const 6" + }, + "value": "6" + }, + "nodeType": "ArrayTypeName", + "src": "20951:10:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_storage_ptr", + "typeString": "uint256[6]" + } + }, + "visibility": "internal" + } + ], + "id": 1899, + "nodeType": "VariableDeclarationStatement", + "src": "20951:19:5" + }, + { + "assignments": [ + 1905 + ], + "declarations": [ + { + "constant": false, + "id": 1905, + "mutability": "mutable", + "name": "H", + "nameLocation": "20998:1:5", + "nodeType": "VariableDeclaration", + "scope": 1940, + "src": "20980:19:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr", + "typeString": "uint256[2]" + }, + "typeName": { + "baseType": { + "id": 1903, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20980:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1904, + "length": { + "hexValue": "32", + "id": 1902, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20988:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "ArrayTypeName", + "src": "20980:10:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr", + "typeString": "uint256[2]" + } + }, + "visibility": "internal" + } + ], + "id": 1906, + "nodeType": "VariableDeclarationStatement", + "src": "20980:19:5" + }, + { + "id": 1935, + "nodeType": "UncheckedBlock", + "src": "21011:6048:5", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1913, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1909, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1907, + "name": "scalar_u", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1874, + "src": "21039:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1908, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21051:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "21039:13:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1912, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1910, + "name": "scalar_v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1876, + "src": "21056:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1911, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21068:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "21056:13:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "21039:30:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1918, + "nodeType": "IfStatement", + "src": "21035:48:5", + "trueBody": { + "expression": { + "components": [ + { + "hexValue": "30", + "id": 1914, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21079:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "hexValue": "30", + "id": 1915, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21081:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 1916, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "21078:5:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_rational_0_by_1_$", + "typeString": "tuple(int_const 0,int_const 0)" + } + }, + "functionReturnParameters": 1882, + "id": 1917, + "nodeType": "Return", + "src": "21071:12:5" + } + }, + { + "expression": { + "id": 1932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "components": [ + { + "baseExpression": { + "id": 1919, + "name": "H", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1905, + "src": "21099:1:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr", + "typeString": "uint256[2] memory" + } + }, + "id": 1921, + "indexExpression": { + "hexValue": "30", + "id": 1920, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21101:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "21099:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "baseExpression": { + "id": 1922, + "name": "H", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1905, + "src": "21105:1:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr", + "typeString": "uint256[2] memory" + } + }, + "id": 1924, + "indexExpression": { + "hexValue": "31", + "id": 1923, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21107:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "21105:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1925, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "21098:12:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1927, + "name": "gx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "21123:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1928, + "name": "gy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 988, + "src": "21127:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1929, + "name": "Q0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1870, + "src": "21131:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1930, + "name": "Q1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1872, + "src": "21135:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1926, + "name": "ecAff_add", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1773, + "src": "21113:9:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256,uint256) view returns (uint256,uint256)" + } + }, + "id": 1931, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21113:25:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "src": "21098:40:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1933, + "nodeType": "ExpressionStatement", + "src": "21098:40:5" + }, + { + "AST": { + "nativeSrc": "21216:5818:5", + "nodeType": "YulBlock", + "src": "21216:5818:5", + "statements": [ + { + "body": { + "nativeSrc": "21495:2:5", + "nodeType": "YulBlock", + "src": "21495:2:5", + "statements": [] + }, + "condition": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "21327:2:5", + "nodeType": "YulIdentifier", + "src": "21327:2:5" + }, + { + "kind": "number", + "nativeSrc": "21331:1:5", + "nodeType": "YulLiteral", + "src": "21331:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "21324:2:5", + "nodeType": "YulIdentifier", + "src": "21324:2:5" + }, + "nativeSrc": "21324:9:5", + "nodeType": "YulFunctionCall", + "src": "21324:9:5" + }, + "nativeSrc": "21234:263:5", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "21334:160:5", + "nodeType": "YulBlock", + "src": "21334:160:5", + "statements": [ + { + "nativeSrc": "21356:22:5", + "nodeType": "YulAssignment", + "src": "21356:22:5", + "value": { + "arguments": [ + { + "name": "index", + "nativeSrc": "21369:5:5", + "nodeType": "YulIdentifier", + "src": "21369:5:5" + }, + { + "kind": "number", + "nativeSrc": "21376:1:5", + "nodeType": "YulLiteral", + "src": "21376:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "21365:3:5", + "nodeType": "YulIdentifier", + "src": "21365:3:5" + }, + "nativeSrc": "21365:13:5", + "nodeType": "YulFunctionCall", + "src": "21365:13:5" + }, + "variableNames": [ + { + "name": "index", + "nativeSrc": "21356:5:5", + "nodeType": "YulIdentifier", + "src": "21356:5:5" + } + ] + }, + { + "nativeSrc": "21399:77:5", + "nodeType": "YulAssignment", + "src": "21399:77:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21413:1:5", + "nodeType": "YulLiteral", + "src": "21413:1:5", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "21424:5:5", + "nodeType": "YulIdentifier", + "src": "21424:5:5" + }, + { + "name": "scalar_v", + "nativeSrc": "21431:8:5", + "nodeType": "YulIdentifier", + "src": "21431:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "21420:3:5", + "nodeType": "YulIdentifier", + "src": "21420:3:5" + }, + "nativeSrc": "21420:20:5", + "nodeType": "YulFunctionCall", + "src": "21420:20:5" + }, + { + "kind": "number", + "nativeSrc": "21442:1:5", + "nodeType": "YulLiteral", + "src": "21442:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "21416:3:5", + "nodeType": "YulIdentifier", + "src": "21416:3:5" + }, + "nativeSrc": "21416:28:5", + "nodeType": "YulFunctionCall", + "src": "21416:28:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "21409:3:5", + "nodeType": "YulIdentifier", + "src": "21409:3:5" + }, + "nativeSrc": "21409:36:5", + "nodeType": "YulFunctionCall", + "src": "21409:36:5" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "21455:5:5", + "nodeType": "YulIdentifier", + "src": "21455:5:5" + }, + { + "name": "scalar_u", + "nativeSrc": "21462:8:5", + "nodeType": "YulIdentifier", + "src": "21462:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "21451:3:5", + "nodeType": "YulIdentifier", + "src": "21451:3:5" + }, + "nativeSrc": "21451:20:5", + "nodeType": "YulFunctionCall", + "src": "21451:20:5" + }, + { + "kind": "number", + "nativeSrc": "21473:1:5", + "nodeType": "YulLiteral", + "src": "21473:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "21447:3:5", + "nodeType": "YulIdentifier", + "src": "21447:3:5" + }, + "nativeSrc": "21447:28:5", + "nodeType": "YulFunctionCall", + "src": "21447:28:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21405:3:5", + "nodeType": "YulIdentifier", + "src": "21405:3:5" + }, + "nativeSrc": "21405:71:5", + "nodeType": "YulFunctionCall", + "src": "21405:71:5" + }, + "variableNames": [ + { + "name": "T4", + "nativeSrc": "21399:2:5", + "nodeType": "YulIdentifier", + "src": "21399:2:5" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "21238:85:5", + "nodeType": "YulBlock", + "src": "21238:85:5", + "statements": [ + { + "nativeSrc": "21240:81:5", + "nodeType": "YulVariableDeclaration", + "src": "21240:81:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21258:1:5", + "nodeType": "YulLiteral", + "src": "21258:1:5", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "21269:5:5", + "nodeType": "YulIdentifier", + "src": "21269:5:5" + }, + { + "name": "scalar_v", + "nativeSrc": "21276:8:5", + "nodeType": "YulIdentifier", + "src": "21276:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "21265:3:5", + "nodeType": "YulIdentifier", + "src": "21265:3:5" + }, + "nativeSrc": "21265:20:5", + "nodeType": "YulFunctionCall", + "src": "21265:20:5" + }, + { + "kind": "number", + "nativeSrc": "21287:1:5", + "nodeType": "YulLiteral", + "src": "21287:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "21261:3:5", + "nodeType": "YulIdentifier", + "src": "21261:3:5" + }, + "nativeSrc": "21261:28:5", + "nodeType": "YulFunctionCall", + "src": "21261:28:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "21254:3:5", + "nodeType": "YulIdentifier", + "src": "21254:3:5" + }, + "nativeSrc": "21254:36:5", + "nodeType": "YulFunctionCall", + "src": "21254:36:5" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "21300:5:5", + "nodeType": "YulIdentifier", + "src": "21300:5:5" + }, + { + "name": "scalar_u", + "nativeSrc": "21307:8:5", + "nodeType": "YulIdentifier", + "src": "21307:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "21296:3:5", + "nodeType": "YulIdentifier", + "src": "21296:3:5" + }, + "nativeSrc": "21296:20:5", + "nodeType": "YulFunctionCall", + "src": "21296:20:5" + }, + { + "kind": "number", + "nativeSrc": "21318:1:5", + "nodeType": "YulLiteral", + "src": "21318:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "21292:3:5", + "nodeType": "YulIdentifier", + "src": "21292:3:5" + }, + "nativeSrc": "21292:28:5", + "nodeType": "YulFunctionCall", + "src": "21292:28:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21250:3:5", + "nodeType": "YulIdentifier", + "src": "21250:3:5" + }, + "nativeSrc": "21250:71:5", + "nodeType": "YulFunctionCall", + "src": "21250:71:5" + }, + "variables": [ + { + "name": "T4", + "nativeSrc": "21244:2:5", + "nodeType": "YulTypedName", + "src": "21244:2:5", + "type": "" + } + ] + } + ] + }, + "src": "21234:263:5" + }, + { + "nativeSrc": "21514:77:5", + "nodeType": "YulAssignment", + "src": "21514:77:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21528:1:5", + "nodeType": "YulLiteral", + "src": "21528:1:5", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "21539:5:5", + "nodeType": "YulIdentifier", + "src": "21539:5:5" + }, + { + "name": "scalar_v", + "nativeSrc": "21546:8:5", + "nodeType": "YulIdentifier", + "src": "21546:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "21535:3:5", + "nodeType": "YulIdentifier", + "src": "21535:3:5" + }, + "nativeSrc": "21535:20:5", + "nodeType": "YulFunctionCall", + "src": "21535:20:5" + }, + { + "kind": "number", + "nativeSrc": "21557:1:5", + "nodeType": "YulLiteral", + "src": "21557:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "21531:3:5", + "nodeType": "YulIdentifier", + "src": "21531:3:5" + }, + "nativeSrc": "21531:28:5", + "nodeType": "YulFunctionCall", + "src": "21531:28:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "21524:3:5", + "nodeType": "YulIdentifier", + "src": "21524:3:5" + }, + "nativeSrc": "21524:36:5", + "nodeType": "YulFunctionCall", + "src": "21524:36:5" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "21570:5:5", + "nodeType": "YulIdentifier", + "src": "21570:5:5" + }, + { + "name": "scalar_u", + "nativeSrc": "21577:8:5", + "nodeType": "YulIdentifier", + "src": "21577:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "21566:3:5", + "nodeType": "YulIdentifier", + "src": "21566:3:5" + }, + "nativeSrc": "21566:20:5", + "nodeType": "YulFunctionCall", + "src": "21566:20:5" + }, + { + "kind": "number", + "nativeSrc": "21588:1:5", + "nodeType": "YulLiteral", + "src": "21588:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "21562:3:5", + "nodeType": "YulIdentifier", + "src": "21562:3:5" + }, + "nativeSrc": "21562:28:5", + "nodeType": "YulFunctionCall", + "src": "21562:28:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21520:3:5", + "nodeType": "YulIdentifier", + "src": "21520:3:5" + }, + "nativeSrc": "21520:71:5", + "nodeType": "YulFunctionCall", + "src": "21520:71:5" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "21514:2:5", + "nodeType": "YulIdentifier", + "src": "21514:2:5" + } + ] + }, + { + "body": { + "nativeSrc": "21622:75:5", + "nodeType": "YulBlock", + "src": "21622:75:5", + "statements": [ + { + "nativeSrc": "21644:7:5", + "nodeType": "YulAssignment", + "src": "21644:7:5", + "value": { + "name": "gx", + "nativeSrc": "21649:2:5", + "nodeType": "YulIdentifier", + "src": "21649:2:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "21644:1:5", + "nodeType": "YulIdentifier", + "src": "21644:1:5" + } + ] + }, + { + "nativeSrc": "21672:7:5", + "nodeType": "YulAssignment", + "src": "21672:7:5", + "value": { + "name": "gy", + "nativeSrc": "21677:2:5", + "nodeType": "YulIdentifier", + "src": "21677:2:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "21672:1:5", + "nodeType": "YulIdentifier", + "src": "21672:1:5" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "zz", + "nativeSrc": "21615:2:5", + "nodeType": "YulIdentifier", + "src": "21615:2:5" + }, + { + "kind": "number", + "nativeSrc": "21619:1:5", + "nodeType": "YulLiteral", + "src": "21619:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "21612:2:5", + "nodeType": "YulIdentifier", + "src": "21612:2:5" + }, + "nativeSrc": "21612:9:5", + "nodeType": "YulFunctionCall", + "src": "21612:9:5" + }, + "nativeSrc": "21609:88:5", + "nodeType": "YulIf", + "src": "21609:88:5" + }, + { + "body": { + "nativeSrc": "21727:75:5", + "nodeType": "YulBlock", + "src": "21727:75:5", + "statements": [ + { + "nativeSrc": "21749:7:5", + "nodeType": "YulAssignment", + "src": "21749:7:5", + "value": { + "name": "Q0", + "nativeSrc": "21754:2:5", + "nodeType": "YulIdentifier", + "src": "21754:2:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "21749:1:5", + "nodeType": "YulIdentifier", + "src": "21749:1:5" + } + ] + }, + { + "nativeSrc": "21777:7:5", + "nodeType": "YulAssignment", + "src": "21777:7:5", + "value": { + "name": "Q1", + "nativeSrc": "21782:2:5", + "nodeType": "YulIdentifier", + "src": "21782:2:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "21777:1:5", + "nodeType": "YulIdentifier", + "src": "21777:1:5" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "zz", + "nativeSrc": "21720:2:5", + "nodeType": "YulIdentifier", + "src": "21720:2:5" + }, + { + "kind": "number", + "nativeSrc": "21724:1:5", + "nodeType": "YulLiteral", + "src": "21724:1:5", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "21717:2:5", + "nodeType": "YulIdentifier", + "src": "21717:2:5" + }, + "nativeSrc": "21717:9:5", + "nodeType": "YulFunctionCall", + "src": "21717:9:5" + }, + "nativeSrc": "21714:88:5", + "nodeType": "YulIf", + "src": "21714:88:5" + }, + { + "body": { + "nativeSrc": "21832:95:5", + "nodeType": "YulBlock", + "src": "21832:95:5", + "statements": [ + { + "nativeSrc": "21854:21:5", + "nodeType": "YulAssignment", + "src": "21854:21:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "H", + "nativeSrc": "21869:1:5", + "nodeType": "YulIdentifier", + "src": "21869:1:5" + }, + { + "kind": "number", + "nativeSrc": "21871:2:5", + "nodeType": "YulLiteral", + "src": "21871:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21865:3:5", + "nodeType": "YulIdentifier", + "src": "21865:3:5" + }, + "nativeSrc": "21865:9:5", + "nodeType": "YulFunctionCall", + "src": "21865:9:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "21859:5:5", + "nodeType": "YulIdentifier", + "src": "21859:5:5" + }, + "nativeSrc": "21859:16:5", + "nodeType": "YulFunctionCall", + "src": "21859:16:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "21854:1:5", + "nodeType": "YulIdentifier", + "src": "21854:1:5" + } + ] + }, + { + "nativeSrc": "21896:13:5", + "nodeType": "YulAssignment", + "src": "21896:13:5", + "value": { + "arguments": [ + { + "name": "H", + "nativeSrc": "21907:1:5", + "nodeType": "YulIdentifier", + "src": "21907:1:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "21901:5:5", + "nodeType": "YulIdentifier", + "src": "21901:5:5" + }, + "nativeSrc": "21901:8:5", + "nodeType": "YulFunctionCall", + "src": "21901:8:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "21896:1:5", + "nodeType": "YulIdentifier", + "src": "21896:1:5" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "zz", + "nativeSrc": "21825:2:5", + "nodeType": "YulIdentifier", + "src": "21825:2:5" + }, + { + "kind": "number", + "nativeSrc": "21829:1:5", + "nodeType": "YulLiteral", + "src": "21829:1:5", + "type": "", + "value": "3" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "21822:2:5", + "nodeType": "YulIdentifier", + "src": "21822:2:5" + }, + "nativeSrc": "21822:9:5", + "nodeType": "YulFunctionCall", + "src": "21822:9:5" + }, + "nativeSrc": "21819:108:5", + "nodeType": "YulIf", + "src": "21819:108:5" + }, + { + "nativeSrc": "21945:22:5", + "nodeType": "YulAssignment", + "src": "21945:22:5", + "value": { + "arguments": [ + { + "name": "index", + "nativeSrc": "21958:5:5", + "nodeType": "YulIdentifier", + "src": "21958:5:5" + }, + { + "kind": "number", + "nativeSrc": "21965:1:5", + "nodeType": "YulLiteral", + "src": "21965:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "21954:3:5", + "nodeType": "YulIdentifier", + "src": "21954:3:5" + }, + "nativeSrc": "21954:13:5", + "nodeType": "YulFunctionCall", + "src": "21954:13:5" + }, + "variableNames": [ + { + "name": "index", + "nativeSrc": "21945:5:5", + "nodeType": "YulIdentifier", + "src": "21945:5:5" + } + ] + }, + { + "nativeSrc": "21984:7:5", + "nodeType": "YulAssignment", + "src": "21984:7:5", + "value": { + "kind": "number", + "nativeSrc": "21990:1:5", + "nodeType": "YulLiteral", + "src": "21990:1:5", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "21984:2:5", + "nodeType": "YulIdentifier", + "src": "21984:2:5" + } + ] + }, + { + "nativeSrc": "22008:8:5", + "nodeType": "YulAssignment", + "src": "22008:8:5", + "value": { + "kind": "number", + "nativeSrc": "22015:1:5", + "nodeType": "YulLiteral", + "src": "22015:1:5", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "zzz", + "nativeSrc": "22008:3:5", + "nodeType": "YulIdentifier", + "src": "22008:3:5" + } + ] + }, + { + "body": { + "nativeSrc": "22087:3992:5", + "nodeType": "YulBlock", + "src": "22087:3992:5", + "statements": [ + { + "nativeSrc": "22149:25:5", + "nodeType": "YulVariableDeclaration", + "src": "22149:25:5", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22166:1:5", + "nodeType": "YulLiteral", + "src": "22166:1:5", + "type": "", + "value": "2" + }, + { + "name": "Y", + "nativeSrc": "22169:1:5", + "nodeType": "YulIdentifier", + "src": "22169:1:5" + }, + { + "name": "p", + "nativeSrc": "22172:1:5", + "nodeType": "YulIdentifier", + "src": "22172:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "22159:6:5", + "nodeType": "YulIdentifier", + "src": "22159:6:5" + }, + "nativeSrc": "22159:15:5", + "nodeType": "YulFunctionCall", + "src": "22159:15:5" + }, + "variables": [ + { + "name": "T1", + "nativeSrc": "22153:2:5", + "nodeType": "YulTypedName", + "src": "22153:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "22214:27:5", + "nodeType": "YulVariableDeclaration", + "src": "22214:27:5", + "value": { + "arguments": [ + { + "name": "T1", + "nativeSrc": "22231:2:5", + "nodeType": "YulIdentifier", + "src": "22231:2:5" + }, + { + "name": "T1", + "nativeSrc": "22235:2:5", + "nodeType": "YulIdentifier", + "src": "22235:2:5" + }, + { + "name": "p", + "nativeSrc": "22239:1:5", + "nodeType": "YulIdentifier", + "src": "22239:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "22224:6:5", + "nodeType": "YulIdentifier", + "src": "22224:6:5" + }, + "nativeSrc": "22224:17:5", + "nodeType": "YulFunctionCall", + "src": "22224:17:5" + }, + "variables": [ + { + "name": "T2", + "nativeSrc": "22218:2:5", + "nodeType": "YulTypedName", + "src": "22218:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "22271:26:5", + "nodeType": "YulVariableDeclaration", + "src": "22271:26:5", + "value": { + "arguments": [ + { + "name": "X", + "nativeSrc": "22288:1:5", + "nodeType": "YulIdentifier", + "src": "22288:1:5" + }, + { + "name": "T2", + "nativeSrc": "22291:2:5", + "nodeType": "YulIdentifier", + "src": "22291:2:5" + }, + { + "name": "p", + "nativeSrc": "22295:1:5", + "nodeType": "YulIdentifier", + "src": "22295:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "22281:6:5", + "nodeType": "YulIdentifier", + "src": "22281:6:5" + }, + "nativeSrc": "22281:16:5", + "nodeType": "YulFunctionCall", + "src": "22281:16:5" + }, + "variables": [ + { + "name": "T3", + "nativeSrc": "22275:2:5", + "nodeType": "YulTypedName", + "src": "22275:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "22330:23:5", + "nodeType": "YulAssignment", + "src": "22330:23:5", + "value": { + "arguments": [ + { + "name": "T1", + "nativeSrc": "22343:2:5", + "nodeType": "YulIdentifier", + "src": "22343:2:5" + }, + { + "name": "T2", + "nativeSrc": "22347:2:5", + "nodeType": "YulIdentifier", + "src": "22347:2:5" + }, + { + "name": "p", + "nativeSrc": "22351:1:5", + "nodeType": "YulIdentifier", + "src": "22351:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "22336:6:5", + "nodeType": "YulIdentifier", + "src": "22336:6:5" + }, + "nativeSrc": "22336:17:5", + "nodeType": "YulFunctionCall", + "src": "22336:17:5" + }, + "variableNames": [ + { + "name": "T1", + "nativeSrc": "22330:2:5", + "nodeType": "YulIdentifier", + "src": "22330:2:5" + } + ] + }, + { + "nativeSrc": "22382:77:5", + "nodeType": "YulVariableDeclaration", + "src": "22382:77:5", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22399:1:5", + "nodeType": "YulLiteral", + "src": "22399:1:5", + "type": "", + "value": "3" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "X", + "nativeSrc": "22416:1:5", + "nodeType": "YulIdentifier", + "src": "22416:1:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "22423:1:5", + "nodeType": "YulIdentifier", + "src": "22423:1:5" + }, + { + "name": "zz", + "nativeSrc": "22426:2:5", + "nodeType": "YulIdentifier", + "src": "22426:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "22419:3:5", + "nodeType": "YulIdentifier", + "src": "22419:3:5" + }, + "nativeSrc": "22419:10:5", + "nodeType": "YulFunctionCall", + "src": "22419:10:5" + }, + { + "name": "p", + "nativeSrc": "22431:1:5", + "nodeType": "YulIdentifier", + "src": "22431:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "22409:6:5", + "nodeType": "YulIdentifier", + "src": "22409:6:5" + }, + "nativeSrc": "22409:24:5", + "nodeType": "YulFunctionCall", + "src": "22409:24:5" + }, + { + "arguments": [ + { + "name": "X", + "nativeSrc": "22442:1:5", + "nodeType": "YulIdentifier", + "src": "22442:1:5" + }, + { + "name": "zz", + "nativeSrc": "22445:2:5", + "nodeType": "YulIdentifier", + "src": "22445:2:5" + }, + { + "name": "p", + "nativeSrc": "22449:1:5", + "nodeType": "YulIdentifier", + "src": "22449:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "22435:6:5", + "nodeType": "YulIdentifier", + "src": "22435:6:5" + }, + "nativeSrc": "22435:16:5", + "nodeType": "YulFunctionCall", + "src": "22435:16:5" + }, + { + "name": "p", + "nativeSrc": "22453:1:5", + "nodeType": "YulIdentifier", + "src": "22453:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "22402:6:5", + "nodeType": "YulIdentifier", + "src": "22402:6:5" + }, + "nativeSrc": "22402:53:5", + "nodeType": "YulFunctionCall", + "src": "22402:53:5" + }, + { + "name": "p", + "nativeSrc": "22457:1:5", + "nodeType": "YulIdentifier", + "src": "22457:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "22392:6:5", + "nodeType": "YulIdentifier", + "src": "22392:6:5" + }, + "nativeSrc": "22392:67:5", + "nodeType": "YulFunctionCall", + "src": "22392:67:5" + }, + "variables": [ + { + "name": "T4", + "nativeSrc": "22386:2:5", + "nodeType": "YulTypedName", + "src": "22386:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "22504:25:5", + "nodeType": "YulAssignment", + "src": "22504:25:5", + "value": { + "arguments": [ + { + "name": "T1", + "nativeSrc": "22518:2:5", + "nodeType": "YulIdentifier", + "src": "22518:2:5" + }, + { + "name": "zzz", + "nativeSrc": "22522:3:5", + "nodeType": "YulIdentifier", + "src": "22522:3:5" + }, + { + "name": "p", + "nativeSrc": "22527:1:5", + "nodeType": "YulIdentifier", + "src": "22527:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "22511:6:5", + "nodeType": "YulIdentifier", + "src": "22511:6:5" + }, + "nativeSrc": "22511:18:5", + "nodeType": "YulFunctionCall", + "src": "22511:18:5" + }, + "variableNames": [ + { + "name": "zzz", + "nativeSrc": "22504:3:5", + "nodeType": "YulIdentifier", + "src": "22504:3:5" + } + ] + }, + { + "nativeSrc": "22564:23:5", + "nodeType": "YulAssignment", + "src": "22564:23:5", + "value": { + "arguments": [ + { + "name": "T2", + "nativeSrc": "22577:2:5", + "nodeType": "YulIdentifier", + "src": "22577:2:5" + }, + { + "name": "zz", + "nativeSrc": "22581:2:5", + "nodeType": "YulIdentifier", + "src": "22581:2:5" + }, + { + "name": "p", + "nativeSrc": "22585:1:5", + "nodeType": "YulIdentifier", + "src": "22585:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "22570:6:5", + "nodeType": "YulIdentifier", + "src": "22570:6:5" + }, + "nativeSrc": "22570:17:5", + "nodeType": "YulFunctionCall", + "src": "22570:17:5" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "22564:2:5", + "nodeType": "YulIdentifier", + "src": "22564:2:5" + } + ] + }, + { + "nativeSrc": "22629:57:5", + "nodeType": "YulAssignment", + "src": "22629:57:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "T4", + "nativeSrc": "22648:2:5", + "nodeType": "YulIdentifier", + "src": "22648:2:5" + }, + { + "name": "T4", + "nativeSrc": "22652:2:5", + "nodeType": "YulIdentifier", + "src": "22652:2:5" + }, + { + "name": "p", + "nativeSrc": "22656:1:5", + "nodeType": "YulIdentifier", + "src": "22656:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "22641:6:5", + "nodeType": "YulIdentifier", + "src": "22641:6:5" + }, + "nativeSrc": "22641:17:5", + "nodeType": "YulFunctionCall", + "src": "22641:17:5" + }, + { + "arguments": [ + { + "name": "minus_2", + "nativeSrc": "22667:7:5", + "nodeType": "YulIdentifier", + "src": "22667:7:5" + }, + { + "name": "T3", + "nativeSrc": "22676:2:5", + "nodeType": "YulIdentifier", + "src": "22676:2:5" + }, + { + "name": "p", + "nativeSrc": "22680:1:5", + "nodeType": "YulIdentifier", + "src": "22680:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "22660:6:5", + "nodeType": "YulIdentifier", + "src": "22660:6:5" + }, + "nativeSrc": "22660:22:5", + "nodeType": "YulFunctionCall", + "src": "22660:22:5" + }, + { + "name": "p", + "nativeSrc": "22684:1:5", + "nodeType": "YulIdentifier", + "src": "22684:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "22634:6:5", + "nodeType": "YulIdentifier", + "src": "22634:6:5" + }, + "nativeSrc": "22634:52:5", + "nodeType": "YulFunctionCall", + "src": "22634:52:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "22629:1:5", + "nodeType": "YulIdentifier", + "src": "22629:1:5" + } + ] + }, + { + "nativeSrc": "22719:45:5", + "nodeType": "YulAssignment", + "src": "22719:45:5", + "value": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "22732:2:5", + "nodeType": "YulIdentifier", + "src": "22732:2:5" + }, + { + "arguments": [ + { + "name": "X", + "nativeSrc": "22743:1:5", + "nodeType": "YulIdentifier", + "src": "22743:1:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "22750:1:5", + "nodeType": "YulIdentifier", + "src": "22750:1:5" + }, + { + "name": "T3", + "nativeSrc": "22753:2:5", + "nodeType": "YulIdentifier", + "src": "22753:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "22746:3:5", + "nodeType": "YulIdentifier", + "src": "22746:3:5" + }, + "nativeSrc": "22746:10:5", + "nodeType": "YulFunctionCall", + "src": "22746:10:5" + }, + { + "name": "p", + "nativeSrc": "22758:1:5", + "nodeType": "YulIdentifier", + "src": "22758:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "22736:6:5", + "nodeType": "YulIdentifier", + "src": "22736:6:5" + }, + "nativeSrc": "22736:24:5", + "nodeType": "YulFunctionCall", + "src": "22736:24:5" + }, + { + "name": "p", + "nativeSrc": "22762:1:5", + "nodeType": "YulIdentifier", + "src": "22762:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "22725:6:5", + "nodeType": "YulIdentifier", + "src": "22725:6:5" + }, + "nativeSrc": "22725:39:5", + "nodeType": "YulFunctionCall", + "src": "22725:39:5" + }, + "variableNames": [ + { + "name": "T2", + "nativeSrc": "22719:2:5", + "nodeType": "YulIdentifier", + "src": "22719:2:5" + } + ] + }, + { + "nativeSrc": "22804:36:5", + "nodeType": "YulAssignment", + "src": "22804:36:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "T1", + "nativeSrc": "22823:2:5", + "nodeType": "YulIdentifier", + "src": "22823:2:5" + }, + { + "name": "Y", + "nativeSrc": "22827:1:5", + "nodeType": "YulIdentifier", + "src": "22827:1:5" + }, + { + "name": "p", + "nativeSrc": "22830:1:5", + "nodeType": "YulIdentifier", + "src": "22830:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "22816:6:5", + "nodeType": "YulIdentifier", + "src": "22816:6:5" + }, + "nativeSrc": "22816:16:5", + "nodeType": "YulFunctionCall", + "src": "22816:16:5" + }, + { + "name": "T2", + "nativeSrc": "22834:2:5", + "nodeType": "YulIdentifier", + "src": "22834:2:5" + }, + { + "name": "p", + "nativeSrc": "22838:1:5", + "nodeType": "YulIdentifier", + "src": "22838:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "22809:6:5", + "nodeType": "YulIdentifier", + "src": "22809:6:5" + }, + "nativeSrc": "22809:31:5", + "nodeType": "YulFunctionCall", + "src": "22809:31:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "22804:1:5", + "nodeType": "YulIdentifier", + "src": "22804:1:5" + } + ] + }, + { + "nativeSrc": "22926:3135:5", + "nodeType": "YulBlock", + "src": "22926:3135:5", + "statements": [ + { + "nativeSrc": "22993:77:5", + "nodeType": "YulAssignment", + "src": "22993:77:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23007:1:5", + "nodeType": "YulLiteral", + "src": "23007:1:5", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "23018:5:5", + "nodeType": "YulIdentifier", + "src": "23018:5:5" + }, + { + "name": "scalar_v", + "nativeSrc": "23025:8:5", + "nodeType": "YulIdentifier", + "src": "23025:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "23014:3:5", + "nodeType": "YulIdentifier", + "src": "23014:3:5" + }, + "nativeSrc": "23014:20:5", + "nodeType": "YulFunctionCall", + "src": "23014:20:5" + }, + { + "kind": "number", + "nativeSrc": "23036:1:5", + "nodeType": "YulLiteral", + "src": "23036:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "23010:3:5", + "nodeType": "YulIdentifier", + "src": "23010:3:5" + }, + "nativeSrc": "23010:28:5", + "nodeType": "YulFunctionCall", + "src": "23010:28:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "23003:3:5", + "nodeType": "YulIdentifier", + "src": "23003:3:5" + }, + "nativeSrc": "23003:36:5", + "nodeType": "YulFunctionCall", + "src": "23003:36:5" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "23049:5:5", + "nodeType": "YulIdentifier", + "src": "23049:5:5" + }, + { + "name": "scalar_u", + "nativeSrc": "23056:8:5", + "nodeType": "YulIdentifier", + "src": "23056:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "23045:3:5", + "nodeType": "YulIdentifier", + "src": "23045:3:5" + }, + "nativeSrc": "23045:20:5", + "nodeType": "YulFunctionCall", + "src": "23045:20:5" + }, + { + "kind": "number", + "nativeSrc": "23067:1:5", + "nodeType": "YulLiteral", + "src": "23067:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "23041:3:5", + "nodeType": "YulIdentifier", + "src": "23041:3:5" + }, + "nativeSrc": "23041:28:5", + "nodeType": "YulFunctionCall", + "src": "23041:28:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22999:3:5", + "nodeType": "YulIdentifier", + "src": "22999:3:5" + }, + "nativeSrc": "22999:71:5", + "nodeType": "YulFunctionCall", + "src": "22999:71:5" + }, + "variableNames": [ + { + "name": "T4", + "nativeSrc": "22993:2:5", + "nodeType": "YulIdentifier", + "src": "22993:2:5" + } + ] + }, + { + "body": { + "nativeSrc": "23110:134:5", + "nodeType": "YulBlock", + "src": "23110:134:5", + "statements": [ + { + "nativeSrc": "23140:14:5", + "nodeType": "YulAssignment", + "src": "23140:14:5", + "value": { + "arguments": [ + { + "name": "p", + "nativeSrc": "23149:1:5", + "nodeType": "YulIdentifier", + "src": "23149:1:5" + }, + { + "name": "Y", + "nativeSrc": "23152:1:5", + "nodeType": "YulIdentifier", + "src": "23152:1:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "23145:3:5", + "nodeType": "YulIdentifier", + "src": "23145:3:5" + }, + "nativeSrc": "23145:9:5", + "nodeType": "YulFunctionCall", + "src": "23145:9:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "23140:1:5", + "nodeType": "YulIdentifier", + "src": "23140:1:5" + } + ] + }, + { + "nativeSrc": "23210:8:5", + "nodeType": "YulContinue", + "src": "23210:8:5" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "23106:2:5", + "nodeType": "YulIdentifier", + "src": "23106:2:5" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "23099:6:5", + "nodeType": "YulIdentifier", + "src": "23099:6:5" + }, + "nativeSrc": "23099:10:5", + "nodeType": "YulFunctionCall", + "src": "23099:10:5" + }, + "nativeSrc": "23096:148:5", + "nodeType": "YulIf", + "src": "23096:148:5" + }, + { + "body": { + "nativeSrc": "23295:101:5", + "nodeType": "YulBlock", + "src": "23295:101:5", + "statements": [ + { + "nativeSrc": "23325:8:5", + "nodeType": "YulAssignment", + "src": "23325:8:5", + "value": { + "name": "gx", + "nativeSrc": "23331:2:5", + "nodeType": "YulIdentifier", + "src": "23331:2:5" + }, + "variableNames": [ + { + "name": "T1", + "nativeSrc": "23325:2:5", + "nodeType": "YulIdentifier", + "src": "23325:2:5" + } + ] + }, + { + "nativeSrc": "23362:8:5", + "nodeType": "YulAssignment", + "src": "23362:8:5", + "value": { + "name": "gy", + "nativeSrc": "23368:2:5", + "nodeType": "YulIdentifier", + "src": "23368:2:5" + }, + "variableNames": [ + { + "name": "T2", + "nativeSrc": "23362:2:5", + "nodeType": "YulIdentifier", + "src": "23362:2:5" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "23288:2:5", + "nodeType": "YulIdentifier", + "src": "23288:2:5" + }, + { + "kind": "number", + "nativeSrc": "23292:1:5", + "nodeType": "YulLiteral", + "src": "23292:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "23285:2:5", + "nodeType": "YulIdentifier", + "src": "23285:2:5" + }, + "nativeSrc": "23285:9:5", + "nodeType": "YulFunctionCall", + "src": "23285:9:5" + }, + "nativeSrc": "23282:114:5", + "nodeType": "YulIf", + "src": "23282:114:5" + }, + { + "body": { + "nativeSrc": "23434:101:5", + "nodeType": "YulBlock", + "src": "23434:101:5", + "statements": [ + { + "nativeSrc": "23464:8:5", + "nodeType": "YulAssignment", + "src": "23464:8:5", + "value": { + "name": "Q0", + "nativeSrc": "23470:2:5", + "nodeType": "YulIdentifier", + "src": "23470:2:5" + }, + "variableNames": [ + { + "name": "T1", + "nativeSrc": "23464:2:5", + "nodeType": "YulIdentifier", + "src": "23464:2:5" + } + ] + }, + { + "nativeSrc": "23501:8:5", + "nodeType": "YulAssignment", + "src": "23501:8:5", + "value": { + "name": "Q1", + "nativeSrc": "23507:2:5", + "nodeType": "YulIdentifier", + "src": "23507:2:5" + }, + "variableNames": [ + { + "name": "T2", + "nativeSrc": "23501:2:5", + "nodeType": "YulIdentifier", + "src": "23501:2:5" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "23427:2:5", + "nodeType": "YulIdentifier", + "src": "23427:2:5" + }, + { + "kind": "number", + "nativeSrc": "23431:1:5", + "nodeType": "YulLiteral", + "src": "23431:1:5", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "23424:2:5", + "nodeType": "YulIdentifier", + "src": "23424:2:5" + }, + "nativeSrc": "23424:9:5", + "nodeType": "YulFunctionCall", + "src": "23424:9:5" + }, + "nativeSrc": "23421:114:5", + "nodeType": "YulIf", + "src": "23421:114:5" + }, + { + "body": { + "nativeSrc": "23573:121:5", + "nodeType": "YulBlock", + "src": "23573:121:5", + "statements": [ + { + "nativeSrc": "23603:14:5", + "nodeType": "YulAssignment", + "src": "23603:14:5", + "value": { + "arguments": [ + { + "name": "H", + "nativeSrc": "23615:1:5", + "nodeType": "YulIdentifier", + "src": "23615:1:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "23609:5:5", + "nodeType": "YulIdentifier", + "src": "23609:5:5" + }, + "nativeSrc": "23609:8:5", + "nodeType": "YulFunctionCall", + "src": "23609:8:5" + }, + "variableNames": [ + { + "name": "T1", + "nativeSrc": "23603:2:5", + "nodeType": "YulIdentifier", + "src": "23603:2:5" + } + ] + }, + { + "nativeSrc": "23646:22:5", + "nodeType": "YulAssignment", + "src": "23646:22:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "H", + "nativeSrc": "23662:1:5", + "nodeType": "YulIdentifier", + "src": "23662:1:5" + }, + { + "kind": "number", + "nativeSrc": "23664:2:5", + "nodeType": "YulLiteral", + "src": "23664:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23658:3:5", + "nodeType": "YulIdentifier", + "src": "23658:3:5" + }, + "nativeSrc": "23658:9:5", + "nodeType": "YulFunctionCall", + "src": "23658:9:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "23652:5:5", + "nodeType": "YulIdentifier", + "src": "23652:5:5" + }, + "nativeSrc": "23652:16:5", + "nodeType": "YulFunctionCall", + "src": "23652:16:5" + }, + "variableNames": [ + { + "name": "T2", + "nativeSrc": "23646:2:5", + "nodeType": "YulIdentifier", + "src": "23646:2:5" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "23566:2:5", + "nodeType": "YulIdentifier", + "src": "23566:2:5" + }, + { + "kind": "number", + "nativeSrc": "23570:1:5", + "nodeType": "YulLiteral", + "src": "23570:1:5", + "type": "", + "value": "3" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "23563:2:5", + "nodeType": "YulIdentifier", + "src": "23563:2:5" + }, + "nativeSrc": "23563:9:5", + "nodeType": "YulFunctionCall", + "src": "23563:9:5" + }, + "nativeSrc": "23560:134:5", + "nodeType": "YulIf", + "src": "23560:134:5" + }, + { + "body": { + "nativeSrc": "23733:209:5", + "nodeType": "YulBlock", + "src": "23733:209:5", + "statements": [ + { + "nativeSrc": "23763:7:5", + "nodeType": "YulAssignment", + "src": "23763:7:5", + "value": { + "name": "T1", + "nativeSrc": "23768:2:5", + "nodeType": "YulIdentifier", + "src": "23768:2:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "23763:1:5", + "nodeType": "YulIdentifier", + "src": "23763:1:5" + } + ] + }, + { + "nativeSrc": "23799:7:5", + "nodeType": "YulAssignment", + "src": "23799:7:5", + "value": { + "name": "T2", + "nativeSrc": "23804:2:5", + "nodeType": "YulIdentifier", + "src": "23804:2:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "23799:1:5", + "nodeType": "YulIdentifier", + "src": "23799:1:5" + } + ] + }, + { + "nativeSrc": "23835:7:5", + "nodeType": "YulAssignment", + "src": "23835:7:5", + "value": { + "kind": "number", + "nativeSrc": "23841:1:5", + "nodeType": "YulLiteral", + "src": "23841:1:5", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "23835:2:5", + "nodeType": "YulIdentifier", + "src": "23835:2:5" + } + ] + }, + { + "nativeSrc": "23871:8:5", + "nodeType": "YulAssignment", + "src": "23871:8:5", + "value": { + "kind": "number", + "nativeSrc": "23878:1:5", + "nodeType": "YulLiteral", + "src": "23878:1:5", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "zzz", + "nativeSrc": "23871:3:5", + "nodeType": "YulIdentifier", + "src": "23871:3:5" + } + ] + }, + { + "nativeSrc": "23908:8:5", + "nodeType": "YulContinue", + "src": "23908:8:5" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "zz", + "nativeSrc": "23729:2:5", + "nodeType": "YulIdentifier", + "src": "23729:2:5" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "23722:6:5", + "nodeType": "YulIdentifier", + "src": "23722:6:5" + }, + "nativeSrc": "23722:10:5", + "nodeType": "YulFunctionCall", + "src": "23722:10:5" + }, + "nativeSrc": "23719:223:5", + "nodeType": "YulIf", + "src": "23719:223:5" + }, + { + "nativeSrc": "24085:42:5", + "nodeType": "YulVariableDeclaration", + "src": "24085:42:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "T2", + "nativeSrc": "24109:2:5", + "nodeType": "YulIdentifier", + "src": "24109:2:5" + }, + { + "name": "zzz", + "nativeSrc": "24113:3:5", + "nodeType": "YulIdentifier", + "src": "24113:3:5" + }, + { + "name": "p", + "nativeSrc": "24118:1:5", + "nodeType": "YulIdentifier", + "src": "24118:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "24102:6:5", + "nodeType": "YulIdentifier", + "src": "24102:6:5" + }, + "nativeSrc": "24102:18:5", + "nodeType": "YulFunctionCall", + "src": "24102:18:5" + }, + { + "name": "Y", + "nativeSrc": "24122:1:5", + "nodeType": "YulIdentifier", + "src": "24122:1:5" + }, + { + "name": "p", + "nativeSrc": "24125:1:5", + "nodeType": "YulIdentifier", + "src": "24125:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "24095:6:5", + "nodeType": "YulIdentifier", + "src": "24095:6:5" + }, + "nativeSrc": "24095:32:5", + "nodeType": "YulFunctionCall", + "src": "24095:32:5" + }, + "variables": [ + { + "name": "y2", + "nativeSrc": "24089:2:5", + "nodeType": "YulTypedName", + "src": "24089:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "24156:45:5", + "nodeType": "YulAssignment", + "src": "24156:45:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "T1", + "nativeSrc": "24176:2:5", + "nodeType": "YulIdentifier", + "src": "24176:2:5" + }, + { + "name": "zz", + "nativeSrc": "24180:2:5", + "nodeType": "YulIdentifier", + "src": "24180:2:5" + }, + { + "name": "p", + "nativeSrc": "24184:1:5", + "nodeType": "YulIdentifier", + "src": "24184:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "24169:6:5", + "nodeType": "YulIdentifier", + "src": "24169:6:5" + }, + "nativeSrc": "24169:17:5", + "nodeType": "YulFunctionCall", + "src": "24169:17:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "24192:1:5", + "nodeType": "YulIdentifier", + "src": "24192:1:5" + }, + { + "name": "X", + "nativeSrc": "24195:1:5", + "nodeType": "YulIdentifier", + "src": "24195:1:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "24188:3:5", + "nodeType": "YulIdentifier", + "src": "24188:3:5" + }, + "nativeSrc": "24188:9:5", + "nodeType": "YulFunctionCall", + "src": "24188:9:5" + }, + { + "name": "p", + "nativeSrc": "24199:1:5", + "nodeType": "YulIdentifier", + "src": "24199:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "24162:6:5", + "nodeType": "YulIdentifier", + "src": "24162:6:5" + }, + "nativeSrc": "24162:39:5", + "nodeType": "YulFunctionCall", + "src": "24162:39:5" + }, + "variableNames": [ + { + "name": "T2", + "nativeSrc": "24156:2:5", + "nodeType": "YulIdentifier", + "src": "24156:2:5" + } + ] + }, + { + "body": { + "nativeSrc": "24430:1029:5", + "nodeType": "YulBlock", + "src": "24430:1029:5", + "statements": [ + { + "body": { + "nativeSrc": "24474:959:5", + "nodeType": "YulBlock", + "src": "24474:959:5", + "statements": [ + { + "nativeSrc": "24508:27:5", + "nodeType": "YulAssignment", + "src": "24508:27:5", + "value": { + "arguments": [ + { + "name": "minus_2", + "nativeSrc": "24521:7:5", + "nodeType": "YulIdentifier", + "src": "24521:7:5" + }, + { + "name": "Y", + "nativeSrc": "24530:1:5", + "nodeType": "YulIdentifier", + "src": "24530:1:5" + }, + { + "name": "p", + "nativeSrc": "24533:1:5", + "nodeType": "YulIdentifier", + "src": "24533:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "24514:6:5", + "nodeType": "YulIdentifier", + "src": "24514:6:5" + }, + "nativeSrc": "24514:21:5", + "nodeType": "YulFunctionCall", + "src": "24514:21:5" + }, + "variableNames": [ + { + "name": "T1", + "nativeSrc": "24508:2:5", + "nodeType": "YulIdentifier", + "src": "24508:2:5" + } + ] + }, + { + "nativeSrc": "24587:23:5", + "nodeType": "YulAssignment", + "src": "24587:23:5", + "value": { + "arguments": [ + { + "name": "T1", + "nativeSrc": "24600:2:5", + "nodeType": "YulIdentifier", + "src": "24600:2:5" + }, + { + "name": "T1", + "nativeSrc": "24604:2:5", + "nodeType": "YulIdentifier", + "src": "24604:2:5" + }, + { + "name": "p", + "nativeSrc": "24608:1:5", + "nodeType": "YulIdentifier", + "src": "24608:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "24593:6:5", + "nodeType": "YulIdentifier", + "src": "24593:6:5" + }, + "nativeSrc": "24593:17:5", + "nodeType": "YulFunctionCall", + "src": "24593:17:5" + }, + "variableNames": [ + { + "name": "T2", + "nativeSrc": "24587:2:5", + "nodeType": "YulIdentifier", + "src": "24587:2:5" + } + ] + }, + { + "nativeSrc": "24652:22:5", + "nodeType": "YulAssignment", + "src": "24652:22:5", + "value": { + "arguments": [ + { + "name": "X", + "nativeSrc": "24665:1:5", + "nodeType": "YulIdentifier", + "src": "24665:1:5" + }, + { + "name": "T2", + "nativeSrc": "24668:2:5", + "nodeType": "YulIdentifier", + "src": "24668:2:5" + }, + { + "name": "p", + "nativeSrc": "24672:1:5", + "nodeType": "YulIdentifier", + "src": "24672:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "24658:6:5", + "nodeType": "YulIdentifier", + "src": "24658:6:5" + }, + "nativeSrc": "24658:16:5", + "nodeType": "YulFunctionCall", + "src": "24658:16:5" + }, + "variableNames": [ + { + "name": "T3", + "nativeSrc": "24652:2:5", + "nodeType": "YulIdentifier", + "src": "24652:2:5" + } + ] + }, + { + "nativeSrc": "24720:23:5", + "nodeType": "YulAssignment", + "src": "24720:23:5", + "value": { + "arguments": [ + { + "name": "T1", + "nativeSrc": "24733:2:5", + "nodeType": "YulIdentifier", + "src": "24733:2:5" + }, + { + "name": "T2", + "nativeSrc": "24737:2:5", + "nodeType": "YulIdentifier", + "src": "24737:2:5" + }, + { + "name": "p", + "nativeSrc": "24741:1:5", + "nodeType": "YulIdentifier", + "src": "24741:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "24726:6:5", + "nodeType": "YulIdentifier", + "src": "24726:6:5" + }, + "nativeSrc": "24726:17:5", + "nodeType": "YulFunctionCall", + "src": "24726:17:5" + }, + "variableNames": [ + { + "name": "T1", + "nativeSrc": "24720:2:5", + "nodeType": "YulIdentifier", + "src": "24720:2:5" + } + ] + }, + { + "nativeSrc": "24784:59:5", + "nodeType": "YulAssignment", + "src": "24784:59:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "X", + "nativeSrc": "24804:1:5", + "nodeType": "YulIdentifier", + "src": "24804:1:5" + }, + { + "name": "zz", + "nativeSrc": "24807:2:5", + "nodeType": "YulIdentifier", + "src": "24807:2:5" + }, + { + "name": "p", + "nativeSrc": "24811:1:5", + "nodeType": "YulIdentifier", + "src": "24811:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "24797:6:5", + "nodeType": "YulIdentifier", + "src": "24797:6:5" + }, + "nativeSrc": "24797:16:5", + "nodeType": "YulFunctionCall", + "src": "24797:16:5" + }, + { + "arguments": [ + { + "name": "X", + "nativeSrc": "24822:1:5", + "nodeType": "YulIdentifier", + "src": "24822:1:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "24829:1:5", + "nodeType": "YulIdentifier", + "src": "24829:1:5" + }, + { + "name": "zz", + "nativeSrc": "24832:2:5", + "nodeType": "YulIdentifier", + "src": "24832:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "24825:3:5", + "nodeType": "YulIdentifier", + "src": "24825:3:5" + }, + "nativeSrc": "24825:10:5", + "nodeType": "YulFunctionCall", + "src": "24825:10:5" + }, + { + "name": "p", + "nativeSrc": "24837:1:5", + "nodeType": "YulIdentifier", + "src": "24837:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "24815:6:5", + "nodeType": "YulIdentifier", + "src": "24815:6:5" + }, + "nativeSrc": "24815:24:5", + "nodeType": "YulFunctionCall", + "src": "24815:24:5" + }, + { + "name": "p", + "nativeSrc": "24841:1:5", + "nodeType": "YulIdentifier", + "src": "24841:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "24790:6:5", + "nodeType": "YulIdentifier", + "src": "24790:6:5" + }, + "nativeSrc": "24790:53:5", + "nodeType": "YulFunctionCall", + "src": "24790:53:5" + }, + "variableNames": [ + { + "name": "y2", + "nativeSrc": "24784:2:5", + "nodeType": "YulIdentifier", + "src": "24784:2:5" + } + ] + }, + { + "nativeSrc": "24891:22:5", + "nodeType": "YulAssignment", + "src": "24891:22:5", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "24904:1:5", + "nodeType": "YulLiteral", + "src": "24904:1:5", + "type": "", + "value": "3" + }, + { + "name": "y2", + "nativeSrc": "24907:2:5", + "nodeType": "YulIdentifier", + "src": "24907:2:5" + }, + { + "name": "p", + "nativeSrc": "24911:1:5", + "nodeType": "YulIdentifier", + "src": "24911:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "24897:6:5", + "nodeType": "YulIdentifier", + "src": "24897:6:5" + }, + "nativeSrc": "24897:16:5", + "nodeType": "YulFunctionCall", + "src": "24897:16:5" + }, + "variableNames": [ + { + "name": "T4", + "nativeSrc": "24891:2:5", + "nodeType": "YulIdentifier", + "src": "24891:2:5" + } + ] + }, + { + "nativeSrc": "24966:25:5", + "nodeType": "YulAssignment", + "src": "24966:25:5", + "value": { + "arguments": [ + { + "name": "T1", + "nativeSrc": "24980:2:5", + "nodeType": "YulIdentifier", + "src": "24980:2:5" + }, + { + "name": "zzz", + "nativeSrc": "24984:3:5", + "nodeType": "YulIdentifier", + "src": "24984:3:5" + }, + { + "name": "p", + "nativeSrc": "24989:1:5", + "nodeType": "YulIdentifier", + "src": "24989:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "24973:6:5", + "nodeType": "YulIdentifier", + "src": "24973:6:5" + }, + "nativeSrc": "24973:18:5", + "nodeType": "YulFunctionCall", + "src": "24973:18:5" + }, + "variableNames": [ + { + "name": "zzz", + "nativeSrc": "24966:3:5", + "nodeType": "YulIdentifier", + "src": "24966:3:5" + } + ] + }, + { + "nativeSrc": "25038:23:5", + "nodeType": "YulAssignment", + "src": "25038:23:5", + "value": { + "arguments": [ + { + "name": "T2", + "nativeSrc": "25051:2:5", + "nodeType": "YulIdentifier", + "src": "25051:2:5" + }, + { + "name": "zz", + "nativeSrc": "25055:2:5", + "nodeType": "YulIdentifier", + "src": "25055:2:5" + }, + { + "name": "p", + "nativeSrc": "25059:1:5", + "nodeType": "YulIdentifier", + "src": "25059:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "25044:6:5", + "nodeType": "YulIdentifier", + "src": "25044:6:5" + }, + "nativeSrc": "25044:17:5", + "nodeType": "YulFunctionCall", + "src": "25044:17:5" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "25038:2:5", + "nodeType": "YulIdentifier", + "src": "25038:2:5" + } + ] + }, + { + "nativeSrc": "25115:57:5", + "nodeType": "YulAssignment", + "src": "25115:57:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "T4", + "nativeSrc": "25134:2:5", + "nodeType": "YulIdentifier", + "src": "25134:2:5" + }, + { + "name": "T4", + "nativeSrc": "25138:2:5", + "nodeType": "YulIdentifier", + "src": "25138:2:5" + }, + { + "name": "p", + "nativeSrc": "25142:1:5", + "nodeType": "YulIdentifier", + "src": "25142:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "25127:6:5", + "nodeType": "YulIdentifier", + "src": "25127:6:5" + }, + "nativeSrc": "25127:17:5", + "nodeType": "YulFunctionCall", + "src": "25127:17:5" + }, + { + "arguments": [ + { + "name": "minus_2", + "nativeSrc": "25153:7:5", + "nodeType": "YulIdentifier", + "src": "25153:7:5" + }, + { + "name": "T3", + "nativeSrc": "25162:2:5", + "nodeType": "YulIdentifier", + "src": "25162:2:5" + }, + { + "name": "p", + "nativeSrc": "25166:1:5", + "nodeType": "YulIdentifier", + "src": "25166:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "25146:6:5", + "nodeType": "YulIdentifier", + "src": "25146:6:5" + }, + "nativeSrc": "25146:22:5", + "nodeType": "YulFunctionCall", + "src": "25146:22:5" + }, + { + "name": "p", + "nativeSrc": "25170:1:5", + "nodeType": "YulIdentifier", + "src": "25170:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "25120:6:5", + "nodeType": "YulIdentifier", + "src": "25120:6:5" + }, + "nativeSrc": "25120:52:5", + "nodeType": "YulFunctionCall", + "src": "25120:52:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "25115:1:5", + "nodeType": "YulIdentifier", + "src": "25115:1:5" + } + ] + }, + { + "nativeSrc": "25217:45:5", + "nodeType": "YulAssignment", + "src": "25217:45:5", + "value": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "25230:2:5", + "nodeType": "YulIdentifier", + "src": "25230:2:5" + }, + { + "arguments": [ + { + "name": "T3", + "nativeSrc": "25241:2:5", + "nodeType": "YulIdentifier", + "src": "25241:2:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "25249:1:5", + "nodeType": "YulIdentifier", + "src": "25249:1:5" + }, + { + "name": "X", + "nativeSrc": "25252:1:5", + "nodeType": "YulIdentifier", + "src": "25252:1:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "25245:3:5", + "nodeType": "YulIdentifier", + "src": "25245:3:5" + }, + "nativeSrc": "25245:9:5", + "nodeType": "YulFunctionCall", + "src": "25245:9:5" + }, + { + "name": "p", + "nativeSrc": "25256:1:5", + "nodeType": "YulIdentifier", + "src": "25256:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "25234:6:5", + "nodeType": "YulIdentifier", + "src": "25234:6:5" + }, + "nativeSrc": "25234:24:5", + "nodeType": "YulFunctionCall", + "src": "25234:24:5" + }, + { + "name": "p", + "nativeSrc": "25260:1:5", + "nodeType": "YulIdentifier", + "src": "25260:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "25223:6:5", + "nodeType": "YulIdentifier", + "src": "25223:6:5" + }, + "nativeSrc": "25223:39:5", + "nodeType": "YulFunctionCall", + "src": "25223:39:5" + }, + "variableNames": [ + { + "name": "T2", + "nativeSrc": "25217:2:5", + "nodeType": "YulIdentifier", + "src": "25217:2:5" + } + ] + }, + { + "nativeSrc": "25306:36:5", + "nodeType": "YulAssignment", + "src": "25306:36:5", + "value": { + "arguments": [ + { + "name": "T2", + "nativeSrc": "25318:2:5", + "nodeType": "YulIdentifier", + "src": "25318:2:5" + }, + { + "arguments": [ + { + "name": "T1", + "nativeSrc": "25329:2:5", + "nodeType": "YulIdentifier", + "src": "25329:2:5" + }, + { + "name": "Y", + "nativeSrc": "25333:1:5", + "nodeType": "YulIdentifier", + "src": "25333:1:5" + }, + { + "name": "p", + "nativeSrc": "25336:1:5", + "nodeType": "YulIdentifier", + "src": "25336:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "25322:6:5", + "nodeType": "YulIdentifier", + "src": "25322:6:5" + }, + "nativeSrc": "25322:16:5", + "nodeType": "YulFunctionCall", + "src": "25322:16:5" + }, + { + "name": "p", + "nativeSrc": "25340:1:5", + "nodeType": "YulIdentifier", + "src": "25340:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "25311:6:5", + "nodeType": "YulIdentifier", + "src": "25311:6:5" + }, + "nativeSrc": "25311:31:5", + "nodeType": "YulFunctionCall", + "src": "25311:31:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "25306:1:5", + "nodeType": "YulIdentifier", + "src": "25306:1:5" + } + ] + }, + { + "nativeSrc": "25395:8:5", + "nodeType": "YulContinue", + "src": "25395:8:5" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "T2", + "nativeSrc": "24470:2:5", + "nodeType": "YulIdentifier", + "src": "24470:2:5" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "24463:6:5", + "nodeType": "YulIdentifier", + "src": "24463:6:5" + }, + "nativeSrc": "24463:10:5", + "nodeType": "YulFunctionCall", + "src": "24463:10:5" + }, + "nativeSrc": "24460:973:5", + "nodeType": "YulIf", + "src": "24460:973:5" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "y2", + "nativeSrc": "24426:2:5", + "nodeType": "YulIdentifier", + "src": "24426:2:5" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "24419:6:5", + "nodeType": "YulIdentifier", + "src": "24419:6:5" + }, + "nativeSrc": "24419:10:5", + "nodeType": "YulFunctionCall", + "src": "24419:10:5" + }, + "nativeSrc": "24416:1043:5", + "nodeType": "YulIf", + "src": "24416:1043:5" + }, + { + "nativeSrc": "25485:23:5", + "nodeType": "YulAssignment", + "src": "25485:23:5", + "value": { + "arguments": [ + { + "name": "T2", + "nativeSrc": "25498:2:5", + "nodeType": "YulIdentifier", + "src": "25498:2:5" + }, + { + "name": "T2", + "nativeSrc": "25502:2:5", + "nodeType": "YulIdentifier", + "src": "25502:2:5" + }, + { + "name": "p", + "nativeSrc": "25506:1:5", + "nodeType": "YulIdentifier", + "src": "25506:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "25491:6:5", + "nodeType": "YulIdentifier", + "src": "25491:6:5" + }, + "nativeSrc": "25491:17:5", + "nodeType": "YulFunctionCall", + "src": "25491:17:5" + }, + "variableNames": [ + { + "name": "T4", + "nativeSrc": "25485:2:5", + "nodeType": "YulIdentifier", + "src": "25485:2:5" + } + ] + }, + { + "nativeSrc": "25538:28:5", + "nodeType": "YulVariableDeclaration", + "src": "25538:28:5", + "value": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "25556:2:5", + "nodeType": "YulIdentifier", + "src": "25556:2:5" + }, + { + "name": "T2", + "nativeSrc": "25560:2:5", + "nodeType": "YulIdentifier", + "src": "25560:2:5" + }, + { + "name": "p", + "nativeSrc": "25564:1:5", + "nodeType": "YulIdentifier", + "src": "25564:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "25549:6:5", + "nodeType": "YulIdentifier", + "src": "25549:6:5" + }, + "nativeSrc": "25549:17:5", + "nodeType": "YulFunctionCall", + "src": "25549:17:5" + }, + "variables": [ + { + "name": "TT1", + "nativeSrc": "25542:3:5", + "nodeType": "YulTypedName", + "src": "25542:3:5", + "type": "" + } + ] + }, + { + "nativeSrc": "25659:23:5", + "nodeType": "YulAssignment", + "src": "25659:23:5", + "value": { + "arguments": [ + { + "name": "zz", + "nativeSrc": "25672:2:5", + "nodeType": "YulIdentifier", + "src": "25672:2:5" + }, + { + "name": "T4", + "nativeSrc": "25676:2:5", + "nodeType": "YulIdentifier", + "src": "25676:2:5" + }, + { + "name": "p", + "nativeSrc": "25680:1:5", + "nodeType": "YulIdentifier", + "src": "25680:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "25665:6:5", + "nodeType": "YulIdentifier", + "src": "25665:6:5" + }, + "nativeSrc": "25665:17:5", + "nodeType": "YulFunctionCall", + "src": "25665:17:5" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "25659:2:5", + "nodeType": "YulIdentifier", + "src": "25659:2:5" + } + ] + }, + { + "nativeSrc": "25707:26:5", + "nodeType": "YulAssignment", + "src": "25707:26:5", + "value": { + "arguments": [ + { + "name": "zzz", + "nativeSrc": "25721:3:5", + "nodeType": "YulIdentifier", + "src": "25721:3:5" + }, + { + "name": "TT1", + "nativeSrc": "25726:3:5", + "nodeType": "YulIdentifier", + "src": "25726:3:5" + }, + { + "name": "p", + "nativeSrc": "25731:1:5", + "nodeType": "YulIdentifier", + "src": "25731:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "25714:6:5", + "nodeType": "YulIdentifier", + "src": "25714:6:5" + }, + "nativeSrc": "25714:19:5", + "nodeType": "YulFunctionCall", + "src": "25714:19:5" + }, + "variableNames": [ + { + "name": "zzz", + "nativeSrc": "25707:3:5", + "nodeType": "YulIdentifier", + "src": "25707:3:5" + } + ] + }, + { + "nativeSrc": "25770:27:5", + "nodeType": "YulVariableDeclaration", + "src": "25770:27:5", + "value": { + "arguments": [ + { + "name": "X", + "nativeSrc": "25788:1:5", + "nodeType": "YulIdentifier", + "src": "25788:1:5" + }, + { + "name": "T4", + "nativeSrc": "25791:2:5", + "nodeType": "YulIdentifier", + "src": "25791:2:5" + }, + { + "name": "p", + "nativeSrc": "25795:1:5", + "nodeType": "YulIdentifier", + "src": "25795:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "25781:6:5", + "nodeType": "YulIdentifier", + "src": "25781:6:5" + }, + "nativeSrc": "25781:16:5", + "nodeType": "YulFunctionCall", + "src": "25781:16:5" + }, + "variables": [ + { + "name": "TT2", + "nativeSrc": "25774:3:5", + "nodeType": "YulTypedName", + "src": "25774:3:5", + "type": "" + } + ] + }, + { + "nativeSrc": "25822:83:5", + "nodeType": "YulAssignment", + "src": "25822:83:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "y2", + "nativeSrc": "25849:2:5", + "nodeType": "YulIdentifier", + "src": "25849:2:5" + }, + { + "name": "y2", + "nativeSrc": "25853:2:5", + "nodeType": "YulIdentifier", + "src": "25853:2:5" + }, + { + "name": "p", + "nativeSrc": "25857:1:5", + "nodeType": "YulIdentifier", + "src": "25857:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "25842:6:5", + "nodeType": "YulIdentifier", + "src": "25842:6:5" + }, + "nativeSrc": "25842:17:5", + "nodeType": "YulFunctionCall", + "src": "25842:17:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "25865:1:5", + "nodeType": "YulIdentifier", + "src": "25865:1:5" + }, + { + "name": "TT1", + "nativeSrc": "25868:3:5", + "nodeType": "YulIdentifier", + "src": "25868:3:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "25861:3:5", + "nodeType": "YulIdentifier", + "src": "25861:3:5" + }, + "nativeSrc": "25861:11:5", + "nodeType": "YulFunctionCall", + "src": "25861:11:5" + }, + { + "name": "p", + "nativeSrc": "25874:1:5", + "nodeType": "YulIdentifier", + "src": "25874:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "25835:6:5", + "nodeType": "YulIdentifier", + "src": "25835:6:5" + }, + "nativeSrc": "25835:41:5", + "nodeType": "YulFunctionCall", + "src": "25835:41:5" + }, + { + "arguments": [ + { + "name": "minus_2", + "nativeSrc": "25885:7:5", + "nodeType": "YulIdentifier", + "src": "25885:7:5" + }, + { + "name": "TT2", + "nativeSrc": "25894:3:5", + "nodeType": "YulIdentifier", + "src": "25894:3:5" + }, + { + "name": "p", + "nativeSrc": "25899:1:5", + "nodeType": "YulIdentifier", + "src": "25899:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "25878:6:5", + "nodeType": "YulIdentifier", + "src": "25878:6:5" + }, + "nativeSrc": "25878:23:5", + "nodeType": "YulFunctionCall", + "src": "25878:23:5" + }, + { + "name": "p", + "nativeSrc": "25903:1:5", + "nodeType": "YulIdentifier", + "src": "25903:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "25828:6:5", + "nodeType": "YulIdentifier", + "src": "25828:6:5" + }, + "nativeSrc": "25828:77:5", + "nodeType": "YulFunctionCall", + "src": "25828:77:5" + }, + "variableNames": [ + { + "name": "T4", + "nativeSrc": "25822:2:5", + "nodeType": "YulIdentifier", + "src": "25822:2:5" + } + ] + }, + { + "nativeSrc": "25930:76:5", + "nodeType": "YulAssignment", + "src": "25930:76:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "TT2", + "nativeSrc": "25956:3:5", + "nodeType": "YulIdentifier", + "src": "25956:3:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "25965:1:5", + "nodeType": "YulIdentifier", + "src": "25965:1:5" + }, + { + "name": "T4", + "nativeSrc": "25968:2:5", + "nodeType": "YulIdentifier", + "src": "25968:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "25961:3:5", + "nodeType": "YulIdentifier", + "src": "25961:3:5" + }, + "nativeSrc": "25961:10:5", + "nodeType": "YulFunctionCall", + "src": "25961:10:5" + }, + { + "name": "p", + "nativeSrc": "25973:1:5", + "nodeType": "YulIdentifier", + "src": "25973:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "25949:6:5", + "nodeType": "YulIdentifier", + "src": "25949:6:5" + }, + "nativeSrc": "25949:26:5", + "nodeType": "YulFunctionCall", + "src": "25949:26:5" + }, + { + "name": "y2", + "nativeSrc": "25977:2:5", + "nodeType": "YulIdentifier", + "src": "25977:2:5" + }, + { + "name": "p", + "nativeSrc": "25981:1:5", + "nodeType": "YulIdentifier", + "src": "25981:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "25942:6:5", + "nodeType": "YulIdentifier", + "src": "25942:6:5" + }, + "nativeSrc": "25942:41:5", + "nodeType": "YulFunctionCall", + "src": "25942:41:5" + }, + { + "arguments": [ + { + "name": "Y", + "nativeSrc": "25992:1:5", + "nodeType": "YulIdentifier", + "src": "25992:1:5" + }, + { + "name": "TT1", + "nativeSrc": "25995:3:5", + "nodeType": "YulIdentifier", + "src": "25995:3:5" + }, + { + "name": "p", + "nativeSrc": "26000:1:5", + "nodeType": "YulIdentifier", + "src": "26000:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "25985:6:5", + "nodeType": "YulIdentifier", + "src": "25985:6:5" + }, + "nativeSrc": "25985:17:5", + "nodeType": "YulFunctionCall", + "src": "25985:17:5" + }, + { + "name": "p", + "nativeSrc": "26004:1:5", + "nodeType": "YulIdentifier", + "src": "26004:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "25935:6:5", + "nodeType": "YulIdentifier", + "src": "25935:6:5" + }, + "nativeSrc": "25935:71:5", + "nodeType": "YulFunctionCall", + "src": "25935:71:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "25930:1:5", + "nodeType": "YulIdentifier", + "src": "25930:1:5" + } + ] + }, + { + "nativeSrc": "26032:7:5", + "nodeType": "YulAssignment", + "src": "26032:7:5", + "value": { + "name": "T4", + "nativeSrc": "26037:2:5", + "nodeType": "YulIdentifier", + "src": "26037:2:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "26032:1:5", + "nodeType": "YulIdentifier", + "src": "26032:1:5" + } + ] + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "minus_1", + "nativeSrc": "22044:7:5", + "nodeType": "YulIdentifier", + "src": "22044:7:5" + }, + { + "name": "index", + "nativeSrc": "22053:5:5", + "nodeType": "YulIdentifier", + "src": "22053:5:5" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "22041:2:5", + "nodeType": "YulIdentifier", + "src": "22041:2:5" + }, + "nativeSrc": "22041:18:5", + "nodeType": "YulFunctionCall", + "src": "22041:18:5" + }, + "nativeSrc": "22034:4045:5", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "22060:26:5", + "nodeType": "YulBlock", + "src": "22060:26:5", + "statements": [ + { + "nativeSrc": "22062:22:5", + "nodeType": "YulAssignment", + "src": "22062:22:5", + "value": { + "arguments": [ + { + "name": "index", + "nativeSrc": "22075:5:5", + "nodeType": "YulIdentifier", + "src": "22075:5:5" + }, + { + "kind": "number", + "nativeSrc": "22082:1:5", + "nodeType": "YulLiteral", + "src": "22082:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "22071:3:5", + "nodeType": "YulIdentifier", + "src": "22071:3:5" + }, + "nativeSrc": "22071:13:5", + "nodeType": "YulFunctionCall", + "src": "22071:13:5" + }, + "variableNames": [ + { + "name": "index", + "nativeSrc": "22062:5:5", + "nodeType": "YulIdentifier", + "src": "22062:5:5" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "22038:2:5", + "nodeType": "YulBlock", + "src": "22038:2:5", + "statements": [] + }, + "src": "22034:4045:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "26118:1:5", + "nodeType": "YulIdentifier", + "src": "26118:1:5" + }, + { + "kind": "number", + "nativeSrc": "26121:4:5", + "nodeType": "YulLiteral", + "src": "26121:4:5", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "26114:3:5", + "nodeType": "YulIdentifier", + "src": "26114:3:5" + }, + "nativeSrc": "26114:12:5", + "nodeType": "YulFunctionCall", + "src": "26114:12:5" + }, + { + "name": "zzz", + "nativeSrc": "26128:3:5", + "nodeType": "YulIdentifier", + "src": "26128:3:5" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "26107:6:5", + "nodeType": "YulIdentifier", + "src": "26107:6:5" + }, + "nativeSrc": "26107:25:5", + "nodeType": "YulFunctionCall", + "src": "26107:25:5" + }, + "nativeSrc": "26107:25:5", + "nodeType": "YulExpressionStatement", + "src": "26107:25:5" + }, + { + "expression": { + "arguments": [ + { + "name": "T", + "nativeSrc": "26391:1:5", + "nodeType": "YulIdentifier", + "src": "26391:1:5" + }, + { + "kind": "number", + "nativeSrc": "26394:4:5", + "nodeType": "YulLiteral", + "src": "26394:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "26384:6:5", + "nodeType": "YulIdentifier", + "src": "26384:6:5" + }, + "nativeSrc": "26384:15:5", + "nodeType": "YulFunctionCall", + "src": "26384:15:5" + }, + "nativeSrc": "26384:15:5", + "nodeType": "YulExpressionStatement", + "src": "26384:15:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "26427:1:5", + "nodeType": "YulIdentifier", + "src": "26427:1:5" + }, + { + "kind": "number", + "nativeSrc": "26430:4:5", + "nodeType": "YulLiteral", + "src": "26430:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "26423:3:5", + "nodeType": "YulIdentifier", + "src": "26423:3:5" + }, + "nativeSrc": "26423:12:5", + "nodeType": "YulFunctionCall", + "src": "26423:12:5" + }, + { + "kind": "number", + "nativeSrc": "26437:4:5", + "nodeType": "YulLiteral", + "src": "26437:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "26416:6:5", + "nodeType": "YulIdentifier", + "src": "26416:6:5" + }, + "nativeSrc": "26416:26:5", + "nodeType": "YulFunctionCall", + "src": "26416:26:5" + }, + "nativeSrc": "26416:26:5", + "nodeType": "YulExpressionStatement", + "src": "26416:26:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "26470:1:5", + "nodeType": "YulIdentifier", + "src": "26470:1:5" + }, + { + "kind": "number", + "nativeSrc": "26473:4:5", + "nodeType": "YulLiteral", + "src": "26473:4:5", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "26466:3:5", + "nodeType": "YulIdentifier", + "src": "26466:3:5" + }, + "nativeSrc": "26466:12:5", + "nodeType": "YulFunctionCall", + "src": "26466:12:5" + }, + { + "kind": "number", + "nativeSrc": "26480:4:5", + "nodeType": "YulLiteral", + "src": "26480:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "26459:6:5", + "nodeType": "YulIdentifier", + "src": "26459:6:5" + }, + "nativeSrc": "26459:26:5", + "nodeType": "YulFunctionCall", + "src": "26459:26:5" + }, + "nativeSrc": "26459:26:5", + "nodeType": "YulExpressionStatement", + "src": "26459:26:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "26624:1:5", + "nodeType": "YulIdentifier", + "src": "26624:1:5" + }, + { + "kind": "number", + "nativeSrc": "26627:4:5", + "nodeType": "YulLiteral", + "src": "26627:4:5", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "26620:3:5", + "nodeType": "YulIdentifier", + "src": "26620:3:5" + }, + "nativeSrc": "26620:12:5", + "nodeType": "YulFunctionCall", + "src": "26620:12:5" + }, + { + "name": "minus_2", + "nativeSrc": "26634:7:5", + "nodeType": "YulIdentifier", + "src": "26634:7:5" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "26613:6:5", + "nodeType": "YulIdentifier", + "src": "26613:6:5" + }, + "nativeSrc": "26613:29:5", + "nodeType": "YulFunctionCall", + "src": "26613:29:5" + }, + "nativeSrc": "26613:29:5", + "nodeType": "YulExpressionStatement", + "src": "26613:29:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "26670:1:5", + "nodeType": "YulIdentifier", + "src": "26670:1:5" + }, + { + "kind": "number", + "nativeSrc": "26673:4:5", + "nodeType": "YulLiteral", + "src": "26673:4:5", + "type": "", + "value": "0xa0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "26666:3:5", + "nodeType": "YulIdentifier", + "src": "26666:3:5" + }, + "nativeSrc": "26666:12:5", + "nodeType": "YulFunctionCall", + "src": "26666:12:5" + }, + { + "name": "p", + "nativeSrc": "26680:1:5", + "nodeType": "YulIdentifier", + "src": "26680:1:5" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "26659:6:5", + "nodeType": "YulIdentifier", + "src": "26659:6:5" + }, + "nativeSrc": "26659:23:5", + "nodeType": "YulFunctionCall", + "src": "26659:23:5" + }, + "nativeSrc": "26659:23:5", + "nodeType": "YulExpressionStatement", + "src": "26659:23:5" + }, + { + "body": { + "nativeSrc": "26817:16:5", + "nodeType": "YulBlock", + "src": "26817:16:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "26826:1:5", + "nodeType": "YulLiteral", + "src": "26826:1:5", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "26829:1:5", + "nodeType": "YulLiteral", + "src": "26829:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "26819:6:5", + "nodeType": "YulIdentifier", + "src": "26819:6:5" + }, + "nativeSrc": "26819:12:5", + "nodeType": "YulFunctionCall", + "src": "26819:12:5" + }, + "nativeSrc": "26819:12:5", + "nodeType": "YulExpressionStatement", + "src": "26819:12:5" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "26788:1:5", + "nodeType": "YulLiteral", + "src": "26788:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "26784:3:5", + "nodeType": "YulIdentifier", + "src": "26784:3:5" + }, + "nativeSrc": "26784:6:5", + "nodeType": "YulFunctionCall", + "src": "26784:6:5" + }, + { + "kind": "number", + "nativeSrc": "26792:4:5", + "nodeType": "YulLiteral", + "src": "26792:4:5", + "type": "", + "value": "0x05" + }, + { + "name": "T", + "nativeSrc": "26798:1:5", + "nodeType": "YulIdentifier", + "src": "26798:1:5" + }, + { + "kind": "number", + "nativeSrc": "26801:4:5", + "nodeType": "YulLiteral", + "src": "26801:4:5", + "type": "", + "value": "0xc0" + }, + { + "name": "T", + "nativeSrc": "26807:1:5", + "nodeType": "YulIdentifier", + "src": "26807:1:5" + }, + { + "kind": "number", + "nativeSrc": "26810:4:5", + "nodeType": "YulLiteral", + "src": "26810:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "26773:10:5", + "nodeType": "YulIdentifier", + "src": "26773:10:5" + }, + "nativeSrc": "26773:42:5", + "nodeType": "YulFunctionCall", + "src": "26773:42:5" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "26766:6:5", + "nodeType": "YulIdentifier", + "src": "26766:6:5" + }, + "nativeSrc": "26766:50:5", + "nodeType": "YulFunctionCall", + "src": "26766:50:5" + }, + "nativeSrc": "26763:70:5", + "nodeType": "YulIf", + "src": "26763:70:5" + }, + { + "nativeSrc": "26851:23:5", + "nodeType": "YulAssignment", + "src": "26851:23:5", + "value": { + "arguments": [ + { + "name": "Y", + "nativeSrc": "26861:1:5", + "nodeType": "YulIdentifier", + "src": "26861:1:5" + }, + { + "arguments": [ + { + "name": "T", + "nativeSrc": "26869:1:5", + "nodeType": "YulIdentifier", + "src": "26869:1:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "26863:5:5", + "nodeType": "YulIdentifier", + "src": "26863:5:5" + }, + "nativeSrc": "26863:8:5", + "nodeType": "YulFunctionCall", + "src": "26863:8:5" + }, + { + "name": "p", + "nativeSrc": "26872:1:5", + "nodeType": "YulIdentifier", + "src": "26872:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "26854:6:5", + "nodeType": "YulIdentifier", + "src": "26854:6:5" + }, + "nativeSrc": "26854:20:5", + "nodeType": "YulFunctionCall", + "src": "26854:20:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "26851:1:5", + "nodeType": "YulIdentifier", + "src": "26851:1:5" + } + ] + }, + { + "nativeSrc": "26898:27:5", + "nodeType": "YulAssignment", + "src": "26898:27:5", + "value": { + "arguments": [ + { + "name": "zz", + "nativeSrc": "26910:2:5", + "nodeType": "YulIdentifier", + "src": "26910:2:5" + }, + { + "arguments": [ + { + "name": "T", + "nativeSrc": "26920:1:5", + "nodeType": "YulIdentifier", + "src": "26920:1:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "26914:5:5", + "nodeType": "YulIdentifier", + "src": "26914:5:5" + }, + "nativeSrc": "26914:8:5", + "nodeType": "YulFunctionCall", + "src": "26914:8:5" + }, + { + "name": "p", + "nativeSrc": "26923:1:5", + "nodeType": "YulIdentifier", + "src": "26923:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "26903:6:5", + "nodeType": "YulIdentifier", + "src": "26903:6:5" + }, + "nativeSrc": "26903:22:5", + "nodeType": "YulFunctionCall", + "src": "26903:22:5" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "26898:2:5", + "nodeType": "YulIdentifier", + "src": "26898:2:5" + } + ] + }, + { + "nativeSrc": "26948:20:5", + "nodeType": "YulAssignment", + "src": "26948:20:5", + "value": { + "arguments": [ + { + "name": "zz", + "nativeSrc": "26960:2:5", + "nodeType": "YulIdentifier", + "src": "26960:2:5" + }, + { + "name": "zz", + "nativeSrc": "26963:2:5", + "nodeType": "YulIdentifier", + "src": "26963:2:5" + }, + { + "name": "p", + "nativeSrc": "26966:1:5", + "nodeType": "YulIdentifier", + "src": "26966:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "26953:6:5", + "nodeType": "YulIdentifier", + "src": "26953:6:5" + }, + "nativeSrc": "26953:15:5", + "nodeType": "YulFunctionCall", + "src": "26953:15:5" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "26948:2:5", + "nodeType": "YulIdentifier", + "src": "26948:2:5" + } + ] + }, + { + "nativeSrc": "26992:21:5", + "nodeType": "YulAssignment", + "src": "26992:21:5", + "value": { + "arguments": [ + { + "name": "X", + "nativeSrc": "27004:1:5", + "nodeType": "YulIdentifier", + "src": "27004:1:5" + }, + { + "name": "zz", + "nativeSrc": "27007:2:5", + "nodeType": "YulIdentifier", + "src": "27007:2:5" + }, + { + "name": "p", + "nativeSrc": "27011:1:5", + "nodeType": "YulIdentifier", + "src": "27011:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "26997:6:5", + "nodeType": "YulIdentifier", + "src": "26997:6:5" + }, + "nativeSrc": "26997:16:5", + "nodeType": "YulFunctionCall", + "src": "26997:16:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "26992:1:5", + "nodeType": "YulIdentifier", + "src": "26992:1:5" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 1905, + "isOffset": false, + "isSlot": false, + "src": "21869:1:5", + "valueSize": 1 + }, + { + "declaration": 1905, + "isOffset": false, + "isSlot": false, + "src": "21907:1:5", + "valueSize": 1 + }, + { + "declaration": 1905, + "isOffset": false, + "isSlot": false, + "src": "23615:1:5", + "valueSize": 1 + }, + { + "declaration": 1905, + "isOffset": false, + "isSlot": false, + "src": "23662:1:5", + "valueSize": 1 + }, + { + "declaration": 1870, + "isOffset": false, + "isSlot": false, + "src": "21754:2:5", + "valueSize": 1 + }, + { + "declaration": 1870, + "isOffset": false, + "isSlot": false, + "src": "23470:2:5", + "valueSize": 1 + }, + { + "declaration": 1872, + "isOffset": false, + "isSlot": false, + "src": "21782:2:5", + "valueSize": 1 + }, + { + "declaration": 1872, + "isOffset": false, + "isSlot": false, + "src": "23507:2:5", + "valueSize": 1 + }, + { + "declaration": 1898, + "isOffset": false, + "isSlot": false, + "src": "26118:1:5", + "valueSize": 1 + }, + { + "declaration": 1898, + "isOffset": false, + "isSlot": false, + "src": "26391:1:5", + "valueSize": 1 + }, + { + "declaration": 1898, + "isOffset": false, + "isSlot": false, + "src": "26427:1:5", + "valueSize": 1 + }, + { + "declaration": 1898, + "isOffset": false, + "isSlot": false, + "src": "26470:1:5", + "valueSize": 1 + }, + { + "declaration": 1898, + "isOffset": false, + "isSlot": false, + "src": "26624:1:5", + "valueSize": 1 + }, + { + "declaration": 1898, + "isOffset": false, + "isSlot": false, + "src": "26670:1:5", + "valueSize": 1 + }, + { + "declaration": 1898, + "isOffset": false, + "isSlot": false, + "src": "26798:1:5", + "valueSize": 1 + }, + { + "declaration": 1898, + "isOffset": false, + "isSlot": false, + "src": "26807:1:5", + "valueSize": 1 + }, + { + "declaration": 1898, + "isOffset": false, + "isSlot": false, + "src": "26869:1:5", + "valueSize": 1 + }, + { + "declaration": 1898, + "isOffset": false, + "isSlot": false, + "src": "26920:1:5", + "valueSize": 1 + }, + { + "declaration": 1879, + "isOffset": false, + "isSlot": false, + "src": "21644:1:5", + "valueSize": 1 + }, + { + "declaration": 1879, + "isOffset": false, + "isSlot": false, + "src": "21749:1:5", + "valueSize": 1 + }, + { + "declaration": 1879, + "isOffset": false, + "isSlot": false, + "src": "21896:1:5", + "valueSize": 1 + }, + { + "declaration": 1879, + "isOffset": false, + "isSlot": false, + "src": "22288:1:5", + "valueSize": 1 + }, + { + "declaration": 1879, + "isOffset": false, + "isSlot": false, + "src": "22416:1:5", + "valueSize": 1 + }, + { + "declaration": 1879, + "isOffset": false, + "isSlot": false, + "src": "22442:1:5", + "valueSize": 1 + }, + { + "declaration": 1879, + "isOffset": false, + "isSlot": false, + "src": "22629:1:5", + "valueSize": 1 + }, + { + "declaration": 1879, + "isOffset": false, + "isSlot": false, + "src": "22743:1:5", + "valueSize": 1 + }, + { + "declaration": 1879, + "isOffset": false, + "isSlot": false, + "src": "23763:1:5", + "valueSize": 1 + }, + { + "declaration": 1879, + "isOffset": false, + "isSlot": false, + "src": "24195:1:5", + "valueSize": 1 + }, + { + "declaration": 1879, + "isOffset": false, + "isSlot": false, + "src": "24665:1:5", + "valueSize": 1 + }, + { + "declaration": 1879, + "isOffset": false, + "isSlot": false, + "src": "24804:1:5", + "valueSize": 1 + }, + { + "declaration": 1879, + "isOffset": false, + "isSlot": false, + "src": "24822:1:5", + "valueSize": 1 + }, + { + "declaration": 1879, + "isOffset": false, + "isSlot": false, + "src": "25115:1:5", + "valueSize": 1 + }, + { + "declaration": 1879, + "isOffset": false, + "isSlot": false, + "src": "25252:1:5", + "valueSize": 1 + }, + { + "declaration": 1879, + "isOffset": false, + "isSlot": false, + "src": "25788:1:5", + "valueSize": 1 + }, + { + "declaration": 1879, + "isOffset": false, + "isSlot": false, + "src": "26032:1:5", + "valueSize": 1 + }, + { + "declaration": 1879, + "isOffset": false, + "isSlot": false, + "src": "26992:1:5", + "valueSize": 1 + }, + { + "declaration": 1879, + "isOffset": false, + "isSlot": false, + "src": "27004:1:5", + "valueSize": 1 + }, + { + "declaration": 1881, + "isOffset": false, + "isSlot": false, + "src": "21672:1:5", + "valueSize": 1 + }, + { + "declaration": 1881, + "isOffset": false, + "isSlot": false, + "src": "21777:1:5", + "valueSize": 1 + }, + { + "declaration": 1881, + "isOffset": false, + "isSlot": false, + "src": "21854:1:5", + "valueSize": 1 + }, + { + "declaration": 1881, + "isOffset": false, + "isSlot": false, + "src": "22169:1:5", + "valueSize": 1 + }, + { + "declaration": 1881, + "isOffset": false, + "isSlot": false, + "src": "22804:1:5", + "valueSize": 1 + }, + { + "declaration": 1881, + "isOffset": false, + "isSlot": false, + "src": "22827:1:5", + "valueSize": 1 + }, + { + "declaration": 1881, + "isOffset": false, + "isSlot": false, + "src": "23140:1:5", + "valueSize": 1 + }, + { + "declaration": 1881, + "isOffset": false, + "isSlot": false, + "src": "23152:1:5", + "valueSize": 1 + }, + { + "declaration": 1881, + "isOffset": false, + "isSlot": false, + "src": "23799:1:5", + "valueSize": 1 + }, + { + "declaration": 1881, + "isOffset": false, + "isSlot": false, + "src": "24122:1:5", + "valueSize": 1 + }, + { + "declaration": 1881, + "isOffset": false, + "isSlot": false, + "src": "24530:1:5", + "valueSize": 1 + }, + { + "declaration": 1881, + "isOffset": false, + "isSlot": false, + "src": "25306:1:5", + "valueSize": 1 + }, + { + "declaration": 1881, + "isOffset": false, + "isSlot": false, + "src": "25333:1:5", + "valueSize": 1 + }, + { + "declaration": 1881, + "isOffset": false, + "isSlot": false, + "src": "25930:1:5", + "valueSize": 1 + }, + { + "declaration": 1881, + "isOffset": false, + "isSlot": false, + "src": "25992:1:5", + "valueSize": 1 + }, + { + "declaration": 1881, + "isOffset": false, + "isSlot": false, + "src": "26851:1:5", + "valueSize": 1 + }, + { + "declaration": 1881, + "isOffset": false, + "isSlot": false, + "src": "26861:1:5", + "valueSize": 1 + }, + { + "declaration": 985, + "isOffset": false, + "isSlot": false, + "src": "21649:2:5", + "valueSize": 1 + }, + { + "declaration": 985, + "isOffset": false, + "isSlot": false, + "src": "23331:2:5", + "valueSize": 1 + }, + { + "declaration": 988, + "isOffset": false, + "isSlot": false, + "src": "21677:2:5", + "valueSize": 1 + }, + { + "declaration": 988, + "isOffset": false, + "isSlot": false, + "src": "23368:2:5", + "valueSize": 1 + }, + { + "declaration": 1890, + "isOffset": false, + "isSlot": false, + "src": "21269:5:5", + "valueSize": 1 + }, + { + "declaration": 1890, + "isOffset": false, + "isSlot": false, + "src": "21300:5:5", + "valueSize": 1 + }, + { + "declaration": 1890, + "isOffset": false, + "isSlot": false, + "src": "21356:5:5", + "valueSize": 1 + }, + { + "declaration": 1890, + "isOffset": false, + "isSlot": false, + "src": "21369:5:5", + "valueSize": 1 + }, + { + "declaration": 1890, + "isOffset": false, + "isSlot": false, + "src": "21424:5:5", + "valueSize": 1 + }, + { + "declaration": 1890, + "isOffset": false, + "isSlot": false, + "src": "21455:5:5", + "valueSize": 1 + }, + { + "declaration": 1890, + "isOffset": false, + "isSlot": false, + "src": "21539:5:5", + "valueSize": 1 + }, + { + "declaration": 1890, + "isOffset": false, + "isSlot": false, + "src": "21570:5:5", + "valueSize": 1 + }, + { + "declaration": 1890, + "isOffset": false, + "isSlot": false, + "src": "21945:5:5", + "valueSize": 1 + }, + { + "declaration": 1890, + "isOffset": false, + "isSlot": false, + "src": "21958:5:5", + "valueSize": 1 + }, + { + "declaration": 1890, + "isOffset": false, + "isSlot": false, + "src": "22053:5:5", + "valueSize": 1 + }, + { + "declaration": 1890, + "isOffset": false, + "isSlot": false, + "src": "22062:5:5", + "valueSize": 1 + }, + { + "declaration": 1890, + "isOffset": false, + "isSlot": false, + "src": "22075:5:5", + "valueSize": 1 + }, + { + "declaration": 1890, + "isOffset": false, + "isSlot": false, + "src": "23018:5:5", + "valueSize": 1 + }, + { + "declaration": 1890, + "isOffset": false, + "isSlot": false, + "src": "23049:5:5", + "valueSize": 1 + }, + { + "declaration": 1000, + "isOffset": false, + "isSlot": false, + "src": "22044:7:5", + "valueSize": 1 + }, + { + "declaration": 994, + "isOffset": false, + "isSlot": false, + "src": "22667:7:5", + "valueSize": 1 + }, + { + "declaration": 994, + "isOffset": false, + "isSlot": false, + "src": "24521:7:5", + "valueSize": 1 + }, + { + "declaration": 994, + "isOffset": false, + "isSlot": false, + "src": "25153:7:5", + "valueSize": 1 + }, + { + "declaration": 994, + "isOffset": false, + "isSlot": false, + "src": "25885:7:5", + "valueSize": 1 + }, + { + "declaration": 994, + "isOffset": false, + "isSlot": false, + "src": "26634:7:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "22172:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "22239:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "22295:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "22351:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "22423:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "22431:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "22449:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "22453:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "22457:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "22527:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "22585:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "22656:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "22680:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "22684:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "22750:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "22758:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "22762:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "22830:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "22838:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "23149:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "24118:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "24125:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "24184:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "24192:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "24199:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "24533:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "24608:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "24672:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "24741:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "24811:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "24829:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "24837:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "24841:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "24911:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "24989:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25059:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25142:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25166:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25170:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25249:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25256:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25260:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25336:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25340:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25506:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25564:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25680:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25731:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25795:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25857:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25865:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25874:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25899:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25903:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25965:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25973:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25981:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "26000:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "26004:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "26680:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "26872:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "26923:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "26966:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "27011:1:5", + "valueSize": 1 + }, + { + "declaration": 1874, + "isOffset": false, + "isSlot": false, + "src": "21307:8:5", + "valueSize": 1 + }, + { + "declaration": 1874, + "isOffset": false, + "isSlot": false, + "src": "21462:8:5", + "valueSize": 1 + }, + { + "declaration": 1874, + "isOffset": false, + "isSlot": false, + "src": "21577:8:5", + "valueSize": 1 + }, + { + "declaration": 1874, + "isOffset": false, + "isSlot": false, + "src": "23056:8:5", + "valueSize": 1 + }, + { + "declaration": 1876, + "isOffset": false, + "isSlot": false, + "src": "21276:8:5", + "valueSize": 1 + }, + { + "declaration": 1876, + "isOffset": false, + "isSlot": false, + "src": "21431:8:5", + "valueSize": 1 + }, + { + "declaration": 1876, + "isOffset": false, + "isSlot": false, + "src": "21546:8:5", + "valueSize": 1 + }, + { + "declaration": 1876, + "isOffset": false, + "isSlot": false, + "src": "23025:8:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "21514:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "21615:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "21720:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "21825:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "21984:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "22426:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "22445:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "22564:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "22581:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "23729:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "23835:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "24180:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "24807:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "24832:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "25038:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "25055:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "25659:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "25672:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "26898:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "26910:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "26948:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "26960:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "26963:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "27007:2:5", + "valueSize": 1 + }, + { + "declaration": 1887, + "isOffset": false, + "isSlot": false, + "src": "22008:3:5", + "valueSize": 1 + }, + { + "declaration": 1887, + "isOffset": false, + "isSlot": false, + "src": "22504:3:5", + "valueSize": 1 + }, + { + "declaration": 1887, + "isOffset": false, + "isSlot": false, + "src": "22522:3:5", + "valueSize": 1 + }, + { + "declaration": 1887, + "isOffset": false, + "isSlot": false, + "src": "23871:3:5", + "valueSize": 1 + }, + { + "declaration": 1887, + "isOffset": false, + "isSlot": false, + "src": "24113:3:5", + "valueSize": 1 + }, + { + "declaration": 1887, + "isOffset": false, + "isSlot": false, + "src": "24966:3:5", + "valueSize": 1 + }, + { + "declaration": 1887, + "isOffset": false, + "isSlot": false, + "src": "24984:3:5", + "valueSize": 1 + }, + { + "declaration": 1887, + "isOffset": false, + "isSlot": false, + "src": "25707:3:5", + "valueSize": 1 + }, + { + "declaration": 1887, + "isOffset": false, + "isSlot": false, + "src": "25721:3:5", + "valueSize": 1 + }, + { + "declaration": 1887, + "isOffset": false, + "isSlot": false, + "src": "26128:3:5", + "valueSize": 1 + } + ], + "id": 1934, + "nodeType": "InlineAssembly", + "src": "21207:5827:5" + } + ] + }, + { + "expression": { + "components": [ + { + "id": 1936, + "name": "X", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1879, + "src": "27093:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1937, + "name": "Y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1881, + "src": "27095:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1938, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "27092:5:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "functionReturnParameters": 1882, + "id": 1939, + "nodeType": "Return", + "src": "27085:12:5" + } + ] + }, + "documentation": { + "id": 1868, + "nodeType": "StructuredDocumentation", + "src": "20489:179:5", + "text": " @dev Computation of uG+vQ using Strauss-Shamir's trick, G basepoint, Q public key\n Returns affine representation of point (normalized) \n " + }, + "id": 1941, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ecZZ_mulmuladd", + "nameLocation": "20682:14:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1877, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1870, + "mutability": "mutable", + "name": "Q0", + "nameLocation": "20714:2:5", + "nodeType": "VariableDeclaration", + "scope": 1941, + "src": "20706:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1869, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20706:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1872, + "mutability": "mutable", + "name": "Q1", + "nameLocation": "20734:2:5", + "nodeType": "VariableDeclaration", + "scope": 1941, + "src": "20726:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1871, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20726:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1874, + "mutability": "mutable", + "name": "scalar_u", + "nameLocation": "20785:8:5", + "nodeType": "VariableDeclaration", + "scope": 1941, + "src": "20777:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1873, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20777:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1876, + "mutability": "mutable", + "name": "scalar_v", + "nameLocation": "20811:8:5", + "nodeType": "VariableDeclaration", + "scope": 1941, + "src": "20803:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1875, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20803:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "20696:129:5" + }, + "returnParameters": { + "id": 1882, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1879, + "mutability": "mutable", + "name": "X", + "nameLocation": "20857:1:5", + "nodeType": "VariableDeclaration", + "scope": 1941, + "src": "20849:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1878, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20849:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1881, + "mutability": "mutable", + "name": "Y", + "nameLocation": "20868:1:5", + "nodeType": "VariableDeclaration", + "scope": 1941, + "src": "20860:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1880, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20860:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "20848:22:5" + }, + "scope": 2309, + "src": "20673:6431:5", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2084, + "nodeType": "Block", + "src": "27601:6511:5", + "statements": [ + { + "id": 2083, + "nodeType": "UncheckedBlock", + "src": "27611:6479:5", + "statements": [ + { + "assignments": [ + 1953 + ], + "declarations": [ + { + "constant": false, + "id": 1953, + "mutability": "mutable", + "name": "zz", + "nameLocation": "27643:2:5", + "nodeType": "VariableDeclaration", + "scope": 2083, + "src": "27635:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1952, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27635:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1954, + "nodeType": "VariableDeclarationStatement", + "src": "27635:10:5" + }, + { + "assignments": [ + 1960 + ], + "declarations": [ + { + "constant": false, + "id": 1960, + "mutability": "mutable", + "name": "T", + "nameLocation": "27717:1:5", + "nodeType": "VariableDeclaration", + "scope": 2083, + "src": "27699:19:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6]" + }, + "typeName": { + "baseType": { + "id": 1958, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27699:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1959, + "length": { + "hexValue": "36", + "id": 1957, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27707:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_6_by_1", + "typeString": "int_const 6" + }, + "value": "6" + }, + "nodeType": "ArrayTypeName", + "src": "27699:10:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_storage_ptr", + "typeString": "uint256[6]" + } + }, + "visibility": "internal" + } + ], + "id": 1961, + "nodeType": "VariableDeclarationStatement", + "src": "27699:19:5" + }, + { + "expression": { + "id": 1964, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1962, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1953, + "src": "27732:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "323536", + "id": 1963, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27737:3:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + }, + "value": "256" + }, + "src": "27732:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1965, + "nodeType": "ExpressionStatement", + "src": "27732:8:5" + }, + { + "body": { + "id": 2080, + "nodeType": "Block", + "src": "27787:552:5", + "statements": [ + { + "expression": { + "id": 1975, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1971, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1953, + "src": "27805:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1974, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1972, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1953, + "src": "27810:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 1973, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27815:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "27810:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27805:11:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1976, + "nodeType": "ExpressionStatement", + "src": "27805:11:5" + }, + { + "expression": { + "id": 2078, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 1977, + "name": "T", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1960, + "src": "27884:1:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 1979, + "indexExpression": { + "hexValue": "30", + "id": 1978, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27886:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "27884:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2077, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3634", + "id": 1980, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27891:2:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2075, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2051, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2038, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2028, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2015, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2002, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1989, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "313238", + "id": 1981, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27942:3:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1987, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1984, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1982, + "name": "scalar_v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1945, + "src": "27950:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "id": 1983, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1953, + "src": "27962:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27950:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1985, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "27949:16:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "31", + "id": 1986, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27968:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "27949:20:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1988, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "27948:22:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27942:28:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2001, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3634", + "id": 1990, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27973:2:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1999, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1996, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1991, + "name": "scalar_v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1945, + "src": "27980:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1994, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1992, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1953, + "src": "27993:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "3634", + "id": 1993, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27998:2:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "27993:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1995, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "27992:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27980:21:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1997, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "27979:23:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "31", + "id": 1998, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28005:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "27979:27:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2000, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "27978:29:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27973:34:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27942:65:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2014, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3332", + "id": 2003, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28038:2:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2012, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2009, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2004, + "name": "scalar_v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1945, + "src": "28045:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2007, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2005, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1953, + "src": "28058:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "313238", + "id": 2006, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28063:3:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "28058:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2008, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28057:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28045:22:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2010, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28044:24:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "31", + "id": 2011, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28071:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "28044:28:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2013, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28043:30:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28038:35:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27942:131:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2027, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3136", + "id": 2016, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28076:2:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2025, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2022, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2017, + "name": "scalar_v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1945, + "src": "28083:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2020, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2018, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1953, + "src": "28096:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "313932", + "id": 2019, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28101:3:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_192_by_1", + "typeString": "int_const 192" + }, + "value": "192" + }, + "src": "28096:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2021, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28095:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28083:22:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2023, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28082:24:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "31", + "id": 2024, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28109:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "28082:28:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2026, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28081:30:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28076:35:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27942:169:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2037, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "38", + "id": 2029, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28142:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2035, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2032, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2030, + "name": "scalar_u", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1943, + "src": "28148:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "id": 2031, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1953, + "src": "28160:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28148:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2033, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28147:16:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "31", + "id": 2034, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28166:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "28147:20:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2036, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28146:22:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28142:26:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27942:226:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2050, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "34", + "id": 2039, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28171:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2048, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2045, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2040, + "name": "scalar_u", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1943, + "src": "28177:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2043, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2041, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1953, + "src": "28190:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "3634", + "id": 2042, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28195:2:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "28190:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2044, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28189:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28177:21:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2046, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28176:23:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "31", + "id": 2047, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28202:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "28176:27:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2049, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28175:29:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28171:33:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27942:262:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2063, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 2052, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28235:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2061, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2058, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2053, + "name": "scalar_u", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1943, + "src": "28241:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2056, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2054, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1953, + "src": "28254:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "313238", + "id": 2055, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28259:3:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "28254:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2057, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28253:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28241:22:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2059, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28240:24:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "31", + "id": 2060, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28267:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "28240:28:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2062, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28239:30:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28235:34:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27942:327:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2073, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2070, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2065, + "name": "scalar_u", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1943, + "src": "28274:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2068, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2066, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1953, + "src": "28287:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "313932", + "id": 2067, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28292:3:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_192_by_1", + "typeString": "int_const 192" + }, + "value": "192" + }, + "src": "28287:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2069, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28286:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28274:22:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2071, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28273:24:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "31", + "id": 2072, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28300:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "28273:28:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2074, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28272:30:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27942:360:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2076, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "27916:408:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27891:433:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27884:440:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2079, + "nodeType": "ExpressionStatement", + "src": "27884:440:5" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1970, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 1966, + "name": "T", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1960, + "src": "27776:1:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 1968, + "indexExpression": { + "hexValue": "30", + "id": 1967, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27778:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "27776:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1969, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27784:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "27776:9:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2081, + "nodeType": "WhileStatement", + "src": "27769:570:5" + }, + { + "AST": { + "nativeSrc": "28361:5719:5", + "nodeType": "YulBlock", + "src": "28361:5719:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dataPointer", + "nativeSrc": "28391:11:5", + "nodeType": "YulIdentifier", + "src": "28391:11:5" + }, + { + "name": "T", + "nativeSrc": "28404:1:5", + "nodeType": "YulIdentifier", + "src": "28404:1:5" + }, + { + "arguments": [ + { + "name": "T", + "nativeSrc": "28413:1:5", + "nodeType": "YulIdentifier", + "src": "28413:1:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "28407:5:5", + "nodeType": "YulIdentifier", + "src": "28407:5:5" + }, + "nativeSrc": "28407:8:5", + "nodeType": "YulFunctionCall", + "src": "28407:8:5" + }, + { + "kind": "number", + "nativeSrc": "28417:2:5", + "nodeType": "YulLiteral", + "src": "28417:2:5", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "extcodecopy", + "nativeSrc": "28379:11:5", + "nodeType": "YulIdentifier", + "src": "28379:11:5" + }, + "nativeSrc": "28379:41:5", + "nodeType": "YulFunctionCall", + "src": "28379:41:5" + }, + "nativeSrc": "28379:41:5", + "nodeType": "YulExpressionStatement", + "src": "28379:41:5" + }, + { + "nativeSrc": "28437:23:5", + "nodeType": "YulVariableDeclaration", + "src": "28437:23:5", + "value": { + "arguments": [ + { + "name": "zz", + "nativeSrc": "28454:2:5", + "nodeType": "YulIdentifier", + "src": "28454:2:5" + }, + { + "kind": "number", + "nativeSrc": "28458:1:5", + "nodeType": "YulLiteral", + "src": "28458:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "28450:3:5", + "nodeType": "YulIdentifier", + "src": "28450:3:5" + }, + "nativeSrc": "28450:10:5", + "nodeType": "YulFunctionCall", + "src": "28450:10:5" + }, + "variables": [ + { + "name": "index", + "nativeSrc": "28441:5:5", + "nodeType": "YulTypedName", + "src": "28441:5:5", + "type": "" + } + ] + }, + { + "nativeSrc": "28477:13:5", + "nodeType": "YulAssignment", + "src": "28477:13:5", + "value": { + "arguments": [ + { + "name": "T", + "nativeSrc": "28488:1:5", + "nodeType": "YulIdentifier", + "src": "28488:1:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "28482:5:5", + "nodeType": "YulIdentifier", + "src": "28482:5:5" + }, + "nativeSrc": "28482:8:5", + "nodeType": "YulFunctionCall", + "src": "28482:8:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "28477:1:5", + "nodeType": "YulIdentifier", + "src": "28477:1:5" + } + ] + }, + { + "nativeSrc": "28507:26:5", + "nodeType": "YulVariableDeclaration", + "src": "28507:26:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "28526:1:5", + "nodeType": "YulIdentifier", + "src": "28526:1:5" + }, + { + "kind": "number", + "nativeSrc": "28529:2:5", + "nodeType": "YulLiteral", + "src": "28529:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "28522:3:5", + "nodeType": "YulIdentifier", + "src": "28522:3:5" + }, + "nativeSrc": "28522:10:5", + "nodeType": "YulFunctionCall", + "src": "28522:10:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "28516:5:5", + "nodeType": "YulIdentifier", + "src": "28516:5:5" + }, + "nativeSrc": "28516:17:5", + "nodeType": "YulFunctionCall", + "src": "28516:17:5" + }, + "variables": [ + { + "name": "Y", + "nativeSrc": "28511:1:5", + "nodeType": "YulTypedName", + "src": "28511:1:5", + "type": "" + } + ] + }, + { + "nativeSrc": "28550:12:5", + "nodeType": "YulVariableDeclaration", + "src": "28550:12:5", + "value": { + "kind": "number", + "nativeSrc": "28561:1:5", + "nodeType": "YulLiteral", + "src": "28561:1:5", + "type": "", + "value": "1" + }, + "variables": [ + { + "name": "zzz", + "nativeSrc": "28554:3:5", + "nodeType": "YulTypedName", + "src": "28554:3:5", + "type": "" + } + ] + }, + { + "nativeSrc": "28579:7:5", + "nodeType": "YulAssignment", + "src": "28579:7:5", + "value": { + "kind": "number", + "nativeSrc": "28585:1:5", + "nodeType": "YulLiteral", + "src": "28585:1:5", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "28579:2:5", + "nodeType": "YulIdentifier", + "src": "28579:2:5" + } + ] + }, + { + "body": { + "nativeSrc": "28734:4501:5", + "nodeType": "YulBlock", + "src": "28734:4501:5", + "statements": [ + { + "nativeSrc": "28792:1095:5", + "nodeType": "YulBlock", + "src": "28792:1095:5", + "statements": [ + { + "nativeSrc": "28818:26:5", + "nodeType": "YulVariableDeclaration", + "src": "28818:26:5", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "28836:1:5", + "nodeType": "YulLiteral", + "src": "28836:1:5", + "type": "", + "value": "2" + }, + { + "name": "Y", + "nativeSrc": "28839:1:5", + "nodeType": "YulIdentifier", + "src": "28839:1:5" + }, + { + "name": "p", + "nativeSrc": "28842:1:5", + "nodeType": "YulIdentifier", + "src": "28842:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "28829:6:5", + "nodeType": "YulIdentifier", + "src": "28829:6:5" + }, + "nativeSrc": "28829:15:5", + "nodeType": "YulFunctionCall", + "src": "28829:15:5" + }, + "variables": [ + { + "name": "TT1", + "nativeSrc": "28822:3:5", + "nodeType": "YulTypedName", + "src": "28822:3:5", + "type": "" + } + ] + }, + { + "nativeSrc": "28888:29:5", + "nodeType": "YulVariableDeclaration", + "src": "28888:29:5", + "value": { + "arguments": [ + { + "name": "TT1", + "nativeSrc": "28905:3:5", + "nodeType": "YulIdentifier", + "src": "28905:3:5" + }, + { + "name": "TT1", + "nativeSrc": "28910:3:5", + "nodeType": "YulIdentifier", + "src": "28910:3:5" + }, + { + "name": "p", + "nativeSrc": "28915:1:5", + "nodeType": "YulIdentifier", + "src": "28915:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "28898:6:5", + "nodeType": "YulIdentifier", + "src": "28898:6:5" + }, + "nativeSrc": "28898:19:5", + "nodeType": "YulFunctionCall", + "src": "28898:19:5" + }, + "variables": [ + { + "name": "T2", + "nativeSrc": "28892:2:5", + "nodeType": "YulTypedName", + "src": "28892:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "28951:26:5", + "nodeType": "YulVariableDeclaration", + "src": "28951:26:5", + "value": { + "arguments": [ + { + "name": "X", + "nativeSrc": "28968:1:5", + "nodeType": "YulIdentifier", + "src": "28968:1:5" + }, + { + "name": "T2", + "nativeSrc": "28971:2:5", + "nodeType": "YulIdentifier", + "src": "28971:2:5" + }, + { + "name": "p", + "nativeSrc": "28975:1:5", + "nodeType": "YulIdentifier", + "src": "28975:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "28961:6:5", + "nodeType": "YulIdentifier", + "src": "28961:6:5" + }, + "nativeSrc": "28961:16:5", + "nodeType": "YulFunctionCall", + "src": "28961:16:5" + }, + "variables": [ + { + "name": "T3", + "nativeSrc": "28955:2:5", + "nodeType": "YulTypedName", + "src": "28955:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "29014:28:5", + "nodeType": "YulVariableDeclaration", + "src": "29014:28:5", + "value": { + "arguments": [ + { + "name": "TT1", + "nativeSrc": "29031:3:5", + "nodeType": "YulIdentifier", + "src": "29031:3:5" + }, + { + "name": "T2", + "nativeSrc": "29036:2:5", + "nodeType": "YulIdentifier", + "src": "29036:2:5" + }, + { + "name": "p", + "nativeSrc": "29040:1:5", + "nodeType": "YulIdentifier", + "src": "29040:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "29024:6:5", + "nodeType": "YulIdentifier", + "src": "29024:6:5" + }, + "nativeSrc": "29024:18:5", + "nodeType": "YulFunctionCall", + "src": "29024:18:5" + }, + "variables": [ + { + "name": "T1", + "nativeSrc": "29018:2:5", + "nodeType": "YulTypedName", + "src": "29018:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "29075:77:5", + "nodeType": "YulVariableDeclaration", + "src": "29075:77:5", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "29092:1:5", + "nodeType": "YulLiteral", + "src": "29092:1:5", + "type": "", + "value": "3" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "X", + "nativeSrc": "29109:1:5", + "nodeType": "YulIdentifier", + "src": "29109:1:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "29116:1:5", + "nodeType": "YulIdentifier", + "src": "29116:1:5" + }, + { + "name": "zz", + "nativeSrc": "29119:2:5", + "nodeType": "YulIdentifier", + "src": "29119:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "29112:3:5", + "nodeType": "YulIdentifier", + "src": "29112:3:5" + }, + "nativeSrc": "29112:10:5", + "nodeType": "YulFunctionCall", + "src": "29112:10:5" + }, + { + "name": "p", + "nativeSrc": "29124:1:5", + "nodeType": "YulIdentifier", + "src": "29124:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "29102:6:5", + "nodeType": "YulIdentifier", + "src": "29102:6:5" + }, + "nativeSrc": "29102:24:5", + "nodeType": "YulFunctionCall", + "src": "29102:24:5" + }, + { + "arguments": [ + { + "name": "X", + "nativeSrc": "29135:1:5", + "nodeType": "YulIdentifier", + "src": "29135:1:5" + }, + { + "name": "zz", + "nativeSrc": "29138:2:5", + "nodeType": "YulIdentifier", + "src": "29138:2:5" + }, + { + "name": "p", + "nativeSrc": "29142:1:5", + "nodeType": "YulIdentifier", + "src": "29142:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "29128:6:5", + "nodeType": "YulIdentifier", + "src": "29128:6:5" + }, + "nativeSrc": "29128:16:5", + "nodeType": "YulFunctionCall", + "src": "29128:16:5" + }, + { + "name": "p", + "nativeSrc": "29146:1:5", + "nodeType": "YulIdentifier", + "src": "29146:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "29095:6:5", + "nodeType": "YulIdentifier", + "src": "29095:6:5" + }, + "nativeSrc": "29095:53:5", + "nodeType": "YulFunctionCall", + "src": "29095:53:5" + }, + { + "name": "p", + "nativeSrc": "29150:1:5", + "nodeType": "YulIdentifier", + "src": "29150:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "29085:6:5", + "nodeType": "YulIdentifier", + "src": "29085:6:5" + }, + "nativeSrc": "29085:67:5", + "nodeType": "YulFunctionCall", + "src": "29085:67:5" + }, + "variables": [ + { + "name": "T4", + "nativeSrc": "29079:2:5", + "nodeType": "YulTypedName", + "src": "29079:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "29201:25:5", + "nodeType": "YulAssignment", + "src": "29201:25:5", + "value": { + "arguments": [ + { + "name": "T1", + "nativeSrc": "29215:2:5", + "nodeType": "YulIdentifier", + "src": "29215:2:5" + }, + { + "name": "zzz", + "nativeSrc": "29219:3:5", + "nodeType": "YulIdentifier", + "src": "29219:3:5" + }, + { + "name": "p", + "nativeSrc": "29224:1:5", + "nodeType": "YulIdentifier", + "src": "29224:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "29208:6:5", + "nodeType": "YulIdentifier", + "src": "29208:6:5" + }, + "nativeSrc": "29208:18:5", + "nodeType": "YulFunctionCall", + "src": "29208:18:5" + }, + "variableNames": [ + { + "name": "zzz", + "nativeSrc": "29201:3:5", + "nodeType": "YulIdentifier", + "src": "29201:3:5" + } + ] + }, + { + "nativeSrc": "29265:23:5", + "nodeType": "YulAssignment", + "src": "29265:23:5", + "value": { + "arguments": [ + { + "name": "T2", + "nativeSrc": "29278:2:5", + "nodeType": "YulIdentifier", + "src": "29278:2:5" + }, + { + "name": "zz", + "nativeSrc": "29282:2:5", + "nodeType": "YulIdentifier", + "src": "29282:2:5" + }, + { + "name": "p", + "nativeSrc": "29286:1:5", + "nodeType": "YulIdentifier", + "src": "29286:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "29271:6:5", + "nodeType": "YulIdentifier", + "src": "29271:6:5" + }, + "nativeSrc": "29271:17:5", + "nodeType": "YulFunctionCall", + "src": "29271:17:5" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "29265:2:5", + "nodeType": "YulIdentifier", + "src": "29265:2:5" + } + ] + }, + { + "nativeSrc": "29334:57:5", + "nodeType": "YulAssignment", + "src": "29334:57:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "T4", + "nativeSrc": "29353:2:5", + "nodeType": "YulIdentifier", + "src": "29353:2:5" + }, + { + "name": "T4", + "nativeSrc": "29357:2:5", + "nodeType": "YulIdentifier", + "src": "29357:2:5" + }, + { + "name": "p", + "nativeSrc": "29361:1:5", + "nodeType": "YulIdentifier", + "src": "29361:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "29346:6:5", + "nodeType": "YulIdentifier", + "src": "29346:6:5" + }, + "nativeSrc": "29346:17:5", + "nodeType": "YulFunctionCall", + "src": "29346:17:5" + }, + { + "arguments": [ + { + "name": "minus_2", + "nativeSrc": "29372:7:5", + "nodeType": "YulIdentifier", + "src": "29372:7:5" + }, + { + "name": "T3", + "nativeSrc": "29381:2:5", + "nodeType": "YulIdentifier", + "src": "29381:2:5" + }, + { + "name": "p", + "nativeSrc": "29385:1:5", + "nodeType": "YulIdentifier", + "src": "29385:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "29365:6:5", + "nodeType": "YulIdentifier", + "src": "29365:6:5" + }, + "nativeSrc": "29365:22:5", + "nodeType": "YulFunctionCall", + "src": "29365:22:5" + }, + { + "name": "p", + "nativeSrc": "29389:1:5", + "nodeType": "YulIdentifier", + "src": "29389:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "29339:6:5", + "nodeType": "YulIdentifier", + "src": "29339:6:5" + }, + "nativeSrc": "29339:52:5", + "nodeType": "YulFunctionCall", + "src": "29339:52:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "29334:1:5", + "nodeType": "YulIdentifier", + "src": "29334:1:5" + } + ] + }, + { + "nativeSrc": "29504:49:5", + "nodeType": "YulVariableDeclaration", + "src": "29504:49:5", + "value": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "29521:2:5", + "nodeType": "YulIdentifier", + "src": "29521:2:5" + }, + { + "arguments": [ + { + "name": "X", + "nativeSrc": "29532:1:5", + "nodeType": "YulIdentifier", + "src": "29532:1:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "29539:1:5", + "nodeType": "YulIdentifier", + "src": "29539:1:5" + }, + { + "name": "T3", + "nativeSrc": "29542:2:5", + "nodeType": "YulIdentifier", + "src": "29542:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "29535:3:5", + "nodeType": "YulIdentifier", + "src": "29535:3:5" + }, + "nativeSrc": "29535:10:5", + "nodeType": "YulFunctionCall", + "src": "29535:10:5" + }, + { + "name": "p", + "nativeSrc": "29547:1:5", + "nodeType": "YulIdentifier", + "src": "29547:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "29525:6:5", + "nodeType": "YulIdentifier", + "src": "29525:6:5" + }, + "nativeSrc": "29525:24:5", + "nodeType": "YulFunctionCall", + "src": "29525:24:5" + }, + { + "name": "p", + "nativeSrc": "29551:1:5", + "nodeType": "YulIdentifier", + "src": "29551:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "29514:6:5", + "nodeType": "YulIdentifier", + "src": "29514:6:5" + }, + "nativeSrc": "29514:39:5", + "nodeType": "YulFunctionCall", + "src": "29514:39:5" + }, + "variables": [ + { + "name": "T5", + "nativeSrc": "29508:2:5", + "nodeType": "YulTypedName", + "src": "29508:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "29687:36:5", + "nodeType": "YulAssignment", + "src": "29687:36:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "T1", + "nativeSrc": "29706:2:5", + "nodeType": "YulIdentifier", + "src": "29706:2:5" + }, + { + "name": "Y", + "nativeSrc": "29710:1:5", + "nodeType": "YulIdentifier", + "src": "29710:1:5" + }, + { + "name": "p", + "nativeSrc": "29713:1:5", + "nodeType": "YulIdentifier", + "src": "29713:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "29699:6:5", + "nodeType": "YulIdentifier", + "src": "29699:6:5" + }, + "nativeSrc": "29699:16:5", + "nodeType": "YulFunctionCall", + "src": "29699:16:5" + }, + { + "name": "T5", + "nativeSrc": "29717:2:5", + "nodeType": "YulIdentifier", + "src": "29717:2:5" + }, + { + "name": "p", + "nativeSrc": "29721:1:5", + "nodeType": "YulIdentifier", + "src": "29721:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "29692:6:5", + "nodeType": "YulIdentifier", + "src": "29692:6:5" + }, + "nativeSrc": "29692:31:5", + "nodeType": "YulFunctionCall", + "src": "29692:31:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "29687:1:5", + "nodeType": "YulIdentifier", + "src": "29687:1:5" + } + ] + } + ] + }, + { + "nativeSrc": "29908:1058:5", + "nodeType": "YulBlock", + "src": "29908:1058:5", + "statements": [ + { + "nativeSrc": "29934:90:5", + "nodeType": "YulVariableDeclaration", + "src": "29934:90:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "29952:2:5", + "nodeType": "YulLiteral", + "src": "29952:2:5", + "type": "", + "value": "13" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "29964:5:5", + "nodeType": "YulIdentifier", + "src": "29964:5:5" + }, + { + "name": "scalar_v", + "nativeSrc": "29971:8:5", + "nodeType": "YulIdentifier", + "src": "29971:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "29960:3:5", + "nodeType": "YulIdentifier", + "src": "29960:3:5" + }, + "nativeSrc": "29960:20:5", + "nodeType": "YulFunctionCall", + "src": "29960:20:5" + }, + { + "kind": "number", + "nativeSrc": "29982:1:5", + "nodeType": "YulLiteral", + "src": "29982:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "29956:3:5", + "nodeType": "YulIdentifier", + "src": "29956:3:5" + }, + "nativeSrc": "29956:28:5", + "nodeType": "YulFunctionCall", + "src": "29956:28:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "29948:3:5", + "nodeType": "YulIdentifier", + "src": "29948:3:5" + }, + "nativeSrc": "29948:37:5", + "nodeType": "YulFunctionCall", + "src": "29948:37:5" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "29991:1:5", + "nodeType": "YulLiteral", + "src": "29991:1:5", + "type": "", + "value": "9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "30002:5:5", + "nodeType": "YulIdentifier", + "src": "30002:5:5" + }, + { + "name": "scalar_u", + "nativeSrc": "30009:8:5", + "nodeType": "YulIdentifier", + "src": "30009:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "29998:3:5", + "nodeType": "YulIdentifier", + "src": "29998:3:5" + }, + "nativeSrc": "29998:20:5", + "nodeType": "YulFunctionCall", + "src": "29998:20:5" + }, + { + "kind": "number", + "nativeSrc": "30020:1:5", + "nodeType": "YulLiteral", + "src": "30020:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "29994:3:5", + "nodeType": "YulIdentifier", + "src": "29994:3:5" + }, + "nativeSrc": "29994:28:5", + "nodeType": "YulFunctionCall", + "src": "29994:28:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "29987:3:5", + "nodeType": "YulIdentifier", + "src": "29987:3:5" + }, + "nativeSrc": "29987:36:5", + "nodeType": "YulFunctionCall", + "src": "29987:36:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "29944:3:5", + "nodeType": "YulIdentifier", + "src": "29944:3:5" + }, + "nativeSrc": "29944:80:5", + "nodeType": "YulFunctionCall", + "src": "29944:80:5" + }, + "variables": [ + { + "name": "T4", + "nativeSrc": "29938:2:5", + "nodeType": "YulTypedName", + "src": "29938:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "30049:28:5", + "nodeType": "YulVariableDeclaration", + "src": "30049:28:5", + "value": { + "arguments": [ + { + "name": "index", + "nativeSrc": "30067:5:5", + "nodeType": "YulIdentifier", + "src": "30067:5:5" + }, + { + "kind": "number", + "nativeSrc": "30074:2:5", + "nodeType": "YulLiteral", + "src": "30074:2:5", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "30063:3:5", + "nodeType": "YulIdentifier", + "src": "30063:3:5" + }, + "nativeSrc": "30063:14:5", + "nodeType": "YulFunctionCall", + "src": "30063:14:5" + }, + "variables": [ + { + "name": "index2", + "nativeSrc": "30053:6:5", + "nodeType": "YulTypedName", + "src": "30053:6:5", + "type": "" + } + ] + }, + { + "nativeSrc": "30102:129:5", + "nodeType": "YulVariableDeclaration", + "src": "30102:129:5", + "value": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "30144:2:5", + "nodeType": "YulIdentifier", + "src": "30144:2:5" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30156:2:5", + "nodeType": "YulLiteral", + "src": "30156:2:5", + "type": "", + "value": "12" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index2", + "nativeSrc": "30168:6:5", + "nodeType": "YulIdentifier", + "src": "30168:6:5" + }, + { + "name": "scalar_v", + "nativeSrc": "30176:8:5", + "nodeType": "YulIdentifier", + "src": "30176:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "30164:3:5", + "nodeType": "YulIdentifier", + "src": "30164:3:5" + }, + "nativeSrc": "30164:21:5", + "nodeType": "YulFunctionCall", + "src": "30164:21:5" + }, + { + "kind": "number", + "nativeSrc": "30187:1:5", + "nodeType": "YulLiteral", + "src": "30187:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "30160:3:5", + "nodeType": "YulIdentifier", + "src": "30160:3:5" + }, + "nativeSrc": "30160:29:5", + "nodeType": "YulFunctionCall", + "src": "30160:29:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "30152:3:5", + "nodeType": "YulIdentifier", + "src": "30152:3:5" + }, + "nativeSrc": "30152:38:5", + "nodeType": "YulFunctionCall", + "src": "30152:38:5" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30196:1:5", + "nodeType": "YulLiteral", + "src": "30196:1:5", + "type": "", + "value": "8" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index2", + "nativeSrc": "30207:6:5", + "nodeType": "YulIdentifier", + "src": "30207:6:5" + }, + { + "name": "scalar_u", + "nativeSrc": "30215:8:5", + "nodeType": "YulIdentifier", + "src": "30215:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "30203:3:5", + "nodeType": "YulIdentifier", + "src": "30203:3:5" + }, + "nativeSrc": "30203:21:5", + "nodeType": "YulFunctionCall", + "src": "30203:21:5" + }, + { + "kind": "number", + "nativeSrc": "30226:1:5", + "nodeType": "YulLiteral", + "src": "30226:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "30199:3:5", + "nodeType": "YulIdentifier", + "src": "30199:3:5" + }, + "nativeSrc": "30199:29:5", + "nodeType": "YulFunctionCall", + "src": "30199:29:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "30192:3:5", + "nodeType": "YulIdentifier", + "src": "30192:3:5" + }, + "nativeSrc": "30192:37:5", + "nodeType": "YulFunctionCall", + "src": "30192:37:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30148:3:5", + "nodeType": "YulIdentifier", + "src": "30148:3:5" + }, + "nativeSrc": "30148:82:5", + "nodeType": "YulFunctionCall", + "src": "30148:82:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30140:3:5", + "nodeType": "YulIdentifier", + "src": "30140:3:5" + }, + "nativeSrc": "30140:91:5", + "nodeType": "YulFunctionCall", + "src": "30140:91:5" + }, + "variables": [ + { + "name": "T3", + "nativeSrc": "30106:2:5", + "nodeType": "YulTypedName", + "src": "30106:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "30256:29:5", + "nodeType": "YulVariableDeclaration", + "src": "30256:29:5", + "value": { + "arguments": [ + { + "name": "index2", + "nativeSrc": "30274:6:5", + "nodeType": "YulIdentifier", + "src": "30274:6:5" + }, + { + "kind": "number", + "nativeSrc": "30282:2:5", + "nodeType": "YulLiteral", + "src": "30282:2:5", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "30270:3:5", + "nodeType": "YulIdentifier", + "src": "30270:3:5" + }, + "nativeSrc": "30270:15:5", + "nodeType": "YulFunctionCall", + "src": "30270:15:5" + }, + "variables": [ + { + "name": "index3", + "nativeSrc": "30260:6:5", + "nodeType": "YulTypedName", + "src": "30260:6:5", + "type": "" + } + ] + }, + { + "nativeSrc": "30310:129:5", + "nodeType": "YulVariableDeclaration", + "src": "30310:129:5", + "value": { + "arguments": [ + { + "name": "T3", + "nativeSrc": "30352:2:5", + "nodeType": "YulIdentifier", + "src": "30352:2:5" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30364:2:5", + "nodeType": "YulLiteral", + "src": "30364:2:5", + "type": "", + "value": "11" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index3", + "nativeSrc": "30376:6:5", + "nodeType": "YulIdentifier", + "src": "30376:6:5" + }, + { + "name": "scalar_v", + "nativeSrc": "30384:8:5", + "nodeType": "YulIdentifier", + "src": "30384:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "30372:3:5", + "nodeType": "YulIdentifier", + "src": "30372:3:5" + }, + "nativeSrc": "30372:21:5", + "nodeType": "YulFunctionCall", + "src": "30372:21:5" + }, + { + "kind": "number", + "nativeSrc": "30395:1:5", + "nodeType": "YulLiteral", + "src": "30395:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "30368:3:5", + "nodeType": "YulIdentifier", + "src": "30368:3:5" + }, + "nativeSrc": "30368:29:5", + "nodeType": "YulFunctionCall", + "src": "30368:29:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "30360:3:5", + "nodeType": "YulIdentifier", + "src": "30360:3:5" + }, + "nativeSrc": "30360:38:5", + "nodeType": "YulFunctionCall", + "src": "30360:38:5" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30404:1:5", + "nodeType": "YulLiteral", + "src": "30404:1:5", + "type": "", + "value": "7" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index3", + "nativeSrc": "30415:6:5", + "nodeType": "YulIdentifier", + "src": "30415:6:5" + }, + { + "name": "scalar_u", + "nativeSrc": "30423:8:5", + "nodeType": "YulIdentifier", + "src": "30423:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "30411:3:5", + "nodeType": "YulIdentifier", + "src": "30411:3:5" + }, + "nativeSrc": "30411:21:5", + "nodeType": "YulFunctionCall", + "src": "30411:21:5" + }, + { + "kind": "number", + "nativeSrc": "30434:1:5", + "nodeType": "YulLiteral", + "src": "30434:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "30407:3:5", + "nodeType": "YulIdentifier", + "src": "30407:3:5" + }, + "nativeSrc": "30407:29:5", + "nodeType": "YulFunctionCall", + "src": "30407:29:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "30400:3:5", + "nodeType": "YulIdentifier", + "src": "30400:3:5" + }, + "nativeSrc": "30400:37:5", + "nodeType": "YulFunctionCall", + "src": "30400:37:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30356:3:5", + "nodeType": "YulIdentifier", + "src": "30356:3:5" + }, + "nativeSrc": "30356:82:5", + "nodeType": "YulFunctionCall", + "src": "30356:82:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30348:3:5", + "nodeType": "YulIdentifier", + "src": "30348:3:5" + }, + "nativeSrc": "30348:91:5", + "nodeType": "YulFunctionCall", + "src": "30348:91:5" + }, + "variables": [ + { + "name": "T2", + "nativeSrc": "30314:2:5", + "nodeType": "YulTypedName", + "src": "30314:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "30464:24:5", + "nodeType": "YulAssignment", + "src": "30464:24:5", + "value": { + "arguments": [ + { + "name": "index3", + "nativeSrc": "30477:6:5", + "nodeType": "YulIdentifier", + "src": "30477:6:5" + }, + { + "kind": "number", + "nativeSrc": "30485:2:5", + "nodeType": "YulLiteral", + "src": "30485:2:5", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "30473:3:5", + "nodeType": "YulIdentifier", + "src": "30473:3:5" + }, + "nativeSrc": "30473:15:5", + "nodeType": "YulFunctionCall", + "src": "30473:15:5" + }, + "variableNames": [ + { + "name": "index", + "nativeSrc": "30464:5:5", + "nodeType": "YulIdentifier", + "src": "30464:5:5" + } + ] + }, + { + "nativeSrc": "30513:127:5", + "nodeType": "YulVariableDeclaration", + "src": "30513:127:5", + "value": { + "arguments": [ + { + "name": "T2", + "nativeSrc": "30555:2:5", + "nodeType": "YulIdentifier", + "src": "30555:2:5" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30567:2:5", + "nodeType": "YulLiteral", + "src": "30567:2:5", + "type": "", + "value": "10" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "30579:5:5", + "nodeType": "YulIdentifier", + "src": "30579:5:5" + }, + { + "name": "scalar_v", + "nativeSrc": "30586:8:5", + "nodeType": "YulIdentifier", + "src": "30586:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "30575:3:5", + "nodeType": "YulIdentifier", + "src": "30575:3:5" + }, + "nativeSrc": "30575:20:5", + "nodeType": "YulFunctionCall", + "src": "30575:20:5" + }, + { + "kind": "number", + "nativeSrc": "30597:1:5", + "nodeType": "YulLiteral", + "src": "30597:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "30571:3:5", + "nodeType": "YulIdentifier", + "src": "30571:3:5" + }, + "nativeSrc": "30571:28:5", + "nodeType": "YulFunctionCall", + "src": "30571:28:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "30563:3:5", + "nodeType": "YulIdentifier", + "src": "30563:3:5" + }, + "nativeSrc": "30563:37:5", + "nodeType": "YulFunctionCall", + "src": "30563:37:5" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30606:1:5", + "nodeType": "YulLiteral", + "src": "30606:1:5", + "type": "", + "value": "6" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "30617:5:5", + "nodeType": "YulIdentifier", + "src": "30617:5:5" + }, + { + "name": "scalar_u", + "nativeSrc": "30624:8:5", + "nodeType": "YulIdentifier", + "src": "30624:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "30613:3:5", + "nodeType": "YulIdentifier", + "src": "30613:3:5" + }, + "nativeSrc": "30613:20:5", + "nodeType": "YulFunctionCall", + "src": "30613:20:5" + }, + { + "kind": "number", + "nativeSrc": "30635:1:5", + "nodeType": "YulLiteral", + "src": "30635:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "30609:3:5", + "nodeType": "YulIdentifier", + "src": "30609:3:5" + }, + "nativeSrc": "30609:28:5", + "nodeType": "YulFunctionCall", + "src": "30609:28:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "30602:3:5", + "nodeType": "YulIdentifier", + "src": "30602:3:5" + }, + "nativeSrc": "30602:36:5", + "nodeType": "YulFunctionCall", + "src": "30602:36:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30559:3:5", + "nodeType": "YulIdentifier", + "src": "30559:3:5" + }, + "nativeSrc": "30559:80:5", + "nodeType": "YulFunctionCall", + "src": "30559:80:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30551:3:5", + "nodeType": "YulIdentifier", + "src": "30551:3:5" + }, + "nativeSrc": "30551:89:5", + "nodeType": "YulFunctionCall", + "src": "30551:89:5" + }, + "variables": [ + { + "name": "T1", + "nativeSrc": "30517:2:5", + "nodeType": "YulTypedName", + "src": "30517:2:5", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "30776:108:5", + "nodeType": "YulBlock", + "src": "30776:108:5", + "statements": [ + { + "nativeSrc": "30806:14:5", + "nodeType": "YulAssignment", + "src": "30806:14:5", + "value": { + "arguments": [ + { + "name": "p", + "nativeSrc": "30815:1:5", + "nodeType": "YulIdentifier", + "src": "30815:1:5" + }, + { + "name": "Y", + "nativeSrc": "30818:1:5", + "nodeType": "YulIdentifier", + "src": "30818:1:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "30811:3:5", + "nodeType": "YulIdentifier", + "src": "30811:3:5" + }, + "nativeSrc": "30811:9:5", + "nodeType": "YulFunctionCall", + "src": "30811:9:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "30806:1:5", + "nodeType": "YulIdentifier", + "src": "30806:1:5" + } + ] + }, + { + "nativeSrc": "30850:8:5", + "nodeType": "YulContinue", + "src": "30850:8:5" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "T1", + "nativeSrc": "30772:2:5", + "nodeType": "YulIdentifier", + "src": "30772:2:5" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "30765:6:5", + "nodeType": "YulIdentifier", + "src": "30765:6:5" + }, + "nativeSrc": "30765:10:5", + "nodeType": "YulFunctionCall", + "src": "30765:10:5" + }, + "nativeSrc": "30762:122:5", + "nodeType": "YulIf", + "src": "30762:122:5" + }, + { + "expression": { + "arguments": [ + { + "name": "dataPointer", + "nativeSrc": "30921:11:5", + "nodeType": "YulIdentifier", + "src": "30921:11:5" + }, + { + "name": "T", + "nativeSrc": "30934:1:5", + "nodeType": "YulIdentifier", + "src": "30934:1:5" + }, + { + "name": "T1", + "nativeSrc": "30937:2:5", + "nodeType": "YulIdentifier", + "src": "30937:2:5" + }, + { + "kind": "number", + "nativeSrc": "30941:2:5", + "nodeType": "YulLiteral", + "src": "30941:2:5", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "extcodecopy", + "nativeSrc": "30909:11:5", + "nodeType": "YulIdentifier", + "src": "30909:11:5" + }, + "nativeSrc": "30909:35:5", + "nodeType": "YulFunctionCall", + "src": "30909:35:5" + }, + "nativeSrc": "30909:35:5", + "nodeType": "YulExpressionStatement", + "src": "30909:35:5" + } + ] + }, + { + "nativeSrc": "30988:2229:5", + "nodeType": "YulBlock", + "src": "30988:2229:5", + "statements": [ + { + "body": { + "nativeSrc": "31155:231:5", + "nodeType": "YulBlock", + "src": "31155:231:5", + "statements": [ + { + "nativeSrc": "31185:13:5", + "nodeType": "YulAssignment", + "src": "31185:13:5", + "value": { + "arguments": [ + { + "name": "T", + "nativeSrc": "31196:1:5", + "nodeType": "YulIdentifier", + "src": "31196:1:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "31190:5:5", + "nodeType": "YulIdentifier", + "src": "31190:5:5" + }, + "nativeSrc": "31190:8:5", + "nodeType": "YulFunctionCall", + "src": "31190:8:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "31185:1:5", + "nodeType": "YulIdentifier", + "src": "31185:1:5" + } + ] + }, + { + "nativeSrc": "31227:22:5", + "nodeType": "YulAssignment", + "src": "31227:22:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "31242:1:5", + "nodeType": "YulIdentifier", + "src": "31242:1:5" + }, + { + "kind": "number", + "nativeSrc": "31245:2:5", + "nodeType": "YulLiteral", + "src": "31245:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31238:3:5", + "nodeType": "YulIdentifier", + "src": "31238:3:5" + }, + "nativeSrc": "31238:10:5", + "nodeType": "YulFunctionCall", + "src": "31238:10:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "31232:5:5", + "nodeType": "YulIdentifier", + "src": "31232:5:5" + }, + "nativeSrc": "31232:17:5", + "nodeType": "YulFunctionCall", + "src": "31232:17:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "31227:1:5", + "nodeType": "YulIdentifier", + "src": "31227:1:5" + } + ] + }, + { + "nativeSrc": "31278:7:5", + "nodeType": "YulAssignment", + "src": "31278:7:5", + "value": { + "kind": "number", + "nativeSrc": "31284:1:5", + "nodeType": "YulLiteral", + "src": "31284:1:5", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "31278:2:5", + "nodeType": "YulIdentifier", + "src": "31278:2:5" + } + ] + }, + { + "nativeSrc": "31314:8:5", + "nodeType": "YulAssignment", + "src": "31314:8:5", + "value": { + "kind": "number", + "nativeSrc": "31321:1:5", + "nodeType": "YulLiteral", + "src": "31321:1:5", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "zzz", + "nativeSrc": "31314:3:5", + "nodeType": "YulIdentifier", + "src": "31314:3:5" + } + ] + }, + { + "nativeSrc": "31352:8:5", + "nodeType": "YulContinue", + "src": "31352:8:5" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "zz", + "nativeSrc": "31151:2:5", + "nodeType": "YulIdentifier", + "src": "31151:2:5" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "31144:6:5", + "nodeType": "YulIdentifier", + "src": "31144:6:5" + }, + "nativeSrc": "31144:10:5", + "nodeType": "YulFunctionCall", + "src": "31144:10:5" + }, + "nativeSrc": "31141:245:5", + "nodeType": "YulIf", + "src": "31141:245:5" + }, + { + "nativeSrc": "31412:57:5", + "nodeType": "YulVariableDeclaration", + "src": "31412:57:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "31446:1:5", + "nodeType": "YulIdentifier", + "src": "31446:1:5" + }, + { + "kind": "number", + "nativeSrc": "31449:2:5", + "nodeType": "YulLiteral", + "src": "31449:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31442:3:5", + "nodeType": "YulIdentifier", + "src": "31442:3:5" + }, + "nativeSrc": "31442:10:5", + "nodeType": "YulFunctionCall", + "src": "31442:10:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "31436:5:5", + "nodeType": "YulIdentifier", + "src": "31436:5:5" + }, + "nativeSrc": "31436:17:5", + "nodeType": "YulFunctionCall", + "src": "31436:17:5" + }, + { + "name": "zzz", + "nativeSrc": "31455:3:5", + "nodeType": "YulIdentifier", + "src": "31455:3:5" + }, + { + "name": "p", + "nativeSrc": "31460:1:5", + "nodeType": "YulIdentifier", + "src": "31460:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "31429:6:5", + "nodeType": "YulIdentifier", + "src": "31429:6:5" + }, + "nativeSrc": "31429:33:5", + "nodeType": "YulFunctionCall", + "src": "31429:33:5" + }, + { + "name": "Y", + "nativeSrc": "31464:1:5", + "nodeType": "YulIdentifier", + "src": "31464:1:5" + }, + { + "name": "p", + "nativeSrc": "31467:1:5", + "nodeType": "YulIdentifier", + "src": "31467:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "31422:6:5", + "nodeType": "YulIdentifier", + "src": "31422:6:5" + }, + "nativeSrc": "31422:47:5", + "nodeType": "YulFunctionCall", + "src": "31422:47:5" + }, + "variables": [ + { + "name": "y2", + "nativeSrc": "31416:2:5", + "nodeType": "YulTypedName", + "src": "31416:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "31494:55:5", + "nodeType": "YulVariableDeclaration", + "src": "31494:55:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "31524:1:5", + "nodeType": "YulIdentifier", + "src": "31524:1:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "31518:5:5", + "nodeType": "YulIdentifier", + "src": "31518:5:5" + }, + "nativeSrc": "31518:8:5", + "nodeType": "YulFunctionCall", + "src": "31518:8:5" + }, + { + "name": "zz", + "nativeSrc": "31528:2:5", + "nodeType": "YulIdentifier", + "src": "31528:2:5" + }, + { + "name": "p", + "nativeSrc": "31532:1:5", + "nodeType": "YulIdentifier", + "src": "31532:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "31511:6:5", + "nodeType": "YulIdentifier", + "src": "31511:6:5" + }, + "nativeSrc": "31511:23:5", + "nodeType": "YulFunctionCall", + "src": "31511:23:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "31540:1:5", + "nodeType": "YulIdentifier", + "src": "31540:1:5" + }, + { + "name": "X", + "nativeSrc": "31543:1:5", + "nodeType": "YulIdentifier", + "src": "31543:1:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "31536:3:5", + "nodeType": "YulIdentifier", + "src": "31536:3:5" + }, + "nativeSrc": "31536:9:5", + "nodeType": "YulFunctionCall", + "src": "31536:9:5" + }, + { + "name": "p", + "nativeSrc": "31547:1:5", + "nodeType": "YulIdentifier", + "src": "31547:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "31504:6:5", + "nodeType": "YulIdentifier", + "src": "31504:6:5" + }, + "nativeSrc": "31504:45:5", + "nodeType": "YulFunctionCall", + "src": "31504:45:5" + }, + "variables": [ + { + "name": "T2", + "nativeSrc": "31498:2:5", + "nodeType": "YulTypedName", + "src": "31498:2:5", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "31645:1041:5", + "nodeType": "YulBlock", + "src": "31645:1041:5", + "statements": [ + { + "body": { + "nativeSrc": "31689:971:5", + "nodeType": "YulBlock", + "src": "31689:971:5", + "statements": [ + { + "nativeSrc": "31723:31:5", + "nodeType": "YulVariableDeclaration", + "src": "31723:31:5", + "value": { + "arguments": [ + { + "name": "minus_2", + "nativeSrc": "31740:7:5", + "nodeType": "YulIdentifier", + "src": "31740:7:5" + }, + { + "name": "Y", + "nativeSrc": "31749:1:5", + "nodeType": "YulIdentifier", + "src": "31749:1:5" + }, + { + "name": "p", + "nativeSrc": "31752:1:5", + "nodeType": "YulIdentifier", + "src": "31752:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "31733:6:5", + "nodeType": "YulIdentifier", + "src": "31733:6:5" + }, + "nativeSrc": "31733:21:5", + "nodeType": "YulFunctionCall", + "src": "31733:21:5" + }, + "variables": [ + { + "name": "T1", + "nativeSrc": "31727:2:5", + "nodeType": "YulTypedName", + "src": "31727:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "31806:23:5", + "nodeType": "YulAssignment", + "src": "31806:23:5", + "value": { + "arguments": [ + { + "name": "T1", + "nativeSrc": "31819:2:5", + "nodeType": "YulIdentifier", + "src": "31819:2:5" + }, + { + "name": "T1", + "nativeSrc": "31823:2:5", + "nodeType": "YulIdentifier", + "src": "31823:2:5" + }, + { + "name": "p", + "nativeSrc": "31827:1:5", + "nodeType": "YulIdentifier", + "src": "31827:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "31812:6:5", + "nodeType": "YulIdentifier", + "src": "31812:6:5" + }, + "nativeSrc": "31812:17:5", + "nodeType": "YulFunctionCall", + "src": "31812:17:5" + }, + "variableNames": [ + { + "name": "T2", + "nativeSrc": "31806:2:5", + "nodeType": "YulIdentifier", + "src": "31806:2:5" + } + ] + }, + { + "nativeSrc": "31871:26:5", + "nodeType": "YulVariableDeclaration", + "src": "31871:26:5", + "value": { + "arguments": [ + { + "name": "X", + "nativeSrc": "31888:1:5", + "nodeType": "YulIdentifier", + "src": "31888:1:5" + }, + { + "name": "T2", + "nativeSrc": "31891:2:5", + "nodeType": "YulIdentifier", + "src": "31891:2:5" + }, + { + "name": "p", + "nativeSrc": "31895:1:5", + "nodeType": "YulIdentifier", + "src": "31895:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "31881:6:5", + "nodeType": "YulIdentifier", + "src": "31881:6:5" + }, + "nativeSrc": "31881:16:5", + "nodeType": "YulFunctionCall", + "src": "31881:16:5" + }, + "variables": [ + { + "name": "T3", + "nativeSrc": "31875:2:5", + "nodeType": "YulTypedName", + "src": "31875:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "31943:23:5", + "nodeType": "YulAssignment", + "src": "31943:23:5", + "value": { + "arguments": [ + { + "name": "T1", + "nativeSrc": "31956:2:5", + "nodeType": "YulIdentifier", + "src": "31956:2:5" + }, + { + "name": "T2", + "nativeSrc": "31960:2:5", + "nodeType": "YulIdentifier", + "src": "31960:2:5" + }, + { + "name": "p", + "nativeSrc": "31964:1:5", + "nodeType": "YulIdentifier", + "src": "31964:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "31949:6:5", + "nodeType": "YulIdentifier", + "src": "31949:6:5" + }, + "nativeSrc": "31949:17:5", + "nodeType": "YulFunctionCall", + "src": "31949:17:5" + }, + "variableNames": [ + { + "name": "T1", + "nativeSrc": "31943:2:5", + "nodeType": "YulIdentifier", + "src": "31943:2:5" + } + ] + }, + { + "nativeSrc": "32007:59:5", + "nodeType": "YulAssignment", + "src": "32007:59:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "X", + "nativeSrc": "32027:1:5", + "nodeType": "YulIdentifier", + "src": "32027:1:5" + }, + { + "name": "zz", + "nativeSrc": "32030:2:5", + "nodeType": "YulIdentifier", + "src": "32030:2:5" + }, + { + "name": "p", + "nativeSrc": "32034:1:5", + "nodeType": "YulIdentifier", + "src": "32034:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "32020:6:5", + "nodeType": "YulIdentifier", + "src": "32020:6:5" + }, + "nativeSrc": "32020:16:5", + "nodeType": "YulFunctionCall", + "src": "32020:16:5" + }, + { + "arguments": [ + { + "name": "X", + "nativeSrc": "32045:1:5", + "nodeType": "YulIdentifier", + "src": "32045:1:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "32052:1:5", + "nodeType": "YulIdentifier", + "src": "32052:1:5" + }, + { + "name": "zz", + "nativeSrc": "32055:2:5", + "nodeType": "YulIdentifier", + "src": "32055:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "32048:3:5", + "nodeType": "YulIdentifier", + "src": "32048:3:5" + }, + "nativeSrc": "32048:10:5", + "nodeType": "YulFunctionCall", + "src": "32048:10:5" + }, + { + "name": "p", + "nativeSrc": "32060:1:5", + "nodeType": "YulIdentifier", + "src": "32060:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "32038:6:5", + "nodeType": "YulIdentifier", + "src": "32038:6:5" + }, + "nativeSrc": "32038:24:5", + "nodeType": "YulFunctionCall", + "src": "32038:24:5" + }, + { + "name": "p", + "nativeSrc": "32064:1:5", + "nodeType": "YulIdentifier", + "src": "32064:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "32013:6:5", + "nodeType": "YulIdentifier", + "src": "32013:6:5" + }, + "nativeSrc": "32013:53:5", + "nodeType": "YulFunctionCall", + "src": "32013:53:5" + }, + "variableNames": [ + { + "name": "y2", + "nativeSrc": "32007:2:5", + "nodeType": "YulIdentifier", + "src": "32007:2:5" + } + ] + }, + { + "nativeSrc": "32114:26:5", + "nodeType": "YulVariableDeclaration", + "src": "32114:26:5", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "32131:1:5", + "nodeType": "YulLiteral", + "src": "32131:1:5", + "type": "", + "value": "3" + }, + { + "name": "y2", + "nativeSrc": "32134:2:5", + "nodeType": "YulIdentifier", + "src": "32134:2:5" + }, + { + "name": "p", + "nativeSrc": "32138:1:5", + "nodeType": "YulIdentifier", + "src": "32138:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "32124:6:5", + "nodeType": "YulIdentifier", + "src": "32124:6:5" + }, + "nativeSrc": "32124:16:5", + "nodeType": "YulFunctionCall", + "src": "32124:16:5" + }, + "variables": [ + { + "name": "T4", + "nativeSrc": "32118:2:5", + "nodeType": "YulTypedName", + "src": "32118:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "32193:25:5", + "nodeType": "YulAssignment", + "src": "32193:25:5", + "value": { + "arguments": [ + { + "name": "T1", + "nativeSrc": "32207:2:5", + "nodeType": "YulIdentifier", + "src": "32207:2:5" + }, + { + "name": "zzz", + "nativeSrc": "32211:3:5", + "nodeType": "YulIdentifier", + "src": "32211:3:5" + }, + { + "name": "p", + "nativeSrc": "32216:1:5", + "nodeType": "YulIdentifier", + "src": "32216:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "32200:6:5", + "nodeType": "YulIdentifier", + "src": "32200:6:5" + }, + "nativeSrc": "32200:18:5", + "nodeType": "YulFunctionCall", + "src": "32200:18:5" + }, + "variableNames": [ + { + "name": "zzz", + "nativeSrc": "32193:3:5", + "nodeType": "YulIdentifier", + "src": "32193:3:5" + } + ] + }, + { + "nativeSrc": "32265:23:5", + "nodeType": "YulAssignment", + "src": "32265:23:5", + "value": { + "arguments": [ + { + "name": "T2", + "nativeSrc": "32278:2:5", + "nodeType": "YulIdentifier", + "src": "32278:2:5" + }, + { + "name": "zz", + "nativeSrc": "32282:2:5", + "nodeType": "YulIdentifier", + "src": "32282:2:5" + }, + { + "name": "p", + "nativeSrc": "32286:1:5", + "nodeType": "YulIdentifier", + "src": "32286:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "32271:6:5", + "nodeType": "YulIdentifier", + "src": "32271:6:5" + }, + "nativeSrc": "32271:17:5", + "nodeType": "YulFunctionCall", + "src": "32271:17:5" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "32265:2:5", + "nodeType": "YulIdentifier", + "src": "32265:2:5" + } + ] + }, + { + "nativeSrc": "32342:57:5", + "nodeType": "YulAssignment", + "src": "32342:57:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "T4", + "nativeSrc": "32361:2:5", + "nodeType": "YulIdentifier", + "src": "32361:2:5" + }, + { + "name": "T4", + "nativeSrc": "32365:2:5", + "nodeType": "YulIdentifier", + "src": "32365:2:5" + }, + { + "name": "p", + "nativeSrc": "32369:1:5", + "nodeType": "YulIdentifier", + "src": "32369:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "32354:6:5", + "nodeType": "YulIdentifier", + "src": "32354:6:5" + }, + "nativeSrc": "32354:17:5", + "nodeType": "YulFunctionCall", + "src": "32354:17:5" + }, + { + "arguments": [ + { + "name": "minus_2", + "nativeSrc": "32380:7:5", + "nodeType": "YulIdentifier", + "src": "32380:7:5" + }, + { + "name": "T3", + "nativeSrc": "32389:2:5", + "nodeType": "YulIdentifier", + "src": "32389:2:5" + }, + { + "name": "p", + "nativeSrc": "32393:1:5", + "nodeType": "YulIdentifier", + "src": "32393:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "32373:6:5", + "nodeType": "YulIdentifier", + "src": "32373:6:5" + }, + "nativeSrc": "32373:22:5", + "nodeType": "YulFunctionCall", + "src": "32373:22:5" + }, + { + "name": "p", + "nativeSrc": "32397:1:5", + "nodeType": "YulIdentifier", + "src": "32397:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "32347:6:5", + "nodeType": "YulIdentifier", + "src": "32347:6:5" + }, + "nativeSrc": "32347:52:5", + "nodeType": "YulFunctionCall", + "src": "32347:52:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "32342:1:5", + "nodeType": "YulIdentifier", + "src": "32342:1:5" + } + ] + }, + { + "nativeSrc": "32444:45:5", + "nodeType": "YulAssignment", + "src": "32444:45:5", + "value": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "32457:2:5", + "nodeType": "YulIdentifier", + "src": "32457:2:5" + }, + { + "arguments": [ + { + "name": "T3", + "nativeSrc": "32468:2:5", + "nodeType": "YulIdentifier", + "src": "32468:2:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "32476:1:5", + "nodeType": "YulIdentifier", + "src": "32476:1:5" + }, + { + "name": "X", + "nativeSrc": "32479:1:5", + "nodeType": "YulIdentifier", + "src": "32479:1:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "32472:3:5", + "nodeType": "YulIdentifier", + "src": "32472:3:5" + }, + "nativeSrc": "32472:9:5", + "nodeType": "YulFunctionCall", + "src": "32472:9:5" + }, + { + "name": "p", + "nativeSrc": "32483:1:5", + "nodeType": "YulIdentifier", + "src": "32483:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "32461:6:5", + "nodeType": "YulIdentifier", + "src": "32461:6:5" + }, + "nativeSrc": "32461:24:5", + "nodeType": "YulFunctionCall", + "src": "32461:24:5" + }, + { + "name": "p", + "nativeSrc": "32487:1:5", + "nodeType": "YulIdentifier", + "src": "32487:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "32450:6:5", + "nodeType": "YulIdentifier", + "src": "32450:6:5" + }, + "nativeSrc": "32450:39:5", + "nodeType": "YulFunctionCall", + "src": "32450:39:5" + }, + "variableNames": [ + { + "name": "T2", + "nativeSrc": "32444:2:5", + "nodeType": "YulIdentifier", + "src": "32444:2:5" + } + ] + }, + { + "nativeSrc": "32533:36:5", + "nodeType": "YulAssignment", + "src": "32533:36:5", + "value": { + "arguments": [ + { + "name": "T2", + "nativeSrc": "32545:2:5", + "nodeType": "YulIdentifier", + "src": "32545:2:5" + }, + { + "arguments": [ + { + "name": "T1", + "nativeSrc": "32556:2:5", + "nodeType": "YulIdentifier", + "src": "32556:2:5" + }, + { + "name": "Y", + "nativeSrc": "32560:1:5", + "nodeType": "YulIdentifier", + "src": "32560:1:5" + }, + { + "name": "p", + "nativeSrc": "32563:1:5", + "nodeType": "YulIdentifier", + "src": "32563:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "32549:6:5", + "nodeType": "YulIdentifier", + "src": "32549:6:5" + }, + "nativeSrc": "32549:16:5", + "nodeType": "YulFunctionCall", + "src": "32549:16:5" + }, + { + "name": "p", + "nativeSrc": "32567:1:5", + "nodeType": "YulIdentifier", + "src": "32567:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "32538:6:5", + "nodeType": "YulIdentifier", + "src": "32538:6:5" + }, + "nativeSrc": "32538:31:5", + "nodeType": "YulFunctionCall", + "src": "32538:31:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "32533:1:5", + "nodeType": "YulIdentifier", + "src": "32533:1:5" + } + ] + }, + { + "nativeSrc": "32622:8:5", + "nodeType": "YulContinue", + "src": "32622:8:5" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "T2", + "nativeSrc": "31685:2:5", + "nodeType": "YulIdentifier", + "src": "31685:2:5" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "31678:6:5", + "nodeType": "YulIdentifier", + "src": "31678:6:5" + }, + "nativeSrc": "31678:10:5", + "nodeType": "YulFunctionCall", + "src": "31678:10:5" + }, + "nativeSrc": "31675:985:5", + "nodeType": "YulIf", + "src": "31675:985:5" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "y2", + "nativeSrc": "31641:2:5", + "nodeType": "YulIdentifier", + "src": "31641:2:5" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "31634:6:5", + "nodeType": "YulIdentifier", + "src": "31634:6:5" + }, + "nativeSrc": "31634:10:5", + "nodeType": "YulFunctionCall", + "src": "31634:10:5" + }, + "nativeSrc": "31631:1055:5", + "nodeType": "YulIf", + "src": "31631:1055:5" + }, + { + "nativeSrc": "32712:27:5", + "nodeType": "YulVariableDeclaration", + "src": "32712:27:5", + "value": { + "arguments": [ + { + "name": "T2", + "nativeSrc": "32729:2:5", + "nodeType": "YulIdentifier", + "src": "32729:2:5" + }, + { + "name": "T2", + "nativeSrc": "32733:2:5", + "nodeType": "YulIdentifier", + "src": "32733:2:5" + }, + { + "name": "p", + "nativeSrc": "32737:1:5", + "nodeType": "YulIdentifier", + "src": "32737:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "32722:6:5", + "nodeType": "YulIdentifier", + "src": "32722:6:5" + }, + "nativeSrc": "32722:17:5", + "nodeType": "YulFunctionCall", + "src": "32722:17:5" + }, + "variables": [ + { + "name": "T4", + "nativeSrc": "32716:2:5", + "nodeType": "YulTypedName", + "src": "32716:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "32764:27:5", + "nodeType": "YulVariableDeclaration", + "src": "32764:27:5", + "value": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "32781:2:5", + "nodeType": "YulIdentifier", + "src": "32781:2:5" + }, + { + "name": "T2", + "nativeSrc": "32785:2:5", + "nodeType": "YulIdentifier", + "src": "32785:2:5" + }, + { + "name": "p", + "nativeSrc": "32789:1:5", + "nodeType": "YulIdentifier", + "src": "32789:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "32774:6:5", + "nodeType": "YulIdentifier", + "src": "32774:6:5" + }, + "nativeSrc": "32774:17:5", + "nodeType": "YulFunctionCall", + "src": "32774:17:5" + }, + "variables": [ + { + "name": "T1", + "nativeSrc": "32768:2:5", + "nodeType": "YulTypedName", + "src": "32768:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "32819:23:5", + "nodeType": "YulAssignment", + "src": "32819:23:5", + "value": { + "arguments": [ + { + "name": "zz", + "nativeSrc": "32832:2:5", + "nodeType": "YulIdentifier", + "src": "32832:2:5" + }, + { + "name": "T4", + "nativeSrc": "32836:2:5", + "nodeType": "YulIdentifier", + "src": "32836:2:5" + }, + { + "name": "p", + "nativeSrc": "32840:1:5", + "nodeType": "YulIdentifier", + "src": "32840:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "32825:6:5", + "nodeType": "YulIdentifier", + "src": "32825:6:5" + }, + "nativeSrc": "32825:17:5", + "nodeType": "YulFunctionCall", + "src": "32825:17:5" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "32819:2:5", + "nodeType": "YulIdentifier", + "src": "32819:2:5" + } + ] + }, + { + "nativeSrc": "32904:25:5", + "nodeType": "YulAssignment", + "src": "32904:25:5", + "value": { + "arguments": [ + { + "name": "zzz", + "nativeSrc": "32918:3:5", + "nodeType": "YulIdentifier", + "src": "32918:3:5" + }, + { + "name": "T1", + "nativeSrc": "32923:2:5", + "nodeType": "YulIdentifier", + "src": "32923:2:5" + }, + { + "name": "p", + "nativeSrc": "32927:1:5", + "nodeType": "YulIdentifier", + "src": "32927:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "32911:6:5", + "nodeType": "YulIdentifier", + "src": "32911:6:5" + }, + "nativeSrc": "32911:18:5", + "nodeType": "YulFunctionCall", + "src": "32911:18:5" + }, + "variableNames": [ + { + "name": "zzz", + "nativeSrc": "32904:3:5", + "nodeType": "YulIdentifier", + "src": "32904:3:5" + } + ] + }, + { + "nativeSrc": "32963:27:5", + "nodeType": "YulVariableDeclaration", + "src": "32963:27:5", + "value": { + "arguments": [ + { + "name": "X", + "nativeSrc": "32981:1:5", + "nodeType": "YulIdentifier", + "src": "32981:1:5" + }, + { + "name": "T4", + "nativeSrc": "32984:2:5", + "nodeType": "YulIdentifier", + "src": "32984:2:5" + }, + { + "name": "p", + "nativeSrc": "32988:1:5", + "nodeType": "YulIdentifier", + "src": "32988:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "32974:6:5", + "nodeType": "YulIdentifier", + "src": "32974:6:5" + }, + "nativeSrc": "32974:16:5", + "nodeType": "YulFunctionCall", + "src": "32974:16:5" + }, + "variables": [ + { + "name": "zz1", + "nativeSrc": "32967:3:5", + "nodeType": "YulTypedName", + "src": "32967:3:5", + "type": "" + } + ] + }, + { + "nativeSrc": "33015:81:5", + "nodeType": "YulAssignment", + "src": "33015:81:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "y2", + "nativeSrc": "33041:2:5", + "nodeType": "YulIdentifier", + "src": "33041:2:5" + }, + { + "name": "y2", + "nativeSrc": "33045:2:5", + "nodeType": "YulIdentifier", + "src": "33045:2:5" + }, + { + "name": "p", + "nativeSrc": "33049:1:5", + "nodeType": "YulIdentifier", + "src": "33049:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "33034:6:5", + "nodeType": "YulIdentifier", + "src": "33034:6:5" + }, + "nativeSrc": "33034:17:5", + "nodeType": "YulFunctionCall", + "src": "33034:17:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "33057:1:5", + "nodeType": "YulIdentifier", + "src": "33057:1:5" + }, + { + "name": "T1", + "nativeSrc": "33060:2:5", + "nodeType": "YulIdentifier", + "src": "33060:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "33053:3:5", + "nodeType": "YulIdentifier", + "src": "33053:3:5" + }, + "nativeSrc": "33053:10:5", + "nodeType": "YulFunctionCall", + "src": "33053:10:5" + }, + { + "name": "p", + "nativeSrc": "33065:1:5", + "nodeType": "YulIdentifier", + "src": "33065:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "33027:6:5", + "nodeType": "YulIdentifier", + "src": "33027:6:5" + }, + "nativeSrc": "33027:40:5", + "nodeType": "YulFunctionCall", + "src": "33027:40:5" + }, + { + "arguments": [ + { + "name": "minus_2", + "nativeSrc": "33076:7:5", + "nodeType": "YulIdentifier", + "src": "33076:7:5" + }, + { + "name": "zz1", + "nativeSrc": "33085:3:5", + "nodeType": "YulIdentifier", + "src": "33085:3:5" + }, + { + "name": "p", + "nativeSrc": "33090:1:5", + "nodeType": "YulIdentifier", + "src": "33090:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "33069:6:5", + "nodeType": "YulIdentifier", + "src": "33069:6:5" + }, + "nativeSrc": "33069:23:5", + "nodeType": "YulFunctionCall", + "src": "33069:23:5" + }, + { + "name": "p", + "nativeSrc": "33094:1:5", + "nodeType": "YulIdentifier", + "src": "33094:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "33020:6:5", + "nodeType": "YulIdentifier", + "src": "33020:6:5" + }, + "nativeSrc": "33020:76:5", + "nodeType": "YulFunctionCall", + "src": "33020:76:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "33015:1:5", + "nodeType": "YulIdentifier", + "src": "33015:1:5" + } + ] + }, + { + "nativeSrc": "33121:74:5", + "nodeType": "YulAssignment", + "src": "33121:74:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "zz1", + "nativeSrc": "33147:3:5", + "nodeType": "YulIdentifier", + "src": "33147:3:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "33156:1:5", + "nodeType": "YulIdentifier", + "src": "33156:1:5" + }, + { + "name": "X", + "nativeSrc": "33159:1:5", + "nodeType": "YulIdentifier", + "src": "33159:1:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "33152:3:5", + "nodeType": "YulIdentifier", + "src": "33152:3:5" + }, + "nativeSrc": "33152:9:5", + "nodeType": "YulFunctionCall", + "src": "33152:9:5" + }, + { + "name": "p", + "nativeSrc": "33163:1:5", + "nodeType": "YulIdentifier", + "src": "33163:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "33140:6:5", + "nodeType": "YulIdentifier", + "src": "33140:6:5" + }, + "nativeSrc": "33140:25:5", + "nodeType": "YulFunctionCall", + "src": "33140:25:5" + }, + { + "name": "y2", + "nativeSrc": "33167:2:5", + "nodeType": "YulIdentifier", + "src": "33167:2:5" + }, + { + "name": "p", + "nativeSrc": "33171:1:5", + "nodeType": "YulIdentifier", + "src": "33171:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "33133:6:5", + "nodeType": "YulIdentifier", + "src": "33133:6:5" + }, + "nativeSrc": "33133:40:5", + "nodeType": "YulFunctionCall", + "src": "33133:40:5" + }, + { + "arguments": [ + { + "name": "Y", + "nativeSrc": "33182:1:5", + "nodeType": "YulIdentifier", + "src": "33182:1:5" + }, + { + "name": "T1", + "nativeSrc": "33185:2:5", + "nodeType": "YulIdentifier", + "src": "33185:2:5" + }, + { + "name": "p", + "nativeSrc": "33189:1:5", + "nodeType": "YulIdentifier", + "src": "33189:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "33175:6:5", + "nodeType": "YulIdentifier", + "src": "33175:6:5" + }, + "nativeSrc": "33175:16:5", + "nodeType": "YulFunctionCall", + "src": "33175:16:5" + }, + { + "name": "p", + "nativeSrc": "33193:1:5", + "nodeType": "YulIdentifier", + "src": "33193:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "33126:6:5", + "nodeType": "YulIdentifier", + "src": "33126:6:5" + }, + "nativeSrc": "33126:69:5", + "nodeType": "YulFunctionCall", + "src": "33126:69:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "33121:1:5", + "nodeType": "YulIdentifier", + "src": "33121:1:5" + } + ] + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "index", + "nativeSrc": "28693:5:5", + "nodeType": "YulIdentifier", + "src": "28693:5:5" + }, + { + "kind": "number", + "nativeSrc": "28700:3:5", + "nodeType": "YulLiteral", + "src": "28700:3:5", + "type": "", + "value": "191" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "28690:2:5", + "nodeType": "YulIdentifier", + "src": "28690:2:5" + }, + "nativeSrc": "28690:14:5", + "nodeType": "YulFunctionCall", + "src": "28690:14:5" + }, + "nativeSrc": "28683:4552:5", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "28705:28:5", + "nodeType": "YulBlock", + "src": "28705:28:5", + "statements": [ + { + "nativeSrc": "28707:24:5", + "nodeType": "YulAssignment", + "src": "28707:24:5", + "value": { + "arguments": [ + { + "name": "index", + "nativeSrc": "28720:5:5", + "nodeType": "YulIdentifier", + "src": "28720:5:5" + }, + { + "kind": "number", + "nativeSrc": "28727:3:5", + "nodeType": "YulLiteral", + "src": "28727:3:5", + "type": "", + "value": "191" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "28716:3:5", + "nodeType": "YulIdentifier", + "src": "28716:3:5" + }, + "nativeSrc": "28716:15:5", + "nodeType": "YulFunctionCall", + "src": "28716:15:5" + }, + "variableNames": [ + { + "name": "index", + "nativeSrc": "28707:5:5", + "nodeType": "YulIdentifier", + "src": "28707:5:5" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "28687:2:5", + "nodeType": "YulBlock", + "src": "28687:2:5", + "statements": [] + }, + "src": "28683:4552:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "33274:1:5", + "nodeType": "YulIdentifier", + "src": "33274:1:5" + }, + { + "kind": "number", + "nativeSrc": "33277:4:5", + "nodeType": "YulLiteral", + "src": "33277:4:5", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33270:3:5", + "nodeType": "YulIdentifier", + "src": "33270:3:5" + }, + "nativeSrc": "33270:12:5", + "nodeType": "YulFunctionCall", + "src": "33270:12:5" + }, + { + "name": "zz", + "nativeSrc": "33284:2:5", + "nodeType": "YulIdentifier", + "src": "33284:2:5" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "33263:6:5", + "nodeType": "YulIdentifier", + "src": "33263:6:5" + }, + "nativeSrc": "33263:24:5", + "nodeType": "YulFunctionCall", + "src": "33263:24:5" + }, + "nativeSrc": "33263:24:5", + "nodeType": "YulExpressionStatement", + "src": "33263:24:5" + }, + { + "expression": { + "arguments": [ + { + "name": "T", + "nativeSrc": "33547:1:5", + "nodeType": "YulIdentifier", + "src": "33547:1:5" + }, + { + "kind": "number", + "nativeSrc": "33550:4:5", + "nodeType": "YulLiteral", + "src": "33550:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "33540:6:5", + "nodeType": "YulIdentifier", + "src": "33540:6:5" + }, + "nativeSrc": "33540:15:5", + "nodeType": "YulFunctionCall", + "src": "33540:15:5" + }, + "nativeSrc": "33540:15:5", + "nodeType": "YulExpressionStatement", + "src": "33540:15:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "33583:1:5", + "nodeType": "YulIdentifier", + "src": "33583:1:5" + }, + { + "kind": "number", + "nativeSrc": "33586:4:5", + "nodeType": "YulLiteral", + "src": "33586:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33579:3:5", + "nodeType": "YulIdentifier", + "src": "33579:3:5" + }, + "nativeSrc": "33579:12:5", + "nodeType": "YulFunctionCall", + "src": "33579:12:5" + }, + { + "kind": "number", + "nativeSrc": "33593:4:5", + "nodeType": "YulLiteral", + "src": "33593:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "33572:6:5", + "nodeType": "YulIdentifier", + "src": "33572:6:5" + }, + "nativeSrc": "33572:26:5", + "nodeType": "YulFunctionCall", + "src": "33572:26:5" + }, + "nativeSrc": "33572:26:5", + "nodeType": "YulExpressionStatement", + "src": "33572:26:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "33626:1:5", + "nodeType": "YulIdentifier", + "src": "33626:1:5" + }, + { + "kind": "number", + "nativeSrc": "33629:4:5", + "nodeType": "YulLiteral", + "src": "33629:4:5", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33622:3:5", + "nodeType": "YulIdentifier", + "src": "33622:3:5" + }, + "nativeSrc": "33622:12:5", + "nodeType": "YulFunctionCall", + "src": "33622:12:5" + }, + { + "kind": "number", + "nativeSrc": "33636:4:5", + "nodeType": "YulLiteral", + "src": "33636:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "33615:6:5", + "nodeType": "YulIdentifier", + "src": "33615:6:5" + }, + "nativeSrc": "33615:26:5", + "nodeType": "YulFunctionCall", + "src": "33615:26:5" + }, + "nativeSrc": "33615:26:5", + "nodeType": "YulExpressionStatement", + "src": "33615:26:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "33780:1:5", + "nodeType": "YulIdentifier", + "src": "33780:1:5" + }, + { + "kind": "number", + "nativeSrc": "33783:4:5", + "nodeType": "YulLiteral", + "src": "33783:4:5", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33776:3:5", + "nodeType": "YulIdentifier", + "src": "33776:3:5" + }, + "nativeSrc": "33776:12:5", + "nodeType": "YulFunctionCall", + "src": "33776:12:5" + }, + { + "name": "minus_2", + "nativeSrc": "33790:7:5", + "nodeType": "YulIdentifier", + "src": "33790:7:5" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "33769:6:5", + "nodeType": "YulIdentifier", + "src": "33769:6:5" + }, + "nativeSrc": "33769:29:5", + "nodeType": "YulFunctionCall", + "src": "33769:29:5" + }, + "nativeSrc": "33769:29:5", + "nodeType": "YulExpressionStatement", + "src": "33769:29:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "33826:1:5", + "nodeType": "YulIdentifier", + "src": "33826:1:5" + }, + { + "kind": "number", + "nativeSrc": "33829:4:5", + "nodeType": "YulLiteral", + "src": "33829:4:5", + "type": "", + "value": "0xa0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33822:3:5", + "nodeType": "YulIdentifier", + "src": "33822:3:5" + }, + "nativeSrc": "33822:12:5", + "nodeType": "YulFunctionCall", + "src": "33822:12:5" + }, + { + "name": "p", + "nativeSrc": "33836:1:5", + "nodeType": "YulIdentifier", + "src": "33836:1:5" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "33815:6:5", + "nodeType": "YulIdentifier", + "src": "33815:6:5" + }, + "nativeSrc": "33815:23:5", + "nodeType": "YulFunctionCall", + "src": "33815:23:5" + }, + "nativeSrc": "33815:23:5", + "nodeType": "YulExpressionStatement", + "src": "33815:23:5" + }, + { + "body": { + "nativeSrc": "33973:16:5", + "nodeType": "YulBlock", + "src": "33973:16:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33982:1:5", + "nodeType": "YulLiteral", + "src": "33982:1:5", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "33985:1:5", + "nodeType": "YulLiteral", + "src": "33985:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "33975:6:5", + "nodeType": "YulIdentifier", + "src": "33975:6:5" + }, + "nativeSrc": "33975:12:5", + "nodeType": "YulFunctionCall", + "src": "33975:12:5" + }, + "nativeSrc": "33975:12:5", + "nodeType": "YulExpressionStatement", + "src": "33975:12:5" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33944:1:5", + "nodeType": "YulLiteral", + "src": "33944:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "33940:3:5", + "nodeType": "YulIdentifier", + "src": "33940:3:5" + }, + "nativeSrc": "33940:6:5", + "nodeType": "YulFunctionCall", + "src": "33940:6:5" + }, + { + "kind": "number", + "nativeSrc": "33948:4:5", + "nodeType": "YulLiteral", + "src": "33948:4:5", + "type": "", + "value": "0x05" + }, + { + "name": "T", + "nativeSrc": "33954:1:5", + "nodeType": "YulIdentifier", + "src": "33954:1:5" + }, + { + "kind": "number", + "nativeSrc": "33957:4:5", + "nodeType": "YulLiteral", + "src": "33957:4:5", + "type": "", + "value": "0xc0" + }, + { + "name": "T", + "nativeSrc": "33963:1:5", + "nodeType": "YulIdentifier", + "src": "33963:1:5" + }, + { + "kind": "number", + "nativeSrc": "33966:4:5", + "nodeType": "YulLiteral", + "src": "33966:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "33929:10:5", + "nodeType": "YulIdentifier", + "src": "33929:10:5" + }, + "nativeSrc": "33929:42:5", + "nodeType": "YulFunctionCall", + "src": "33929:42:5" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "33922:6:5", + "nodeType": "YulIdentifier", + "src": "33922:6:5" + }, + "nativeSrc": "33922:50:5", + "nodeType": "YulFunctionCall", + "src": "33922:50:5" + }, + "nativeSrc": "33919:70:5", + "nodeType": "YulIf", + "src": "33919:70:5" + }, + { + "nativeSrc": "34007:14:5", + "nodeType": "YulAssignment", + "src": "34007:14:5", + "value": { + "arguments": [ + { + "name": "T", + "nativeSrc": "34019:1:5", + "nodeType": "YulIdentifier", + "src": "34019:1:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "34013:5:5", + "nodeType": "YulIdentifier", + "src": "34013:5:5" + }, + "nativeSrc": "34013:8:5", + "nodeType": "YulFunctionCall", + "src": "34013:8:5" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "34007:2:5", + "nodeType": "YulIdentifier", + "src": "34007:2:5" + } + ] + }, + { + "nativeSrc": "34038:21:5", + "nodeType": "YulAssignment", + "src": "34038:21:5", + "value": { + "arguments": [ + { + "name": "X", + "nativeSrc": "34050:1:5", + "nodeType": "YulIdentifier", + "src": "34050:1:5" + }, + { + "name": "zz", + "nativeSrc": "34053:2:5", + "nodeType": "YulIdentifier", + "src": "34053:2:5" + }, + { + "name": "p", + "nativeSrc": "34057:1:5", + "nodeType": "YulIdentifier", + "src": "34057:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "34043:6:5", + "nodeType": "YulIdentifier", + "src": "34043:6:5" + }, + "nativeSrc": "34043:16:5", + "nodeType": "YulFunctionCall", + "src": "34043:16:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "34038:1:5", + "nodeType": "YulIdentifier", + "src": "34038:1:5" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 1960, + "isOffset": false, + "isSlot": false, + "src": "28404:1:5", + "valueSize": 1 + }, + { + "declaration": 1960, + "isOffset": false, + "isSlot": false, + "src": "28413:1:5", + "valueSize": 1 + }, + { + "declaration": 1960, + "isOffset": false, + "isSlot": false, + "src": "28488:1:5", + "valueSize": 1 + }, + { + "declaration": 1960, + "isOffset": false, + "isSlot": false, + "src": "28526:1:5", + "valueSize": 1 + }, + { + "declaration": 1960, + "isOffset": false, + "isSlot": false, + "src": "30934:1:5", + "valueSize": 1 + }, + { + "declaration": 1960, + "isOffset": false, + "isSlot": false, + "src": "31196:1:5", + "valueSize": 1 + }, + { + "declaration": 1960, + "isOffset": false, + "isSlot": false, + "src": "31242:1:5", + "valueSize": 1 + }, + { + "declaration": 1960, + "isOffset": false, + "isSlot": false, + "src": "31446:1:5", + "valueSize": 1 + }, + { + "declaration": 1960, + "isOffset": false, + "isSlot": false, + "src": "31524:1:5", + "valueSize": 1 + }, + { + "declaration": 1960, + "isOffset": false, + "isSlot": false, + "src": "33274:1:5", + "valueSize": 1 + }, + { + "declaration": 1960, + "isOffset": false, + "isSlot": false, + "src": "33547:1:5", + "valueSize": 1 + }, + { + "declaration": 1960, + "isOffset": false, + "isSlot": false, + "src": "33583:1:5", + "valueSize": 1 + }, + { + "declaration": 1960, + "isOffset": false, + "isSlot": false, + "src": "33626:1:5", + "valueSize": 1 + }, + { + "declaration": 1960, + "isOffset": false, + "isSlot": false, + "src": "33780:1:5", + "valueSize": 1 + }, + { + "declaration": 1960, + "isOffset": false, + "isSlot": false, + "src": "33826:1:5", + "valueSize": 1 + }, + { + "declaration": 1960, + "isOffset": false, + "isSlot": false, + "src": "33954:1:5", + "valueSize": 1 + }, + { + "declaration": 1960, + "isOffset": false, + "isSlot": false, + "src": "33963:1:5", + "valueSize": 1 + }, + { + "declaration": 1960, + "isOffset": false, + "isSlot": false, + "src": "34019:1:5", + "valueSize": 1 + }, + { + "declaration": 1950, + "isOffset": false, + "isSlot": false, + "src": "28477:1:5", + "valueSize": 1 + }, + { + "declaration": 1950, + "isOffset": false, + "isSlot": false, + "src": "28968:1:5", + "valueSize": 1 + }, + { + "declaration": 1950, + "isOffset": false, + "isSlot": false, + "src": "29109:1:5", + "valueSize": 1 + }, + { + "declaration": 1950, + "isOffset": false, + "isSlot": false, + "src": "29135:1:5", + "valueSize": 1 + }, + { + "declaration": 1950, + "isOffset": false, + "isSlot": false, + "src": "29334:1:5", + "valueSize": 1 + }, + { + "declaration": 1950, + "isOffset": false, + "isSlot": false, + "src": "29532:1:5", + "valueSize": 1 + }, + { + "declaration": 1950, + "isOffset": false, + "isSlot": false, + "src": "31185:1:5", + "valueSize": 1 + }, + { + "declaration": 1950, + "isOffset": false, + "isSlot": false, + "src": "31543:1:5", + "valueSize": 1 + }, + { + "declaration": 1950, + "isOffset": false, + "isSlot": false, + "src": "31888:1:5", + "valueSize": 1 + }, + { + "declaration": 1950, + "isOffset": false, + "isSlot": false, + "src": "32027:1:5", + "valueSize": 1 + }, + { + "declaration": 1950, + "isOffset": false, + "isSlot": false, + "src": "32045:1:5", + "valueSize": 1 + }, + { + "declaration": 1950, + "isOffset": false, + "isSlot": false, + "src": "32342:1:5", + "valueSize": 1 + }, + { + "declaration": 1950, + "isOffset": false, + "isSlot": false, + "src": "32479:1:5", + "valueSize": 1 + }, + { + "declaration": 1950, + "isOffset": false, + "isSlot": false, + "src": "32981:1:5", + "valueSize": 1 + }, + { + "declaration": 1950, + "isOffset": false, + "isSlot": false, + "src": "33015:1:5", + "valueSize": 1 + }, + { + "declaration": 1950, + "isOffset": false, + "isSlot": false, + "src": "33159:1:5", + "valueSize": 1 + }, + { + "declaration": 1950, + "isOffset": false, + "isSlot": false, + "src": "34038:1:5", + "valueSize": 1 + }, + { + "declaration": 1950, + "isOffset": false, + "isSlot": false, + "src": "34050:1:5", + "valueSize": 1 + }, + { + "declaration": 1947, + "isOffset": false, + "isSlot": false, + "src": "28391:11:5", + "valueSize": 1 + }, + { + "declaration": 1947, + "isOffset": false, + "isSlot": false, + "src": "30921:11:5", + "valueSize": 1 + }, + { + "declaration": 994, + "isOffset": false, + "isSlot": false, + "src": "29372:7:5", + "valueSize": 1 + }, + { + "declaration": 994, + "isOffset": false, + "isSlot": false, + "src": "31740:7:5", + "valueSize": 1 + }, + { + "declaration": 994, + "isOffset": false, + "isSlot": false, + "src": "32380:7:5", + "valueSize": 1 + }, + { + "declaration": 994, + "isOffset": false, + "isSlot": false, + "src": "33076:7:5", + "valueSize": 1 + }, + { + "declaration": 994, + "isOffset": false, + "isSlot": false, + "src": "33790:7:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "28842:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "28915:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "28975:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "29040:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "29116:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "29124:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "29142:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "29146:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "29150:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "29224:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "29286:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "29361:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "29385:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "29389:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "29539:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "29547:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "29551:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "29713:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "29721:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "30815:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "31460:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "31467:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "31532:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "31540:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "31547:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "31752:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "31827:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "31895:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "31964:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "32034:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "32052:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "32060:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "32064:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "32138:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "32216:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "32286:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "32369:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "32393:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "32397:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "32476:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "32483:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "32487:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "32563:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "32567:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "32737:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "32789:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "32840:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "32927:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "32988:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "33049:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "33057:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "33065:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "33090:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "33094:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "33156:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "33163:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "33171:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "33189:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "33193:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "33836:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "34057:1:5", + "valueSize": 1 + }, + { + "declaration": 1943, + "isOffset": false, + "isSlot": false, + "src": "30009:8:5", + "valueSize": 1 + }, + { + "declaration": 1943, + "isOffset": false, + "isSlot": false, + "src": "30215:8:5", + "valueSize": 1 + }, + { + "declaration": 1943, + "isOffset": false, + "isSlot": false, + "src": "30423:8:5", + "valueSize": 1 + }, + { + "declaration": 1943, + "isOffset": false, + "isSlot": false, + "src": "30624:8:5", + "valueSize": 1 + }, + { + "declaration": 1945, + "isOffset": false, + "isSlot": false, + "src": "29971:8:5", + "valueSize": 1 + }, + { + "declaration": 1945, + "isOffset": false, + "isSlot": false, + "src": "30176:8:5", + "valueSize": 1 + }, + { + "declaration": 1945, + "isOffset": false, + "isSlot": false, + "src": "30384:8:5", + "valueSize": 1 + }, + { + "declaration": 1945, + "isOffset": false, + "isSlot": false, + "src": "30586:8:5", + "valueSize": 1 + }, + { + "declaration": 1953, + "isOffset": false, + "isSlot": false, + "src": "28454:2:5", + "valueSize": 1 + }, + { + "declaration": 1953, + "isOffset": false, + "isSlot": false, + "src": "28579:2:5", + "valueSize": 1 + }, + { + "declaration": 1953, + "isOffset": false, + "isSlot": false, + "src": "29119:2:5", + "valueSize": 1 + }, + { + "declaration": 1953, + "isOffset": false, + "isSlot": false, + "src": "29138:2:5", + "valueSize": 1 + }, + { + "declaration": 1953, + "isOffset": false, + "isSlot": false, + "src": "29265:2:5", + "valueSize": 1 + }, + { + "declaration": 1953, + "isOffset": false, + "isSlot": false, + "src": "29282:2:5", + "valueSize": 1 + }, + { + "declaration": 1953, + "isOffset": false, + "isSlot": false, + "src": "31151:2:5", + "valueSize": 1 + }, + { + "declaration": 1953, + "isOffset": false, + "isSlot": false, + "src": "31278:2:5", + "valueSize": 1 + }, + { + "declaration": 1953, + "isOffset": false, + "isSlot": false, + "src": "31528:2:5", + "valueSize": 1 + }, + { + "declaration": 1953, + "isOffset": false, + "isSlot": false, + "src": "32030:2:5", + "valueSize": 1 + }, + { + "declaration": 1953, + "isOffset": false, + "isSlot": false, + "src": "32055:2:5", + "valueSize": 1 + }, + { + "declaration": 1953, + "isOffset": false, + "isSlot": false, + "src": "32265:2:5", + "valueSize": 1 + }, + { + "declaration": 1953, + "isOffset": false, + "isSlot": false, + "src": "32282:2:5", + "valueSize": 1 + }, + { + "declaration": 1953, + "isOffset": false, + "isSlot": false, + "src": "32819:2:5", + "valueSize": 1 + }, + { + "declaration": 1953, + "isOffset": false, + "isSlot": false, + "src": "32832:2:5", + "valueSize": 1 + }, + { + "declaration": 1953, + "isOffset": false, + "isSlot": false, + "src": "33284:2:5", + "valueSize": 1 + }, + { + "declaration": 1953, + "isOffset": false, + "isSlot": false, + "src": "34007:2:5", + "valueSize": 1 + }, + { + "declaration": 1953, + "isOffset": false, + "isSlot": false, + "src": "34053:2:5", + "valueSize": 1 + } + ], + "id": 2082, + "nodeType": "InlineAssembly", + "src": "28352:5728:5" + } + ] + } + ] + }, + "id": 2085, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ecZZ_mulmuladd_S8_extcode", + "nameLocation": "27450:25:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1948, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1943, + "mutability": "mutable", + "name": "scalar_u", + "nameLocation": "27484:8:5", + "nodeType": "VariableDeclaration", + "scope": 2085, + "src": "27476:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1942, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27476:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1945, + "mutability": "mutable", + "name": "scalar_v", + "nameLocation": "27502:8:5", + "nodeType": "VariableDeclaration", + "scope": 2085, + "src": "27494:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1944, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27494:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1947, + "mutability": "mutable", + "name": "dataPointer", + "nameLocation": "27520:11:5", + "nodeType": "VariableDeclaration", + "scope": 2085, + "src": "27512:19:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1946, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27512:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "27475:57:5" + }, + "returnParameters": { + "id": 1951, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1950, + "mutability": "mutable", + "name": "X", + "nameLocation": "27580:1:5", + "nodeType": "VariableDeclaration", + "scope": 2085, + "src": "27572:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1949, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27572:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "27571:25:5" + }, + "scope": 2309, + "src": "27441:6671:5", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2228, + "nodeType": "Block", + "src": "34356:4828:5", + "statements": [ + { + "assignments": [ + 2097 + ], + "declarations": [ + { + "constant": false, + "id": 2097, + "mutability": "mutable", + "name": "zz", + "nameLocation": "34374:2:5", + "nodeType": "VariableDeclaration", + "scope": 2228, + "src": "34366:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2096, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "34366:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2098, + "nodeType": "VariableDeclarationStatement", + "src": "34366:10:5" + }, + { + "assignments": [ + 2104 + ], + "declarations": [ + { + "constant": false, + "id": 2104, + "mutability": "mutable", + "name": "T", + "nameLocation": "34444:1:5", + "nodeType": "VariableDeclaration", + "scope": 2228, + "src": "34426:19:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6]" + }, + "typeName": { + "baseType": { + "id": 2102, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "34426:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2103, + "length": { + "hexValue": "36", + "id": 2101, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34434:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_6_by_1", + "typeString": "int_const 6" + }, + "value": "6" + }, + "nodeType": "ArrayTypeName", + "src": "34426:10:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_storage_ptr", + "typeString": "uint256[6]" + } + }, + "visibility": "internal" + } + ], + "id": 2105, + "nodeType": "VariableDeclarationStatement", + "src": "34426:19:5" + }, + { + "expression": { + "id": 2108, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2106, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2097, + "src": "34455:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "323536", + "id": 2107, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34460:3:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + }, + "value": "256" + }, + "src": "34455:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2109, + "nodeType": "ExpressionStatement", + "src": "34455:8:5" + }, + { + "id": 2227, + "nodeType": "UncheckedBlock", + "src": "34488:4674:5", + "statements": [ + { + "body": { + "id": 2224, + "nodeType": "Block", + "src": "34530:552:5", + "statements": [ + { + "expression": { + "id": 2119, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2115, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2097, + "src": "34548:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2118, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2116, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2097, + "src": "34553:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 2117, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34558:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "34553:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34548:11:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2120, + "nodeType": "ExpressionStatement", + "src": "34548:11:5" + }, + { + "expression": { + "id": 2222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 2121, + "name": "T", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2104, + "src": "34627:1:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 2123, + "indexExpression": { + "hexValue": "30", + "id": 2122, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34629:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "34627:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2221, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3634", + "id": 2124, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34634:2:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2195, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2182, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2159, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2146, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2133, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "313238", + "id": 2125, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34685:3:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2131, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2128, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2126, + "name": "scalar_v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "34693:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "id": 2127, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2097, + "src": "34705:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34693:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2129, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "34692:16:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "31", + "id": 2130, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34711:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "34692:20:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2132, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "34691:22:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34685:28:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3634", + "id": 2134, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34716:2:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2143, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2140, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2135, + "name": "scalar_v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "34723:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2136, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2097, + "src": "34736:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "3634", + "id": 2137, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34741:2:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "34736:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2139, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "34735:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34723:21:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2141, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "34722:23:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "31", + "id": 2142, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34748:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "34722:27:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2144, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "34721:29:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34716:34:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34685:65:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2158, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3332", + "id": 2147, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34781:2:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2156, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2153, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2148, + "name": "scalar_v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "34788:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2149, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2097, + "src": "34801:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "313238", + "id": 2150, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34806:3:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "34801:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2152, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "34800:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34788:22:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2154, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "34787:24:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "31", + "id": 2155, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34814:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "34787:28:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2157, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "34786:30:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34781:35:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34685:131:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2171, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3136", + "id": 2160, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34819:2:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2169, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2166, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2161, + "name": "scalar_v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "34826:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2164, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2162, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2097, + "src": "34839:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "313932", + "id": 2163, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34844:3:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_192_by_1", + "typeString": "int_const 192" + }, + "value": "192" + }, + "src": "34839:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2165, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "34838:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34826:22:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2167, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "34825:24:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "31", + "id": 2168, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34852:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "34825:28:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2170, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "34824:30:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34819:35:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34685:169:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "38", + "id": 2173, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34885:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2179, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2176, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2174, + "name": "scalar_u", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2087, + "src": "34891:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "id": 2175, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2097, + "src": "34903:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34891:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2177, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "34890:16:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "31", + "id": 2178, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34909:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "34890:20:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2180, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "34889:22:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34885:26:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34685:226:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2194, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "34", + "id": 2183, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34914:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2189, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2184, + "name": "scalar_u", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2087, + "src": "34920:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2185, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2097, + "src": "34933:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "3634", + "id": 2186, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34938:2:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "34933:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2188, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "34932:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34920:21:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2190, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "34919:23:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "31", + "id": 2191, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34945:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "34919:27:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2193, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "34918:29:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34914:33:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34685:262:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2207, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 2196, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34978:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2205, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2202, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2197, + "name": "scalar_u", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2087, + "src": "34984:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2198, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2097, + "src": "34997:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "313238", + "id": 2199, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "35002:3:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "34997:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2201, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "34996:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34984:22:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2203, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "34983:24:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "31", + "id": 2204, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "35010:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "34983:28:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2206, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "34982:30:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34978:34:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34685:327:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2217, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2214, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2209, + "name": "scalar_u", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2087, + "src": "35017:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2212, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2210, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2097, + "src": "35030:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "313932", + "id": 2211, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "35035:3:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_192_by_1", + "typeString": "int_const 192" + }, + "value": "192" + }, + "src": "35030:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2213, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "35029:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "35017:22:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2215, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "35016:24:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "31", + "id": 2216, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "35043:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "35016:28:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2218, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "35015:30:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34685:360:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2220, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "34659:408:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34634:433:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34627:440:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2223, + "nodeType": "ExpressionStatement", + "src": "34627:440:5" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 2110, + "name": "T", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2104, + "src": "34519:1:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 2112, + "indexExpression": { + "hexValue": "30", + "id": 2111, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34521:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "34519:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 2113, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34527:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "34519:9:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2225, + "nodeType": "WhileStatement", + "src": "34512:570:5" + }, + { + "AST": { + "nativeSrc": "35104:4048:5", + "nodeType": "YulBlock", + "src": "35104:4048:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "T", + "nativeSrc": "35131:1:5", + "nodeType": "YulIdentifier", + "src": "35131:1:5" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "35144:1:5", + "nodeType": "YulIdentifier", + "src": "35144:1:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "35138:5:5", + "nodeType": "YulIdentifier", + "src": "35138:5:5" + }, + "nativeSrc": "35138:8:5", + "nodeType": "YulFunctionCall", + "src": "35138:8:5" + }, + { + "name": "dataPointer", + "nativeSrc": "35148:11:5", + "nodeType": "YulIdentifier", + "src": "35148:11:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35134:3:5", + "nodeType": "YulIdentifier", + "src": "35134:3:5" + }, + "nativeSrc": "35134:26:5", + "nodeType": "YulFunctionCall", + "src": "35134:26:5" + }, + { + "kind": "number", + "nativeSrc": "35162:2:5", + "nodeType": "YulLiteral", + "src": "35162:2:5", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "codecopy", + "nativeSrc": "35122:8:5", + "nodeType": "YulIdentifier", + "src": "35122:8:5" + }, + "nativeSrc": "35122:43:5", + "nodeType": "YulFunctionCall", + "src": "35122:43:5" + }, + "nativeSrc": "35122:43:5", + "nodeType": "YulExpressionStatement", + "src": "35122:43:5" + }, + { + "nativeSrc": "35182:13:5", + "nodeType": "YulAssignment", + "src": "35182:13:5", + "value": { + "arguments": [ + { + "name": "T", + "nativeSrc": "35193:1:5", + "nodeType": "YulIdentifier", + "src": "35193:1:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "35187:5:5", + "nodeType": "YulIdentifier", + "src": "35187:5:5" + }, + "nativeSrc": "35187:8:5", + "nodeType": "YulFunctionCall", + "src": "35187:8:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "35182:1:5", + "nodeType": "YulIdentifier", + "src": "35182:1:5" + } + ] + }, + { + "nativeSrc": "35212:26:5", + "nodeType": "YulVariableDeclaration", + "src": "35212:26:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "35231:1:5", + "nodeType": "YulIdentifier", + "src": "35231:1:5" + }, + { + "kind": "number", + "nativeSrc": "35234:2:5", + "nodeType": "YulLiteral", + "src": "35234:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35227:3:5", + "nodeType": "YulIdentifier", + "src": "35227:3:5" + }, + "nativeSrc": "35227:10:5", + "nodeType": "YulFunctionCall", + "src": "35227:10:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "35221:5:5", + "nodeType": "YulIdentifier", + "src": "35221:5:5" + }, + "nativeSrc": "35221:17:5", + "nodeType": "YulFunctionCall", + "src": "35221:17:5" + }, + "variables": [ + { + "name": "Y", + "nativeSrc": "35216:1:5", + "nodeType": "YulTypedName", + "src": "35216:1:5", + "type": "" + } + ] + }, + { + "nativeSrc": "35255:12:5", + "nodeType": "YulVariableDeclaration", + "src": "35255:12:5", + "value": { + "kind": "number", + "nativeSrc": "35266:1:5", + "nodeType": "YulLiteral", + "src": "35266:1:5", + "type": "", + "value": "1" + }, + "variables": [ + { + "name": "zzz", + "nativeSrc": "35259:3:5", + "nodeType": "YulTypedName", + "src": "35259:3:5", + "type": "" + } + ] + }, + { + "nativeSrc": "35284:7:5", + "nodeType": "YulAssignment", + "src": "35284:7:5", + "value": { + "kind": "number", + "nativeSrc": "35290:1:5", + "nodeType": "YulLiteral", + "src": "35290:1:5", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "35284:2:5", + "nodeType": "YulIdentifier", + "src": "35284:2:5" + } + ] + }, + { + "body": { + "nativeSrc": "35457:2850:5", + "nodeType": "YulBlock", + "src": "35457:2850:5", + "statements": [ + { + "nativeSrc": "35479:25:5", + "nodeType": "YulVariableDeclaration", + "src": "35479:25:5", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "35496:1:5", + "nodeType": "YulLiteral", + "src": "35496:1:5", + "type": "", + "value": "2" + }, + { + "name": "Y", + "nativeSrc": "35499:1:5", + "nodeType": "YulIdentifier", + "src": "35499:1:5" + }, + { + "name": "p", + "nativeSrc": "35502:1:5", + "nodeType": "YulIdentifier", + "src": "35502:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "35489:6:5", + "nodeType": "YulIdentifier", + "src": "35489:6:5" + }, + "nativeSrc": "35489:15:5", + "nodeType": "YulFunctionCall", + "src": "35489:15:5" + }, + "variables": [ + { + "name": "T1", + "nativeSrc": "35483:2:5", + "nodeType": "YulTypedName", + "src": "35483:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "35544:27:5", + "nodeType": "YulVariableDeclaration", + "src": "35544:27:5", + "value": { + "arguments": [ + { + "name": "T1", + "nativeSrc": "35561:2:5", + "nodeType": "YulIdentifier", + "src": "35561:2:5" + }, + { + "name": "T1", + "nativeSrc": "35565:2:5", + "nodeType": "YulIdentifier", + "src": "35565:2:5" + }, + { + "name": "p", + "nativeSrc": "35569:1:5", + "nodeType": "YulIdentifier", + "src": "35569:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "35554:6:5", + "nodeType": "YulIdentifier", + "src": "35554:6:5" + }, + "nativeSrc": "35554:17:5", + "nodeType": "YulFunctionCall", + "src": "35554:17:5" + }, + "variables": [ + { + "name": "T2", + "nativeSrc": "35548:2:5", + "nodeType": "YulTypedName", + "src": "35548:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "35601:26:5", + "nodeType": "YulVariableDeclaration", + "src": "35601:26:5", + "value": { + "arguments": [ + { + "name": "X", + "nativeSrc": "35618:1:5", + "nodeType": "YulIdentifier", + "src": "35618:1:5" + }, + { + "name": "T2", + "nativeSrc": "35621:2:5", + "nodeType": "YulIdentifier", + "src": "35621:2:5" + }, + { + "name": "p", + "nativeSrc": "35625:1:5", + "nodeType": "YulIdentifier", + "src": "35625:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "35611:6:5", + "nodeType": "YulIdentifier", + "src": "35611:6:5" + }, + "nativeSrc": "35611:16:5", + "nodeType": "YulFunctionCall", + "src": "35611:16:5" + }, + "variables": [ + { + "name": "T3", + "nativeSrc": "35605:2:5", + "nodeType": "YulTypedName", + "src": "35605:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "35660:23:5", + "nodeType": "YulAssignment", + "src": "35660:23:5", + "value": { + "arguments": [ + { + "name": "T1", + "nativeSrc": "35673:2:5", + "nodeType": "YulIdentifier", + "src": "35673:2:5" + }, + { + "name": "T2", + "nativeSrc": "35677:2:5", + "nodeType": "YulIdentifier", + "src": "35677:2:5" + }, + { + "name": "p", + "nativeSrc": "35681:1:5", + "nodeType": "YulIdentifier", + "src": "35681:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "35666:6:5", + "nodeType": "YulIdentifier", + "src": "35666:6:5" + }, + "nativeSrc": "35666:17:5", + "nodeType": "YulFunctionCall", + "src": "35666:17:5" + }, + "variableNames": [ + { + "name": "T1", + "nativeSrc": "35660:2:5", + "nodeType": "YulIdentifier", + "src": "35660:2:5" + } + ] + }, + { + "nativeSrc": "35712:77:5", + "nodeType": "YulVariableDeclaration", + "src": "35712:77:5", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "35729:1:5", + "nodeType": "YulLiteral", + "src": "35729:1:5", + "type": "", + "value": "3" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "X", + "nativeSrc": "35746:1:5", + "nodeType": "YulIdentifier", + "src": "35746:1:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "35753:1:5", + "nodeType": "YulIdentifier", + "src": "35753:1:5" + }, + { + "name": "zz", + "nativeSrc": "35756:2:5", + "nodeType": "YulIdentifier", + "src": "35756:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "35749:3:5", + "nodeType": "YulIdentifier", + "src": "35749:3:5" + }, + "nativeSrc": "35749:10:5", + "nodeType": "YulFunctionCall", + "src": "35749:10:5" + }, + { + "name": "p", + "nativeSrc": "35761:1:5", + "nodeType": "YulIdentifier", + "src": "35761:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "35739:6:5", + "nodeType": "YulIdentifier", + "src": "35739:6:5" + }, + "nativeSrc": "35739:24:5", + "nodeType": "YulFunctionCall", + "src": "35739:24:5" + }, + { + "arguments": [ + { + "name": "X", + "nativeSrc": "35772:1:5", + "nodeType": "YulIdentifier", + "src": "35772:1:5" + }, + { + "name": "zz", + "nativeSrc": "35775:2:5", + "nodeType": "YulIdentifier", + "src": "35775:2:5" + }, + { + "name": "p", + "nativeSrc": "35779:1:5", + "nodeType": "YulIdentifier", + "src": "35779:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "35765:6:5", + "nodeType": "YulIdentifier", + "src": "35765:6:5" + }, + "nativeSrc": "35765:16:5", + "nodeType": "YulFunctionCall", + "src": "35765:16:5" + }, + { + "name": "p", + "nativeSrc": "35783:1:5", + "nodeType": "YulIdentifier", + "src": "35783:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "35732:6:5", + "nodeType": "YulIdentifier", + "src": "35732:6:5" + }, + "nativeSrc": "35732:53:5", + "nodeType": "YulFunctionCall", + "src": "35732:53:5" + }, + { + "name": "p", + "nativeSrc": "35787:1:5", + "nodeType": "YulIdentifier", + "src": "35787:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "35722:6:5", + "nodeType": "YulIdentifier", + "src": "35722:6:5" + }, + "nativeSrc": "35722:67:5", + "nodeType": "YulFunctionCall", + "src": "35722:67:5" + }, + "variables": [ + { + "name": "T4", + "nativeSrc": "35716:2:5", + "nodeType": "YulTypedName", + "src": "35716:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "35834:25:5", + "nodeType": "YulAssignment", + "src": "35834:25:5", + "value": { + "arguments": [ + { + "name": "T1", + "nativeSrc": "35848:2:5", + "nodeType": "YulIdentifier", + "src": "35848:2:5" + }, + { + "name": "zzz", + "nativeSrc": "35852:3:5", + "nodeType": "YulIdentifier", + "src": "35852:3:5" + }, + { + "name": "p", + "nativeSrc": "35857:1:5", + "nodeType": "YulIdentifier", + "src": "35857:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "35841:6:5", + "nodeType": "YulIdentifier", + "src": "35841:6:5" + }, + "nativeSrc": "35841:18:5", + "nodeType": "YulFunctionCall", + "src": "35841:18:5" + }, + "variableNames": [ + { + "name": "zzz", + "nativeSrc": "35834:3:5", + "nodeType": "YulIdentifier", + "src": "35834:3:5" + } + ] + }, + { + "nativeSrc": "35894:23:5", + "nodeType": "YulAssignment", + "src": "35894:23:5", + "value": { + "arguments": [ + { + "name": "T2", + "nativeSrc": "35907:2:5", + "nodeType": "YulIdentifier", + "src": "35907:2:5" + }, + { + "name": "zz", + "nativeSrc": "35911:2:5", + "nodeType": "YulIdentifier", + "src": "35911:2:5" + }, + { + "name": "p", + "nativeSrc": "35915:1:5", + "nodeType": "YulIdentifier", + "src": "35915:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "35900:6:5", + "nodeType": "YulIdentifier", + "src": "35900:6:5" + }, + "nativeSrc": "35900:17:5", + "nodeType": "YulFunctionCall", + "src": "35900:17:5" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "35894:2:5", + "nodeType": "YulIdentifier", + "src": "35894:2:5" + } + ] + }, + { + "nativeSrc": "35959:57:5", + "nodeType": "YulAssignment", + "src": "35959:57:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "T4", + "nativeSrc": "35978:2:5", + "nodeType": "YulIdentifier", + "src": "35978:2:5" + }, + { + "name": "T4", + "nativeSrc": "35982:2:5", + "nodeType": "YulIdentifier", + "src": "35982:2:5" + }, + { + "name": "p", + "nativeSrc": "35986:1:5", + "nodeType": "YulIdentifier", + "src": "35986:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "35971:6:5", + "nodeType": "YulIdentifier", + "src": "35971:6:5" + }, + "nativeSrc": "35971:17:5", + "nodeType": "YulFunctionCall", + "src": "35971:17:5" + }, + { + "arguments": [ + { + "name": "minus_2", + "nativeSrc": "35997:7:5", + "nodeType": "YulIdentifier", + "src": "35997:7:5" + }, + { + "name": "T3", + "nativeSrc": "36006:2:5", + "nodeType": "YulIdentifier", + "src": "36006:2:5" + }, + { + "name": "p", + "nativeSrc": "36010:1:5", + "nodeType": "YulIdentifier", + "src": "36010:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "35990:6:5", + "nodeType": "YulIdentifier", + "src": "35990:6:5" + }, + "nativeSrc": "35990:22:5", + "nodeType": "YulFunctionCall", + "src": "35990:22:5" + }, + { + "name": "p", + "nativeSrc": "36014:1:5", + "nodeType": "YulIdentifier", + "src": "36014:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "35964:6:5", + "nodeType": "YulIdentifier", + "src": "35964:6:5" + }, + "nativeSrc": "35964:52:5", + "nodeType": "YulFunctionCall", + "src": "35964:52:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "35959:1:5", + "nodeType": "YulIdentifier", + "src": "35959:1:5" + } + ] + }, + { + "nativeSrc": "36121:45:5", + "nodeType": "YulAssignment", + "src": "36121:45:5", + "value": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "36134:2:5", + "nodeType": "YulIdentifier", + "src": "36134:2:5" + }, + { + "arguments": [ + { + "name": "X", + "nativeSrc": "36145:1:5", + "nodeType": "YulIdentifier", + "src": "36145:1:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "36152:1:5", + "nodeType": "YulIdentifier", + "src": "36152:1:5" + }, + { + "name": "T3", + "nativeSrc": "36155:2:5", + "nodeType": "YulIdentifier", + "src": "36155:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "36148:3:5", + "nodeType": "YulIdentifier", + "src": "36148:3:5" + }, + "nativeSrc": "36148:10:5", + "nodeType": "YulFunctionCall", + "src": "36148:10:5" + }, + { + "name": "p", + "nativeSrc": "36160:1:5", + "nodeType": "YulIdentifier", + "src": "36160:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "36138:6:5", + "nodeType": "YulIdentifier", + "src": "36138:6:5" + }, + "nativeSrc": "36138:24:5", + "nodeType": "YulFunctionCall", + "src": "36138:24:5" + }, + { + "name": "p", + "nativeSrc": "36164:1:5", + "nodeType": "YulIdentifier", + "src": "36164:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "36127:6:5", + "nodeType": "YulIdentifier", + "src": "36127:6:5" + }, + "nativeSrc": "36127:39:5", + "nodeType": "YulFunctionCall", + "src": "36127:39:5" + }, + "variableNames": [ + { + "name": "T2", + "nativeSrc": "36121:2:5", + "nodeType": "YulIdentifier", + "src": "36121:2:5" + } + ] + }, + { + "nativeSrc": "36292:36:5", + "nodeType": "YulAssignment", + "src": "36292:36:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "T1", + "nativeSrc": "36311:2:5", + "nodeType": "YulIdentifier", + "src": "36311:2:5" + }, + { + "name": "Y", + "nativeSrc": "36315:1:5", + "nodeType": "YulIdentifier", + "src": "36315:1:5" + }, + { + "name": "p", + "nativeSrc": "36318:1:5", + "nodeType": "YulIdentifier", + "src": "36318:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "36304:6:5", + "nodeType": "YulIdentifier", + "src": "36304:6:5" + }, + "nativeSrc": "36304:16:5", + "nodeType": "YulFunctionCall", + "src": "36304:16:5" + }, + { + "name": "T2", + "nativeSrc": "36322:2:5", + "nodeType": "YulIdentifier", + "src": "36322:2:5" + }, + { + "name": "p", + "nativeSrc": "36326:1:5", + "nodeType": "YulIdentifier", + "src": "36326:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "36297:6:5", + "nodeType": "YulIdentifier", + "src": "36297:6:5" + }, + "nativeSrc": "36297:31:5", + "nodeType": "YulFunctionCall", + "src": "36297:31:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "36292:1:5", + "nodeType": "YulIdentifier", + "src": "36292:1:5" + } + ] + }, + { + "nativeSrc": "36487:86:5", + "nodeType": "YulAssignment", + "src": "36487:86:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "36501:2:5", + "nodeType": "YulLiteral", + "src": "36501:2:5", + "type": "", + "value": "13" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "36513:5:5", + "nodeType": "YulIdentifier", + "src": "36513:5:5" + }, + { + "name": "scalar_v", + "nativeSrc": "36520:8:5", + "nodeType": "YulIdentifier", + "src": "36520:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "36509:3:5", + "nodeType": "YulIdentifier", + "src": "36509:3:5" + }, + "nativeSrc": "36509:20:5", + "nodeType": "YulFunctionCall", + "src": "36509:20:5" + }, + { + "kind": "number", + "nativeSrc": "36531:1:5", + "nodeType": "YulLiteral", + "src": "36531:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "36505:3:5", + "nodeType": "YulIdentifier", + "src": "36505:3:5" + }, + "nativeSrc": "36505:28:5", + "nodeType": "YulFunctionCall", + "src": "36505:28:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "36497:3:5", + "nodeType": "YulIdentifier", + "src": "36497:3:5" + }, + "nativeSrc": "36497:37:5", + "nodeType": "YulFunctionCall", + "src": "36497:37:5" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "36540:1:5", + "nodeType": "YulLiteral", + "src": "36540:1:5", + "type": "", + "value": "9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "36551:5:5", + "nodeType": "YulIdentifier", + "src": "36551:5:5" + }, + { + "name": "scalar_u", + "nativeSrc": "36558:8:5", + "nodeType": "YulIdentifier", + "src": "36558:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "36547:3:5", + "nodeType": "YulIdentifier", + "src": "36547:3:5" + }, + "nativeSrc": "36547:20:5", + "nodeType": "YulFunctionCall", + "src": "36547:20:5" + }, + { + "kind": "number", + "nativeSrc": "36569:1:5", + "nodeType": "YulLiteral", + "src": "36569:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "36543:3:5", + "nodeType": "YulIdentifier", + "src": "36543:3:5" + }, + "nativeSrc": "36543:28:5", + "nodeType": "YulFunctionCall", + "src": "36543:28:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "36536:3:5", + "nodeType": "YulIdentifier", + "src": "36536:3:5" + }, + "nativeSrc": "36536:36:5", + "nodeType": "YulFunctionCall", + "src": "36536:36:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36493:3:5", + "nodeType": "YulIdentifier", + "src": "36493:3:5" + }, + "nativeSrc": "36493:80:5", + "nodeType": "YulFunctionCall", + "src": "36493:80:5" + }, + "variableNames": [ + { + "name": "T4", + "nativeSrc": "36487:2:5", + "nodeType": "YulIdentifier", + "src": "36487:2:5" + } + ] + }, + { + "nativeSrc": "36594:23:5", + "nodeType": "YulAssignment", + "src": "36594:23:5", + "value": { + "arguments": [ + { + "name": "index", + "nativeSrc": "36607:5:5", + "nodeType": "YulIdentifier", + "src": "36607:5:5" + }, + { + "kind": "number", + "nativeSrc": "36614:2:5", + "nodeType": "YulLiteral", + "src": "36614:2:5", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "36603:3:5", + "nodeType": "YulIdentifier", + "src": "36603:3:5" + }, + "nativeSrc": "36603:14:5", + "nodeType": "YulFunctionCall", + "src": "36603:14:5" + }, + "variableNames": [ + { + "name": "index", + "nativeSrc": "36594:5:5", + "nodeType": "YulIdentifier", + "src": "36594:5:5" + } + ] + }, + { + "nativeSrc": "36638:95:5", + "nodeType": "YulAssignment", + "src": "36638:95:5", + "value": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "36648:2:5", + "nodeType": "YulIdentifier", + "src": "36648:2:5" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "36660:2:5", + "nodeType": "YulLiteral", + "src": "36660:2:5", + "type": "", + "value": "12" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "36672:5:5", + "nodeType": "YulIdentifier", + "src": "36672:5:5" + }, + { + "name": "scalar_v", + "nativeSrc": "36679:8:5", + "nodeType": "YulIdentifier", + "src": "36679:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "36668:3:5", + "nodeType": "YulIdentifier", + "src": "36668:3:5" + }, + "nativeSrc": "36668:20:5", + "nodeType": "YulFunctionCall", + "src": "36668:20:5" + }, + { + "kind": "number", + "nativeSrc": "36690:1:5", + "nodeType": "YulLiteral", + "src": "36690:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "36664:3:5", + "nodeType": "YulIdentifier", + "src": "36664:3:5" + }, + "nativeSrc": "36664:28:5", + "nodeType": "YulFunctionCall", + "src": "36664:28:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "36656:3:5", + "nodeType": "YulIdentifier", + "src": "36656:3:5" + }, + "nativeSrc": "36656:37:5", + "nodeType": "YulFunctionCall", + "src": "36656:37:5" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "36699:1:5", + "nodeType": "YulLiteral", + "src": "36699:1:5", + "type": "", + "value": "8" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "36710:5:5", + "nodeType": "YulIdentifier", + "src": "36710:5:5" + }, + { + "name": "scalar_u", + "nativeSrc": "36717:8:5", + "nodeType": "YulIdentifier", + "src": "36717:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "36706:3:5", + "nodeType": "YulIdentifier", + "src": "36706:3:5" + }, + "nativeSrc": "36706:20:5", + "nodeType": "YulFunctionCall", + "src": "36706:20:5" + }, + { + "kind": "number", + "nativeSrc": "36728:1:5", + "nodeType": "YulLiteral", + "src": "36728:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "36702:3:5", + "nodeType": "YulIdentifier", + "src": "36702:3:5" + }, + "nativeSrc": "36702:28:5", + "nodeType": "YulFunctionCall", + "src": "36702:28:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "36695:3:5", + "nodeType": "YulIdentifier", + "src": "36695:3:5" + }, + "nativeSrc": "36695:36:5", + "nodeType": "YulFunctionCall", + "src": "36695:36:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36652:3:5", + "nodeType": "YulIdentifier", + "src": "36652:3:5" + }, + "nativeSrc": "36652:80:5", + "nodeType": "YulFunctionCall", + "src": "36652:80:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36644:3:5", + "nodeType": "YulIdentifier", + "src": "36644:3:5" + }, + "nativeSrc": "36644:89:5", + "nodeType": "YulFunctionCall", + "src": "36644:89:5" + }, + "variableNames": [ + { + "name": "T4", + "nativeSrc": "36638:2:5", + "nodeType": "YulIdentifier", + "src": "36638:2:5" + } + ] + }, + { + "nativeSrc": "36754:23:5", + "nodeType": "YulAssignment", + "src": "36754:23:5", + "value": { + "arguments": [ + { + "name": "index", + "nativeSrc": "36767:5:5", + "nodeType": "YulIdentifier", + "src": "36767:5:5" + }, + { + "kind": "number", + "nativeSrc": "36774:2:5", + "nodeType": "YulLiteral", + "src": "36774:2:5", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "36763:3:5", + "nodeType": "YulIdentifier", + "src": "36763:3:5" + }, + "nativeSrc": "36763:14:5", + "nodeType": "YulFunctionCall", + "src": "36763:14:5" + }, + "variableNames": [ + { + "name": "index", + "nativeSrc": "36754:5:5", + "nodeType": "YulIdentifier", + "src": "36754:5:5" + } + ] + }, + { + "nativeSrc": "36798:95:5", + "nodeType": "YulAssignment", + "src": "36798:95:5", + "value": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "36808:2:5", + "nodeType": "YulIdentifier", + "src": "36808:2:5" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "36820:2:5", + "nodeType": "YulLiteral", + "src": "36820:2:5", + "type": "", + "value": "11" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "36832:5:5", + "nodeType": "YulIdentifier", + "src": "36832:5:5" + }, + { + "name": "scalar_v", + "nativeSrc": "36839:8:5", + "nodeType": "YulIdentifier", + "src": "36839:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "36828:3:5", + "nodeType": "YulIdentifier", + "src": "36828:3:5" + }, + "nativeSrc": "36828:20:5", + "nodeType": "YulFunctionCall", + "src": "36828:20:5" + }, + { + "kind": "number", + "nativeSrc": "36850:1:5", + "nodeType": "YulLiteral", + "src": "36850:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "36824:3:5", + "nodeType": "YulIdentifier", + "src": "36824:3:5" + }, + "nativeSrc": "36824:28:5", + "nodeType": "YulFunctionCall", + "src": "36824:28:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "36816:3:5", + "nodeType": "YulIdentifier", + "src": "36816:3:5" + }, + "nativeSrc": "36816:37:5", + "nodeType": "YulFunctionCall", + "src": "36816:37:5" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "36859:1:5", + "nodeType": "YulLiteral", + "src": "36859:1:5", + "type": "", + "value": "7" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "36870:5:5", + "nodeType": "YulIdentifier", + "src": "36870:5:5" + }, + { + "name": "scalar_u", + "nativeSrc": "36877:8:5", + "nodeType": "YulIdentifier", + "src": "36877:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "36866:3:5", + "nodeType": "YulIdentifier", + "src": "36866:3:5" + }, + "nativeSrc": "36866:20:5", + "nodeType": "YulFunctionCall", + "src": "36866:20:5" + }, + { + "kind": "number", + "nativeSrc": "36888:1:5", + "nodeType": "YulLiteral", + "src": "36888:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "36862:3:5", + "nodeType": "YulIdentifier", + "src": "36862:3:5" + }, + "nativeSrc": "36862:28:5", + "nodeType": "YulFunctionCall", + "src": "36862:28:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "36855:3:5", + "nodeType": "YulIdentifier", + "src": "36855:3:5" + }, + "nativeSrc": "36855:36:5", + "nodeType": "YulFunctionCall", + "src": "36855:36:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36812:3:5", + "nodeType": "YulIdentifier", + "src": "36812:3:5" + }, + "nativeSrc": "36812:80:5", + "nodeType": "YulFunctionCall", + "src": "36812:80:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36804:3:5", + "nodeType": "YulIdentifier", + "src": "36804:3:5" + }, + "nativeSrc": "36804:89:5", + "nodeType": "YulFunctionCall", + "src": "36804:89:5" + }, + "variableNames": [ + { + "name": "T4", + "nativeSrc": "36798:2:5", + "nodeType": "YulIdentifier", + "src": "36798:2:5" + } + ] + }, + { + "nativeSrc": "36914:23:5", + "nodeType": "YulAssignment", + "src": "36914:23:5", + "value": { + "arguments": [ + { + "name": "index", + "nativeSrc": "36927:5:5", + "nodeType": "YulIdentifier", + "src": "36927:5:5" + }, + { + "kind": "number", + "nativeSrc": "36934:2:5", + "nodeType": "YulLiteral", + "src": "36934:2:5", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "36923:3:5", + "nodeType": "YulIdentifier", + "src": "36923:3:5" + }, + "nativeSrc": "36923:14:5", + "nodeType": "YulFunctionCall", + "src": "36923:14:5" + }, + "variableNames": [ + { + "name": "index", + "nativeSrc": "36914:5:5", + "nodeType": "YulIdentifier", + "src": "36914:5:5" + } + ] + }, + { + "nativeSrc": "36958:95:5", + "nodeType": "YulAssignment", + "src": "36958:95:5", + "value": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "36968:2:5", + "nodeType": "YulIdentifier", + "src": "36968:2:5" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "36980:2:5", + "nodeType": "YulLiteral", + "src": "36980:2:5", + "type": "", + "value": "10" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "36992:5:5", + "nodeType": "YulIdentifier", + "src": "36992:5:5" + }, + { + "name": "scalar_v", + "nativeSrc": "36999:8:5", + "nodeType": "YulIdentifier", + "src": "36999:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "36988:3:5", + "nodeType": "YulIdentifier", + "src": "36988:3:5" + }, + "nativeSrc": "36988:20:5", + "nodeType": "YulFunctionCall", + "src": "36988:20:5" + }, + { + "kind": "number", + "nativeSrc": "37010:1:5", + "nodeType": "YulLiteral", + "src": "37010:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "36984:3:5", + "nodeType": "YulIdentifier", + "src": "36984:3:5" + }, + "nativeSrc": "36984:28:5", + "nodeType": "YulFunctionCall", + "src": "36984:28:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "36976:3:5", + "nodeType": "YulIdentifier", + "src": "36976:3:5" + }, + "nativeSrc": "36976:37:5", + "nodeType": "YulFunctionCall", + "src": "36976:37:5" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "37019:1:5", + "nodeType": "YulLiteral", + "src": "37019:1:5", + "type": "", + "value": "6" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "37030:5:5", + "nodeType": "YulIdentifier", + "src": "37030:5:5" + }, + { + "name": "scalar_u", + "nativeSrc": "37037:8:5", + "nodeType": "YulIdentifier", + "src": "37037:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "37026:3:5", + "nodeType": "YulIdentifier", + "src": "37026:3:5" + }, + "nativeSrc": "37026:20:5", + "nodeType": "YulFunctionCall", + "src": "37026:20:5" + }, + { + "kind": "number", + "nativeSrc": "37048:1:5", + "nodeType": "YulLiteral", + "src": "37048:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "37022:3:5", + "nodeType": "YulIdentifier", + "src": "37022:3:5" + }, + "nativeSrc": "37022:28:5", + "nodeType": "YulFunctionCall", + "src": "37022:28:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "37015:3:5", + "nodeType": "YulIdentifier", + "src": "37015:3:5" + }, + "nativeSrc": "37015:36:5", + "nodeType": "YulFunctionCall", + "src": "37015:36:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36972:3:5", + "nodeType": "YulIdentifier", + "src": "36972:3:5" + }, + "nativeSrc": "36972:80:5", + "nodeType": "YulFunctionCall", + "src": "36972:80:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36964:3:5", + "nodeType": "YulIdentifier", + "src": "36964:3:5" + }, + "nativeSrc": "36964:89:5", + "nodeType": "YulFunctionCall", + "src": "36964:89:5" + }, + "variableNames": [ + { + "name": "T4", + "nativeSrc": "36958:2:5", + "nodeType": "YulIdentifier", + "src": "36958:2:5" + } + ] + }, + { + "body": { + "nativeSrc": "37263:96:5", + "nodeType": "YulBlock", + "src": "37263:96:5", + "statements": [ + { + "nativeSrc": "37289:14:5", + "nodeType": "YulAssignment", + "src": "37289:14:5", + "value": { + "arguments": [ + { + "name": "p", + "nativeSrc": "37298:1:5", + "nodeType": "YulIdentifier", + "src": "37298:1:5" + }, + { + "name": "Y", + "nativeSrc": "37301:1:5", + "nodeType": "YulIdentifier", + "src": "37301:1:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "37294:3:5", + "nodeType": "YulIdentifier", + "src": "37294:3:5" + }, + "nativeSrc": "37294:9:5", + "nodeType": "YulFunctionCall", + "src": "37294:9:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "37289:1:5", + "nodeType": "YulIdentifier", + "src": "37289:1:5" + } + ] + }, + { + "nativeSrc": "37329:8:5", + "nodeType": "YulContinue", + "src": "37329:8:5" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "37259:2:5", + "nodeType": "YulIdentifier", + "src": "37259:2:5" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "37252:6:5", + "nodeType": "YulIdentifier", + "src": "37252:6:5" + }, + "nativeSrc": "37252:10:5", + "nodeType": "YulFunctionCall", + "src": "37252:10:5" + }, + "nativeSrc": "37249:110:5", + "nodeType": "YulIf", + "src": "37249:110:5" + }, + { + "nativeSrc": "37380:909:5", + "nodeType": "YulBlock", + "src": "37380:909:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "T", + "nativeSrc": "37496:1:5", + "nodeType": "YulIdentifier", + "src": "37496:1:5" + }, + { + "arguments": [ + { + "name": "T4", + "nativeSrc": "37503:2:5", + "nodeType": "YulIdentifier", + "src": "37503:2:5" + }, + { + "name": "dataPointer", + "nativeSrc": "37507:11:5", + "nodeType": "YulIdentifier", + "src": "37507:11:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "37499:3:5", + "nodeType": "YulIdentifier", + "src": "37499:3:5" + }, + "nativeSrc": "37499:20:5", + "nodeType": "YulFunctionCall", + "src": "37499:20:5" + }, + { + "kind": "number", + "nativeSrc": "37521:2:5", + "nodeType": "YulLiteral", + "src": "37521:2:5", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "codecopy", + "nativeSrc": "37487:8:5", + "nodeType": "YulIdentifier", + "src": "37487:8:5" + }, + "nativeSrc": "37487:37:5", + "nodeType": "YulFunctionCall", + "src": "37487:37:5" + }, + "nativeSrc": "37487:37:5", + "nodeType": "YulExpressionStatement", + "src": "37487:37:5" + }, + { + "nativeSrc": "37596:57:5", + "nodeType": "YulVariableDeclaration", + "src": "37596:57:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "37630:1:5", + "nodeType": "YulIdentifier", + "src": "37630:1:5" + }, + { + "kind": "number", + "nativeSrc": "37633:2:5", + "nodeType": "YulLiteral", + "src": "37633:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "37626:3:5", + "nodeType": "YulIdentifier", + "src": "37626:3:5" + }, + "nativeSrc": "37626:10:5", + "nodeType": "YulFunctionCall", + "src": "37626:10:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "37620:5:5", + "nodeType": "YulIdentifier", + "src": "37620:5:5" + }, + "nativeSrc": "37620:17:5", + "nodeType": "YulFunctionCall", + "src": "37620:17:5" + }, + { + "name": "zzz", + "nativeSrc": "37639:3:5", + "nodeType": "YulIdentifier", + "src": "37639:3:5" + }, + { + "name": "p", + "nativeSrc": "37644:1:5", + "nodeType": "YulIdentifier", + "src": "37644:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "37613:6:5", + "nodeType": "YulIdentifier", + "src": "37613:6:5" + }, + "nativeSrc": "37613:33:5", + "nodeType": "YulFunctionCall", + "src": "37613:33:5" + }, + { + "name": "Y", + "nativeSrc": "37648:1:5", + "nodeType": "YulIdentifier", + "src": "37648:1:5" + }, + { + "name": "p", + "nativeSrc": "37651:1:5", + "nodeType": "YulIdentifier", + "src": "37651:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "37606:6:5", + "nodeType": "YulIdentifier", + "src": "37606:6:5" + }, + "nativeSrc": "37606:47:5", + "nodeType": "YulFunctionCall", + "src": "37606:47:5" + }, + "variables": [ + { + "name": "y2", + "nativeSrc": "37600:2:5", + "nodeType": "YulTypedName", + "src": "37600:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "37678:51:5", + "nodeType": "YulAssignment", + "src": "37678:51:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "37704:1:5", + "nodeType": "YulIdentifier", + "src": "37704:1:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "37698:5:5", + "nodeType": "YulIdentifier", + "src": "37698:5:5" + }, + "nativeSrc": "37698:8:5", + "nodeType": "YulFunctionCall", + "src": "37698:8:5" + }, + { + "name": "zz", + "nativeSrc": "37708:2:5", + "nodeType": "YulIdentifier", + "src": "37708:2:5" + }, + { + "name": "p", + "nativeSrc": "37712:1:5", + "nodeType": "YulIdentifier", + "src": "37712:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "37691:6:5", + "nodeType": "YulIdentifier", + "src": "37691:6:5" + }, + "nativeSrc": "37691:23:5", + "nodeType": "YulFunctionCall", + "src": "37691:23:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "37720:1:5", + "nodeType": "YulIdentifier", + "src": "37720:1:5" + }, + { + "name": "X", + "nativeSrc": "37723:1:5", + "nodeType": "YulIdentifier", + "src": "37723:1:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "37716:3:5", + "nodeType": "YulIdentifier", + "src": "37716:3:5" + }, + "nativeSrc": "37716:9:5", + "nodeType": "YulFunctionCall", + "src": "37716:9:5" + }, + { + "name": "p", + "nativeSrc": "37727:1:5", + "nodeType": "YulIdentifier", + "src": "37727:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "37684:6:5", + "nodeType": "YulIdentifier", + "src": "37684:6:5" + }, + "nativeSrc": "37684:45:5", + "nodeType": "YulFunctionCall", + "src": "37684:45:5" + }, + "variableNames": [ + { + "name": "T2", + "nativeSrc": "37678:2:5", + "nodeType": "YulIdentifier", + "src": "37678:2:5" + } + ] + }, + { + "nativeSrc": "37754:23:5", + "nodeType": "YulAssignment", + "src": "37754:23:5", + "value": { + "arguments": [ + { + "name": "T2", + "nativeSrc": "37767:2:5", + "nodeType": "YulIdentifier", + "src": "37767:2:5" + }, + { + "name": "T2", + "nativeSrc": "37771:2:5", + "nodeType": "YulIdentifier", + "src": "37771:2:5" + }, + { + "name": "p", + "nativeSrc": "37775:1:5", + "nodeType": "YulIdentifier", + "src": "37775:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "37760:6:5", + "nodeType": "YulIdentifier", + "src": "37760:6:5" + }, + "nativeSrc": "37760:17:5", + "nodeType": "YulFunctionCall", + "src": "37760:17:5" + }, + "variableNames": [ + { + "name": "T4", + "nativeSrc": "37754:2:5", + "nodeType": "YulIdentifier", + "src": "37754:2:5" + } + ] + }, + { + "nativeSrc": "37802:23:5", + "nodeType": "YulAssignment", + "src": "37802:23:5", + "value": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "37815:2:5", + "nodeType": "YulIdentifier", + "src": "37815:2:5" + }, + { + "name": "T2", + "nativeSrc": "37819:2:5", + "nodeType": "YulIdentifier", + "src": "37819:2:5" + }, + { + "name": "p", + "nativeSrc": "37823:1:5", + "nodeType": "YulIdentifier", + "src": "37823:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "37808:6:5", + "nodeType": "YulIdentifier", + "src": "37808:6:5" + }, + "nativeSrc": "37808:17:5", + "nodeType": "YulFunctionCall", + "src": "37808:17:5" + }, + "variableNames": [ + { + "name": "T1", + "nativeSrc": "37802:2:5", + "nodeType": "YulIdentifier", + "src": "37802:2:5" + } + ] + }, + { + "nativeSrc": "37850:23:5", + "nodeType": "YulAssignment", + "src": "37850:23:5", + "value": { + "arguments": [ + { + "name": "zz", + "nativeSrc": "37863:2:5", + "nodeType": "YulIdentifier", + "src": "37863:2:5" + }, + { + "name": "T4", + "nativeSrc": "37867:2:5", + "nodeType": "YulIdentifier", + "src": "37867:2:5" + }, + { + "name": "p", + "nativeSrc": "37871:1:5", + "nodeType": "YulIdentifier", + "src": "37871:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "37856:6:5", + "nodeType": "YulIdentifier", + "src": "37856:6:5" + }, + "nativeSrc": "37856:17:5", + "nodeType": "YulFunctionCall", + "src": "37856:17:5" + }, + "variableNames": [ + { + "name": "T2", + "nativeSrc": "37850:2:5", + "nodeType": "YulIdentifier", + "src": "37850:2:5" + } + ] + }, + { + "nativeSrc": "37906:25:5", + "nodeType": "YulAssignment", + "src": "37906:25:5", + "value": { + "arguments": [ + { + "name": "zzz", + "nativeSrc": "37920:3:5", + "nodeType": "YulIdentifier", + "src": "37920:3:5" + }, + { + "name": "T1", + "nativeSrc": "37925:2:5", + "nodeType": "YulIdentifier", + "src": "37925:2:5" + }, + { + "name": "p", + "nativeSrc": "37929:1:5", + "nodeType": "YulIdentifier", + "src": "37929:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "37913:6:5", + "nodeType": "YulIdentifier", + "src": "37913:6:5" + }, + "nativeSrc": "37913:18:5", + "nodeType": "YulFunctionCall", + "src": "37913:18:5" + }, + "variableNames": [ + { + "name": "zzz", + "nativeSrc": "37906:3:5", + "nodeType": "YulIdentifier", + "src": "37906:3:5" + } + ] + }, + { + "nativeSrc": "37968:27:5", + "nodeType": "YulVariableDeclaration", + "src": "37968:27:5", + "value": { + "arguments": [ + { + "name": "X", + "nativeSrc": "37986:1:5", + "nodeType": "YulIdentifier", + "src": "37986:1:5" + }, + { + "name": "T4", + "nativeSrc": "37989:2:5", + "nodeType": "YulIdentifier", + "src": "37989:2:5" + }, + { + "name": "p", + "nativeSrc": "37993:1:5", + "nodeType": "YulIdentifier", + "src": "37993:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "37979:6:5", + "nodeType": "YulIdentifier", + "src": "37979:6:5" + }, + "nativeSrc": "37979:16:5", + "nodeType": "YulFunctionCall", + "src": "37979:16:5" + }, + "variables": [ + { + "name": "zz1", + "nativeSrc": "37972:3:5", + "nodeType": "YulTypedName", + "src": "37972:3:5", + "type": "" + } + ] + }, + { + "nativeSrc": "38020:82:5", + "nodeType": "YulAssignment", + "src": "38020:82:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "y2", + "nativeSrc": "38047:2:5", + "nodeType": "YulIdentifier", + "src": "38047:2:5" + }, + { + "name": "y2", + "nativeSrc": "38051:2:5", + "nodeType": "YulIdentifier", + "src": "38051:2:5" + }, + { + "name": "p", + "nativeSrc": "38055:1:5", + "nodeType": "YulIdentifier", + "src": "38055:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "38040:6:5", + "nodeType": "YulIdentifier", + "src": "38040:6:5" + }, + "nativeSrc": "38040:17:5", + "nodeType": "YulFunctionCall", + "src": "38040:17:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "38063:1:5", + "nodeType": "YulIdentifier", + "src": "38063:1:5" + }, + { + "name": "T1", + "nativeSrc": "38066:2:5", + "nodeType": "YulIdentifier", + "src": "38066:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "38059:3:5", + "nodeType": "YulIdentifier", + "src": "38059:3:5" + }, + "nativeSrc": "38059:10:5", + "nodeType": "YulFunctionCall", + "src": "38059:10:5" + }, + { + "name": "p", + "nativeSrc": "38071:1:5", + "nodeType": "YulIdentifier", + "src": "38071:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "38033:6:5", + "nodeType": "YulIdentifier", + "src": "38033:6:5" + }, + "nativeSrc": "38033:40:5", + "nodeType": "YulFunctionCall", + "src": "38033:40:5" + }, + { + "arguments": [ + { + "name": "minus_2", + "nativeSrc": "38082:7:5", + "nodeType": "YulIdentifier", + "src": "38082:7:5" + }, + { + "name": "zz1", + "nativeSrc": "38091:3:5", + "nodeType": "YulIdentifier", + "src": "38091:3:5" + }, + { + "name": "p", + "nativeSrc": "38096:1:5", + "nodeType": "YulIdentifier", + "src": "38096:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "38075:6:5", + "nodeType": "YulIdentifier", + "src": "38075:6:5" + }, + "nativeSrc": "38075:23:5", + "nodeType": "YulFunctionCall", + "src": "38075:23:5" + }, + { + "name": "p", + "nativeSrc": "38100:1:5", + "nodeType": "YulIdentifier", + "src": "38100:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "38026:6:5", + "nodeType": "YulIdentifier", + "src": "38026:6:5" + }, + "nativeSrc": "38026:76:5", + "nodeType": "YulFunctionCall", + "src": "38026:76:5" + }, + "variableNames": [ + { + "name": "T4", + "nativeSrc": "38020:2:5", + "nodeType": "YulIdentifier", + "src": "38020:2:5" + } + ] + }, + { + "nativeSrc": "38127:75:5", + "nodeType": "YulAssignment", + "src": "38127:75:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "zz1", + "nativeSrc": "38153:3:5", + "nodeType": "YulIdentifier", + "src": "38153:3:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "38162:1:5", + "nodeType": "YulIdentifier", + "src": "38162:1:5" + }, + { + "name": "T4", + "nativeSrc": "38165:2:5", + "nodeType": "YulIdentifier", + "src": "38165:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "38158:3:5", + "nodeType": "YulIdentifier", + "src": "38158:3:5" + }, + "nativeSrc": "38158:10:5", + "nodeType": "YulFunctionCall", + "src": "38158:10:5" + }, + { + "name": "p", + "nativeSrc": "38170:1:5", + "nodeType": "YulIdentifier", + "src": "38170:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "38146:6:5", + "nodeType": "YulIdentifier", + "src": "38146:6:5" + }, + "nativeSrc": "38146:26:5", + "nodeType": "YulFunctionCall", + "src": "38146:26:5" + }, + { + "name": "y2", + "nativeSrc": "38174:2:5", + "nodeType": "YulIdentifier", + "src": "38174:2:5" + }, + { + "name": "p", + "nativeSrc": "38178:1:5", + "nodeType": "YulIdentifier", + "src": "38178:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "38139:6:5", + "nodeType": "YulIdentifier", + "src": "38139:6:5" + }, + "nativeSrc": "38139:41:5", + "nodeType": "YulFunctionCall", + "src": "38139:41:5" + }, + { + "arguments": [ + { + "name": "Y", + "nativeSrc": "38189:1:5", + "nodeType": "YulIdentifier", + "src": "38189:1:5" + }, + { + "name": "T1", + "nativeSrc": "38192:2:5", + "nodeType": "YulIdentifier", + "src": "38192:2:5" + }, + { + "name": "p", + "nativeSrc": "38196:1:5", + "nodeType": "YulIdentifier", + "src": "38196:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "38182:6:5", + "nodeType": "YulIdentifier", + "src": "38182:6:5" + }, + "nativeSrc": "38182:16:5", + "nodeType": "YulFunctionCall", + "src": "38182:16:5" + }, + { + "name": "p", + "nativeSrc": "38200:1:5", + "nodeType": "YulIdentifier", + "src": "38200:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "38132:6:5", + "nodeType": "YulIdentifier", + "src": "38132:6:5" + }, + "nativeSrc": "38132:70:5", + "nodeType": "YulFunctionCall", + "src": "38132:70:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "38127:1:5", + "nodeType": "YulIdentifier", + "src": "38127:1:5" + } + ] + }, + { + "nativeSrc": "38227:8:5", + "nodeType": "YulAssignment", + "src": "38227:8:5", + "value": { + "name": "T2", + "nativeSrc": "38233:2:5", + "nodeType": "YulIdentifier", + "src": "38233:2:5" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "38227:2:5", + "nodeType": "YulIdentifier", + "src": "38227:2:5" + } + ] + }, + { + "nativeSrc": "38260:7:5", + "nodeType": "YulAssignment", + "src": "38260:7:5", + "value": { + "name": "T4", + "nativeSrc": "38265:2:5", + "nodeType": "YulIdentifier", + "src": "38265:2:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "38260:1:5", + "nodeType": "YulIdentifier", + "src": "38260:1:5" + } + ] + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "index", + "nativeSrc": "35416:5:5", + "nodeType": "YulIdentifier", + "src": "35416:5:5" + }, + { + "kind": "number", + "nativeSrc": "35423:3:5", + "nodeType": "YulLiteral", + "src": "35423:3:5", + "type": "", + "value": "191" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "35413:2:5", + "nodeType": "YulIdentifier", + "src": "35413:2:5" + }, + "nativeSrc": "35413:14:5", + "nodeType": "YulFunctionCall", + "src": "35413:14:5" + }, + "nativeSrc": "35388:2919:5", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "35428:28:5", + "nodeType": "YulBlock", + "src": "35428:28:5", + "statements": [ + { + "nativeSrc": "35430:24:5", + "nodeType": "YulAssignment", + "src": "35430:24:5", + "value": { + "arguments": [ + { + "name": "index", + "nativeSrc": "35443:5:5", + "nodeType": "YulIdentifier", + "src": "35443:5:5" + }, + { + "kind": "number", + "nativeSrc": "35450:3:5", + "nodeType": "YulLiteral", + "src": "35450:3:5", + "type": "", + "value": "191" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35439:3:5", + "nodeType": "YulIdentifier", + "src": "35439:3:5" + }, + "nativeSrc": "35439:15:5", + "nodeType": "YulFunctionCall", + "src": "35439:15:5" + }, + "variableNames": [ + { + "name": "index", + "nativeSrc": "35430:5:5", + "nodeType": "YulIdentifier", + "src": "35430:5:5" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "35392:20:5", + "nodeType": "YulBlock", + "src": "35392:20:5", + "statements": [ + { + "nativeSrc": "35394:16:5", + "nodeType": "YulVariableDeclaration", + "src": "35394:16:5", + "value": { + "kind": "number", + "nativeSrc": "35407:3:5", + "nodeType": "YulLiteral", + "src": "35407:3:5", + "type": "", + "value": "254" + }, + "variables": [ + { + "name": "index", + "nativeSrc": "35398:5:5", + "nodeType": "YulTypedName", + "src": "35398:5:5", + "type": "" + } + ] + } + ] + }, + "src": "35388:2919:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "38346:1:5", + "nodeType": "YulIdentifier", + "src": "38346:1:5" + }, + { + "kind": "number", + "nativeSrc": "38349:4:5", + "nodeType": "YulLiteral", + "src": "38349:4:5", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "38342:3:5", + "nodeType": "YulIdentifier", + "src": "38342:3:5" + }, + "nativeSrc": "38342:12:5", + "nodeType": "YulFunctionCall", + "src": "38342:12:5" + }, + { + "name": "zz", + "nativeSrc": "38356:2:5", + "nodeType": "YulIdentifier", + "src": "38356:2:5" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "38335:6:5", + "nodeType": "YulIdentifier", + "src": "38335:6:5" + }, + "nativeSrc": "38335:24:5", + "nodeType": "YulFunctionCall", + "src": "38335:24:5" + }, + "nativeSrc": "38335:24:5", + "nodeType": "YulExpressionStatement", + "src": "38335:24:5" + }, + { + "expression": { + "arguments": [ + { + "name": "T", + "nativeSrc": "38619:1:5", + "nodeType": "YulIdentifier", + "src": "38619:1:5" + }, + { + "kind": "number", + "nativeSrc": "38622:4:5", + "nodeType": "YulLiteral", + "src": "38622:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "38612:6:5", + "nodeType": "YulIdentifier", + "src": "38612:6:5" + }, + "nativeSrc": "38612:15:5", + "nodeType": "YulFunctionCall", + "src": "38612:15:5" + }, + "nativeSrc": "38612:15:5", + "nodeType": "YulExpressionStatement", + "src": "38612:15:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "38655:1:5", + "nodeType": "YulIdentifier", + "src": "38655:1:5" + }, + { + "kind": "number", + "nativeSrc": "38658:4:5", + "nodeType": "YulLiteral", + "src": "38658:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "38651:3:5", + "nodeType": "YulIdentifier", + "src": "38651:3:5" + }, + "nativeSrc": "38651:12:5", + "nodeType": "YulFunctionCall", + "src": "38651:12:5" + }, + { + "kind": "number", + "nativeSrc": "38665:4:5", + "nodeType": "YulLiteral", + "src": "38665:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "38644:6:5", + "nodeType": "YulIdentifier", + "src": "38644:6:5" + }, + "nativeSrc": "38644:26:5", + "nodeType": "YulFunctionCall", + "src": "38644:26:5" + }, + "nativeSrc": "38644:26:5", + "nodeType": "YulExpressionStatement", + "src": "38644:26:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "38698:1:5", + "nodeType": "YulIdentifier", + "src": "38698:1:5" + }, + { + "kind": "number", + "nativeSrc": "38701:4:5", + "nodeType": "YulLiteral", + "src": "38701:4:5", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "38694:3:5", + "nodeType": "YulIdentifier", + "src": "38694:3:5" + }, + "nativeSrc": "38694:12:5", + "nodeType": "YulFunctionCall", + "src": "38694:12:5" + }, + { + "kind": "number", + "nativeSrc": "38708:4:5", + "nodeType": "YulLiteral", + "src": "38708:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "38687:6:5", + "nodeType": "YulIdentifier", + "src": "38687:6:5" + }, + "nativeSrc": "38687:26:5", + "nodeType": "YulFunctionCall", + "src": "38687:26:5" + }, + "nativeSrc": "38687:26:5", + "nodeType": "YulExpressionStatement", + "src": "38687:26:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "38852:1:5", + "nodeType": "YulIdentifier", + "src": "38852:1:5" + }, + { + "kind": "number", + "nativeSrc": "38855:4:5", + "nodeType": "YulLiteral", + "src": "38855:4:5", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "38848:3:5", + "nodeType": "YulIdentifier", + "src": "38848:3:5" + }, + "nativeSrc": "38848:12:5", + "nodeType": "YulFunctionCall", + "src": "38848:12:5" + }, + { + "name": "minus_2", + "nativeSrc": "38862:7:5", + "nodeType": "YulIdentifier", + "src": "38862:7:5" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "38841:6:5", + "nodeType": "YulIdentifier", + "src": "38841:6:5" + }, + "nativeSrc": "38841:29:5", + "nodeType": "YulFunctionCall", + "src": "38841:29:5" + }, + "nativeSrc": "38841:29:5", + "nodeType": "YulExpressionStatement", + "src": "38841:29:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "38898:1:5", + "nodeType": "YulIdentifier", + "src": "38898:1:5" + }, + { + "kind": "number", + "nativeSrc": "38901:4:5", + "nodeType": "YulLiteral", + "src": "38901:4:5", + "type": "", + "value": "0xa0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "38894:3:5", + "nodeType": "YulIdentifier", + "src": "38894:3:5" + }, + "nativeSrc": "38894:12:5", + "nodeType": "YulFunctionCall", + "src": "38894:12:5" + }, + { + "name": "p", + "nativeSrc": "38908:1:5", + "nodeType": "YulIdentifier", + "src": "38908:1:5" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "38887:6:5", + "nodeType": "YulIdentifier", + "src": "38887:6:5" + }, + "nativeSrc": "38887:23:5", + "nodeType": "YulFunctionCall", + "src": "38887:23:5" + }, + "nativeSrc": "38887:23:5", + "nodeType": "YulExpressionStatement", + "src": "38887:23:5" + }, + { + "body": { + "nativeSrc": "39045:16:5", + "nodeType": "YulBlock", + "src": "39045:16:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "39054:1:5", + "nodeType": "YulLiteral", + "src": "39054:1:5", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "39057:1:5", + "nodeType": "YulLiteral", + "src": "39057:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "39047:6:5", + "nodeType": "YulIdentifier", + "src": "39047:6:5" + }, + "nativeSrc": "39047:12:5", + "nodeType": "YulFunctionCall", + "src": "39047:12:5" + }, + "nativeSrc": "39047:12:5", + "nodeType": "YulExpressionStatement", + "src": "39047:12:5" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "39016:1:5", + "nodeType": "YulLiteral", + "src": "39016:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "39012:3:5", + "nodeType": "YulIdentifier", + "src": "39012:3:5" + }, + "nativeSrc": "39012:6:5", + "nodeType": "YulFunctionCall", + "src": "39012:6:5" + }, + { + "kind": "number", + "nativeSrc": "39020:4:5", + "nodeType": "YulLiteral", + "src": "39020:4:5", + "type": "", + "value": "0x05" + }, + { + "name": "T", + "nativeSrc": "39026:1:5", + "nodeType": "YulIdentifier", + "src": "39026:1:5" + }, + { + "kind": "number", + "nativeSrc": "39029:4:5", + "nodeType": "YulLiteral", + "src": "39029:4:5", + "type": "", + "value": "0xc0" + }, + { + "name": "T", + "nativeSrc": "39035:1:5", + "nodeType": "YulIdentifier", + "src": "39035:1:5" + }, + { + "kind": "number", + "nativeSrc": "39038:4:5", + "nodeType": "YulLiteral", + "src": "39038:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "39001:10:5", + "nodeType": "YulIdentifier", + "src": "39001:10:5" + }, + "nativeSrc": "39001:42:5", + "nodeType": "YulFunctionCall", + "src": "39001:42:5" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "38994:6:5", + "nodeType": "YulIdentifier", + "src": "38994:6:5" + }, + "nativeSrc": "38994:50:5", + "nodeType": "YulFunctionCall", + "src": "38994:50:5" + }, + "nativeSrc": "38991:70:5", + "nodeType": "YulIf", + "src": "38991:70:5" + }, + { + "nativeSrc": "39079:14:5", + "nodeType": "YulAssignment", + "src": "39079:14:5", + "value": { + "arguments": [ + { + "name": "T", + "nativeSrc": "39091:1:5", + "nodeType": "YulIdentifier", + "src": "39091:1:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "39085:5:5", + "nodeType": "YulIdentifier", + "src": "39085:5:5" + }, + "nativeSrc": "39085:8:5", + "nodeType": "YulFunctionCall", + "src": "39085:8:5" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "39079:2:5", + "nodeType": "YulIdentifier", + "src": "39079:2:5" + } + ] + }, + { + "nativeSrc": "39110:21:5", + "nodeType": "YulAssignment", + "src": "39110:21:5", + "value": { + "arguments": [ + { + "name": "X", + "nativeSrc": "39122:1:5", + "nodeType": "YulIdentifier", + "src": "39122:1:5" + }, + { + "name": "zz", + "nativeSrc": "39125:2:5", + "nodeType": "YulIdentifier", + "src": "39125:2:5" + }, + { + "name": "p", + "nativeSrc": "39129:1:5", + "nodeType": "YulIdentifier", + "src": "39129:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "39115:6:5", + "nodeType": "YulIdentifier", + "src": "39115:6:5" + }, + "nativeSrc": "39115:16:5", + "nodeType": "YulFunctionCall", + "src": "39115:16:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "39110:1:5", + "nodeType": "YulIdentifier", + "src": "39110:1:5" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2104, + "isOffset": false, + "isSlot": false, + "src": "35131:1:5", + "valueSize": 1 + }, + { + "declaration": 2104, + "isOffset": false, + "isSlot": false, + "src": "35144:1:5", + "valueSize": 1 + }, + { + "declaration": 2104, + "isOffset": false, + "isSlot": false, + "src": "35193:1:5", + "valueSize": 1 + }, + { + "declaration": 2104, + "isOffset": false, + "isSlot": false, + "src": "35231:1:5", + "valueSize": 1 + }, + { + "declaration": 2104, + "isOffset": false, + "isSlot": false, + "src": "37496:1:5", + "valueSize": 1 + }, + { + "declaration": 2104, + "isOffset": false, + "isSlot": false, + "src": "37630:1:5", + "valueSize": 1 + }, + { + "declaration": 2104, + "isOffset": false, + "isSlot": false, + "src": "37704:1:5", + "valueSize": 1 + }, + { + "declaration": 2104, + "isOffset": false, + "isSlot": false, + "src": "38346:1:5", + "valueSize": 1 + }, + { + "declaration": 2104, + "isOffset": false, + "isSlot": false, + "src": "38619:1:5", + "valueSize": 1 + }, + { + "declaration": 2104, + "isOffset": false, + "isSlot": false, + "src": "38655:1:5", + "valueSize": 1 + }, + { + "declaration": 2104, + "isOffset": false, + "isSlot": false, + "src": "38698:1:5", + "valueSize": 1 + }, + { + "declaration": 2104, + "isOffset": false, + "isSlot": false, + "src": "38852:1:5", + "valueSize": 1 + }, + { + "declaration": 2104, + "isOffset": false, + "isSlot": false, + "src": "38898:1:5", + "valueSize": 1 + }, + { + "declaration": 2104, + "isOffset": false, + "isSlot": false, + "src": "39026:1:5", + "valueSize": 1 + }, + { + "declaration": 2104, + "isOffset": false, + "isSlot": false, + "src": "39035:1:5", + "valueSize": 1 + }, + { + "declaration": 2104, + "isOffset": false, + "isSlot": false, + "src": "39091:1:5", + "valueSize": 1 + }, + { + "declaration": 2094, + "isOffset": false, + "isSlot": false, + "src": "35182:1:5", + "valueSize": 1 + }, + { + "declaration": 2094, + "isOffset": false, + "isSlot": false, + "src": "35618:1:5", + "valueSize": 1 + }, + { + "declaration": 2094, + "isOffset": false, + "isSlot": false, + "src": "35746:1:5", + "valueSize": 1 + }, + { + "declaration": 2094, + "isOffset": false, + "isSlot": false, + "src": "35772:1:5", + "valueSize": 1 + }, + { + "declaration": 2094, + "isOffset": false, + "isSlot": false, + "src": "35959:1:5", + "valueSize": 1 + }, + { + "declaration": 2094, + "isOffset": false, + "isSlot": false, + "src": "36145:1:5", + "valueSize": 1 + }, + { + "declaration": 2094, + "isOffset": false, + "isSlot": false, + "src": "37723:1:5", + "valueSize": 1 + }, + { + "declaration": 2094, + "isOffset": false, + "isSlot": false, + "src": "37986:1:5", + "valueSize": 1 + }, + { + "declaration": 2094, + "isOffset": false, + "isSlot": false, + "src": "38260:1:5", + "valueSize": 1 + }, + { + "declaration": 2094, + "isOffset": false, + "isSlot": false, + "src": "39110:1:5", + "valueSize": 1 + }, + { + "declaration": 2094, + "isOffset": false, + "isSlot": false, + "src": "39122:1:5", + "valueSize": 1 + }, + { + "declaration": 2091, + "isOffset": false, + "isSlot": false, + "src": "35148:11:5", + "valueSize": 1 + }, + { + "declaration": 2091, + "isOffset": false, + "isSlot": false, + "src": "37507:11:5", + "valueSize": 1 + }, + { + "declaration": 994, + "isOffset": false, + "isSlot": false, + "src": "35997:7:5", + "valueSize": 1 + }, + { + "declaration": 994, + "isOffset": false, + "isSlot": false, + "src": "38082:7:5", + "valueSize": 1 + }, + { + "declaration": 994, + "isOffset": false, + "isSlot": false, + "src": "38862:7:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "35502:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "35569:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "35625:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "35681:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "35753:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "35761:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "35779:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "35783:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "35787:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "35857:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "35915:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "35986:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "36010:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "36014:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "36152:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "36160:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "36164:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "36318:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "36326:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "37298:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "37644:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "37651:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "37712:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "37720:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "37727:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "37775:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "37823:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "37871:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "37929:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "37993:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "38055:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "38063:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "38071:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "38096:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "38100:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "38162:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "38170:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "38178:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "38196:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "38200:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "38908:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "39129:1:5", + "valueSize": 1 + }, + { + "declaration": 2087, + "isOffset": false, + "isSlot": false, + "src": "36558:8:5", + "valueSize": 1 + }, + { + "declaration": 2087, + "isOffset": false, + "isSlot": false, + "src": "36717:8:5", + "valueSize": 1 + }, + { + "declaration": 2087, + "isOffset": false, + "isSlot": false, + "src": "36877:8:5", + "valueSize": 1 + }, + { + "declaration": 2087, + "isOffset": false, + "isSlot": false, + "src": "37037:8:5", + "valueSize": 1 + }, + { + "declaration": 2089, + "isOffset": false, + "isSlot": false, + "src": "36520:8:5", + "valueSize": 1 + }, + { + "declaration": 2089, + "isOffset": false, + "isSlot": false, + "src": "36679:8:5", + "valueSize": 1 + }, + { + "declaration": 2089, + "isOffset": false, + "isSlot": false, + "src": "36839:8:5", + "valueSize": 1 + }, + { + "declaration": 2089, + "isOffset": false, + "isSlot": false, + "src": "36999:8:5", + "valueSize": 1 + }, + { + "declaration": 2097, + "isOffset": false, + "isSlot": false, + "src": "35284:2:5", + "valueSize": 1 + }, + { + "declaration": 2097, + "isOffset": false, + "isSlot": false, + "src": "35756:2:5", + "valueSize": 1 + }, + { + "declaration": 2097, + "isOffset": false, + "isSlot": false, + "src": "35775:2:5", + "valueSize": 1 + }, + { + "declaration": 2097, + "isOffset": false, + "isSlot": false, + "src": "35894:2:5", + "valueSize": 1 + }, + { + "declaration": 2097, + "isOffset": false, + "isSlot": false, + "src": "35911:2:5", + "valueSize": 1 + }, + { + "declaration": 2097, + "isOffset": false, + "isSlot": false, + "src": "37708:2:5", + "valueSize": 1 + }, + { + "declaration": 2097, + "isOffset": false, + "isSlot": false, + "src": "37863:2:5", + "valueSize": 1 + }, + { + "declaration": 2097, + "isOffset": false, + "isSlot": false, + "src": "38227:2:5", + "valueSize": 1 + }, + { + "declaration": 2097, + "isOffset": false, + "isSlot": false, + "src": "38356:2:5", + "valueSize": 1 + }, + { + "declaration": 2097, + "isOffset": false, + "isSlot": false, + "src": "39079:2:5", + "valueSize": 1 + }, + { + "declaration": 2097, + "isOffset": false, + "isSlot": false, + "src": "39125:2:5", + "valueSize": 1 + } + ], + "id": 2226, + "nodeType": "InlineAssembly", + "src": "35095:4057:5" + } + ] + } + ] + }, + "id": 2229, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ecZZ_mulmuladd_S8_hackmem", + "nameLocation": "34205:25:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2092, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2087, + "mutability": "mutable", + "name": "scalar_u", + "nameLocation": "34239:8:5", + "nodeType": "VariableDeclaration", + "scope": 2229, + "src": "34231:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2086, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "34231:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2089, + "mutability": "mutable", + "name": "scalar_v", + "nameLocation": "34257:8:5", + "nodeType": "VariableDeclaration", + "scope": 2229, + "src": "34249:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2088, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "34249:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2091, + "mutability": "mutable", + "name": "dataPointer", + "nameLocation": "34275:11:5", + "nodeType": "VariableDeclaration", + "scope": 2229, + "src": "34267:19:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2090, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "34267:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "34230:57:5" + }, + "returnParameters": { + "id": 2095, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2094, + "mutability": "mutable", + "name": "X", + "nameLocation": "34335:1:5", + "nodeType": "VariableDeclaration", + "scope": 2229, + "src": "34327:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2093, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "34327:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "34326:25:5" + }, + "scope": 2309, + "src": "34196:4988:5", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2307, + "nodeType": "Block", + "src": "39920:574:5", + "statements": [ + { + "assignments": [ + 2244 + ], + "declarations": [ + { + "constant": false, + "id": 2244, + "mutability": "mutable", + "name": "r", + "nameLocation": "39938:1:5", + "nodeType": "VariableDeclaration", + "scope": 2307, + "src": "39930:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2243, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "39930:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2248, + "initialValue": { + "baseExpression": { + "id": 2245, + "name": "rs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2236, + "src": "39942:2:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_calldata_ptr", + "typeString": "uint256[2] calldata" + } + }, + "id": 2247, + "indexExpression": { + "hexValue": "30", + "id": 2246, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "39945:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "39942:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "39930:17:5" + }, + { + "assignments": [ + 2250 + ], + "declarations": [ + { + "constant": false, + "id": 2250, + "mutability": "mutable", + "name": "s", + "nameLocation": "39965:1:5", + "nodeType": "VariableDeclaration", + "scope": 2307, + "src": "39957:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2249, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "39957:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2254, + "initialValue": { + "baseExpression": { + "id": 2251, + "name": "rs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2236, + "src": "39969:2:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_calldata_ptr", + "typeString": "uint256[2] calldata" + } + }, + "id": 2253, + "indexExpression": { + "hexValue": "31", + "id": 2252, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "39972:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "39969:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "39957:17:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2269, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2265, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2261, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2257, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2255, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2244, + "src": "39988:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 2256, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "39993:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "39988:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2260, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2258, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2244, + "src": "39998:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 2259, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 991, + "src": "40003:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "39998:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "39988:16:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2262, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2250, + "src": "40008:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 2263, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "40013:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "40008:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "39988:26:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2268, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2266, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2250, + "src": "40018:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 2267, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 991, + "src": "40023:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "40018:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "39988:36:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2273, + "nodeType": "IfStatement", + "src": "39984:79:5", + "trueBody": { + "id": 2272, + "nodeType": "Block", + "src": "40026:37:5", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 2270, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "40047:5:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 2242, + "id": 2271, + "nodeType": "Return", + "src": "40040:12:5" + } + ] + } + }, + { + "assignments": [ + 2275 + ], + "declarations": [ + { + "constant": false, + "id": 2275, + "mutability": "mutable", + "name": "sInv", + "nameLocation": "40215:4:5", + "nodeType": "VariableDeclaration", + "scope": 2307, + "src": "40207:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2274, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "40207:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2279, + "initialValue": { + "arguments": [ + { + "id": 2277, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2250, + "src": "40234:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2276, + "name": "FCL_nModInv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1019, + "src": "40222:11:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) view returns (uint256)" + } + }, + "id": 2278, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "40222:14:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "40207:29:5" + }, + { + "assignments": [ + 2281 + ], + "declarations": [ + { + "constant": false, + "id": 2281, + "mutability": "mutable", + "name": "X", + "nameLocation": "40254:1:5", + "nodeType": "VariableDeclaration", + "scope": 2307, + "src": "40246:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2280, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "40246:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2282, + "nodeType": "VariableDeclarationStatement", + "src": "40246:9:5" + }, + { + "expression": { + "id": 2300, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2283, + "name": "X", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2281, + "src": "40296:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 2288, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2232, + "src": "40341:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2287, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "40333:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2286, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "40333:7:5", + "typeDescriptions": {} + } + }, + "id": 2289, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "40333:16:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2290, + "name": "sInv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2275, + "src": "40351:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2291, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 991, + "src": "40357:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2285, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "40326:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 2292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "40326:33:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 2294, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2244, + "src": "40368:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2295, + "name": "sInv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2275, + "src": "40371:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2296, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 991, + "src": "40377:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2293, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "40361:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 2297, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "40361:18:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2298, + "name": "endcontract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2238, + "src": "40381:11:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2284, + "name": "ecZZ_mulmuladd_S8_hackmem", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2229, + "src": "40300:25:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) view returns (uint256)" + } + }, + "id": 2299, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "40300:93:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "40296:97:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2301, + "nodeType": "ExpressionStatement", + "src": "40296:97:5" + }, + { + "AST": { + "nativeSrc": "40413:52:5", + "nodeType": "YulBlock", + "src": "40413:52:5", + "statements": [ + { + "nativeSrc": "40427:28:5", + "nodeType": "YulAssignment", + "src": "40427:28:5", + "value": { + "arguments": [ + { + "name": "X", + "nativeSrc": "40439:1:5", + "nodeType": "YulIdentifier", + "src": "40439:1:5" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "40446:1:5", + "nodeType": "YulIdentifier", + "src": "40446:1:5" + }, + { + "name": "r", + "nativeSrc": "40449:1:5", + "nodeType": "YulIdentifier", + "src": "40449:1:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "40442:3:5", + "nodeType": "YulIdentifier", + "src": "40442:3:5" + }, + "nativeSrc": "40442:9:5", + "nodeType": "YulFunctionCall", + "src": "40442:9:5" + }, + { + "name": "n", + "nativeSrc": "40453:1:5", + "nodeType": "YulIdentifier", + "src": "40453:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "40432:6:5", + "nodeType": "YulIdentifier", + "src": "40432:6:5" + }, + "nativeSrc": "40432:23:5", + "nodeType": "YulFunctionCall", + "src": "40432:23:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "40427:1:5", + "nodeType": "YulIdentifier", + "src": "40427:1:5" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2281, + "isOffset": false, + "isSlot": false, + "src": "40427:1:5", + "valueSize": 1 + }, + { + "declaration": 2281, + "isOffset": false, + "isSlot": false, + "src": "40439:1:5", + "valueSize": 1 + }, + { + "declaration": 991, + "isOffset": false, + "isSlot": false, + "src": "40446:1:5", + "valueSize": 1 + }, + { + "declaration": 991, + "isOffset": false, + "isSlot": false, + "src": "40453:1:5", + "valueSize": 1 + }, + { + "declaration": 2244, + "isOffset": false, + "isSlot": false, + "src": "40449:1:5", + "valueSize": 1 + } + ], + "id": 2302, + "nodeType": "InlineAssembly", + "src": "40404:61:5" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2303, + "name": "X", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2281, + "src": "40481:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 2304, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "40486:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "40481:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2242, + "id": 2306, + "nodeType": "Return", + "src": "40474:13:5" + } + ] + }, + "documentation": { + "id": 2230, + "nodeType": "StructuredDocumentation", + "src": "39476:292:5", + "text": " @dev ECDSA verification using a precomputed table of multiples of P and Q appended at end of contract at address endcontract\n generation of contract bytecode for precomputations is done using sagemath code\n (see sage directory, WebAuthn_precompute.sage)" + }, + "id": 2308, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ecdsa_precomputed_hackmem", + "nameLocation": "39783:25:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2239, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2232, + "mutability": "mutable", + "name": "message", + "nameLocation": "39817:7:5", + "nodeType": "VariableDeclaration", + "scope": 2308, + "src": "39809:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2231, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "39809:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2236, + "mutability": "mutable", + "name": "rs", + "nameLocation": "39846:2:5", + "nodeType": "VariableDeclaration", + "scope": 2308, + "src": "39826:22:5", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_calldata_ptr", + "typeString": "uint256[2]" + }, + "typeName": { + "baseType": { + "id": 2233, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "39826:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2235, + "length": { + "hexValue": "32", + "id": 2234, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "39834:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "ArrayTypeName", + "src": "39826:10:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr", + "typeString": "uint256[2]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2238, + "mutability": "mutable", + "name": "endcontract", + "nameLocation": "39858:11:5", + "nodeType": "VariableDeclaration", + "scope": 2308, + "src": "39850:19:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2237, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "39850:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "39808:62:5" + }, + "returnParameters": { + "id": 2242, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2241, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2308, + "src": "39910:4:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2240, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "39910:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "39909:6:5" + }, + "scope": 2309, + "src": "39774:720:5", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 2310, + "src": "1220:39313:5", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "1186:39354:5" + }, + "id": 5 + }, + "openzeppelin-contracts/contracts/utils/Base64.sol": { + "ast": { + "absolutePath": "openzeppelin-contracts/contracts/utils/Base64.sol", + "exportedSymbols": { + "Base64": [ + 2404 + ] + }, + "id": 2405, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2311, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "100:24:6" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "Base64", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 2312, + "nodeType": "StructuredDocumentation", + "src": "126:75:6", + "text": " @dev Provides a set of functions to operate with Base64 strings." + }, + "fullyImplemented": true, + "id": 2404, + "linearizedBaseContracts": [ + 2404 + ], + "name": "Base64", + "nameLocation": "210:6:6", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "documentation": { + "id": 2313, + "nodeType": "StructuredDocumentation", + "src": "223:131:6", + "text": " @dev Base64 Encoding/Decoding Table\n See sections 4 and 5 of https://datatracker.ietf.org/doc/html/rfc4648" + }, + "id": 2316, + "mutability": "constant", + "name": "_TABLE", + "nameLocation": "384:6:6", + "nodeType": "VariableDeclaration", + "scope": 2404, + "src": "359:100:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2314, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "359:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "hexValue": "4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f", + "id": 2315, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "393:66:6", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_84d8a590de33e00cbdc16e1f28c3506f5ec15c599fab9a6a4bcd575cc2f110ce", + "typeString": "literal_string \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\"" + }, + "value": "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 2319, + "mutability": "constant", + "name": "_TABLE_URL", + "nameLocation": "490:10:6", + "nodeType": "VariableDeclaration", + "scope": 2404, + "src": "465:104:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2317, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "465:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "hexValue": "4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f", + "id": 2318, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "503:66:6", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5f7e6d3cba140c1411e96b7033571a229a3135b5c436a9698b398a19a1c64b50", + "typeString": "literal_string \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_\"" + }, + "value": "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_" + }, + "visibility": "internal" + }, + { + "body": { + "id": 2333, + "nodeType": "Block", + "src": "736:51:6", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2328, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2322, + "src": "761:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 2329, + "name": "_TABLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2316, + "src": "767:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "hexValue": "74727565", + "id": 2330, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "775:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2327, + "name": "_encode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2403, + "src": "753:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$_t_bool_$returns$_t_string_memory_ptr_$", + "typeString": "function (bytes memory,string memory,bool) pure returns (string memory)" + } + }, + "id": 2331, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "753:27:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 2326, + "id": 2332, + "nodeType": "Return", + "src": "746:34:6" + } + ] + }, + "documentation": { + "id": 2320, + "nodeType": "StructuredDocumentation", + "src": "576:82:6", + "text": " @dev Converts a `bytes` to its Bytes64 `string` representation." + }, + "id": 2334, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "encode", + "nameLocation": "672:6:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2323, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2322, + "mutability": "mutable", + "name": "data", + "nameLocation": "692:4:6", + "nodeType": "VariableDeclaration", + "scope": 2334, + "src": "679:17:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2321, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "679:5:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "678:19:6" + }, + "returnParameters": { + "id": 2326, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2325, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2334, + "src": "721:13:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2324, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "721:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "720:15:6" + }, + "scope": 2404, + "src": "663:124:6", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2348, + "nodeType": "Block", + "src": "1061:56:6", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2343, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2337, + "src": "1086:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 2344, + "name": "_TABLE_URL", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2319, + "src": "1092:10:6", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "hexValue": "66616c7365", + "id": 2345, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1104:5:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2342, + "name": "_encode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2403, + "src": "1078:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$_t_bool_$returns$_t_string_memory_ptr_$", + "typeString": "function (bytes memory,string memory,bool) pure returns (string memory)" + } + }, + "id": 2346, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1078:32:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 2341, + "id": 2347, + "nodeType": "Return", + "src": "1071:39:6" + } + ] + }, + "documentation": { + "id": 2335, + "nodeType": "StructuredDocumentation", + "src": "793:187:6", + "text": " @dev Converts a `bytes` to its Bytes64Url `string` representation.\n Output is not padded with `=` as specified in https://www.rfc-editor.org/rfc/rfc4648[rfc4648]." + }, + "id": 2349, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "encodeURL", + "nameLocation": "994:9:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2338, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2337, + "mutability": "mutable", + "name": "data", + "nameLocation": "1017:4:6", + "nodeType": "VariableDeclaration", + "scope": 2349, + "src": "1004:17:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2336, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1004:5:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "1003:19:6" + }, + "returnParameters": { + "id": 2341, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2340, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2349, + "src": "1046:13:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2339, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1046:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "1045:15:6" + }, + "scope": 2404, + "src": "985:132:6", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2402, + "nodeType": "Block", + "src": "1298:3910:6", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2364, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 2361, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2352, + "src": "1515:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 2362, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1520:6:6", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "1515:11:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 2363, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1530:1:6", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1515:16:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "documentation": " Inspired by Brecht Devos (Brechtpd) implementation - MIT licence\n https://github.com/Brechtpd/base64/blob/e78d9fd951e7b0977ddca77d92dc85183770daf4/base64.sol", + "id": 2367, + "nodeType": "IfStatement", + "src": "1511:31:6", + "trueBody": { + "expression": { + "hexValue": "", + "id": 2365, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1540:2:6", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + }, + "functionReturnParameters": 2360, + "id": 2366, + "nodeType": "Return", + "src": "1533:9:6" + } + }, + { + "assignments": [ + 2369 + ], + "declarations": [ + { + "constant": false, + "id": 2369, + "mutability": "mutable", + "name": "resultLength", + "nameLocation": "2488:12:6", + "nodeType": "VariableDeclaration", + "scope": 2402, + "src": "2480:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2368, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2480:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2391, + "initialValue": { + "condition": { + "id": 2370, + "name": "withPadding", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2356, + "src": "2503:11:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2389, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2386, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2384, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "34", + "id": 2381, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2548:1:6", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "expression": { + "id": 2382, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2352, + "src": "2552:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 2383, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2557:6:6", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2552:11:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2548:15:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "32", + "id": 2385, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2566:1:6", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "2548:19:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2387, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2547:21:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "hexValue": "33", + "id": 2388, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2571:1:6", + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "src": "2547:25:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2390, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "2503:69:6", + "trueExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2380, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "34", + "id": 2371, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2517:1:6", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2378, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2375, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 2372, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2352, + "src": "2523:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 2373, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2528:6:6", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2523:11:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "32", + "id": 2374, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2537:1:6", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "2523:15:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2376, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2522:17:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "hexValue": "33", + "id": 2377, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2542:1:6", + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "src": "2522:21:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2379, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2521:23:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2517:27:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2480:92:6" + }, + { + "assignments": [ + 2393 + ], + "declarations": [ + { + "constant": false, + "id": 2393, + "mutability": "mutable", + "name": "result", + "nameLocation": "2597:6:6", + "nodeType": "VariableDeclaration", + "scope": 2402, + "src": "2583:20:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2392, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2583:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "id": 2398, + "initialValue": { + "arguments": [ + { + "id": 2396, + "name": "resultLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2369, + "src": "2617:12:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2395, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "2606:10:6", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$", + "typeString": "function (uint256) pure returns (string memory)" + }, + "typeName": { + "id": 2394, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2610:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + } + }, + "id": 2397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2606:24:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2583:47:6" + }, + { + "AST": { + "nativeSrc": "2666:2512:6", + "nodeType": "YulBlock", + "src": "2666:2512:6", + "statements": [ + { + "nativeSrc": "2751:29:6", + "nodeType": "YulVariableDeclaration", + "src": "2751:29:6", + "value": { + "arguments": [ + { + "name": "table", + "nativeSrc": "2771:5:6", + "nodeType": "YulIdentifier", + "src": "2771:5:6" + }, + { + "kind": "number", + "nativeSrc": "2778:1:6", + "nodeType": "YulLiteral", + "src": "2778:1:6", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2767:3:6", + "nodeType": "YulIdentifier", + "src": "2767:3:6" + }, + "nativeSrc": "2767:13:6", + "nodeType": "YulFunctionCall", + "src": "2767:13:6" + }, + "variables": [ + { + "name": "tablePtr", + "nativeSrc": "2755:8:6", + "nodeType": "YulTypedName", + "src": "2755:8:6", + "type": "" + } + ] + }, + { + "nativeSrc": "2850:34:6", + "nodeType": "YulVariableDeclaration", + "src": "2850:34:6", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "2871:6:6", + "nodeType": "YulIdentifier", + "src": "2871:6:6" + }, + { + "kind": "number", + "nativeSrc": "2879:4:6", + "nodeType": "YulLiteral", + "src": "2879:4:6", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2867:3:6", + "nodeType": "YulIdentifier", + "src": "2867:3:6" + }, + "nativeSrc": "2867:17:6", + "nodeType": "YulFunctionCall", + "src": "2867:17:6" + }, + "variables": [ + { + "name": "resultPtr", + "nativeSrc": "2854:9:6", + "nodeType": "YulTypedName", + "src": "2854:9:6", + "type": "" + } + ] + }, + { + "nativeSrc": "2897:19:6", + "nodeType": "YulVariableDeclaration", + "src": "2897:19:6", + "value": { + "name": "data", + "nativeSrc": "2912:4:6", + "nodeType": "YulIdentifier", + "src": "2912:4:6" + }, + "variables": [ + { + "name": "dataPtr", + "nativeSrc": "2901:7:6", + "nodeType": "YulTypedName", + "src": "2901:7:6", + "type": "" + } + ] + }, + { + "nativeSrc": "2929:36:6", + "nodeType": "YulVariableDeclaration", + "src": "2929:36:6", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "2947:4:6", + "nodeType": "YulIdentifier", + "src": "2947:4:6" + }, + { + "arguments": [ + { + "name": "data", + "nativeSrc": "2959:4:6", + "nodeType": "YulIdentifier", + "src": "2959:4:6" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2953:5:6", + "nodeType": "YulIdentifier", + "src": "2953:5:6" + }, + "nativeSrc": "2953:11:6", + "nodeType": "YulFunctionCall", + "src": "2953:11:6" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2943:3:6", + "nodeType": "YulIdentifier", + "src": "2943:3:6" + }, + "nativeSrc": "2943:22:6", + "nodeType": "YulFunctionCall", + "src": "2943:22:6" + }, + "variables": [ + { + "name": "endPtr", + "nativeSrc": "2933:6:6", + "nodeType": "YulTypedName", + "src": "2933:6:6", + "type": "" + } + ] + }, + { + "nativeSrc": "3179:33:6", + "nodeType": "YulVariableDeclaration", + "src": "3179:33:6", + "value": { + "arguments": [ + { + "name": "endPtr", + "nativeSrc": "3199:6:6", + "nodeType": "YulIdentifier", + "src": "3199:6:6" + }, + { + "kind": "number", + "nativeSrc": "3207:4:6", + "nodeType": "YulLiteral", + "src": "3207:4:6", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3195:3:6", + "nodeType": "YulIdentifier", + "src": "3195:3:6" + }, + "nativeSrc": "3195:17:6", + "nodeType": "YulFunctionCall", + "src": "3195:17:6" + }, + "variables": [ + { + "name": "afterPtr", + "nativeSrc": "3183:8:6", + "nodeType": "YulTypedName", + "src": "3183:8:6", + "type": "" + } + ] + }, + { + "nativeSrc": "3225:33:6", + "nodeType": "YulVariableDeclaration", + "src": "3225:33:6", + "value": { + "arguments": [ + { + "name": "afterPtr", + "nativeSrc": "3249:8:6", + "nodeType": "YulIdentifier", + "src": "3249:8:6" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "3243:5:6", + "nodeType": "YulIdentifier", + "src": "3243:5:6" + }, + "nativeSrc": "3243:15:6", + "nodeType": "YulFunctionCall", + "src": "3243:15:6" + }, + "variables": [ + { + "name": "afterCache", + "nativeSrc": "3229:10:6", + "nodeType": "YulTypedName", + "src": "3229:10:6", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "afterPtr", + "nativeSrc": "3278:8:6", + "nodeType": "YulIdentifier", + "src": "3278:8:6" + }, + { + "kind": "number", + "nativeSrc": "3288:4:6", + "nodeType": "YulLiteral", + "src": "3288:4:6", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3271:6:6", + "nodeType": "YulIdentifier", + "src": "3271:6:6" + }, + "nativeSrc": "3271:22:6", + "nodeType": "YulFunctionCall", + "src": "3271:22:6" + }, + "nativeSrc": "3271:22:6", + "nodeType": "YulExpressionStatement", + "src": "3271:22:6" + }, + { + "body": { + "nativeSrc": "3418:1201:6", + "nodeType": "YulBlock", + "src": "3418:1201:6", + "statements": [ + { + "nativeSrc": "3471:26:6", + "nodeType": "YulAssignment", + "src": "3471:26:6", + "value": { + "arguments": [ + { + "name": "dataPtr", + "nativeSrc": "3486:7:6", + "nodeType": "YulIdentifier", + "src": "3486:7:6" + }, + { + "kind": "number", + "nativeSrc": "3495:1:6", + "nodeType": "YulLiteral", + "src": "3495:1:6", + "type": "", + "value": "3" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3482:3:6", + "nodeType": "YulIdentifier", + "src": "3482:3:6" + }, + "nativeSrc": "3482:15:6", + "nodeType": "YulFunctionCall", + "src": "3482:15:6" + }, + "variableNames": [ + { + "name": "dataPtr", + "nativeSrc": "3471:7:6", + "nodeType": "YulIdentifier", + "src": "3471:7:6" + } + ] + }, + { + "nativeSrc": "3514:27:6", + "nodeType": "YulVariableDeclaration", + "src": "3514:27:6", + "value": { + "arguments": [ + { + "name": "dataPtr", + "nativeSrc": "3533:7:6", + "nodeType": "YulIdentifier", + "src": "3533:7:6" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "3527:5:6", + "nodeType": "YulIdentifier", + "src": "3527:5:6" + }, + "nativeSrc": "3527:14:6", + "nodeType": "YulFunctionCall", + "src": "3527:14:6" + }, + "variables": [ + { + "name": "input", + "nativeSrc": "3518:5:6", + "nodeType": "YulTypedName", + "src": "3518:5:6", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "resultPtr", + "nativeSrc": "4069:9:6", + "nodeType": "YulIdentifier", + "src": "4069:9:6" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "tablePtr", + "nativeSrc": "4090:8:6", + "nodeType": "YulIdentifier", + "src": "4090:8:6" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4108:2:6", + "nodeType": "YulLiteral", + "src": "4108:2:6", + "type": "", + "value": "18" + }, + { + "name": "input", + "nativeSrc": "4112:5:6", + "nodeType": "YulIdentifier", + "src": "4112:5:6" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "4104:3:6", + "nodeType": "YulIdentifier", + "src": "4104:3:6" + }, + "nativeSrc": "4104:14:6", + "nodeType": "YulFunctionCall", + "src": "4104:14:6" + }, + { + "kind": "number", + "nativeSrc": "4120:4:6", + "nodeType": "YulLiteral", + "src": "4120:4:6", + "type": "", + "value": "0x3F" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "4100:3:6", + "nodeType": "YulIdentifier", + "src": "4100:3:6" + }, + "nativeSrc": "4100:25:6", + "nodeType": "YulFunctionCall", + "src": "4100:25:6" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4086:3:6", + "nodeType": "YulIdentifier", + "src": "4086:3:6" + }, + "nativeSrc": "4086:40:6", + "nodeType": "YulFunctionCall", + "src": "4086:40:6" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "4080:5:6", + "nodeType": "YulIdentifier", + "src": "4080:5:6" + }, + "nativeSrc": "4080:47:6", + "nodeType": "YulFunctionCall", + "src": "4080:47:6" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "4061:7:6", + "nodeType": "YulIdentifier", + "src": "4061:7:6" + }, + "nativeSrc": "4061:67:6", + "nodeType": "YulFunctionCall", + "src": "4061:67:6" + }, + "nativeSrc": "4061:67:6", + "nodeType": "YulExpressionStatement", + "src": "4061:67:6" + }, + { + "nativeSrc": "4145:30:6", + "nodeType": "YulAssignment", + "src": "4145:30:6", + "value": { + "arguments": [ + { + "name": "resultPtr", + "nativeSrc": "4162:9:6", + "nodeType": "YulIdentifier", + "src": "4162:9:6" + }, + { + "kind": "number", + "nativeSrc": "4173:1:6", + "nodeType": "YulLiteral", + "src": "4173:1:6", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4158:3:6", + "nodeType": "YulIdentifier", + "src": "4158:3:6" + }, + "nativeSrc": "4158:17:6", + "nodeType": "YulFunctionCall", + "src": "4158:17:6" + }, + "variableNames": [ + { + "name": "resultPtr", + "nativeSrc": "4145:9:6", + "nodeType": "YulIdentifier", + "src": "4145:9:6" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "resultPtr", + "nativeSrc": "4212:9:6", + "nodeType": "YulIdentifier", + "src": "4212:9:6" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "tablePtr", + "nativeSrc": "4233:8:6", + "nodeType": "YulIdentifier", + "src": "4233:8:6" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4251:2:6", + "nodeType": "YulLiteral", + "src": "4251:2:6", + "type": "", + "value": "12" + }, + { + "name": "input", + "nativeSrc": "4255:5:6", + "nodeType": "YulIdentifier", + "src": "4255:5:6" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "4247:3:6", + "nodeType": "YulIdentifier", + "src": "4247:3:6" + }, + "nativeSrc": "4247:14:6", + "nodeType": "YulFunctionCall", + "src": "4247:14:6" + }, + { + "kind": "number", + "nativeSrc": "4263:4:6", + "nodeType": "YulLiteral", + "src": "4263:4:6", + "type": "", + "value": "0x3F" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "4243:3:6", + "nodeType": "YulIdentifier", + "src": "4243:3:6" + }, + "nativeSrc": "4243:25:6", + "nodeType": "YulFunctionCall", + "src": "4243:25:6" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4229:3:6", + "nodeType": "YulIdentifier", + "src": "4229:3:6" + }, + "nativeSrc": "4229:40:6", + "nodeType": "YulFunctionCall", + "src": "4229:40:6" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "4223:5:6", + "nodeType": "YulIdentifier", + "src": "4223:5:6" + }, + "nativeSrc": "4223:47:6", + "nodeType": "YulFunctionCall", + "src": "4223:47:6" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "4204:7:6", + "nodeType": "YulIdentifier", + "src": "4204:7:6" + }, + "nativeSrc": "4204:67:6", + "nodeType": "YulFunctionCall", + "src": "4204:67:6" + }, + "nativeSrc": "4204:67:6", + "nodeType": "YulExpressionStatement", + "src": "4204:67:6" + }, + { + "nativeSrc": "4288:30:6", + "nodeType": "YulAssignment", + "src": "4288:30:6", + "value": { + "arguments": [ + { + "name": "resultPtr", + "nativeSrc": "4305:9:6", + "nodeType": "YulIdentifier", + "src": "4305:9:6" + }, + { + "kind": "number", + "nativeSrc": "4316:1:6", + "nodeType": "YulLiteral", + "src": "4316:1:6", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4301:3:6", + "nodeType": "YulIdentifier", + "src": "4301:3:6" + }, + "nativeSrc": "4301:17:6", + "nodeType": "YulFunctionCall", + "src": "4301:17:6" + }, + "variableNames": [ + { + "name": "resultPtr", + "nativeSrc": "4288:9:6", + "nodeType": "YulIdentifier", + "src": "4288:9:6" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "resultPtr", + "nativeSrc": "4355:9:6", + "nodeType": "YulIdentifier", + "src": "4355:9:6" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "tablePtr", + "nativeSrc": "4376:8:6", + "nodeType": "YulIdentifier", + "src": "4376:8:6" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4394:1:6", + "nodeType": "YulLiteral", + "src": "4394:1:6", + "type": "", + "value": "6" + }, + { + "name": "input", + "nativeSrc": "4397:5:6", + "nodeType": "YulIdentifier", + "src": "4397:5:6" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "4390:3:6", + "nodeType": "YulIdentifier", + "src": "4390:3:6" + }, + "nativeSrc": "4390:13:6", + "nodeType": "YulFunctionCall", + "src": "4390:13:6" + }, + { + "kind": "number", + "nativeSrc": "4405:4:6", + "nodeType": "YulLiteral", + "src": "4405:4:6", + "type": "", + "value": "0x3F" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "4386:3:6", + "nodeType": "YulIdentifier", + "src": "4386:3:6" + }, + "nativeSrc": "4386:24:6", + "nodeType": "YulFunctionCall", + "src": "4386:24:6" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4372:3:6", + "nodeType": "YulIdentifier", + "src": "4372:3:6" + }, + "nativeSrc": "4372:39:6", + "nodeType": "YulFunctionCall", + "src": "4372:39:6" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "4366:5:6", + "nodeType": "YulIdentifier", + "src": "4366:5:6" + }, + "nativeSrc": "4366:46:6", + "nodeType": "YulFunctionCall", + "src": "4366:46:6" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "4347:7:6", + "nodeType": "YulIdentifier", + "src": "4347:7:6" + }, + "nativeSrc": "4347:66:6", + "nodeType": "YulFunctionCall", + "src": "4347:66:6" + }, + "nativeSrc": "4347:66:6", + "nodeType": "YulExpressionStatement", + "src": "4347:66:6" + }, + { + "nativeSrc": "4430:30:6", + "nodeType": "YulAssignment", + "src": "4430:30:6", + "value": { + "arguments": [ + { + "name": "resultPtr", + "nativeSrc": "4447:9:6", + "nodeType": "YulIdentifier", + "src": "4447:9:6" + }, + { + "kind": "number", + "nativeSrc": "4458:1:6", + "nodeType": "YulLiteral", + "src": "4458:1:6", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4443:3:6", + "nodeType": "YulIdentifier", + "src": "4443:3:6" + }, + "nativeSrc": "4443:17:6", + "nodeType": "YulFunctionCall", + "src": "4443:17:6" + }, + "variableNames": [ + { + "name": "resultPtr", + "nativeSrc": "4430:9:6", + "nodeType": "YulIdentifier", + "src": "4430:9:6" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "resultPtr", + "nativeSrc": "4497:9:6", + "nodeType": "YulIdentifier", + "src": "4497:9:6" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "tablePtr", + "nativeSrc": "4518:8:6", + "nodeType": "YulIdentifier", + "src": "4518:8:6" + }, + { + "arguments": [ + { + "name": "input", + "nativeSrc": "4532:5:6", + "nodeType": "YulIdentifier", + "src": "4532:5:6" + }, + { + "kind": "number", + "nativeSrc": "4539:4:6", + "nodeType": "YulLiteral", + "src": "4539:4:6", + "type": "", + "value": "0x3F" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "4528:3:6", + "nodeType": "YulIdentifier", + "src": "4528:3:6" + }, + "nativeSrc": "4528:16:6", + "nodeType": "YulFunctionCall", + "src": "4528:16:6" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4514:3:6", + "nodeType": "YulIdentifier", + "src": "4514:3:6" + }, + "nativeSrc": "4514:31:6", + "nodeType": "YulFunctionCall", + "src": "4514:31:6" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "4508:5:6", + "nodeType": "YulIdentifier", + "src": "4508:5:6" + }, + "nativeSrc": "4508:38:6", + "nodeType": "YulFunctionCall", + "src": "4508:38:6" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "4489:7:6", + "nodeType": "YulIdentifier", + "src": "4489:7:6" + }, + "nativeSrc": "4489:58:6", + "nodeType": "YulFunctionCall", + "src": "4489:58:6" + }, + "nativeSrc": "4489:58:6", + "nodeType": "YulExpressionStatement", + "src": "4489:58:6" + }, + { + "nativeSrc": "4564:30:6", + "nodeType": "YulAssignment", + "src": "4564:30:6", + "value": { + "arguments": [ + { + "name": "resultPtr", + "nativeSrc": "4581:9:6", + "nodeType": "YulIdentifier", + "src": "4581:9:6" + }, + { + "kind": "number", + "nativeSrc": "4592:1:6", + "nodeType": "YulLiteral", + "src": "4592:1:6", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4577:3:6", + "nodeType": "YulIdentifier", + "src": "4577:3:6" + }, + "nativeSrc": "4577:17:6", + "nodeType": "YulFunctionCall", + "src": "4577:17:6" + }, + "variableNames": [ + { + "name": "resultPtr", + "nativeSrc": "4564:9:6", + "nodeType": "YulIdentifier", + "src": "4564:9:6" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "dataPtr", + "nativeSrc": "3384:7:6", + "nodeType": "YulIdentifier", + "src": "3384:7:6" + }, + { + "name": "endPtr", + "nativeSrc": "3393:6:6", + "nodeType": "YulIdentifier", + "src": "3393:6:6" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "3381:2:6", + "nodeType": "YulIdentifier", + "src": "3381:2:6" + }, + "nativeSrc": "3381:19:6", + "nodeType": "YulFunctionCall", + "src": "3381:19:6" + }, + "nativeSrc": "3360:1259:6", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "3401:16:6", + "nodeType": "YulBlock", + "src": "3401:16:6", + "statements": [] + }, + "pre": { + "nativeSrc": "3364:16:6", + "nodeType": "YulBlock", + "src": "3364:16:6", + "statements": [] + }, + "src": "3360:1259:6" + }, + { + "expression": { + "arguments": [ + { + "name": "afterPtr", + "nativeSrc": "4687:8:6", + "nodeType": "YulIdentifier", + "src": "4687:8:6" + }, + { + "name": "afterCache", + "nativeSrc": "4697:10:6", + "nodeType": "YulIdentifier", + "src": "4697:10:6" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4680:6:6", + "nodeType": "YulIdentifier", + "src": "4680:6:6" + }, + "nativeSrc": "4680:28:6", + "nodeType": "YulFunctionCall", + "src": "4680:28:6" + }, + "nativeSrc": "4680:28:6", + "nodeType": "YulExpressionStatement", + "src": "4680:28:6" + }, + { + "body": { + "nativeSrc": "4737:431:6", + "nodeType": "YulBlock", + "src": "4737:431:6", + "statements": [ + { + "cases": [ + { + "body": { + "nativeSrc": "4933:125:6", + "nodeType": "YulBlock", + "src": "4933:125:6", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "resultPtr", + "nativeSrc": "4967:9:6", + "nodeType": "YulIdentifier", + "src": "4967:9:6" + }, + { + "kind": "number", + "nativeSrc": "4978:1:6", + "nodeType": "YulLiteral", + "src": "4978:1:6", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "4963:3:6", + "nodeType": "YulIdentifier", + "src": "4963:3:6" + }, + "nativeSrc": "4963:17:6", + "nodeType": "YulFunctionCall", + "src": "4963:17:6" + }, + { + "kind": "number", + "nativeSrc": "4982:4:6", + "nodeType": "YulLiteral", + "src": "4982:4:6", + "type": "", + "value": "0x3d" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "4955:7:6", + "nodeType": "YulIdentifier", + "src": "4955:7:6" + }, + "nativeSrc": "4955:32:6", + "nodeType": "YulFunctionCall", + "src": "4955:32:6" + }, + "nativeSrc": "4955:32:6", + "nodeType": "YulExpressionStatement", + "src": "4955:32:6" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "resultPtr", + "nativeSrc": "5020:9:6", + "nodeType": "YulIdentifier", + "src": "5020:9:6" + }, + { + "kind": "number", + "nativeSrc": "5031:1:6", + "nodeType": "YulLiteral", + "src": "5031:1:6", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "5016:3:6", + "nodeType": "YulIdentifier", + "src": "5016:3:6" + }, + "nativeSrc": "5016:17:6", + "nodeType": "YulFunctionCall", + "src": "5016:17:6" + }, + { + "kind": "number", + "nativeSrc": "5035:4:6", + "nodeType": "YulLiteral", + "src": "5035:4:6", + "type": "", + "value": "0x3d" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "5008:7:6", + "nodeType": "YulIdentifier", + "src": "5008:7:6" + }, + "nativeSrc": "5008:32:6", + "nodeType": "YulFunctionCall", + "src": "5008:32:6" + }, + "nativeSrc": "5008:32:6", + "nodeType": "YulExpressionStatement", + "src": "5008:32:6" + } + ] + }, + "nativeSrc": "4926:132:6", + "nodeType": "YulCase", + "src": "4926:132:6", + "value": { + "kind": "number", + "nativeSrc": "4931:1:6", + "nodeType": "YulLiteral", + "src": "4931:1:6", + "type": "", + "value": "1" + } + }, + { + "body": { + "nativeSrc": "5082:72:6", + "nodeType": "YulBlock", + "src": "5082:72:6", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "resultPtr", + "nativeSrc": "5116:9:6", + "nodeType": "YulIdentifier", + "src": "5116:9:6" + }, + { + "kind": "number", + "nativeSrc": "5127:1:6", + "nodeType": "YulLiteral", + "src": "5127:1:6", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "5112:3:6", + "nodeType": "YulIdentifier", + "src": "5112:3:6" + }, + "nativeSrc": "5112:17:6", + "nodeType": "YulFunctionCall", + "src": "5112:17:6" + }, + { + "kind": "number", + "nativeSrc": "5131:4:6", + "nodeType": "YulLiteral", + "src": "5131:4:6", + "type": "", + "value": "0x3d" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "5104:7:6", + "nodeType": "YulIdentifier", + "src": "5104:7:6" + }, + "nativeSrc": "5104:32:6", + "nodeType": "YulFunctionCall", + "src": "5104:32:6" + }, + "nativeSrc": "5104:32:6", + "nodeType": "YulExpressionStatement", + "src": "5104:32:6" + } + ] + }, + "nativeSrc": "5075:79:6", + "nodeType": "YulCase", + "src": "5075:79:6", + "value": { + "kind": "number", + "nativeSrc": "5080:1:6", + "nodeType": "YulLiteral", + "src": "5080:1:6", + "type": "", + "value": "2" + } + } + ], + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "data", + "nativeSrc": "4900:4:6", + "nodeType": "YulIdentifier", + "src": "4900:4:6" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "4894:5:6", + "nodeType": "YulIdentifier", + "src": "4894:5:6" + }, + "nativeSrc": "4894:11:6", + "nodeType": "YulFunctionCall", + "src": "4894:11:6" + }, + { + "kind": "number", + "nativeSrc": "4907:1:6", + "nodeType": "YulLiteral", + "src": "4907:1:6", + "type": "", + "value": "3" + } + ], + "functionName": { + "name": "mod", + "nativeSrc": "4890:3:6", + "nodeType": "YulIdentifier", + "src": "4890:3:6" + }, + "nativeSrc": "4890:19:6", + "nodeType": "YulFunctionCall", + "src": "4890:19:6" + }, + "nativeSrc": "4883:271:6", + "nodeType": "YulSwitch", + "src": "4883:271:6" + } + ] + }, + "condition": { + "name": "withPadding", + "nativeSrc": "4725:11:6", + "nodeType": "YulIdentifier", + "src": "4725:11:6" + }, + "nativeSrc": "4722:446:6", + "nodeType": "YulIf", + "src": "4722:446:6" + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2352, + "isOffset": false, + "isSlot": false, + "src": "2912:4:6", + "valueSize": 1 + }, + { + "declaration": 2352, + "isOffset": false, + "isSlot": false, + "src": "2947:4:6", + "valueSize": 1 + }, + { + "declaration": 2352, + "isOffset": false, + "isSlot": false, + "src": "2959:4:6", + "valueSize": 1 + }, + { + "declaration": 2352, + "isOffset": false, + "isSlot": false, + "src": "4900:4:6", + "valueSize": 1 + }, + { + "declaration": 2393, + "isOffset": false, + "isSlot": false, + "src": "2871:6:6", + "valueSize": 1 + }, + { + "declaration": 2354, + "isOffset": false, + "isSlot": false, + "src": "2771:5:6", + "valueSize": 1 + }, + { + "declaration": 2356, + "isOffset": false, + "isSlot": false, + "src": "4725:11:6", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 2399, + "nodeType": "InlineAssembly", + "src": "2641:2537:6" + }, + { + "expression": { + "id": 2400, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2393, + "src": "5195:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 2360, + "id": 2401, + "nodeType": "Return", + "src": "5188:13:6" + } + ] + }, + "documentation": { + "id": 2350, + "nodeType": "StructuredDocumentation", + "src": "1123:58:6", + "text": " @dev Internal table-agnostic conversion" + }, + "id": 2403, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_encode", + "nameLocation": "1195:7:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2357, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2352, + "mutability": "mutable", + "name": "data", + "nameLocation": "1216:4:6", + "nodeType": "VariableDeclaration", + "scope": 2403, + "src": "1203:17:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2351, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1203:5:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2354, + "mutability": "mutable", + "name": "table", + "nameLocation": "1236:5:6", + "nodeType": "VariableDeclaration", + "scope": 2403, + "src": "1222:19:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2353, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1222:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2356, + "mutability": "mutable", + "name": "withPadding", + "nameLocation": "1248:11:6", + "nodeType": "VariableDeclaration", + "scope": 2403, + "src": "1243:16:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2355, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1243:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1202:58:6" + }, + "returnParameters": { + "id": 2360, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2359, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2403, + "src": "1283:13:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2358, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1283:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "1282:15:6" + }, + "scope": 2404, + "src": "1186:4022:6", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + } + ], + "scope": 2405, + "src": "202:5008:6", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "100:5111:6" + }, + "id": 6 + }, + "solady/accounts/Receiver.sol": { + "ast": { + "absolutePath": "solady/accounts/Receiver.sol", + "exportedSymbols": { + "Receiver": [ + 2459 + ] + }, + "id": 2460, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2406, + "literals": [ + "solidity", + "^", + "0.8", + ".4" + ], + "nodeType": "PragmaDirective", + "src": "32:23:7" + }, + { + "abstract": true, + "baseContracts": [], + "canonicalName": "Receiver", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 2407, + "nodeType": "StructuredDocumentation", + "src": "57:374:7", + "text": "@notice Receiver mixin for ETH and safe-transferred ERC721 and ERC1155 tokens.\n @author Solady (https://github.com/Vectorized/solady/blob/main/src/accounts/Receiver.sol)\n @dev Note:\n - Handles all ERC721 and ERC1155 token safety callbacks.\n - Collapses function table gas overhead and code size.\n - Utilizes fallback so unknown calldata will pass on." + }, + "fullyImplemented": true, + "id": 2459, + "linearizedBaseContracts": [ + 2459 + ], + "name": "Receiver", + "nameLocation": "449:8:7", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 2408, + "nodeType": "StructuredDocumentation", + "src": "747:49:7", + "text": "@dev The function selector is not recognized." + }, + "errorSelector": "3c10b94e", + "id": 2410, + "name": "FnSelectorNotRecognized", + "nameLocation": "807:23:7", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 2409, + "nodeType": "ParameterList", + "parameters": [], + "src": "830:2:7" + }, + "src": "801:32:7" + }, + { + "body": { + "id": 2414, + "nodeType": "Block", + "src": "1189:2:7", + "statements": [] + }, + "documentation": { + "id": 2411, + "nodeType": "StructuredDocumentation", + "src": "1122:27:7", + "text": "@dev For receiving ETH." + }, + "id": 2415, + "implemented": true, + "kind": "receive", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2412, + "nodeType": "ParameterList", + "parameters": [], + "src": "1161:2:7" + }, + "returnParameters": { + "id": 2413, + "nodeType": "ParameterList", + "parameters": [], + "src": "1189:0:7" + }, + "scope": 2459, + "src": "1154:37:7", + "stateMutability": "payable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 2422, + "nodeType": "Block", + "src": "1319:179:7", + "statements": [ + { + "AST": { + "nativeSrc": "1381:111:7", + "nodeType": "YulBlock", + "src": "1381:111:7", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1402:4:7", + "nodeType": "YulLiteral", + "src": "1402:4:7", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "1408:10:7", + "nodeType": "YulLiteral", + "src": "1408:10:7", + "type": "", + "value": "0x3c10b94e" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1395:6:7", + "nodeType": "YulIdentifier", + "src": "1395:6:7" + }, + "nativeSrc": "1395:24:7", + "nodeType": "YulFunctionCall", + "src": "1395:24:7" + }, + "nativeSrc": "1395:24:7", + "nodeType": "YulExpressionStatement", + "src": "1395:24:7" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1471:4:7", + "nodeType": "YulLiteral", + "src": "1471:4:7", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "1477:4:7", + "nodeType": "YulLiteral", + "src": "1477:4:7", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1464:6:7", + "nodeType": "YulIdentifier", + "src": "1464:6:7" + }, + "nativeSrc": "1464:18:7", + "nodeType": "YulFunctionCall", + "src": "1464:18:7" + }, + "nativeSrc": "1464:18:7", + "nodeType": "YulExpressionStatement", + "src": "1464:18:7" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [], + "id": 2421, + "nodeType": "InlineAssembly", + "src": "1372:120:7" + } + ] + }, + "documentation": { + "id": 2416, + "nodeType": "StructuredDocumentation", + "src": "1197:64:7", + "text": "@dev Fallback function with the `receiverFallback` modifier." + }, + "id": 2423, + "implemented": true, + "kind": "fallback", + "modifiers": [ + { + "id": 2419, + "kind": "modifierInvocation", + "modifierName": { + "id": 2418, + "name": "receiverFallback", + "nameLocations": [ + "1302:16:7" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2439, + "src": "1302:16:7" + }, + "nodeType": "ModifierInvocation", + "src": "1302:16:7" + } + ], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2417, + "nodeType": "ParameterList", + "parameters": [], + "src": "1274:2:7" + }, + "returnParameters": { + "id": 2420, + "nodeType": "ParameterList", + "parameters": [], + "src": "1319:0:7" + }, + "scope": 2459, + "src": "1266:232:7", + "stateMutability": "payable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 2438, + "nodeType": "Block", + "src": "1615:870:7", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2426, + "name": "_beforeReceiverFallbackBody", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2453, + "src": "1625:27:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 2427, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1625:29:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2428, + "nodeType": "ExpressionStatement", + "src": "1625:29:7" + }, + { + "condition": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2429, + "name": "_useReceiverFallbackBody", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2448, + "src": "1668:24:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 2430, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1668:26:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2433, + "nodeType": "IfStatement", + "src": "1664:766:7", + "trueBody": { + "id": 2432, + "nodeType": "Block", + "src": "1696:734:7", + "statements": [ + { + "AST": { + "nativeSrc": "1766:654:7", + "nodeType": "YulBlock", + "src": "1766:654:7", + "statements": [ + { + "nativeSrc": "1784:34:7", + "nodeType": "YulVariableDeclaration", + "src": "1784:34:7", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1797:3:7", + "nodeType": "YulLiteral", + "src": "1797:3:7", + "type": "", + "value": "224" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1815:1:7", + "nodeType": "YulLiteral", + "src": "1815:1:7", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "1802:12:7", + "nodeType": "YulIdentifier", + "src": "1802:12:7" + }, + "nativeSrc": "1802:15:7", + "nodeType": "YulFunctionCall", + "src": "1802:15:7" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "1793:3:7", + "nodeType": "YulIdentifier", + "src": "1793:3:7" + }, + "nativeSrc": "1793:25:7", + "nodeType": "YulFunctionCall", + "src": "1793:25:7" + }, + "variables": [ + { + "name": "s", + "nativeSrc": "1788:1:7", + "nodeType": "YulTypedName", + "src": "1788:1:7", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "2175:231:7", + "nodeType": "YulBlock", + "src": "2175:231:7", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2300:4:7", + "nodeType": "YulLiteral", + "src": "2300:4:7", + "type": "", + "value": "0x20" + }, + { + "name": "s", + "nativeSrc": "2306:1:7", + "nodeType": "YulIdentifier", + "src": "2306:1:7" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2293:6:7", + "nodeType": "YulIdentifier", + "src": "2293:6:7" + }, + "nativeSrc": "2293:15:7", + "nodeType": "YulFunctionCall", + "src": "2293:15:7" + }, + "nativeSrc": "2293:15:7", + "nodeType": "YulExpressionStatement", + "src": "2293:15:7" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2356:4:7", + "nodeType": "YulLiteral", + "src": "2356:4:7", + "type": "", + "value": "0x3c" + }, + { + "kind": "number", + "nativeSrc": "2362:4:7", + "nodeType": "YulLiteral", + "src": "2362:4:7", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "return", + "nativeSrc": "2349:6:7", + "nodeType": "YulIdentifier", + "src": "2349:6:7" + }, + "nativeSrc": "2349:18:7", + "nodeType": "YulFunctionCall", + "src": "2349:18:7" + }, + "nativeSrc": "2349:18:7", + "nodeType": "YulExpressionStatement", + "src": "2349:18:7" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "s", + "nativeSrc": "2117:1:7", + "nodeType": "YulIdentifier", + "src": "2117:1:7" + }, + { + "kind": "number", + "nativeSrc": "2120:10:7", + "nodeType": "YulLiteral", + "src": "2120:10:7", + "type": "", + "value": "0x150b7a02" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "2114:2:7", + "nodeType": "YulIdentifier", + "src": "2114:2:7" + }, + "nativeSrc": "2114:17:7", + "nodeType": "YulFunctionCall", + "src": "2114:17:7" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "s", + "nativeSrc": "2139:1:7", + "nodeType": "YulIdentifier", + "src": "2139:1:7" + }, + { + "kind": "number", + "nativeSrc": "2142:10:7", + "nodeType": "YulLiteral", + "src": "2142:10:7", + "type": "", + "value": "0xf23a6e61" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "2136:2:7", + "nodeType": "YulIdentifier", + "src": "2136:2:7" + }, + "nativeSrc": "2136:17:7", + "nodeType": "YulFunctionCall", + "src": "2136:17:7" + }, + { + "arguments": [ + { + "name": "s", + "nativeSrc": "2158:1:7", + "nodeType": "YulIdentifier", + "src": "2158:1:7" + }, + { + "kind": "number", + "nativeSrc": "2161:10:7", + "nodeType": "YulLiteral", + "src": "2161:10:7", + "type": "", + "value": "0xbc197c81" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "2155:2:7", + "nodeType": "YulIdentifier", + "src": "2155:2:7" + }, + "nativeSrc": "2155:17:7", + "nodeType": "YulFunctionCall", + "src": "2155:17:7" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "2133:2:7", + "nodeType": "YulIdentifier", + "src": "2133:2:7" + }, + "nativeSrc": "2133:40:7", + "nodeType": "YulFunctionCall", + "src": "2133:40:7" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "2111:2:7", + "nodeType": "YulIdentifier", + "src": "2111:2:7" + }, + "nativeSrc": "2111:63:7", + "nodeType": "YulFunctionCall", + "src": "2111:63:7" + }, + "nativeSrc": "2108:298:7", + "nodeType": "YulIf", + "src": "2108:298:7" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [], + "id": 2431, + "nodeType": "InlineAssembly", + "src": "1757:663:7" + } + ] + } + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2434, + "name": "_afterReceiverFallbackBody", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2458, + "src": "2439:26:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 2435, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2439:28:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2436, + "nodeType": "ExpressionStatement", + "src": "2439:28:7" + }, + { + "id": 2437, + "nodeType": "PlaceholderStatement", + "src": "2477:1:7" + } + ] + }, + "documentation": { + "id": 2424, + "nodeType": "StructuredDocumentation", + "src": "1504:70:7", + "text": "@dev Modifier for the fallback function to handle token callbacks." + }, + "id": 2439, + "name": "receiverFallback", + "nameLocation": "1588:16:7", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 2425, + "nodeType": "ParameterList", + "parameters": [], + "src": "1604:2:7" + }, + "src": "1579:906:7", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2447, + "nodeType": "Block", + "src": "2645:28:7", + "statements": [ + { + "expression": { + "hexValue": "74727565", + "id": 2445, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2662:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 2444, + "id": 2446, + "nodeType": "Return", + "src": "2655:11:7" + } + ] + }, + "documentation": { + "id": 2440, + "nodeType": "StructuredDocumentation", + "src": "2491:76:7", + "text": "@dev Whether we want to use the body of the `receiverFallback` modifier." + }, + "id": 2448, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_useReceiverFallbackBody", + "nameLocation": "2581:24:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2441, + "nodeType": "ParameterList", + "parameters": [], + "src": "2605:2:7" + }, + "returnParameters": { + "id": 2444, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2443, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2448, + "src": "2639:4:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2442, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2639:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2638:6:7" + }, + "scope": 2459, + "src": "2572:101:7", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2452, + "nodeType": "Block", + "src": "2807:2:7", + "statements": [] + }, + "documentation": { + "id": 2449, + "nodeType": "StructuredDocumentation", + "src": "2679:67:7", + "text": "@dev Called before the body of the `receiverFallback` modifier." + }, + "id": 2453, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_beforeReceiverFallbackBody", + "nameLocation": "2760:27:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2450, + "nodeType": "ParameterList", + "parameters": [], + "src": "2787:2:7" + }, + "returnParameters": { + "id": 2451, + "nodeType": "ParameterList", + "parameters": [], + "src": "2807:0:7" + }, + "scope": 2459, + "src": "2751:58:7", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2457, + "nodeType": "Block", + "src": "2941:2:7", + "statements": [] + }, + "documentation": { + "id": 2454, + "nodeType": "StructuredDocumentation", + "src": "2815:66:7", + "text": "@dev Called after the body of the `receiverFallback` modifier." + }, + "id": 2458, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_afterReceiverFallbackBody", + "nameLocation": "2895:26:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2455, + "nodeType": "ParameterList", + "parameters": [], + "src": "2921:2:7" + }, + "returnParameters": { + "id": 2456, + "nodeType": "ParameterList", + "parameters": [], + "src": "2941:0:7" + }, + "scope": 2459, + "src": "2886:57:7", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 2460, + "src": "431:2514:7", + "usedErrors": [ + 2410 + ], + "usedEvents": [] + } + ], + "src": "32:2914:7" + }, + "id": 7 + }, + "solady/utils/CallContextChecker.sol": { + "ast": { + "absolutePath": "solady/utils/CallContextChecker.sol", + "exportedSymbols": { + "CallContextChecker": [ + 2583 + ] + }, + "id": 2584, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2461, + "literals": [ + "solidity", + "^", + "0.8", + ".4" + ], + "nodeType": "PragmaDirective", + "src": "32:23:8" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "CallContextChecker", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 2462, + "nodeType": "StructuredDocumentation", + "src": "57:141:8", + "text": "@notice Call context checker mixin.\n @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/CallContextChecker.sol)" + }, + "fullyImplemented": true, + "id": 2583, + "linearizedBaseContracts": [ + 2583 + ], + "name": "CallContextChecker", + "nameLocation": "207:18:8", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 2463, + "nodeType": "StructuredDocumentation", + "src": "515:55:8", + "text": "@dev The call is from an unauthorized call context." + }, + "errorSelector": "9f03a026", + "id": 2465, + "name": "UnauthorizedCallContext", + "nameLocation": "581:23:8", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 2464, + "nodeType": "ParameterList", + "parameters": [], + "src": "604:2:8" + }, + "src": "575:32:8" + }, + { + "constant": false, + "documentation": { + "id": 2466, + "nodeType": "StructuredDocumentation", + "src": "896:319:8", + "text": "@dev For checking if the context is a delegate call.\n Note: To enable use cases with an immutable default implementation in the bytecode,\n (see: ERC6551Proxy), we don't require that the proxy address must match the\n value stored in the implementation slot, which may not be initialized." + }, + "id": 2478, + "mutability": "immutable", + "name": "__self", + "nameLocation": "1246:6:8", + "nodeType": "VariableDeclaration", + "scope": 2583, + "src": "1220:66:8", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2467, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1220:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 2474, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "1279:4:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CallContextChecker_$2583", + "typeString": "contract CallContextChecker" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_CallContextChecker_$2583", + "typeString": "contract CallContextChecker" + } + ], + "id": 2473, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1271:7:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2472, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1271:7:8", + "typeDescriptions": {} + } + }, + "id": 2475, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1271:13:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2471, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1263:7:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 2470, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "1263:7:8", + "typeDescriptions": {} + } + }, + "id": 2476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1263:22:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 2469, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1255:7:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2468, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1255:7:8", + "typeDescriptions": {} + } + }, + "id": 2477, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1255:31:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "private" + }, + { + "body": { + "id": 2485, + "nodeType": "Block", + "src": "1917:385:8", + "statements": [ + { + "AST": { + "nativeSrc": "1979:317:8", + "nodeType": "YulBlock", + "src": "1979:317:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "address", + "nativeSrc": "2005:7:8", + "nodeType": "YulIdentifier", + "src": "2005:7:8" + }, + "nativeSrc": "2005:9:8", + "nodeType": "YulFunctionCall", + "src": "2005:9:8" + }, + { + "kind": "number", + "nativeSrc": "2016:4:8", + "nodeType": "YulLiteral", + "src": "2016:4:8", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "2022:4:8", + "nodeType": "YulLiteral", + "src": "2022:4:8", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "2028:4:8", + "nodeType": "YulLiteral", + "src": "2028:4:8", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "extcodecopy", + "nativeSrc": "1993:11:8", + "nodeType": "YulIdentifier", + "src": "1993:11:8" + }, + "nativeSrc": "1993:40:8", + "nodeType": "YulFunctionCall", + "src": "1993:40:8" + }, + "nativeSrc": "1993:40:8", + "nodeType": "YulExpressionStatement", + "src": "1993:40:8" + }, + { + "nativeSrc": "2243:43:8", + "nodeType": "YulAssignment", + "src": "2243:43:8", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2256:6:8", + "nodeType": "YulLiteral", + "src": "2256:6:8", + "type": "", + "value": "0xef01" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2268:3:8", + "nodeType": "YulLiteral", + "src": "2268:3:8", + "type": "", + "value": "240" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2279:4:8", + "nodeType": "YulLiteral", + "src": "2279:4:8", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2273:5:8", + "nodeType": "YulIdentifier", + "src": "2273:5:8" + }, + "nativeSrc": "2273:11:8", + "nodeType": "YulFunctionCall", + "src": "2273:11:8" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "2264:3:8", + "nodeType": "YulIdentifier", + "src": "2264:3:8" + }, + "nativeSrc": "2264:21:8", + "nodeType": "YulFunctionCall", + "src": "2264:21:8" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "2253:2:8", + "nodeType": "YulIdentifier", + "src": "2253:2:8" + }, + "nativeSrc": "2253:33:8", + "nodeType": "YulFunctionCall", + "src": "2253:33:8" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "2243:6:8", + "nodeType": "YulIdentifier", + "src": "2243:6:8" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2482, + "isOffset": false, + "isSlot": false, + "src": "2243:6:8", + "valueSize": 1 + } + ], + "id": 2484, + "nodeType": "InlineAssembly", + "src": "1970:326:8" + } + ] + }, + "documentation": { + "id": 2479, + "nodeType": "StructuredDocumentation", + "src": "1721:116:8", + "text": "@dev Returns whether the current call context is on a EIP7702 authority\n (i.e. externally owned account)." + }, + "id": 2486, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_onEIP7702Authority", + "nameLocation": "1851:19:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2480, + "nodeType": "ParameterList", + "parameters": [], + "src": "1870:2:8" + }, + "returnParameters": { + "id": 2483, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2482, + "mutability": "mutable", + "name": "result", + "nameLocation": "1909:6:8", + "nodeType": "VariableDeclaration", + "scope": 2486, + "src": "1904:11:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2481, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1904:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1903:13:8" + }, + "scope": 2583, + "src": "1842:460:8", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2500, + "nodeType": "Block", + "src": "2437:48:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 2496, + "name": "__self", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2478, + "src": "2470:6:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2495, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2462:7:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 2494, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "2462:7:8", + "typeDescriptions": {} + } + }, + "id": 2497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2462:15:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 2493, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2454:7:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2492, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2454:7:8", + "typeDescriptions": {} + } + }, + "id": 2498, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2454:24:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2491, + "id": 2499, + "nodeType": "Return", + "src": "2447:31:8" + } + ] + }, + "documentation": { + "id": 2487, + "nodeType": "StructuredDocumentation", + "src": "2308:53:8", + "text": "@dev Returns the implementation of this contract." + }, + "id": 2501, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_selfImplementation", + "nameLocation": "2375:19:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2488, + "nodeType": "ParameterList", + "parameters": [], + "src": "2394:2:8" + }, + "returnParameters": { + "id": 2491, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2490, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2501, + "src": "2428:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2489, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2428:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2427:9:8" + }, + "scope": 2583, + "src": "2366:119:8", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2517, + "nodeType": "Block", + "src": "2644:56:8", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2515, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2507, + "name": "__self", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2478, + "src": "2661:6:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 2512, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "2687:4:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CallContextChecker_$2583", + "typeString": "contract CallContextChecker" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_CallContextChecker_$2583", + "typeString": "contract CallContextChecker" + } + ], + "id": 2511, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2679:7:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2510, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2679:7:8", + "typeDescriptions": {} + } + }, + "id": 2513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2679:13:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2509, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2671:7:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 2508, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "2671:7:8", + "typeDescriptions": {} + } + }, + "id": 2514, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2671:22:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "src": "2661:32:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2506, + "id": 2516, + "nodeType": "Return", + "src": "2654:39:8" + } + ] + }, + "documentation": { + "id": 2502, + "nodeType": "StructuredDocumentation", + "src": "2491:82:8", + "text": "@dev Returns whether the current call context is on the implementation itself." + }, + "id": 2518, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_onImplementation", + "nameLocation": "2587:17:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2503, + "nodeType": "ParameterList", + "parameters": [], + "src": "2604:2:8" + }, + "returnParameters": { + "id": 2506, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2505, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2518, + "src": "2638:4:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2504, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2638:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2637:6:8" + }, + "scope": 2583, + "src": "2578:122:8", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2529, + "nodeType": "Block", + "src": "2856:77:8", + "statements": [ + { + "condition": { + "id": 2524, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2870:22:8", + "subExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2522, + "name": "_onEIP7702Authority", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2486, + "src": "2871:19:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 2523, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2871:21:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2528, + "nodeType": "IfStatement", + "src": "2866:60:8", + "trueBody": { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2525, + "name": "_revertUnauthorizedCallContext", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2582, + "src": "2894:30:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2526, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2894:32:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2527, + "nodeType": "ExpressionStatement", + "src": "2894:32:8" + } + } + ] + }, + "documentation": { + "id": 2519, + "nodeType": "StructuredDocumentation", + "src": "2706:85:8", + "text": "@dev Requires that the current call context is performed via a EIP7702 authority." + }, + "id": 2530, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkOnlyEIP7702Authority", + "nameLocation": "2805:26:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2520, + "nodeType": "ParameterList", + "parameters": [], + "src": "2831:2:8" + }, + "returnParameters": { + "id": 2521, + "nodeType": "ParameterList", + "parameters": [], + "src": "2856:0:8" + }, + "scope": 2583, + "src": "2796:137:8", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2540, + "nodeType": "Block", + "src": "3066:74:8", + "statements": [ + { + "condition": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2534, + "name": "_onImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2518, + "src": "3080:17:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 2535, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3080:19:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2539, + "nodeType": "IfStatement", + "src": "3076:57:8", + "trueBody": { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2536, + "name": "_revertUnauthorizedCallContext", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2582, + "src": "3101:30:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3101:32:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2538, + "nodeType": "ExpressionStatement", + "src": "3101:32:8" + } + } + ] + }, + "documentation": { + "id": 2531, + "nodeType": "StructuredDocumentation", + "src": "2939:73:8", + "text": "@dev Requires that the current call context is performed via a proxy." + }, + "id": 2541, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkOnlyProxy", + "nameLocation": "3026:15:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2532, + "nodeType": "ParameterList", + "parameters": [], + "src": "3041:2:8" + }, + "returnParameters": { + "id": 2533, + "nodeType": "ParameterList", + "parameters": [], + "src": "3066:0:8" + }, + "scope": 2583, + "src": "3017:123:8", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2552, + "nodeType": "Block", + "src": "3330:75:8", + "statements": [ + { + "condition": { + "id": 2547, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "3344:20:8", + "subExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2545, + "name": "_onImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2518, + "src": "3345:17:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 2546, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3345:19:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2551, + "nodeType": "IfStatement", + "src": "3340:58:8", + "trueBody": { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2548, + "name": "_revertUnauthorizedCallContext", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2582, + "src": "3366:30:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2549, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3366:32:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2550, + "nodeType": "ExpressionStatement", + "src": "3366:32:8" + } + } + ] + }, + "documentation": { + "id": 2542, + "nodeType": "StructuredDocumentation", + "src": "3146:127:8", + "text": "@dev Requires that the current call context is NOT performed via a proxy.\n This is the opposite of `checkOnlyProxy`." + }, + "id": 2553, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkNotDelegated", + "nameLocation": "3287:18:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2543, + "nodeType": "ParameterList", + "parameters": [], + "src": "3305:2:8" + }, + "returnParameters": { + "id": 2544, + "nodeType": "ParameterList", + "parameters": [], + "src": "3330:0:8" + }, + "scope": 2583, + "src": "3278:127:8", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2560, + "nodeType": "Block", + "src": "3541:56:8", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2556, + "name": "_checkOnlyEIP7702Authority", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2530, + "src": "3551:26:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$__$", + "typeString": "function () view" + } + }, + "id": 2557, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3551:28:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2558, + "nodeType": "ExpressionStatement", + "src": "3551:28:8" + }, + { + "id": 2559, + "nodeType": "PlaceholderStatement", + "src": "3589:1:8" + } + ] + }, + "documentation": { + "id": 2554, + "nodeType": "StructuredDocumentation", + "src": "3411:85:8", + "text": "@dev Requires that the current call context is performed via a EIP7702 authority." + }, + "id": 2561, + "name": "onlyEIP7702Authority", + "nameLocation": "3510:20:8", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 2555, + "nodeType": "ParameterList", + "parameters": [], + "src": "3530:2:8" + }, + "src": "3501:96:8", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2568, + "nodeType": "Block", + "src": "3710:45:8", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2564, + "name": "_checkOnlyProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2541, + "src": "3720:15:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$__$", + "typeString": "function () view" + } + }, + "id": 2565, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3720:17:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2566, + "nodeType": "ExpressionStatement", + "src": "3720:17:8" + }, + { + "id": 2567, + "nodeType": "PlaceholderStatement", + "src": "3747:1:8" + } + ] + }, + "documentation": { + "id": 2562, + "nodeType": "StructuredDocumentation", + "src": "3603:73:8", + "text": "@dev Requires that the current call context is performed via a proxy." + }, + "id": 2569, + "name": "onlyProxy", + "nameLocation": "3690:9:8", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 2563, + "nodeType": "ParameterList", + "parameters": [], + "src": "3699:2:8" + }, + "src": "3681:74:8", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2576, + "nodeType": "Block", + "src": "3920:48:8", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2572, + "name": "_checkNotDelegated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2553, + "src": "3930:18:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$__$", + "typeString": "function () view" + } + }, + "id": 2573, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3930:20:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2574, + "nodeType": "ExpressionStatement", + "src": "3930:20:8" + }, + { + "id": 2575, + "nodeType": "PlaceholderStatement", + "src": "3960:1:8" + } + ] + }, + "documentation": { + "id": 2570, + "nodeType": "StructuredDocumentation", + "src": "3761:122:8", + "text": "@dev Requires that the current call context is NOT performed via a proxy.\n This is the opposite of `onlyProxy`." + }, + "id": 2577, + "name": "notDelegated", + "nameLocation": "3897:12:8", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 2571, + "nodeType": "ParameterList", + "parameters": [], + "src": "3909:2:8" + }, + "src": "3888:80:8", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2581, + "nodeType": "Block", + "src": "4312:179:8", + "statements": [ + { + "AST": { + "nativeSrc": "4374:111:8", + "nodeType": "YulBlock", + "src": "4374:111:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4395:4:8", + "nodeType": "YulLiteral", + "src": "4395:4:8", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "4401:10:8", + "nodeType": "YulLiteral", + "src": "4401:10:8", + "type": "", + "value": "0x9f03a026" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4388:6:8", + "nodeType": "YulIdentifier", + "src": "4388:6:8" + }, + "nativeSrc": "4388:24:8", + "nodeType": "YulFunctionCall", + "src": "4388:24:8" + }, + "nativeSrc": "4388:24:8", + "nodeType": "YulExpressionStatement", + "src": "4388:24:8" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4464:4:8", + "nodeType": "YulLiteral", + "src": "4464:4:8", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "4470:4:8", + "nodeType": "YulLiteral", + "src": "4470:4:8", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "4457:6:8", + "nodeType": "YulIdentifier", + "src": "4457:6:8" + }, + "nativeSrc": "4457:18:8", + "nodeType": "YulFunctionCall", + "src": "4457:18:8" + }, + "nativeSrc": "4457:18:8", + "nodeType": "YulExpressionStatement", + "src": "4457:18:8" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [], + "id": 2580, + "nodeType": "InlineAssembly", + "src": "4365:120:8" + } + ] + }, + "id": 2582, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_revertUnauthorizedCallContext", + "nameLocation": "4266:30:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2578, + "nodeType": "ParameterList", + "parameters": [], + "src": "4296:2:8" + }, + "returnParameters": { + "id": 2579, + "nodeType": "ParameterList", + "parameters": [], + "src": "4312:0:8" + }, + "scope": 2583, + "src": "4257:234:8", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + } + ], + "scope": 2584, + "src": "198:4295:8", + "usedErrors": [ + 2465 + ], + "usedEvents": [] + } + ], + "src": "32:4462:8" + }, + "id": 8 + }, + "solady/utils/LibBytes.sol": { + "ast": { + "absolutePath": "solady/utils/LibBytes.sol", + "exportedSymbols": { + "LibBytes": [ + 3089 + ] + }, + "id": 3090, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2585, + "literals": [ + "solidity", + "^", + "0.8", + ".4" + ], + "nodeType": "PragmaDirective", + "src": "32:23:9" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "LibBytes", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 2586, + "nodeType": "StructuredDocumentation", + "src": "57:140:9", + "text": "@notice Library for byte related operations.\n @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/LibBytes.sol)" + }, + "fullyImplemented": true, + "id": 3089, + "linearizedBaseContracts": [ + 3089 + ], + "name": "LibBytes", + "nameLocation": "205:8:9", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "LibBytes.BytesStorage", + "documentation": { + "id": 2587, + "nodeType": "StructuredDocumentation", + "src": "503:235:9", + "text": "@dev Goated bytes storage struct that totally MOGs, no cap, fr.\n Uses less gas and bytecode than Solidity's native bytes storage. It's meta af.\n Packs length with the first 31 bytes if <255 bytes, so it’s mad tight." + }, + "id": 2590, + "members": [ + { + "constant": false, + "id": 2589, + "mutability": "mutable", + "name": "_spacer", + "nameLocation": "781:7:9", + "nodeType": "VariableDeclaration", + "scope": 2590, + "src": "773:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2588, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "773:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "name": "BytesStorage", + "nameLocation": "750:12:9", + "nodeType": "StructDefinition", + "scope": 3089, + "src": "743:52:9", + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 2591, + "nodeType": "StructuredDocumentation", + "src": "1084:75:9", + "text": "@dev The constant returned when the `search` is not found in the bytes." + }, + "id": 2598, + "mutability": "constant", + "name": "NOT_FOUND", + "nameLocation": "1190:9:9", + "nodeType": "VariableDeclaration", + "scope": 3089, + "src": "1164:55:9", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2592, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1164:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "expression": { + "arguments": [ + { + "id": 2595, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1207:7:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2594, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1207:7:9", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 2593, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "1202:4:9", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2596, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1202:13:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 2597, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1216:3:9", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "1202:17:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "body": { + "id": 2608, + "nodeType": "Block", + "src": "1632:772:9", + "statements": [ + { + "AST": { + "nativeSrc": "1694:704:9", + "nodeType": "YulBlock", + "src": "1694:704:9", + "statements": [ + { + "nativeSrc": "1708:17:9", + "nodeType": "YulVariableDeclaration", + "src": "1708:17:9", + "value": { + "arguments": [ + { + "name": "s", + "nativeSrc": "1723:1:9", + "nodeType": "YulIdentifier", + "src": "1723:1:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "1717:5:9", + "nodeType": "YulIdentifier", + "src": "1717:5:9" + }, + "nativeSrc": "1717:8:9", + "nodeType": "YulFunctionCall", + "src": "1717:8:9" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "1712:1:9", + "nodeType": "YulTypedName", + "src": "1712:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "1738:33:9", + "nodeType": "YulVariableDeclaration", + "src": "1738:33:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1755:4:9", + "nodeType": "YulLiteral", + "src": "1755:4:9", + "type": "", + "value": "0xff" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1765:1:9", + "nodeType": "YulLiteral", + "src": "1765:1:9", + "type": "", + "value": "8" + }, + { + "name": "n", + "nativeSrc": "1768:1:9", + "nodeType": "YulIdentifier", + "src": "1768:1:9" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "1761:3:9", + "nodeType": "YulIdentifier", + "src": "1761:3:9" + }, + "nativeSrc": "1761:9:9", + "nodeType": "YulFunctionCall", + "src": "1761:9:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "1752:2:9", + "nodeType": "YulIdentifier", + "src": "1752:2:9" + }, + "nativeSrc": "1752:19:9", + "nodeType": "YulFunctionCall", + "src": "1752:19:9" + }, + "variables": [ + { + "name": "packed", + "nativeSrc": "1742:6:9", + "nodeType": "YulTypedName", + "src": "1742:6:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "1808:545:9", + "nodeType": "YulBlock", + "src": "1808:545:9", + "statements": [ + { + "body": { + "nativeSrc": "1849:161:9", + "nodeType": "YulBlock", + "src": "1849:161:9", + "statements": [ + { + "nativeSrc": "1871:9:9", + "nodeType": "YulAssignment", + "src": "1871:9:9", + "value": { + "kind": "number", + "nativeSrc": "1876:4:9", + "nodeType": "YulLiteral", + "src": "1876:4:9", + "type": "", + "value": "0x1f" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "1871:1:9", + "nodeType": "YulIdentifier", + "src": "1871:1:9" + } + ] + }, + { + "nativeSrc": "1901:41:9", + "nodeType": "YulAssignment", + "src": "1901:41:9", + "value": { + "arguments": [ + { + "name": "n", + "nativeSrc": "1914:1:9", + "nodeType": "YulIdentifier", + "src": "1914:1:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1921:1:9", + "nodeType": "YulLiteral", + "src": "1921:1:9", + "type": "", + "value": "8" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "s", + "nativeSrc": "1934:1:9", + "nodeType": "YulIdentifier", + "src": "1934:1:9" + }, + { + "name": "i", + "nativeSrc": "1937:1:9", + "nodeType": "YulIdentifier", + "src": "1937:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1930:3:9", + "nodeType": "YulIdentifier", + "src": "1930:3:9" + }, + "nativeSrc": "1930:9:9", + "nodeType": "YulFunctionCall", + "src": "1930:9:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "1924:5:9", + "nodeType": "YulIdentifier", + "src": "1924:5:9" + }, + "nativeSrc": "1924:16:9", + "nodeType": "YulFunctionCall", + "src": "1924:16:9" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "1917:3:9", + "nodeType": "YulIdentifier", + "src": "1917:3:9" + }, + "nativeSrc": "1917:24:9", + "nodeType": "YulFunctionCall", + "src": "1917:24:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "1911:2:9", + "nodeType": "YulIdentifier", + "src": "1911:2:9" + }, + "nativeSrc": "1911:31:9", + "nodeType": "YulFunctionCall", + "src": "1911:31:9" + }, + "variableNames": [ + { + "name": "packed", + "nativeSrc": "1901:6:9", + "nodeType": "YulIdentifier", + "src": "1901:6:9" + } + ] + }, + { + "body": { + "nativeSrc": "1983:9:9", + "nodeType": "YulBlock", + "src": "1983:9:9", + "statements": [ + { + "nativeSrc": "1985:5:9", + "nodeType": "YulBreak", + "src": "1985:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "n", + "nativeSrc": "1976:1:9", + "nodeType": "YulIdentifier", + "src": "1976:1:9" + }, + { + "name": "i", + "nativeSrc": "1979:1:9", + "nodeType": "YulIdentifier", + "src": "1979:1:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "1973:2:9", + "nodeType": "YulIdentifier", + "src": "1973:2:9" + }, + "nativeSrc": "1973:8:9", + "nodeType": "YulFunctionCall", + "src": "1973:8:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "1966:6:9", + "nodeType": "YulIdentifier", + "src": "1966:6:9" + }, + "nativeSrc": "1966:16:9", + "nodeType": "YulFunctionCall", + "src": "1966:16:9" + }, + "nativeSrc": "1963:29:9", + "nodeType": "YulIf", + "src": "1963:29:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "n", + "nativeSrc": "1839:1:9", + "nodeType": "YulIdentifier", + "src": "1839:1:9" + }, + { + "kind": "number", + "nativeSrc": "1842:4:9", + "nodeType": "YulLiteral", + "src": "1842:4:9", + "type": "", + "value": "0xfe" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "1836:2:9", + "nodeType": "YulIdentifier", + "src": "1836:2:9" + }, + "nativeSrc": "1836:11:9", + "nodeType": "YulFunctionCall", + "src": "1836:11:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "1829:6:9", + "nodeType": "YulIdentifier", + "src": "1829:6:9" + }, + "nativeSrc": "1829:19:9", + "nodeType": "YulFunctionCall", + "src": "1829:19:9" + }, + "nativeSrc": "1826:184:9", + "nodeType": "YulIf", + "src": "1826:184:9" + }, + { + "nativeSrc": "2027:21:9", + "nodeType": "YulVariableDeclaration", + "src": "2027:21:9", + "value": { + "arguments": [ + { + "name": "s", + "nativeSrc": "2040:1:9", + "nodeType": "YulIdentifier", + "src": "2040:1:9" + }, + { + "kind": "number", + "nativeSrc": "2043:4:9", + "nodeType": "YulLiteral", + "src": "2043:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2036:3:9", + "nodeType": "YulIdentifier", + "src": "2036:3:9" + }, + "nativeSrc": "2036:12:9", + "nodeType": "YulFunctionCall", + "src": "2036:12:9" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "2031:1:9", + "nodeType": "YulTypedName", + "src": "2031:1:9", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2072:4:9", + "nodeType": "YulLiteral", + "src": "2072:4:9", + "type": "", + "value": "0x00" + }, + { + "name": "$.slot", + "nativeSrc": "2078:6:9", + "nodeType": "YulIdentifier", + "src": "2078:6:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2065:6:9", + "nodeType": "YulIdentifier", + "src": "2065:6:9" + }, + "nativeSrc": "2065:20:9", + "nodeType": "YulFunctionCall", + "src": "2065:20:9" + }, + "nativeSrc": "2065:20:9", + "nodeType": "YulExpressionStatement", + "src": "2065:20:9" + }, + { + "body": { + "nativeSrc": "2146:171:9", + "nodeType": "YulBlock", + "src": "2146:171:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "p", + "nativeSrc": "2179:1:9", + "nodeType": "YulIdentifier", + "src": "2179:1:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2186:1:9", + "nodeType": "YulLiteral", + "src": "2186:1:9", + "type": "", + "value": "5" + }, + { + "name": "i", + "nativeSrc": "2189:1:9", + "nodeType": "YulIdentifier", + "src": "2189:1:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "2182:3:9", + "nodeType": "YulIdentifier", + "src": "2182:3:9" + }, + "nativeSrc": "2182:9:9", + "nodeType": "YulFunctionCall", + "src": "2182:9:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2175:3:9", + "nodeType": "YulIdentifier", + "src": "2175:3:9" + }, + "nativeSrc": "2175:17:9", + "nodeType": "YulFunctionCall", + "src": "2175:17:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "2204:1:9", + "nodeType": "YulIdentifier", + "src": "2204:1:9" + }, + { + "name": "i", + "nativeSrc": "2207:1:9", + "nodeType": "YulIdentifier", + "src": "2207:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2200:3:9", + "nodeType": "YulIdentifier", + "src": "2200:3:9" + }, + "nativeSrc": "2200:9:9", + "nodeType": "YulFunctionCall", + "src": "2200:9:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2194:5:9", + "nodeType": "YulIdentifier", + "src": "2194:5:9" + }, + "nativeSrc": "2194:16:9", + "nodeType": "YulFunctionCall", + "src": "2194:16:9" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "2168:6:9", + "nodeType": "YulIdentifier", + "src": "2168:6:9" + }, + "nativeSrc": "2168:43:9", + "nodeType": "YulFunctionCall", + "src": "2168:43:9" + }, + "nativeSrc": "2168:43:9", + "nodeType": "YulExpressionStatement", + "src": "2168:43:9" + }, + { + "nativeSrc": "2232:17:9", + "nodeType": "YulAssignment", + "src": "2232:17:9", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "2241:1:9", + "nodeType": "YulIdentifier", + "src": "2241:1:9" + }, + { + "kind": "number", + "nativeSrc": "2244:4:9", + "nodeType": "YulLiteral", + "src": "2244:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2237:3:9", + "nodeType": "YulIdentifier", + "src": "2237:3:9" + }, + "nativeSrc": "2237:12:9", + "nodeType": "YulFunctionCall", + "src": "2237:12:9" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "2232:1:9", + "nodeType": "YulIdentifier", + "src": "2232:1:9" + } + ] + }, + { + "body": { + "nativeSrc": "2290:9:9", + "nodeType": "YulBlock", + "src": "2290:9:9", + "statements": [ + { + "nativeSrc": "2292:5:9", + "nodeType": "YulBreak", + "src": "2292:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "2283:1:9", + "nodeType": "YulIdentifier", + "src": "2283:1:9" + }, + { + "name": "n", + "nativeSrc": "2286:1:9", + "nodeType": "YulIdentifier", + "src": "2286:1:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "2280:2:9", + "nodeType": "YulIdentifier", + "src": "2280:2:9" + }, + "nativeSrc": "2280:8:9", + "nodeType": "YulFunctionCall", + "src": "2280:8:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "2273:6:9", + "nodeType": "YulIdentifier", + "src": "2273:6:9" + }, + "nativeSrc": "2273:16:9", + "nodeType": "YulFunctionCall", + "src": "2273:16:9" + }, + "nativeSrc": "2270:29:9", + "nodeType": "YulIf", + "src": "2270:29:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "2141:1:9", + "nodeType": "YulLiteral", + "src": "2141:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "2102:215:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "2143:2:9", + "nodeType": "YulBlock", + "src": "2143:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "2106:34:9", + "nodeType": "YulBlock", + "src": "2106:34:9", + "statements": [ + { + "nativeSrc": "2108:30:9", + "nodeType": "YulVariableDeclaration", + "src": "2108:30:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2127:4:9", + "nodeType": "YulLiteral", + "src": "2127:4:9", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "2133:4:9", + "nodeType": "YulLiteral", + "src": "2133:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "2117:9:9", + "nodeType": "YulIdentifier", + "src": "2117:9:9" + }, + "nativeSrc": "2117:21:9", + "nodeType": "YulFunctionCall", + "src": "2117:21:9" + }, + "variables": [ + { + "name": "p", + "nativeSrc": "2112:1:9", + "nodeType": "YulTypedName", + "src": "2112:1:9", + "type": "" + } + ] + } + ] + }, + "src": "2102:215:9" + }, + { + "nativeSrc": "2334:5:9", + "nodeType": "YulBreak", + "src": "2334:5:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "1803:1:9", + "nodeType": "YulLiteral", + "src": "1803:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "1784:569:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "1805:2:9", + "nodeType": "YulBlock", + "src": "1805:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "1788:14:9", + "nodeType": "YulBlock", + "src": "1788:14:9", + "statements": [ + { + "nativeSrc": "1790:10:9", + "nodeType": "YulVariableDeclaration", + "src": "1790:10:9", + "value": { + "kind": "number", + "nativeSrc": "1799:1:9", + "nodeType": "YulLiteral", + "src": "1799:1:9", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "1794:1:9", + "nodeType": "YulTypedName", + "src": "1794:1:9", + "type": "" + } + ] + } + ] + }, + "src": "1784:569:9" + }, + { + "expression": { + "arguments": [ + { + "name": "$.slot", + "nativeSrc": "2373:6:9", + "nodeType": "YulIdentifier", + "src": "2373:6:9" + }, + { + "name": "packed", + "nativeSrc": "2381:6:9", + "nodeType": "YulIdentifier", + "src": "2381:6:9" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "2366:6:9", + "nodeType": "YulIdentifier", + "src": "2366:6:9" + }, + "nativeSrc": "2366:22:9", + "nodeType": "YulFunctionCall", + "src": "2366:22:9" + }, + "nativeSrc": "2366:22:9", + "nodeType": "YulExpressionStatement", + "src": "2366:22:9" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2602, + "isOffset": false, + "isSlot": true, + "src": "2078:6:9", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 2602, + "isOffset": false, + "isSlot": true, + "src": "2373:6:9", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 2604, + "isOffset": false, + "isSlot": false, + "src": "1723:1:9", + "valueSize": 1 + }, + { + "declaration": 2604, + "isOffset": false, + "isSlot": false, + "src": "1934:1:9", + "valueSize": 1 + }, + { + "declaration": 2604, + "isOffset": false, + "isSlot": false, + "src": "2040:1:9", + "valueSize": 1 + } + ], + "id": 2607, + "nodeType": "InlineAssembly", + "src": "1685:713:9" + } + ] + }, + "documentation": { + "id": 2599, + "nodeType": "StructuredDocumentation", + "src": "1509:56:9", + "text": "@dev Sets the value of the bytes storage `$` to `s`." + }, + "id": 2609, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "set", + "nameLocation": "1579:3:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2605, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2602, + "mutability": "mutable", + "name": "$", + "nameLocation": "1604:1:9", + "nodeType": "VariableDeclaration", + "scope": 2609, + "src": "1583:22:9", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage" + }, + "typeName": { + "id": 2601, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2600, + "name": "BytesStorage", + "nameLocations": [ + "1583:12:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2590, + "src": "1583:12:9" + }, + "referencedDeclaration": 2590, + "src": "1583:12:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2604, + "mutability": "mutable", + "name": "s", + "nameLocation": "1620:1:9", + "nodeType": "VariableDeclaration", + "scope": 2609, + "src": "1607:14:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2603, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1607:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "1582:40:9" + }, + "returnParameters": { + "id": 2606, + "nodeType": "ParameterList", + "parameters": [], + "src": "1632:0:9" + }, + "scope": 3089, + "src": "1570:834:9", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2619, + "nodeType": "Block", + "src": "2543:767:9", + "statements": [ + { + "AST": { + "nativeSrc": "2605:699:9", + "nodeType": "YulBlock", + "src": "2605:699:9", + "statements": [ + { + "nativeSrc": "2619:40:9", + "nodeType": "YulVariableDeclaration", + "src": "2619:40:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2636:4:9", + "nodeType": "YulLiteral", + "src": "2636:4:9", + "type": "", + "value": "0xff" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2646:1:9", + "nodeType": "YulLiteral", + "src": "2646:1:9", + "type": "", + "value": "8" + }, + { + "name": "s.length", + "nativeSrc": "2649:8:9", + "nodeType": "YulIdentifier", + "src": "2649:8:9" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "2642:3:9", + "nodeType": "YulIdentifier", + "src": "2642:3:9" + }, + "nativeSrc": "2642:16:9", + "nodeType": "YulFunctionCall", + "src": "2642:16:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "2633:2:9", + "nodeType": "YulIdentifier", + "src": "2633:2:9" + }, + "nativeSrc": "2633:26:9", + "nodeType": "YulFunctionCall", + "src": "2633:26:9" + }, + "variables": [ + { + "name": "packed", + "nativeSrc": "2623:6:9", + "nodeType": "YulTypedName", + "src": "2623:6:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "2696:563:9", + "nodeType": "YulBlock", + "src": "2696:563:9", + "statements": [ + { + "body": { + "nativeSrc": "2744:189:9", + "nodeType": "YulBlock", + "src": "2744:189:9", + "statements": [ + { + "nativeSrc": "2766:9:9", + "nodeType": "YulAssignment", + "src": "2766:9:9", + "value": { + "kind": "number", + "nativeSrc": "2771:4:9", + "nodeType": "YulLiteral", + "src": "2771:4:9", + "type": "", + "value": "0x1f" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "2766:1:9", + "nodeType": "YulIdentifier", + "src": "2766:1:9" + } + ] + }, + { + "nativeSrc": "2796:62:9", + "nodeType": "YulAssignment", + "src": "2796:62:9", + "value": { + "arguments": [ + { + "name": "s.length", + "nativeSrc": "2809:8:9", + "nodeType": "YulIdentifier", + "src": "2809:8:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2823:1:9", + "nodeType": "YulLiteral", + "src": "2823:1:9", + "type": "", + "value": "8" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2830:1:9", + "nodeType": "YulLiteral", + "src": "2830:1:9", + "type": "", + "value": "8" + }, + { + "arguments": [ + { + "name": "s.offset", + "nativeSrc": "2846:8:9", + "nodeType": "YulIdentifier", + "src": "2846:8:9" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "2833:12:9", + "nodeType": "YulIdentifier", + "src": "2833:12:9" + }, + "nativeSrc": "2833:22:9", + "nodeType": "YulFunctionCall", + "src": "2833:22:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "2826:3:9", + "nodeType": "YulIdentifier", + "src": "2826:3:9" + }, + "nativeSrc": "2826:30:9", + "nodeType": "YulFunctionCall", + "src": "2826:30:9" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "2819:3:9", + "nodeType": "YulIdentifier", + "src": "2819:3:9" + }, + "nativeSrc": "2819:38:9", + "nodeType": "YulFunctionCall", + "src": "2819:38:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "2806:2:9", + "nodeType": "YulIdentifier", + "src": "2806:2:9" + }, + "nativeSrc": "2806:52:9", + "nodeType": "YulFunctionCall", + "src": "2806:52:9" + }, + "variableNames": [ + { + "name": "packed", + "nativeSrc": "2796:6:9", + "nodeType": "YulIdentifier", + "src": "2796:6:9" + } + ] + }, + { + "body": { + "nativeSrc": "2906:9:9", + "nodeType": "YulBlock", + "src": "2906:9:9", + "statements": [ + { + "nativeSrc": "2908:5:9", + "nodeType": "YulBreak", + "src": "2908:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "s.length", + "nativeSrc": "2892:8:9", + "nodeType": "YulIdentifier", + "src": "2892:8:9" + }, + { + "name": "i", + "nativeSrc": "2902:1:9", + "nodeType": "YulIdentifier", + "src": "2902:1:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "2889:2:9", + "nodeType": "YulIdentifier", + "src": "2889:2:9" + }, + "nativeSrc": "2889:15:9", + "nodeType": "YulFunctionCall", + "src": "2889:15:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "2882:6:9", + "nodeType": "YulIdentifier", + "src": "2882:6:9" + }, + "nativeSrc": "2882:23:9", + "nodeType": "YulFunctionCall", + "src": "2882:23:9" + }, + "nativeSrc": "2879:36:9", + "nodeType": "YulIf", + "src": "2879:36:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "s.length", + "nativeSrc": "2727:8:9", + "nodeType": "YulIdentifier", + "src": "2727:8:9" + }, + { + "kind": "number", + "nativeSrc": "2737:4:9", + "nodeType": "YulLiteral", + "src": "2737:4:9", + "type": "", + "value": "0xfe" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "2724:2:9", + "nodeType": "YulIdentifier", + "src": "2724:2:9" + }, + "nativeSrc": "2724:18:9", + "nodeType": "YulFunctionCall", + "src": "2724:18:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "2717:6:9", + "nodeType": "YulIdentifier", + "src": "2717:6:9" + }, + "nativeSrc": "2717:26:9", + "nodeType": "YulFunctionCall", + "src": "2717:26:9" + }, + "nativeSrc": "2714:219:9", + "nodeType": "YulIf", + "src": "2714:219:9" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2957:4:9", + "nodeType": "YulLiteral", + "src": "2957:4:9", + "type": "", + "value": "0x00" + }, + { + "name": "$.slot", + "nativeSrc": "2963:6:9", + "nodeType": "YulIdentifier", + "src": "2963:6:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2950:6:9", + "nodeType": "YulIdentifier", + "src": "2950:6:9" + }, + "nativeSrc": "2950:20:9", + "nodeType": "YulFunctionCall", + "src": "2950:20:9" + }, + "nativeSrc": "2950:20:9", + "nodeType": "YulExpressionStatement", + "src": "2950:20:9" + }, + { + "body": { + "nativeSrc": "3031:192:9", + "nodeType": "YulBlock", + "src": "3031:192:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "p", + "nativeSrc": "3064:1:9", + "nodeType": "YulIdentifier", + "src": "3064:1:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3071:1:9", + "nodeType": "YulLiteral", + "src": "3071:1:9", + "type": "", + "value": "5" + }, + { + "name": "i", + "nativeSrc": "3074:1:9", + "nodeType": "YulIdentifier", + "src": "3074:1:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "3067:3:9", + "nodeType": "YulIdentifier", + "src": "3067:3:9" + }, + "nativeSrc": "3067:9:9", + "nodeType": "YulFunctionCall", + "src": "3067:9:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3060:3:9", + "nodeType": "YulIdentifier", + "src": "3060:3:9" + }, + "nativeSrc": "3060:17:9", + "nodeType": "YulFunctionCall", + "src": "3060:17:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "s.offset", + "nativeSrc": "3096:8:9", + "nodeType": "YulIdentifier", + "src": "3096:8:9" + }, + { + "name": "i", + "nativeSrc": "3106:1:9", + "nodeType": "YulIdentifier", + "src": "3106:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3092:3:9", + "nodeType": "YulIdentifier", + "src": "3092:3:9" + }, + "nativeSrc": "3092:16:9", + "nodeType": "YulFunctionCall", + "src": "3092:16:9" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "3079:12:9", + "nodeType": "YulIdentifier", + "src": "3079:12:9" + }, + "nativeSrc": "3079:30:9", + "nodeType": "YulFunctionCall", + "src": "3079:30:9" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "3053:6:9", + "nodeType": "YulIdentifier", + "src": "3053:6:9" + }, + "nativeSrc": "3053:57:9", + "nodeType": "YulFunctionCall", + "src": "3053:57:9" + }, + "nativeSrc": "3053:57:9", + "nodeType": "YulExpressionStatement", + "src": "3053:57:9" + }, + { + "nativeSrc": "3131:17:9", + "nodeType": "YulAssignment", + "src": "3131:17:9", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "3140:1:9", + "nodeType": "YulIdentifier", + "src": "3140:1:9" + }, + { + "kind": "number", + "nativeSrc": "3143:4:9", + "nodeType": "YulLiteral", + "src": "3143:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3136:3:9", + "nodeType": "YulIdentifier", + "src": "3136:3:9" + }, + "nativeSrc": "3136:12:9", + "nodeType": "YulFunctionCall", + "src": "3136:12:9" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "3131:1:9", + "nodeType": "YulIdentifier", + "src": "3131:1:9" + } + ] + }, + { + "body": { + "nativeSrc": "3196:9:9", + "nodeType": "YulBlock", + "src": "3196:9:9", + "statements": [ + { + "nativeSrc": "3198:5:9", + "nodeType": "YulBreak", + "src": "3198:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "3182:1:9", + "nodeType": "YulIdentifier", + "src": "3182:1:9" + }, + { + "name": "s.length", + "nativeSrc": "3185:8:9", + "nodeType": "YulIdentifier", + "src": "3185:8:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "3179:2:9", + "nodeType": "YulIdentifier", + "src": "3179:2:9" + }, + "nativeSrc": "3179:15:9", + "nodeType": "YulFunctionCall", + "src": "3179:15:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "3172:6:9", + "nodeType": "YulIdentifier", + "src": "3172:6:9" + }, + "nativeSrc": "3172:23:9", + "nodeType": "YulFunctionCall", + "src": "3172:23:9" + }, + "nativeSrc": "3169:36:9", + "nodeType": "YulIf", + "src": "3169:36:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "3026:1:9", + "nodeType": "YulLiteral", + "src": "3026:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "2987:236:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "3028:2:9", + "nodeType": "YulBlock", + "src": "3028:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "2991:34:9", + "nodeType": "YulBlock", + "src": "2991:34:9", + "statements": [ + { + "nativeSrc": "2993:30:9", + "nodeType": "YulVariableDeclaration", + "src": "2993:30:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3012:4:9", + "nodeType": "YulLiteral", + "src": "3012:4:9", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "3018:4:9", + "nodeType": "YulLiteral", + "src": "3018:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "3002:9:9", + "nodeType": "YulIdentifier", + "src": "3002:9:9" + }, + "nativeSrc": "3002:21:9", + "nodeType": "YulFunctionCall", + "src": "3002:21:9" + }, + "variables": [ + { + "name": "p", + "nativeSrc": "2997:1:9", + "nodeType": "YulTypedName", + "src": "2997:1:9", + "type": "" + } + ] + } + ] + }, + "src": "2987:236:9" + }, + { + "nativeSrc": "3240:5:9", + "nodeType": "YulBreak", + "src": "3240:5:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "2691:1:9", + "nodeType": "YulLiteral", + "src": "2691:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "2672:587:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "2693:2:9", + "nodeType": "YulBlock", + "src": "2693:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "2676:14:9", + "nodeType": "YulBlock", + "src": "2676:14:9", + "statements": [ + { + "nativeSrc": "2678:10:9", + "nodeType": "YulVariableDeclaration", + "src": "2678:10:9", + "value": { + "kind": "number", + "nativeSrc": "2687:1:9", + "nodeType": "YulLiteral", + "src": "2687:1:9", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "2682:1:9", + "nodeType": "YulTypedName", + "src": "2682:1:9", + "type": "" + } + ] + } + ] + }, + "src": "2672:587:9" + }, + { + "expression": { + "arguments": [ + { + "name": "$.slot", + "nativeSrc": "3279:6:9", + "nodeType": "YulIdentifier", + "src": "3279:6:9" + }, + { + "name": "packed", + "nativeSrc": "3287:6:9", + "nodeType": "YulIdentifier", + "src": "3287:6:9" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "3272:6:9", + "nodeType": "YulIdentifier", + "src": "3272:6:9" + }, + "nativeSrc": "3272:22:9", + "nodeType": "YulFunctionCall", + "src": "3272:22:9" + }, + "nativeSrc": "3272:22:9", + "nodeType": "YulExpressionStatement", + "src": "3272:22:9" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2613, + "isOffset": false, + "isSlot": true, + "src": "2963:6:9", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 2613, + "isOffset": false, + "isSlot": true, + "src": "3279:6:9", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 2615, + "isOffset": false, + "isSlot": false, + "src": "2649:8:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 2615, + "isOffset": false, + "isSlot": false, + "src": "2727:8:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 2615, + "isOffset": false, + "isSlot": false, + "src": "2809:8:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 2615, + "isOffset": false, + "isSlot": false, + "src": "2892:8:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 2615, + "isOffset": false, + "isSlot": false, + "src": "3185:8:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 2615, + "isOffset": true, + "isSlot": false, + "src": "2846:8:9", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 2615, + "isOffset": true, + "isSlot": false, + "src": "3096:8:9", + "suffix": "offset", + "valueSize": 1 + } + ], + "id": 2618, + "nodeType": "InlineAssembly", + "src": "2596:708:9" + } + ] + }, + "documentation": { + "id": 2610, + "nodeType": "StructuredDocumentation", + "src": "2410:56:9", + "text": "@dev Sets the value of the bytes storage `$` to `s`." + }, + "id": 2620, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setCalldata", + "nameLocation": "2480:11:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2616, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2613, + "mutability": "mutable", + "name": "$", + "nameLocation": "2513:1:9", + "nodeType": "VariableDeclaration", + "scope": 2620, + "src": "2492:22:9", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage" + }, + "typeName": { + "id": 2612, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2611, + "name": "BytesStorage", + "nameLocations": [ + "2492:12:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2590, + "src": "2492:12:9" + }, + "referencedDeclaration": 2590, + "src": "2492:12:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2615, + "mutability": "mutable", + "name": "s", + "nameLocation": "2531:1:9", + "nodeType": "VariableDeclaration", + "scope": 2620, + "src": "2516:16:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2614, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2516:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "2491:42:9" + }, + "returnParameters": { + "id": 2617, + "nodeType": "ParameterList", + "parameters": [], + "src": "2543:0:9" + }, + "scope": 3089, + "src": "2471:839:9", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2631, + "nodeType": "Block", + "src": "3437:33:9", + "statements": [ + { + "expression": { + "id": 2629, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "3447:16:9", + "subExpression": { + "expression": { + "id": 2627, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2624, + "src": "3454:1:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage storage pointer" + } + }, + "id": 2628, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "3456:7:9", + "memberName": "_spacer", + "nodeType": "MemberAccess", + "referencedDeclaration": 2589, + "src": "3454:9:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2630, + "nodeType": "ExpressionStatement", + "src": "3447:16:9" + } + ] + }, + "documentation": { + "id": 2621, + "nodeType": "StructuredDocumentation", + "src": "3316:68:9", + "text": "@dev Sets the value of the bytes storage `$` to the empty bytes." + }, + "id": 2632, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "clear", + "nameLocation": "3398:5:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2625, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2624, + "mutability": "mutable", + "name": "$", + "nameLocation": "3425:1:9", + "nodeType": "VariableDeclaration", + "scope": 2632, + "src": "3404:22:9", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage" + }, + "typeName": { + "id": 2623, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2622, + "name": "BytesStorage", + "nameLocations": [ + "3404:12:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2590, + "src": "3404:12:9" + }, + "referencedDeclaration": 2590, + "src": "3404:12:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage" + } + }, + "visibility": "internal" + } + ], + "src": "3403:24:9" + }, + "returnParameters": { + "id": 2626, + "nodeType": "ParameterList", + "parameters": [], + "src": "3437:0:9" + }, + "scope": 3089, + "src": "3389:81:9", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2654, + "nodeType": "Block", + "src": "3622:63:9", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2647, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "expression": { + "id": 2643, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2636, + "src": "3647:1:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage storage pointer" + } + }, + "id": 2644, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3649:7:9", + "memberName": "_spacer", + "nodeType": "MemberAccess", + "referencedDeclaration": 2589, + "src": "3647:9:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2642, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3639:7:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2641, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3639:7:9", + "typeDescriptions": {} + } + }, + "id": 2645, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3639:18:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "30786666", + "id": 2646, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3660:4:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_255_by_1", + "typeString": "int_const 255" + }, + "value": "0xff" + }, + "src": "3639:25:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 2650, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3676:1:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2649, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3668:7:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2648, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3668:7:9", + "typeDescriptions": {} + } + }, + "id": 2651, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3668:10:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3639:39:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2640, + "id": 2653, + "nodeType": "Return", + "src": "3632:46:9" + } + ] + }, + "documentation": { + "id": 2633, + "nodeType": "StructuredDocumentation", + "src": "3476:71:9", + "text": "@dev Returns whether the value stored is `$` is the empty bytes \"\"." + }, + "id": 2655, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isEmpty", + "nameLocation": "3561:7:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2637, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2636, + "mutability": "mutable", + "name": "$", + "nameLocation": "3590:1:9", + "nodeType": "VariableDeclaration", + "scope": 2655, + "src": "3569:22:9", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage" + }, + "typeName": { + "id": 2635, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2634, + "name": "BytesStorage", + "nameLocations": [ + "3569:12:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2590, + "src": "3569:12:9" + }, + "referencedDeclaration": 2590, + "src": "3569:12:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage" + } + }, + "visibility": "internal" + } + ], + "src": "3568:24:9" + }, + "returnParameters": { + "id": 2640, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2639, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2655, + "src": "3616:4:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2638, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3616:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3615:6:9" + }, + "scope": 3089, + "src": "3552:133:9", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2673, + "nodeType": "Block", + "src": "3830:243:9", + "statements": [ + { + "expression": { + "id": 2670, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2664, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2662, + "src": "3840:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "id": 2667, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2659, + "src": "3857:1:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage storage pointer" + } + }, + "id": 2668, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3859:7:9", + "memberName": "_spacer", + "nodeType": "MemberAccess", + "referencedDeclaration": 2589, + "src": "3857:9:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2666, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3849:7:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2665, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3849:7:9", + "typeDescriptions": {} + } + }, + "id": 2669, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3849:18:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3840:27:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2671, + "nodeType": "ExpressionStatement", + "src": "3840:27:9" + }, + { + "AST": { + "nativeSrc": "3929:138:9", + "nodeType": "YulBlock", + "src": "3929:138:9", + "statements": [ + { + "nativeSrc": "3943:26:9", + "nodeType": "YulVariableDeclaration", + "src": "3943:26:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3956:4:9", + "nodeType": "YulLiteral", + "src": "3956:4:9", + "type": "", + "value": "0xff" + }, + { + "name": "result", + "nativeSrc": "3962:6:9", + "nodeType": "YulIdentifier", + "src": "3962:6:9" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "3952:3:9", + "nodeType": "YulIdentifier", + "src": "3952:3:9" + }, + "nativeSrc": "3952:17:9", + "nodeType": "YulFunctionCall", + "src": "3952:17:9" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "3947:1:9", + "nodeType": "YulTypedName", + "src": "3947:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "3982:75:9", + "nodeType": "YulAssignment", + "src": "3982:75:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4003:1:9", + "nodeType": "YulLiteral", + "src": "4003:1:9", + "type": "", + "value": "8" + }, + { + "name": "result", + "nativeSrc": "4006:6:9", + "nodeType": "YulIdentifier", + "src": "4006:6:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "3999:3:9", + "nodeType": "YulIdentifier", + "src": "3999:3:9" + }, + "nativeSrc": "3999:14:9", + "nodeType": "YulFunctionCall", + "src": "3999:14:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4018:4:9", + "nodeType": "YulLiteral", + "src": "4018:4:9", + "type": "", + "value": "0xff" + }, + { + "name": "n", + "nativeSrc": "4024:1:9", + "nodeType": "YulIdentifier", + "src": "4024:1:9" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "4015:2:9", + "nodeType": "YulIdentifier", + "src": "4015:2:9" + }, + "nativeSrc": "4015:11:9", + "nodeType": "YulFunctionCall", + "src": "4015:11:9" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "3995:3:9", + "nodeType": "YulIdentifier", + "src": "3995:3:9" + }, + "nativeSrc": "3995:32:9", + "nodeType": "YulFunctionCall", + "src": "3995:32:9" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "4033:1:9", + "nodeType": "YulIdentifier", + "src": "4033:1:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4046:4:9", + "nodeType": "YulLiteral", + "src": "4046:4:9", + "type": "", + "value": "0xff" + }, + { + "name": "n", + "nativeSrc": "4052:1:9", + "nodeType": "YulIdentifier", + "src": "4052:1:9" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "4043:2:9", + "nodeType": "YulIdentifier", + "src": "4043:2:9" + }, + "nativeSrc": "4043:11:9", + "nodeType": "YulFunctionCall", + "src": "4043:11:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "4036:6:9", + "nodeType": "YulIdentifier", + "src": "4036:6:9" + }, + "nativeSrc": "4036:19:9", + "nodeType": "YulFunctionCall", + "src": "4036:19:9" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "4029:3:9", + "nodeType": "YulIdentifier", + "src": "4029:3:9" + }, + "nativeSrc": "4029:27:9", + "nodeType": "YulFunctionCall", + "src": "4029:27:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "3992:2:9", + "nodeType": "YulIdentifier", + "src": "3992:2:9" + }, + "nativeSrc": "3992:65:9", + "nodeType": "YulFunctionCall", + "src": "3992:65:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "3982:6:9", + "nodeType": "YulIdentifier", + "src": "3982:6:9" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2662, + "isOffset": false, + "isSlot": false, + "src": "3962:6:9", + "valueSize": 1 + }, + { + "declaration": 2662, + "isOffset": false, + "isSlot": false, + "src": "3982:6:9", + "valueSize": 1 + }, + { + "declaration": 2662, + "isOffset": false, + "isSlot": false, + "src": "4006:6:9", + "valueSize": 1 + } + ], + "id": 2672, + "nodeType": "InlineAssembly", + "src": "3920:147:9" + } + ] + }, + "documentation": { + "id": 2656, + "nodeType": "StructuredDocumentation", + "src": "3691:55:9", + "text": "@dev Returns the length of the value stored in `$`." + }, + "id": 2674, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "length", + "nameLocation": "3760:6:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2660, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2659, + "mutability": "mutable", + "name": "$", + "nameLocation": "3788:1:9", + "nodeType": "VariableDeclaration", + "scope": 2674, + "src": "3767:22:9", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage" + }, + "typeName": { + "id": 2658, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2657, + "name": "BytesStorage", + "nameLocations": [ + "3767:12:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2590, + "src": "3767:12:9" + }, + "referencedDeclaration": 2590, + "src": "3767:12:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage" + } + }, + "visibility": "internal" + } + ], + "src": "3766:24:9" + }, + "returnParameters": { + "id": 2663, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2662, + "mutability": "mutable", + "name": "result", + "nameLocation": "3822:6:9", + "nodeType": "VariableDeclaration", + "scope": 2674, + "src": "3814:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2661, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3814:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3813:16:9" + }, + "scope": 3089, + "src": "3751:322:9", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2684, + "nodeType": "Block", + "src": "4206:1010:9", + "statements": [ + { + "AST": { + "nativeSrc": "4268:942:9", + "nodeType": "YulBlock", + "src": "4268:942:9", + "statements": [ + { + "nativeSrc": "4282:21:9", + "nodeType": "YulAssignment", + "src": "4282:21:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4298:4:9", + "nodeType": "YulLiteral", + "src": "4298:4:9", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "4292:5:9", + "nodeType": "YulIdentifier", + "src": "4292:5:9" + }, + "nativeSrc": "4292:11:9", + "nodeType": "YulFunctionCall", + "src": "4292:11:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "4282:6:9", + "nodeType": "YulIdentifier", + "src": "4282:6:9" + } + ] + }, + { + "nativeSrc": "4316:26:9", + "nodeType": "YulVariableDeclaration", + "src": "4316:26:9", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "4329:6:9", + "nodeType": "YulIdentifier", + "src": "4329:6:9" + }, + { + "kind": "number", + "nativeSrc": "4337:4:9", + "nodeType": "YulLiteral", + "src": "4337:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4325:3:9", + "nodeType": "YulIdentifier", + "src": "4325:3:9" + }, + "nativeSrc": "4325:17:9", + "nodeType": "YulFunctionCall", + "src": "4325:17:9" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "4320:1:9", + "nodeType": "YulTypedName", + "src": "4320:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "4355:27:9", + "nodeType": "YulVariableDeclaration", + "src": "4355:27:9", + "value": { + "arguments": [ + { + "name": "$.slot", + "nativeSrc": "4375:6:9", + "nodeType": "YulIdentifier", + "src": "4375:6:9" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "4369:5:9", + "nodeType": "YulIdentifier", + "src": "4369:5:9" + }, + "nativeSrc": "4369:13:9", + "nodeType": "YulFunctionCall", + "src": "4369:13:9" + }, + "variables": [ + { + "name": "packed", + "nativeSrc": "4359:6:9", + "nodeType": "YulTypedName", + "src": "4359:6:9", + "type": "" + } + ] + }, + { + "nativeSrc": "4395:23:9", + "nodeType": "YulVariableDeclaration", + "src": "4395:23:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4408:1:9", + "nodeType": "YulLiteral", + "src": "4408:1:9", + "type": "", + "value": "8" + }, + { + "name": "packed", + "nativeSrc": "4411:6:9", + "nodeType": "YulIdentifier", + "src": "4411:6:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "4404:3:9", + "nodeType": "YulIdentifier", + "src": "4404:3:9" + }, + "nativeSrc": "4404:14:9", + "nodeType": "YulFunctionCall", + "src": "4404:14:9" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "4399:1:9", + "nodeType": "YulTypedName", + "src": "4399:1:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "4455:543:9", + "nodeType": "YulBlock", + "src": "4455:543:9", + "statements": [ + { + "body": { + "nativeSrc": "4513:180:9", + "nodeType": "YulBlock", + "src": "4513:180:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "4542:1:9", + "nodeType": "YulIdentifier", + "src": "4542:1:9" + }, + { + "name": "packed", + "nativeSrc": "4545:6:9", + "nodeType": "YulIdentifier", + "src": "4545:6:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4535:6:9", + "nodeType": "YulIdentifier", + "src": "4535:6:9" + }, + "nativeSrc": "4535:17:9", + "nodeType": "YulFunctionCall", + "src": "4535:17:9" + }, + "nativeSrc": "4535:17:9", + "nodeType": "YulExpressionStatement", + "src": "4535:17:9" + }, + { + "nativeSrc": "4573:22:9", + "nodeType": "YulAssignment", + "src": "4573:22:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4582:4:9", + "nodeType": "YulLiteral", + "src": "4582:4:9", + "type": "", + "value": "0xff" + }, + { + "name": "packed", + "nativeSrc": "4588:6:9", + "nodeType": "YulIdentifier", + "src": "4588:6:9" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "4578:3:9", + "nodeType": "YulIdentifier", + "src": "4578:3:9" + }, + "nativeSrc": "4578:17:9", + "nodeType": "YulFunctionCall", + "src": "4578:17:9" + }, + "variableNames": [ + { + "name": "n", + "nativeSrc": "4573:1:9", + "nodeType": "YulIdentifier", + "src": "4573:1:9" + } + ] + }, + { + "nativeSrc": "4616:9:9", + "nodeType": "YulAssignment", + "src": "4616:9:9", + "value": { + "kind": "number", + "nativeSrc": "4621:4:9", + "nodeType": "YulLiteral", + "src": "4621:4:9", + "type": "", + "value": "0x1f" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "4616:1:9", + "nodeType": "YulIdentifier", + "src": "4616:1:9" + } + ] + }, + { + "body": { + "nativeSrc": "4666:9:9", + "nodeType": "YulBlock", + "src": "4666:9:9", + "statements": [ + { + "nativeSrc": "4668:5:9", + "nodeType": "YulBreak", + "src": "4668:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "n", + "nativeSrc": "4659:1:9", + "nodeType": "YulIdentifier", + "src": "4659:1:9" + }, + { + "name": "i", + "nativeSrc": "4662:1:9", + "nodeType": "YulIdentifier", + "src": "4662:1:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "4656:2:9", + "nodeType": "YulIdentifier", + "src": "4656:2:9" + }, + "nativeSrc": "4656:8:9", + "nodeType": "YulFunctionCall", + "src": "4656:8:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "4649:6:9", + "nodeType": "YulIdentifier", + "src": "4649:6:9" + }, + "nativeSrc": "4649:16:9", + "nodeType": "YulFunctionCall", + "src": "4649:16:9" + }, + "nativeSrc": "4646:29:9", + "nodeType": "YulIf", + "src": "4646:29:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "packed", + "nativeSrc": "4489:6:9", + "nodeType": "YulIdentifier", + "src": "4489:6:9" + }, + { + "kind": "number", + "nativeSrc": "4497:4:9", + "nodeType": "YulLiteral", + "src": "4497:4:9", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "4486:2:9", + "nodeType": "YulIdentifier", + "src": "4486:2:9" + }, + "nativeSrc": "4486:16:9", + "nodeType": "YulFunctionCall", + "src": "4486:16:9" + }, + { + "name": "packed", + "nativeSrc": "4504:6:9", + "nodeType": "YulIdentifier", + "src": "4504:6:9" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "4483:2:9", + "nodeType": "YulIdentifier", + "src": "4483:2:9" + }, + "nativeSrc": "4483:28:9", + "nodeType": "YulFunctionCall", + "src": "4483:28:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "4476:6:9", + "nodeType": "YulIdentifier", + "src": "4476:6:9" + }, + "nativeSrc": "4476:36:9", + "nodeType": "YulFunctionCall", + "src": "4476:36:9" + }, + "nativeSrc": "4473:220:9", + "nodeType": "YulIf", + "src": "4473:220:9" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4717:4:9", + "nodeType": "YulLiteral", + "src": "4717:4:9", + "type": "", + "value": "0x00" + }, + { + "name": "$.slot", + "nativeSrc": "4723:6:9", + "nodeType": "YulIdentifier", + "src": "4723:6:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4710:6:9", + "nodeType": "YulIdentifier", + "src": "4710:6:9" + }, + "nativeSrc": "4710:20:9", + "nodeType": "YulFunctionCall", + "src": "4710:20:9" + }, + "nativeSrc": "4710:20:9", + "nodeType": "YulExpressionStatement", + "src": "4710:20:9" + }, + { + "body": { + "nativeSrc": "4791:171:9", + "nodeType": "YulBlock", + "src": "4791:171:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "4824:1:9", + "nodeType": "YulIdentifier", + "src": "4824:1:9" + }, + { + "name": "i", + "nativeSrc": "4827:1:9", + "nodeType": "YulIdentifier", + "src": "4827:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4820:3:9", + "nodeType": "YulIdentifier", + "src": "4820:3:9" + }, + "nativeSrc": "4820:9:9", + "nodeType": "YulFunctionCall", + "src": "4820:9:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "p", + "nativeSrc": "4841:1:9", + "nodeType": "YulIdentifier", + "src": "4841:1:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4848:1:9", + "nodeType": "YulLiteral", + "src": "4848:1:9", + "type": "", + "value": "5" + }, + { + "name": "i", + "nativeSrc": "4851:1:9", + "nodeType": "YulIdentifier", + "src": "4851:1:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "4844:3:9", + "nodeType": "YulIdentifier", + "src": "4844:3:9" + }, + "nativeSrc": "4844:9:9", + "nodeType": "YulFunctionCall", + "src": "4844:9:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4837:3:9", + "nodeType": "YulIdentifier", + "src": "4837:3:9" + }, + "nativeSrc": "4837:17:9", + "nodeType": "YulFunctionCall", + "src": "4837:17:9" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "4831:5:9", + "nodeType": "YulIdentifier", + "src": "4831:5:9" + }, + "nativeSrc": "4831:24:9", + "nodeType": "YulFunctionCall", + "src": "4831:24:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4813:6:9", + "nodeType": "YulIdentifier", + "src": "4813:6:9" + }, + "nativeSrc": "4813:43:9", + "nodeType": "YulFunctionCall", + "src": "4813:43:9" + }, + "nativeSrc": "4813:43:9", + "nodeType": "YulExpressionStatement", + "src": "4813:43:9" + }, + { + "nativeSrc": "4877:17:9", + "nodeType": "YulAssignment", + "src": "4877:17:9", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "4886:1:9", + "nodeType": "YulIdentifier", + "src": "4886:1:9" + }, + { + "kind": "number", + "nativeSrc": "4889:4:9", + "nodeType": "YulLiteral", + "src": "4889:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4882:3:9", + "nodeType": "YulIdentifier", + "src": "4882:3:9" + }, + "nativeSrc": "4882:12:9", + "nodeType": "YulFunctionCall", + "src": "4882:12:9" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "4877:1:9", + "nodeType": "YulIdentifier", + "src": "4877:1:9" + } + ] + }, + { + "body": { + "nativeSrc": "4935:9:9", + "nodeType": "YulBlock", + "src": "4935:9:9", + "statements": [ + { + "nativeSrc": "4937:5:9", + "nodeType": "YulBreak", + "src": "4937:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "4928:1:9", + "nodeType": "YulIdentifier", + "src": "4928:1:9" + }, + { + "name": "n", + "nativeSrc": "4931:1:9", + "nodeType": "YulIdentifier", + "src": "4931:1:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "4925:2:9", + "nodeType": "YulIdentifier", + "src": "4925:2:9" + }, + "nativeSrc": "4925:8:9", + "nodeType": "YulFunctionCall", + "src": "4925:8:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "4918:6:9", + "nodeType": "YulIdentifier", + "src": "4918:6:9" + }, + "nativeSrc": "4918:16:9", + "nodeType": "YulFunctionCall", + "src": "4918:16:9" + }, + "nativeSrc": "4915:29:9", + "nodeType": "YulIf", + "src": "4915:29:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "4786:1:9", + "nodeType": "YulLiteral", + "src": "4786:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "4747:215:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "4788:2:9", + "nodeType": "YulBlock", + "src": "4788:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "4751:34:9", + "nodeType": "YulBlock", + "src": "4751:34:9", + "statements": [ + { + "nativeSrc": "4753:30:9", + "nodeType": "YulVariableDeclaration", + "src": "4753:30:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4772:4:9", + "nodeType": "YulLiteral", + "src": "4772:4:9", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "4778:4:9", + "nodeType": "YulLiteral", + "src": "4778:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "4762:9:9", + "nodeType": "YulIdentifier", + "src": "4762:9:9" + }, + "nativeSrc": "4762:21:9", + "nodeType": "YulFunctionCall", + "src": "4762:21:9" + }, + "variables": [ + { + "name": "p", + "nativeSrc": "4757:1:9", + "nodeType": "YulTypedName", + "src": "4757:1:9", + "type": "" + } + ] + } + ] + }, + "src": "4747:215:9" + }, + { + "nativeSrc": "4979:5:9", + "nodeType": "YulBreak", + "src": "4979:5:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "4450:1:9", + "nodeType": "YulLiteral", + "src": "4450:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "4431:567:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "4452:2:9", + "nodeType": "YulBlock", + "src": "4452:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "4435:14:9", + "nodeType": "YulBlock", + "src": "4435:14:9", + "statements": [ + { + "nativeSrc": "4437:10:9", + "nodeType": "YulVariableDeclaration", + "src": "4437:10:9", + "value": { + "kind": "number", + "nativeSrc": "4446:1:9", + "nodeType": "YulLiteral", + "src": "4446:1:9", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "4441:1:9", + "nodeType": "YulTypedName", + "src": "4441:1:9", + "type": "" + } + ] + } + ] + }, + "src": "4431:567:9" + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "5018:6:9", + "nodeType": "YulIdentifier", + "src": "5018:6:9" + }, + { + "name": "n", + "nativeSrc": "5026:1:9", + "nodeType": "YulIdentifier", + "src": "5026:1:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5011:6:9", + "nodeType": "YulIdentifier", + "src": "5011:6:9" + }, + "nativeSrc": "5011:17:9", + "nodeType": "YulFunctionCall", + "src": "5011:17:9" + }, + "nativeSrc": "5011:17:9", + "nodeType": "YulExpressionStatement", + "src": "5011:17:9" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "5087:1:9", + "nodeType": "YulIdentifier", + "src": "5087:1:9" + }, + { + "name": "n", + "nativeSrc": "5090:1:9", + "nodeType": "YulIdentifier", + "src": "5090:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5083:3:9", + "nodeType": "YulIdentifier", + "src": "5083:3:9" + }, + "nativeSrc": "5083:9:9", + "nodeType": "YulFunctionCall", + "src": "5083:9:9" + }, + { + "kind": "number", + "nativeSrc": "5094:1:9", + "nodeType": "YulLiteral", + "src": "5094:1:9", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5076:6:9", + "nodeType": "YulIdentifier", + "src": "5076:6:9" + }, + "nativeSrc": "5076:20:9", + "nodeType": "YulFunctionCall", + "src": "5076:20:9" + }, + "nativeSrc": "5076:20:9", + "nodeType": "YulExpressionStatement", + "src": "5076:20:9" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5153:4:9", + "nodeType": "YulLiteral", + "src": "5153:4:9", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "5167:1:9", + "nodeType": "YulIdentifier", + "src": "5167:1:9" + }, + { + "name": "n", + "nativeSrc": "5170:1:9", + "nodeType": "YulIdentifier", + "src": "5170:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5163:3:9", + "nodeType": "YulIdentifier", + "src": "5163:3:9" + }, + "nativeSrc": "5163:9:9", + "nodeType": "YulFunctionCall", + "src": "5163:9:9" + }, + { + "kind": "number", + "nativeSrc": "5174:4:9", + "nodeType": "YulLiteral", + "src": "5174:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5159:3:9", + "nodeType": "YulIdentifier", + "src": "5159:3:9" + }, + "nativeSrc": "5159:20:9", + "nodeType": "YulFunctionCall", + "src": "5159:20:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5146:6:9", + "nodeType": "YulIdentifier", + "src": "5146:6:9" + }, + "nativeSrc": "5146:34:9", + "nodeType": "YulFunctionCall", + "src": "5146:34:9" + }, + "nativeSrc": "5146:34:9", + "nodeType": "YulExpressionStatement", + "src": "5146:34:9" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2678, + "isOffset": false, + "isSlot": true, + "src": "4375:6:9", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 2678, + "isOffset": false, + "isSlot": true, + "src": "4723:6:9", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 2681, + "isOffset": false, + "isSlot": false, + "src": "4282:6:9", + "valueSize": 1 + }, + { + "declaration": 2681, + "isOffset": false, + "isSlot": false, + "src": "4329:6:9", + "valueSize": 1 + }, + { + "declaration": 2681, + "isOffset": false, + "isSlot": false, + "src": "5018:6:9", + "valueSize": 1 + } + ], + "id": 2683, + "nodeType": "InlineAssembly", + "src": "4259:951:9" + } + ] + }, + "documentation": { + "id": 2675, + "nodeType": "StructuredDocumentation", + "src": "4079:41:9", + "text": "@dev Returns the value stored in `$`." + }, + "id": 2685, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "get", + "nameLocation": "4134:3:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2679, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2678, + "mutability": "mutable", + "name": "$", + "nameLocation": "4159:1:9", + "nodeType": "VariableDeclaration", + "scope": 2685, + "src": "4138:22:9", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage" + }, + "typeName": { + "id": 2677, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2676, + "name": "BytesStorage", + "nameLocations": [ + "4138:12:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2590, + "src": "4138:12:9" + }, + "referencedDeclaration": 2590, + "src": "4138:12:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage" + } + }, + "visibility": "internal" + } + ], + "src": "4137:24:9" + }, + "returnParameters": { + "id": 2682, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2681, + "mutability": "mutable", + "name": "result", + "nameLocation": "4198:6:9", + "nodeType": "VariableDeclaration", + "scope": 2685, + "src": "4185:19:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2680, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4185:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4184:21:9" + }, + "scope": 3089, + "src": "4125:1091:9", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2697, + "nodeType": "Block", + "src": "5385:894:9", + "statements": [ + { + "AST": { + "nativeSrc": "5447:826:9", + "nodeType": "YulBlock", + "src": "5447:826:9", + "statements": [ + { + "body": { + "nativeSrc": "5502:761:9", + "nodeType": "YulBlock", + "src": "5502:761:9", + "statements": [ + { + "body": { + "nativeSrc": "5560:462:9", + "nodeType": "YulBlock", + "src": "5560:462:9", + "statements": [ + { + "body": { + "nativeSrc": "5605:103:9", + "nodeType": "YulBlock", + "src": "5605:103:9", + "statements": [ + { + "nativeSrc": "5631:25:9", + "nodeType": "YulAssignment", + "src": "5631:25:9", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "5646:1:9", + "nodeType": "YulIdentifier", + "src": "5646:1:9" + }, + { + "name": "packed", + "nativeSrc": "5649:6:9", + "nodeType": "YulIdentifier", + "src": "5649:6:9" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "5641:4:9", + "nodeType": "YulIdentifier", + "src": "5641:4:9" + }, + "nativeSrc": "5641:15:9", + "nodeType": "YulFunctionCall", + "src": "5641:15:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "5631:6:9", + "nodeType": "YulIdentifier", + "src": "5631:6:9" + } + ] + }, + { + "nativeSrc": "5681:5:9", + "nodeType": "YulBreak", + "src": "5681:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "5595:1:9", + "nodeType": "YulIdentifier", + "src": "5595:1:9" + }, + { + "kind": "number", + "nativeSrc": "5598:4:9", + "nodeType": "YulLiteral", + "src": "5598:4:9", + "type": "", + "value": "0x1e" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "5592:2:9", + "nodeType": "YulIdentifier", + "src": "5592:2:9" + }, + "nativeSrc": "5592:11:9", + "nodeType": "YulFunctionCall", + "src": "5592:11:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "5585:6:9", + "nodeType": "YulIdentifier", + "src": "5585:6:9" + }, + "nativeSrc": "5585:19:9", + "nodeType": "YulFunctionCall", + "src": "5585:19:9" + }, + "nativeSrc": "5582:126:9", + "nodeType": "YulIf", + "src": "5582:126:9" + }, + { + "body": { + "nativeSrc": "5765:213:9", + "nodeType": "YulBlock", + "src": "5765:213:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5798:4:9", + "nodeType": "YulLiteral", + "src": "5798:4:9", + "type": "", + "value": "0x00" + }, + { + "name": "$.slot", + "nativeSrc": "5804:6:9", + "nodeType": "YulIdentifier", + "src": "5804:6:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5791:6:9", + "nodeType": "YulIdentifier", + "src": "5791:6:9" + }, + "nativeSrc": "5791:20:9", + "nodeType": "YulFunctionCall", + "src": "5791:20:9" + }, + "nativeSrc": "5791:20:9", + "nodeType": "YulExpressionStatement", + "src": "5791:20:9" + }, + { + "nativeSrc": "5836:21:9", + "nodeType": "YulVariableDeclaration", + "src": "5836:21:9", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "5849:1:9", + "nodeType": "YulIdentifier", + "src": "5849:1:9" + }, + { + "kind": "number", + "nativeSrc": "5852:4:9", + "nodeType": "YulLiteral", + "src": "5852:4:9", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "5845:3:9", + "nodeType": "YulIdentifier", + "src": "5845:3:9" + }, + "nativeSrc": "5845:12:9", + "nodeType": "YulFunctionCall", + "src": "5845:12:9" + }, + "variables": [ + { + "name": "j", + "nativeSrc": "5840:1:9", + "nodeType": "YulTypedName", + "src": "5840:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "5882:74:9", + "nodeType": "YulAssignment", + "src": "5882:74:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "j", + "nativeSrc": "5901:1:9", + "nodeType": "YulIdentifier", + "src": "5901:1:9" + }, + { + "kind": "number", + "nativeSrc": "5904:4:9", + "nodeType": "YulLiteral", + "src": "5904:4:9", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "5897:3:9", + "nodeType": "YulIdentifier", + "src": "5897:3:9" + }, + "nativeSrc": "5897:12:9", + "nodeType": "YulFunctionCall", + "src": "5897:12:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5931:4:9", + "nodeType": "YulLiteral", + "src": "5931:4:9", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "5937:4:9", + "nodeType": "YulLiteral", + "src": "5937:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "5921:9:9", + "nodeType": "YulIdentifier", + "src": "5921:9:9" + }, + "nativeSrc": "5921:21:9", + "nodeType": "YulFunctionCall", + "src": "5921:21:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5948:1:9", + "nodeType": "YulLiteral", + "src": "5948:1:9", + "type": "", + "value": "5" + }, + { + "name": "j", + "nativeSrc": "5951:1:9", + "nodeType": "YulIdentifier", + "src": "5951:1:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "5944:3:9", + "nodeType": "YulIdentifier", + "src": "5944:3:9" + }, + "nativeSrc": "5944:9:9", + "nodeType": "YulFunctionCall", + "src": "5944:9:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5917:3:9", + "nodeType": "YulIdentifier", + "src": "5917:3:9" + }, + "nativeSrc": "5917:37:9", + "nodeType": "YulFunctionCall", + "src": "5917:37:9" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "5911:5:9", + "nodeType": "YulIdentifier", + "src": "5911:5:9" + }, + "nativeSrc": "5911:44:9", + "nodeType": "YulFunctionCall", + "src": "5911:44:9" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "5892:4:9", + "nodeType": "YulIdentifier", + "src": "5892:4:9" + }, + "nativeSrc": "5892:64:9", + "nodeType": "YulFunctionCall", + "src": "5892:64:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "5882:6:9", + "nodeType": "YulIdentifier", + "src": "5882:6:9" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "5742:1:9", + "nodeType": "YulIdentifier", + "src": "5742:1:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5749:4:9", + "nodeType": "YulLiteral", + "src": "5749:4:9", + "type": "", + "value": "0xff" + }, + { + "name": "packed", + "nativeSrc": "5755:6:9", + "nodeType": "YulIdentifier", + "src": "5755:6:9" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "5745:3:9", + "nodeType": "YulIdentifier", + "src": "5745:3:9" + }, + "nativeSrc": "5745:17:9", + "nodeType": "YulFunctionCall", + "src": "5745:17:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "5739:2:9", + "nodeType": "YulIdentifier", + "src": "5739:2:9" + }, + "nativeSrc": "5739:24:9", + "nodeType": "YulFunctionCall", + "src": "5739:24:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "5732:6:9", + "nodeType": "YulIdentifier", + "src": "5732:6:9" + }, + "nativeSrc": "5732:32:9", + "nodeType": "YulFunctionCall", + "src": "5732:32:9" + }, + "nativeSrc": "5729:249:9", + "nodeType": "YulIf", + "src": "5729:249:9" + }, + { + "nativeSrc": "5999:5:9", + "nodeType": "YulBreak", + "src": "5999:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "packed", + "nativeSrc": "5536:6:9", + "nodeType": "YulIdentifier", + "src": "5536:6:9" + }, + { + "kind": "number", + "nativeSrc": "5544:4:9", + "nodeType": "YulLiteral", + "src": "5544:4:9", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "5533:2:9", + "nodeType": "YulIdentifier", + "src": "5533:2:9" + }, + "nativeSrc": "5533:16:9", + "nodeType": "YulFunctionCall", + "src": "5533:16:9" + }, + { + "name": "packed", + "nativeSrc": "5551:6:9", + "nodeType": "YulIdentifier", + "src": "5551:6:9" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "5530:2:9", + "nodeType": "YulIdentifier", + "src": "5530:2:9" + }, + "nativeSrc": "5530:28:9", + "nodeType": "YulFunctionCall", + "src": "5530:28:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "5523:6:9", + "nodeType": "YulIdentifier", + "src": "5523:6:9" + }, + "nativeSrc": "5523:36:9", + "nodeType": "YulFunctionCall", + "src": "5523:36:9" + }, + "nativeSrc": "5520:502:9", + "nodeType": "YulIf", + "src": "5520:502:9" + }, + { + "body": { + "nativeSrc": "6072:155:9", + "nodeType": "YulBlock", + "src": "6072:155:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6101:4:9", + "nodeType": "YulLiteral", + "src": "6101:4:9", + "type": "", + "value": "0x00" + }, + { + "name": "$.slot", + "nativeSrc": "6107:6:9", + "nodeType": "YulIdentifier", + "src": "6107:6:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6094:6:9", + "nodeType": "YulIdentifier", + "src": "6094:6:9" + }, + "nativeSrc": "6094:20:9", + "nodeType": "YulFunctionCall", + "src": "6094:20:9" + }, + "nativeSrc": "6094:20:9", + "nodeType": "YulExpressionStatement", + "src": "6094:20:9" + }, + { + "nativeSrc": "6135:74:9", + "nodeType": "YulAssignment", + "src": "6135:74:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "6154:1:9", + "nodeType": "YulIdentifier", + "src": "6154:1:9" + }, + { + "kind": "number", + "nativeSrc": "6157:4:9", + "nodeType": "YulLiteral", + "src": "6157:4:9", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "6150:3:9", + "nodeType": "YulIdentifier", + "src": "6150:3:9" + }, + "nativeSrc": "6150:12:9", + "nodeType": "YulFunctionCall", + "src": "6150:12:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6184:4:9", + "nodeType": "YulLiteral", + "src": "6184:4:9", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "6190:4:9", + "nodeType": "YulLiteral", + "src": "6190:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "6174:9:9", + "nodeType": "YulIdentifier", + "src": "6174:9:9" + }, + "nativeSrc": "6174:21:9", + "nodeType": "YulFunctionCall", + "src": "6174:21:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6201:1:9", + "nodeType": "YulLiteral", + "src": "6201:1:9", + "type": "", + "value": "5" + }, + { + "name": "i", + "nativeSrc": "6204:1:9", + "nodeType": "YulIdentifier", + "src": "6204:1:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "6197:3:9", + "nodeType": "YulIdentifier", + "src": "6197:3:9" + }, + "nativeSrc": "6197:9:9", + "nodeType": "YulFunctionCall", + "src": "6197:9:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6170:3:9", + "nodeType": "YulIdentifier", + "src": "6170:3:9" + }, + "nativeSrc": "6170:37:9", + "nodeType": "YulFunctionCall", + "src": "6170:37:9" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "6164:5:9", + "nodeType": "YulIdentifier", + "src": "6164:5:9" + }, + "nativeSrc": "6164:44:9", + "nodeType": "YulFunctionCall", + "src": "6164:44:9" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "6145:4:9", + "nodeType": "YulIdentifier", + "src": "6145:4:9" + }, + "nativeSrc": "6145:64:9", + "nodeType": "YulFunctionCall", + "src": "6145:64:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "6135:6:9", + "nodeType": "YulIdentifier", + "src": "6135:6:9" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "6052:1:9", + "nodeType": "YulIdentifier", + "src": "6052:1:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6059:1:9", + "nodeType": "YulLiteral", + "src": "6059:1:9", + "type": "", + "value": "8" + }, + { + "name": "packed", + "nativeSrc": "6062:6:9", + "nodeType": "YulIdentifier", + "src": "6062:6:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "6055:3:9", + "nodeType": "YulIdentifier", + "src": "6055:3:9" + }, + "nativeSrc": "6055:14:9", + "nodeType": "YulFunctionCall", + "src": "6055:14:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "6049:2:9", + "nodeType": "YulIdentifier", + "src": "6049:2:9" + }, + "nativeSrc": "6049:21:9", + "nodeType": "YulFunctionCall", + "src": "6049:21:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "6042:6:9", + "nodeType": "YulIdentifier", + "src": "6042:6:9" + }, + "nativeSrc": "6042:29:9", + "nodeType": "YulFunctionCall", + "src": "6042:29:9" + }, + "nativeSrc": "6039:188:9", + "nodeType": "YulIf", + "src": "6039:188:9" + }, + { + "nativeSrc": "6244:5:9", + "nodeType": "YulBreak", + "src": "6244:5:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "5497:1:9", + "nodeType": "YulLiteral", + "src": "5497:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "5461:802:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "5499:2:9", + "nodeType": "YulBlock", + "src": "5499:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "5465:31:9", + "nodeType": "YulBlock", + "src": "5465:31:9", + "statements": [ + { + "nativeSrc": "5467:27:9", + "nodeType": "YulVariableDeclaration", + "src": "5467:27:9", + "value": { + "arguments": [ + { + "name": "$.slot", + "nativeSrc": "5487:6:9", + "nodeType": "YulIdentifier", + "src": "5487:6:9" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "5481:5:9", + "nodeType": "YulIdentifier", + "src": "5481:5:9" + }, + "nativeSrc": "5481:13:9", + "nodeType": "YulFunctionCall", + "src": "5481:13:9" + }, + "variables": [ + { + "name": "packed", + "nativeSrc": "5471:6:9", + "nodeType": "YulTypedName", + "src": "5471:6:9", + "type": "" + } + ] + } + ] + }, + "src": "5461:802:9" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2689, + "isOffset": false, + "isSlot": true, + "src": "5487:6:9", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 2689, + "isOffset": false, + "isSlot": true, + "src": "5804:6:9", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 2689, + "isOffset": false, + "isSlot": true, + "src": "6107:6:9", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 2691, + "isOffset": false, + "isSlot": false, + "src": "5595:1:9", + "valueSize": 1 + }, + { + "declaration": 2691, + "isOffset": false, + "isSlot": false, + "src": "5646:1:9", + "valueSize": 1 + }, + { + "declaration": 2691, + "isOffset": false, + "isSlot": false, + "src": "5742:1:9", + "valueSize": 1 + }, + { + "declaration": 2691, + "isOffset": false, + "isSlot": false, + "src": "5849:1:9", + "valueSize": 1 + }, + { + "declaration": 2691, + "isOffset": false, + "isSlot": false, + "src": "6052:1:9", + "valueSize": 1 + }, + { + "declaration": 2691, + "isOffset": false, + "isSlot": false, + "src": "6154:1:9", + "valueSize": 1 + }, + { + "declaration": 2691, + "isOffset": false, + "isSlot": false, + "src": "6204:1:9", + "valueSize": 1 + }, + { + "declaration": 2694, + "isOffset": false, + "isSlot": false, + "src": "5631:6:9", + "valueSize": 1 + }, + { + "declaration": 2694, + "isOffset": false, + "isSlot": false, + "src": "5882:6:9", + "valueSize": 1 + }, + { + "declaration": 2694, + "isOffset": false, + "isSlot": false, + "src": "6135:6:9", + "valueSize": 1 + } + ], + "id": 2696, + "nodeType": "InlineAssembly", + "src": "5438:835:9" + } + ] + }, + "documentation": { + "id": 2686, + "nodeType": "StructuredDocumentation", + "src": "5222:69:9", + "text": "@dev Returns the uint8 at index `i`. If out-of-bounds, returns 0." + }, + "id": 2698, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "uint8At", + "nameLocation": "5305:7:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2692, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2689, + "mutability": "mutable", + "name": "$", + "nameLocation": "5334:1:9", + "nodeType": "VariableDeclaration", + "scope": 2698, + "src": "5313:22:9", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage" + }, + "typeName": { + "id": 2688, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2687, + "name": "BytesStorage", + "nameLocations": [ + "5313:12:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2590, + "src": "5313:12:9" + }, + "referencedDeclaration": 2590, + "src": "5313:12:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2691, + "mutability": "mutable", + "name": "i", + "nameLocation": "5345:1:9", + "nodeType": "VariableDeclaration", + "scope": 2698, + "src": "5337:9:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2690, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5337:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5312:35:9" + }, + "returnParameters": { + "id": 2695, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2694, + "mutability": "mutable", + "name": "result", + "nameLocation": "5377:6:9", + "nodeType": "VariableDeclaration", + "scope": 2698, + "src": "5371:12:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2693, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "5371:5:9", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "5370:14:9" + }, + "scope": 3089, + "src": "5296:983:9", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2711, + "nodeType": "Block", + "src": "6814:2667:9", + "statements": [ + { + "AST": { + "nativeSrc": "6876:2599:9", + "nodeType": "YulBlock", + "src": "6876:2599:9", + "statements": [ + { + "nativeSrc": "6890:21:9", + "nodeType": "YulAssignment", + "src": "6890:21:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6906:4:9", + "nodeType": "YulLiteral", + "src": "6906:4:9", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "6900:5:9", + "nodeType": "YulIdentifier", + "src": "6900:5:9" + }, + "nativeSrc": "6900:11:9", + "nodeType": "YulFunctionCall", + "src": "6900:11:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "6890:6:9", + "nodeType": "YulIdentifier", + "src": "6890:6:9" + } + ] + }, + { + "nativeSrc": "6924:30:9", + "nodeType": "YulVariableDeclaration", + "src": "6924:30:9", + "value": { + "arguments": [ + { + "name": "needle", + "nativeSrc": "6947:6:9", + "nodeType": "YulIdentifier", + "src": "6947:6:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "6941:5:9", + "nodeType": "YulIdentifier", + "src": "6941:5:9" + }, + "nativeSrc": "6941:13:9", + "nodeType": "YulFunctionCall", + "src": "6941:13:9" + }, + "variables": [ + { + "name": "needleLen", + "nativeSrc": "6928:9:9", + "nodeType": "YulTypedName", + "src": "6928:9:9", + "type": "" + } + ] + }, + { + "nativeSrc": "6967:40:9", + "nodeType": "YulVariableDeclaration", + "src": "6967:40:9", + "value": { + "arguments": [ + { + "name": "replacement", + "nativeSrc": "6995:11:9", + "nodeType": "YulIdentifier", + "src": "6995:11:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "6989:5:9", + "nodeType": "YulIdentifier", + "src": "6989:5:9" + }, + "nativeSrc": "6989:18:9", + "nodeType": "YulFunctionCall", + "src": "6989:18:9" + }, + "variables": [ + { + "name": "replacementLen", + "nativeSrc": "6971:14:9", + "nodeType": "YulTypedName", + "src": "6971:14:9", + "type": "" + } + ] + }, + { + "nativeSrc": "7020:29:9", + "nodeType": "YulVariableDeclaration", + "src": "7020:29:9", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "7033:6:9", + "nodeType": "YulIdentifier", + "src": "7033:6:9" + }, + { + "name": "subject", + "nativeSrc": "7041:7:9", + "nodeType": "YulIdentifier", + "src": "7041:7:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "7029:3:9", + "nodeType": "YulIdentifier", + "src": "7029:3:9" + }, + "nativeSrc": "7029:20:9", + "nodeType": "YulFunctionCall", + "src": "7029:20:9" + }, + "variables": [ + { + "name": "d", + "nativeSrc": "7024:1:9", + "nodeType": "YulTypedName", + "src": "7024:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "7084:27:9", + "nodeType": "YulVariableDeclaration", + "src": "7084:27:9", + "value": { + "arguments": [ + { + "name": "subject", + "nativeSrc": "7097:7:9", + "nodeType": "YulIdentifier", + "src": "7097:7:9" + }, + { + "kind": "number", + "nativeSrc": "7106:4:9", + "nodeType": "YulLiteral", + "src": "7106:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7093:3:9", + "nodeType": "YulIdentifier", + "src": "7093:3:9" + }, + "nativeSrc": "7093:18:9", + "nodeType": "YulFunctionCall", + "src": "7093:18:9" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "7088:1:9", + "nodeType": "YulTypedName", + "src": "7088:1:9", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7157:4:9", + "nodeType": "YulLiteral", + "src": "7157:4:9", + "type": "", + "value": "0x00" + }, + { + "arguments": [ + { + "name": "i", + "nativeSrc": "7167:1:9", + "nodeType": "YulIdentifier", + "src": "7167:1:9" + }, + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "7176:7:9", + "nodeType": "YulIdentifier", + "src": "7176:7:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "7170:5:9", + "nodeType": "YulIdentifier", + "src": "7170:5:9" + }, + "nativeSrc": "7170:14:9", + "nodeType": "YulFunctionCall", + "src": "7170:14:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7163:3:9", + "nodeType": "YulIdentifier", + "src": "7163:3:9" + }, + "nativeSrc": "7163:22:9", + "nodeType": "YulFunctionCall", + "src": "7163:22:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7150:6:9", + "nodeType": "YulIdentifier", + "src": "7150:6:9" + }, + "nativeSrc": "7150:36:9", + "nodeType": "YulFunctionCall", + "src": "7150:36:9" + }, + "nativeSrc": "7150:36:9", + "nodeType": "YulExpressionStatement", + "src": "7150:36:9" + }, + { + "body": { + "nativeSrc": "7259:1765:9", + "nodeType": "YulBlock", + "src": "7259:1765:9", + "statements": [ + { + "nativeSrc": "7277:59:9", + "nodeType": "YulVariableDeclaration", + "src": "7277:59:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7315:4:9", + "nodeType": "YulLiteral", + "src": "7315:4:9", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "7309:5:9", + "nodeType": "YulIdentifier", + "src": "7309:5:9" + }, + "nativeSrc": "7309:11:9", + "nodeType": "YulFunctionCall", + "src": "7309:11:9" + }, + { + "name": "needleLen", + "nativeSrc": "7322:9:9", + "nodeType": "YulIdentifier", + "src": "7322:9:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "7305:3:9", + "nodeType": "YulIdentifier", + "src": "7305:3:9" + }, + "nativeSrc": "7305:27:9", + "nodeType": "YulFunctionCall", + "src": "7305:27:9" + }, + { + "kind": "number", + "nativeSrc": "7334:1:9", + "nodeType": "YulLiteral", + "src": "7334:1:9", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7301:3:9", + "nodeType": "YulIdentifier", + "src": "7301:3:9" + }, + "nativeSrc": "7301:35:9", + "nodeType": "YulFunctionCall", + "src": "7301:35:9" + }, + "variables": [ + { + "name": "subjectSearchEnd", + "nativeSrc": "7281:16:9", + "nodeType": "YulTypedName", + "src": "7281:16:9", + "type": "" + } + ] + }, + { + "nativeSrc": "7353:10:9", + "nodeType": "YulVariableDeclaration", + "src": "7353:10:9", + "value": { + "kind": "number", + "nativeSrc": "7362:1:9", + "nodeType": "YulLiteral", + "src": "7362:1:9", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "h", + "nativeSrc": "7357:1:9", + "nodeType": "YulTypedName", + "src": "7357:1:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "7436:48:9", + "nodeType": "YulBlock", + "src": "7436:48:9", + "statements": [ + { + "nativeSrc": "7438:44:9", + "nodeType": "YulAssignment", + "src": "7438:44:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "needle", + "nativeSrc": "7457:6:9", + "nodeType": "YulIdentifier", + "src": "7457:6:9" + }, + { + "kind": "number", + "nativeSrc": "7465:4:9", + "nodeType": "YulLiteral", + "src": "7465:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7453:3:9", + "nodeType": "YulIdentifier", + "src": "7453:3:9" + }, + "nativeSrc": "7453:17:9", + "nodeType": "YulFunctionCall", + "src": "7453:17:9" + }, + { + "name": "needleLen", + "nativeSrc": "7472:9:9", + "nodeType": "YulIdentifier", + "src": "7472:9:9" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "7443:9:9", + "nodeType": "YulIdentifier", + "src": "7443:9:9" + }, + "nativeSrc": "7443:39:9", + "nodeType": "YulFunctionCall", + "src": "7443:39:9" + }, + "variableNames": [ + { + "name": "h", + "nativeSrc": "7438:1:9", + "nodeType": "YulIdentifier", + "src": "7438:1:9" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "needleLen", + "nativeSrc": "7418:9:9", + "nodeType": "YulIdentifier", + "src": "7418:9:9" + }, + { + "kind": "number", + "nativeSrc": "7429:4:9", + "nodeType": "YulLiteral", + "src": "7429:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "7415:2:9", + "nodeType": "YulIdentifier", + "src": "7415:2:9" + }, + "nativeSrc": "7415:19:9", + "nodeType": "YulFunctionCall", + "src": "7415:19:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "7408:6:9", + "nodeType": "YulIdentifier", + "src": "7408:6:9" + }, + "nativeSrc": "7408:27:9", + "nodeType": "YulFunctionCall", + "src": "7408:27:9" + }, + "nativeSrc": "7405:79:9", + "nodeType": "YulIf", + "src": "7405:79:9" + }, + { + "nativeSrc": "7501:33:9", + "nodeType": "YulVariableDeclaration", + "src": "7501:33:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "needle", + "nativeSrc": "7520:6:9", + "nodeType": "YulIdentifier", + "src": "7520:6:9" + }, + { + "kind": "number", + "nativeSrc": "7528:4:9", + "nodeType": "YulLiteral", + "src": "7528:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7516:3:9", + "nodeType": "YulIdentifier", + "src": "7516:3:9" + }, + "nativeSrc": "7516:17:9", + "nodeType": "YulFunctionCall", + "src": "7516:17:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "7510:5:9", + "nodeType": "YulIdentifier", + "src": "7510:5:9" + }, + "nativeSrc": "7510:24:9", + "nodeType": "YulFunctionCall", + "src": "7510:24:9" + }, + "variables": [ + { + "name": "s", + "nativeSrc": "7505:1:9", + "nodeType": "YulTypedName", + "src": "7505:1:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "7613:1397:9", + "nodeType": "YulBlock", + "src": "7613:1397:9", + "statements": [ + { + "nativeSrc": "7635:17:9", + "nodeType": "YulVariableDeclaration", + "src": "7635:17:9", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "7650:1:9", + "nodeType": "YulIdentifier", + "src": "7650:1:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "7644:5:9", + "nodeType": "YulIdentifier", + "src": "7644:5:9" + }, + "nativeSrc": "7644:8:9", + "nodeType": "YulFunctionCall", + "src": "7644:8:9" + }, + "variables": [ + { + "name": "t", + "nativeSrc": "7639:1:9", + "nodeType": "YulTypedName", + "src": "7639:1:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "7801:1050:9", + "nodeType": "YulBlock", + "src": "7801:1050:9", + "statements": [ + { + "body": { + "nativeSrc": "7832:347:9", + "nodeType": "YulBlock", + "src": "7832:347:9", + "statements": [ + { + "body": { + "nativeSrc": "7904:249:9", + "nodeType": "YulBlock", + "src": "7904:249:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "7949:1:9", + "nodeType": "YulIdentifier", + "src": "7949:1:9" + }, + { + "name": "d", + "nativeSrc": "7952:1:9", + "nodeType": "YulIdentifier", + "src": "7952:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7945:3:9", + "nodeType": "YulIdentifier", + "src": "7945:3:9" + }, + "nativeSrc": "7945:9:9", + "nodeType": "YulFunctionCall", + "src": "7945:9:9" + }, + { + "name": "t", + "nativeSrc": "7956:1:9", + "nodeType": "YulIdentifier", + "src": "7956:1:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7938:6:9", + "nodeType": "YulIdentifier", + "src": "7938:6:9" + }, + "nativeSrc": "7938:20:9", + "nodeType": "YulFunctionCall", + "src": "7938:20:9" + }, + "nativeSrc": "7938:20:9", + "nodeType": "YulExpressionStatement", + "src": "7938:20:9" + }, + { + "nativeSrc": "7991:14:9", + "nodeType": "YulAssignment", + "src": "7991:14:9", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "8000:1:9", + "nodeType": "YulIdentifier", + "src": "8000:1:9" + }, + { + "kind": "number", + "nativeSrc": "8003:1:9", + "nodeType": "YulLiteral", + "src": "8003:1:9", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7996:3:9", + "nodeType": "YulIdentifier", + "src": "7996:3:9" + }, + "nativeSrc": "7996:9:9", + "nodeType": "YulFunctionCall", + "src": "7996:9:9" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "7991:1:9", + "nodeType": "YulIdentifier", + "src": "7991:1:9" + } + ] + }, + { + "body": { + "nativeSrc": "8073:9:9", + "nodeType": "YulBlock", + "src": "8073:9:9", + "statements": [ + { + "nativeSrc": "8075:5:9", + "nodeType": "YulBreak", + "src": "8075:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "8051:1:9", + "nodeType": "YulIdentifier", + "src": "8051:1:9" + }, + { + "name": "subjectSearchEnd", + "nativeSrc": "8054:16:9", + "nodeType": "YulIdentifier", + "src": "8054:16:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "8048:2:9", + "nodeType": "YulIdentifier", + "src": "8048:2:9" + }, + "nativeSrc": "8048:23:9", + "nodeType": "YulFunctionCall", + "src": "8048:23:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "8041:6:9", + "nodeType": "YulIdentifier", + "src": "8041:6:9" + }, + "nativeSrc": "8041:31:9", + "nodeType": "YulFunctionCall", + "src": "8041:31:9" + }, + "nativeSrc": "8038:44:9", + "nodeType": "YulIf", + "src": "8038:44:9" + }, + { + "nativeSrc": "8115:8:9", + "nodeType": "YulContinue", + "src": "8115:8:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "7885:1:9", + "nodeType": "YulIdentifier", + "src": "7885:1:9" + }, + { + "name": "needleLen", + "nativeSrc": "7888:9:9", + "nodeType": "YulIdentifier", + "src": "7888:9:9" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "7875:9:9", + "nodeType": "YulIdentifier", + "src": "7875:9:9" + }, + "nativeSrc": "7875:23:9", + "nodeType": "YulFunctionCall", + "src": "7875:23:9" + }, + { + "name": "h", + "nativeSrc": "7900:1:9", + "nodeType": "YulIdentifier", + "src": "7900:1:9" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "7872:2:9", + "nodeType": "YulIdentifier", + "src": "7872:2:9" + }, + "nativeSrc": "7872:30:9", + "nodeType": "YulFunctionCall", + "src": "7872:30:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "7865:6:9", + "nodeType": "YulIdentifier", + "src": "7865:6:9" + }, + "nativeSrc": "7865:38:9", + "nodeType": "YulFunctionCall", + "src": "7865:38:9" + }, + "nativeSrc": "7862:291:9", + "nodeType": "YulIf", + "src": "7862:291:9" + } + ] + }, + "condition": { + "name": "h", + "nativeSrc": "7830:1:9", + "nodeType": "YulIdentifier", + "src": "7830:1:9" + }, + "nativeSrc": "7827:352:9", + "nodeType": "YulIf", + "src": "7827:352:9" + }, + { + "body": { + "nativeSrc": "8298:237:9", + "nodeType": "YulBlock", + "src": "8298:237:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "8343:1:9", + "nodeType": "YulIdentifier", + "src": "8343:1:9" + }, + { + "name": "d", + "nativeSrc": "8346:1:9", + "nodeType": "YulIdentifier", + "src": "8346:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8339:3:9", + "nodeType": "YulIdentifier", + "src": "8339:3:9" + }, + "nativeSrc": "8339:9:9", + "nodeType": "YulFunctionCall", + "src": "8339:9:9" + }, + { + "name": "j", + "nativeSrc": "8350:1:9", + "nodeType": "YulIdentifier", + "src": "8350:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8335:3:9", + "nodeType": "YulIdentifier", + "src": "8335:3:9" + }, + "nativeSrc": "8335:17:9", + "nodeType": "YulFunctionCall", + "src": "8335:17:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "replacement", + "nativeSrc": "8368:11:9", + "nodeType": "YulIdentifier", + "src": "8368:11:9" + }, + { + "kind": "number", + "nativeSrc": "8381:4:9", + "nodeType": "YulLiteral", + "src": "8381:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8364:3:9", + "nodeType": "YulIdentifier", + "src": "8364:3:9" + }, + "nativeSrc": "8364:22:9", + "nodeType": "YulFunctionCall", + "src": "8364:22:9" + }, + { + "name": "j", + "nativeSrc": "8388:1:9", + "nodeType": "YulIdentifier", + "src": "8388:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8360:3:9", + "nodeType": "YulIdentifier", + "src": "8360:3:9" + }, + "nativeSrc": "8360:30:9", + "nodeType": "YulFunctionCall", + "src": "8360:30:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "8354:5:9", + "nodeType": "YulIdentifier", + "src": "8354:5:9" + }, + "nativeSrc": "8354:37:9", + "nodeType": "YulFunctionCall", + "src": "8354:37:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8328:6:9", + "nodeType": "YulIdentifier", + "src": "8328:6:9" + }, + "nativeSrc": "8328:64:9", + "nodeType": "YulFunctionCall", + "src": "8328:64:9" + }, + "nativeSrc": "8328:64:9", + "nodeType": "YulExpressionStatement", + "src": "8328:64:9" + }, + { + "nativeSrc": "8421:17:9", + "nodeType": "YulAssignment", + "src": "8421:17:9", + "value": { + "arguments": [ + { + "name": "j", + "nativeSrc": "8430:1:9", + "nodeType": "YulIdentifier", + "src": "8430:1:9" + }, + { + "kind": "number", + "nativeSrc": "8433:4:9", + "nodeType": "YulLiteral", + "src": "8433:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8426:3:9", + "nodeType": "YulIdentifier", + "src": "8426:3:9" + }, + "nativeSrc": "8426:12:9", + "nodeType": "YulFunctionCall", + "src": "8426:12:9" + }, + "variableNames": [ + { + "name": "j", + "nativeSrc": "8421:1:9", + "nodeType": "YulIdentifier", + "src": "8421:1:9" + } + ] + }, + { + "body": { + "nativeSrc": "8500:9:9", + "nodeType": "YulBlock", + "src": "8500:9:9", + "statements": [ + { + "nativeSrc": "8502:5:9", + "nodeType": "YulBreak", + "src": "8502:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "j", + "nativeSrc": "8480:1:9", + "nodeType": "YulIdentifier", + "src": "8480:1:9" + }, + { + "name": "replacementLen", + "nativeSrc": "8483:14:9", + "nodeType": "YulIdentifier", + "src": "8483:14:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "8477:2:9", + "nodeType": "YulIdentifier", + "src": "8477:2:9" + }, + "nativeSrc": "8477:21:9", + "nodeType": "YulFunctionCall", + "src": "8477:21:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "8470:6:9", + "nodeType": "YulIdentifier", + "src": "8470:6:9" + }, + "nativeSrc": "8470:29:9", + "nodeType": "YulFunctionCall", + "src": "8470:29:9" + }, + "nativeSrc": "8467:42:9", + "nodeType": "YulIf", + "src": "8467:42:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "8293:1:9", + "nodeType": "YulLiteral", + "src": "8293:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "8274:261:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "8295:2:9", + "nodeType": "YulBlock", + "src": "8295:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "8278:14:9", + "nodeType": "YulBlock", + "src": "8278:14:9", + "statements": [ + { + "nativeSrc": "8280:10:9", + "nodeType": "YulVariableDeclaration", + "src": "8280:10:9", + "value": { + "kind": "number", + "nativeSrc": "8289:1:9", + "nodeType": "YulLiteral", + "src": "8289:1:9", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "j", + "nativeSrc": "8284:1:9", + "nodeType": "YulTypedName", + "src": "8284:1:9", + "type": "" + } + ] + } + ] + }, + "src": "8274:261:9" + }, + { + "nativeSrc": "8560:43:9", + "nodeType": "YulAssignment", + "src": "8560:43:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "d", + "nativeSrc": "8573:1:9", + "nodeType": "YulIdentifier", + "src": "8573:1:9" + }, + { + "name": "replacementLen", + "nativeSrc": "8576:14:9", + "nodeType": "YulIdentifier", + "src": "8576:14:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8569:3:9", + "nodeType": "YulIdentifier", + "src": "8569:3:9" + }, + "nativeSrc": "8569:22:9", + "nodeType": "YulFunctionCall", + "src": "8569:22:9" + }, + { + "name": "needleLen", + "nativeSrc": "8593:9:9", + "nodeType": "YulIdentifier", + "src": "8593:9:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "8565:3:9", + "nodeType": "YulIdentifier", + "src": "8565:3:9" + }, + "nativeSrc": "8565:38:9", + "nodeType": "YulFunctionCall", + "src": "8565:38:9" + }, + "variableNames": [ + { + "name": "d", + "nativeSrc": "8560:1:9", + "nodeType": "YulIdentifier", + "src": "8560:1:9" + } + ] + }, + { + "body": { + "nativeSrc": "8641:188:9", + "nodeType": "YulBlock", + "src": "8641:188:9", + "statements": [ + { + "nativeSrc": "8671:22:9", + "nodeType": "YulAssignment", + "src": "8671:22:9", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "8680:1:9", + "nodeType": "YulIdentifier", + "src": "8680:1:9" + }, + { + "name": "needleLen", + "nativeSrc": "8683:9:9", + "nodeType": "YulIdentifier", + "src": "8683:9:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8676:3:9", + "nodeType": "YulIdentifier", + "src": "8676:3:9" + }, + "nativeSrc": "8676:17:9", + "nodeType": "YulFunctionCall", + "src": "8676:17:9" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "8671:1:9", + "nodeType": "YulIdentifier", + "src": "8671:1:9" + } + ] + }, + { + "body": { + "nativeSrc": "8757:9:9", + "nodeType": "YulBlock", + "src": "8757:9:9", + "statements": [ + { + "nativeSrc": "8759:5:9", + "nodeType": "YulBreak", + "src": "8759:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "8735:1:9", + "nodeType": "YulIdentifier", + "src": "8735:1:9" + }, + { + "name": "subjectSearchEnd", + "nativeSrc": "8738:16:9", + "nodeType": "YulIdentifier", + "src": "8738:16:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "8732:2:9", + "nodeType": "YulIdentifier", + "src": "8732:2:9" + }, + "nativeSrc": "8732:23:9", + "nodeType": "YulFunctionCall", + "src": "8732:23:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "8725:6:9", + "nodeType": "YulIdentifier", + "src": "8725:6:9" + }, + "nativeSrc": "8725:31:9", + "nodeType": "YulFunctionCall", + "src": "8725:31:9" + }, + "nativeSrc": "8722:44:9", + "nodeType": "YulIf", + "src": "8722:44:9" + }, + { + "nativeSrc": "8795:8:9", + "nodeType": "YulContinue", + "src": "8795:8:9" + } + ] + }, + "condition": { + "name": "needleLen", + "nativeSrc": "8631:9:9", + "nodeType": "YulIdentifier", + "src": "8631:9:9" + }, + "nativeSrc": "8628:201:9", + "nodeType": "YulIf", + "src": "8628:201:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "7786:1:9", + "nodeType": "YulIdentifier", + "src": "7786:1:9" + }, + { + "arguments": [ + { + "name": "t", + "nativeSrc": "7793:1:9", + "nodeType": "YulIdentifier", + "src": "7793:1:9" + }, + { + "name": "s", + "nativeSrc": "7796:1:9", + "nodeType": "YulIdentifier", + "src": "7796:1:9" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "7789:3:9", + "nodeType": "YulIdentifier", + "src": "7789:3:9" + }, + "nativeSrc": "7789:9:9", + "nodeType": "YulFunctionCall", + "src": "7789:9:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "7782:3:9", + "nodeType": "YulIdentifier", + "src": "7782:3:9" + }, + "nativeSrc": "7782:17:9", + "nodeType": "YulFunctionCall", + "src": "7782:17:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "7775:6:9", + "nodeType": "YulIdentifier", + "src": "7775:6:9" + }, + "nativeSrc": "7775:25:9", + "nodeType": "YulFunctionCall", + "src": "7775:25:9" + }, + "nativeSrc": "7772:1079:9", + "nodeType": "YulIf", + "src": "7772:1079:9" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "8883:1:9", + "nodeType": "YulIdentifier", + "src": "8883:1:9" + }, + { + "name": "d", + "nativeSrc": "8886:1:9", + "nodeType": "YulIdentifier", + "src": "8886:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8879:3:9", + "nodeType": "YulIdentifier", + "src": "8879:3:9" + }, + "nativeSrc": "8879:9:9", + "nodeType": "YulFunctionCall", + "src": "8879:9:9" + }, + { + "name": "t", + "nativeSrc": "8890:1:9", + "nodeType": "YulIdentifier", + "src": "8890:1:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8872:6:9", + "nodeType": "YulIdentifier", + "src": "8872:6:9" + }, + "nativeSrc": "8872:20:9", + "nodeType": "YulFunctionCall", + "src": "8872:20:9" + }, + "nativeSrc": "8872:20:9", + "nodeType": "YulExpressionStatement", + "src": "8872:20:9" + }, + { + "nativeSrc": "8913:14:9", + "nodeType": "YulAssignment", + "src": "8913:14:9", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "8922:1:9", + "nodeType": "YulIdentifier", + "src": "8922:1:9" + }, + { + "kind": "number", + "nativeSrc": "8925:1:9", + "nodeType": "YulLiteral", + "src": "8925:1:9", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8918:3:9", + "nodeType": "YulIdentifier", + "src": "8918:3:9" + }, + "nativeSrc": "8918:9:9", + "nodeType": "YulFunctionCall", + "src": "8918:9:9" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "8913:1:9", + "nodeType": "YulIdentifier", + "src": "8913:1:9" + } + ] + }, + { + "body": { + "nativeSrc": "8983:9:9", + "nodeType": "YulBlock", + "src": "8983:9:9", + "statements": [ + { + "nativeSrc": "8985:5:9", + "nodeType": "YulBreak", + "src": "8985:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "8961:1:9", + "nodeType": "YulIdentifier", + "src": "8961:1:9" + }, + { + "name": "subjectSearchEnd", + "nativeSrc": "8964:16:9", + "nodeType": "YulIdentifier", + "src": "8964:16:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "8958:2:9", + "nodeType": "YulIdentifier", + "src": "8958:2:9" + }, + "nativeSrc": "8958:23:9", + "nodeType": "YulFunctionCall", + "src": "8958:23:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "8951:6:9", + "nodeType": "YulIdentifier", + "src": "8951:6:9" + }, + "nativeSrc": "8951:31:9", + "nodeType": "YulFunctionCall", + "src": "8951:31:9" + }, + "nativeSrc": "8948:44:9", + "nodeType": "YulIf", + "src": "8948:44:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "7608:1:9", + "nodeType": "YulLiteral", + "src": "7608:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "7551:1459:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "7610:2:9", + "nodeType": "YulBlock", + "src": "7610:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "7555:52:9", + "nodeType": "YulBlock", + "src": "7555:52:9", + "statements": [ + { + "nativeSrc": "7557:48:9", + "nodeType": "YulVariableDeclaration", + "src": "7557:48:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7570:1:9", + "nodeType": "YulLiteral", + "src": "7570:1:9", + "type": "", + "value": "3" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7577:4:9", + "nodeType": "YulLiteral", + "src": "7577:4:9", + "type": "", + "value": "0x20" + }, + { + "arguments": [ + { + "name": "needleLen", + "nativeSrc": "7587:9:9", + "nodeType": "YulIdentifier", + "src": "7587:9:9" + }, + { + "kind": "number", + "nativeSrc": "7598:4:9", + "nodeType": "YulLiteral", + "src": "7598:4:9", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "7583:3:9", + "nodeType": "YulIdentifier", + "src": "7583:3:9" + }, + "nativeSrc": "7583:20:9", + "nodeType": "YulFunctionCall", + "src": "7583:20:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "7573:3:9", + "nodeType": "YulIdentifier", + "src": "7573:3:9" + }, + "nativeSrc": "7573:31:9", + "nodeType": "YulFunctionCall", + "src": "7573:31:9" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "7566:3:9", + "nodeType": "YulIdentifier", + "src": "7566:3:9" + }, + "nativeSrc": "7566:39:9", + "nodeType": "YulFunctionCall", + "src": "7566:39:9" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "7561:1:9", + "nodeType": "YulTypedName", + "src": "7561:1:9", + "type": "" + } + ] + } + ] + }, + "src": "7551:1459:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "needleLen", + "nativeSrc": "7231:9:9", + "nodeType": "YulIdentifier", + "src": "7231:9:9" + }, + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "7248:7:9", + "nodeType": "YulIdentifier", + "src": "7248:7:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "7242:5:9", + "nodeType": "YulIdentifier", + "src": "7242:5:9" + }, + "nativeSrc": "7242:14:9", + "nodeType": "YulFunctionCall", + "src": "7242:14:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "7228:2:9", + "nodeType": "YulIdentifier", + "src": "7228:2:9" + }, + "nativeSrc": "7228:29:9", + "nodeType": "YulFunctionCall", + "src": "7228:29:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "7221:6:9", + "nodeType": "YulIdentifier", + "src": "7221:6:9" + }, + "nativeSrc": "7221:37:9", + "nodeType": "YulFunctionCall", + "src": "7221:37:9" + }, + "nativeSrc": "7218:1806:9", + "nodeType": "YulIf", + "src": "7218:1806:9" + }, + { + "nativeSrc": "9037:22:9", + "nodeType": "YulVariableDeclaration", + "src": "9037:22:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9054:4:9", + "nodeType": "YulLiteral", + "src": "9054:4:9", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "9048:5:9", + "nodeType": "YulIdentifier", + "src": "9048:5:9" + }, + "nativeSrc": "9048:11:9", + "nodeType": "YulFunctionCall", + "src": "9048:11:9" + }, + "variables": [ + { + "name": "end", + "nativeSrc": "9041:3:9", + "nodeType": "YulTypedName", + "src": "9041:3:9", + "type": "" + } + ] + }, + { + "nativeSrc": "9072:44:9", + "nodeType": "YulVariableDeclaration", + "src": "9072:44:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "d", + "nativeSrc": "9089:1:9", + "nodeType": "YulIdentifier", + "src": "9089:1:9" + }, + { + "arguments": [ + { + "name": "result", + "nativeSrc": "9096:6:9", + "nodeType": "YulIdentifier", + "src": "9096:6:9" + }, + { + "kind": "number", + "nativeSrc": "9104:4:9", + "nodeType": "YulLiteral", + "src": "9104:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9092:3:9", + "nodeType": "YulIdentifier", + "src": "9092:3:9" + }, + "nativeSrc": "9092:17:9", + "nodeType": "YulFunctionCall", + "src": "9092:17:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "9085:3:9", + "nodeType": "YulIdentifier", + "src": "9085:3:9" + }, + "nativeSrc": "9085:25:9", + "nodeType": "YulFunctionCall", + "src": "9085:25:9" + }, + { + "name": "end", + "nativeSrc": "9112:3:9", + "nodeType": "YulIdentifier", + "src": "9112:3:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9081:3:9", + "nodeType": "YulIdentifier", + "src": "9081:3:9" + }, + "nativeSrc": "9081:35:9", + "nodeType": "YulFunctionCall", + "src": "9081:35:9" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "9076:1:9", + "nodeType": "YulTypedName", + "src": "9076:1:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "9231:31:9", + "nodeType": "YulBlock", + "src": "9231:31:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "9244:1:9", + "nodeType": "YulIdentifier", + "src": "9244:1:9" + }, + { + "name": "d", + "nativeSrc": "9247:1:9", + "nodeType": "YulIdentifier", + "src": "9247:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9240:3:9", + "nodeType": "YulIdentifier", + "src": "9240:3:9" + }, + "nativeSrc": "9240:9:9", + "nodeType": "YulFunctionCall", + "src": "9240:9:9" + }, + { + "arguments": [ + { + "name": "i", + "nativeSrc": "9257:1:9", + "nodeType": "YulIdentifier", + "src": "9257:1:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "9251:5:9", + "nodeType": "YulIdentifier", + "src": "9251:5:9" + }, + "nativeSrc": "9251:8:9", + "nodeType": "YulFunctionCall", + "src": "9251:8:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9233:6:9", + "nodeType": "YulIdentifier", + "src": "9233:6:9" + }, + "nativeSrc": "9233:27:9", + "nodeType": "YulFunctionCall", + "src": "9233:27:9" + }, + "nativeSrc": "9233:27:9", + "nodeType": "YulExpressionStatement", + "src": "9233:27:9" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "9201:1:9", + "nodeType": "YulIdentifier", + "src": "9201:1:9" + }, + { + "name": "end", + "nativeSrc": "9204:3:9", + "nodeType": "YulIdentifier", + "src": "9204:3:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "9198:2:9", + "nodeType": "YulIdentifier", + "src": "9198:2:9" + }, + "nativeSrc": "9198:10:9", + "nodeType": "YulFunctionCall", + "src": "9198:10:9" + }, + "nativeSrc": "9191:71:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "9209:21:9", + "nodeType": "YulBlock", + "src": "9209:21:9", + "statements": [ + { + "nativeSrc": "9211:17:9", + "nodeType": "YulAssignment", + "src": "9211:17:9", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "9220:1:9", + "nodeType": "YulIdentifier", + "src": "9220:1:9" + }, + { + "kind": "number", + "nativeSrc": "9223:4:9", + "nodeType": "YulLiteral", + "src": "9223:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9216:3:9", + "nodeType": "YulIdentifier", + "src": "9216:3:9" + }, + "nativeSrc": "9216:12:9", + "nodeType": "YulFunctionCall", + "src": "9216:12:9" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "9211:1:9", + "nodeType": "YulIdentifier", + "src": "9211:1:9" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "9195:2:9", + "nodeType": "YulBlock", + "src": "9195:2:9", + "statements": [] + }, + "src": "9191:71:9" + }, + { + "nativeSrc": "9275:18:9", + "nodeType": "YulVariableDeclaration", + "src": "9275:18:9", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "9288:1:9", + "nodeType": "YulIdentifier", + "src": "9288:1:9" + }, + { + "name": "d", + "nativeSrc": "9291:1:9", + "nodeType": "YulIdentifier", + "src": "9291:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9284:3:9", + "nodeType": "YulIdentifier", + "src": "9284:3:9" + }, + "nativeSrc": "9284:9:9", + "nodeType": "YulFunctionCall", + "src": "9284:9:9" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "9279:1:9", + "nodeType": "YulTypedName", + "src": "9279:1:9", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "9313:1:9", + "nodeType": "YulIdentifier", + "src": "9313:1:9" + }, + { + "kind": "number", + "nativeSrc": "9316:1:9", + "nodeType": "YulLiteral", + "src": "9316:1:9", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9306:6:9", + "nodeType": "YulIdentifier", + "src": "9306:6:9" + }, + "nativeSrc": "9306:12:9", + "nodeType": "YulFunctionCall", + "src": "9306:12:9" + }, + "nativeSrc": "9306:12:9", + "nodeType": "YulExpressionStatement", + "src": "9306:12:9" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9375:4:9", + "nodeType": "YulLiteral", + "src": "9375:4:9", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "o", + "nativeSrc": "9385:1:9", + "nodeType": "YulIdentifier", + "src": "9385:1:9" + }, + { + "kind": "number", + "nativeSrc": "9388:4:9", + "nodeType": "YulLiteral", + "src": "9388:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9381:3:9", + "nodeType": "YulIdentifier", + "src": "9381:3:9" + }, + "nativeSrc": "9381:12:9", + "nodeType": "YulFunctionCall", + "src": "9381:12:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9368:6:9", + "nodeType": "YulIdentifier", + "src": "9368:6:9" + }, + "nativeSrc": "9368:26:9", + "nodeType": "YulFunctionCall", + "src": "9368:26:9" + }, + "nativeSrc": "9368:26:9", + "nodeType": "YulExpressionStatement", + "src": "9368:26:9" + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "9434:6:9", + "nodeType": "YulIdentifier", + "src": "9434:6:9" + }, + { + "name": "n", + "nativeSrc": "9442:1:9", + "nodeType": "YulIdentifier", + "src": "9442:1:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9427:6:9", + "nodeType": "YulIdentifier", + "src": "9427:6:9" + }, + "nativeSrc": "9427:17:9", + "nodeType": "YulFunctionCall", + "src": "9427:17:9" + }, + "nativeSrc": "9427:17:9", + "nodeType": "YulExpressionStatement", + "src": "9427:17:9" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2703, + "isOffset": false, + "isSlot": false, + "src": "6947:6:9", + "valueSize": 1 + }, + { + "declaration": 2703, + "isOffset": false, + "isSlot": false, + "src": "7457:6:9", + "valueSize": 1 + }, + { + "declaration": 2703, + "isOffset": false, + "isSlot": false, + "src": "7520:6:9", + "valueSize": 1 + }, + { + "declaration": 2705, + "isOffset": false, + "isSlot": false, + "src": "6995:11:9", + "valueSize": 1 + }, + { + "declaration": 2705, + "isOffset": false, + "isSlot": false, + "src": "8368:11:9", + "valueSize": 1 + }, + { + "declaration": 2708, + "isOffset": false, + "isSlot": false, + "src": "6890:6:9", + "valueSize": 1 + }, + { + "declaration": 2708, + "isOffset": false, + "isSlot": false, + "src": "7033:6:9", + "valueSize": 1 + }, + { + "declaration": 2708, + "isOffset": false, + "isSlot": false, + "src": "9096:6:9", + "valueSize": 1 + }, + { + "declaration": 2708, + "isOffset": false, + "isSlot": false, + "src": "9434:6:9", + "valueSize": 1 + }, + { + "declaration": 2701, + "isOffset": false, + "isSlot": false, + "src": "7041:7:9", + "valueSize": 1 + }, + { + "declaration": 2701, + "isOffset": false, + "isSlot": false, + "src": "7097:7:9", + "valueSize": 1 + }, + { + "declaration": 2701, + "isOffset": false, + "isSlot": false, + "src": "7176:7:9", + "valueSize": 1 + }, + { + "declaration": 2701, + "isOffset": false, + "isSlot": false, + "src": "7248:7:9", + "valueSize": 1 + } + ], + "id": 2710, + "nodeType": "InlineAssembly", + "src": "6867:2608:9" + } + ] + }, + "documentation": { + "id": 2699, + "nodeType": "StructuredDocumentation", + "src": "6568:83:9", + "text": "@dev Returns `subject` all occurrences of `needle` replaced with `replacement`." + }, + "id": 2712, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "replace", + "nameLocation": "6665:7:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2706, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2701, + "mutability": "mutable", + "name": "subject", + "nameLocation": "6686:7:9", + "nodeType": "VariableDeclaration", + "scope": 2712, + "src": "6673:20:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2700, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6673:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2703, + "mutability": "mutable", + "name": "needle", + "nameLocation": "6708:6:9", + "nodeType": "VariableDeclaration", + "scope": 2712, + "src": "6695:19:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2702, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6695:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2705, + "mutability": "mutable", + "name": "replacement", + "nameLocation": "6729:11:9", + "nodeType": "VariableDeclaration", + "scope": 2712, + "src": "6716:24:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2704, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6716:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "6672:69:9" + }, + "returnParameters": { + "id": 2709, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2708, + "mutability": "mutable", + "name": "result", + "nameLocation": "6802:6:9", + "nodeType": "VariableDeclaration", + "scope": 2712, + "src": "6789:19:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2707, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6789:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "6788:21:9" + }, + "scope": 3089, + "src": "6656:2825:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2725, + "nodeType": "Block", + "src": "9857:1835:9", + "statements": [ + { + "AST": { + "nativeSrc": "9919:1767:9", + "nodeType": "YulBlock", + "src": "9919:1767:9", + "statements": [ + { + "nativeSrc": "9933:16:9", + "nodeType": "YulAssignment", + "src": "9933:16:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9947:1:9", + "nodeType": "YulLiteral", + "src": "9947:1:9", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "9943:3:9", + "nodeType": "YulIdentifier", + "src": "9943:3:9" + }, + "nativeSrc": "9943:6:9", + "nodeType": "YulFunctionCall", + "src": "9943:6:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "9933:6:9", + "nodeType": "YulIdentifier", + "src": "9933:6:9" + } + ] + }, + { + "body": { + "nativeSrc": "10038:1638:9", + "nodeType": "YulBlock", + "src": "10038:1638:9", + "statements": [ + { + "body": { + "nativeSrc": "10081:183:9", + "nodeType": "YulBlock", + "src": "10081:183:9", + "statements": [ + { + "nativeSrc": "10103:14:9", + "nodeType": "YulAssignment", + "src": "10103:14:9", + "value": { + "name": "from", + "nativeSrc": "10113:4:9", + "nodeType": "YulIdentifier", + "src": "10113:4:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "10103:6:9", + "nodeType": "YulIdentifier", + "src": "10103:6:9" + } + ] + }, + { + "body": { + "nativeSrc": "10170:9:9", + "nodeType": "YulBlock", + "src": "10170:9:9", + "statements": [ + { + "nativeSrc": "10172:5:9", + "nodeType": "YulBreak", + "src": "10172:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "from", + "nativeSrc": "10151:4:9", + "nodeType": "YulIdentifier", + "src": "10151:4:9" + }, + { + "name": "subjectLen", + "nativeSrc": "10157:10:9", + "nodeType": "YulIdentifier", + "src": "10157:10:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "10148:2:9", + "nodeType": "YulIdentifier", + "src": "10148:2:9" + }, + "nativeSrc": "10148:20:9", + "nodeType": "YulFunctionCall", + "src": "10148:20:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "10141:6:9", + "nodeType": "YulIdentifier", + "src": "10141:6:9" + }, + "nativeSrc": "10141:28:9", + "nodeType": "YulFunctionCall", + "src": "10141:28:9" + }, + "nativeSrc": "10138:41:9", + "nodeType": "YulIf", + "src": "10138:41:9" + }, + { + "nativeSrc": "10200:20:9", + "nodeType": "YulAssignment", + "src": "10200:20:9", + "value": { + "name": "subjectLen", + "nativeSrc": "10210:10:9", + "nodeType": "YulIdentifier", + "src": "10210:10:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "10200:6:9", + "nodeType": "YulIdentifier", + "src": "10200:6:9" + } + ] + }, + { + "nativeSrc": "10241:5:9", + "nodeType": "YulBreak", + "src": "10241:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "needle", + "nativeSrc": "10072:6:9", + "nodeType": "YulIdentifier", + "src": "10072:6:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "10066:5:9", + "nodeType": "YulIdentifier", + "src": "10066:5:9" + }, + "nativeSrc": "10066:13:9", + "nodeType": "YulFunctionCall", + "src": "10066:13:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "10059:6:9", + "nodeType": "YulIdentifier", + "src": "10059:6:9" + }, + "nativeSrc": "10059:21:9", + "nodeType": "YulFunctionCall", + "src": "10059:21:9" + }, + "nativeSrc": "10056:208:9", + "nodeType": "YulIf", + "src": "10056:208:9" + }, + { + "nativeSrc": "10281:30:9", + "nodeType": "YulVariableDeclaration", + "src": "10281:30:9", + "value": { + "arguments": [ + { + "name": "needle", + "nativeSrc": "10304:6:9", + "nodeType": "YulIdentifier", + "src": "10304:6:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "10298:5:9", + "nodeType": "YulIdentifier", + "src": "10298:5:9" + }, + "nativeSrc": "10298:13:9", + "nodeType": "YulFunctionCall", + "src": "10298:13:9" + }, + "variables": [ + { + "name": "needleLen", + "nativeSrc": "10285:9:9", + "nodeType": "YulTypedName", + "src": "10285:9:9", + "type": "" + } + ] + }, + { + "nativeSrc": "10328:38:9", + "nodeType": "YulVariableDeclaration", + "src": "10328:38:9", + "value": { + "arguments": [ + { + "name": "subject", + "nativeSrc": "10352:7:9", + "nodeType": "YulIdentifier", + "src": "10352:7:9" + }, + { + "kind": "number", + "nativeSrc": "10361:4:9", + "nodeType": "YulLiteral", + "src": "10361:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10348:3:9", + "nodeType": "YulIdentifier", + "src": "10348:3:9" + }, + "nativeSrc": "10348:18:9", + "nodeType": "YulFunctionCall", + "src": "10348:18:9" + }, + "variables": [ + { + "name": "subjectStart", + "nativeSrc": "10332:12:9", + "nodeType": "YulTypedName", + "src": "10332:12:9", + "type": "" + } + ] + }, + { + "nativeSrc": "10384:34:9", + "nodeType": "YulAssignment", + "src": "10384:34:9", + "value": { + "arguments": [ + { + "name": "subjectStart", + "nativeSrc": "10399:12:9", + "nodeType": "YulIdentifier", + "src": "10399:12:9" + }, + { + "name": "from", + "nativeSrc": "10413:4:9", + "nodeType": "YulIdentifier", + "src": "10413:4:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10395:3:9", + "nodeType": "YulIdentifier", + "src": "10395:3:9" + }, + "nativeSrc": "10395:23:9", + "nodeType": "YulFunctionCall", + "src": "10395:23:9" + }, + "variableNames": [ + { + "name": "subject", + "nativeSrc": "10384:7:9", + "nodeType": "YulIdentifier", + "src": "10384:7:9" + } + ] + }, + { + "nativeSrc": "10435:64:9", + "nodeType": "YulVariableDeclaration", + "src": "10435:64:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "subjectStart", + "nativeSrc": "10458:12:9", + "nodeType": "YulIdentifier", + "src": "10458:12:9" + }, + { + "name": "subjectLen", + "nativeSrc": "10472:10:9", + "nodeType": "YulIdentifier", + "src": "10472:10:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10454:3:9", + "nodeType": "YulIdentifier", + "src": "10454:3:9" + }, + "nativeSrc": "10454:29:9", + "nodeType": "YulFunctionCall", + "src": "10454:29:9" + }, + { + "name": "needleLen", + "nativeSrc": "10485:9:9", + "nodeType": "YulIdentifier", + "src": "10485:9:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "10450:3:9", + "nodeType": "YulIdentifier", + "src": "10450:3:9" + }, + "nativeSrc": "10450:45:9", + "nodeType": "YulFunctionCall", + "src": "10450:45:9" + }, + { + "kind": "number", + "nativeSrc": "10497:1:9", + "nodeType": "YulLiteral", + "src": "10497:1:9", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10446:3:9", + "nodeType": "YulIdentifier", + "src": "10446:3:9" + }, + "nativeSrc": "10446:53:9", + "nodeType": "YulFunctionCall", + "src": "10446:53:9" + }, + "variables": [ + { + "name": "end", + "nativeSrc": "10439:3:9", + "nodeType": "YulTypedName", + "src": "10439:3:9", + "type": "" + } + ] + }, + { + "nativeSrc": "10516:48:9", + "nodeType": "YulVariableDeclaration", + "src": "10516:48:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10529:1:9", + "nodeType": "YulLiteral", + "src": "10529:1:9", + "type": "", + "value": "3" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10536:4:9", + "nodeType": "YulLiteral", + "src": "10536:4:9", + "type": "", + "value": "0x20" + }, + { + "arguments": [ + { + "name": "needleLen", + "nativeSrc": "10546:9:9", + "nodeType": "YulIdentifier", + "src": "10546:9:9" + }, + { + "kind": "number", + "nativeSrc": "10557:4:9", + "nodeType": "YulLiteral", + "src": "10557:4:9", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "10542:3:9", + "nodeType": "YulIdentifier", + "src": "10542:3:9" + }, + "nativeSrc": "10542:20:9", + "nodeType": "YulFunctionCall", + "src": "10542:20:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "10532:3:9", + "nodeType": "YulIdentifier", + "src": "10532:3:9" + }, + "nativeSrc": "10532:31:9", + "nodeType": "YulFunctionCall", + "src": "10532:31:9" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "10525:3:9", + "nodeType": "YulIdentifier", + "src": "10525:3:9" + }, + "nativeSrc": "10525:39:9", + "nodeType": "YulFunctionCall", + "src": "10525:39:9" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "10520:1:9", + "nodeType": "YulTypedName", + "src": "10520:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "10581:33:9", + "nodeType": "YulVariableDeclaration", + "src": "10581:33:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "needle", + "nativeSrc": "10600:6:9", + "nodeType": "YulIdentifier", + "src": "10600:6:9" + }, + { + "kind": "number", + "nativeSrc": "10608:4:9", + "nodeType": "YulLiteral", + "src": "10608:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10596:3:9", + "nodeType": "YulIdentifier", + "src": "10596:3:9" + }, + "nativeSrc": "10596:17:9", + "nodeType": "YulFunctionCall", + "src": "10596:17:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "10590:5:9", + "nodeType": "YulIdentifier", + "src": "10590:5:9" + }, + "nativeSrc": "10590:24:9", + "nodeType": "YulFunctionCall", + "src": "10590:24:9" + }, + "variables": [ + { + "name": "s", + "nativeSrc": "10585:1:9", + "nodeType": "YulTypedName", + "src": "10585:1:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "10687:9:9", + "nodeType": "YulBlock", + "src": "10687:9:9", + "statements": [ + { + "nativeSrc": "10689:5:9", + "nodeType": "YulBreak", + "src": "10689:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "10649:7:9", + "nodeType": "YulIdentifier", + "src": "10649:7:9" + }, + { + "name": "end", + "nativeSrc": "10658:3:9", + "nodeType": "YulIdentifier", + "src": "10658:3:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "10646:2:9", + "nodeType": "YulIdentifier", + "src": "10646:2:9" + }, + "nativeSrc": "10646:16:9", + "nodeType": "YulFunctionCall", + "src": "10646:16:9" + }, + { + "arguments": [ + { + "name": "from", + "nativeSrc": "10667:4:9", + "nodeType": "YulIdentifier", + "src": "10667:4:9" + }, + { + "name": "subjectLen", + "nativeSrc": "10673:10:9", + "nodeType": "YulIdentifier", + "src": "10673:10:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "10664:2:9", + "nodeType": "YulIdentifier", + "src": "10664:2:9" + }, + "nativeSrc": "10664:20:9", + "nodeType": "YulFunctionCall", + "src": "10664:20:9" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "10642:3:9", + "nodeType": "YulIdentifier", + "src": "10642:3:9" + }, + "nativeSrc": "10642:43:9", + "nodeType": "YulFunctionCall", + "src": "10642:43:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "10635:6:9", + "nodeType": "YulIdentifier", + "src": "10635:6:9" + }, + "nativeSrc": "10635:51:9", + "nodeType": "YulFunctionCall", + "src": "10635:51:9" + }, + "nativeSrc": "10632:64:9", + "nodeType": "YulIf", + "src": "10632:64:9" + }, + { + "body": { + "nativeSrc": "10745:565:9", + "nodeType": "YulBlock", + "src": "10745:565:9", + "statements": [ + { + "body": { + "nativeSrc": "10829:437:9", + "nodeType": "YulBlock", + "src": "10829:437:9", + "statements": [ + { + "body": { + "nativeSrc": "10897:234:9", + "nodeType": "YulBlock", + "src": "10897:234:9", + "statements": [ + { + "body": { + "nativeSrc": "10967:138:9", + "nodeType": "YulBlock", + "src": "10967:138:9", + "statements": [ + { + "nativeSrc": "11001:36:9", + "nodeType": "YulAssignment", + "src": "11001:36:9", + "value": { + "arguments": [ + { + "name": "subject", + "nativeSrc": "11015:7:9", + "nodeType": "YulIdentifier", + "src": "11015:7:9" + }, + { + "name": "subjectStart", + "nativeSrc": "11024:12:9", + "nodeType": "YulIdentifier", + "src": "11024:12:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "11011:3:9", + "nodeType": "YulIdentifier", + "src": "11011:3:9" + }, + "nativeSrc": "11011:26:9", + "nodeType": "YulFunctionCall", + "src": "11011:26:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "11001:6:9", + "nodeType": "YulIdentifier", + "src": "11001:6:9" + } + ] + }, + { + "nativeSrc": "11070:5:9", + "nodeType": "YulBreak", + "src": "11070:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "10943:7:9", + "nodeType": "YulIdentifier", + "src": "10943:7:9" + }, + { + "name": "needleLen", + "nativeSrc": "10952:9:9", + "nodeType": "YulIdentifier", + "src": "10952:9:9" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "10933:9:9", + "nodeType": "YulIdentifier", + "src": "10933:9:9" + }, + "nativeSrc": "10933:29:9", + "nodeType": "YulFunctionCall", + "src": "10933:29:9" + }, + { + "name": "h", + "nativeSrc": "10964:1:9", + "nodeType": "YulIdentifier", + "src": "10964:1:9" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "10930:2:9", + "nodeType": "YulIdentifier", + "src": "10930:2:9" + }, + "nativeSrc": "10930:36:9", + "nodeType": "YulFunctionCall", + "src": "10930:36:9" + }, + "nativeSrc": "10927:178:9", + "nodeType": "YulIf", + "src": "10927:178:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "10869:1:9", + "nodeType": "YulIdentifier", + "src": "10869:1:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "10882:7:9", + "nodeType": "YulIdentifier", + "src": "10882:7:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "10876:5:9", + "nodeType": "YulIdentifier", + "src": "10876:5:9" + }, + "nativeSrc": "10876:14:9", + "nodeType": "YulFunctionCall", + "src": "10876:14:9" + }, + { + "name": "s", + "nativeSrc": "10892:1:9", + "nodeType": "YulIdentifier", + "src": "10892:1:9" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "10872:3:9", + "nodeType": "YulIdentifier", + "src": "10872:3:9" + }, + "nativeSrc": "10872:22:9", + "nodeType": "YulFunctionCall", + "src": "10872:22:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "10865:3:9", + "nodeType": "YulIdentifier", + "src": "10865:3:9" + }, + "nativeSrc": "10865:30:9", + "nodeType": "YulFunctionCall", + "src": "10865:30:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "10858:6:9", + "nodeType": "YulIdentifier", + "src": "10858:6:9" + }, + "nativeSrc": "10858:38:9", + "nodeType": "YulFunctionCall", + "src": "10858:38:9" + }, + "nativeSrc": "10855:276:9", + "nodeType": "YulIf", + "src": "10855:276:9" + }, + { + "nativeSrc": "11156:26:9", + "nodeType": "YulAssignment", + "src": "11156:26:9", + "value": { + "arguments": [ + { + "name": "subject", + "nativeSrc": "11171:7:9", + "nodeType": "YulIdentifier", + "src": "11171:7:9" + }, + { + "kind": "number", + "nativeSrc": "11180:1:9", + "nodeType": "YulLiteral", + "src": "11180:1:9", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11167:3:9", + "nodeType": "YulIdentifier", + "src": "11167:3:9" + }, + "nativeSrc": "11167:15:9", + "nodeType": "YulFunctionCall", + "src": "11167:15:9" + }, + "variableNames": [ + { + "name": "subject", + "nativeSrc": "11156:7:9", + "nodeType": "YulIdentifier", + "src": "11156:7:9" + } + ] + }, + { + "body": { + "nativeSrc": "11235:9:9", + "nodeType": "YulBlock", + "src": "11235:9:9", + "statements": [ + { + "nativeSrc": "11237:5:9", + "nodeType": "YulBreak", + "src": "11237:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "11220:7:9", + "nodeType": "YulIdentifier", + "src": "11220:7:9" + }, + { + "name": "end", + "nativeSrc": "11229:3:9", + "nodeType": "YulIdentifier", + "src": "11229:3:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "11217:2:9", + "nodeType": "YulIdentifier", + "src": "11217:2:9" + }, + "nativeSrc": "11217:16:9", + "nodeType": "YulFunctionCall", + "src": "11217:16:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "11210:6:9", + "nodeType": "YulIdentifier", + "src": "11210:6:9" + }, + "nativeSrc": "11210:24:9", + "nodeType": "YulFunctionCall", + "src": "11210:24:9" + }, + "nativeSrc": "11207:37:9", + "nodeType": "YulIf", + "src": "11207:37:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "10824:1:9", + "nodeType": "YulLiteral", + "src": "10824:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "10767:499:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "10826:2:9", + "nodeType": "YulBlock", + "src": "10826:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "10771:52:9", + "nodeType": "YulBlock", + "src": "10771:52:9", + "statements": [ + { + "nativeSrc": "10773:48:9", + "nodeType": "YulVariableDeclaration", + "src": "10773:48:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "needle", + "nativeSrc": "10796:6:9", + "nodeType": "YulIdentifier", + "src": "10796:6:9" + }, + { + "kind": "number", + "nativeSrc": "10804:4:9", + "nodeType": "YulLiteral", + "src": "10804:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10792:3:9", + "nodeType": "YulIdentifier", + "src": "10792:3:9" + }, + "nativeSrc": "10792:17:9", + "nodeType": "YulFunctionCall", + "src": "10792:17:9" + }, + { + "name": "needleLen", + "nativeSrc": "10811:9:9", + "nodeType": "YulIdentifier", + "src": "10811:9:9" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "10782:9:9", + "nodeType": "YulIdentifier", + "src": "10782:9:9" + }, + "nativeSrc": "10782:39:9", + "nodeType": "YulFunctionCall", + "src": "10782:39:9" + }, + "variables": [ + { + "name": "h", + "nativeSrc": "10777:1:9", + "nodeType": "YulTypedName", + "src": "10777:1:9", + "type": "" + } + ] + } + ] + }, + "src": "10767:499:9" + }, + { + "nativeSrc": "11287:5:9", + "nodeType": "YulBreak", + "src": "11287:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "needleLen", + "nativeSrc": "10727:9:9", + "nodeType": "YulIdentifier", + "src": "10727:9:9" + }, + { + "kind": "number", + "nativeSrc": "10738:4:9", + "nodeType": "YulLiteral", + "src": "10738:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "10724:2:9", + "nodeType": "YulIdentifier", + "src": "10724:2:9" + }, + "nativeSrc": "10724:19:9", + "nodeType": "YulFunctionCall", + "src": "10724:19:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "10717:6:9", + "nodeType": "YulIdentifier", + "src": "10717:6:9" + }, + "nativeSrc": "10717:27:9", + "nodeType": "YulFunctionCall", + "src": "10717:27:9" + }, + "nativeSrc": "10714:596:9", + "nodeType": "YulIf", + "src": "10714:596:9" + }, + { + "body": { + "nativeSrc": "11339:301:9", + "nodeType": "YulBlock", + "src": "11339:301:9", + "statements": [ + { + "body": { + "nativeSrc": "11403:114:9", + "nodeType": "YulBlock", + "src": "11403:114:9", + "statements": [ + { + "nativeSrc": "11429:36:9", + "nodeType": "YulAssignment", + "src": "11429:36:9", + "value": { + "arguments": [ + { + "name": "subject", + "nativeSrc": "11443:7:9", + "nodeType": "YulIdentifier", + "src": "11443:7:9" + }, + { + "name": "subjectStart", + "nativeSrc": "11452:12:9", + "nodeType": "YulIdentifier", + "src": "11452:12:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "11439:3:9", + "nodeType": "YulIdentifier", + "src": "11439:3:9" + }, + "nativeSrc": "11439:26:9", + "nodeType": "YulFunctionCall", + "src": "11439:26:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "11429:6:9", + "nodeType": "YulIdentifier", + "src": "11429:6:9" + } + ] + }, + { + "nativeSrc": "11490:5:9", + "nodeType": "YulBreak", + "src": "11490:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "11375:1:9", + "nodeType": "YulIdentifier", + "src": "11375:1:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "11388:7:9", + "nodeType": "YulIdentifier", + "src": "11388:7:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "11382:5:9", + "nodeType": "YulIdentifier", + "src": "11382:5:9" + }, + "nativeSrc": "11382:14:9", + "nodeType": "YulFunctionCall", + "src": "11382:14:9" + }, + { + "name": "s", + "nativeSrc": "11398:1:9", + "nodeType": "YulIdentifier", + "src": "11398:1:9" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "11378:3:9", + "nodeType": "YulIdentifier", + "src": "11378:3:9" + }, + "nativeSrc": "11378:22:9", + "nodeType": "YulFunctionCall", + "src": "11378:22:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "11371:3:9", + "nodeType": "YulIdentifier", + "src": "11371:3:9" + }, + "nativeSrc": "11371:30:9", + "nodeType": "YulFunctionCall", + "src": "11371:30:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "11364:6:9", + "nodeType": "YulIdentifier", + "src": "11364:6:9" + }, + "nativeSrc": "11364:38:9", + "nodeType": "YulFunctionCall", + "src": "11364:38:9" + }, + "nativeSrc": "11361:156:9", + "nodeType": "YulIf", + "src": "11361:156:9" + }, + { + "nativeSrc": "11538:26:9", + "nodeType": "YulAssignment", + "src": "11538:26:9", + "value": { + "arguments": [ + { + "name": "subject", + "nativeSrc": "11553:7:9", + "nodeType": "YulIdentifier", + "src": "11553:7:9" + }, + { + "kind": "number", + "nativeSrc": "11562:1:9", + "nodeType": "YulLiteral", + "src": "11562:1:9", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11549:3:9", + "nodeType": "YulIdentifier", + "src": "11549:3:9" + }, + "nativeSrc": "11549:15:9", + "nodeType": "YulFunctionCall", + "src": "11549:15:9" + }, + "variableNames": [ + { + "name": "subject", + "nativeSrc": "11538:7:9", + "nodeType": "YulIdentifier", + "src": "11538:7:9" + } + ] + }, + { + "body": { + "nativeSrc": "11613:9:9", + "nodeType": "YulBlock", + "src": "11613:9:9", + "statements": [ + { + "nativeSrc": "11615:5:9", + "nodeType": "YulBreak", + "src": "11615:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "11598:7:9", + "nodeType": "YulIdentifier", + "src": "11598:7:9" + }, + { + "name": "end", + "nativeSrc": "11607:3:9", + "nodeType": "YulIdentifier", + "src": "11607:3:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "11595:2:9", + "nodeType": "YulIdentifier", + "src": "11595:2:9" + }, + "nativeSrc": "11595:16:9", + "nodeType": "YulFunctionCall", + "src": "11595:16:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "11588:6:9", + "nodeType": "YulIdentifier", + "src": "11588:6:9" + }, + "nativeSrc": "11588:24:9", + "nodeType": "YulFunctionCall", + "src": "11588:24:9" + }, + "nativeSrc": "11585:37:9", + "nodeType": "YulIf", + "src": "11585:37:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "11334:1:9", + "nodeType": "YulLiteral", + "src": "11334:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "11327:313:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "11336:2:9", + "nodeType": "YulBlock", + "src": "11336:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "11331:2:9", + "nodeType": "YulBlock", + "src": "11331:2:9", + "statements": [] + }, + "src": "11327:313:9" + }, + { + "nativeSrc": "11657:5:9", + "nodeType": "YulBreak", + "src": "11657:5:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "10033:1:9", + "nodeType": "YulLiteral", + "src": "10033:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "9992:1684:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "10035:2:9", + "nodeType": "YulBlock", + "src": "10035:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "9996:36:9", + "nodeType": "YulBlock", + "src": "9996:36:9", + "statements": [ + { + "nativeSrc": "9998:32:9", + "nodeType": "YulVariableDeclaration", + "src": "9998:32:9", + "value": { + "arguments": [ + { + "name": "subject", + "nativeSrc": "10022:7:9", + "nodeType": "YulIdentifier", + "src": "10022:7:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "10016:5:9", + "nodeType": "YulIdentifier", + "src": "10016:5:9" + }, + "nativeSrc": "10016:14:9", + "nodeType": "YulFunctionCall", + "src": "10016:14:9" + }, + "variables": [ + { + "name": "subjectLen", + "nativeSrc": "10002:10:9", + "nodeType": "YulTypedName", + "src": "10002:10:9", + "type": "" + } + ] + } + ] + }, + "src": "9992:1684:9" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2719, + "isOffset": false, + "isSlot": false, + "src": "10113:4:9", + "valueSize": 1 + }, + { + "declaration": 2719, + "isOffset": false, + "isSlot": false, + "src": "10151:4:9", + "valueSize": 1 + }, + { + "declaration": 2719, + "isOffset": false, + "isSlot": false, + "src": "10413:4:9", + "valueSize": 1 + }, + { + "declaration": 2719, + "isOffset": false, + "isSlot": false, + "src": "10667:4:9", + "valueSize": 1 + }, + { + "declaration": 2717, + "isOffset": false, + "isSlot": false, + "src": "10072:6:9", + "valueSize": 1 + }, + { + "declaration": 2717, + "isOffset": false, + "isSlot": false, + "src": "10304:6:9", + "valueSize": 1 + }, + { + "declaration": 2717, + "isOffset": false, + "isSlot": false, + "src": "10600:6:9", + "valueSize": 1 + }, + { + "declaration": 2717, + "isOffset": false, + "isSlot": false, + "src": "10796:6:9", + "valueSize": 1 + }, + { + "declaration": 2722, + "isOffset": false, + "isSlot": false, + "src": "10103:6:9", + "valueSize": 1 + }, + { + "declaration": 2722, + "isOffset": false, + "isSlot": false, + "src": "10200:6:9", + "valueSize": 1 + }, + { + "declaration": 2722, + "isOffset": false, + "isSlot": false, + "src": "11001:6:9", + "valueSize": 1 + }, + { + "declaration": 2722, + "isOffset": false, + "isSlot": false, + "src": "11429:6:9", + "valueSize": 1 + }, + { + "declaration": 2722, + "isOffset": false, + "isSlot": false, + "src": "9933:6:9", + "valueSize": 1 + }, + { + "declaration": 2715, + "isOffset": false, + "isSlot": false, + "src": "10022:7:9", + "valueSize": 1 + }, + { + "declaration": 2715, + "isOffset": false, + "isSlot": false, + "src": "10352:7:9", + "valueSize": 1 + }, + { + "declaration": 2715, + "isOffset": false, + "isSlot": false, + "src": "10384:7:9", + "valueSize": 1 + }, + { + "declaration": 2715, + "isOffset": false, + "isSlot": false, + "src": "10649:7:9", + "valueSize": 1 + }, + { + "declaration": 2715, + "isOffset": false, + "isSlot": false, + "src": "10882:7:9", + "valueSize": 1 + }, + { + "declaration": 2715, + "isOffset": false, + "isSlot": false, + "src": "10943:7:9", + "valueSize": 1 + }, + { + "declaration": 2715, + "isOffset": false, + "isSlot": false, + "src": "11015:7:9", + "valueSize": 1 + }, + { + "declaration": 2715, + "isOffset": false, + "isSlot": false, + "src": "11156:7:9", + "valueSize": 1 + }, + { + "declaration": 2715, + "isOffset": false, + "isSlot": false, + "src": "11171:7:9", + "valueSize": 1 + }, + { + "declaration": 2715, + "isOffset": false, + "isSlot": false, + "src": "11220:7:9", + "valueSize": 1 + }, + { + "declaration": 2715, + "isOffset": false, + "isSlot": false, + "src": "11388:7:9", + "valueSize": 1 + }, + { + "declaration": 2715, + "isOffset": false, + "isSlot": false, + "src": "11443:7:9", + "valueSize": 1 + }, + { + "declaration": 2715, + "isOffset": false, + "isSlot": false, + "src": "11538:7:9", + "valueSize": 1 + }, + { + "declaration": 2715, + "isOffset": false, + "isSlot": false, + "src": "11553:7:9", + "valueSize": 1 + }, + { + "declaration": 2715, + "isOffset": false, + "isSlot": false, + "src": "11598:7:9", + "valueSize": 1 + } + ], + "id": 2724, + "nodeType": "InlineAssembly", + "src": "9910:1776:9" + } + ] + }, + "documentation": { + "id": 2713, + "nodeType": "StructuredDocumentation", + "src": "9487:224:9", + "text": "@dev Returns the byte index of the first location of `needle` in `subject`,\n needleing from left to right, starting from `from`.\n Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `needle` is not found." + }, + "id": 2726, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "indexOf", + "nameLocation": "9725:7:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2720, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2715, + "mutability": "mutable", + "name": "subject", + "nameLocation": "9746:7:9", + "nodeType": "VariableDeclaration", + "scope": 2726, + "src": "9733:20:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2714, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "9733:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2717, + "mutability": "mutable", + "name": "needle", + "nameLocation": "9768:6:9", + "nodeType": "VariableDeclaration", + "scope": 2726, + "src": "9755:19:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2716, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "9755:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2719, + "mutability": "mutable", + "name": "from", + "nameLocation": "9784:4:9", + "nodeType": "VariableDeclaration", + "scope": 2726, + "src": "9776:12:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2718, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9776:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9732:57:9" + }, + "returnParameters": { + "id": 2723, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2722, + "mutability": "mutable", + "name": "result", + "nameLocation": "9845:6:9", + "nodeType": "VariableDeclaration", + "scope": 2726, + "src": "9837:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2721, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9837:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9836:16:9" + }, + "scope": 3089, + "src": "9716:1976:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2742, + "nodeType": "Block", + "src": "11997:51:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2737, + "name": "subject", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2729, + "src": "12022:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 2738, + "name": "needle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2731, + "src": "12031:6:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "hexValue": "30", + "id": 2739, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12039:1:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2736, + "name": "indexOf", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2726, + 2743 + ], + "referencedDeclaration": 2726, + "src": "12014:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (bytes memory,bytes memory,uint256) pure returns (uint256)" + } + }, + "id": 2740, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12014:27:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2735, + "id": 2741, + "nodeType": "Return", + "src": "12007:34:9" + } + ] + }, + "documentation": { + "id": 2727, + "nodeType": "StructuredDocumentation", + "src": "11698:202:9", + "text": "@dev Returns the byte index of the first location of `needle` in `subject`,\n needleing from left to right.\n Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `needle` is not found." + }, + "id": 2743, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "indexOf", + "nameLocation": "11914:7:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2732, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2729, + "mutability": "mutable", + "name": "subject", + "nameLocation": "11935:7:9", + "nodeType": "VariableDeclaration", + "scope": 2743, + "src": "11922:20:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2728, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "11922:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2731, + "mutability": "mutable", + "name": "needle", + "nameLocation": "11957:6:9", + "nodeType": "VariableDeclaration", + "scope": 2743, + "src": "11944:19:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2730, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "11944:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "11921:43:9" + }, + "returnParameters": { + "id": 2735, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2734, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2743, + "src": "11988:7:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2733, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11988:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11987:9:9" + }, + "scope": 3089, + "src": "11905:143:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2756, + "nodeType": "Block", + "src": "12428:1170:9", + "statements": [ + { + "AST": { + "nativeSrc": "12490:1102:9", + "nodeType": "YulBlock", + "src": "12490:1102:9", + "statements": [ + { + "body": { + "nativeSrc": "12516:1066:9", + "nodeType": "YulBlock", + "src": "12516:1066:9", + "statements": [ + { + "nativeSrc": "12534:16:9", + "nodeType": "YulAssignment", + "src": "12534:16:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12548:1:9", + "nodeType": "YulLiteral", + "src": "12548:1:9", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "12544:3:9", + "nodeType": "YulIdentifier", + "src": "12544:3:9" + }, + "nativeSrc": "12544:6:9", + "nodeType": "YulFunctionCall", + "src": "12544:6:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "12534:6:9", + "nodeType": "YulIdentifier", + "src": "12534:6:9" + } + ] + }, + { + "nativeSrc": "12597:30:9", + "nodeType": "YulVariableDeclaration", + "src": "12597:30:9", + "value": { + "arguments": [ + { + "name": "needle", + "nativeSrc": "12620:6:9", + "nodeType": "YulIdentifier", + "src": "12620:6:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "12614:5:9", + "nodeType": "YulIdentifier", + "src": "12614:5:9" + }, + "nativeSrc": "12614:13:9", + "nodeType": "YulFunctionCall", + "src": "12614:13:9" + }, + "variables": [ + { + "name": "needleLen", + "nativeSrc": "12601:9:9", + "nodeType": "YulTypedName", + "src": "12601:9:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "12677:9:9", + "nodeType": "YulBlock", + "src": "12677:9:9", + "statements": [ + { + "nativeSrc": "12679:5:9", + "nodeType": "YulBreak", + "src": "12679:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "needleLen", + "nativeSrc": "12650:9:9", + "nodeType": "YulIdentifier", + "src": "12650:9:9" + }, + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "12667:7:9", + "nodeType": "YulIdentifier", + "src": "12667:7:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "12661:5:9", + "nodeType": "YulIdentifier", + "src": "12661:5:9" + }, + "nativeSrc": "12661:14:9", + "nodeType": "YulFunctionCall", + "src": "12661:14:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "12647:2:9", + "nodeType": "YulIdentifier", + "src": "12647:2:9" + }, + "nativeSrc": "12647:29:9", + "nodeType": "YulFunctionCall", + "src": "12647:29:9" + }, + "nativeSrc": "12644:42:9", + "nodeType": "YulIf", + "src": "12644:42:9" + }, + { + "nativeSrc": "12703:15:9", + "nodeType": "YulVariableDeclaration", + "src": "12703:15:9", + "value": { + "name": "result", + "nativeSrc": "12712:6:9", + "nodeType": "YulIdentifier", + "src": "12712:6:9" + }, + "variables": [ + { + "name": "w", + "nativeSrc": "12707:1:9", + "nodeType": "YulTypedName", + "src": "12707:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "12736:45:9", + "nodeType": "YulVariableDeclaration", + "src": "12736:45:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "12761:7:9", + "nodeType": "YulIdentifier", + "src": "12761:7:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "12755:5:9", + "nodeType": "YulIdentifier", + "src": "12755:5:9" + }, + "nativeSrc": "12755:14:9", + "nodeType": "YulFunctionCall", + "src": "12755:14:9" + }, + { + "name": "needleLen", + "nativeSrc": "12771:9:9", + "nodeType": "YulIdentifier", + "src": "12771:9:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "12751:3:9", + "nodeType": "YulIdentifier", + "src": "12751:3:9" + }, + "nativeSrc": "12751:30:9", + "nodeType": "YulFunctionCall", + "src": "12751:30:9" + }, + "variables": [ + { + "name": "fromMax", + "nativeSrc": "12740:7:9", + "nodeType": "YulTypedName", + "src": "12740:7:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "12827:19:9", + "nodeType": "YulBlock", + "src": "12827:19:9", + "statements": [ + { + "nativeSrc": "12829:15:9", + "nodeType": "YulAssignment", + "src": "12829:15:9", + "value": { + "name": "fromMax", + "nativeSrc": "12837:7:9", + "nodeType": "YulIdentifier", + "src": "12837:7:9" + }, + "variableNames": [ + { + "name": "from", + "nativeSrc": "12829:4:9", + "nodeType": "YulIdentifier", + "src": "12829:4:9" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "fromMax", + "nativeSrc": "12811:7:9", + "nodeType": "YulIdentifier", + "src": "12811:7:9" + }, + { + "name": "from", + "nativeSrc": "12820:4:9", + "nodeType": "YulIdentifier", + "src": "12820:4:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "12808:2:9", + "nodeType": "YulIdentifier", + "src": "12808:2:9" + }, + "nativeSrc": "12808:17:9", + "nodeType": "YulFunctionCall", + "src": "12808:17:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "12801:6:9", + "nodeType": "YulIdentifier", + "src": "12801:6:9" + }, + "nativeSrc": "12801:25:9", + "nodeType": "YulFunctionCall", + "src": "12801:25:9" + }, + "nativeSrc": "12798:48:9", + "nodeType": "YulIf", + "src": "12798:48:9" + }, + { + "nativeSrc": "12864:37:9", + "nodeType": "YulVariableDeclaration", + "src": "12864:37:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "12883:7:9", + "nodeType": "YulIdentifier", + "src": "12883:7:9" + }, + { + "kind": "number", + "nativeSrc": "12892:4:9", + "nodeType": "YulLiteral", + "src": "12892:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12879:3:9", + "nodeType": "YulIdentifier", + "src": "12879:3:9" + }, + "nativeSrc": "12879:18:9", + "nodeType": "YulFunctionCall", + "src": "12879:18:9" + }, + { + "name": "w", + "nativeSrc": "12899:1:9", + "nodeType": "YulIdentifier", + "src": "12899:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12875:3:9", + "nodeType": "YulIdentifier", + "src": "12875:3:9" + }, + "nativeSrc": "12875:26:9", + "nodeType": "YulFunctionCall", + "src": "12875:26:9" + }, + "variables": [ + { + "name": "end", + "nativeSrc": "12868:3:9", + "nodeType": "YulTypedName", + "src": "12868:3:9", + "type": "" + } + ] + }, + { + "nativeSrc": "12918:40:9", + "nodeType": "YulAssignment", + "src": "12918:40:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "12937:7:9", + "nodeType": "YulIdentifier", + "src": "12937:7:9" + }, + { + "kind": "number", + "nativeSrc": "12946:4:9", + "nodeType": "YulLiteral", + "src": "12946:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12933:3:9", + "nodeType": "YulIdentifier", + "src": "12933:3:9" + }, + "nativeSrc": "12933:18:9", + "nodeType": "YulFunctionCall", + "src": "12933:18:9" + }, + { + "name": "from", + "nativeSrc": "12953:4:9", + "nodeType": "YulIdentifier", + "src": "12953:4:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12929:3:9", + "nodeType": "YulIdentifier", + "src": "12929:3:9" + }, + "nativeSrc": "12929:29:9", + "nodeType": "YulFunctionCall", + "src": "12929:29:9" + }, + "variableNames": [ + { + "name": "subject", + "nativeSrc": "12918:7:9", + "nodeType": "YulIdentifier", + "src": "12918:7:9" + } + ] + }, + { + "body": { + "nativeSrc": "13003:9:9", + "nodeType": "YulBlock", + "src": "13003:9:9", + "statements": [ + { + "nativeSrc": "13005:5:9", + "nodeType": "YulBreak", + "src": "13005:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "12988:7:9", + "nodeType": "YulIdentifier", + "src": "12988:7:9" + }, + { + "name": "end", + "nativeSrc": "12997:3:9", + "nodeType": "YulIdentifier", + "src": "12997:3:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "12985:2:9", + "nodeType": "YulIdentifier", + "src": "12985:2:9" + }, + "nativeSrc": "12985:16:9", + "nodeType": "YulFunctionCall", + "src": "12985:16:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "12978:6:9", + "nodeType": "YulIdentifier", + "src": "12978:6:9" + }, + "nativeSrc": "12978:24:9", + "nodeType": "YulFunctionCall", + "src": "12978:24:9" + }, + "nativeSrc": "12975:37:9", + "nodeType": "YulIf", + "src": "12975:37:9" + }, + { + "body": { + "nativeSrc": "13226:320:9", + "nodeType": "YulBlock", + "src": "13226:320:9", + "statements": [ + { + "body": { + "nativeSrc": "13288:113:9", + "nodeType": "YulBlock", + "src": "13288:113:9", + "statements": [ + { + "nativeSrc": "13314:35:9", + "nodeType": "YulAssignment", + "src": "13314:35:9", + "value": { + "arguments": [ + { + "name": "subject", + "nativeSrc": "13328:7:9", + "nodeType": "YulIdentifier", + "src": "13328:7:9" + }, + { + "arguments": [ + { + "name": "end", + "nativeSrc": "13341:3:9", + "nodeType": "YulIdentifier", + "src": "13341:3:9" + }, + { + "kind": "number", + "nativeSrc": "13346:1:9", + "nodeType": "YulLiteral", + "src": "13346:1:9", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13337:3:9", + "nodeType": "YulIdentifier", + "src": "13337:3:9" + }, + "nativeSrc": "13337:11:9", + "nodeType": "YulFunctionCall", + "src": "13337:11:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "13324:3:9", + "nodeType": "YulIdentifier", + "src": "13324:3:9" + }, + "nativeSrc": "13324:25:9", + "nodeType": "YulFunctionCall", + "src": "13324:25:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "13314:6:9", + "nodeType": "YulIdentifier", + "src": "13314:6:9" + } + ] + }, + { + "nativeSrc": "13374:5:9", + "nodeType": "YulBreak", + "src": "13374:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "13264:7:9", + "nodeType": "YulIdentifier", + "src": "13264:7:9" + }, + { + "name": "needleLen", + "nativeSrc": "13273:9:9", + "nodeType": "YulIdentifier", + "src": "13273:9:9" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "13254:9:9", + "nodeType": "YulIdentifier", + "src": "13254:9:9" + }, + "nativeSrc": "13254:29:9", + "nodeType": "YulFunctionCall", + "src": "13254:29:9" + }, + { + "name": "h", + "nativeSrc": "13285:1:9", + "nodeType": "YulIdentifier", + "src": "13285:1:9" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "13251:2:9", + "nodeType": "YulIdentifier", + "src": "13251:2:9" + }, + "nativeSrc": "13251:36:9", + "nodeType": "YulFunctionCall", + "src": "13251:36:9" + }, + "nativeSrc": "13248:153:9", + "nodeType": "YulIf", + "src": "13248:153:9" + }, + { + "nativeSrc": "13422:26:9", + "nodeType": "YulAssignment", + "src": "13422:26:9", + "value": { + "arguments": [ + { + "name": "subject", + "nativeSrc": "13437:7:9", + "nodeType": "YulIdentifier", + "src": "13437:7:9" + }, + { + "name": "w", + "nativeSrc": "13446:1:9", + "nodeType": "YulIdentifier", + "src": "13446:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13433:3:9", + "nodeType": "YulIdentifier", + "src": "13433:3:9" + }, + "nativeSrc": "13433:15:9", + "nodeType": "YulFunctionCall", + "src": "13433:15:9" + }, + "variableNames": [ + { + "name": "subject", + "nativeSrc": "13422:7:9", + "nodeType": "YulIdentifier", + "src": "13422:7:9" + } + ] + }, + { + "body": { + "nativeSrc": "13519:9:9", + "nodeType": "YulBlock", + "src": "13519:9:9", + "statements": [ + { + "nativeSrc": "13521:5:9", + "nodeType": "YulBreak", + "src": "13521:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "13504:7:9", + "nodeType": "YulIdentifier", + "src": "13504:7:9" + }, + { + "name": "end", + "nativeSrc": "13513:3:9", + "nodeType": "YulIdentifier", + "src": "13513:3:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "13501:2:9", + "nodeType": "YulIdentifier", + "src": "13501:2:9" + }, + "nativeSrc": "13501:16:9", + "nodeType": "YulFunctionCall", + "src": "13501:16:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "13494:6:9", + "nodeType": "YulIdentifier", + "src": "13494:6:9" + }, + "nativeSrc": "13494:24:9", + "nodeType": "YulFunctionCall", + "src": "13494:24:9" + }, + "nativeSrc": "13491:37:9", + "nodeType": "YulIf", + "src": "13491:37:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "13221:1:9", + "nodeType": "YulLiteral", + "src": "13221:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "13164:382:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "13223:2:9", + "nodeType": "YulBlock", + "src": "13223:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "13168:52:9", + "nodeType": "YulBlock", + "src": "13168:52:9", + "statements": [ + { + "nativeSrc": "13170:48:9", + "nodeType": "YulVariableDeclaration", + "src": "13170:48:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "needle", + "nativeSrc": "13193:6:9", + "nodeType": "YulIdentifier", + "src": "13193:6:9" + }, + { + "kind": "number", + "nativeSrc": "13201:4:9", + "nodeType": "YulLiteral", + "src": "13201:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13189:3:9", + "nodeType": "YulIdentifier", + "src": "13189:3:9" + }, + "nativeSrc": "13189:17:9", + "nodeType": "YulFunctionCall", + "src": "13189:17:9" + }, + { + "name": "needleLen", + "nativeSrc": "13208:9:9", + "nodeType": "YulIdentifier", + "src": "13208:9:9" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "13179:9:9", + "nodeType": "YulIdentifier", + "src": "13179:9:9" + }, + "nativeSrc": "13179:39:9", + "nodeType": "YulFunctionCall", + "src": "13179:39:9" + }, + "variables": [ + { + "name": "h", + "nativeSrc": "13174:1:9", + "nodeType": "YulTypedName", + "src": "13174:1:9", + "type": "" + } + ] + } + ] + }, + "src": "13164:382:9" + }, + { + "nativeSrc": "13563:5:9", + "nodeType": "YulBreak", + "src": "13563:5:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "12511:1:9", + "nodeType": "YulLiteral", + "src": "12511:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "12504:1078:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "12513:2:9", + "nodeType": "YulBlock", + "src": "12513:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "12508:2:9", + "nodeType": "YulBlock", + "src": "12508:2:9", + "statements": [] + }, + "src": "12504:1078:9" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2750, + "isOffset": false, + "isSlot": false, + "src": "12820:4:9", + "valueSize": 1 + }, + { + "declaration": 2750, + "isOffset": false, + "isSlot": false, + "src": "12829:4:9", + "valueSize": 1 + }, + { + "declaration": 2750, + "isOffset": false, + "isSlot": false, + "src": "12953:4:9", + "valueSize": 1 + }, + { + "declaration": 2748, + "isOffset": false, + "isSlot": false, + "src": "12620:6:9", + "valueSize": 1 + }, + { + "declaration": 2748, + "isOffset": false, + "isSlot": false, + "src": "13193:6:9", + "valueSize": 1 + }, + { + "declaration": 2753, + "isOffset": false, + "isSlot": false, + "src": "12534:6:9", + "valueSize": 1 + }, + { + "declaration": 2753, + "isOffset": false, + "isSlot": false, + "src": "12712:6:9", + "valueSize": 1 + }, + { + "declaration": 2753, + "isOffset": false, + "isSlot": false, + "src": "13314:6:9", + "valueSize": 1 + }, + { + "declaration": 2746, + "isOffset": false, + "isSlot": false, + "src": "12667:7:9", + "valueSize": 1 + }, + { + "declaration": 2746, + "isOffset": false, + "isSlot": false, + "src": "12761:7:9", + "valueSize": 1 + }, + { + "declaration": 2746, + "isOffset": false, + "isSlot": false, + "src": "12883:7:9", + "valueSize": 1 + }, + { + "declaration": 2746, + "isOffset": false, + "isSlot": false, + "src": "12918:7:9", + "valueSize": 1 + }, + { + "declaration": 2746, + "isOffset": false, + "isSlot": false, + "src": "12937:7:9", + "valueSize": 1 + }, + { + "declaration": 2746, + "isOffset": false, + "isSlot": false, + "src": "12988:7:9", + "valueSize": 1 + }, + { + "declaration": 2746, + "isOffset": false, + "isSlot": false, + "src": "13264:7:9", + "valueSize": 1 + }, + { + "declaration": 2746, + "isOffset": false, + "isSlot": false, + "src": "13328:7:9", + "valueSize": 1 + }, + { + "declaration": 2746, + "isOffset": false, + "isSlot": false, + "src": "13422:7:9", + "valueSize": 1 + }, + { + "declaration": 2746, + "isOffset": false, + "isSlot": false, + "src": "13437:7:9", + "valueSize": 1 + }, + { + "declaration": 2746, + "isOffset": false, + "isSlot": false, + "src": "13504:7:9", + "valueSize": 1 + } + ], + "id": 2755, + "nodeType": "InlineAssembly", + "src": "12481:1111:9" + } + ] + }, + "documentation": { + "id": 2744, + "nodeType": "StructuredDocumentation", + "src": "12054:224:9", + "text": "@dev Returns the byte index of the first location of `needle` in `subject`,\n needleing from right to left, starting from `from`.\n Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `needle` is not found." + }, + "id": 2757, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "lastIndexOf", + "nameLocation": "12292:11:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2751, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2746, + "mutability": "mutable", + "name": "subject", + "nameLocation": "12317:7:9", + "nodeType": "VariableDeclaration", + "scope": 2757, + "src": "12304:20:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2745, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12304:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2748, + "mutability": "mutable", + "name": "needle", + "nameLocation": "12339:6:9", + "nodeType": "VariableDeclaration", + "scope": 2757, + "src": "12326:19:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2747, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12326:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2750, + "mutability": "mutable", + "name": "from", + "nameLocation": "12355:4:9", + "nodeType": "VariableDeclaration", + "scope": 2757, + "src": "12347:12:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2749, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12347:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12303:57:9" + }, + "returnParameters": { + "id": 2754, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2753, + "mutability": "mutable", + "name": "result", + "nameLocation": "12416:6:9", + "nodeType": "VariableDeclaration", + "scope": 2757, + "src": "12408:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2752, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12408:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12407:16:9" + }, + "scope": 3089, + "src": "12283:1315:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2777, + "nodeType": "Block", + "src": "13935:71:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2768, + "name": "subject", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2760, + "src": "13964:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 2769, + "name": "needle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2762, + "src": "13973:6:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "expression": { + "arguments": [ + { + "id": 2772, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13986:7:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2771, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13986:7:9", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 2770, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "13981:4:9", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2773, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13981:13:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 2774, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "13995:3:9", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "13981:17:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2767, + "name": "lastIndexOf", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2757, + 2778 + ], + "referencedDeclaration": 2757, + "src": "13952:11:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (bytes memory,bytes memory,uint256) pure returns (uint256)" + } + }, + "id": 2775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13952:47:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2766, + "id": 2776, + "nodeType": "Return", + "src": "13945:54:9" + } + ] + }, + "documentation": { + "id": 2758, + "nodeType": "StructuredDocumentation", + "src": "13604:202:9", + "text": "@dev Returns the byte index of the first location of `needle` in `subject`,\n needleing from right to left.\n Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `needle` is not found." + }, + "id": 2778, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "lastIndexOf", + "nameLocation": "13820:11:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2763, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2760, + "mutability": "mutable", + "name": "subject", + "nameLocation": "13845:7:9", + "nodeType": "VariableDeclaration", + "scope": 2778, + "src": "13832:20:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2759, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "13832:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2762, + "mutability": "mutable", + "name": "needle", + "nameLocation": "13867:6:9", + "nodeType": "VariableDeclaration", + "scope": 2778, + "src": "13854:19:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2761, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "13854:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "13831:43:9" + }, + "returnParameters": { + "id": 2766, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2765, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2778, + "src": "13922:7:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2764, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13922:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "13921:9:9" + }, + "scope": 3089, + "src": "13811:195:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2795, + "nodeType": "Block", + "src": "14180:61:9", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2793, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 2789, + "name": "subject", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2781, + "src": "14205:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 2790, + "name": "needle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2783, + "src": "14214:6:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2788, + "name": "indexOf", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2726, + 2743 + ], + "referencedDeclaration": 2743, + "src": "14197:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_uint256_$", + "typeString": "function (bytes memory,bytes memory) pure returns (uint256)" + } + }, + "id": 2791, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14197:24:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 2792, + "name": "NOT_FOUND", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2598, + "src": "14225:9:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14197:37:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2787, + "id": 2794, + "nodeType": "Return", + "src": "14190:44:9" + } + ] + }, + "documentation": { + "id": 2779, + "nodeType": "StructuredDocumentation", + "src": "14012:73:9", + "text": "@dev Returns true if `needle` is found in `subject`, false otherwise." + }, + "id": 2796, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "contains", + "nameLocation": "14099:8:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2784, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2781, + "mutability": "mutable", + "name": "subject", + "nameLocation": "14121:7:9", + "nodeType": "VariableDeclaration", + "scope": 2796, + "src": "14108:20:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2780, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "14108:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2783, + "mutability": "mutable", + "name": "needle", + "nameLocation": "14143:6:9", + "nodeType": "VariableDeclaration", + "scope": 2796, + "src": "14130:19:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2782, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "14130:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "14107:43:9" + }, + "returnParameters": { + "id": 2787, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2786, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2796, + "src": "14174:4:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2785, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "14174:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "14173:6:9" + }, + "scope": 3089, + "src": "14090:151:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2807, + "nodeType": "Block", + "src": "14435:322:9", + "statements": [ + { + "AST": { + "nativeSrc": "14497:254:9", + "nodeType": "YulBlock", + "src": "14497:254:9", + "statements": [ + { + "nativeSrc": "14511:22:9", + "nodeType": "YulVariableDeclaration", + "src": "14511:22:9", + "value": { + "arguments": [ + { + "name": "needle", + "nativeSrc": "14526:6:9", + "nodeType": "YulIdentifier", + "src": "14526:6:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "14520:5:9", + "nodeType": "YulIdentifier", + "src": "14520:5:9" + }, + "nativeSrc": "14520:13:9", + "nodeType": "YulFunctionCall", + "src": "14520:13:9" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "14515:1:9", + "nodeType": "YulTypedName", + "src": "14515:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "14612:78:9", + "nodeType": "YulVariableDeclaration", + "src": "14612:78:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "14638:7:9", + "nodeType": "YulIdentifier", + "src": "14638:7:9" + }, + { + "kind": "number", + "nativeSrc": "14647:4:9", + "nodeType": "YulLiteral", + "src": "14647:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14634:3:9", + "nodeType": "YulIdentifier", + "src": "14634:3:9" + }, + "nativeSrc": "14634:18:9", + "nodeType": "YulFunctionCall", + "src": "14634:18:9" + }, + { + "name": "n", + "nativeSrc": "14654:1:9", + "nodeType": "YulIdentifier", + "src": "14654:1:9" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "14624:9:9", + "nodeType": "YulIdentifier", + "src": "14624:9:9" + }, + "nativeSrc": "14624:32:9", + "nodeType": "YulFunctionCall", + "src": "14624:32:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "needle", + "nativeSrc": "14672:6:9", + "nodeType": "YulIdentifier", + "src": "14672:6:9" + }, + { + "kind": "number", + "nativeSrc": "14680:4:9", + "nodeType": "YulLiteral", + "src": "14680:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14668:3:9", + "nodeType": "YulIdentifier", + "src": "14668:3:9" + }, + "nativeSrc": "14668:17:9", + "nodeType": "YulFunctionCall", + "src": "14668:17:9" + }, + { + "name": "n", + "nativeSrc": "14687:1:9", + "nodeType": "YulIdentifier", + "src": "14687:1:9" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "14658:9:9", + "nodeType": "YulIdentifier", + "src": "14658:9:9" + }, + "nativeSrc": "14658:31:9", + "nodeType": "YulFunctionCall", + "src": "14658:31:9" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "14621:2:9", + "nodeType": "YulIdentifier", + "src": "14621:2:9" + }, + "nativeSrc": "14621:69:9", + "nodeType": "YulFunctionCall", + "src": "14621:69:9" + }, + "variables": [ + { + "name": "t", + "nativeSrc": "14616:1:9", + "nodeType": "YulTypedName", + "src": "14616:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "14703:38:9", + "nodeType": "YulAssignment", + "src": "14703:38:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "n", + "nativeSrc": "14719:1:9", + "nodeType": "YulIdentifier", + "src": "14719:1:9" + }, + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "14728:7:9", + "nodeType": "YulIdentifier", + "src": "14728:7:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "14722:5:9", + "nodeType": "YulIdentifier", + "src": "14722:5:9" + }, + "nativeSrc": "14722:14:9", + "nodeType": "YulFunctionCall", + "src": "14722:14:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "14716:2:9", + "nodeType": "YulIdentifier", + "src": "14716:2:9" + }, + "nativeSrc": "14716:21:9", + "nodeType": "YulFunctionCall", + "src": "14716:21:9" + }, + { + "name": "t", + "nativeSrc": "14739:1:9", + "nodeType": "YulIdentifier", + "src": "14739:1:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "14713:2:9", + "nodeType": "YulIdentifier", + "src": "14713:2:9" + }, + "nativeSrc": "14713:28:9", + "nodeType": "YulFunctionCall", + "src": "14713:28:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "14703:6:9", + "nodeType": "YulIdentifier", + "src": "14703:6:9" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2801, + "isOffset": false, + "isSlot": false, + "src": "14526:6:9", + "valueSize": 1 + }, + { + "declaration": 2801, + "isOffset": false, + "isSlot": false, + "src": "14672:6:9", + "valueSize": 1 + }, + { + "declaration": 2804, + "isOffset": false, + "isSlot": false, + "src": "14703:6:9", + "valueSize": 1 + }, + { + "declaration": 2799, + "isOffset": false, + "isSlot": false, + "src": "14638:7:9", + "valueSize": 1 + }, + { + "declaration": 2799, + "isOffset": false, + "isSlot": false, + "src": "14728:7:9", + "valueSize": 1 + } + ], + "id": 2806, + "nodeType": "InlineAssembly", + "src": "14488:263:9" + } + ] + }, + "documentation": { + "id": 2797, + "nodeType": "StructuredDocumentation", + "src": "14247:56:9", + "text": "@dev Returns whether `subject` starts with `needle`." + }, + "id": 2808, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "startsWith", + "nameLocation": "14317:10:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2802, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2799, + "mutability": "mutable", + "name": "subject", + "nameLocation": "14341:7:9", + "nodeType": "VariableDeclaration", + "scope": 2808, + "src": "14328:20:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2798, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "14328:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2801, + "mutability": "mutable", + "name": "needle", + "nameLocation": "14363:6:9", + "nodeType": "VariableDeclaration", + "scope": 2808, + "src": "14350:19:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2800, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "14350:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "14327:43:9" + }, + "returnParameters": { + "id": 2805, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2804, + "mutability": "mutable", + "name": "result", + "nameLocation": "14423:6:9", + "nodeType": "VariableDeclaration", + "scope": 2808, + "src": "14418:11:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2803, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "14418:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "14417:13:9" + }, + "scope": 3089, + "src": "14308:449:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2819, + "nodeType": "Block", + "src": "14947:491:9", + "statements": [ + { + "AST": { + "nativeSrc": "15009:423:9", + "nodeType": "YulBlock", + "src": "15009:423:9", + "statements": [ + { + "nativeSrc": "15023:22:9", + "nodeType": "YulVariableDeclaration", + "src": "15023:22:9", + "value": { + "arguments": [ + { + "name": "needle", + "nativeSrc": "15038:6:9", + "nodeType": "YulIdentifier", + "src": "15038:6:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "15032:5:9", + "nodeType": "YulIdentifier", + "src": "15032:5:9" + }, + "nativeSrc": "15032:13:9", + "nodeType": "YulFunctionCall", + "src": "15032:13:9" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "15027:1:9", + "nodeType": "YulTypedName", + "src": "15027:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "15058:39:9", + "nodeType": "YulVariableDeclaration", + "src": "15058:39:9", + "value": { + "arguments": [ + { + "name": "n", + "nativeSrc": "15079:1:9", + "nodeType": "YulIdentifier", + "src": "15079:1:9" + }, + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "15088:7:9", + "nodeType": "YulIdentifier", + "src": "15088:7:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "15082:5:9", + "nodeType": "YulIdentifier", + "src": "15082:5:9" + }, + "nativeSrc": "15082:14:9", + "nodeType": "YulFunctionCall", + "src": "15082:14:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "15076:2:9", + "nodeType": "YulIdentifier", + "src": "15076:2:9" + }, + "nativeSrc": "15076:21:9", + "nodeType": "YulFunctionCall", + "src": "15076:21:9" + }, + "variables": [ + { + "name": "notInRange", + "nativeSrc": "15062:10:9", + "nodeType": "YulTypedName", + "src": "15062:10:9", + "type": "" + } + ] + }, + { + "nativeSrc": "15184:81:9", + "nodeType": "YulVariableDeclaration", + "src": "15184:81:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "15201:7:9", + "nodeType": "YulIdentifier", + "src": "15201:7:9" + }, + { + "kind": "number", + "nativeSrc": "15210:4:9", + "nodeType": "YulLiteral", + "src": "15210:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15197:3:9", + "nodeType": "YulIdentifier", + "src": "15197:3:9" + }, + "nativeSrc": "15197:18:9", + "nodeType": "YulFunctionCall", + "src": "15197:18:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "notInRange", + "nativeSrc": "15228:10:9", + "nodeType": "YulIdentifier", + "src": "15228:10:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "15221:6:9", + "nodeType": "YulIdentifier", + "src": "15221:6:9" + }, + "nativeSrc": "15221:18:9", + "nodeType": "YulFunctionCall", + "src": "15221:18:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "15251:7:9", + "nodeType": "YulIdentifier", + "src": "15251:7:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "15245:5:9", + "nodeType": "YulIdentifier", + "src": "15245:5:9" + }, + "nativeSrc": "15245:14:9", + "nodeType": "YulFunctionCall", + "src": "15245:14:9" + }, + { + "name": "n", + "nativeSrc": "15261:1:9", + "nodeType": "YulIdentifier", + "src": "15261:1:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "15241:3:9", + "nodeType": "YulIdentifier", + "src": "15241:3:9" + }, + "nativeSrc": "15241:22:9", + "nodeType": "YulFunctionCall", + "src": "15241:22:9" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "15217:3:9", + "nodeType": "YulIdentifier", + "src": "15217:3:9" + }, + "nativeSrc": "15217:47:9", + "nodeType": "YulFunctionCall", + "src": "15217:47:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15193:3:9", + "nodeType": "YulIdentifier", + "src": "15193:3:9" + }, + "nativeSrc": "15193:72:9", + "nodeType": "YulFunctionCall", + "src": "15193:72:9" + }, + "variables": [ + { + "name": "t", + "nativeSrc": "15188:1:9", + "nodeType": "YulTypedName", + "src": "15188:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "15344:78:9", + "nodeType": "YulAssignment", + "src": "15344:78:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "t", + "nativeSrc": "15370:1:9", + "nodeType": "YulIdentifier", + "src": "15370:1:9" + }, + { + "name": "n", + "nativeSrc": "15373:1:9", + "nodeType": "YulIdentifier", + "src": "15373:1:9" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "15360:9:9", + "nodeType": "YulIdentifier", + "src": "15360:9:9" + }, + "nativeSrc": "15360:15:9", + "nodeType": "YulFunctionCall", + "src": "15360:15:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "needle", + "nativeSrc": "15391:6:9", + "nodeType": "YulIdentifier", + "src": "15391:6:9" + }, + { + "kind": "number", + "nativeSrc": "15399:4:9", + "nodeType": "YulLiteral", + "src": "15399:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15387:3:9", + "nodeType": "YulIdentifier", + "src": "15387:3:9" + }, + "nativeSrc": "15387:17:9", + "nodeType": "YulFunctionCall", + "src": "15387:17:9" + }, + { + "name": "n", + "nativeSrc": "15406:1:9", + "nodeType": "YulIdentifier", + "src": "15406:1:9" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "15377:9:9", + "nodeType": "YulIdentifier", + "src": "15377:9:9" + }, + "nativeSrc": "15377:31:9", + "nodeType": "YulFunctionCall", + "src": "15377:31:9" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "15357:2:9", + "nodeType": "YulIdentifier", + "src": "15357:2:9" + }, + "nativeSrc": "15357:52:9", + "nodeType": "YulFunctionCall", + "src": "15357:52:9" + }, + { + "name": "notInRange", + "nativeSrc": "15411:10:9", + "nodeType": "YulIdentifier", + "src": "15411:10:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "15354:2:9", + "nodeType": "YulIdentifier", + "src": "15354:2:9" + }, + "nativeSrc": "15354:68:9", + "nodeType": "YulFunctionCall", + "src": "15354:68:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "15344:6:9", + "nodeType": "YulIdentifier", + "src": "15344:6:9" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2813, + "isOffset": false, + "isSlot": false, + "src": "15038:6:9", + "valueSize": 1 + }, + { + "declaration": 2813, + "isOffset": false, + "isSlot": false, + "src": "15391:6:9", + "valueSize": 1 + }, + { + "declaration": 2816, + "isOffset": false, + "isSlot": false, + "src": "15344:6:9", + "valueSize": 1 + }, + { + "declaration": 2811, + "isOffset": false, + "isSlot": false, + "src": "15088:7:9", + "valueSize": 1 + }, + { + "declaration": 2811, + "isOffset": false, + "isSlot": false, + "src": "15201:7:9", + "valueSize": 1 + }, + { + "declaration": 2811, + "isOffset": false, + "isSlot": false, + "src": "15251:7:9", + "valueSize": 1 + } + ], + "id": 2818, + "nodeType": "InlineAssembly", + "src": "15000:432:9" + } + ] + }, + "documentation": { + "id": 2809, + "nodeType": "StructuredDocumentation", + "src": "14763:54:9", + "text": "@dev Returns whether `subject` ends with `needle`." + }, + "id": 2820, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "endsWith", + "nameLocation": "14831:8:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2814, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2811, + "mutability": "mutable", + "name": "subject", + "nameLocation": "14853:7:9", + "nodeType": "VariableDeclaration", + "scope": 2820, + "src": "14840:20:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2810, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "14840:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2813, + "mutability": "mutable", + "name": "needle", + "nameLocation": "14875:6:9", + "nodeType": "VariableDeclaration", + "scope": 2820, + "src": "14862:19:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2812, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "14862:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "14839:43:9" + }, + "returnParameters": { + "id": 2817, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2816, + "mutability": "mutable", + "name": "result", + "nameLocation": "14935:6:9", + "nodeType": "VariableDeclaration", + "scope": 2820, + "src": "14930:11:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2815, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "14930:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "14929:13:9" + }, + "scope": 3089, + "src": "14822:616:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2831, + "nodeType": "Block", + "src": "15618:1002:9", + "statements": [ + { + "AST": { + "nativeSrc": "15680:934:9", + "nodeType": "YulBlock", + "src": "15680:934:9", + "statements": [ + { + "nativeSrc": "15694:23:9", + "nodeType": "YulVariableDeclaration", + "src": "15694:23:9", + "value": { + "arguments": [ + { + "name": "subject", + "nativeSrc": "15709:7:9", + "nodeType": "YulIdentifier", + "src": "15709:7:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "15703:5:9", + "nodeType": "YulIdentifier", + "src": "15703:5:9" + }, + "nativeSrc": "15703:14:9", + "nodeType": "YulFunctionCall", + "src": "15703:14:9" + }, + "variables": [ + { + "name": "l", + "nativeSrc": "15698:1:9", + "nodeType": "YulTypedName", + "src": "15698:1:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "15789:815:9", + "nodeType": "YulBlock", + "src": "15789:815:9", + "statements": [ + { + "nativeSrc": "15807:21:9", + "nodeType": "YulAssignment", + "src": "15807:21:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "15823:4:9", + "nodeType": "YulLiteral", + "src": "15823:4:9", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "15817:5:9", + "nodeType": "YulIdentifier", + "src": "15817:5:9" + }, + "nativeSrc": "15817:11:9", + "nodeType": "YulFunctionCall", + "src": "15817:11:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "15807:6:9", + "nodeType": "YulIdentifier", + "src": "15807:6:9" + } + ] + }, + { + "nativeSrc": "15845:29:9", + "nodeType": "YulAssignment", + "src": "15845:29:9", + "value": { + "arguments": [ + { + "name": "subject", + "nativeSrc": "15860:7:9", + "nodeType": "YulIdentifier", + "src": "15860:7:9" + }, + { + "kind": "number", + "nativeSrc": "15869:4:9", + "nodeType": "YulLiteral", + "src": "15869:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15856:3:9", + "nodeType": "YulIdentifier", + "src": "15856:3:9" + }, + "nativeSrc": "15856:18:9", + "nodeType": "YulFunctionCall", + "src": "15856:18:9" + }, + "variableNames": [ + { + "name": "subject", + "nativeSrc": "15845:7:9", + "nodeType": "YulIdentifier", + "src": "15845:7:9" + } + ] + }, + { + "nativeSrc": "15891:26:9", + "nodeType": "YulVariableDeclaration", + "src": "15891:26:9", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "15904:6:9", + "nodeType": "YulIdentifier", + "src": "15904:6:9" + }, + { + "kind": "number", + "nativeSrc": "15912:4:9", + "nodeType": "YulLiteral", + "src": "15912:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15900:3:9", + "nodeType": "YulIdentifier", + "src": "15900:3:9" + }, + "nativeSrc": "15900:17:9", + "nodeType": "YulFunctionCall", + "src": "15900:17:9" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "15895:1:9", + "nodeType": "YulTypedName", + "src": "15895:1:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "15946:436:9", + "nodeType": "YulBlock", + "src": "15946:436:9", + "statements": [ + { + "body": { + "nativeSrc": "16054:185:9", + "nodeType": "YulBlock", + "src": "16054:185:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "16091:1:9", + "nodeType": "YulIdentifier", + "src": "16091:1:9" + }, + { + "name": "j", + "nativeSrc": "16094:1:9", + "nodeType": "YulIdentifier", + "src": "16094:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16087:3:9", + "nodeType": "YulIdentifier", + "src": "16087:3:9" + }, + "nativeSrc": "16087:9:9", + "nodeType": "YulFunctionCall", + "src": "16087:9:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "16108:7:9", + "nodeType": "YulIdentifier", + "src": "16108:7:9" + }, + { + "name": "j", + "nativeSrc": "16117:1:9", + "nodeType": "YulIdentifier", + "src": "16117:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16104:3:9", + "nodeType": "YulIdentifier", + "src": "16104:3:9" + }, + "nativeSrc": "16104:15:9", + "nodeType": "YulFunctionCall", + "src": "16104:15:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "16098:5:9", + "nodeType": "YulIdentifier", + "src": "16098:5:9" + }, + "nativeSrc": "16098:22:9", + "nodeType": "YulFunctionCall", + "src": "16098:22:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "16080:6:9", + "nodeType": "YulIdentifier", + "src": "16080:6:9" + }, + "nativeSrc": "16080:41:9", + "nodeType": "YulFunctionCall", + "src": "16080:41:9" + }, + "nativeSrc": "16080:41:9", + "nodeType": "YulExpressionStatement", + "src": "16080:41:9" + }, + { + "nativeSrc": "16146:17:9", + "nodeType": "YulAssignment", + "src": "16146:17:9", + "value": { + "arguments": [ + { + "name": "j", + "nativeSrc": "16155:1:9", + "nodeType": "YulIdentifier", + "src": "16155:1:9" + }, + { + "kind": "number", + "nativeSrc": "16158:4:9", + "nodeType": "YulLiteral", + "src": "16158:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16151:3:9", + "nodeType": "YulIdentifier", + "src": "16151:3:9" + }, + "nativeSrc": "16151:12:9", + "nodeType": "YulFunctionCall", + "src": "16151:12:9" + }, + "variableNames": [ + { + "name": "j", + "nativeSrc": "16146:1:9", + "nodeType": "YulIdentifier", + "src": "16146:1:9" + } + ] + }, + { + "body": { + "nativeSrc": "16208:9:9", + "nodeType": "YulBlock", + "src": "16208:9:9", + "statements": [ + { + "nativeSrc": "16210:5:9", + "nodeType": "YulBreak", + "src": "16210:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "j", + "nativeSrc": "16201:1:9", + "nodeType": "YulIdentifier", + "src": "16201:1:9" + }, + { + "name": "l", + "nativeSrc": "16204:1:9", + "nodeType": "YulIdentifier", + "src": "16204:1:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "16198:2:9", + "nodeType": "YulIdentifier", + "src": "16198:2:9" + }, + "nativeSrc": "16198:8:9", + "nodeType": "YulFunctionCall", + "src": "16198:8:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "16191:6:9", + "nodeType": "YulIdentifier", + "src": "16191:6:9" + }, + "nativeSrc": "16191:16:9", + "nodeType": "YulFunctionCall", + "src": "16191:16:9" + }, + "nativeSrc": "16188:29:9", + "nodeType": "YulIf", + "src": "16188:29:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "16049:1:9", + "nodeType": "YulLiteral", + "src": "16049:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "16030:209:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "16051:2:9", + "nodeType": "YulBlock", + "src": "16051:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "16034:14:9", + "nodeType": "YulBlock", + "src": "16034:14:9", + "statements": [ + { + "nativeSrc": "16036:10:9", + "nodeType": "YulVariableDeclaration", + "src": "16036:10:9", + "value": { + "kind": "number", + "nativeSrc": "16045:1:9", + "nodeType": "YulLiteral", + "src": "16045:1:9", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "j", + "nativeSrc": "16040:1:9", + "nodeType": "YulTypedName", + "src": "16040:1:9", + "type": "" + } + ] + } + ] + }, + "src": "16030:209:9" + }, + { + "nativeSrc": "16260:14:9", + "nodeType": "YulAssignment", + "src": "16260:14:9", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "16269:1:9", + "nodeType": "YulIdentifier", + "src": "16269:1:9" + }, + { + "name": "l", + "nativeSrc": "16272:1:9", + "nodeType": "YulIdentifier", + "src": "16272:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16265:3:9", + "nodeType": "YulIdentifier", + "src": "16265:3:9" + }, + "nativeSrc": "16265:9:9", + "nodeType": "YulFunctionCall", + "src": "16265:9:9" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "16260:1:9", + "nodeType": "YulIdentifier", + "src": "16260:1:9" + } + ] + }, + { + "nativeSrc": "16295:22:9", + "nodeType": "YulAssignment", + "src": "16295:22:9", + "value": { + "arguments": [ + { + "name": "times", + "nativeSrc": "16308:5:9", + "nodeType": "YulIdentifier", + "src": "16308:5:9" + }, + { + "kind": "number", + "nativeSrc": "16315:1:9", + "nodeType": "YulLiteral", + "src": "16315:1:9", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "16304:3:9", + "nodeType": "YulIdentifier", + "src": "16304:3:9" + }, + "nativeSrc": "16304:13:9", + "nodeType": "YulFunctionCall", + "src": "16304:13:9" + }, + "variableNames": [ + { + "name": "times", + "nativeSrc": "16295:5:9", + "nodeType": "YulIdentifier", + "src": "16295:5:9" + } + ] + }, + { + "body": { + "nativeSrc": "16355:9:9", + "nodeType": "YulBlock", + "src": "16355:9:9", + "statements": [ + { + "nativeSrc": "16357:5:9", + "nodeType": "YulBreak", + "src": "16357:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "times", + "nativeSrc": "16348:5:9", + "nodeType": "YulIdentifier", + "src": "16348:5:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "16341:6:9", + "nodeType": "YulIdentifier", + "src": "16341:6:9" + }, + "nativeSrc": "16341:13:9", + "nodeType": "YulFunctionCall", + "src": "16341:13:9" + }, + "nativeSrc": "16338:26:9", + "nodeType": "YulIf", + "src": "16338:26:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "15941:1:9", + "nodeType": "YulLiteral", + "src": "15941:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "15934:448:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "15943:2:9", + "nodeType": "YulBlock", + "src": "15943:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "15938:2:9", + "nodeType": "YulBlock", + "src": "15938:2:9", + "statements": [] + }, + "src": "15934:448:9" + }, + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "16406:1:9", + "nodeType": "YulIdentifier", + "src": "16406:1:9" + }, + { + "kind": "number", + "nativeSrc": "16409:1:9", + "nodeType": "YulLiteral", + "src": "16409:1:9", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "16399:6:9", + "nodeType": "YulIdentifier", + "src": "16399:6:9" + }, + "nativeSrc": "16399:12:9", + "nodeType": "YulFunctionCall", + "src": "16399:12:9" + }, + "nativeSrc": "16399:12:9", + "nodeType": "YulExpressionStatement", + "src": "16399:12:9" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "16472:4:9", + "nodeType": "YulLiteral", + "src": "16472:4:9", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "o", + "nativeSrc": "16482:1:9", + "nodeType": "YulIdentifier", + "src": "16482:1:9" + }, + { + "kind": "number", + "nativeSrc": "16485:4:9", + "nodeType": "YulLiteral", + "src": "16485:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16478:3:9", + "nodeType": "YulIdentifier", + "src": "16478:3:9" + }, + "nativeSrc": "16478:12:9", + "nodeType": "YulFunctionCall", + "src": "16478:12:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "16465:6:9", + "nodeType": "YulIdentifier", + "src": "16465:6:9" + }, + "nativeSrc": "16465:26:9", + "nodeType": "YulFunctionCall", + "src": "16465:26:9" + }, + "nativeSrc": "16465:26:9", + "nodeType": "YulExpressionStatement", + "src": "16465:26:9" + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "16535:6:9", + "nodeType": "YulIdentifier", + "src": "16535:6:9" + }, + { + "arguments": [ + { + "name": "o", + "nativeSrc": "16547:1:9", + "nodeType": "YulIdentifier", + "src": "16547:1:9" + }, + { + "arguments": [ + { + "name": "result", + "nativeSrc": "16554:6:9", + "nodeType": "YulIdentifier", + "src": "16554:6:9" + }, + { + "kind": "number", + "nativeSrc": "16562:4:9", + "nodeType": "YulLiteral", + "src": "16562:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16550:3:9", + "nodeType": "YulIdentifier", + "src": "16550:3:9" + }, + "nativeSrc": "16550:17:9", + "nodeType": "YulFunctionCall", + "src": "16550:17:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "16543:3:9", + "nodeType": "YulIdentifier", + "src": "16543:3:9" + }, + "nativeSrc": "16543:25:9", + "nodeType": "YulFunctionCall", + "src": "16543:25:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "16528:6:9", + "nodeType": "YulIdentifier", + "src": "16528:6:9" + }, + "nativeSrc": "16528:41:9", + "nodeType": "YulFunctionCall", + "src": "16528:41:9" + }, + "nativeSrc": "16528:41:9", + "nodeType": "YulExpressionStatement", + "src": "16528:41:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "times", + "nativeSrc": "15769:5:9", + "nodeType": "YulIdentifier", + "src": "15769:5:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "15762:6:9", + "nodeType": "YulIdentifier", + "src": "15762:6:9" + }, + "nativeSrc": "15762:13:9", + "nodeType": "YulFunctionCall", + "src": "15762:13:9" + }, + { + "arguments": [ + { + "name": "l", + "nativeSrc": "15784:1:9", + "nodeType": "YulIdentifier", + "src": "15784:1:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "15777:6:9", + "nodeType": "YulIdentifier", + "src": "15777:6:9" + }, + "nativeSrc": "15777:9:9", + "nodeType": "YulFunctionCall", + "src": "15777:9:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "15759:2:9", + "nodeType": "YulIdentifier", + "src": "15759:2:9" + }, + "nativeSrc": "15759:28:9", + "nodeType": "YulFunctionCall", + "src": "15759:28:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "15752:6:9", + "nodeType": "YulIdentifier", + "src": "15752:6:9" + }, + "nativeSrc": "15752:36:9", + "nodeType": "YulFunctionCall", + "src": "15752:36:9" + }, + "nativeSrc": "15749:855:9", + "nodeType": "YulIf", + "src": "15749:855:9" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2828, + "isOffset": false, + "isSlot": false, + "src": "15807:6:9", + "valueSize": 1 + }, + { + "declaration": 2828, + "isOffset": false, + "isSlot": false, + "src": "15904:6:9", + "valueSize": 1 + }, + { + "declaration": 2828, + "isOffset": false, + "isSlot": false, + "src": "16535:6:9", + "valueSize": 1 + }, + { + "declaration": 2828, + "isOffset": false, + "isSlot": false, + "src": "16554:6:9", + "valueSize": 1 + }, + { + "declaration": 2823, + "isOffset": false, + "isSlot": false, + "src": "15709:7:9", + "valueSize": 1 + }, + { + "declaration": 2823, + "isOffset": false, + "isSlot": false, + "src": "15845:7:9", + "valueSize": 1 + }, + { + "declaration": 2823, + "isOffset": false, + "isSlot": false, + "src": "15860:7:9", + "valueSize": 1 + }, + { + "declaration": 2823, + "isOffset": false, + "isSlot": false, + "src": "16108:7:9", + "valueSize": 1 + }, + { + "declaration": 2825, + "isOffset": false, + "isSlot": false, + "src": "15769:5:9", + "valueSize": 1 + }, + { + "declaration": 2825, + "isOffset": false, + "isSlot": false, + "src": "16295:5:9", + "valueSize": 1 + }, + { + "declaration": 2825, + "isOffset": false, + "isSlot": false, + "src": "16308:5:9", + "valueSize": 1 + }, + { + "declaration": 2825, + "isOffset": false, + "isSlot": false, + "src": "16348:5:9", + "valueSize": 1 + } + ], + "id": 2830, + "nodeType": "InlineAssembly", + "src": "15671:943:9" + } + ] + }, + "documentation": { + "id": 2821, + "nodeType": "StructuredDocumentation", + "src": "15444:44:9", + "text": "@dev Returns `subject` repeated `times`." + }, + "id": 2832, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "repeat", + "nameLocation": "15502:6:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2826, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2823, + "mutability": "mutable", + "name": "subject", + "nameLocation": "15522:7:9", + "nodeType": "VariableDeclaration", + "scope": 2832, + "src": "15509:20:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2822, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "15509:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2825, + "mutability": "mutable", + "name": "times", + "nameLocation": "15539:5:9", + "nodeType": "VariableDeclaration", + "scope": 2832, + "src": "15531:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2824, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15531:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "15508:37:9" + }, + "returnParameters": { + "id": 2829, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2828, + "mutability": "mutable", + "name": "result", + "nameLocation": "15606:6:9", + "nodeType": "VariableDeclaration", + "scope": 2832, + "src": "15593:19:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2827, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "15593:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "15592:21:9" + }, + "scope": 3089, + "src": "15493:1127:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2845, + "nodeType": "Block", + "src": "16890:978:9", + "statements": [ + { + "AST": { + "nativeSrc": "16952:910:9", + "nodeType": "YulBlock", + "src": "16952:910:9", + "statements": [ + { + "nativeSrc": "16966:23:9", + "nodeType": "YulVariableDeclaration", + "src": "16966:23:9", + "value": { + "arguments": [ + { + "name": "subject", + "nativeSrc": "16981:7:9", + "nodeType": "YulIdentifier", + "src": "16981:7:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "16975:5:9", + "nodeType": "YulIdentifier", + "src": "16975:5:9" + }, + "nativeSrc": "16975:14:9", + "nodeType": "YulFunctionCall", + "src": "16975:14:9" + }, + "variables": [ + { + "name": "l", + "nativeSrc": "16970:1:9", + "nodeType": "YulTypedName", + "src": "16970:1:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "17043:12:9", + "nodeType": "YulBlock", + "src": "17043:12:9", + "statements": [ + { + "nativeSrc": "17045:8:9", + "nodeType": "YulAssignment", + "src": "17045:8:9", + "value": { + "name": "l", + "nativeSrc": "17052:1:9", + "nodeType": "YulIdentifier", + "src": "17052:1:9" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "17045:3:9", + "nodeType": "YulIdentifier", + "src": "17045:3:9" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "l", + "nativeSrc": "17034:1:9", + "nodeType": "YulIdentifier", + "src": "17034:1:9" + }, + { + "name": "end", + "nativeSrc": "17037:3:9", + "nodeType": "YulIdentifier", + "src": "17037:3:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "17031:2:9", + "nodeType": "YulIdentifier", + "src": "17031:2:9" + }, + "nativeSrc": "17031:10:9", + "nodeType": "YulFunctionCall", + "src": "17031:10:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "17024:6:9", + "nodeType": "YulIdentifier", + "src": "17024:6:9" + }, + "nativeSrc": "17024:18:9", + "nodeType": "YulFunctionCall", + "src": "17024:18:9" + }, + "nativeSrc": "17021:34:9", + "nodeType": "YulIf", + "src": "17021:34:9" + }, + { + "body": { + "nativeSrc": "17092:14:9", + "nodeType": "YulBlock", + "src": "17092:14:9", + "statements": [ + { + "nativeSrc": "17094:10:9", + "nodeType": "YulAssignment", + "src": "17094:10:9", + "value": { + "name": "l", + "nativeSrc": "17103:1:9", + "nodeType": "YulIdentifier", + "src": "17103:1:9" + }, + "variableNames": [ + { + "name": "start", + "nativeSrc": "17094:5:9", + "nodeType": "YulIdentifier", + "src": "17094:5:9" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "l", + "nativeSrc": "17081:1:9", + "nodeType": "YulIdentifier", + "src": "17081:1:9" + }, + { + "name": "start", + "nativeSrc": "17084:5:9", + "nodeType": "YulIdentifier", + "src": "17084:5:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "17078:2:9", + "nodeType": "YulIdentifier", + "src": "17078:2:9" + }, + "nativeSrc": "17078:12:9", + "nodeType": "YulFunctionCall", + "src": "17078:12:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "17071:6:9", + "nodeType": "YulIdentifier", + "src": "17071:6:9" + }, + "nativeSrc": "17071:20:9", + "nodeType": "YulFunctionCall", + "src": "17071:20:9" + }, + "nativeSrc": "17068:38:9", + "nodeType": "YulIf", + "src": "17068:38:9" + }, + { + "body": { + "nativeSrc": "17137:715:9", + "nodeType": "YulBlock", + "src": "17137:715:9", + "statements": [ + { + "nativeSrc": "17155:21:9", + "nodeType": "YulAssignment", + "src": "17155:21:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "17171:4:9", + "nodeType": "YulLiteral", + "src": "17171:4:9", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "17165:5:9", + "nodeType": "YulIdentifier", + "src": "17165:5:9" + }, + "nativeSrc": "17165:11:9", + "nodeType": "YulFunctionCall", + "src": "17165:11:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "17155:6:9", + "nodeType": "YulIdentifier", + "src": "17155:6:9" + } + ] + }, + { + "nativeSrc": "17193:24:9", + "nodeType": "YulVariableDeclaration", + "src": "17193:24:9", + "value": { + "arguments": [ + { + "name": "end", + "nativeSrc": "17206:3:9", + "nodeType": "YulIdentifier", + "src": "17206:3:9" + }, + { + "name": "start", + "nativeSrc": "17211:5:9", + "nodeType": "YulIdentifier", + "src": "17211:5:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "17202:3:9", + "nodeType": "YulIdentifier", + "src": "17202:3:9" + }, + "nativeSrc": "17202:15:9", + "nodeType": "YulFunctionCall", + "src": "17202:15:9" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "17197:1:9", + "nodeType": "YulTypedName", + "src": "17197:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "17234:28:9", + "nodeType": "YulVariableDeclaration", + "src": "17234:28:9", + "value": { + "arguments": [ + { + "name": "subject", + "nativeSrc": "17247:7:9", + "nodeType": "YulIdentifier", + "src": "17247:7:9" + }, + { + "name": "start", + "nativeSrc": "17256:5:9", + "nodeType": "YulIdentifier", + "src": "17256:5:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17243:3:9", + "nodeType": "YulIdentifier", + "src": "17243:3:9" + }, + "nativeSrc": "17243:19:9", + "nodeType": "YulFunctionCall", + "src": "17243:19:9" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "17238:1:9", + "nodeType": "YulTypedName", + "src": "17238:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "17279:18:9", + "nodeType": "YulVariableDeclaration", + "src": "17279:18:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "17292:4:9", + "nodeType": "YulLiteral", + "src": "17292:4:9", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "17288:3:9", + "nodeType": "YulIdentifier", + "src": "17288:3:9" + }, + "nativeSrc": "17288:9:9", + "nodeType": "YulFunctionCall", + "src": "17288:9:9" + }, + "variables": [ + { + "name": "w", + "nativeSrc": "17283:1:9", + "nodeType": "YulTypedName", + "src": "17283:1:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "17426:177:9", + "nodeType": "YulBlock", + "src": "17426:177:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "17459:6:9", + "nodeType": "YulIdentifier", + "src": "17459:6:9" + }, + { + "name": "j", + "nativeSrc": "17467:1:9", + "nodeType": "YulIdentifier", + "src": "17467:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17455:3:9", + "nodeType": "YulIdentifier", + "src": "17455:3:9" + }, + "nativeSrc": "17455:14:9", + "nodeType": "YulFunctionCall", + "src": "17455:14:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "17481:1:9", + "nodeType": "YulIdentifier", + "src": "17481:1:9" + }, + { + "name": "j", + "nativeSrc": "17484:1:9", + "nodeType": "YulIdentifier", + "src": "17484:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17477:3:9", + "nodeType": "YulIdentifier", + "src": "17477:3:9" + }, + "nativeSrc": "17477:9:9", + "nodeType": "YulFunctionCall", + "src": "17477:9:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "17471:5:9", + "nodeType": "YulIdentifier", + "src": "17471:5:9" + }, + "nativeSrc": "17471:16:9", + "nodeType": "YulFunctionCall", + "src": "17471:16:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "17448:6:9", + "nodeType": "YulIdentifier", + "src": "17448:6:9" + }, + "nativeSrc": "17448:40:9", + "nodeType": "YulFunctionCall", + "src": "17448:40:9" + }, + "nativeSrc": "17448:40:9", + "nodeType": "YulExpressionStatement", + "src": "17448:40:9" + }, + { + "nativeSrc": "17509:14:9", + "nodeType": "YulAssignment", + "src": "17509:14:9", + "value": { + "arguments": [ + { + "name": "j", + "nativeSrc": "17518:1:9", + "nodeType": "YulIdentifier", + "src": "17518:1:9" + }, + { + "name": "w", + "nativeSrc": "17521:1:9", + "nodeType": "YulIdentifier", + "src": "17521:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17514:3:9", + "nodeType": "YulIdentifier", + "src": "17514:3:9" + }, + "nativeSrc": "17514:9:9", + "nodeType": "YulFunctionCall", + "src": "17514:9:9" + }, + "variableNames": [ + { + "name": "j", + "nativeSrc": "17509:1:9", + "nodeType": "YulIdentifier", + "src": "17509:1:9" + } + ] + }, + { + "body": { + "nativeSrc": "17576:9:9", + "nodeType": "YulBlock", + "src": "17576:9:9", + "statements": [ + { + "nativeSrc": "17578:5:9", + "nodeType": "YulBreak", + "src": "17578:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "j", + "nativeSrc": "17573:1:9", + "nodeType": "YulIdentifier", + "src": "17573:1:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "17566:6:9", + "nodeType": "YulIdentifier", + "src": "17566:6:9" + }, + "nativeSrc": "17566:9:9", + "nodeType": "YulFunctionCall", + "src": "17566:9:9" + }, + "nativeSrc": "17563:22:9", + "nodeType": "YulIf", + "src": "17563:22:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "17421:1:9", + "nodeType": "YulLiteral", + "src": "17421:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "17383:220:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "17423:2:9", + "nodeType": "YulBlock", + "src": "17423:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "17387:33:9", + "nodeType": "YulBlock", + "src": "17387:33:9", + "statements": [ + { + "nativeSrc": "17389:29:9", + "nodeType": "YulVariableDeclaration", + "src": "17389:29:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "n", + "nativeSrc": "17406:1:9", + "nodeType": "YulIdentifier", + "src": "17406:1:9" + }, + { + "kind": "number", + "nativeSrc": "17409:4:9", + "nodeType": "YulLiteral", + "src": "17409:4:9", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17402:3:9", + "nodeType": "YulIdentifier", + "src": "17402:3:9" + }, + "nativeSrc": "17402:12:9", + "nodeType": "YulFunctionCall", + "src": "17402:12:9" + }, + { + "name": "w", + "nativeSrc": "17416:1:9", + "nodeType": "YulIdentifier", + "src": "17416:1:9" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "17398:3:9", + "nodeType": "YulIdentifier", + "src": "17398:3:9" + }, + "nativeSrc": "17398:20:9", + "nodeType": "YulFunctionCall", + "src": "17398:20:9" + }, + "variables": [ + { + "name": "j", + "nativeSrc": "17393:1:9", + "nodeType": "YulTypedName", + "src": "17393:1:9", + "type": "" + } + ] + } + ] + }, + "src": "17383:220:9" + }, + { + "nativeSrc": "17620:34:9", + "nodeType": "YulVariableDeclaration", + "src": "17620:34:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "17637:6:9", + "nodeType": "YulIdentifier", + "src": "17637:6:9" + }, + { + "kind": "number", + "nativeSrc": "17645:4:9", + "nodeType": "YulLiteral", + "src": "17645:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17633:3:9", + "nodeType": "YulIdentifier", + "src": "17633:3:9" + }, + "nativeSrc": "17633:17:9", + "nodeType": "YulFunctionCall", + "src": "17633:17:9" + }, + { + "name": "n", + "nativeSrc": "17652:1:9", + "nodeType": "YulIdentifier", + "src": "17652:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17629:3:9", + "nodeType": "YulIdentifier", + "src": "17629:3:9" + }, + "nativeSrc": "17629:25:9", + "nodeType": "YulFunctionCall", + "src": "17629:25:9" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "17624:1:9", + "nodeType": "YulTypedName", + "src": "17624:1:9", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "17678:1:9", + "nodeType": "YulIdentifier", + "src": "17678:1:9" + }, + { + "kind": "number", + "nativeSrc": "17681:1:9", + "nodeType": "YulLiteral", + "src": "17681:1:9", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "17671:6:9", + "nodeType": "YulIdentifier", + "src": "17671:6:9" + }, + "nativeSrc": "17671:12:9", + "nodeType": "YulFunctionCall", + "src": "17671:12:9" + }, + "nativeSrc": "17671:12:9", + "nodeType": "YulExpressionStatement", + "src": "17671:12:9" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "17744:4:9", + "nodeType": "YulLiteral", + "src": "17744:4:9", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "o", + "nativeSrc": "17754:1:9", + "nodeType": "YulIdentifier", + "src": "17754:1:9" + }, + { + "kind": "number", + "nativeSrc": "17757:4:9", + "nodeType": "YulLiteral", + "src": "17757:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17750:3:9", + "nodeType": "YulIdentifier", + "src": "17750:3:9" + }, + "nativeSrc": "17750:12:9", + "nodeType": "YulFunctionCall", + "src": "17750:12:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "17737:6:9", + "nodeType": "YulIdentifier", + "src": "17737:6:9" + }, + "nativeSrc": "17737:26:9", + "nodeType": "YulFunctionCall", + "src": "17737:26:9" + }, + "nativeSrc": "17737:26:9", + "nodeType": "YulExpressionStatement", + "src": "17737:26:9" + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "17807:6:9", + "nodeType": "YulIdentifier", + "src": "17807:6:9" + }, + { + "name": "n", + "nativeSrc": "17815:1:9", + "nodeType": "YulIdentifier", + "src": "17815:1:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "17800:6:9", + "nodeType": "YulIdentifier", + "src": "17800:6:9" + }, + "nativeSrc": "17800:17:9", + "nodeType": "YulFunctionCall", + "src": "17800:17:9" + }, + "nativeSrc": "17800:17:9", + "nodeType": "YulExpressionStatement", + "src": "17800:17:9" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "start", + "nativeSrc": "17125:5:9", + "nodeType": "YulIdentifier", + "src": "17125:5:9" + }, + { + "name": "end", + "nativeSrc": "17132:3:9", + "nodeType": "YulIdentifier", + "src": "17132:3:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "17122:2:9", + "nodeType": "YulIdentifier", + "src": "17122:2:9" + }, + "nativeSrc": "17122:14:9", + "nodeType": "YulFunctionCall", + "src": "17122:14:9" + }, + "nativeSrc": "17119:733:9", + "nodeType": "YulIf", + "src": "17119:733:9" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2839, + "isOffset": false, + "isSlot": false, + "src": "17037:3:9", + "valueSize": 1 + }, + { + "declaration": 2839, + "isOffset": false, + "isSlot": false, + "src": "17045:3:9", + "valueSize": 1 + }, + { + "declaration": 2839, + "isOffset": false, + "isSlot": false, + "src": "17132:3:9", + "valueSize": 1 + }, + { + "declaration": 2839, + "isOffset": false, + "isSlot": false, + "src": "17206:3:9", + "valueSize": 1 + }, + { + "declaration": 2842, + "isOffset": false, + "isSlot": false, + "src": "17155:6:9", + "valueSize": 1 + }, + { + "declaration": 2842, + "isOffset": false, + "isSlot": false, + "src": "17459:6:9", + "valueSize": 1 + }, + { + "declaration": 2842, + "isOffset": false, + "isSlot": false, + "src": "17637:6:9", + "valueSize": 1 + }, + { + "declaration": 2842, + "isOffset": false, + "isSlot": false, + "src": "17807:6:9", + "valueSize": 1 + }, + { + "declaration": 2837, + "isOffset": false, + "isSlot": false, + "src": "17084:5:9", + "valueSize": 1 + }, + { + "declaration": 2837, + "isOffset": false, + "isSlot": false, + "src": "17094:5:9", + "valueSize": 1 + }, + { + "declaration": 2837, + "isOffset": false, + "isSlot": false, + "src": "17125:5:9", + "valueSize": 1 + }, + { + "declaration": 2837, + "isOffset": false, + "isSlot": false, + "src": "17211:5:9", + "valueSize": 1 + }, + { + "declaration": 2837, + "isOffset": false, + "isSlot": false, + "src": "17256:5:9", + "valueSize": 1 + }, + { + "declaration": 2835, + "isOffset": false, + "isSlot": false, + "src": "16981:7:9", + "valueSize": 1 + }, + { + "declaration": 2835, + "isOffset": false, + "isSlot": false, + "src": "17247:7:9", + "valueSize": 1 + } + ], + "id": 2844, + "nodeType": "InlineAssembly", + "src": "16943:919:9" + } + ] + }, + "documentation": { + "id": 2833, + "nodeType": "StructuredDocumentation", + "src": "16626:122:9", + "text": "@dev Returns a copy of `subject` sliced from `start` to `end` (exclusive).\n `start` and `end` are byte offsets." + }, + "id": 2846, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "slice", + "nameLocation": "16762:5:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2840, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2835, + "mutability": "mutable", + "name": "subject", + "nameLocation": "16781:7:9", + "nodeType": "VariableDeclaration", + "scope": 2846, + "src": "16768:20:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2834, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "16768:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2837, + "mutability": "mutable", + "name": "start", + "nameLocation": "16798:5:9", + "nodeType": "VariableDeclaration", + "scope": 2846, + "src": "16790:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2836, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16790:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2839, + "mutability": "mutable", + "name": "end", + "nameLocation": "16813:3:9", + "nodeType": "VariableDeclaration", + "scope": 2846, + "src": "16805:11:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2838, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16805:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "16767:50:9" + }, + "returnParameters": { + "id": 2843, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2842, + "mutability": "mutable", + "name": "result", + "nameLocation": "16878:6:9", + "nodeType": "VariableDeclaration", + "scope": 2846, + "src": "16865:19:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2841, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "16865:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "16864:21:9" + }, + "scope": 3089, + "src": "16753:1115:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2868, + "nodeType": "Block", + "src": "18118:66:9", + "statements": [ + { + "expression": { + "id": 2866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2856, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2854, + "src": "18128:6:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 2858, + "name": "subject", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2849, + "src": "18143:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 2859, + "name": "start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2851, + "src": "18152:5:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "arguments": [ + { + "id": 2862, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "18164:7:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2861, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18164:7:9", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 2860, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "18159:4:9", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2863, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18159:13:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 2864, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "18173:3:9", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "18159:17:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2857, + "name": "slice", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2846, + 2869 + ], + "referencedDeclaration": 2846, + "src": "18137:5:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)" + } + }, + "id": 2865, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18137:40:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "src": "18128:49:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 2867, + "nodeType": "ExpressionStatement", + "src": "18128:49:9" + } + ] + }, + "documentation": { + "id": 2847, + "nodeType": "StructuredDocumentation", + "src": "17874:115:9", + "text": "@dev Returns a copy of `subject` sliced from `start` to the end of the bytes.\n `start` is a byte offset." + }, + "id": 2869, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "slice", + "nameLocation": "18003:5:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2852, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2849, + "mutability": "mutable", + "name": "subject", + "nameLocation": "18022:7:9", + "nodeType": "VariableDeclaration", + "scope": 2869, + "src": "18009:20:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2848, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "18009:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2851, + "mutability": "mutable", + "name": "start", + "nameLocation": "18039:5:9", + "nodeType": "VariableDeclaration", + "scope": 2869, + "src": "18031:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2850, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18031:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "18008:37:9" + }, + "returnParameters": { + "id": 2855, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2854, + "mutability": "mutable", + "name": "result", + "nameLocation": "18106:6:9", + "nodeType": "VariableDeclaration", + "scope": 2869, + "src": "18093:19:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2853, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "18093:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "18092:21:9" + }, + "scope": 3089, + "src": "17994:190:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2882, + "nodeType": "Block", + "src": "18505:377:9", + "statements": [ + { + "AST": { + "nativeSrc": "18567:309:9", + "nodeType": "YulBlock", + "src": "18567:309:9", + "statements": [ + { + "nativeSrc": "18581:71:9", + "nodeType": "YulAssignment", + "src": "18581:71:9", + "value": { + "arguments": [ + { + "name": "end", + "nativeSrc": "18592:3:9", + "nodeType": "YulIdentifier", + "src": "18592:3:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "end", + "nativeSrc": "18605:3:9", + "nodeType": "YulIdentifier", + "src": "18605:3:9" + }, + { + "name": "subject.length", + "nativeSrc": "18610:14:9", + "nodeType": "YulIdentifier", + "src": "18610:14:9" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "18601:3:9", + "nodeType": "YulIdentifier", + "src": "18601:3:9" + }, + "nativeSrc": "18601:24:9", + "nodeType": "YulFunctionCall", + "src": "18601:24:9" + }, + { + "arguments": [ + { + "name": "subject.length", + "nativeSrc": "18630:14:9", + "nodeType": "YulIdentifier", + "src": "18630:14:9" + }, + { + "name": "end", + "nativeSrc": "18646:3:9", + "nodeType": "YulIdentifier", + "src": "18646:3:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "18627:2:9", + "nodeType": "YulIdentifier", + "src": "18627:2:9" + }, + "nativeSrc": "18627:23:9", + "nodeType": "YulFunctionCall", + "src": "18627:23:9" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "18597:3:9", + "nodeType": "YulIdentifier", + "src": "18597:3:9" + }, + "nativeSrc": "18597:54:9", + "nodeType": "YulFunctionCall", + "src": "18597:54:9" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "18588:3:9", + "nodeType": "YulIdentifier", + "src": "18588:3:9" + }, + "nativeSrc": "18588:64:9", + "nodeType": "YulFunctionCall", + "src": "18588:64:9" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "18581:3:9", + "nodeType": "YulIdentifier", + "src": "18581:3:9" + } + ] + }, + { + "nativeSrc": "18665:79:9", + "nodeType": "YulAssignment", + "src": "18665:79:9", + "value": { + "arguments": [ + { + "name": "start", + "nativeSrc": "18678:5:9", + "nodeType": "YulIdentifier", + "src": "18678:5:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "start", + "nativeSrc": "18693:5:9", + "nodeType": "YulIdentifier", + "src": "18693:5:9" + }, + { + "name": "subject.length", + "nativeSrc": "18700:14:9", + "nodeType": "YulIdentifier", + "src": "18700:14:9" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "18689:3:9", + "nodeType": "YulIdentifier", + "src": "18689:3:9" + }, + "nativeSrc": "18689:26:9", + "nodeType": "YulFunctionCall", + "src": "18689:26:9" + }, + { + "arguments": [ + { + "name": "subject.length", + "nativeSrc": "18720:14:9", + "nodeType": "YulIdentifier", + "src": "18720:14:9" + }, + { + "name": "start", + "nativeSrc": "18736:5:9", + "nodeType": "YulIdentifier", + "src": "18736:5:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "18717:2:9", + "nodeType": "YulIdentifier", + "src": "18717:2:9" + }, + "nativeSrc": "18717:25:9", + "nodeType": "YulFunctionCall", + "src": "18717:25:9" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "18685:3:9", + "nodeType": "YulIdentifier", + "src": "18685:3:9" + }, + "nativeSrc": "18685:58:9", + "nodeType": "YulFunctionCall", + "src": "18685:58:9" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "18674:3:9", + "nodeType": "YulIdentifier", + "src": "18674:3:9" + }, + "nativeSrc": "18674:70:9", + "nodeType": "YulFunctionCall", + "src": "18674:70:9" + }, + "variableNames": [ + { + "name": "start", + "nativeSrc": "18665:5:9", + "nodeType": "YulIdentifier", + "src": "18665:5:9" + } + ] + }, + { + "nativeSrc": "18757:43:9", + "nodeType": "YulAssignment", + "src": "18757:43:9", + "value": { + "arguments": [ + { + "name": "subject.offset", + "nativeSrc": "18778:14:9", + "nodeType": "YulIdentifier", + "src": "18778:14:9" + }, + { + "name": "start", + "nativeSrc": "18794:5:9", + "nodeType": "YulIdentifier", + "src": "18794:5:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18774:3:9", + "nodeType": "YulIdentifier", + "src": "18774:3:9" + }, + "nativeSrc": "18774:26:9", + "nodeType": "YulFunctionCall", + "src": "18774:26:9" + }, + "variableNames": [ + { + "name": "result.offset", + "nativeSrc": "18757:13:9", + "nodeType": "YulIdentifier", + "src": "18757:13:9" + } + ] + }, + { + "nativeSrc": "18813:53:9", + "nodeType": "YulAssignment", + "src": "18813:53:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "start", + "nativeSrc": "18837:5:9", + "nodeType": "YulIdentifier", + "src": "18837:5:9" + }, + { + "name": "end", + "nativeSrc": "18844:3:9", + "nodeType": "YulIdentifier", + "src": "18844:3:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "18834:2:9", + "nodeType": "YulIdentifier", + "src": "18834:2:9" + }, + "nativeSrc": "18834:14:9", + "nodeType": "YulFunctionCall", + "src": "18834:14:9" + }, + { + "arguments": [ + { + "name": "end", + "nativeSrc": "18854:3:9", + "nodeType": "YulIdentifier", + "src": "18854:3:9" + }, + { + "name": "start", + "nativeSrc": "18859:5:9", + "nodeType": "YulIdentifier", + "src": "18859:5:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "18850:3:9", + "nodeType": "YulIdentifier", + "src": "18850:3:9" + }, + "nativeSrc": "18850:15:9", + "nodeType": "YulFunctionCall", + "src": "18850:15:9" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "18830:3:9", + "nodeType": "YulIdentifier", + "src": "18830:3:9" + }, + "nativeSrc": "18830:36:9", + "nodeType": "YulFunctionCall", + "src": "18830:36:9" + }, + "variableNames": [ + { + "name": "result.length", + "nativeSrc": "18813:13:9", + "nodeType": "YulIdentifier", + "src": "18813:13:9" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2876, + "isOffset": false, + "isSlot": false, + "src": "18581:3:9", + "valueSize": 1 + }, + { + "declaration": 2876, + "isOffset": false, + "isSlot": false, + "src": "18592:3:9", + "valueSize": 1 + }, + { + "declaration": 2876, + "isOffset": false, + "isSlot": false, + "src": "18605:3:9", + "valueSize": 1 + }, + { + "declaration": 2876, + "isOffset": false, + "isSlot": false, + "src": "18646:3:9", + "valueSize": 1 + }, + { + "declaration": 2876, + "isOffset": false, + "isSlot": false, + "src": "18844:3:9", + "valueSize": 1 + }, + { + "declaration": 2876, + "isOffset": false, + "isSlot": false, + "src": "18854:3:9", + "valueSize": 1 + }, + { + "declaration": 2879, + "isOffset": false, + "isSlot": false, + "src": "18813:13:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 2879, + "isOffset": true, + "isSlot": false, + "src": "18757:13:9", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 2874, + "isOffset": false, + "isSlot": false, + "src": "18665:5:9", + "valueSize": 1 + }, + { + "declaration": 2874, + "isOffset": false, + "isSlot": false, + "src": "18678:5:9", + "valueSize": 1 + }, + { + "declaration": 2874, + "isOffset": false, + "isSlot": false, + "src": "18693:5:9", + "valueSize": 1 + }, + { + "declaration": 2874, + "isOffset": false, + "isSlot": false, + "src": "18736:5:9", + "valueSize": 1 + }, + { + "declaration": 2874, + "isOffset": false, + "isSlot": false, + "src": "18794:5:9", + "valueSize": 1 + }, + { + "declaration": 2874, + "isOffset": false, + "isSlot": false, + "src": "18837:5:9", + "valueSize": 1 + }, + { + "declaration": 2874, + "isOffset": false, + "isSlot": false, + "src": "18859:5:9", + "valueSize": 1 + }, + { + "declaration": 2872, + "isOffset": false, + "isSlot": false, + "src": "18610:14:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 2872, + "isOffset": false, + "isSlot": false, + "src": "18630:14:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 2872, + "isOffset": false, + "isSlot": false, + "src": "18700:14:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 2872, + "isOffset": false, + "isSlot": false, + "src": "18720:14:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 2872, + "isOffset": true, + "isSlot": false, + "src": "18778:14:9", + "suffix": "offset", + "valueSize": 1 + } + ], + "id": 2881, + "nodeType": "InlineAssembly", + "src": "18558:318:9" + } + ] + }, + "documentation": { + "id": 2870, + "nodeType": "StructuredDocumentation", + "src": "18190:161:9", + "text": "@dev Returns a copy of `subject` sliced from `start` to `end` (exclusive).\n `start` and `end` are byte offsets. Faster than Solidity's native slicing." + }, + "id": 2883, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sliceCalldata", + "nameLocation": "18365:13:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2877, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2872, + "mutability": "mutable", + "name": "subject", + "nameLocation": "18394:7:9", + "nodeType": "VariableDeclaration", + "scope": 2883, + "src": "18379:22:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2871, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "18379:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2874, + "mutability": "mutable", + "name": "start", + "nameLocation": "18411:5:9", + "nodeType": "VariableDeclaration", + "scope": 2883, + "src": "18403:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2873, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18403:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2876, + "mutability": "mutable", + "name": "end", + "nameLocation": "18426:3:9", + "nodeType": "VariableDeclaration", + "scope": 2883, + "src": "18418:11:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2875, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18418:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "18378:52:9" + }, + "returnParameters": { + "id": 2880, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2879, + "mutability": "mutable", + "name": "result", + "nameLocation": "18493:6:9", + "nodeType": "VariableDeclaration", + "scope": 2883, + "src": "18478:21:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2878, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "18478:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "18477:23:9" + }, + "scope": 3089, + "src": "18356:526:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2894, + "nodeType": "Block", + "src": "19183:315:9", + "statements": [ + { + "AST": { + "nativeSrc": "19245:247:9", + "nodeType": "YulBlock", + "src": "19245:247:9", + "statements": [ + { + "nativeSrc": "19259:79:9", + "nodeType": "YulAssignment", + "src": "19259:79:9", + "value": { + "arguments": [ + { + "name": "start", + "nativeSrc": "19272:5:9", + "nodeType": "YulIdentifier", + "src": "19272:5:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "start", + "nativeSrc": "19287:5:9", + "nodeType": "YulIdentifier", + "src": "19287:5:9" + }, + { + "name": "subject.length", + "nativeSrc": "19294:14:9", + "nodeType": "YulIdentifier", + "src": "19294:14:9" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "19283:3:9", + "nodeType": "YulIdentifier", + "src": "19283:3:9" + }, + "nativeSrc": "19283:26:9", + "nodeType": "YulFunctionCall", + "src": "19283:26:9" + }, + { + "arguments": [ + { + "name": "subject.length", + "nativeSrc": "19314:14:9", + "nodeType": "YulIdentifier", + "src": "19314:14:9" + }, + { + "name": "start", + "nativeSrc": "19330:5:9", + "nodeType": "YulIdentifier", + "src": "19330:5:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "19311:2:9", + "nodeType": "YulIdentifier", + "src": "19311:2:9" + }, + "nativeSrc": "19311:25:9", + "nodeType": "YulFunctionCall", + "src": "19311:25:9" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "19279:3:9", + "nodeType": "YulIdentifier", + "src": "19279:3:9" + }, + "nativeSrc": "19279:58:9", + "nodeType": "YulFunctionCall", + "src": "19279:58:9" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "19268:3:9", + "nodeType": "YulIdentifier", + "src": "19268:3:9" + }, + "nativeSrc": "19268:70:9", + "nodeType": "YulFunctionCall", + "src": "19268:70:9" + }, + "variableNames": [ + { + "name": "start", + "nativeSrc": "19259:5:9", + "nodeType": "YulIdentifier", + "src": "19259:5:9" + } + ] + }, + { + "nativeSrc": "19351:43:9", + "nodeType": "YulAssignment", + "src": "19351:43:9", + "value": { + "arguments": [ + { + "name": "subject.offset", + "nativeSrc": "19372:14:9", + "nodeType": "YulIdentifier", + "src": "19372:14:9" + }, + { + "name": "start", + "nativeSrc": "19388:5:9", + "nodeType": "YulIdentifier", + "src": "19388:5:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19368:3:9", + "nodeType": "YulIdentifier", + "src": "19368:3:9" + }, + "nativeSrc": "19368:26:9", + "nodeType": "YulFunctionCall", + "src": "19368:26:9" + }, + "variableNames": [ + { + "name": "result.offset", + "nativeSrc": "19351:13:9", + "nodeType": "YulIdentifier", + "src": "19351:13:9" + } + ] + }, + { + "nativeSrc": "19407:75:9", + "nodeType": "YulAssignment", + "src": "19407:75:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "start", + "nativeSrc": "19431:5:9", + "nodeType": "YulIdentifier", + "src": "19431:5:9" + }, + { + "name": "subject.length", + "nativeSrc": "19438:14:9", + "nodeType": "YulIdentifier", + "src": "19438:14:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "19428:2:9", + "nodeType": "YulIdentifier", + "src": "19428:2:9" + }, + "nativeSrc": "19428:25:9", + "nodeType": "YulFunctionCall", + "src": "19428:25:9" + }, + { + "arguments": [ + { + "name": "subject.length", + "nativeSrc": "19459:14:9", + "nodeType": "YulIdentifier", + "src": "19459:14:9" + }, + { + "name": "start", + "nativeSrc": "19475:5:9", + "nodeType": "YulIdentifier", + "src": "19475:5:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "19455:3:9", + "nodeType": "YulIdentifier", + "src": "19455:3:9" + }, + "nativeSrc": "19455:26:9", + "nodeType": "YulFunctionCall", + "src": "19455:26:9" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "19424:3:9", + "nodeType": "YulIdentifier", + "src": "19424:3:9" + }, + "nativeSrc": "19424:58:9", + "nodeType": "YulFunctionCall", + "src": "19424:58:9" + }, + "variableNames": [ + { + "name": "result.length", + "nativeSrc": "19407:13:9", + "nodeType": "YulIdentifier", + "src": "19407:13:9" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2891, + "isOffset": false, + "isSlot": false, + "src": "19407:13:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 2891, + "isOffset": true, + "isSlot": false, + "src": "19351:13:9", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 2888, + "isOffset": false, + "isSlot": false, + "src": "19259:5:9", + "valueSize": 1 + }, + { + "declaration": 2888, + "isOffset": false, + "isSlot": false, + "src": "19272:5:9", + "valueSize": 1 + }, + { + "declaration": 2888, + "isOffset": false, + "isSlot": false, + "src": "19287:5:9", + "valueSize": 1 + }, + { + "declaration": 2888, + "isOffset": false, + "isSlot": false, + "src": "19330:5:9", + "valueSize": 1 + }, + { + "declaration": 2888, + "isOffset": false, + "isSlot": false, + "src": "19388:5:9", + "valueSize": 1 + }, + { + "declaration": 2888, + "isOffset": false, + "isSlot": false, + "src": "19431:5:9", + "valueSize": 1 + }, + { + "declaration": 2888, + "isOffset": false, + "isSlot": false, + "src": "19475:5:9", + "valueSize": 1 + }, + { + "declaration": 2886, + "isOffset": false, + "isSlot": false, + "src": "19294:14:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 2886, + "isOffset": false, + "isSlot": false, + "src": "19314:14:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 2886, + "isOffset": false, + "isSlot": false, + "src": "19438:14:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 2886, + "isOffset": false, + "isSlot": false, + "src": "19459:14:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 2886, + "isOffset": true, + "isSlot": false, + "src": "19372:14:9", + "suffix": "offset", + "valueSize": 1 + } + ], + "id": 2893, + "nodeType": "InlineAssembly", + "src": "19236:256:9" + } + ] + }, + "documentation": { + "id": 2884, + "nodeType": "StructuredDocumentation", + "src": "18888:154:9", + "text": "@dev Returns a copy of `subject` sliced from `start` to the end of the bytes.\n `start` is a byte offset. Faster than Solidity's native slicing." + }, + "id": 2895, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sliceCalldata", + "nameLocation": "19056:13:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2889, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2886, + "mutability": "mutable", + "name": "subject", + "nameLocation": "19085:7:9", + "nodeType": "VariableDeclaration", + "scope": 2895, + "src": "19070:22:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2885, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "19070:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2888, + "mutability": "mutable", + "name": "start", + "nameLocation": "19102:5:9", + "nodeType": "VariableDeclaration", + "scope": 2895, + "src": "19094:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2887, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19094:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "19069:39:9" + }, + "returnParameters": { + "id": 2892, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2891, + "mutability": "mutable", + "name": "result", + "nameLocation": "19171:6:9", + "nodeType": "VariableDeclaration", + "scope": 2895, + "src": "19156:21:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2890, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "19156:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "19155:23:9" + }, + "scope": 3089, + "src": "19047:451:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2906, + "nodeType": "Block", + "src": "19754:166:9", + "statements": [ + { + "AST": { + "nativeSrc": "19816:98:9", + "nodeType": "YulBlock", + "src": "19816:98:9", + "statements": [ + { + "nativeSrc": "19830:17:9", + "nodeType": "YulAssignment", + "src": "19830:17:9", + "value": { + "name": "subject", + "nativeSrc": "19840:7:9", + "nodeType": "YulIdentifier", + "src": "19840:7:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "19830:6:9", + "nodeType": "YulIdentifier", + "src": "19830:6:9" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "n", + "nativeSrc": "19874:1:9", + "nodeType": "YulIdentifier", + "src": "19874:1:9" + }, + { + "arguments": [ + { + "name": "result", + "nativeSrc": "19883:6:9", + "nodeType": "YulIdentifier", + "src": "19883:6:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "19877:5:9", + "nodeType": "YulIdentifier", + "src": "19877:5:9" + }, + "nativeSrc": "19877:13:9", + "nodeType": "YulFunctionCall", + "src": "19877:13:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "19871:2:9", + "nodeType": "YulIdentifier", + "src": "19871:2:9" + }, + "nativeSrc": "19871:20:9", + "nodeType": "YulFunctionCall", + "src": "19871:20:9" + }, + { + "name": "result", + "nativeSrc": "19893:6:9", + "nodeType": "YulIdentifier", + "src": "19893:6:9" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "19867:3:9", + "nodeType": "YulIdentifier", + "src": "19867:3:9" + }, + "nativeSrc": "19867:33:9", + "nodeType": "YulFunctionCall", + "src": "19867:33:9" + }, + { + "name": "n", + "nativeSrc": "19902:1:9", + "nodeType": "YulIdentifier", + "src": "19902:1:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "19860:6:9", + "nodeType": "YulIdentifier", + "src": "19860:6:9" + }, + "nativeSrc": "19860:44:9", + "nodeType": "YulFunctionCall", + "src": "19860:44:9" + }, + "nativeSrc": "19860:44:9", + "nodeType": "YulExpressionStatement", + "src": "19860:44:9" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2900, + "isOffset": false, + "isSlot": false, + "src": "19874:1:9", + "valueSize": 1 + }, + { + "declaration": 2900, + "isOffset": false, + "isSlot": false, + "src": "19902:1:9", + "valueSize": 1 + }, + { + "declaration": 2903, + "isOffset": false, + "isSlot": false, + "src": "19830:6:9", + "valueSize": 1 + }, + { + "declaration": 2903, + "isOffset": false, + "isSlot": false, + "src": "19883:6:9", + "valueSize": 1 + }, + { + "declaration": 2903, + "isOffset": false, + "isSlot": false, + "src": "19893:6:9", + "valueSize": 1 + }, + { + "declaration": 2898, + "isOffset": false, + "isSlot": false, + "src": "19840:7:9", + "valueSize": 1 + } + ], + "id": 2905, + "nodeType": "InlineAssembly", + "src": "19807:107:9" + } + ] + }, + "documentation": { + "id": 2896, + "nodeType": "StructuredDocumentation", + "src": "19504:122:9", + "text": "@dev Reduces the size of `subject` to `n`.\n If `n` is greater than the size of `subject`, this will be a no-op." + }, + "id": 2907, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "truncate", + "nameLocation": "19640:8:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2901, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2898, + "mutability": "mutable", + "name": "subject", + "nameLocation": "19662:7:9", + "nodeType": "VariableDeclaration", + "scope": 2907, + "src": "19649:20:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2897, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "19649:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2900, + "mutability": "mutable", + "name": "n", + "nameLocation": "19679:1:9", + "nodeType": "VariableDeclaration", + "scope": 2907, + "src": "19671:9:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2899, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19671:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "19648:33:9" + }, + "returnParameters": { + "id": 2904, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2903, + "mutability": "mutable", + "name": "result", + "nameLocation": "19742:6:9", + "nodeType": "VariableDeclaration", + "scope": 2907, + "src": "19729:19:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2902, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "19729:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "19728:21:9" + }, + "scope": 3089, + "src": "19631:289:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2918, + "nodeType": "Block", + "src": "20212:211:9", + "statements": [ + { + "AST": { + "nativeSrc": "20274:143:9", + "nodeType": "YulBlock", + "src": "20274:143:9", + "statements": [ + { + "nativeSrc": "20288:31:9", + "nodeType": "YulAssignment", + "src": "20288:31:9", + "value": { + "name": "subject.offset", + "nativeSrc": "20305:14:9", + "nodeType": "YulIdentifier", + "src": "20305:14:9" + }, + "variableNames": [ + { + "name": "result.offset", + "nativeSrc": "20288:13:9", + "nodeType": "YulIdentifier", + "src": "20288:13:9" + } + ] + }, + { + "nativeSrc": "20332:75:9", + "nodeType": "YulAssignment", + "src": "20332:75:9", + "value": { + "arguments": [ + { + "name": "n", + "nativeSrc": "20353:1:9", + "nodeType": "YulIdentifier", + "src": "20353:1:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "n", + "nativeSrc": "20364:1:9", + "nodeType": "YulIdentifier", + "src": "20364:1:9" + }, + { + "name": "subject.length", + "nativeSrc": "20367:14:9", + "nodeType": "YulIdentifier", + "src": "20367:14:9" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "20360:3:9", + "nodeType": "YulIdentifier", + "src": "20360:3:9" + }, + "nativeSrc": "20360:22:9", + "nodeType": "YulFunctionCall", + "src": "20360:22:9" + }, + { + "arguments": [ + { + "name": "subject.length", + "nativeSrc": "20387:14:9", + "nodeType": "YulIdentifier", + "src": "20387:14:9" + }, + { + "name": "n", + "nativeSrc": "20403:1:9", + "nodeType": "YulIdentifier", + "src": "20403:1:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "20384:2:9", + "nodeType": "YulIdentifier", + "src": "20384:2:9" + }, + "nativeSrc": "20384:21:9", + "nodeType": "YulFunctionCall", + "src": "20384:21:9" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "20356:3:9", + "nodeType": "YulIdentifier", + "src": "20356:3:9" + }, + "nativeSrc": "20356:50:9", + "nodeType": "YulFunctionCall", + "src": "20356:50:9" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "20349:3:9", + "nodeType": "YulIdentifier", + "src": "20349:3:9" + }, + "nativeSrc": "20349:58:9", + "nodeType": "YulFunctionCall", + "src": "20349:58:9" + }, + "variableNames": [ + { + "name": "result.length", + "nativeSrc": "20332:13:9", + "nodeType": "YulIdentifier", + "src": "20332:13:9" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2912, + "isOffset": false, + "isSlot": false, + "src": "20353:1:9", + "valueSize": 1 + }, + { + "declaration": 2912, + "isOffset": false, + "isSlot": false, + "src": "20364:1:9", + "valueSize": 1 + }, + { + "declaration": 2912, + "isOffset": false, + "isSlot": false, + "src": "20403:1:9", + "valueSize": 1 + }, + { + "declaration": 2915, + "isOffset": false, + "isSlot": false, + "src": "20332:13:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 2915, + "isOffset": true, + "isSlot": false, + "src": "20288:13:9", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 2910, + "isOffset": false, + "isSlot": false, + "src": "20367:14:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 2910, + "isOffset": false, + "isSlot": false, + "src": "20387:14:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 2910, + "isOffset": true, + "isSlot": false, + "src": "20305:14:9", + "suffix": "offset", + "valueSize": 1 + } + ], + "id": 2917, + "nodeType": "InlineAssembly", + "src": "20265:152:9" + } + ] + }, + "documentation": { + "id": 2908, + "nodeType": "StructuredDocumentation", + "src": "19926:145:9", + "text": "@dev Returns a copy of `subject`, with the length reduced to `n`.\n If `n` is greater than the size of `subject`, this will be a no-op." + }, + "id": 2919, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "truncatedCalldata", + "nameLocation": "20085:17:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2913, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2910, + "mutability": "mutable", + "name": "subject", + "nameLocation": "20118:7:9", + "nodeType": "VariableDeclaration", + "scope": 2919, + "src": "20103:22:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2909, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "20103:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2912, + "mutability": "mutable", + "name": "n", + "nameLocation": "20135:1:9", + "nodeType": "VariableDeclaration", + "scope": 2919, + "src": "20127:9:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2911, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20127:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "20102:35:9" + }, + "returnParameters": { + "id": 2916, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2915, + "mutability": "mutable", + "name": "result", + "nameLocation": "20200:6:9", + "nodeType": "VariableDeclaration", + "scope": 2919, + "src": "20185:21:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2914, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "20185:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "20184:23:9" + }, + "scope": 3089, + "src": "20076:347:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2931, + "nodeType": "Block", + "src": "20668:1991:9", + "statements": [ + { + "AST": { + "nativeSrc": "20730:1923:9", + "nodeType": "YulBlock", + "src": "20730:1923:9", + "statements": [ + { + "nativeSrc": "20744:30:9", + "nodeType": "YulVariableDeclaration", + "src": "20744:30:9", + "value": { + "arguments": [ + { + "name": "needle", + "nativeSrc": "20767:6:9", + "nodeType": "YulIdentifier", + "src": "20767:6:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "20761:5:9", + "nodeType": "YulIdentifier", + "src": "20761:5:9" + }, + "nativeSrc": "20761:13:9", + "nodeType": "YulFunctionCall", + "src": "20761:13:9" + }, + "variables": [ + { + "name": "searchLen", + "nativeSrc": "20748:9:9", + "nodeType": "YulTypedName", + "src": "20748:9:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "20828:1815:9", + "nodeType": "YulBlock", + "src": "20828:1815:9", + "statements": [ + { + "nativeSrc": "20846:21:9", + "nodeType": "YulAssignment", + "src": "20846:21:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20862:4:9", + "nodeType": "YulLiteral", + "src": "20862:4:9", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "20856:5:9", + "nodeType": "YulIdentifier", + "src": "20856:5:9" + }, + "nativeSrc": "20856:11:9", + "nodeType": "YulFunctionCall", + "src": "20856:11:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "20846:6:9", + "nodeType": "YulIdentifier", + "src": "20846:6:9" + } + ] + }, + { + "nativeSrc": "20884:27:9", + "nodeType": "YulVariableDeclaration", + "src": "20884:27:9", + "value": { + "arguments": [ + { + "name": "subject", + "nativeSrc": "20897:7:9", + "nodeType": "YulIdentifier", + "src": "20897:7:9" + }, + { + "kind": "number", + "nativeSrc": "20906:4:9", + "nodeType": "YulLiteral", + "src": "20906:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20893:3:9", + "nodeType": "YulIdentifier", + "src": "20893:3:9" + }, + "nativeSrc": "20893:18:9", + "nodeType": "YulFunctionCall", + "src": "20893:18:9" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "20888:1:9", + "nodeType": "YulTypedName", + "src": "20888:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "20928:26:9", + "nodeType": "YulVariableDeclaration", + "src": "20928:26:9", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "20941:6:9", + "nodeType": "YulIdentifier", + "src": "20941:6:9" + }, + { + "kind": "number", + "nativeSrc": "20949:4:9", + "nodeType": "YulLiteral", + "src": "20949:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20937:3:9", + "nodeType": "YulIdentifier", + "src": "20937:3:9" + }, + "nativeSrc": "20937:17:9", + "nodeType": "YulFunctionCall", + "src": "20937:17:9" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "20932:1:9", + "nodeType": "YulTypedName", + "src": "20932:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "20971:70:9", + "nodeType": "YulVariableDeclaration", + "src": "20971:70:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "21007:1:9", + "nodeType": "YulIdentifier", + "src": "21007:1:9" + }, + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "21016:7:9", + "nodeType": "YulIdentifier", + "src": "21016:7:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "21010:5:9", + "nodeType": "YulIdentifier", + "src": "21010:5:9" + }, + "nativeSrc": "21010:14:9", + "nodeType": "YulFunctionCall", + "src": "21010:14:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21003:3:9", + "nodeType": "YulIdentifier", + "src": "21003:3:9" + }, + "nativeSrc": "21003:22:9", + "nodeType": "YulFunctionCall", + "src": "21003:22:9" + }, + { + "name": "searchLen", + "nativeSrc": "21027:9:9", + "nodeType": "YulIdentifier", + "src": "21027:9:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "20999:3:9", + "nodeType": "YulIdentifier", + "src": "20999:3:9" + }, + "nativeSrc": "20999:38:9", + "nodeType": "YulFunctionCall", + "src": "20999:38:9" + }, + { + "kind": "number", + "nativeSrc": "21039:1:9", + "nodeType": "YulLiteral", + "src": "21039:1:9", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20995:3:9", + "nodeType": "YulIdentifier", + "src": "20995:3:9" + }, + "nativeSrc": "20995:46:9", + "nodeType": "YulFunctionCall", + "src": "20995:46:9" + }, + "variables": [ + { + "name": "subjectSearchEnd", + "nativeSrc": "20975:16:9", + "nodeType": "YulTypedName", + "src": "20975:16:9", + "type": "" + } + ] + }, + { + "nativeSrc": "21058:10:9", + "nodeType": "YulVariableDeclaration", + "src": "21058:10:9", + "value": { + "kind": "number", + "nativeSrc": "21067:1:9", + "nodeType": "YulLiteral", + "src": "21067:1:9", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "h", + "nativeSrc": "21062:1:9", + "nodeType": "YulTypedName", + "src": "21062:1:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "21141:48:9", + "nodeType": "YulBlock", + "src": "21141:48:9", + "statements": [ + { + "nativeSrc": "21143:44:9", + "nodeType": "YulAssignment", + "src": "21143:44:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "needle", + "nativeSrc": "21162:6:9", + "nodeType": "YulIdentifier", + "src": "21162:6:9" + }, + { + "kind": "number", + "nativeSrc": "21170:4:9", + "nodeType": "YulLiteral", + "src": "21170:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21158:3:9", + "nodeType": "YulIdentifier", + "src": "21158:3:9" + }, + "nativeSrc": "21158:17:9", + "nodeType": "YulFunctionCall", + "src": "21158:17:9" + }, + { + "name": "searchLen", + "nativeSrc": "21177:9:9", + "nodeType": "YulIdentifier", + "src": "21177:9:9" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "21148:9:9", + "nodeType": "YulIdentifier", + "src": "21148:9:9" + }, + "nativeSrc": "21148:39:9", + "nodeType": "YulFunctionCall", + "src": "21148:39:9" + }, + "variableNames": [ + { + "name": "h", + "nativeSrc": "21143:1:9", + "nodeType": "YulIdentifier", + "src": "21143:1:9" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "searchLen", + "nativeSrc": "21123:9:9", + "nodeType": "YulIdentifier", + "src": "21123:9:9" + }, + { + "kind": "number", + "nativeSrc": "21134:4:9", + "nodeType": "YulLiteral", + "src": "21134:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "21120:2:9", + "nodeType": "YulIdentifier", + "src": "21120:2:9" + }, + "nativeSrc": "21120:19:9", + "nodeType": "YulFunctionCall", + "src": "21120:19:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "21113:6:9", + "nodeType": "YulIdentifier", + "src": "21113:6:9" + }, + "nativeSrc": "21113:27:9", + "nodeType": "YulFunctionCall", + "src": "21113:27:9" + }, + "nativeSrc": "21110:79:9", + "nodeType": "YulIf", + "src": "21110:79:9" + }, + { + "nativeSrc": "21206:33:9", + "nodeType": "YulVariableDeclaration", + "src": "21206:33:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "needle", + "nativeSrc": "21225:6:9", + "nodeType": "YulIdentifier", + "src": "21225:6:9" + }, + { + "kind": "number", + "nativeSrc": "21233:4:9", + "nodeType": "YulLiteral", + "src": "21233:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21221:3:9", + "nodeType": "YulIdentifier", + "src": "21221:3:9" + }, + "nativeSrc": "21221:17:9", + "nodeType": "YulFunctionCall", + "src": "21221:17:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "21215:5:9", + "nodeType": "YulIdentifier", + "src": "21215:5:9" + }, + "nativeSrc": "21215:24:9", + "nodeType": "YulFunctionCall", + "src": "21215:24:9" + }, + "variables": [ + { + "name": "s", + "nativeSrc": "21210:1:9", + "nodeType": "YulTypedName", + "src": "21210:1:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "21318:1033:9", + "nodeType": "YulBlock", + "src": "21318:1033:9", + "statements": [ + { + "nativeSrc": "21340:17:9", + "nodeType": "YulVariableDeclaration", + "src": "21340:17:9", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "21355:1:9", + "nodeType": "YulIdentifier", + "src": "21355:1:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "21349:5:9", + "nodeType": "YulIdentifier", + "src": "21349:5:9" + }, + "nativeSrc": "21349:8:9", + "nodeType": "YulFunctionCall", + "src": "21349:8:9" + }, + "variables": [ + { + "name": "t", + "nativeSrc": "21344:1:9", + "nodeType": "YulTypedName", + "src": "21344:1:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "21506:727:9", + "nodeType": "YulBlock", + "src": "21506:727:9", + "statements": [ + { + "body": { + "nativeSrc": "21537:294:9", + "nodeType": "YulBlock", + "src": "21537:294:9", + "statements": [ + { + "body": { + "nativeSrc": "21609:196:9", + "nodeType": "YulBlock", + "src": "21609:196:9", + "statements": [ + { + "nativeSrc": "21643:14:9", + "nodeType": "YulAssignment", + "src": "21643:14:9", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "21652:1:9", + "nodeType": "YulIdentifier", + "src": "21652:1:9" + }, + { + "kind": "number", + "nativeSrc": "21655:1:9", + "nodeType": "YulLiteral", + "src": "21655:1:9", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21648:3:9", + "nodeType": "YulIdentifier", + "src": "21648:3:9" + }, + "nativeSrc": "21648:9:9", + "nodeType": "YulFunctionCall", + "src": "21648:9:9" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "21643:1:9", + "nodeType": "YulIdentifier", + "src": "21643:1:9" + } + ] + }, + { + "body": { + "nativeSrc": "21725:9:9", + "nodeType": "YulBlock", + "src": "21725:9:9", + "statements": [ + { + "nativeSrc": "21727:5:9", + "nodeType": "YulBreak", + "src": "21727:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "21703:1:9", + "nodeType": "YulIdentifier", + "src": "21703:1:9" + }, + { + "name": "subjectSearchEnd", + "nativeSrc": "21706:16:9", + "nodeType": "YulIdentifier", + "src": "21706:16:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "21700:2:9", + "nodeType": "YulIdentifier", + "src": "21700:2:9" + }, + "nativeSrc": "21700:23:9", + "nodeType": "YulFunctionCall", + "src": "21700:23:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "21693:6:9", + "nodeType": "YulIdentifier", + "src": "21693:6:9" + }, + "nativeSrc": "21693:31:9", + "nodeType": "YulFunctionCall", + "src": "21693:31:9" + }, + "nativeSrc": "21690:44:9", + "nodeType": "YulIf", + "src": "21690:44:9" + }, + { + "nativeSrc": "21767:8:9", + "nodeType": "YulContinue", + "src": "21767:8:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "21590:1:9", + "nodeType": "YulIdentifier", + "src": "21590:1:9" + }, + { + "name": "searchLen", + "nativeSrc": "21593:9:9", + "nodeType": "YulIdentifier", + "src": "21593:9:9" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "21580:9:9", + "nodeType": "YulIdentifier", + "src": "21580:9:9" + }, + "nativeSrc": "21580:23:9", + "nodeType": "YulFunctionCall", + "src": "21580:23:9" + }, + { + "name": "h", + "nativeSrc": "21605:1:9", + "nodeType": "YulIdentifier", + "src": "21605:1:9" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "21577:2:9", + "nodeType": "YulIdentifier", + "src": "21577:2:9" + }, + "nativeSrc": "21577:30:9", + "nodeType": "YulFunctionCall", + "src": "21577:30:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "21570:6:9", + "nodeType": "YulIdentifier", + "src": "21570:6:9" + }, + "nativeSrc": "21570:38:9", + "nodeType": "YulFunctionCall", + "src": "21570:38:9" + }, + "nativeSrc": "21567:238:9", + "nodeType": "YulIf", + "src": "21567:238:9" + } + ] + }, + "condition": { + "name": "h", + "nativeSrc": "21535:1:9", + "nodeType": "YulIdentifier", + "src": "21535:1:9" + }, + "nativeSrc": "21532:299:9", + "nodeType": "YulIf", + "src": "21532:299:9" + }, + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "21863:1:9", + "nodeType": "YulIdentifier", + "src": "21863:1:9" + }, + { + "arguments": [ + { + "name": "i", + "nativeSrc": "21870:1:9", + "nodeType": "YulIdentifier", + "src": "21870:1:9" + }, + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "21877:7:9", + "nodeType": "YulIdentifier", + "src": "21877:7:9" + }, + { + "kind": "number", + "nativeSrc": "21886:4:9", + "nodeType": "YulLiteral", + "src": "21886:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21873:3:9", + "nodeType": "YulIdentifier", + "src": "21873:3:9" + }, + "nativeSrc": "21873:18:9", + "nodeType": "YulFunctionCall", + "src": "21873:18:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "21866:3:9", + "nodeType": "YulIdentifier", + "src": "21866:3:9" + }, + "nativeSrc": "21866:26:9", + "nodeType": "YulFunctionCall", + "src": "21866:26:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "21856:6:9", + "nodeType": "YulIdentifier", + "src": "21856:6:9" + }, + "nativeSrc": "21856:37:9", + "nodeType": "YulFunctionCall", + "src": "21856:37:9" + }, + "nativeSrc": "21856:37:9", + "nodeType": "YulExpressionStatement", + "src": "21856:37:9" + }, + { + "nativeSrc": "21941:17:9", + "nodeType": "YulAssignment", + "src": "21941:17:9", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "21950:1:9", + "nodeType": "YulIdentifier", + "src": "21950:1:9" + }, + { + "kind": "number", + "nativeSrc": "21953:4:9", + "nodeType": "YulLiteral", + "src": "21953:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21946:3:9", + "nodeType": "YulIdentifier", + "src": "21946:3:9" + }, + "nativeSrc": "21946:12:9", + "nodeType": "YulFunctionCall", + "src": "21946:12:9" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "21941:1:9", + "nodeType": "YulIdentifier", + "src": "21941:1:9" + } + ] + }, + { + "nativeSrc": "21983:22:9", + "nodeType": "YulAssignment", + "src": "21983:22:9", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "21992:1:9", + "nodeType": "YulIdentifier", + "src": "21992:1:9" + }, + { + "name": "searchLen", + "nativeSrc": "21995:9:9", + "nodeType": "YulIdentifier", + "src": "21995:9:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21988:3:9", + "nodeType": "YulIdentifier", + "src": "21988:3:9" + }, + "nativeSrc": "21988:17:9", + "nodeType": "YulFunctionCall", + "src": "21988:17:9" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "21983:1:9", + "nodeType": "YulIdentifier", + "src": "21983:1:9" + } + ] + }, + { + "body": { + "nativeSrc": "22074:137:9", + "nodeType": "YulBlock", + "src": "22074:137:9", + "statements": [ + { + "body": { + "nativeSrc": "22139:9:9", + "nodeType": "YulBlock", + "src": "22139:9:9", + "statements": [ + { + "nativeSrc": "22141:5:9", + "nodeType": "YulBreak", + "src": "22141:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "22117:1:9", + "nodeType": "YulIdentifier", + "src": "22117:1:9" + }, + { + "name": "subjectSearchEnd", + "nativeSrc": "22120:16:9", + "nodeType": "YulIdentifier", + "src": "22120:16:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "22114:2:9", + "nodeType": "YulIdentifier", + "src": "22114:2:9" + }, + "nativeSrc": "22114:23:9", + "nodeType": "YulFunctionCall", + "src": "22114:23:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "22107:6:9", + "nodeType": "YulIdentifier", + "src": "22107:6:9" + }, + "nativeSrc": "22107:31:9", + "nodeType": "YulFunctionCall", + "src": "22107:31:9" + }, + "nativeSrc": "22104:44:9", + "nodeType": "YulIf", + "src": "22104:44:9" + }, + { + "nativeSrc": "22177:8:9", + "nodeType": "YulContinue", + "src": "22177:8:9" + } + ] + }, + "condition": { + "name": "searchLen", + "nativeSrc": "22064:9:9", + "nodeType": "YulIdentifier", + "src": "22064:9:9" + }, + "nativeSrc": "22061:150:9", + "nodeType": "YulIf", + "src": "22061:150:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "21491:1:9", + "nodeType": "YulIdentifier", + "src": "21491:1:9" + }, + { + "arguments": [ + { + "name": "t", + "nativeSrc": "21498:1:9", + "nodeType": "YulIdentifier", + "src": "21498:1:9" + }, + { + "name": "s", + "nativeSrc": "21501:1:9", + "nodeType": "YulIdentifier", + "src": "21501:1:9" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "21494:3:9", + "nodeType": "YulIdentifier", + "src": "21494:3:9" + }, + "nativeSrc": "21494:9:9", + "nodeType": "YulFunctionCall", + "src": "21494:9:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "21487:3:9", + "nodeType": "YulIdentifier", + "src": "21487:3:9" + }, + "nativeSrc": "21487:17:9", + "nodeType": "YulFunctionCall", + "src": "21487:17:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "21480:6:9", + "nodeType": "YulIdentifier", + "src": "21480:6:9" + }, + "nativeSrc": "21480:25:9", + "nodeType": "YulFunctionCall", + "src": "21480:25:9" + }, + "nativeSrc": "21477:756:9", + "nodeType": "YulIf", + "src": "21477:756:9" + }, + { + "nativeSrc": "22254:14:9", + "nodeType": "YulAssignment", + "src": "22254:14:9", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "22263:1:9", + "nodeType": "YulIdentifier", + "src": "22263:1:9" + }, + { + "kind": "number", + "nativeSrc": "22266:1:9", + "nodeType": "YulLiteral", + "src": "22266:1:9", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22259:3:9", + "nodeType": "YulIdentifier", + "src": "22259:3:9" + }, + "nativeSrc": "22259:9:9", + "nodeType": "YulFunctionCall", + "src": "22259:9:9" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "22254:1:9", + "nodeType": "YulIdentifier", + "src": "22254:1:9" + } + ] + }, + { + "body": { + "nativeSrc": "22324:9:9", + "nodeType": "YulBlock", + "src": "22324:9:9", + "statements": [ + { + "nativeSrc": "22326:5:9", + "nodeType": "YulBreak", + "src": "22326:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "22302:1:9", + "nodeType": "YulIdentifier", + "src": "22302:1:9" + }, + { + "name": "subjectSearchEnd", + "nativeSrc": "22305:16:9", + "nodeType": "YulIdentifier", + "src": "22305:16:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "22299:2:9", + "nodeType": "YulIdentifier", + "src": "22299:2:9" + }, + "nativeSrc": "22299:23:9", + "nodeType": "YulFunctionCall", + "src": "22299:23:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "22292:6:9", + "nodeType": "YulIdentifier", + "src": "22292:6:9" + }, + "nativeSrc": "22292:31:9", + "nodeType": "YulFunctionCall", + "src": "22292:31:9" + }, + "nativeSrc": "22289:44:9", + "nodeType": "YulIf", + "src": "22289:44:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "21313:1:9", + "nodeType": "YulLiteral", + "src": "21313:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "21256:1095:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "21315:2:9", + "nodeType": "YulBlock", + "src": "21315:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "21260:52:9", + "nodeType": "YulBlock", + "src": "21260:52:9", + "statements": [ + { + "nativeSrc": "21262:48:9", + "nodeType": "YulVariableDeclaration", + "src": "21262:48:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21275:1:9", + "nodeType": "YulLiteral", + "src": "21275:1:9", + "type": "", + "value": "3" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21282:4:9", + "nodeType": "YulLiteral", + "src": "21282:4:9", + "type": "", + "value": "0x20" + }, + { + "arguments": [ + { + "name": "searchLen", + "nativeSrc": "21292:9:9", + "nodeType": "YulIdentifier", + "src": "21292:9:9" + }, + { + "kind": "number", + "nativeSrc": "21303:4:9", + "nodeType": "YulLiteral", + "src": "21303:4:9", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "21288:3:9", + "nodeType": "YulIdentifier", + "src": "21288:3:9" + }, + "nativeSrc": "21288:20:9", + "nodeType": "YulFunctionCall", + "src": "21288:20:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "21278:3:9", + "nodeType": "YulIdentifier", + "src": "21278:3:9" + }, + "nativeSrc": "21278:31:9", + "nodeType": "YulFunctionCall", + "src": "21278:31:9" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "21271:3:9", + "nodeType": "YulIdentifier", + "src": "21271:3:9" + }, + "nativeSrc": "21271:39:9", + "nodeType": "YulFunctionCall", + "src": "21271:39:9" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "21266:1:9", + "nodeType": "YulTypedName", + "src": "21266:1:9", + "type": "" + } + ] + } + ] + }, + "src": "21256:1095:9" + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "22375:6:9", + "nodeType": "YulIdentifier", + "src": "22375:6:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22387:1:9", + "nodeType": "YulLiteral", + "src": "22387:1:9", + "type": "", + "value": "5" + }, + { + "arguments": [ + { + "name": "o", + "nativeSrc": "22394:1:9", + "nodeType": "YulIdentifier", + "src": "22394:1:9" + }, + { + "arguments": [ + { + "name": "result", + "nativeSrc": "22401:6:9", + "nodeType": "YulIdentifier", + "src": "22401:6:9" + }, + { + "kind": "number", + "nativeSrc": "22409:4:9", + "nodeType": "YulLiteral", + "src": "22409:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22397:3:9", + "nodeType": "YulIdentifier", + "src": "22397:3:9" + }, + "nativeSrc": "22397:17:9", + "nodeType": "YulFunctionCall", + "src": "22397:17:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "22390:3:9", + "nodeType": "YulIdentifier", + "src": "22390:3:9" + }, + "nativeSrc": "22390:25:9", + "nodeType": "YulFunctionCall", + "src": "22390:25:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "22383:3:9", + "nodeType": "YulIdentifier", + "src": "22383:3:9" + }, + "nativeSrc": "22383:33:9", + "nodeType": "YulFunctionCall", + "src": "22383:33:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22368:6:9", + "nodeType": "YulIdentifier", + "src": "22368:6:9" + }, + "nativeSrc": "22368:49:9", + "nodeType": "YulFunctionCall", + "src": "22368:49:9" + }, + "nativeSrc": "22368:49:9", + "nodeType": "YulExpressionStatement", + "src": "22368:49:9" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22610:4:9", + "nodeType": "YulLiteral", + "src": "22610:4:9", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "o", + "nativeSrc": "22620:1:9", + "nodeType": "YulIdentifier", + "src": "22620:1:9" + }, + { + "kind": "number", + "nativeSrc": "22623:4:9", + "nodeType": "YulLiteral", + "src": "22623:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22616:3:9", + "nodeType": "YulIdentifier", + "src": "22616:3:9" + }, + "nativeSrc": "22616:12:9", + "nodeType": "YulFunctionCall", + "src": "22616:12:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22603:6:9", + "nodeType": "YulIdentifier", + "src": "22603:6:9" + }, + "nativeSrc": "22603:26:9", + "nodeType": "YulFunctionCall", + "src": "22603:26:9" + }, + "nativeSrc": "22603:26:9", + "nodeType": "YulExpressionStatement", + "src": "22603:26:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "searchLen", + "nativeSrc": "20800:9:9", + "nodeType": "YulIdentifier", + "src": "20800:9:9" + }, + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "20817:7:9", + "nodeType": "YulIdentifier", + "src": "20817:7:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "20811:5:9", + "nodeType": "YulIdentifier", + "src": "20811:5:9" + }, + "nativeSrc": "20811:14:9", + "nodeType": "YulFunctionCall", + "src": "20811:14:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "20797:2:9", + "nodeType": "YulIdentifier", + "src": "20797:2:9" + }, + "nativeSrc": "20797:29:9", + "nodeType": "YulFunctionCall", + "src": "20797:29:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "20790:6:9", + "nodeType": "YulIdentifier", + "src": "20790:6:9" + }, + "nativeSrc": "20790:37:9", + "nodeType": "YulFunctionCall", + "src": "20790:37:9" + }, + "nativeSrc": "20787:1856:9", + "nodeType": "YulIf", + "src": "20787:1856:9" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2924, + "isOffset": false, + "isSlot": false, + "src": "20767:6:9", + "valueSize": 1 + }, + { + "declaration": 2924, + "isOffset": false, + "isSlot": false, + "src": "21162:6:9", + "valueSize": 1 + }, + { + "declaration": 2924, + "isOffset": false, + "isSlot": false, + "src": "21225:6:9", + "valueSize": 1 + }, + { + "declaration": 2928, + "isOffset": false, + "isSlot": false, + "src": "20846:6:9", + "valueSize": 1 + }, + { + "declaration": 2928, + "isOffset": false, + "isSlot": false, + "src": "20941:6:9", + "valueSize": 1 + }, + { + "declaration": 2928, + "isOffset": false, + "isSlot": false, + "src": "22375:6:9", + "valueSize": 1 + }, + { + "declaration": 2928, + "isOffset": false, + "isSlot": false, + "src": "22401:6:9", + "valueSize": 1 + }, + { + "declaration": 2922, + "isOffset": false, + "isSlot": false, + "src": "20817:7:9", + "valueSize": 1 + }, + { + "declaration": 2922, + "isOffset": false, + "isSlot": false, + "src": "20897:7:9", + "valueSize": 1 + }, + { + "declaration": 2922, + "isOffset": false, + "isSlot": false, + "src": "21016:7:9", + "valueSize": 1 + }, + { + "declaration": 2922, + "isOffset": false, + "isSlot": false, + "src": "21877:7:9", + "valueSize": 1 + } + ], + "id": 2930, + "nodeType": "InlineAssembly", + "src": "20721:1932:9" + } + ] + }, + "documentation": { + "id": 2920, + "nodeType": "StructuredDocumentation", + "src": "20429:96:9", + "text": "@dev Returns all the indices of `needle` in `subject`.\n The indices are byte offsets." + }, + "id": 2932, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "indicesOf", + "nameLocation": "20539:9:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2925, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2922, + "mutability": "mutable", + "name": "subject", + "nameLocation": "20562:7:9", + "nodeType": "VariableDeclaration", + "scope": 2932, + "src": "20549:20:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2921, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "20549:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2924, + "mutability": "mutable", + "name": "needle", + "nameLocation": "20584:6:9", + "nodeType": "VariableDeclaration", + "scope": 2932, + "src": "20571:19:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2923, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "20571:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "20548:43:9" + }, + "returnParameters": { + "id": 2929, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2928, + "mutability": "mutable", + "name": "result", + "nameLocation": "20656:6:9", + "nodeType": "VariableDeclaration", + "scope": 2932, + "src": "20639:23:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 2926, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20639:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2927, + "nodeType": "ArrayTypeName", + "src": "20639:9:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "20638:25:9" + }, + "scope": 3089, + "src": "20530:2129:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2954, + "nodeType": "Block", + "src": "22897:1848:9", + "statements": [ + { + "assignments": [ + 2947 + ], + "declarations": [ + { + "constant": false, + "id": 2947, + "mutability": "mutable", + "name": "indices", + "nameLocation": "22924:7:9", + "nodeType": "VariableDeclaration", + "scope": 2954, + "src": "22907:24:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 2945, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "22907:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2946, + "nodeType": "ArrayTypeName", + "src": "22907:9:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "id": 2952, + "initialValue": { + "arguments": [ + { + "id": 2949, + "name": "subject", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2935, + "src": "22944:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 2950, + "name": "delimiter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2937, + "src": "22953:9:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2948, + "name": "indicesOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2932, + "src": "22934:9:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (bytes memory,bytes memory) pure returns (uint256[] memory)" + } + }, + "id": 2951, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22934:29:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "22907:56:9" + }, + { + "AST": { + "nativeSrc": "23025:1714:9", + "nodeType": "YulBlock", + "src": "23025:1714:9", + "statements": [ + { + "nativeSrc": "23039:18:9", + "nodeType": "YulVariableDeclaration", + "src": "23039:18:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23052:4:9", + "nodeType": "YulLiteral", + "src": "23052:4:9", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "23048:3:9", + "nodeType": "YulIdentifier", + "src": "23048:3:9" + }, + "nativeSrc": "23048:9:9", + "nodeType": "YulFunctionCall", + "src": "23048:9:9" + }, + "variables": [ + { + "name": "w", + "nativeSrc": "23043:1:9", + "nodeType": "YulTypedName", + "src": "23043:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "23070:34:9", + "nodeType": "YulVariableDeclaration", + "src": "23070:34:9", + "value": { + "arguments": [ + { + "name": "indices", + "nativeSrc": "23090:7:9", + "nodeType": "YulIdentifier", + "src": "23090:7:9" + }, + { + "kind": "number", + "nativeSrc": "23099:4:9", + "nodeType": "YulLiteral", + "src": "23099:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23086:3:9", + "nodeType": "YulIdentifier", + "src": "23086:3:9" + }, + "nativeSrc": "23086:18:9", + "nodeType": "YulFunctionCall", + "src": "23086:18:9" + }, + "variables": [ + { + "name": "indexPtr", + "nativeSrc": "23074:8:9", + "nodeType": "YulTypedName", + "src": "23074:8:9", + "type": "" + } + ] + }, + { + "nativeSrc": "23117:63:9", + "nodeType": "YulVariableDeclaration", + "src": "23117:63:9", + "value": { + "arguments": [ + { + "name": "indexPtr", + "nativeSrc": "23139:8:9", + "nodeType": "YulIdentifier", + "src": "23139:8:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23153:1:9", + "nodeType": "YulLiteral", + "src": "23153:1:9", + "type": "", + "value": "5" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "indices", + "nativeSrc": "23166:7:9", + "nodeType": "YulIdentifier", + "src": "23166:7:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "23160:5:9", + "nodeType": "YulIdentifier", + "src": "23160:5:9" + }, + "nativeSrc": "23160:14:9", + "nodeType": "YulFunctionCall", + "src": "23160:14:9" + }, + { + "kind": "number", + "nativeSrc": "23176:1:9", + "nodeType": "YulLiteral", + "src": "23176:1:9", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23156:3:9", + "nodeType": "YulIdentifier", + "src": "23156:3:9" + }, + "nativeSrc": "23156:22:9", + "nodeType": "YulFunctionCall", + "src": "23156:22:9" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "23149:3:9", + "nodeType": "YulIdentifier", + "src": "23149:3:9" + }, + "nativeSrc": "23149:30:9", + "nodeType": "YulFunctionCall", + "src": "23149:30:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23135:3:9", + "nodeType": "YulIdentifier", + "src": "23135:3:9" + }, + "nativeSrc": "23135:45:9", + "nodeType": "YulFunctionCall", + "src": "23135:45:9" + }, + "variables": [ + { + "name": "indicesEnd", + "nativeSrc": "23121:10:9", + "nodeType": "YulTypedName", + "src": "23121:10:9", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "indicesEnd", + "nativeSrc": "23204:10:9", + "nodeType": "YulIdentifier", + "src": "23204:10:9" + }, + { + "name": "w", + "nativeSrc": "23216:1:9", + "nodeType": "YulIdentifier", + "src": "23216:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23200:3:9", + "nodeType": "YulIdentifier", + "src": "23200:3:9" + }, + "nativeSrc": "23200:18:9", + "nodeType": "YulFunctionCall", + "src": "23200:18:9" + }, + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "23226:7:9", + "nodeType": "YulIdentifier", + "src": "23226:7:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "23220:5:9", + "nodeType": "YulIdentifier", + "src": "23220:5:9" + }, + "nativeSrc": "23220:14:9", + "nodeType": "YulFunctionCall", + "src": "23220:14:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "23193:6:9", + "nodeType": "YulIdentifier", + "src": "23193:6:9" + }, + "nativeSrc": "23193:42:9", + "nodeType": "YulFunctionCall", + "src": "23193:42:9" + }, + "nativeSrc": "23193:42:9", + "nodeType": "YulExpressionStatement", + "src": "23193:42:9" + }, + { + "expression": { + "arguments": [ + { + "name": "indices", + "nativeSrc": "23255:7:9", + "nodeType": "YulIdentifier", + "src": "23255:7:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "indices", + "nativeSrc": "23274:7:9", + "nodeType": "YulIdentifier", + "src": "23274:7:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "23268:5:9", + "nodeType": "YulIdentifier", + "src": "23268:5:9" + }, + "nativeSrc": "23268:14:9", + "nodeType": "YulFunctionCall", + "src": "23268:14:9" + }, + { + "kind": "number", + "nativeSrc": "23284:1:9", + "nodeType": "YulLiteral", + "src": "23284:1:9", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23264:3:9", + "nodeType": "YulIdentifier", + "src": "23264:3:9" + }, + "nativeSrc": "23264:22:9", + "nodeType": "YulFunctionCall", + "src": "23264:22:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "23248:6:9", + "nodeType": "YulIdentifier", + "src": "23248:6:9" + }, + "nativeSrc": "23248:39:9", + "nodeType": "YulFunctionCall", + "src": "23248:39:9" + }, + "nativeSrc": "23248:39:9", + "nodeType": "YulExpressionStatement", + "src": "23248:39:9" + }, + { + "body": { + "nativeSrc": "23332:1211:9", + "nodeType": "YulBlock", + "src": "23332:1211:9", + "statements": [ + { + "nativeSrc": "23350:28:9", + "nodeType": "YulVariableDeclaration", + "src": "23350:28:9", + "value": { + "arguments": [ + { + "name": "indexPtr", + "nativeSrc": "23369:8:9", + "nodeType": "YulIdentifier", + "src": "23369:8:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "23363:5:9", + "nodeType": "YulIdentifier", + "src": "23363:5:9" + }, + "nativeSrc": "23363:15:9", + "nodeType": "YulFunctionCall", + "src": "23363:15:9" + }, + "variables": [ + { + "name": "index", + "nativeSrc": "23354:5:9", + "nodeType": "YulTypedName", + "src": "23354:5:9", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "indexPtr", + "nativeSrc": "23402:8:9", + "nodeType": "YulIdentifier", + "src": "23402:8:9" + }, + { + "kind": "number", + "nativeSrc": "23412:4:9", + "nodeType": "YulLiteral", + "src": "23412:4:9", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "23395:6:9", + "nodeType": "YulIdentifier", + "src": "23395:6:9" + }, + "nativeSrc": "23395:22:9", + "nodeType": "YulFunctionCall", + "src": "23395:22:9" + }, + "nativeSrc": "23395:22:9", + "nodeType": "YulExpressionStatement", + "src": "23395:22:9" + }, + { + "body": { + "nativeSrc": "23466:895:9", + "nodeType": "YulBlock", + "src": "23466:895:9", + "statements": [ + { + "nativeSrc": "23488:26:9", + "nodeType": "YulVariableDeclaration", + "src": "23488:26:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23509:4:9", + "nodeType": "YulLiteral", + "src": "23509:4:9", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "23503:5:9", + "nodeType": "YulIdentifier", + "src": "23503:5:9" + }, + "nativeSrc": "23503:11:9", + "nodeType": "YulFunctionCall", + "src": "23503:11:9" + }, + "variables": [ + { + "name": "element", + "nativeSrc": "23492:7:9", + "nodeType": "YulTypedName", + "src": "23492:7:9", + "type": "" + } + ] + }, + { + "nativeSrc": "23535:30:9", + "nodeType": "YulVariableDeclaration", + "src": "23535:30:9", + "value": { + "arguments": [ + { + "name": "index", + "nativeSrc": "23548:5:9", + "nodeType": "YulIdentifier", + "src": "23548:5:9" + }, + { + "name": "prevIndex", + "nativeSrc": "23555:9:9", + "nodeType": "YulIdentifier", + "src": "23555:9:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "23544:3:9", + "nodeType": "YulIdentifier", + "src": "23544:3:9" + }, + "nativeSrc": "23544:21:9", + "nodeType": "YulFunctionCall", + "src": "23544:21:9" + }, + "variables": [ + { + "name": "l", + "nativeSrc": "23539:1:9", + "nodeType": "YulTypedName", + "src": "23539:1:9", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "element", + "nativeSrc": "23593:7:9", + "nodeType": "YulIdentifier", + "src": "23593:7:9" + }, + { + "name": "l", + "nativeSrc": "23602:1:9", + "nodeType": "YulIdentifier", + "src": "23602:1:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "23586:6:9", + "nodeType": "YulIdentifier", + "src": "23586:6:9" + }, + "nativeSrc": "23586:18:9", + "nodeType": "YulFunctionCall", + "src": "23586:18:9" + }, + "nativeSrc": "23586:18:9", + "nodeType": "YulExpressionStatement", + "src": "23586:18:9" + }, + { + "body": { + "nativeSrc": "23777:216:9", + "nodeType": "YulBlock", + "src": "23777:216:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "element", + "nativeSrc": "23814:7:9", + "nodeType": "YulIdentifier", + "src": "23814:7:9" + }, + { + "name": "o", + "nativeSrc": "23823:1:9", + "nodeType": "YulIdentifier", + "src": "23823:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23810:3:9", + "nodeType": "YulIdentifier", + "src": "23810:3:9" + }, + "nativeSrc": "23810:15:9", + "nodeType": "YulFunctionCall", + "src": "23810:15:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "23841:7:9", + "nodeType": "YulIdentifier", + "src": "23841:7:9" + }, + { + "name": "prevIndex", + "nativeSrc": "23850:9:9", + "nodeType": "YulIdentifier", + "src": "23850:9:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23837:3:9", + "nodeType": "YulIdentifier", + "src": "23837:3:9" + }, + "nativeSrc": "23837:23:9", + "nodeType": "YulFunctionCall", + "src": "23837:23:9" + }, + { + "name": "o", + "nativeSrc": "23862:1:9", + "nodeType": "YulIdentifier", + "src": "23862:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23833:3:9", + "nodeType": "YulIdentifier", + "src": "23833:3:9" + }, + "nativeSrc": "23833:31:9", + "nodeType": "YulFunctionCall", + "src": "23833:31:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "23827:5:9", + "nodeType": "YulIdentifier", + "src": "23827:5:9" + }, + "nativeSrc": "23827:38:9", + "nodeType": "YulFunctionCall", + "src": "23827:38:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "23803:6:9", + "nodeType": "YulIdentifier", + "src": "23803:6:9" + }, + "nativeSrc": "23803:63:9", + "nodeType": "YulFunctionCall", + "src": "23803:63:9" + }, + "nativeSrc": "23803:63:9", + "nodeType": "YulExpressionStatement", + "src": "23803:63:9" + }, + { + "nativeSrc": "23891:14:9", + "nodeType": "YulAssignment", + "src": "23891:14:9", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "23900:1:9", + "nodeType": "YulIdentifier", + "src": "23900:1:9" + }, + { + "name": "w", + "nativeSrc": "23903:1:9", + "nodeType": "YulIdentifier", + "src": "23903:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23896:3:9", + "nodeType": "YulIdentifier", + "src": "23896:3:9" + }, + "nativeSrc": "23896:9:9", + "nodeType": "YulFunctionCall", + "src": "23896:9:9" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "23891:1:9", + "nodeType": "YulIdentifier", + "src": "23891:1:9" + } + ] + }, + { + "body": { + "nativeSrc": "23962:9:9", + "nodeType": "YulBlock", + "src": "23962:9:9", + "statements": [ + { + "nativeSrc": "23964:5:9", + "nodeType": "YulBreak", + "src": "23964:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "o", + "nativeSrc": "23959:1:9", + "nodeType": "YulIdentifier", + "src": "23959:1:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "23952:6:9", + "nodeType": "YulIdentifier", + "src": "23952:6:9" + }, + "nativeSrc": "23952:9:9", + "nodeType": "YulFunctionCall", + "src": "23952:9:9" + }, + "nativeSrc": "23949:22:9", + "nodeType": "YulIf", + "src": "23949:22:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "23772:1:9", + "nodeType": "YulLiteral", + "src": "23772:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "23734:259:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "23774:2:9", + "nodeType": "YulBlock", + "src": "23774:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "23738:33:9", + "nodeType": "YulBlock", + "src": "23738:33:9", + "statements": [ + { + "nativeSrc": "23740:29:9", + "nodeType": "YulVariableDeclaration", + "src": "23740:29:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "l", + "nativeSrc": "23757:1:9", + "nodeType": "YulIdentifier", + "src": "23757:1:9" + }, + { + "kind": "number", + "nativeSrc": "23760:4:9", + "nodeType": "YulLiteral", + "src": "23760:4:9", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23753:3:9", + "nodeType": "YulIdentifier", + "src": "23753:3:9" + }, + "nativeSrc": "23753:12:9", + "nodeType": "YulFunctionCall", + "src": "23753:12:9" + }, + { + "name": "w", + "nativeSrc": "23767:1:9", + "nodeType": "YulIdentifier", + "src": "23767:1:9" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "23749:3:9", + "nodeType": "YulIdentifier", + "src": "23749:3:9" + }, + "nativeSrc": "23749:20:9", + "nodeType": "YulFunctionCall", + "src": "23749:20:9" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "23744:1:9", + "nodeType": "YulTypedName", + "src": "23744:1:9", + "type": "" + } + ] + } + ] + }, + "src": "23734:259:9" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "element", + "nativeSrc": "24029:7:9", + "nodeType": "YulIdentifier", + "src": "24029:7:9" + }, + { + "kind": "number", + "nativeSrc": "24038:4:9", + "nodeType": "YulLiteral", + "src": "24038:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24025:3:9", + "nodeType": "YulIdentifier", + "src": "24025:3:9" + }, + "nativeSrc": "24025:18:9", + "nodeType": "YulFunctionCall", + "src": "24025:18:9" + }, + { + "name": "l", + "nativeSrc": "24045:1:9", + "nodeType": "YulIdentifier", + "src": "24045:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24021:3:9", + "nodeType": "YulIdentifier", + "src": "24021:3:9" + }, + "nativeSrc": "24021:26:9", + "nodeType": "YulFunctionCall", + "src": "24021:26:9" + }, + { + "kind": "number", + "nativeSrc": "24049:1:9", + "nodeType": "YulLiteral", + "src": "24049:1:9", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "24014:6:9", + "nodeType": "YulIdentifier", + "src": "24014:6:9" + }, + "nativeSrc": "24014:37:9", + "nodeType": "YulFunctionCall", + "src": "24014:37:9" + }, + "nativeSrc": "24014:37:9", + "nodeType": "YulExpressionStatement", + "src": "24014:37:9" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "24217:4:9", + "nodeType": "YulLiteral", + "src": "24217:4:9", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "element", + "nativeSrc": "24227:7:9", + "nodeType": "YulIdentifier", + "src": "24227:7:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "l", + "nativeSrc": "24244:1:9", + "nodeType": "YulIdentifier", + "src": "24244:1:9" + }, + { + "kind": "number", + "nativeSrc": "24247:4:9", + "nodeType": "YulLiteral", + "src": "24247:4:9", + "type": "", + "value": "0x3f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24240:3:9", + "nodeType": "YulIdentifier", + "src": "24240:3:9" + }, + "nativeSrc": "24240:12:9", + "nodeType": "YulFunctionCall", + "src": "24240:12:9" + }, + { + "name": "w", + "nativeSrc": "24254:1:9", + "nodeType": "YulIdentifier", + "src": "24254:1:9" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "24236:3:9", + "nodeType": "YulIdentifier", + "src": "24236:3:9" + }, + "nativeSrc": "24236:20:9", + "nodeType": "YulFunctionCall", + "src": "24236:20:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24223:3:9", + "nodeType": "YulIdentifier", + "src": "24223:3:9" + }, + "nativeSrc": "24223:34:9", + "nodeType": "YulFunctionCall", + "src": "24223:34:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "24210:6:9", + "nodeType": "YulIdentifier", + "src": "24210:6:9" + }, + "nativeSrc": "24210:48:9", + "nodeType": "YulFunctionCall", + "src": "24210:48:9" + }, + "nativeSrc": "24210:48:9", + "nodeType": "YulExpressionStatement", + "src": "24210:48:9" + }, + { + "expression": { + "arguments": [ + { + "name": "indexPtr", + "nativeSrc": "24286:8:9", + "nodeType": "YulIdentifier", + "src": "24286:8:9" + }, + { + "name": "element", + "nativeSrc": "24296:7:9", + "nodeType": "YulIdentifier", + "src": "24296:7:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "24279:6:9", + "nodeType": "YulIdentifier", + "src": "24279:6:9" + }, + "nativeSrc": "24279:25:9", + "nodeType": "YulFunctionCall", + "src": "24279:25:9" + }, + "nativeSrc": "24279:25:9", + "nodeType": "YulExpressionStatement", + "src": "24279:25:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "23447:5:9", + "nodeType": "YulIdentifier", + "src": "23447:5:9" + }, + { + "name": "prevIndex", + "nativeSrc": "23454:9:9", + "nodeType": "YulIdentifier", + "src": "23454:9:9" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "23444:2:9", + "nodeType": "YulIdentifier", + "src": "23444:2:9" + }, + "nativeSrc": "23444:20:9", + "nodeType": "YulFunctionCall", + "src": "23444:20:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "23437:6:9", + "nodeType": "YulIdentifier", + "src": "23437:6:9" + }, + "nativeSrc": "23437:28:9", + "nodeType": "YulFunctionCall", + "src": "23437:28:9" + }, + "nativeSrc": "23434:927:9", + "nodeType": "YulIf", + "src": "23434:927:9" + }, + { + "nativeSrc": "24378:41:9", + "nodeType": "YulAssignment", + "src": "24378:41:9", + "value": { + "arguments": [ + { + "name": "index", + "nativeSrc": "24395:5:9", + "nodeType": "YulIdentifier", + "src": "24395:5:9" + }, + { + "arguments": [ + { + "name": "delimiter", + "nativeSrc": "24408:9:9", + "nodeType": "YulIdentifier", + "src": "24408:9:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "24402:5:9", + "nodeType": "YulIdentifier", + "src": "24402:5:9" + }, + "nativeSrc": "24402:16:9", + "nodeType": "YulFunctionCall", + "src": "24402:16:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24391:3:9", + "nodeType": "YulIdentifier", + "src": "24391:3:9" + }, + "nativeSrc": "24391:28:9", + "nodeType": "YulFunctionCall", + "src": "24391:28:9" + }, + "variableNames": [ + { + "name": "prevIndex", + "nativeSrc": "24378:9:9", + "nodeType": "YulIdentifier", + "src": "24378:9:9" + } + ] + }, + { + "nativeSrc": "24436:31:9", + "nodeType": "YulAssignment", + "src": "24436:31:9", + "value": { + "arguments": [ + { + "name": "indexPtr", + "nativeSrc": "24452:8:9", + "nodeType": "YulIdentifier", + "src": "24452:8:9" + }, + { + "kind": "number", + "nativeSrc": "24462:4:9", + "nodeType": "YulLiteral", + "src": "24462:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24448:3:9", + "nodeType": "YulIdentifier", + "src": "24448:3:9" + }, + "nativeSrc": "24448:19:9", + "nodeType": "YulFunctionCall", + "src": "24448:19:9" + }, + "variableNames": [ + { + "name": "indexPtr", + "nativeSrc": "24436:8:9", + "nodeType": "YulIdentifier", + "src": "24436:8:9" + } + ] + }, + { + "body": { + "nativeSrc": "24520:9:9", + "nodeType": "YulBlock", + "src": "24520:9:9", + "statements": [ + { + "nativeSrc": "24522:5:9", + "nodeType": "YulBreak", + "src": "24522:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "indexPtr", + "nativeSrc": "24497:8:9", + "nodeType": "YulIdentifier", + "src": "24497:8:9" + }, + { + "name": "indicesEnd", + "nativeSrc": "24507:10:9", + "nodeType": "YulIdentifier", + "src": "24507:10:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "24494:2:9", + "nodeType": "YulIdentifier", + "src": "24494:2:9" + }, + "nativeSrc": "24494:24:9", + "nodeType": "YulFunctionCall", + "src": "24494:24:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "24487:6:9", + "nodeType": "YulIdentifier", + "src": "24487:6:9" + }, + "nativeSrc": "24487:32:9", + "nodeType": "YulFunctionCall", + "src": "24487:32:9" + }, + "nativeSrc": "24484:45:9", + "nodeType": "YulIf", + "src": "24484:45:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "23327:1:9", + "nodeType": "YulLiteral", + "src": "23327:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "23300:1243:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "23329:2:9", + "nodeType": "YulBlock", + "src": "23329:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "23304:22:9", + "nodeType": "YulBlock", + "src": "23304:22:9", + "statements": [ + { + "nativeSrc": "23306:18:9", + "nodeType": "YulVariableDeclaration", + "src": "23306:18:9", + "value": { + "kind": "number", + "nativeSrc": "23323:1:9", + "nodeType": "YulLiteral", + "src": "23323:1:9", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "prevIndex", + "nativeSrc": "23310:9:9", + "nodeType": "YulTypedName", + "src": "23310:9:9", + "type": "" + } + ] + } + ] + }, + "src": "23300:1243:9" + }, + { + "nativeSrc": "24556:17:9", + "nodeType": "YulAssignment", + "src": "24556:17:9", + "value": { + "name": "indices", + "nativeSrc": "24566:7:9", + "nodeType": "YulIdentifier", + "src": "24566:7:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "24556:6:9", + "nodeType": "YulIdentifier", + "src": "24556:6:9" + } + ] + }, + { + "body": { + "nativeSrc": "24614:115:9", + "nodeType": "YulBlock", + "src": "24614:115:9", + "statements": [ + { + "nativeSrc": "24632:28:9", + "nodeType": "YulAssignment", + "src": "24632:28:9", + "value": { + "arguments": [ + { + "name": "indices", + "nativeSrc": "24646:7:9", + "nodeType": "YulIdentifier", + "src": "24646:7:9" + }, + { + "kind": "number", + "nativeSrc": "24655:4:9", + "nodeType": "YulLiteral", + "src": "24655:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24642:3:9", + "nodeType": "YulIdentifier", + "src": "24642:3:9" + }, + "nativeSrc": "24642:18:9", + "nodeType": "YulFunctionCall", + "src": "24642:18:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "24632:6:9", + "nodeType": "YulIdentifier", + "src": "24632:6:9" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "24684:6:9", + "nodeType": "YulIdentifier", + "src": "24684:6:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "indices", + "nativeSrc": "24702:7:9", + "nodeType": "YulIdentifier", + "src": "24702:7:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "24696:5:9", + "nodeType": "YulIdentifier", + "src": "24696:5:9" + }, + "nativeSrc": "24696:14:9", + "nodeType": "YulFunctionCall", + "src": "24696:14:9" + }, + { + "kind": "number", + "nativeSrc": "24712:1:9", + "nodeType": "YulLiteral", + "src": "24712:1:9", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "24692:3:9", + "nodeType": "YulIdentifier", + "src": "24692:3:9" + }, + "nativeSrc": "24692:22:9", + "nodeType": "YulFunctionCall", + "src": "24692:22:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "24677:6:9", + "nodeType": "YulIdentifier", + "src": "24677:6:9" + }, + "nativeSrc": "24677:38:9", + "nodeType": "YulFunctionCall", + "src": "24677:38:9" + }, + "nativeSrc": "24677:38:9", + "nodeType": "YulExpressionStatement", + "src": "24677:38:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "delimiter", + "nativeSrc": "24602:9:9", + "nodeType": "YulIdentifier", + "src": "24602:9:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "24596:5:9", + "nodeType": "YulIdentifier", + "src": "24596:5:9" + }, + "nativeSrc": "24596:16:9", + "nodeType": "YulFunctionCall", + "src": "24596:16:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "24589:6:9", + "nodeType": "YulIdentifier", + "src": "24589:6:9" + }, + "nativeSrc": "24589:24:9", + "nodeType": "YulFunctionCall", + "src": "24589:24:9" + }, + "nativeSrc": "24586:143:9", + "nodeType": "YulIf", + "src": "24586:143:9" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2937, + "isOffset": false, + "isSlot": false, + "src": "24408:9:9", + "valueSize": 1 + }, + { + "declaration": 2937, + "isOffset": false, + "isSlot": false, + "src": "24602:9:9", + "valueSize": 1 + }, + { + "declaration": 2947, + "isOffset": false, + "isSlot": false, + "src": "23090:7:9", + "valueSize": 1 + }, + { + "declaration": 2947, + "isOffset": false, + "isSlot": false, + "src": "23166:7:9", + "valueSize": 1 + }, + { + "declaration": 2947, + "isOffset": false, + "isSlot": false, + "src": "23255:7:9", + "valueSize": 1 + }, + { + "declaration": 2947, + "isOffset": false, + "isSlot": false, + "src": "23274:7:9", + "valueSize": 1 + }, + { + "declaration": 2947, + "isOffset": false, + "isSlot": false, + "src": "24566:7:9", + "valueSize": 1 + }, + { + "declaration": 2947, + "isOffset": false, + "isSlot": false, + "src": "24646:7:9", + "valueSize": 1 + }, + { + "declaration": 2947, + "isOffset": false, + "isSlot": false, + "src": "24702:7:9", + "valueSize": 1 + }, + { + "declaration": 2941, + "isOffset": false, + "isSlot": false, + "src": "24556:6:9", + "valueSize": 1 + }, + { + "declaration": 2941, + "isOffset": false, + "isSlot": false, + "src": "24632:6:9", + "valueSize": 1 + }, + { + "declaration": 2941, + "isOffset": false, + "isSlot": false, + "src": "24684:6:9", + "valueSize": 1 + }, + { + "declaration": 2935, + "isOffset": false, + "isSlot": false, + "src": "23226:7:9", + "valueSize": 1 + }, + { + "declaration": 2935, + "isOffset": false, + "isSlot": false, + "src": "23841:7:9", + "valueSize": 1 + } + ], + "id": 2953, + "nodeType": "InlineAssembly", + "src": "23016:1723:9" + } + ] + }, + "documentation": { + "id": 2933, + "nodeType": "StructuredDocumentation", + "src": "22665:92:9", + "text": "@dev Returns an arrays of bytess based on the `delimiter` inside of the `subject` bytes." + }, + "id": 2955, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "split", + "nameLocation": "22771:5:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2938, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2935, + "mutability": "mutable", + "name": "subject", + "nameLocation": "22790:7:9", + "nodeType": "VariableDeclaration", + "scope": 2955, + "src": "22777:20:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2934, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "22777:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2937, + "mutability": "mutable", + "name": "delimiter", + "nameLocation": "22812:9:9", + "nodeType": "VariableDeclaration", + "scope": 2955, + "src": "22799:22:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2936, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "22799:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "22776:46:9" + }, + "returnParameters": { + "id": 2942, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2941, + "mutability": "mutable", + "name": "result", + "nameLocation": "22885:6:9", + "nodeType": "VariableDeclaration", + "scope": 2955, + "src": "22870:21:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 2939, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "22870:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 2940, + "nodeType": "ArrayTypeName", + "src": "22870:7:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + } + ], + "src": "22869:23:9" + }, + "scope": 3089, + "src": "22762:1983:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2966, + "nodeType": "Block", + "src": "24986:1090:9", + "statements": [ + { + "AST": { + "nativeSrc": "25048:1022:9", + "nodeType": "YulBlock", + "src": "25048:1022:9", + "statements": [ + { + "nativeSrc": "25062:21:9", + "nodeType": "YulAssignment", + "src": "25062:21:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "25078:4:9", + "nodeType": "YulLiteral", + "src": "25078:4:9", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "25072:5:9", + "nodeType": "YulIdentifier", + "src": "25072:5:9" + }, + "nativeSrc": "25072:11:9", + "nodeType": "YulFunctionCall", + "src": "25072:11:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "25062:6:9", + "nodeType": "YulIdentifier", + "src": "25062:6:9" + } + ] + }, + { + "nativeSrc": "25096:18:9", + "nodeType": "YulVariableDeclaration", + "src": "25096:18:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "25109:4:9", + "nodeType": "YulLiteral", + "src": "25109:4:9", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "25105:3:9", + "nodeType": "YulIdentifier", + "src": "25105:3:9" + }, + "nativeSrc": "25105:9:9", + "nodeType": "YulFunctionCall", + "src": "25105:9:9" + }, + "variables": [ + { + "name": "w", + "nativeSrc": "25100:1:9", + "nodeType": "YulTypedName", + "src": "25100:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "25127:20:9", + "nodeType": "YulVariableDeclaration", + "src": "25127:20:9", + "value": { + "arguments": [ + { + "name": "a", + "nativeSrc": "25145:1:9", + "nodeType": "YulIdentifier", + "src": "25145:1:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "25139:5:9", + "nodeType": "YulIdentifier", + "src": "25139:5:9" + }, + "nativeSrc": "25139:8:9", + "nodeType": "YulFunctionCall", + "src": "25139:8:9" + }, + "variables": [ + { + "name": "aLen", + "nativeSrc": "25131:4:9", + "nodeType": "YulTypedName", + "src": "25131:4:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "25261:161:9", + "nodeType": "YulBlock", + "src": "25261:161:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "25290:6:9", + "nodeType": "YulIdentifier", + "src": "25290:6:9" + }, + { + "name": "o", + "nativeSrc": "25298:1:9", + "nodeType": "YulIdentifier", + "src": "25298:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "25286:3:9", + "nodeType": "YulIdentifier", + "src": "25286:3:9" + }, + "nativeSrc": "25286:14:9", + "nodeType": "YulFunctionCall", + "src": "25286:14:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "a", + "nativeSrc": "25312:1:9", + "nodeType": "YulIdentifier", + "src": "25312:1:9" + }, + { + "name": "o", + "nativeSrc": "25315:1:9", + "nodeType": "YulIdentifier", + "src": "25315:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "25308:3:9", + "nodeType": "YulIdentifier", + "src": "25308:3:9" + }, + "nativeSrc": "25308:9:9", + "nodeType": "YulFunctionCall", + "src": "25308:9:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "25302:5:9", + "nodeType": "YulIdentifier", + "src": "25302:5:9" + }, + "nativeSrc": "25302:16:9", + "nodeType": "YulFunctionCall", + "src": "25302:16:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "25279:6:9", + "nodeType": "YulIdentifier", + "src": "25279:6:9" + }, + "nativeSrc": "25279:40:9", + "nodeType": "YulFunctionCall", + "src": "25279:40:9" + }, + "nativeSrc": "25279:40:9", + "nodeType": "YulExpressionStatement", + "src": "25279:40:9" + }, + { + "nativeSrc": "25336:14:9", + "nodeType": "YulAssignment", + "src": "25336:14:9", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "25345:1:9", + "nodeType": "YulIdentifier", + "src": "25345:1:9" + }, + { + "name": "w", + "nativeSrc": "25348:1:9", + "nodeType": "YulIdentifier", + "src": "25348:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "25341:3:9", + "nodeType": "YulIdentifier", + "src": "25341:3:9" + }, + "nativeSrc": "25341:9:9", + "nodeType": "YulFunctionCall", + "src": "25341:9:9" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "25336:1:9", + "nodeType": "YulIdentifier", + "src": "25336:1:9" + } + ] + }, + { + "body": { + "nativeSrc": "25399:9:9", + "nodeType": "YulBlock", + "src": "25399:9:9", + "statements": [ + { + "nativeSrc": "25401:5:9", + "nodeType": "YulBreak", + "src": "25401:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "o", + "nativeSrc": "25396:1:9", + "nodeType": "YulIdentifier", + "src": "25396:1:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "25389:6:9", + "nodeType": "YulIdentifier", + "src": "25389:6:9" + }, + "nativeSrc": "25389:9:9", + "nodeType": "YulFunctionCall", + "src": "25389:9:9" + }, + "nativeSrc": "25386:22:9", + "nodeType": "YulIf", + "src": "25386:22:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "25256:1:9", + "nodeType": "YulLiteral", + "src": "25256:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "25215:207:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "25258:2:9", + "nodeType": "YulBlock", + "src": "25258:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "25219:36:9", + "nodeType": "YulBlock", + "src": "25219:36:9", + "statements": [ + { + "nativeSrc": "25221:32:9", + "nodeType": "YulVariableDeclaration", + "src": "25221:32:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "aLen", + "nativeSrc": "25238:4:9", + "nodeType": "YulIdentifier", + "src": "25238:4:9" + }, + { + "kind": "number", + "nativeSrc": "25244:4:9", + "nodeType": "YulLiteral", + "src": "25244:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "25234:3:9", + "nodeType": "YulIdentifier", + "src": "25234:3:9" + }, + "nativeSrc": "25234:15:9", + "nodeType": "YulFunctionCall", + "src": "25234:15:9" + }, + { + "name": "w", + "nativeSrc": "25251:1:9", + "nodeType": "YulIdentifier", + "src": "25251:1:9" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "25230:3:9", + "nodeType": "YulIdentifier", + "src": "25230:3:9" + }, + "nativeSrc": "25230:23:9", + "nodeType": "YulFunctionCall", + "src": "25230:23:9" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "25225:1:9", + "nodeType": "YulTypedName", + "src": "25225:1:9", + "type": "" + } + ] + } + ] + }, + "src": "25215:207:9" + }, + { + "nativeSrc": "25435:20:9", + "nodeType": "YulVariableDeclaration", + "src": "25435:20:9", + "value": { + "arguments": [ + { + "name": "b", + "nativeSrc": "25453:1:9", + "nodeType": "YulIdentifier", + "src": "25453:1:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "25447:5:9", + "nodeType": "YulIdentifier", + "src": "25447:5:9" + }, + "nativeSrc": "25447:8:9", + "nodeType": "YulFunctionCall", + "src": "25447:8:9" + }, + "variables": [ + { + "name": "bLen", + "nativeSrc": "25439:4:9", + "nodeType": "YulTypedName", + "src": "25439:4:9", + "type": "" + } + ] + }, + { + "nativeSrc": "25468:31:9", + "nodeType": "YulVariableDeclaration", + "src": "25468:31:9", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "25486:6:9", + "nodeType": "YulIdentifier", + "src": "25486:6:9" + }, + { + "name": "aLen", + "nativeSrc": "25494:4:9", + "nodeType": "YulIdentifier", + "src": "25494:4:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "25482:3:9", + "nodeType": "YulIdentifier", + "src": "25482:3:9" + }, + "nativeSrc": "25482:17:9", + "nodeType": "YulFunctionCall", + "src": "25482:17:9" + }, + "variables": [ + { + "name": "output", + "nativeSrc": "25472:6:9", + "nodeType": "YulTypedName", + "src": "25472:6:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "25613:161:9", + "nodeType": "YulBlock", + "src": "25613:161:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "output", + "nativeSrc": "25642:6:9", + "nodeType": "YulIdentifier", + "src": "25642:6:9" + }, + { + "name": "o", + "nativeSrc": "25650:1:9", + "nodeType": "YulIdentifier", + "src": "25650:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "25638:3:9", + "nodeType": "YulIdentifier", + "src": "25638:3:9" + }, + "nativeSrc": "25638:14:9", + "nodeType": "YulFunctionCall", + "src": "25638:14:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "b", + "nativeSrc": "25664:1:9", + "nodeType": "YulIdentifier", + "src": "25664:1:9" + }, + { + "name": "o", + "nativeSrc": "25667:1:9", + "nodeType": "YulIdentifier", + "src": "25667:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "25660:3:9", + "nodeType": "YulIdentifier", + "src": "25660:3:9" + }, + "nativeSrc": "25660:9:9", + "nodeType": "YulFunctionCall", + "src": "25660:9:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "25654:5:9", + "nodeType": "YulIdentifier", + "src": "25654:5:9" + }, + "nativeSrc": "25654:16:9", + "nodeType": "YulFunctionCall", + "src": "25654:16:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "25631:6:9", + "nodeType": "YulIdentifier", + "src": "25631:6:9" + }, + "nativeSrc": "25631:40:9", + "nodeType": "YulFunctionCall", + "src": "25631:40:9" + }, + "nativeSrc": "25631:40:9", + "nodeType": "YulExpressionStatement", + "src": "25631:40:9" + }, + { + "nativeSrc": "25688:14:9", + "nodeType": "YulAssignment", + "src": "25688:14:9", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "25697:1:9", + "nodeType": "YulIdentifier", + "src": "25697:1:9" + }, + { + "name": "w", + "nativeSrc": "25700:1:9", + "nodeType": "YulIdentifier", + "src": "25700:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "25693:3:9", + "nodeType": "YulIdentifier", + "src": "25693:3:9" + }, + "nativeSrc": "25693:9:9", + "nodeType": "YulFunctionCall", + "src": "25693:9:9" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "25688:1:9", + "nodeType": "YulIdentifier", + "src": "25688:1:9" + } + ] + }, + { + "body": { + "nativeSrc": "25751:9:9", + "nodeType": "YulBlock", + "src": "25751:9:9", + "statements": [ + { + "nativeSrc": "25753:5:9", + "nodeType": "YulBreak", + "src": "25753:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "o", + "nativeSrc": "25748:1:9", + "nodeType": "YulIdentifier", + "src": "25748:1:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "25741:6:9", + "nodeType": "YulIdentifier", + "src": "25741:6:9" + }, + "nativeSrc": "25741:9:9", + "nodeType": "YulFunctionCall", + "src": "25741:9:9" + }, + "nativeSrc": "25738:22:9", + "nodeType": "YulIf", + "src": "25738:22:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "25608:1:9", + "nodeType": "YulLiteral", + "src": "25608:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "25567:207:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "25610:2:9", + "nodeType": "YulBlock", + "src": "25610:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "25571:36:9", + "nodeType": "YulBlock", + "src": "25571:36:9", + "statements": [ + { + "nativeSrc": "25573:32:9", + "nodeType": "YulVariableDeclaration", + "src": "25573:32:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "bLen", + "nativeSrc": "25590:4:9", + "nodeType": "YulIdentifier", + "src": "25590:4:9" + }, + { + "kind": "number", + "nativeSrc": "25596:4:9", + "nodeType": "YulLiteral", + "src": "25596:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "25586:3:9", + "nodeType": "YulIdentifier", + "src": "25586:3:9" + }, + "nativeSrc": "25586:15:9", + "nodeType": "YulFunctionCall", + "src": "25586:15:9" + }, + { + "name": "w", + "nativeSrc": "25603:1:9", + "nodeType": "YulIdentifier", + "src": "25603:1:9" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "25582:3:9", + "nodeType": "YulIdentifier", + "src": "25582:3:9" + }, + "nativeSrc": "25582:23:9", + "nodeType": "YulFunctionCall", + "src": "25582:23:9" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "25577:1:9", + "nodeType": "YulTypedName", + "src": "25577:1:9", + "type": "" + } + ] + } + ] + }, + "src": "25567:207:9" + }, + { + "nativeSrc": "25787:31:9", + "nodeType": "YulVariableDeclaration", + "src": "25787:31:9", + "value": { + "arguments": [ + { + "name": "aLen", + "nativeSrc": "25807:4:9", + "nodeType": "YulIdentifier", + "src": "25807:4:9" + }, + { + "name": "bLen", + "nativeSrc": "25813:4:9", + "nodeType": "YulIdentifier", + "src": "25813:4:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "25803:3:9", + "nodeType": "YulIdentifier", + "src": "25803:3:9" + }, + "nativeSrc": "25803:15:9", + "nodeType": "YulFunctionCall", + "src": "25803:15:9" + }, + "variables": [ + { + "name": "totalLen", + "nativeSrc": "25791:8:9", + "nodeType": "YulTypedName", + "src": "25791:8:9", + "type": "" + } + ] + }, + { + "nativeSrc": "25831:44:9", + "nodeType": "YulVariableDeclaration", + "src": "25831:44:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "25851:6:9", + "nodeType": "YulIdentifier", + "src": "25851:6:9" + }, + { + "kind": "number", + "nativeSrc": "25859:4:9", + "nodeType": "YulLiteral", + "src": "25859:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "25847:3:9", + "nodeType": "YulIdentifier", + "src": "25847:3:9" + }, + "nativeSrc": "25847:17:9", + "nodeType": "YulFunctionCall", + "src": "25847:17:9" + }, + { + "name": "totalLen", + "nativeSrc": "25866:8:9", + "nodeType": "YulIdentifier", + "src": "25866:8:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "25843:3:9", + "nodeType": "YulIdentifier", + "src": "25843:3:9" + }, + "nativeSrc": "25843:32:9", + "nodeType": "YulFunctionCall", + "src": "25843:32:9" + }, + "variables": [ + { + "name": "last", + "nativeSrc": "25835:4:9", + "nodeType": "YulTypedName", + "src": "25835:4:9", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "last", + "nativeSrc": "25895:4:9", + "nodeType": "YulIdentifier", + "src": "25895:4:9" + }, + { + "kind": "number", + "nativeSrc": "25901:1:9", + "nodeType": "YulLiteral", + "src": "25901:1:9", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "25888:6:9", + "nodeType": "YulIdentifier", + "src": "25888:6:9" + }, + "nativeSrc": "25888:15:9", + "nodeType": "YulFunctionCall", + "src": "25888:15:9" + }, + "nativeSrc": "25888:15:9", + "nodeType": "YulExpressionStatement", + "src": "25888:15:9" + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "25960:6:9", + "nodeType": "YulIdentifier", + "src": "25960:6:9" + }, + { + "name": "totalLen", + "nativeSrc": "25968:8:9", + "nodeType": "YulIdentifier", + "src": "25968:8:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "25953:6:9", + "nodeType": "YulIdentifier", + "src": "25953:6:9" + }, + "nativeSrc": "25953:24:9", + "nodeType": "YulFunctionCall", + "src": "25953:24:9" + }, + "nativeSrc": "25953:24:9", + "nodeType": "YulExpressionStatement", + "src": "25953:24:9" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "26018:4:9", + "nodeType": "YulLiteral", + "src": "26018:4:9", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "last", + "nativeSrc": "26028:4:9", + "nodeType": "YulIdentifier", + "src": "26028:4:9" + }, + { + "kind": "number", + "nativeSrc": "26034:4:9", + "nodeType": "YulLiteral", + "src": "26034:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "26024:3:9", + "nodeType": "YulIdentifier", + "src": "26024:3:9" + }, + "nativeSrc": "26024:15:9", + "nodeType": "YulFunctionCall", + "src": "26024:15:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "26011:6:9", + "nodeType": "YulIdentifier", + "src": "26011:6:9" + }, + "nativeSrc": "26011:29:9", + "nodeType": "YulFunctionCall", + "src": "26011:29:9" + }, + "nativeSrc": "26011:29:9", + "nodeType": "YulExpressionStatement", + "src": "26011:29:9" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2958, + "isOffset": false, + "isSlot": false, + "src": "25145:1:9", + "valueSize": 1 + }, + { + "declaration": 2958, + "isOffset": false, + "isSlot": false, + "src": "25312:1:9", + "valueSize": 1 + }, + { + "declaration": 2960, + "isOffset": false, + "isSlot": false, + "src": "25453:1:9", + "valueSize": 1 + }, + { + "declaration": 2960, + "isOffset": false, + "isSlot": false, + "src": "25664:1:9", + "valueSize": 1 + }, + { + "declaration": 2963, + "isOffset": false, + "isSlot": false, + "src": "25062:6:9", + "valueSize": 1 + }, + { + "declaration": 2963, + "isOffset": false, + "isSlot": false, + "src": "25290:6:9", + "valueSize": 1 + }, + { + "declaration": 2963, + "isOffset": false, + "isSlot": false, + "src": "25486:6:9", + "valueSize": 1 + }, + { + "declaration": 2963, + "isOffset": false, + "isSlot": false, + "src": "25851:6:9", + "valueSize": 1 + }, + { + "declaration": 2963, + "isOffset": false, + "isSlot": false, + "src": "25960:6:9", + "valueSize": 1 + } + ], + "id": 2965, + "nodeType": "InlineAssembly", + "src": "25039:1031:9" + } + ] + }, + "documentation": { + "id": 2956, + "nodeType": "StructuredDocumentation", + "src": "24751:138:9", + "text": "@dev Returns a concatenated bytes of `a` and `b`.\n Cheaper than `bytes.concat()` and does not de-align the free memory pointer." + }, + "id": 2967, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "concat", + "nameLocation": "24903:6:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2961, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2958, + "mutability": "mutable", + "name": "a", + "nameLocation": "24923:1:9", + "nodeType": "VariableDeclaration", + "scope": 2967, + "src": "24910:14:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2957, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "24910:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2960, + "mutability": "mutable", + "name": "b", + "nameLocation": "24939:1:9", + "nodeType": "VariableDeclaration", + "scope": 2967, + "src": "24926:14:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2959, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "24926:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "24909:32:9" + }, + "returnParameters": { + "id": 2964, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2963, + "mutability": "mutable", + "name": "result", + "nameLocation": "24978:6:9", + "nodeType": "VariableDeclaration", + "scope": 2967, + "src": "24965:19:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2962, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "24965:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "24964:21:9" + }, + "scope": 3089, + "src": "24894:1182:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2978, + "nodeType": "Block", + "src": "26207:174:9", + "statements": [ + { + "AST": { + "nativeSrc": "26269:106:9", + "nodeType": "YulBlock", + "src": "26269:106:9", + "statements": [ + { + "nativeSrc": "26283:82:9", + "nodeType": "YulAssignment", + "src": "26283:82:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "a", + "nativeSrc": "26310:1:9", + "nodeType": "YulIdentifier", + "src": "26310:1:9" + }, + { + "kind": "number", + "nativeSrc": "26313:4:9", + "nodeType": "YulLiteral", + "src": "26313:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "26306:3:9", + "nodeType": "YulIdentifier", + "src": "26306:3:9" + }, + "nativeSrc": "26306:12:9", + "nodeType": "YulFunctionCall", + "src": "26306:12:9" + }, + { + "arguments": [ + { + "name": "a", + "nativeSrc": "26326:1:9", + "nodeType": "YulIdentifier", + "src": "26326:1:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "26320:5:9", + "nodeType": "YulIdentifier", + "src": "26320:5:9" + }, + "nativeSrc": "26320:8:9", + "nodeType": "YulFunctionCall", + "src": "26320:8:9" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "26296:9:9", + "nodeType": "YulIdentifier", + "src": "26296:9:9" + }, + "nativeSrc": "26296:33:9", + "nodeType": "YulFunctionCall", + "src": "26296:33:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "b", + "nativeSrc": "26345:1:9", + "nodeType": "YulIdentifier", + "src": "26345:1:9" + }, + { + "kind": "number", + "nativeSrc": "26348:4:9", + "nodeType": "YulLiteral", + "src": "26348:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "26341:3:9", + "nodeType": "YulIdentifier", + "src": "26341:3:9" + }, + "nativeSrc": "26341:12:9", + "nodeType": "YulFunctionCall", + "src": "26341:12:9" + }, + { + "arguments": [ + { + "name": "b", + "nativeSrc": "26361:1:9", + "nodeType": "YulIdentifier", + "src": "26361:1:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "26355:5:9", + "nodeType": "YulIdentifier", + "src": "26355:5:9" + }, + "nativeSrc": "26355:8:9", + "nodeType": "YulFunctionCall", + "src": "26355:8:9" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "26331:9:9", + "nodeType": "YulIdentifier", + "src": "26331:9:9" + }, + "nativeSrc": "26331:33:9", + "nodeType": "YulFunctionCall", + "src": "26331:33:9" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "26293:2:9", + "nodeType": "YulIdentifier", + "src": "26293:2:9" + }, + "nativeSrc": "26293:72:9", + "nodeType": "YulFunctionCall", + "src": "26293:72:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "26283:6:9", + "nodeType": "YulIdentifier", + "src": "26283:6:9" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2970, + "isOffset": false, + "isSlot": false, + "src": "26310:1:9", + "valueSize": 1 + }, + { + "declaration": 2970, + "isOffset": false, + "isSlot": false, + "src": "26326:1:9", + "valueSize": 1 + }, + { + "declaration": 2972, + "isOffset": false, + "isSlot": false, + "src": "26345:1:9", + "valueSize": 1 + }, + { + "declaration": 2972, + "isOffset": false, + "isSlot": false, + "src": "26361:1:9", + "valueSize": 1 + }, + { + "declaration": 2975, + "isOffset": false, + "isSlot": false, + "src": "26283:6:9", + "valueSize": 1 + } + ], + "id": 2977, + "nodeType": "InlineAssembly", + "src": "26260:115:9" + } + ] + }, + "documentation": { + "id": 2968, + "nodeType": "StructuredDocumentation", + "src": "26082:40:9", + "text": "@dev Returns whether `a` equals `b`." + }, + "id": 2979, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "eq", + "nameLocation": "26136:2:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2973, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2970, + "mutability": "mutable", + "name": "a", + "nameLocation": "26152:1:9", + "nodeType": "VariableDeclaration", + "scope": 2979, + "src": "26139:14:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2969, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "26139:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2972, + "mutability": "mutable", + "name": "b", + "nameLocation": "26168:1:9", + "nodeType": "VariableDeclaration", + "scope": 2979, + "src": "26155:14:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2971, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "26155:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "26138:32:9" + }, + "returnParameters": { + "id": 2976, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2975, + "mutability": "mutable", + "name": "result", + "nameLocation": "26199:6:9", + "nodeType": "VariableDeclaration", + "scope": 2979, + "src": "26194:11:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2974, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "26194:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "26193:13:9" + }, + "scope": 3089, + "src": "26127:254:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2990, + "nodeType": "Block", + "src": "26552:774:9", + "statements": [ + { + "AST": { + "nativeSrc": "26614:706:9", + "nodeType": "YulBlock", + "src": "26614:706:9", + "statements": [ + { + "nativeSrc": "26706:46:9", + "nodeType": "YulVariableDeclaration", + "src": "26706:46:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "26723:1:9", + "nodeType": "YulLiteral", + "src": "26723:1:9", + "type": "", + "value": "7" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "b", + "nativeSrc": "26741:1:9", + "nodeType": "YulIdentifier", + "src": "26741:1:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "26734:6:9", + "nodeType": "YulIdentifier", + "src": "26734:6:9" + }, + "nativeSrc": "26734:9:9", + "nodeType": "YulFunctionCall", + "src": "26734:9:9" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "26730:3:9", + "nodeType": "YulIdentifier", + "src": "26730:3:9" + }, + "nativeSrc": "26730:14:9", + "nodeType": "YulFunctionCall", + "src": "26730:14:9" + }, + { + "kind": "number", + "nativeSrc": "26746:3:9", + "nodeType": "YulLiteral", + "src": "26746:3:9", + "type": "", + "value": "255" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "26726:3:9", + "nodeType": "YulIdentifier", + "src": "26726:3:9" + }, + "nativeSrc": "26726:24:9", + "nodeType": "YulFunctionCall", + "src": "26726:24:9" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "26719:3:9", + "nodeType": "YulIdentifier", + "src": "26719:3:9" + }, + "nativeSrc": "26719:32:9", + "nodeType": "YulFunctionCall", + "src": "26719:32:9" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "26715:3:9", + "nodeType": "YulIdentifier", + "src": "26715:3:9" + }, + "nativeSrc": "26715:37:9", + "nodeType": "YulFunctionCall", + "src": "26715:37:9" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "26710:1:9", + "nodeType": "YulTypedName", + "src": "26710:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "26782:45:9", + "nodeType": "YulVariableDeclaration", + "src": "26782:45:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "26798:1:9", + "nodeType": "YulIdentifier", + "src": "26798:1:9" + }, + { + "arguments": [ + { + "name": "b", + "nativeSrc": "26804:1:9", + "nodeType": "YulIdentifier", + "src": "26804:1:9" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "26811:1:9", + "nodeType": "YulIdentifier", + "src": "26811:1:9" + }, + { + "arguments": [ + { + "name": "b", + "nativeSrc": "26818:1:9", + "nodeType": "YulIdentifier", + "src": "26818:1:9" + }, + { + "name": "m", + "nativeSrc": "26821:1:9", + "nodeType": "YulIdentifier", + "src": "26821:1:9" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "26814:3:9", + "nodeType": "YulIdentifier", + "src": "26814:3:9" + }, + "nativeSrc": "26814:9:9", + "nodeType": "YulFunctionCall", + "src": "26814:9:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "26807:3:9", + "nodeType": "YulIdentifier", + "src": "26807:3:9" + }, + "nativeSrc": "26807:17:9", + "nodeType": "YulFunctionCall", + "src": "26807:17:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "26801:2:9", + "nodeType": "YulIdentifier", + "src": "26801:2:9" + }, + "nativeSrc": "26801:24:9", + "nodeType": "YulFunctionCall", + "src": "26801:24:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "26795:2:9", + "nodeType": "YulIdentifier", + "src": "26795:2:9" + }, + "nativeSrc": "26795:31:9", + "nodeType": "YulFunctionCall", + "src": "26795:31:9" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "26791:3:9", + "nodeType": "YulIdentifier", + "src": "26791:3:9" + }, + "nativeSrc": "26791:36:9", + "nodeType": "YulFunctionCall", + "src": "26791:36:9" + }, + "variables": [ + { + "name": "x", + "nativeSrc": "26786:1:9", + "nodeType": "YulTypedName", + "src": "26786:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "26840:44:9", + "nodeType": "YulVariableDeclaration", + "src": "26840:44:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "26853:1:9", + "nodeType": "YulLiteral", + "src": "26853:1:9", + "type": "", + "value": "7" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "26874:3:9", + "nodeType": "YulLiteral", + "src": "26874:3:9", + "type": "", + "value": "128" + }, + { + "name": "x", + "nativeSrc": "26879:1:9", + "nodeType": "YulIdentifier", + "src": "26879:1:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "26870:3:9", + "nodeType": "YulIdentifier", + "src": "26870:3:9" + }, + "nativeSrc": "26870:11:9", + "nodeType": "YulFunctionCall", + "src": "26870:11:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "26863:6:9", + "nodeType": "YulIdentifier", + "src": "26863:6:9" + }, + "nativeSrc": "26863:19:9", + "nodeType": "YulFunctionCall", + "src": "26863:19:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "26856:6:9", + "nodeType": "YulIdentifier", + "src": "26856:6:9" + }, + "nativeSrc": "26856:27:9", + "nodeType": "YulFunctionCall", + "src": "26856:27:9" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "26849:3:9", + "nodeType": "YulIdentifier", + "src": "26849:3:9" + }, + "nativeSrc": "26849:35:9", + "nodeType": "YulFunctionCall", + "src": "26849:35:9" + }, + "variables": [ + { + "name": "r", + "nativeSrc": "26844:1:9", + "nodeType": "YulTypedName", + "src": "26844:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "26897:54:9", + "nodeType": "YulAssignment", + "src": "26897:54:9", + "value": { + "arguments": [ + { + "name": "r", + "nativeSrc": "26905:1:9", + "nodeType": "YulIdentifier", + "src": "26905:1:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "26912:1:9", + "nodeType": "YulLiteral", + "src": "26912:1:9", + "type": "", + "value": "6" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "26933:2:9", + "nodeType": "YulLiteral", + "src": "26933:2:9", + "type": "", + "value": "64" + }, + { + "arguments": [ + { + "name": "r", + "nativeSrc": "26941:1:9", + "nodeType": "YulIdentifier", + "src": "26941:1:9" + }, + { + "name": "x", + "nativeSrc": "26944:1:9", + "nodeType": "YulIdentifier", + "src": "26944:1:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "26937:3:9", + "nodeType": "YulIdentifier", + "src": "26937:3:9" + }, + "nativeSrc": "26937:9:9", + "nodeType": "YulFunctionCall", + "src": "26937:9:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "26929:3:9", + "nodeType": "YulIdentifier", + "src": "26929:3:9" + }, + "nativeSrc": "26929:18:9", + "nodeType": "YulFunctionCall", + "src": "26929:18:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "26922:6:9", + "nodeType": "YulIdentifier", + "src": "26922:6:9" + }, + "nativeSrc": "26922:26:9", + "nodeType": "YulFunctionCall", + "src": "26922:26:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "26915:6:9", + "nodeType": "YulIdentifier", + "src": "26915:6:9" + }, + "nativeSrc": "26915:34:9", + "nodeType": "YulFunctionCall", + "src": "26915:34:9" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "26908:3:9", + "nodeType": "YulIdentifier", + "src": "26908:3:9" + }, + "nativeSrc": "26908:42:9", + "nodeType": "YulFunctionCall", + "src": "26908:42:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "26902:2:9", + "nodeType": "YulIdentifier", + "src": "26902:2:9" + }, + "nativeSrc": "26902:49:9", + "nodeType": "YulFunctionCall", + "src": "26902:49:9" + }, + "variableNames": [ + { + "name": "r", + "nativeSrc": "26897:1:9", + "nodeType": "YulIdentifier", + "src": "26897:1:9" + } + ] + }, + { + "nativeSrc": "26964:45:9", + "nodeType": "YulAssignment", + "src": "26964:45:9", + "value": { + "arguments": [ + { + "name": "r", + "nativeSrc": "26972:1:9", + "nodeType": "YulIdentifier", + "src": "26972:1:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "26979:1:9", + "nodeType": "YulLiteral", + "src": "26979:1:9", + "type": "", + "value": "5" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "26985:10:9", + "nodeType": "YulLiteral", + "src": "26985:10:9", + "type": "", + "value": "0xffffffff" + }, + { + "arguments": [ + { + "name": "r", + "nativeSrc": "27001:1:9", + "nodeType": "YulIdentifier", + "src": "27001:1:9" + }, + { + "name": "x", + "nativeSrc": "27004:1:9", + "nodeType": "YulIdentifier", + "src": "27004:1:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "26997:3:9", + "nodeType": "YulIdentifier", + "src": "26997:3:9" + }, + "nativeSrc": "26997:9:9", + "nodeType": "YulFunctionCall", + "src": "26997:9:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "26982:2:9", + "nodeType": "YulIdentifier", + "src": "26982:2:9" + }, + "nativeSrc": "26982:25:9", + "nodeType": "YulFunctionCall", + "src": "26982:25:9" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "26975:3:9", + "nodeType": "YulIdentifier", + "src": "26975:3:9" + }, + "nativeSrc": "26975:33:9", + "nodeType": "YulFunctionCall", + "src": "26975:33:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "26969:2:9", + "nodeType": "YulIdentifier", + "src": "26969:2:9" + }, + "nativeSrc": "26969:40:9", + "nodeType": "YulFunctionCall", + "src": "26969:40:9" + }, + "variableNames": [ + { + "name": "r", + "nativeSrc": "26964:1:9", + "nodeType": "YulIdentifier", + "src": "26964:1:9" + } + ] + }, + { + "nativeSrc": "27022:41:9", + "nodeType": "YulAssignment", + "src": "27022:41:9", + "value": { + "arguments": [ + { + "name": "r", + "nativeSrc": "27030:1:9", + "nodeType": "YulIdentifier", + "src": "27030:1:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "27037:1:9", + "nodeType": "YulLiteral", + "src": "27037:1:9", + "type": "", + "value": "4" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "27043:6:9", + "nodeType": "YulLiteral", + "src": "27043:6:9", + "type": "", + "value": "0xffff" + }, + { + "arguments": [ + { + "name": "r", + "nativeSrc": "27055:1:9", + "nodeType": "YulIdentifier", + "src": "27055:1:9" + }, + { + "name": "x", + "nativeSrc": "27058:1:9", + "nodeType": "YulIdentifier", + "src": "27058:1:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "27051:3:9", + "nodeType": "YulIdentifier", + "src": "27051:3:9" + }, + "nativeSrc": "27051:9:9", + "nodeType": "YulFunctionCall", + "src": "27051:9:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "27040:2:9", + "nodeType": "YulIdentifier", + "src": "27040:2:9" + }, + "nativeSrc": "27040:21:9", + "nodeType": "YulFunctionCall", + "src": "27040:21:9" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "27033:3:9", + "nodeType": "YulIdentifier", + "src": "27033:3:9" + }, + "nativeSrc": "27033:29:9", + "nodeType": "YulFunctionCall", + "src": "27033:29:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "27027:2:9", + "nodeType": "YulIdentifier", + "src": "27027:2:9" + }, + "nativeSrc": "27027:36:9", + "nodeType": "YulFunctionCall", + "src": "27027:36:9" + }, + "variableNames": [ + { + "name": "r", + "nativeSrc": "27022:1:9", + "nodeType": "YulIdentifier", + "src": "27022:1:9" + } + ] + }, + { + "nativeSrc": "27076:39:9", + "nodeType": "YulAssignment", + "src": "27076:39:9", + "value": { + "arguments": [ + { + "name": "r", + "nativeSrc": "27084:1:9", + "nodeType": "YulIdentifier", + "src": "27084:1:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "27091:1:9", + "nodeType": "YulLiteral", + "src": "27091:1:9", + "type": "", + "value": "3" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "27097:4:9", + "nodeType": "YulLiteral", + "src": "27097:4:9", + "type": "", + "value": "0xff" + }, + { + "arguments": [ + { + "name": "r", + "nativeSrc": "27107:1:9", + "nodeType": "YulIdentifier", + "src": "27107:1:9" + }, + { + "name": "x", + "nativeSrc": "27110:1:9", + "nodeType": "YulIdentifier", + "src": "27110:1:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "27103:3:9", + "nodeType": "YulIdentifier", + "src": "27103:3:9" + }, + "nativeSrc": "27103:9:9", + "nodeType": "YulFunctionCall", + "src": "27103:9:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "27094:2:9", + "nodeType": "YulIdentifier", + "src": "27094:2:9" + }, + "nativeSrc": "27094:19:9", + "nodeType": "YulFunctionCall", + "src": "27094:19:9" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "27087:3:9", + "nodeType": "YulIdentifier", + "src": "27087:3:9" + }, + "nativeSrc": "27087:27:9", + "nodeType": "YulFunctionCall", + "src": "27087:27:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "27081:2:9", + "nodeType": "YulIdentifier", + "src": "27081:2:9" + }, + "nativeSrc": "27081:34:9", + "nodeType": "YulFunctionCall", + "src": "27081:34:9" + }, + "variableNames": [ + { + "name": "r", + "nativeSrc": "27076:1:9", + "nodeType": "YulIdentifier", + "src": "27076:1:9" + } + ] + }, + { + "nativeSrc": "27171:139:9", + "nodeType": "YulAssignment", + "src": "27171:139:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "a", + "nativeSrc": "27193:1:9", + "nodeType": "YulIdentifier", + "src": "27193:1:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "27187:5:9", + "nodeType": "YulIdentifier", + "src": "27187:5:9" + }, + "nativeSrc": "27187:8:9", + "nodeType": "YulFunctionCall", + "src": "27187:8:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "x", + "nativeSrc": "27208:1:9", + "nodeType": "YulIdentifier", + "src": "27208:1:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "27201:6:9", + "nodeType": "YulIdentifier", + "src": "27201:6:9" + }, + "nativeSrc": "27201:9:9", + "nodeType": "YulFunctionCall", + "src": "27201:9:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "27216:2:9", + "nodeType": "YulLiteral", + "src": "27216:2:9", + "type": "", + "value": "31" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "27224:1:9", + "nodeType": "YulLiteral", + "src": "27224:1:9", + "type": "", + "value": "3" + }, + { + "name": "r", + "nativeSrc": "27227:1:9", + "nodeType": "YulIdentifier", + "src": "27227:1:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "27220:3:9", + "nodeType": "YulIdentifier", + "src": "27220:3:9" + }, + "nativeSrc": "27220:9:9", + "nodeType": "YulFunctionCall", + "src": "27220:9:9" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "27212:3:9", + "nodeType": "YulIdentifier", + "src": "27212:3:9" + }, + "nativeSrc": "27212:18:9", + "nodeType": "YulFunctionCall", + "src": "27212:18:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "27197:3:9", + "nodeType": "YulIdentifier", + "src": "27197:3:9" + }, + "nativeSrc": "27197:34:9", + "nodeType": "YulFunctionCall", + "src": "27197:34:9" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "27184:2:9", + "nodeType": "YulIdentifier", + "src": "27184:2:9" + }, + "nativeSrc": "27184:48:9", + "nodeType": "YulFunctionCall", + "src": "27184:48:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "27262:1:9", + "nodeType": "YulLiteral", + "src": "27262:1:9", + "type": "", + "value": "8" + }, + { + "name": "r", + "nativeSrc": "27265:1:9", + "nodeType": "YulIdentifier", + "src": "27265:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "27258:3:9", + "nodeType": "YulIdentifier", + "src": "27258:3:9" + }, + "nativeSrc": "27258:9:9", + "nodeType": "YulFunctionCall", + "src": "27258:9:9" + }, + { + "name": "b", + "nativeSrc": "27269:1:9", + "nodeType": "YulIdentifier", + "src": "27269:1:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "27254:3:9", + "nodeType": "YulIdentifier", + "src": "27254:3:9" + }, + "nativeSrc": "27254:17:9", + "nodeType": "YulFunctionCall", + "src": "27254:17:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "27281:1:9", + "nodeType": "YulLiteral", + "src": "27281:1:9", + "type": "", + "value": "8" + }, + { + "name": "r", + "nativeSrc": "27284:1:9", + "nodeType": "YulIdentifier", + "src": "27284:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "27277:3:9", + "nodeType": "YulIdentifier", + "src": "27277:3:9" + }, + "nativeSrc": "27277:9:9", + "nodeType": "YulFunctionCall", + "src": "27277:9:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "a", + "nativeSrc": "27298:1:9", + "nodeType": "YulIdentifier", + "src": "27298:1:9" + }, + { + "kind": "number", + "nativeSrc": "27301:4:9", + "nodeType": "YulLiteral", + "src": "27301:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "27294:3:9", + "nodeType": "YulIdentifier", + "src": "27294:3:9" + }, + "nativeSrc": "27294:12:9", + "nodeType": "YulFunctionCall", + "src": "27294:12:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "27288:5:9", + "nodeType": "YulIdentifier", + "src": "27288:5:9" + }, + "nativeSrc": "27288:19:9", + "nodeType": "YulFunctionCall", + "src": "27288:19:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "27273:3:9", + "nodeType": "YulIdentifier", + "src": "27273:3:9" + }, + "nativeSrc": "27273:35:9", + "nodeType": "YulFunctionCall", + "src": "27273:35:9" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "27250:3:9", + "nodeType": "YulIdentifier", + "src": "27250:3:9" + }, + "nativeSrc": "27250:59:9", + "nodeType": "YulFunctionCall", + "src": "27250:59:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "27181:2:9", + "nodeType": "YulIdentifier", + "src": "27181:2:9" + }, + "nativeSrc": "27181:129:9", + "nodeType": "YulFunctionCall", + "src": "27181:129:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "27171:6:9", + "nodeType": "YulIdentifier", + "src": "27171:6:9" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2982, + "isOffset": false, + "isSlot": false, + "src": "27193:1:9", + "valueSize": 1 + }, + { + "declaration": 2982, + "isOffset": false, + "isSlot": false, + "src": "27298:1:9", + "valueSize": 1 + }, + { + "declaration": 2984, + "isOffset": false, + "isSlot": false, + "src": "26741:1:9", + "valueSize": 1 + }, + { + "declaration": 2984, + "isOffset": false, + "isSlot": false, + "src": "26804:1:9", + "valueSize": 1 + }, + { + "declaration": 2984, + "isOffset": false, + "isSlot": false, + "src": "26818:1:9", + "valueSize": 1 + }, + { + "declaration": 2984, + "isOffset": false, + "isSlot": false, + "src": "27269:1:9", + "valueSize": 1 + }, + { + "declaration": 2987, + "isOffset": false, + "isSlot": false, + "src": "27171:6:9", + "valueSize": 1 + } + ], + "id": 2989, + "nodeType": "InlineAssembly", + "src": "26605:715:9" + } + ] + }, + "documentation": { + "id": 2980, + "nodeType": "StructuredDocumentation", + "src": "26387:84:9", + "text": "@dev Returns whether `a` equals `b`, where `b` is a null-terminated small bytes." + }, + "id": 2991, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "eqs", + "nameLocation": "26485:3:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2985, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2982, + "mutability": "mutable", + "name": "a", + "nameLocation": "26502:1:9", + "nodeType": "VariableDeclaration", + "scope": 2991, + "src": "26489:14:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2981, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "26489:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2984, + "mutability": "mutable", + "name": "b", + "nameLocation": "26513:1:9", + "nodeType": "VariableDeclaration", + "scope": 2991, + "src": "26505:9:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2983, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "26505:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "26488:27:9" + }, + "returnParameters": { + "id": 2988, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2987, + "mutability": "mutable", + "name": "result", + "nameLocation": "26544:6:9", + "nodeType": "VariableDeclaration", + "scope": 2991, + "src": "26539:11:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2986, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "26539:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "26538:13:9" + }, + "scope": 3089, + "src": "26476:850:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3002, + "nodeType": "Block", + "src": "27553:1171:9", + "statements": [ + { + "AST": { + "nativeSrc": "27615:1103:9", + "nodeType": "YulBlock", + "src": "27615:1103:9", + "statements": [ + { + "nativeSrc": "27629:20:9", + "nodeType": "YulVariableDeclaration", + "src": "27629:20:9", + "value": { + "arguments": [ + { + "name": "a", + "nativeSrc": "27647:1:9", + "nodeType": "YulIdentifier", + "src": "27647:1:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "27641:5:9", + "nodeType": "YulIdentifier", + "src": "27641:5:9" + }, + "nativeSrc": "27641:8:9", + "nodeType": "YulFunctionCall", + "src": "27641:8:9" + }, + "variables": [ + { + "name": "aLen", + "nativeSrc": "27633:4:9", + "nodeType": "YulTypedName", + "src": "27633:4:9", + "type": "" + } + ] + }, + { + "nativeSrc": "27662:20:9", + "nodeType": "YulVariableDeclaration", + "src": "27662:20:9", + "value": { + "arguments": [ + { + "name": "b", + "nativeSrc": "27680:1:9", + "nodeType": "YulIdentifier", + "src": "27680:1:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "27674:5:9", + "nodeType": "YulIdentifier", + "src": "27674:5:9" + }, + "nativeSrc": "27674:8:9", + "nodeType": "YulFunctionCall", + "src": "27674:8:9" + }, + "variables": [ + { + "name": "bLen", + "nativeSrc": "27666:4:9", + "nodeType": "YulTypedName", + "src": "27666:4:9", + "type": "" + } + ] + }, + { + "nativeSrc": "27695:72:9", + "nodeType": "YulVariableDeclaration", + "src": "27695:72:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "aLen", + "nativeSrc": "27712:4:9", + "nodeType": "YulIdentifier", + "src": "27712:4:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "aLen", + "nativeSrc": "27726:4:9", + "nodeType": "YulIdentifier", + "src": "27726:4:9" + }, + { + "name": "bLen", + "nativeSrc": "27732:4:9", + "nodeType": "YulIdentifier", + "src": "27732:4:9" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "27722:3:9", + "nodeType": "YulIdentifier", + "src": "27722:3:9" + }, + "nativeSrc": "27722:15:9", + "nodeType": "YulFunctionCall", + "src": "27722:15:9" + }, + { + "arguments": [ + { + "name": "bLen", + "nativeSrc": "27742:4:9", + "nodeType": "YulIdentifier", + "src": "27742:4:9" + }, + { + "name": "aLen", + "nativeSrc": "27748:4:9", + "nodeType": "YulIdentifier", + "src": "27748:4:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "27739:2:9", + "nodeType": "YulIdentifier", + "src": "27739:2:9" + }, + "nativeSrc": "27739:14:9", + "nodeType": "YulFunctionCall", + "src": "27739:14:9" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "27718:3:9", + "nodeType": "YulIdentifier", + "src": "27718:3:9" + }, + "nativeSrc": "27718:36:9", + "nodeType": "YulFunctionCall", + "src": "27718:36:9" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "27708:3:9", + "nodeType": "YulIdentifier", + "src": "27708:3:9" + }, + "nativeSrc": "27708:47:9", + "nodeType": "YulFunctionCall", + "src": "27708:47:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "27761:4:9", + "nodeType": "YulLiteral", + "src": "27761:4:9", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "27757:3:9", + "nodeType": "YulIdentifier", + "src": "27757:3:9" + }, + "nativeSrc": "27757:9:9", + "nodeType": "YulFunctionCall", + "src": "27757:9:9" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "27704:3:9", + "nodeType": "YulIdentifier", + "src": "27704:3:9" + }, + "nativeSrc": "27704:63:9", + "nodeType": "YulFunctionCall", + "src": "27704:63:9" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "27699:1:9", + "nodeType": "YulTypedName", + "src": "27699:1:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "27785:404:9", + "nodeType": "YulBlock", + "src": "27785:404:9", + "statements": [ + { + "body": { + "nativeSrc": "27830:345:9", + "nodeType": "YulBlock", + "src": "27830:345:9", + "statements": [ + { + "nativeSrc": "27852:25:9", + "nodeType": "YulVariableDeclaration", + "src": "27852:25:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "a", + "nativeSrc": "27871:1:9", + "nodeType": "YulIdentifier", + "src": "27871:1:9" + }, + { + "name": "i", + "nativeSrc": "27874:1:9", + "nodeType": "YulIdentifier", + "src": "27874:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "27867:3:9", + "nodeType": "YulIdentifier", + "src": "27867:3:9" + }, + "nativeSrc": "27867:9:9", + "nodeType": "YulFunctionCall", + "src": "27867:9:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "27861:5:9", + "nodeType": "YulIdentifier", + "src": "27861:5:9" + }, + "nativeSrc": "27861:16:9", + "nodeType": "YulFunctionCall", + "src": "27861:16:9" + }, + "variables": [ + { + "name": "x", + "nativeSrc": "27856:1:9", + "nodeType": "YulTypedName", + "src": "27856:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "27898:25:9", + "nodeType": "YulVariableDeclaration", + "src": "27898:25:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "b", + "nativeSrc": "27917:1:9", + "nodeType": "YulIdentifier", + "src": "27917:1:9" + }, + { + "name": "i", + "nativeSrc": "27920:1:9", + "nodeType": "YulIdentifier", + "src": "27920:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "27913:3:9", + "nodeType": "YulIdentifier", + "src": "27913:3:9" + }, + "nativeSrc": "27913:9:9", + "nodeType": "YulFunctionCall", + "src": "27913:9:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "27907:5:9", + "nodeType": "YulIdentifier", + "src": "27907:5:9" + }, + "nativeSrc": "27907:16:9", + "nodeType": "YulFunctionCall", + "src": "27907:16:9" + }, + "variables": [ + { + "name": "y", + "nativeSrc": "27902:1:9", + "nodeType": "YulTypedName", + "src": "27902:1:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "27979:98:9", + "nodeType": "YulBlock", + "src": "27979:98:9", + "statements": [ + { + "nativeSrc": "28005:17:9", + "nodeType": "YulAssignment", + "src": "28005:17:9", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "28014:1:9", + "nodeType": "YulIdentifier", + "src": "28014:1:9" + }, + { + "kind": "number", + "nativeSrc": "28017:4:9", + "nodeType": "YulLiteral", + "src": "28017:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "28010:3:9", + "nodeType": "YulIdentifier", + "src": "28010:3:9" + }, + "nativeSrc": "28010:12:9", + "nodeType": "YulFunctionCall", + "src": "28010:12:9" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "28005:1:9", + "nodeType": "YulIdentifier", + "src": "28005:1:9" + } + ] + }, + { + "nativeSrc": "28047:8:9", + "nodeType": "YulContinue", + "src": "28047:8:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "x", + "nativeSrc": "27961:1:9", + "nodeType": "YulIdentifier", + "src": "27961:1:9" + }, + { + "name": "y", + "nativeSrc": "27964:1:9", + "nodeType": "YulIdentifier", + "src": "27964:1:9" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "27957:3:9", + "nodeType": "YulIdentifier", + "src": "27957:3:9" + }, + "nativeSrc": "27957:9:9", + "nodeType": "YulFunctionCall", + "src": "27957:9:9" + }, + { + "arguments": [ + { + "name": "i", + "nativeSrc": "27971:1:9", + "nodeType": "YulIdentifier", + "src": "27971:1:9" + }, + { + "name": "n", + "nativeSrc": "27974:1:9", + "nodeType": "YulIdentifier", + "src": "27974:1:9" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "27968:2:9", + "nodeType": "YulIdentifier", + "src": "27968:2:9" + }, + "nativeSrc": "27968:8:9", + "nodeType": "YulFunctionCall", + "src": "27968:8:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "27954:2:9", + "nodeType": "YulIdentifier", + "src": "27954:2:9" + }, + "nativeSrc": "27954:23:9", + "nodeType": "YulFunctionCall", + "src": "27954:23:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "27947:6:9", + "nodeType": "YulIdentifier", + "src": "27947:6:9" + }, + "nativeSrc": "27947:31:9", + "nodeType": "YulFunctionCall", + "src": "27947:31:9" + }, + "nativeSrc": "27944:133:9", + "nodeType": "YulIf", + "src": "27944:133:9" + }, + { + "nativeSrc": "28098:33:9", + "nodeType": "YulAssignment", + "src": "28098:33:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "x", + "nativeSrc": "28115:1:9", + "nodeType": "YulIdentifier", + "src": "28115:1:9" + }, + { + "name": "y", + "nativeSrc": "28118:1:9", + "nodeType": "YulIdentifier", + "src": "28118:1:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "28112:2:9", + "nodeType": "YulIdentifier", + "src": "28112:2:9" + }, + "nativeSrc": "28112:8:9", + "nodeType": "YulFunctionCall", + "src": "28112:8:9" + }, + { + "arguments": [ + { + "name": "x", + "nativeSrc": "28125:1:9", + "nodeType": "YulIdentifier", + "src": "28125:1:9" + }, + { + "name": "y", + "nativeSrc": "28128:1:9", + "nodeType": "YulIdentifier", + "src": "28128:1:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "28122:2:9", + "nodeType": "YulIdentifier", + "src": "28122:2:9" + }, + "nativeSrc": "28122:8:9", + "nodeType": "YulFunctionCall", + "src": "28122:8:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "28108:3:9", + "nodeType": "YulIdentifier", + "src": "28108:3:9" + }, + "nativeSrc": "28108:23:9", + "nodeType": "YulFunctionCall", + "src": "28108:23:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "28098:6:9", + "nodeType": "YulIdentifier", + "src": "28098:6:9" + } + ] + }, + { + "nativeSrc": "28152:5:9", + "nodeType": "YulBreak", + "src": "28152:5:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "27825:1:9", + "nodeType": "YulLiteral", + "src": "27825:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "27803:372:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "27827:2:9", + "nodeType": "YulBlock", + "src": "27827:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "27807:17:9", + "nodeType": "YulBlock", + "src": "27807:17:9", + "statements": [ + { + "nativeSrc": "27809:13:9", + "nodeType": "YulVariableDeclaration", + "src": "27809:13:9", + "value": { + "kind": "number", + "nativeSrc": "27818:4:9", + "nodeType": "YulLiteral", + "src": "27818:4:9", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "27813:1:9", + "nodeType": "YulTypedName", + "src": "27813:1:9", + "type": "" + } + ] + } + ] + }, + "src": "27803:372:9" + } + ] + }, + "condition": { + "name": "n", + "nativeSrc": "27783:1:9", + "nodeType": "YulIdentifier", + "src": "27783:1:9" + }, + "nativeSrc": "27780:409:9", + "nodeType": "YulIf", + "src": "27780:409:9" + }, + { + "body": { + "nativeSrc": "28263:445:9", + "nodeType": "YulBlock", + "src": "28263:445:9", + "statements": [ + { + "nativeSrc": "28281:75:9", + "nodeType": "YulVariableDeclaration", + "src": "28281:75:9", + "value": { + "kind": "number", + "nativeSrc": "28290:66:9", + "nodeType": "YulLiteral", + "src": "28290:66:9", + "type": "", + "value": "0x201f1e1d1c1b1a191817161514131211100f0e0d0c0b0a090807060504030201" + }, + "variables": [ + { + "name": "l", + "nativeSrc": "28285:1:9", + "nodeType": "YulTypedName", + "src": "28285:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "28373:85:9", + "nodeType": "YulVariableDeclaration", + "src": "28373:85:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "a", + "nativeSrc": "28400:1:9", + "nodeType": "YulIdentifier", + "src": "28400:1:9" + }, + { + "kind": "number", + "nativeSrc": "28403:4:9", + "nodeType": "YulLiteral", + "src": "28403:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "28396:3:9", + "nodeType": "YulIdentifier", + "src": "28396:3:9" + }, + "nativeSrc": "28396:12:9", + "nodeType": "YulFunctionCall", + "src": "28396:12:9" + }, + { + "name": "n", + "nativeSrc": "28410:1:9", + "nodeType": "YulIdentifier", + "src": "28410:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "28392:3:9", + "nodeType": "YulIdentifier", + "src": "28392:3:9" + }, + "nativeSrc": "28392:20:9", + "nodeType": "YulFunctionCall", + "src": "28392:20:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "28386:5:9", + "nodeType": "YulIdentifier", + "src": "28386:5:9" + }, + "nativeSrc": "28386:27:9", + "nodeType": "YulFunctionCall", + "src": "28386:27:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "28423:1:9", + "nodeType": "YulLiteral", + "src": "28423:1:9", + "type": "", + "value": "3" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "aLen", + "nativeSrc": "28435:4:9", + "nodeType": "YulIdentifier", + "src": "28435:4:9" + }, + { + "name": "n", + "nativeSrc": "28441:1:9", + "nodeType": "YulIdentifier", + "src": "28441:1:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "28431:3:9", + "nodeType": "YulIdentifier", + "src": "28431:3:9" + }, + "nativeSrc": "28431:12:9", + "nodeType": "YulFunctionCall", + "src": "28431:12:9" + }, + { + "name": "l", + "nativeSrc": "28445:1:9", + "nodeType": "YulIdentifier", + "src": "28445:1:9" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "28426:4:9", + "nodeType": "YulIdentifier", + "src": "28426:4:9" + }, + "nativeSrc": "28426:21:9", + "nodeType": "YulFunctionCall", + "src": "28426:21:9" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "28419:3:9", + "nodeType": "YulIdentifier", + "src": "28419:3:9" + }, + "nativeSrc": "28419:29:9", + "nodeType": "YulFunctionCall", + "src": "28419:29:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "28454:1:9", + "nodeType": "YulLiteral", + "src": "28454:1:9", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "28450:3:9", + "nodeType": "YulIdentifier", + "src": "28450:3:9" + }, + "nativeSrc": "28450:6:9", + "nodeType": "YulFunctionCall", + "src": "28450:6:9" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "28415:3:9", + "nodeType": "YulIdentifier", + "src": "28415:3:9" + }, + "nativeSrc": "28415:42:9", + "nodeType": "YulFunctionCall", + "src": "28415:42:9" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "28382:3:9", + "nodeType": "YulIdentifier", + "src": "28382:3:9" + }, + "nativeSrc": "28382:76:9", + "nodeType": "YulFunctionCall", + "src": "28382:76:9" + }, + "variables": [ + { + "name": "x", + "nativeSrc": "28377:1:9", + "nodeType": "YulTypedName", + "src": "28377:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "28475:85:9", + "nodeType": "YulVariableDeclaration", + "src": "28475:85:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "b", + "nativeSrc": "28502:1:9", + "nodeType": "YulIdentifier", + "src": "28502:1:9" + }, + { + "kind": "number", + "nativeSrc": "28505:4:9", + "nodeType": "YulLiteral", + "src": "28505:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "28498:3:9", + "nodeType": "YulIdentifier", + "src": "28498:3:9" + }, + "nativeSrc": "28498:12:9", + "nodeType": "YulFunctionCall", + "src": "28498:12:9" + }, + { + "name": "n", + "nativeSrc": "28512:1:9", + "nodeType": "YulIdentifier", + "src": "28512:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "28494:3:9", + "nodeType": "YulIdentifier", + "src": "28494:3:9" + }, + "nativeSrc": "28494:20:9", + "nodeType": "YulFunctionCall", + "src": "28494:20:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "28488:5:9", + "nodeType": "YulIdentifier", + "src": "28488:5:9" + }, + "nativeSrc": "28488:27:9", + "nodeType": "YulFunctionCall", + "src": "28488:27:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "28525:1:9", + "nodeType": "YulLiteral", + "src": "28525:1:9", + "type": "", + "value": "3" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "bLen", + "nativeSrc": "28537:4:9", + "nodeType": "YulIdentifier", + "src": "28537:4:9" + }, + { + "name": "n", + "nativeSrc": "28543:1:9", + "nodeType": "YulIdentifier", + "src": "28543:1:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "28533:3:9", + "nodeType": "YulIdentifier", + "src": "28533:3:9" + }, + "nativeSrc": "28533:12:9", + "nodeType": "YulFunctionCall", + "src": "28533:12:9" + }, + { + "name": "l", + "nativeSrc": "28547:1:9", + "nodeType": "YulIdentifier", + "src": "28547:1:9" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "28528:4:9", + "nodeType": "YulIdentifier", + "src": "28528:4:9" + }, + "nativeSrc": "28528:21:9", + "nodeType": "YulFunctionCall", + "src": "28528:21:9" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "28521:3:9", + "nodeType": "YulIdentifier", + "src": "28521:3:9" + }, + "nativeSrc": "28521:29:9", + "nodeType": "YulFunctionCall", + "src": "28521:29:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "28556:1:9", + "nodeType": "YulLiteral", + "src": "28556:1:9", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "28552:3:9", + "nodeType": "YulIdentifier", + "src": "28552:3:9" + }, + "nativeSrc": "28552:6:9", + "nodeType": "YulFunctionCall", + "src": "28552:6:9" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "28517:3:9", + "nodeType": "YulIdentifier", + "src": "28517:3:9" + }, + "nativeSrc": "28517:42:9", + "nodeType": "YulFunctionCall", + "src": "28517:42:9" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "28484:3:9", + "nodeType": "YulIdentifier", + "src": "28484:3:9" + }, + "nativeSrc": "28484:76:9", + "nodeType": "YulFunctionCall", + "src": "28484:76:9" + }, + "variables": [ + { + "name": "y", + "nativeSrc": "28479:1:9", + "nodeType": "YulTypedName", + "src": "28479:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "28577:33:9", + "nodeType": "YulAssignment", + "src": "28577:33:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "x", + "nativeSrc": "28594:1:9", + "nodeType": "YulIdentifier", + "src": "28594:1:9" + }, + { + "name": "y", + "nativeSrc": "28597:1:9", + "nodeType": "YulIdentifier", + "src": "28597:1:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "28591:2:9", + "nodeType": "YulIdentifier", + "src": "28591:2:9" + }, + "nativeSrc": "28591:8:9", + "nodeType": "YulFunctionCall", + "src": "28591:8:9" + }, + { + "arguments": [ + { + "name": "x", + "nativeSrc": "28604:1:9", + "nodeType": "YulIdentifier", + "src": "28604:1:9" + }, + { + "name": "y", + "nativeSrc": "28607:1:9", + "nodeType": "YulIdentifier", + "src": "28607:1:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "28601:2:9", + "nodeType": "YulIdentifier", + "src": "28601:2:9" + }, + "nativeSrc": "28601:8:9", + "nodeType": "YulFunctionCall", + "src": "28601:8:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "28587:3:9", + "nodeType": "YulIdentifier", + "src": "28587:3:9" + }, + "nativeSrc": "28587:23:9", + "nodeType": "YulFunctionCall", + "src": "28587:23:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "28577:6:9", + "nodeType": "YulIdentifier", + "src": "28577:6:9" + } + ] + }, + { + "body": { + "nativeSrc": "28645:49:9", + "nodeType": "YulBlock", + "src": "28645:49:9", + "statements": [ + { + "nativeSrc": "28647:45:9", + "nodeType": "YulAssignment", + "src": "28647:45:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "aLen", + "nativeSrc": "28664:4:9", + "nodeType": "YulIdentifier", + "src": "28664:4:9" + }, + { + "name": "bLen", + "nativeSrc": "28670:4:9", + "nodeType": "YulIdentifier", + "src": "28670:4:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "28661:2:9", + "nodeType": "YulIdentifier", + "src": "28661:2:9" + }, + "nativeSrc": "28661:14:9", + "nodeType": "YulFunctionCall", + "src": "28661:14:9" + }, + { + "arguments": [ + { + "name": "aLen", + "nativeSrc": "28680:4:9", + "nodeType": "YulIdentifier", + "src": "28680:4:9" + }, + { + "name": "bLen", + "nativeSrc": "28686:4:9", + "nodeType": "YulIdentifier", + "src": "28686:4:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "28677:2:9", + "nodeType": "YulIdentifier", + "src": "28677:2:9" + }, + "nativeSrc": "28677:14:9", + "nodeType": "YulFunctionCall", + "src": "28677:14:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "28657:3:9", + "nodeType": "YulIdentifier", + "src": "28657:3:9" + }, + "nativeSrc": "28657:35:9", + "nodeType": "YulFunctionCall", + "src": "28657:35:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "28647:6:9", + "nodeType": "YulIdentifier", + "src": "28647:6:9" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "result", + "nativeSrc": "28637:6:9", + "nodeType": "YulIdentifier", + "src": "28637:6:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "28630:6:9", + "nodeType": "YulIdentifier", + "src": "28630:6:9" + }, + "nativeSrc": "28630:14:9", + "nodeType": "YulFunctionCall", + "src": "28630:14:9" + }, + "nativeSrc": "28627:67:9", + "nodeType": "YulIf", + "src": "28627:67:9" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "result", + "nativeSrc": "28255:6:9", + "nodeType": "YulIdentifier", + "src": "28255:6:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "28248:6:9", + "nodeType": "YulIdentifier", + "src": "28248:6:9" + }, + "nativeSrc": "28248:14:9", + "nodeType": "YulFunctionCall", + "src": "28248:14:9" + }, + "nativeSrc": "28245:463:9", + "nodeType": "YulIf", + "src": "28245:463:9" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2994, + "isOffset": false, + "isSlot": false, + "src": "27647:1:9", + "valueSize": 1 + }, + { + "declaration": 2994, + "isOffset": false, + "isSlot": false, + "src": "27871:1:9", + "valueSize": 1 + }, + { + "declaration": 2994, + "isOffset": false, + "isSlot": false, + "src": "28400:1:9", + "valueSize": 1 + }, + { + "declaration": 2996, + "isOffset": false, + "isSlot": false, + "src": "27680:1:9", + "valueSize": 1 + }, + { + "declaration": 2996, + "isOffset": false, + "isSlot": false, + "src": "27917:1:9", + "valueSize": 1 + }, + { + "declaration": 2996, + "isOffset": false, + "isSlot": false, + "src": "28502:1:9", + "valueSize": 1 + }, + { + "declaration": 2999, + "isOffset": false, + "isSlot": false, + "src": "28098:6:9", + "valueSize": 1 + }, + { + "declaration": 2999, + "isOffset": false, + "isSlot": false, + "src": "28255:6:9", + "valueSize": 1 + }, + { + "declaration": 2999, + "isOffset": false, + "isSlot": false, + "src": "28577:6:9", + "valueSize": 1 + }, + { + "declaration": 2999, + "isOffset": false, + "isSlot": false, + "src": "28637:6:9", + "valueSize": 1 + }, + { + "declaration": 2999, + "isOffset": false, + "isSlot": false, + "src": "28647:6:9", + "valueSize": 1 + } + ], + "id": 3001, + "nodeType": "InlineAssembly", + "src": "27606:1112:9" + } + ] + }, + "documentation": { + "id": 2992, + "nodeType": "StructuredDocumentation", + "src": "27332:133:9", + "text": "@dev Returns 0 if `a == b`, -1 if `a < b`, +1 if `a > b`.\n If `a` == b[:a.length]`, and `a.length < b.length`, returns -1." + }, + "id": 3003, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "cmp", + "nameLocation": "27479:3:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2997, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2994, + "mutability": "mutable", + "name": "a", + "nameLocation": "27496:1:9", + "nodeType": "VariableDeclaration", + "scope": 3003, + "src": "27483:14:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2993, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "27483:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2996, + "mutability": "mutable", + "name": "b", + "nameLocation": "27512:1:9", + "nodeType": "VariableDeclaration", + "scope": 3003, + "src": "27499:14:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2995, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "27499:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "27482:32:9" + }, + "returnParameters": { + "id": 3000, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2999, + "mutability": "mutable", + "name": "result", + "nameLocation": "27545:6:9", + "nodeType": "VariableDeclaration", + "scope": 3003, + "src": "27538:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2998, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "27538:6:9", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "27537:15:9" + }, + "scope": 3089, + "src": "27470:1254:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3010, + "nodeType": "Block", + "src": "28833:628:9", + "statements": [ + { + "AST": { + "nativeSrc": "28895:560:9", + "nodeType": "YulBlock", + "src": "28895:560:9", + "statements": [ + { + "nativeSrc": "28986:28:9", + "nodeType": "YulVariableDeclaration", + "src": "28986:28:9", + "value": { + "arguments": [ + { + "name": "a", + "nativeSrc": "29006:1:9", + "nodeType": "YulIdentifier", + "src": "29006:1:9" + }, + { + "kind": "number", + "nativeSrc": "29009:4:9", + "nodeType": "YulLiteral", + "src": "29009:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "29002:3:9", + "nodeType": "YulIdentifier", + "src": "29002:3:9" + }, + "nativeSrc": "29002:12:9", + "nodeType": "YulFunctionCall", + "src": "29002:12:9" + }, + "variables": [ + { + "name": "retStart", + "nativeSrc": "28990:8:9", + "nodeType": "YulTypedName", + "src": "28990:8:9", + "type": "" + } + ] + }, + { + "nativeSrc": "29027:42:9", + "nodeType": "YulVariableDeclaration", + "src": "29027:42:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "a", + "nativeSrc": "29060:1:9", + "nodeType": "YulIdentifier", + "src": "29060:1:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "29054:5:9", + "nodeType": "YulIdentifier", + "src": "29054:5:9" + }, + "nativeSrc": "29054:8:9", + "nodeType": "YulFunctionCall", + "src": "29054:8:9" + }, + { + "kind": "number", + "nativeSrc": "29064:4:9", + "nodeType": "YulLiteral", + "src": "29064:4:9", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "29050:3:9", + "nodeType": "YulIdentifier", + "src": "29050:3:9" + }, + "nativeSrc": "29050:19:9", + "nodeType": "YulFunctionCall", + "src": "29050:19:9" + }, + "variables": [ + { + "name": "retUnpaddedSize", + "nativeSrc": "29031:15:9", + "nodeType": "YulTypedName", + "src": "29031:15:9", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "retStart", + "nativeSrc": "29222:8:9", + "nodeType": "YulIdentifier", + "src": "29222:8:9" + }, + { + "name": "retUnpaddedSize", + "nativeSrc": "29232:15:9", + "nodeType": "YulIdentifier", + "src": "29232:15:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "29218:3:9", + "nodeType": "YulIdentifier", + "src": "29218:3:9" + }, + "nativeSrc": "29218:30:9", + "nodeType": "YulFunctionCall", + "src": "29218:30:9" + }, + { + "kind": "number", + "nativeSrc": "29250:1:9", + "nodeType": "YulLiteral", + "src": "29250:1:9", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "29211:6:9", + "nodeType": "YulIdentifier", + "src": "29211:6:9" + }, + "nativeSrc": "29211:41:9", + "nodeType": "YulFunctionCall", + "src": "29211:41:9" + }, + "nativeSrc": "29211:41:9", + "nodeType": "YulExpressionStatement", + "src": "29211:41:9" + }, + { + "expression": { + "arguments": [ + { + "name": "retStart", + "nativeSrc": "29272:8:9", + "nodeType": "YulIdentifier", + "src": "29272:8:9" + }, + { + "kind": "number", + "nativeSrc": "29282:4:9", + "nodeType": "YulLiteral", + "src": "29282:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "29265:6:9", + "nodeType": "YulIdentifier", + "src": "29265:6:9" + }, + "nativeSrc": "29265:22:9", + "nodeType": "YulFunctionCall", + "src": "29265:22:9" + }, + "nativeSrc": "29265:22:9", + "nodeType": "YulExpressionStatement", + "src": "29265:22:9" + }, + { + "expression": { + "arguments": [ + { + "name": "retStart", + "nativeSrc": "29392:8:9", + "nodeType": "YulIdentifier", + "src": "29392:8:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "29410:4:9", + "nodeType": "YulLiteral", + "src": "29410:4:9", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "29406:3:9", + "nodeType": "YulIdentifier", + "src": "29406:3:9" + }, + "nativeSrc": "29406:9:9", + "nodeType": "YulFunctionCall", + "src": "29406:9:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "29421:4:9", + "nodeType": "YulLiteral", + "src": "29421:4:9", + "type": "", + "value": "0x1f" + }, + { + "name": "retUnpaddedSize", + "nativeSrc": "29427:15:9", + "nodeType": "YulIdentifier", + "src": "29427:15:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "29417:3:9", + "nodeType": "YulIdentifier", + "src": "29417:3:9" + }, + "nativeSrc": "29417:26:9", + "nodeType": "YulFunctionCall", + "src": "29417:26:9" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "29402:3:9", + "nodeType": "YulIdentifier", + "src": "29402:3:9" + }, + "nativeSrc": "29402:42:9", + "nodeType": "YulFunctionCall", + "src": "29402:42:9" + } + ], + "functionName": { + "name": "return", + "nativeSrc": "29385:6:9", + "nodeType": "YulIdentifier", + "src": "29385:6:9" + }, + "nativeSrc": "29385:60:9", + "nodeType": "YulFunctionCall", + "src": "29385:60:9" + }, + "nativeSrc": "29385:60:9", + "nodeType": "YulExpressionStatement", + "src": "29385:60:9" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3006, + "isOffset": false, + "isSlot": false, + "src": "29006:1:9", + "valueSize": 1 + }, + { + "declaration": 3006, + "isOffset": false, + "isSlot": false, + "src": "29060:1:9", + "valueSize": 1 + } + ], + "id": 3009, + "nodeType": "InlineAssembly", + "src": "28886:569:9" + } + ] + }, + "documentation": { + "id": 3004, + "nodeType": "StructuredDocumentation", + "src": "28730:46:9", + "text": "@dev Directly returns `a` without copying." + }, + "id": 3011, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "directReturn", + "nameLocation": "28790:12:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3007, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3006, + "mutability": "mutable", + "name": "a", + "nameLocation": "28816:1:9", + "nodeType": "VariableDeclaration", + "scope": 3011, + "src": "28803:14:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3005, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "28803:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "28802:16:9" + }, + "returnParameters": { + "id": 3008, + "nodeType": "ParameterList", + "parameters": [], + "src": "28833:0:9" + }, + "scope": 3089, + "src": "28781:680:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3019, + "nodeType": "Block", + "src": "29577:1825:9", + "statements": [ + { + "AST": { + "nativeSrc": "29639:1757:9", + "nodeType": "YulBlock", + "src": "29639:1757:9", + "statements": [ + { + "nativeSrc": "29653:17:9", + "nodeType": "YulVariableDeclaration", + "src": "29653:17:9", + "value": { + "arguments": [ + { + "name": "a", + "nativeSrc": "29668:1:9", + "nodeType": "YulIdentifier", + "src": "29668:1:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "29662:5:9", + "nodeType": "YulIdentifier", + "src": "29662:5:9" + }, + "nativeSrc": "29662:8:9", + "nodeType": "YulFunctionCall", + "src": "29662:8:9" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "29657:1:9", + "nodeType": "YulTypedName", + "src": "29657:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "29698:21:9", + "nodeType": "YulVariableDeclaration", + "src": "29698:21:9", + "value": { + "arguments": [ + { + "name": "a", + "nativeSrc": "29711:1:9", + "nodeType": "YulIdentifier", + "src": "29711:1:9" + }, + { + "kind": "number", + "nativeSrc": "29714:4:9", + "nodeType": "YulLiteral", + "src": "29714:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "29707:3:9", + "nodeType": "YulIdentifier", + "src": "29707:3:9" + }, + "nativeSrc": "29707:12:9", + "nodeType": "YulFunctionCall", + "src": "29707:12:9" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "29702:1:9", + "nodeType": "YulTypedName", + "src": "29702:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "29761:10:9", + "nodeType": "YulVariableDeclaration", + "src": "29761:10:9", + "value": { + "name": "a", + "nativeSrc": "29770:1:9", + "nodeType": "YulIdentifier", + "src": "29770:1:9" + }, + "variables": [ + { + "name": "u", + "nativeSrc": "29765:1:9", + "nodeType": "YulTypedName", + "src": "29765:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "29808:18:9", + "nodeType": "YulVariableDeclaration", + "src": "29808:18:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "29821:4:9", + "nodeType": "YulLiteral", + "src": "29821:4:9", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "29817:3:9", + "nodeType": "YulIdentifier", + "src": "29817:3:9" + }, + "nativeSrc": "29817:9:9", + "nodeType": "YulFunctionCall", + "src": "29817:9:9" + }, + "variables": [ + { + "name": "w", + "nativeSrc": "29812:1:9", + "nodeType": "YulTypedName", + "src": "29812:1:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "29894:1260:9", + "nodeType": "YulBlock", + "src": "29894:1260:9", + "statements": [ + { + "nativeSrc": "29912:26:9", + "nodeType": "YulVariableDeclaration", + "src": "29912:26:9", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "29925:1:9", + "nodeType": "YulIdentifier", + "src": "29925:1:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "29932:1:9", + "nodeType": "YulLiteral", + "src": "29932:1:9", + "type": "", + "value": "5" + }, + { + "name": "i", + "nativeSrc": "29935:1:9", + "nodeType": "YulIdentifier", + "src": "29935:1:9" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "29928:3:9", + "nodeType": "YulIdentifier", + "src": "29928:3:9" + }, + "nativeSrc": "29928:9:9", + "nodeType": "YulFunctionCall", + "src": "29928:9:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "29921:3:9", + "nodeType": "YulIdentifier", + "src": "29921:3:9" + }, + "nativeSrc": "29921:17:9", + "nodeType": "YulFunctionCall", + "src": "29921:17:9" + }, + "variables": [ + { + "name": "c", + "nativeSrc": "29916:1:9", + "nodeType": "YulTypedName", + "src": "29916:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "29989:17:9", + "nodeType": "YulVariableDeclaration", + "src": "29989:17:9", + "value": { + "arguments": [ + { + "name": "c", + "nativeSrc": "30004:1:9", + "nodeType": "YulIdentifier", + "src": "30004:1:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "29998:5:9", + "nodeType": "YulIdentifier", + "src": "29998:5:9" + }, + "nativeSrc": "29998:8:9", + "nodeType": "YulFunctionCall", + "src": "29998:8:9" + }, + "variables": [ + { + "name": "s", + "nativeSrc": "29993:1:9", + "nodeType": "YulTypedName", + "src": "29993:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "30034:17:9", + "nodeType": "YulVariableDeclaration", + "src": "30034:17:9", + "value": { + "arguments": [ + { + "name": "s", + "nativeSrc": "30049:1:9", + "nodeType": "YulIdentifier", + "src": "30049:1:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "30043:5:9", + "nodeType": "YulIdentifier", + "src": "30043:5:9" + }, + "nativeSrc": "30043:8:9", + "nodeType": "YulFunctionCall", + "src": "30043:8:9" + }, + "variables": [ + { + "name": "l", + "nativeSrc": "30038:1:9", + "nodeType": "YulTypedName", + "src": "30038:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "30086:21:9", + "nodeType": "YulVariableDeclaration", + "src": "30086:21:9", + "value": { + "arguments": [ + { + "name": "l", + "nativeSrc": "30099:1:9", + "nodeType": "YulIdentifier", + "src": "30099:1:9" + }, + { + "kind": "number", + "nativeSrc": "30102:4:9", + "nodeType": "YulLiteral", + "src": "30102:4:9", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "30095:3:9", + "nodeType": "YulIdentifier", + "src": "30095:3:9" + }, + "nativeSrc": "30095:12:9", + "nodeType": "YulFunctionCall", + "src": "30095:12:9" + }, + "variables": [ + { + "name": "r", + "nativeSrc": "30090:1:9", + "nodeType": "YulTypedName", + "src": "30090:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "30147:29:9", + "nodeType": "YulVariableDeclaration", + "src": "30147:29:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30160:4:9", + "nodeType": "YulLiteral", + "src": "30160:4:9", + "type": "", + "value": "0x20" + }, + { + "arguments": [ + { + "name": "l", + "nativeSrc": "30170:1:9", + "nodeType": "YulIdentifier", + "src": "30170:1:9" + }, + { + "name": "w", + "nativeSrc": "30173:1:9", + "nodeType": "YulIdentifier", + "src": "30173:1:9" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "30166:3:9", + "nodeType": "YulIdentifier", + "src": "30166:3:9" + }, + "nativeSrc": "30166:9:9", + "nodeType": "YulFunctionCall", + "src": "30166:9:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30156:3:9", + "nodeType": "YulIdentifier", + "src": "30156:3:9" + }, + "nativeSrc": "30156:20:9", + "nodeType": "YulFunctionCall", + "src": "30156:20:9" + }, + "variables": [ + { + "name": "z", + "nativeSrc": "30151:1:9", + "nodeType": "YulTypedName", + "src": "30151:1:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "30394:585:9", + "nodeType": "YulBlock", + "src": "30394:585:9", + "statements": [ + { + "nativeSrc": "30416:20:9", + "nodeType": "YulVariableDeclaration", + "src": "30416:20:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30431:4:9", + "nodeType": "YulLiteral", + "src": "30431:4:9", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "30425:5:9", + "nodeType": "YulIdentifier", + "src": "30425:5:9" + }, + "nativeSrc": "30425:11:9", + "nodeType": "YulFunctionCall", + "src": "30425:11:9" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "30420:1:9", + "nodeType": "YulTypedName", + "src": "30420:1:9", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "30464:1:9", + "nodeType": "YulIdentifier", + "src": "30464:1:9" + }, + { + "name": "l", + "nativeSrc": "30467:1:9", + "nodeType": "YulIdentifier", + "src": "30467:1:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "30457:6:9", + "nodeType": "YulIdentifier", + "src": "30457:6:9" + }, + "nativeSrc": "30457:12:9", + "nodeType": "YulFunctionCall", + "src": "30457:12:9" + }, + "nativeSrc": "30457:12:9", + "nodeType": "YulExpressionStatement", + "src": "30457:12:9" + }, + { + "body": { + "nativeSrc": "30525:215:9", + "nodeType": "YulBlock", + "src": "30525:215:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "30562:1:9", + "nodeType": "YulIdentifier", + "src": "30562:1:9" + }, + { + "name": "z", + "nativeSrc": "30565:1:9", + "nodeType": "YulIdentifier", + "src": "30565:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30558:3:9", + "nodeType": "YulIdentifier", + "src": "30558:3:9" + }, + "nativeSrc": "30558:9:9", + "nodeType": "YulFunctionCall", + "src": "30558:9:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "s", + "nativeSrc": "30579:1:9", + "nodeType": "YulIdentifier", + "src": "30579:1:9" + }, + { + "name": "z", + "nativeSrc": "30582:1:9", + "nodeType": "YulIdentifier", + "src": "30582:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30575:3:9", + "nodeType": "YulIdentifier", + "src": "30575:3:9" + }, + "nativeSrc": "30575:9:9", + "nodeType": "YulFunctionCall", + "src": "30575:9:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "30569:5:9", + "nodeType": "YulIdentifier", + "src": "30569:5:9" + }, + "nativeSrc": "30569:16:9", + "nodeType": "YulFunctionCall", + "src": "30569:16:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "30551:6:9", + "nodeType": "YulIdentifier", + "src": "30551:6:9" + }, + "nativeSrc": "30551:35:9", + "nodeType": "YulFunctionCall", + "src": "30551:35:9" + }, + "nativeSrc": "30551:35:9", + "nodeType": "YulExpressionStatement", + "src": "30551:35:9" + }, + { + "nativeSrc": "30638:14:9", + "nodeType": "YulAssignment", + "src": "30638:14:9", + "value": { + "arguments": [ + { + "name": "z", + "nativeSrc": "30647:1:9", + "nodeType": "YulIdentifier", + "src": "30647:1:9" + }, + { + "name": "w", + "nativeSrc": "30650:1:9", + "nodeType": "YulIdentifier", + "src": "30650:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30643:3:9", + "nodeType": "YulIdentifier", + "src": "30643:3:9" + }, + "nativeSrc": "30643:9:9", + "nodeType": "YulFunctionCall", + "src": "30643:9:9" + }, + "variableNames": [ + { + "name": "z", + "nativeSrc": "30638:1:9", + "nodeType": "YulIdentifier", + "src": "30638:1:9" + } + ] + }, + { + "body": { + "nativeSrc": "30709:9:9", + "nodeType": "YulBlock", + "src": "30709:9:9", + "statements": [ + { + "nativeSrc": "30711:5:9", + "nodeType": "YulBreak", + "src": "30711:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "z", + "nativeSrc": "30706:1:9", + "nodeType": "YulIdentifier", + "src": "30706:1:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "30699:6:9", + "nodeType": "YulIdentifier", + "src": "30699:6:9" + }, + "nativeSrc": "30699:9:9", + "nodeType": "YulFunctionCall", + "src": "30699:9:9" + }, + "nativeSrc": "30696:22:9", + "nodeType": "YulIf", + "src": "30696:22:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "30520:1:9", + "nodeType": "YulLiteral", + "src": "30520:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "30513:227:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "30522:2:9", + "nodeType": "YulBlock", + "src": "30522:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "30517:2:9", + "nodeType": "YulBlock", + "src": "30517:2:9", + "statements": [] + }, + "src": "30513:227:9" + }, + { + "nativeSrc": "30761:29:9", + "nodeType": "YulVariableDeclaration", + "src": "30761:29:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "30778:1:9", + "nodeType": "YulIdentifier", + "src": "30778:1:9" + }, + { + "kind": "number", + "nativeSrc": "30781:4:9", + "nodeType": "YulLiteral", + "src": "30781:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30774:3:9", + "nodeType": "YulIdentifier", + "src": "30774:3:9" + }, + "nativeSrc": "30774:12:9", + "nodeType": "YulFunctionCall", + "src": "30774:12:9" + }, + { + "name": "l", + "nativeSrc": "30788:1:9", + "nodeType": "YulIdentifier", + "src": "30788:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30770:3:9", + "nodeType": "YulIdentifier", + "src": "30770:3:9" + }, + "nativeSrc": "30770:20:9", + "nodeType": "YulFunctionCall", + "src": "30770:20:9" + }, + "variables": [ + { + "name": "e", + "nativeSrc": "30765:1:9", + "nodeType": "YulTypedName", + "src": "30765:1:9", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "e", + "nativeSrc": "30818:1:9", + "nodeType": "YulIdentifier", + "src": "30818:1:9" + }, + { + "kind": "number", + "nativeSrc": "30821:1:9", + "nodeType": "YulLiteral", + "src": "30821:1:9", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "30811:6:9", + "nodeType": "YulIdentifier", + "src": "30811:6:9" + }, + "nativeSrc": "30811:12:9", + "nodeType": "YulFunctionCall", + "src": "30811:12:9" + }, + "nativeSrc": "30811:12:9", + "nodeType": "YulExpressionStatement", + "src": "30811:12:9" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30895:4:9", + "nodeType": "YulLiteral", + "src": "30895:4:9", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "e", + "nativeSrc": "30905:1:9", + "nodeType": "YulIdentifier", + "src": "30905:1:9" + }, + { + "kind": "number", + "nativeSrc": "30908:4:9", + "nodeType": "YulLiteral", + "src": "30908:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30901:3:9", + "nodeType": "YulIdentifier", + "src": "30901:3:9" + }, + "nativeSrc": "30901:12:9", + "nodeType": "YulFunctionCall", + "src": "30901:12:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "30888:6:9", + "nodeType": "YulIdentifier", + "src": "30888:6:9" + }, + "nativeSrc": "30888:26:9", + "nodeType": "YulFunctionCall", + "src": "30888:26:9" + }, + "nativeSrc": "30888:26:9", + "nodeType": "YulExpressionStatement", + "src": "30888:26:9" + }, + { + "nativeSrc": "30955:6:9", + "nodeType": "YulAssignment", + "src": "30955:6:9", + "value": { + "name": "m", + "nativeSrc": "30960:1:9", + "nodeType": "YulIdentifier", + "src": "30960:1:9" + }, + "variableNames": [ + { + "name": "s", + "nativeSrc": "30955:1:9", + "nodeType": "YulIdentifier", + "src": "30955:1:9" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "s", + "nativeSrc": "30329:1:9", + "nodeType": "YulIdentifier", + "src": "30329:1:9" + }, + { + "name": "o", + "nativeSrc": "30332:1:9", + "nodeType": "YulIdentifier", + "src": "30332:1:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "30326:2:9", + "nodeType": "YulIdentifier", + "src": "30326:2:9" + }, + "nativeSrc": "30326:8:9", + "nodeType": "YulFunctionCall", + "src": "30326:8:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "r", + "nativeSrc": "30346:1:9", + "nodeType": "YulIdentifier", + "src": "30346:1:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "30339:6:9", + "nodeType": "YulIdentifier", + "src": "30339:6:9" + }, + "nativeSrc": "30339:9:9", + "nodeType": "YulFunctionCall", + "src": "30339:9:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30365:1:9", + "nodeType": "YulLiteral", + "src": "30365:1:9", + "type": "", + "value": "3" + }, + { + "name": "r", + "nativeSrc": "30368:1:9", + "nodeType": "YulIdentifier", + "src": "30368:1:9" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "30361:3:9", + "nodeType": "YulIdentifier", + "src": "30361:3:9" + }, + "nativeSrc": "30361:9:9", + "nodeType": "YulFunctionCall", + "src": "30361:9:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "s", + "nativeSrc": "30382:1:9", + "nodeType": "YulIdentifier", + "src": "30382:1:9" + }, + { + "name": "z", + "nativeSrc": "30385:1:9", + "nodeType": "YulIdentifier", + "src": "30385:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30378:3:9", + "nodeType": "YulIdentifier", + "src": "30378:3:9" + }, + "nativeSrc": "30378:9:9", + "nodeType": "YulFunctionCall", + "src": "30378:9:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "30372:5:9", + "nodeType": "YulIdentifier", + "src": "30372:5:9" + }, + "nativeSrc": "30372:16:9", + "nodeType": "YulFunctionCall", + "src": "30372:16:9" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "30357:3:9", + "nodeType": "YulIdentifier", + "src": "30357:3:9" + }, + "nativeSrc": "30357:32:9", + "nodeType": "YulFunctionCall", + "src": "30357:32:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "30350:6:9", + "nodeType": "YulIdentifier", + "src": "30350:6:9" + }, + "nativeSrc": "30350:40:9", + "nodeType": "YulFunctionCall", + "src": "30350:40:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "30336:2:9", + "nodeType": "YulIdentifier", + "src": "30336:2:9" + }, + "nativeSrc": "30336:55:9", + "nodeType": "YulFunctionCall", + "src": "30336:55:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "30323:2:9", + "nodeType": "YulIdentifier", + "src": "30323:2:9" + }, + "nativeSrc": "30323:69:9", + "nodeType": "YulFunctionCall", + "src": "30323:69:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "30316:6:9", + "nodeType": "YulIdentifier", + "src": "30316:6:9" + }, + "nativeSrc": "30316:77:9", + "nodeType": "YulFunctionCall", + "src": "30316:77:9" + }, + "nativeSrc": "30313:666:9", + "nodeType": "YulIf", + "src": "30313:666:9" + }, + { + "expression": { + "arguments": [ + { + "name": "c", + "nativeSrc": "31003:1:9", + "nodeType": "YulIdentifier", + "src": "31003:1:9" + }, + { + "arguments": [ + { + "name": "s", + "nativeSrc": "31010:1:9", + "nodeType": "YulIdentifier", + "src": "31010:1:9" + }, + { + "name": "o", + "nativeSrc": "31013:1:9", + "nodeType": "YulIdentifier", + "src": "31013:1:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "31006:3:9", + "nodeType": "YulIdentifier", + "src": "31006:3:9" + }, + "nativeSrc": "31006:9:9", + "nodeType": "YulFunctionCall", + "src": "31006:9:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "30996:6:9", + "nodeType": "YulIdentifier", + "src": "30996:6:9" + }, + "nativeSrc": "30996:20:9", + "nodeType": "YulFunctionCall", + "src": "30996:20:9" + }, + "nativeSrc": "30996:20:9", + "nodeType": "YulExpressionStatement", + "src": "30996:20:9" + }, + { + "nativeSrc": "31064:29:9", + "nodeType": "YulVariableDeclaration", + "src": "31064:29:9", + "value": { + "arguments": [ + { + "name": "l", + "nativeSrc": "31077:1:9", + "nodeType": "YulIdentifier", + "src": "31077:1:9" + }, + { + "arguments": [ + { + "name": "s", + "nativeSrc": "31084:1:9", + "nodeType": "YulIdentifier", + "src": "31084:1:9" + }, + { + "kind": "number", + "nativeSrc": "31087:4:9", + "nodeType": "YulLiteral", + "src": "31087:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31080:3:9", + "nodeType": "YulIdentifier", + "src": "31080:3:9" + }, + "nativeSrc": "31080:12:9", + "nodeType": "YulFunctionCall", + "src": "31080:12:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31073:3:9", + "nodeType": "YulIdentifier", + "src": "31073:3:9" + }, + "nativeSrc": "31073:20:9", + "nodeType": "YulFunctionCall", + "src": "31073:20:9" + }, + "variables": [ + { + "name": "t", + "nativeSrc": "31068:1:9", + "nodeType": "YulTypedName", + "src": "31068:1:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "31130:10:9", + "nodeType": "YulBlock", + "src": "31130:10:9", + "statements": [ + { + "nativeSrc": "31132:6:9", + "nodeType": "YulAssignment", + "src": "31132:6:9", + "value": { + "name": "t", + "nativeSrc": "31137:1:9", + "nodeType": "YulIdentifier", + "src": "31137:1:9" + }, + "variableNames": [ + { + "name": "u", + "nativeSrc": "31132:1:9", + "nodeType": "YulIdentifier", + "src": "31132:1:9" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "t", + "nativeSrc": "31123:1:9", + "nodeType": "YulIdentifier", + "src": "31123:1:9" + }, + { + "name": "u", + "nativeSrc": "31126:1:9", + "nodeType": "YulIdentifier", + "src": "31126:1:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "31120:2:9", + "nodeType": "YulIdentifier", + "src": "31120:2:9" + }, + "nativeSrc": "31120:8:9", + "nodeType": "YulFunctionCall", + "src": "31120:8:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "31113:6:9", + "nodeType": "YulIdentifier", + "src": "31113:6:9" + }, + "nativeSrc": "31113:16:9", + "nodeType": "YulFunctionCall", + "src": "31113:16:9" + }, + "nativeSrc": "31110:30:9", + "nodeType": "YulIf", + "src": "31110:30:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "29868:1:9", + "nodeType": "YulIdentifier", + "src": "29868:1:9" + }, + { + "name": "n", + "nativeSrc": "29871:1:9", + "nodeType": "YulIdentifier", + "src": "29871:1:9" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "29865:2:9", + "nodeType": "YulIdentifier", + "src": "29865:2:9" + }, + "nativeSrc": "29865:8:9", + "nodeType": "YulFunctionCall", + "src": "29865:8:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "29858:6:9", + "nodeType": "YulIdentifier", + "src": "29858:6:9" + }, + "nativeSrc": "29858:16:9", + "nodeType": "YulFunctionCall", + "src": "29858:16:9" + }, + "nativeSrc": "29839:1315:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "29875:18:9", + "nodeType": "YulBlock", + "src": "29875:18:9", + "statements": [ + { + "nativeSrc": "29877:14:9", + "nodeType": "YulAssignment", + "src": "29877:14:9", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "29886:1:9", + "nodeType": "YulIdentifier", + "src": "29886:1:9" + }, + { + "kind": "number", + "nativeSrc": "29889:1:9", + "nodeType": "YulLiteral", + "src": "29889:1:9", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "29882:3:9", + "nodeType": "YulIdentifier", + "src": "29882:3:9" + }, + "nativeSrc": "29882:9:9", + "nodeType": "YulFunctionCall", + "src": "29882:9:9" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "29877:1:9", + "nodeType": "YulIdentifier", + "src": "29877:1:9" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "29843:14:9", + "nodeType": "YulBlock", + "src": "29843:14:9", + "statements": [ + { + "nativeSrc": "29845:10:9", + "nodeType": "YulVariableDeclaration", + "src": "29845:10:9", + "value": { + "kind": "number", + "nativeSrc": "29854:1:9", + "nodeType": "YulLiteral", + "src": "29854:1:9", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "29849:1:9", + "nodeType": "YulTypedName", + "src": "29849:1:9", + "type": "" + } + ] + } + ] + }, + "src": "29839:1315:9" + }, + { + "nativeSrc": "31167:25:9", + "nodeType": "YulVariableDeclaration", + "src": "31167:25:9", + "value": { + "arguments": [ + { + "name": "a", + "nativeSrc": "31187:1:9", + "nodeType": "YulIdentifier", + "src": "31187:1:9" + }, + { + "name": "w", + "nativeSrc": "31190:1:9", + "nodeType": "YulIdentifier", + "src": "31190:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31183:3:9", + "nodeType": "YulIdentifier", + "src": "31183:3:9" + }, + "nativeSrc": "31183:9:9", + "nodeType": "YulFunctionCall", + "src": "31183:9:9" + }, + "variables": [ + { + "name": "retStart", + "nativeSrc": "31171:8:9", + "nodeType": "YulTypedName", + "src": "31171:8:9", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "retStart", + "nativeSrc": "31261:8:9", + "nodeType": "YulIdentifier", + "src": "31261:8:9" + }, + { + "kind": "number", + "nativeSrc": "31271:4:9", + "nodeType": "YulLiteral", + "src": "31271:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "31254:6:9", + "nodeType": "YulIdentifier", + "src": "31254:6:9" + }, + "nativeSrc": "31254:22:9", + "nodeType": "YulFunctionCall", + "src": "31254:22:9" + }, + "nativeSrc": "31254:22:9", + "nodeType": "YulExpressionStatement", + "src": "31254:22:9" + }, + { + "expression": { + "arguments": [ + { + "name": "retStart", + "nativeSrc": "31324:8:9", + "nodeType": "YulIdentifier", + "src": "31324:8:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "31338:4:9", + "nodeType": "YulLiteral", + "src": "31338:4:9", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "u", + "nativeSrc": "31348:1:9", + "nodeType": "YulIdentifier", + "src": "31348:1:9" + }, + { + "name": "retStart", + "nativeSrc": "31351:8:9", + "nodeType": "YulIdentifier", + "src": "31351:8:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "31344:3:9", + "nodeType": "YulIdentifier", + "src": "31344:3:9" + }, + "nativeSrc": "31344:16:9", + "nodeType": "YulFunctionCall", + "src": "31344:16:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31334:3:9", + "nodeType": "YulIdentifier", + "src": "31334:3:9" + }, + "nativeSrc": "31334:27:9", + "nodeType": "YulFunctionCall", + "src": "31334:27:9" + } + ], + "functionName": { + "name": "return", + "nativeSrc": "31317:6:9", + "nodeType": "YulIdentifier", + "src": "31317:6:9" + }, + "nativeSrc": "31317:45:9", + "nodeType": "YulFunctionCall", + "src": "31317:45:9" + }, + "nativeSrc": "31317:45:9", + "nodeType": "YulExpressionStatement", + "src": "31317:45:9" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3015, + "isOffset": false, + "isSlot": false, + "src": "29668:1:9", + "valueSize": 1 + }, + { + "declaration": 3015, + "isOffset": false, + "isSlot": false, + "src": "29711:1:9", + "valueSize": 1 + }, + { + "declaration": 3015, + "isOffset": false, + "isSlot": false, + "src": "29770:1:9", + "valueSize": 1 + }, + { + "declaration": 3015, + "isOffset": false, + "isSlot": false, + "src": "31187:1:9", + "valueSize": 1 + } + ], + "id": 3018, + "nodeType": "InlineAssembly", + "src": "29630:1766:9" + } + ] + }, + "documentation": { + "id": 3012, + "nodeType": "StructuredDocumentation", + "src": "29467:51:9", + "text": "@dev Directly returns `a` with minimal copying." + }, + "id": 3020, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "directReturn", + "nameLocation": "29532:12:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3016, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3015, + "mutability": "mutable", + "name": "a", + "nameLocation": "29560:1:9", + "nodeType": "VariableDeclaration", + "scope": 3020, + "src": "29545:16:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 3013, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "29545:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 3014, + "nodeType": "ArrayTypeName", + "src": "29545:7:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + } + ], + "src": "29544:18:9" + }, + "returnParameters": { + "id": 3017, + "nodeType": "ParameterList", + "parameters": [], + "src": "29577:0:9" + }, + "scope": 3089, + "src": "29523:1879:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3031, + "nodeType": "Block", + "src": "31563:134:9", + "statements": [ + { + "AST": { + "nativeSrc": "31625:66:9", + "nodeType": "YulBlock", + "src": "31625:66:9", + "statements": [ + { + "nativeSrc": "31639:42:9", + "nodeType": "YulAssignment", + "src": "31639:42:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "a", + "nativeSrc": "31663:1:9", + "nodeType": "YulIdentifier", + "src": "31663:1:9" + }, + { + "kind": "number", + "nativeSrc": "31666:4:9", + "nodeType": "YulLiteral", + "src": "31666:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31659:3:9", + "nodeType": "YulIdentifier", + "src": "31659:3:9" + }, + "nativeSrc": "31659:12:9", + "nodeType": "YulFunctionCall", + "src": "31659:12:9" + }, + { + "name": "offset", + "nativeSrc": "31673:6:9", + "nodeType": "YulIdentifier", + "src": "31673:6:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31655:3:9", + "nodeType": "YulIdentifier", + "src": "31655:3:9" + }, + "nativeSrc": "31655:25:9", + "nodeType": "YulFunctionCall", + "src": "31655:25:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "31649:5:9", + "nodeType": "YulIdentifier", + "src": "31649:5:9" + }, + "nativeSrc": "31649:32:9", + "nodeType": "YulFunctionCall", + "src": "31649:32:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "31639:6:9", + "nodeType": "YulIdentifier", + "src": "31639:6:9" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3023, + "isOffset": false, + "isSlot": false, + "src": "31663:1:9", + "valueSize": 1 + }, + { + "declaration": 3025, + "isOffset": false, + "isSlot": false, + "src": "31673:6:9", + "valueSize": 1 + }, + { + "declaration": 3028, + "isOffset": false, + "isSlot": false, + "src": "31639:6:9", + "valueSize": 1 + } + ], + "id": 3030, + "nodeType": "InlineAssembly", + "src": "31616:75:9" + } + ] + }, + "documentation": { + "id": 3021, + "nodeType": "StructuredDocumentation", + "src": "31408:65:9", + "text": "@dev Returns the word at `offset`, without any bounds checks." + }, + "id": 3032, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "load", + "nameLocation": "31487:4:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3026, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3023, + "mutability": "mutable", + "name": "a", + "nameLocation": "31505:1:9", + "nodeType": "VariableDeclaration", + "scope": 3032, + "src": "31492:14:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3022, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "31492:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3025, + "mutability": "mutable", + "name": "offset", + "nameLocation": "31516:6:9", + "nodeType": "VariableDeclaration", + "scope": 3032, + "src": "31508:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3024, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "31508:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "31491:32:9" + }, + "returnParameters": { + "id": 3029, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3028, + "mutability": "mutable", + "name": "result", + "nameLocation": "31555:6:9", + "nodeType": "VariableDeclaration", + "scope": 3032, + "src": "31547:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3027, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "31547:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "31546:16:9" + }, + "scope": 3089, + "src": "31478:219:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3043, + "nodeType": "Block", + "src": "31896:137:9", + "statements": [ + { + "AST": { + "nativeSrc": "31958:69:9", + "nodeType": "YulBlock", + "src": "31958:69:9", + "statements": [ + { + "nativeSrc": "31972:45:9", + "nodeType": "YulAssignment", + "src": "31972:45:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "a.offset", + "nativeSrc": "31999:8:9", + "nodeType": "YulIdentifier", + "src": "31999:8:9" + }, + { + "name": "offset", + "nativeSrc": "32009:6:9", + "nodeType": "YulIdentifier", + "src": "32009:6:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31995:3:9", + "nodeType": "YulIdentifier", + "src": "31995:3:9" + }, + "nativeSrc": "31995:21:9", + "nodeType": "YulFunctionCall", + "src": "31995:21:9" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "31982:12:9", + "nodeType": "YulIdentifier", + "src": "31982:12:9" + }, + "nativeSrc": "31982:35:9", + "nodeType": "YulFunctionCall", + "src": "31982:35:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "31972:6:9", + "nodeType": "YulIdentifier", + "src": "31972:6:9" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3035, + "isOffset": true, + "isSlot": false, + "src": "31999:8:9", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 3037, + "isOffset": false, + "isSlot": false, + "src": "32009:6:9", + "valueSize": 1 + }, + { + "declaration": 3040, + "isOffset": false, + "isSlot": false, + "src": "31972:6:9", + "valueSize": 1 + } + ], + "id": 3042, + "nodeType": "InlineAssembly", + "src": "31949:78:9" + } + ] + }, + "documentation": { + "id": 3033, + "nodeType": "StructuredDocumentation", + "src": "31703:65:9", + "text": "@dev Returns the word at `offset`, without any bounds checks." + }, + "id": 3044, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "loadCalldata", + "nameLocation": "31782:12:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3038, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3035, + "mutability": "mutable", + "name": "a", + "nameLocation": "31810:1:9", + "nodeType": "VariableDeclaration", + "scope": 3044, + "src": "31795:16:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3034, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "31795:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3037, + "mutability": "mutable", + "name": "offset", + "nameLocation": "31821:6:9", + "nodeType": "VariableDeclaration", + "scope": 3044, + "src": "31813:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3036, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "31813:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "31794:34:9" + }, + "returnParameters": { + "id": 3041, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3040, + "mutability": "mutable", + "name": "result", + "nameLocation": "31884:6:9", + "nodeType": "VariableDeclaration", + "scope": 3044, + "src": "31876:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3039, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "31876:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "31875:16:9" + }, + "scope": 3089, + "src": "31773:260:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3055, + "nodeType": "Block", + "src": "32278:301:9", + "statements": [ + { + "AST": { + "nativeSrc": "32340:233:9", + "nodeType": "YulBlock", + "src": "32340:233:9", + "statements": [ + { + "nativeSrc": "32354:28:9", + "nodeType": "YulVariableDeclaration", + "src": "32354:28:9", + "value": { + "arguments": [ + { + "name": "a.length", + "nativeSrc": "32367:8:9", + "nodeType": "YulIdentifier", + "src": "32367:8:9" + }, + { + "kind": "number", + "nativeSrc": "32377:4:9", + "nodeType": "YulLiteral", + "src": "32377:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "32363:3:9", + "nodeType": "YulIdentifier", + "src": "32363:3:9" + }, + "nativeSrc": "32363:19:9", + "nodeType": "YulFunctionCall", + "src": "32363:19:9" + }, + "variables": [ + { + "name": "l", + "nativeSrc": "32358:1:9", + "nodeType": "YulTypedName", + "src": "32358:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "32395:38:9", + "nodeType": "YulAssignment", + "src": "32395:38:9", + "value": { + "arguments": [ + { + "name": "a.offset", + "nativeSrc": "32416:8:9", + "nodeType": "YulIdentifier", + "src": "32416:8:9" + }, + { + "name": "offset", + "nativeSrc": "32426:6:9", + "nodeType": "YulIdentifier", + "src": "32426:6:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "32412:3:9", + "nodeType": "YulIdentifier", + "src": "32412:3:9" + }, + "nativeSrc": "32412:21:9", + "nodeType": "YulFunctionCall", + "src": "32412:21:9" + }, + "variableNames": [ + { + "name": "result.offset", + "nativeSrc": "32395:13:9", + "nodeType": "YulIdentifier", + "src": "32395:13:9" + } + ] + }, + { + "nativeSrc": "32446:38:9", + "nodeType": "YulAssignment", + "src": "32446:38:9", + "value": { + "arguments": [ + { + "name": "a.length", + "nativeSrc": "32467:8:9", + "nodeType": "YulIdentifier", + "src": "32467:8:9" + }, + { + "name": "offset", + "nativeSrc": "32477:6:9", + "nodeType": "YulIdentifier", + "src": "32477:6:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "32463:3:9", + "nodeType": "YulIdentifier", + "src": "32463:3:9" + }, + "nativeSrc": "32463:21:9", + "nodeType": "YulFunctionCall", + "src": "32463:21:9" + }, + "variableNames": [ + { + "name": "result.length", + "nativeSrc": "32446:13:9", + "nodeType": "YulIdentifier", + "src": "32446:13:9" + } + ] + }, + { + "body": { + "nativeSrc": "32544:19:9", + "nodeType": "YulBlock", + "src": "32544:19:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "l", + "nativeSrc": "32553:1:9", + "nodeType": "YulIdentifier", + "src": "32553:1:9" + }, + { + "kind": "number", + "nativeSrc": "32556:4:9", + "nodeType": "YulLiteral", + "src": "32556:4:9", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "32546:6:9", + "nodeType": "YulIdentifier", + "src": "32546:6:9" + }, + "nativeSrc": "32546:15:9", + "nodeType": "YulFunctionCall", + "src": "32546:15:9" + }, + "nativeSrc": "32546:15:9", + "nodeType": "YulExpressionStatement", + "src": "32546:15:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "32507:2:9", + "nodeType": "YulLiteral", + "src": "32507:2:9", + "type": "", + "value": "64" + }, + { + "arguments": [ + { + "name": "l", + "nativeSrc": "32514:1:9", + "nodeType": "YulIdentifier", + "src": "32514:1:9" + }, + { + "name": "a.offset", + "nativeSrc": "32517:8:9", + "nodeType": "YulIdentifier", + "src": "32517:8:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "32511:2:9", + "nodeType": "YulIdentifier", + "src": "32511:2:9" + }, + "nativeSrc": "32511:15:9", + "nodeType": "YulFunctionCall", + "src": "32511:15:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "32503:3:9", + "nodeType": "YulIdentifier", + "src": "32503:3:9" + }, + "nativeSrc": "32503:24:9", + "nodeType": "YulFunctionCall", + "src": "32503:24:9" + }, + { + "arguments": [ + { + "name": "offset", + "nativeSrc": "32532:6:9", + "nodeType": "YulIdentifier", + "src": "32532:6:9" + }, + { + "name": "l", + "nativeSrc": "32540:1:9", + "nodeType": "YulIdentifier", + "src": "32540:1:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "32529:2:9", + "nodeType": "YulIdentifier", + "src": "32529:2:9" + }, + "nativeSrc": "32529:13:9", + "nodeType": "YulFunctionCall", + "src": "32529:13:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "32500:2:9", + "nodeType": "YulIdentifier", + "src": "32500:2:9" + }, + "nativeSrc": "32500:43:9", + "nodeType": "YulFunctionCall", + "src": "32500:43:9" + }, + "nativeSrc": "32497:66:9", + "nodeType": "YulIf", + "src": "32497:66:9" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3047, + "isOffset": false, + "isSlot": false, + "src": "32367:8:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 3047, + "isOffset": false, + "isSlot": false, + "src": "32467:8:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 3047, + "isOffset": true, + "isSlot": false, + "src": "32416:8:9", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 3047, + "isOffset": true, + "isSlot": false, + "src": "32517:8:9", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 3049, + "isOffset": false, + "isSlot": false, + "src": "32426:6:9", + "valueSize": 1 + }, + { + "declaration": 3049, + "isOffset": false, + "isSlot": false, + "src": "32477:6:9", + "valueSize": 1 + }, + { + "declaration": 3049, + "isOffset": false, + "isSlot": false, + "src": "32532:6:9", + "valueSize": 1 + }, + { + "declaration": 3052, + "isOffset": false, + "isSlot": false, + "src": "32446:13:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 3052, + "isOffset": true, + "isSlot": false, + "src": "32395:13:9", + "suffix": "offset", + "valueSize": 1 + } + ], + "id": 3054, + "nodeType": "InlineAssembly", + "src": "32331:242:9" + } + ] + }, + "documentation": { + "id": 3045, + "nodeType": "StructuredDocumentation", + "src": "32039:94:9", + "text": "@dev Returns a slice representing a static struct in the calldata. Performs bounds checks." + }, + "id": 3056, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "staticStructInCalldata", + "nameLocation": "32147:22:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3050, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3047, + "mutability": "mutable", + "name": "a", + "nameLocation": "32185:1:9", + "nodeType": "VariableDeclaration", + "scope": 3056, + "src": "32170:16:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3046, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "32170:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3049, + "mutability": "mutable", + "name": "offset", + "nameLocation": "32196:6:9", + "nodeType": "VariableDeclaration", + "scope": 3056, + "src": "32188:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3048, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "32188:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "32169:34:9" + }, + "returnParameters": { + "id": 3053, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3052, + "mutability": "mutable", + "name": "result", + "nameLocation": "32266:6:9", + "nodeType": "VariableDeclaration", + "scope": 3056, + "src": "32251:21:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3051, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "32251:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "32250:23:9" + }, + "scope": 3089, + "src": "32138:441:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3067, + "nodeType": "Block", + "src": "32826:403:9", + "statements": [ + { + "AST": { + "nativeSrc": "32888:335:9", + "nodeType": "YulBlock", + "src": "32888:335:9", + "statements": [ + { + "nativeSrc": "32902:28:9", + "nodeType": "YulVariableDeclaration", + "src": "32902:28:9", + "value": { + "arguments": [ + { + "name": "a.length", + "nativeSrc": "32915:8:9", + "nodeType": "YulIdentifier", + "src": "32915:8:9" + }, + { + "kind": "number", + "nativeSrc": "32925:4:9", + "nodeType": "YulLiteral", + "src": "32925:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "32911:3:9", + "nodeType": "YulIdentifier", + "src": "32911:3:9" + }, + "nativeSrc": "32911:19:9", + "nodeType": "YulFunctionCall", + "src": "32911:19:9" + }, + "variables": [ + { + "name": "l", + "nativeSrc": "32906:1:9", + "nodeType": "YulTypedName", + "src": "32906:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "32943:44:9", + "nodeType": "YulVariableDeclaration", + "src": "32943:44:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "a.offset", + "nativeSrc": "32969:8:9", + "nodeType": "YulIdentifier", + "src": "32969:8:9" + }, + { + "name": "offset", + "nativeSrc": "32979:6:9", + "nodeType": "YulIdentifier", + "src": "32979:6:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "32965:3:9", + "nodeType": "YulIdentifier", + "src": "32965:3:9" + }, + "nativeSrc": "32965:21:9", + "nodeType": "YulFunctionCall", + "src": "32965:21:9" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "32952:12:9", + "nodeType": "YulIdentifier", + "src": "32952:12:9" + }, + "nativeSrc": "32952:35:9", + "nodeType": "YulFunctionCall", + "src": "32952:35:9" + }, + "variables": [ + { + "name": "s", + "nativeSrc": "32947:1:9", + "nodeType": "YulTypedName", + "src": "32947:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "33048:33:9", + "nodeType": "YulAssignment", + "src": "33048:33:9", + "value": { + "arguments": [ + { + "name": "a.offset", + "nativeSrc": "33069:8:9", + "nodeType": "YulIdentifier", + "src": "33069:8:9" + }, + { + "name": "s", + "nativeSrc": "33079:1:9", + "nodeType": "YulIdentifier", + "src": "33079:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33065:3:9", + "nodeType": "YulIdentifier", + "src": "33065:3:9" + }, + "nativeSrc": "33065:16:9", + "nodeType": "YulFunctionCall", + "src": "33065:16:9" + }, + "variableNames": [ + { + "name": "result.offset", + "nativeSrc": "33048:13:9", + "nodeType": "YulIdentifier", + "src": "33048:13:9" + } + ] + }, + { + "nativeSrc": "33094:33:9", + "nodeType": "YulAssignment", + "src": "33094:33:9", + "value": { + "arguments": [ + { + "name": "a.length", + "nativeSrc": "33115:8:9", + "nodeType": "YulIdentifier", + "src": "33115:8:9" + }, + { + "name": "s", + "nativeSrc": "33125:1:9", + "nodeType": "YulIdentifier", + "src": "33125:1:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "33111:3:9", + "nodeType": "YulIdentifier", + "src": "33111:3:9" + }, + "nativeSrc": "33111:16:9", + "nodeType": "YulFunctionCall", + "src": "33111:16:9" + }, + "variableNames": [ + { + "name": "result.length", + "nativeSrc": "33094:13:9", + "nodeType": "YulIdentifier", + "src": "33094:13:9" + } + ] + }, + { + "body": { + "nativeSrc": "33194:19:9", + "nodeType": "YulBlock", + "src": "33194:19:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "l", + "nativeSrc": "33203:1:9", + "nodeType": "YulIdentifier", + "src": "33203:1:9" + }, + { + "kind": "number", + "nativeSrc": "33206:4:9", + "nodeType": "YulLiteral", + "src": "33206:4:9", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "33196:6:9", + "nodeType": "YulIdentifier", + "src": "33196:6:9" + }, + "nativeSrc": "33196:15:9", + "nodeType": "YulFunctionCall", + "src": "33196:15:9" + }, + "nativeSrc": "33196:15:9", + "nodeType": "YulExpressionStatement", + "src": "33196:15:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33150:2:9", + "nodeType": "YulLiteral", + "src": "33150:2:9", + "type": "", + "value": "64" + }, + { + "arguments": [ + { + "name": "s", + "nativeSrc": "33157:1:9", + "nodeType": "YulIdentifier", + "src": "33157:1:9" + }, + { + "arguments": [ + { + "name": "l", + "nativeSrc": "33163:1:9", + "nodeType": "YulIdentifier", + "src": "33163:1:9" + }, + { + "name": "a.offset", + "nativeSrc": "33166:8:9", + "nodeType": "YulIdentifier", + "src": "33166:8:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "33160:2:9", + "nodeType": "YulIdentifier", + "src": "33160:2:9" + }, + "nativeSrc": "33160:15:9", + "nodeType": "YulFunctionCall", + "src": "33160:15:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "33154:2:9", + "nodeType": "YulIdentifier", + "src": "33154:2:9" + }, + "nativeSrc": "33154:22:9", + "nodeType": "YulFunctionCall", + "src": "33154:22:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "33146:3:9", + "nodeType": "YulIdentifier", + "src": "33146:3:9" + }, + "nativeSrc": "33146:31:9", + "nodeType": "YulFunctionCall", + "src": "33146:31:9" + }, + { + "arguments": [ + { + "name": "offset", + "nativeSrc": "33182:6:9", + "nodeType": "YulIdentifier", + "src": "33182:6:9" + }, + { + "name": "l", + "nativeSrc": "33190:1:9", + "nodeType": "YulIdentifier", + "src": "33190:1:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "33179:2:9", + "nodeType": "YulIdentifier", + "src": "33179:2:9" + }, + "nativeSrc": "33179:13:9", + "nodeType": "YulFunctionCall", + "src": "33179:13:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "33143:2:9", + "nodeType": "YulIdentifier", + "src": "33143:2:9" + }, + "nativeSrc": "33143:50:9", + "nodeType": "YulFunctionCall", + "src": "33143:50:9" + }, + "nativeSrc": "33140:73:9", + "nodeType": "YulIf", + "src": "33140:73:9" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3059, + "isOffset": false, + "isSlot": false, + "src": "32915:8:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 3059, + "isOffset": false, + "isSlot": false, + "src": "33115:8:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 3059, + "isOffset": true, + "isSlot": false, + "src": "32969:8:9", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 3059, + "isOffset": true, + "isSlot": false, + "src": "33069:8:9", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 3059, + "isOffset": true, + "isSlot": false, + "src": "33166:8:9", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 3061, + "isOffset": false, + "isSlot": false, + "src": "32979:6:9", + "valueSize": 1 + }, + { + "declaration": 3061, + "isOffset": false, + "isSlot": false, + "src": "33182:6:9", + "valueSize": 1 + }, + { + "declaration": 3064, + "isOffset": false, + "isSlot": false, + "src": "33094:13:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 3064, + "isOffset": true, + "isSlot": false, + "src": "33048:13:9", + "suffix": "offset", + "valueSize": 1 + } + ], + "id": 3066, + "nodeType": "InlineAssembly", + "src": "32879:344:9" + } + ] + }, + "documentation": { + "id": 3057, + "nodeType": "StructuredDocumentation", + "src": "32585:95:9", + "text": "@dev Returns a slice representing a dynamic struct in the calldata. Performs bounds checks." + }, + "id": 3068, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "dynamicStructInCalldata", + "nameLocation": "32694:23:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3062, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3059, + "mutability": "mutable", + "name": "a", + "nameLocation": "32733:1:9", + "nodeType": "VariableDeclaration", + "scope": 3068, + "src": "32718:16:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3058, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "32718:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3061, + "mutability": "mutable", + "name": "offset", + "nameLocation": "32744:6:9", + "nodeType": "VariableDeclaration", + "scope": 3068, + "src": "32736:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3060, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "32736:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "32717:34:9" + }, + "returnParameters": { + "id": 3065, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3064, + "mutability": "mutable", + "name": "result", + "nameLocation": "32814:6:9", + "nodeType": "VariableDeclaration", + "scope": 3068, + "src": "32799:21:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3063, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "32799:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "32798:23:9" + }, + "scope": 3089, + "src": "32685:544:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3079, + "nodeType": "Block", + "src": "33432:540:9", + "statements": [ + { + "AST": { + "nativeSrc": "33494:472:9", + "nodeType": "YulBlock", + "src": "33494:472:9", + "statements": [ + { + "nativeSrc": "33508:28:9", + "nodeType": "YulVariableDeclaration", + "src": "33508:28:9", + "value": { + "arguments": [ + { + "name": "a.length", + "nativeSrc": "33521:8:9", + "nodeType": "YulIdentifier", + "src": "33521:8:9" + }, + { + "kind": "number", + "nativeSrc": "33531:4:9", + "nodeType": "YulLiteral", + "src": "33531:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "33517:3:9", + "nodeType": "YulIdentifier", + "src": "33517:3:9" + }, + "nativeSrc": "33517:19:9", + "nodeType": "YulFunctionCall", + "src": "33517:19:9" + }, + "variables": [ + { + "name": "l", + "nativeSrc": "33512:1:9", + "nodeType": "YulTypedName", + "src": "33512:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "33549:44:9", + "nodeType": "YulVariableDeclaration", + "src": "33549:44:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "a.offset", + "nativeSrc": "33575:8:9", + "nodeType": "YulIdentifier", + "src": "33575:8:9" + }, + { + "name": "offset", + "nativeSrc": "33585:6:9", + "nodeType": "YulIdentifier", + "src": "33585:6:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33571:3:9", + "nodeType": "YulIdentifier", + "src": "33571:3:9" + }, + "nativeSrc": "33571:21:9", + "nodeType": "YulFunctionCall", + "src": "33571:21:9" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "33558:12:9", + "nodeType": "YulIdentifier", + "src": "33558:12:9" + }, + "nativeSrc": "33558:35:9", + "nodeType": "YulFunctionCall", + "src": "33558:35:9" + }, + "variables": [ + { + "name": "s", + "nativeSrc": "33553:1:9", + "nodeType": "YulTypedName", + "src": "33553:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "33654:44:9", + "nodeType": "YulAssignment", + "src": "33654:44:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "a.offset", + "nativeSrc": "33679:8:9", + "nodeType": "YulIdentifier", + "src": "33679:8:9" + }, + { + "name": "s", + "nativeSrc": "33689:1:9", + "nodeType": "YulIdentifier", + "src": "33689:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33675:3:9", + "nodeType": "YulIdentifier", + "src": "33675:3:9" + }, + "nativeSrc": "33675:16:9", + "nodeType": "YulFunctionCall", + "src": "33675:16:9" + }, + { + "kind": "number", + "nativeSrc": "33693:4:9", + "nodeType": "YulLiteral", + "src": "33693:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33671:3:9", + "nodeType": "YulIdentifier", + "src": "33671:3:9" + }, + "nativeSrc": "33671:27:9", + "nodeType": "YulFunctionCall", + "src": "33671:27:9" + }, + "variableNames": [ + { + "name": "result.offset", + "nativeSrc": "33654:13:9", + "nodeType": "YulIdentifier", + "src": "33654:13:9" + } + ] + }, + { + "nativeSrc": "33711:47:9", + "nodeType": "YulAssignment", + "src": "33711:47:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "a.offset", + "nativeSrc": "33745:8:9", + "nodeType": "YulIdentifier", + "src": "33745:8:9" + }, + { + "name": "s", + "nativeSrc": "33755:1:9", + "nodeType": "YulIdentifier", + "src": "33755:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33741:3:9", + "nodeType": "YulIdentifier", + "src": "33741:3:9" + }, + "nativeSrc": "33741:16:9", + "nodeType": "YulFunctionCall", + "src": "33741:16:9" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "33728:12:9", + "nodeType": "YulIdentifier", + "src": "33728:12:9" + }, + "nativeSrc": "33728:30:9", + "nodeType": "YulFunctionCall", + "src": "33728:30:9" + }, + "variableNames": [ + { + "name": "result.length", + "nativeSrc": "33711:13:9", + "nodeType": "YulIdentifier", + "src": "33711:13:9" + } + ] + }, + { + "body": { + "nativeSrc": "33937:19:9", + "nodeType": "YulBlock", + "src": "33937:19:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "l", + "nativeSrc": "33946:1:9", + "nodeType": "YulIdentifier", + "src": "33946:1:9" + }, + { + "kind": "number", + "nativeSrc": "33949:4:9", + "nodeType": "YulLiteral", + "src": "33949:4:9", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "33939:6:9", + "nodeType": "YulIdentifier", + "src": "33939:6:9" + }, + "nativeSrc": "33939:15:9", + "nodeType": "YulFunctionCall", + "src": "33939:15:9" + }, + "nativeSrc": "33939:15:9", + "nodeType": "YulExpressionStatement", + "src": "33939:15:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33824:2:9", + "nodeType": "YulLiteral", + "src": "33824:2:9", + "type": "", + "value": "64" + }, + { + "arguments": [ + { + "name": "result.length", + "nativeSrc": "33831:13:9", + "nodeType": "YulIdentifier", + "src": "33831:13:9" + }, + { + "arguments": [ + { + "name": "s", + "nativeSrc": "33849:1:9", + "nodeType": "YulIdentifier", + "src": "33849:1:9" + }, + { + "arguments": [ + { + "name": "l", + "nativeSrc": "33855:1:9", + "nodeType": "YulIdentifier", + "src": "33855:1:9" + }, + { + "name": "a.offset", + "nativeSrc": "33858:8:9", + "nodeType": "YulIdentifier", + "src": "33858:8:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "33852:2:9", + "nodeType": "YulIdentifier", + "src": "33852:2:9" + }, + "nativeSrc": "33852:15:9", + "nodeType": "YulFunctionCall", + "src": "33852:15:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "33846:2:9", + "nodeType": "YulIdentifier", + "src": "33846:2:9" + }, + "nativeSrc": "33846:22:9", + "nodeType": "YulFunctionCall", + "src": "33846:22:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "33828:2:9", + "nodeType": "YulIdentifier", + "src": "33828:2:9" + }, + "nativeSrc": "33828:41:9", + "nodeType": "YulFunctionCall", + "src": "33828:41:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "33820:3:9", + "nodeType": "YulIdentifier", + "src": "33820:3:9" + }, + "nativeSrc": "33820:50:9", + "nodeType": "YulFunctionCall", + "src": "33820:50:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "s", + "nativeSrc": "33898:1:9", + "nodeType": "YulIdentifier", + "src": "33898:1:9" + }, + { + "name": "result.length", + "nativeSrc": "33901:13:9", + "nodeType": "YulIdentifier", + "src": "33901:13:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33894:3:9", + "nodeType": "YulIdentifier", + "src": "33894:3:9" + }, + "nativeSrc": "33894:21:9", + "nodeType": "YulFunctionCall", + "src": "33894:21:9" + }, + { + "name": "l", + "nativeSrc": "33917:1:9", + "nodeType": "YulIdentifier", + "src": "33917:1:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "33891:2:9", + "nodeType": "YulIdentifier", + "src": "33891:2:9" + }, + "nativeSrc": "33891:28:9", + "nodeType": "YulFunctionCall", + "src": "33891:28:9" + }, + { + "arguments": [ + { + "name": "offset", + "nativeSrc": "33924:6:9", + "nodeType": "YulIdentifier", + "src": "33924:6:9" + }, + { + "name": "l", + "nativeSrc": "33932:1:9", + "nodeType": "YulIdentifier", + "src": "33932:1:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "33921:2:9", + "nodeType": "YulIdentifier", + "src": "33921:2:9" + }, + "nativeSrc": "33921:13:9", + "nodeType": "YulFunctionCall", + "src": "33921:13:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "33888:2:9", + "nodeType": "YulIdentifier", + "src": "33888:2:9" + }, + "nativeSrc": "33888:47:9", + "nodeType": "YulFunctionCall", + "src": "33888:47:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "33817:2:9", + "nodeType": "YulIdentifier", + "src": "33817:2:9" + }, + "nativeSrc": "33817:119:9", + "nodeType": "YulFunctionCall", + "src": "33817:119:9" + }, + "nativeSrc": "33814:142:9", + "nodeType": "YulIf", + "src": "33814:142:9" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3071, + "isOffset": false, + "isSlot": false, + "src": "33521:8:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 3071, + "isOffset": true, + "isSlot": false, + "src": "33575:8:9", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 3071, + "isOffset": true, + "isSlot": false, + "src": "33679:8:9", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 3071, + "isOffset": true, + "isSlot": false, + "src": "33745:8:9", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 3071, + "isOffset": true, + "isSlot": false, + "src": "33858:8:9", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 3073, + "isOffset": false, + "isSlot": false, + "src": "33585:6:9", + "valueSize": 1 + }, + { + "declaration": 3073, + "isOffset": false, + "isSlot": false, + "src": "33924:6:9", + "valueSize": 1 + }, + { + "declaration": 3076, + "isOffset": false, + "isSlot": false, + "src": "33711:13:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 3076, + "isOffset": false, + "isSlot": false, + "src": "33831:13:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 3076, + "isOffset": false, + "isSlot": false, + "src": "33901:13:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 3076, + "isOffset": true, + "isSlot": false, + "src": "33654:13:9", + "suffix": "offset", + "valueSize": 1 + } + ], + "id": 3078, + "nodeType": "InlineAssembly", + "src": "33485:481:9" + } + ] + }, + "documentation": { + "id": 3069, + "nodeType": "StructuredDocumentation", + "src": "33235:59:9", + "text": "@dev Returns bytes in calldata. Performs bounds checks." + }, + "id": 3080, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "bytesInCalldata", + "nameLocation": "33308:15:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3074, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3071, + "mutability": "mutable", + "name": "a", + "nameLocation": "33339:1:9", + "nodeType": "VariableDeclaration", + "scope": 3080, + "src": "33324:16:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3070, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "33324:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3073, + "mutability": "mutable", + "name": "offset", + "nameLocation": "33350:6:9", + "nodeType": "VariableDeclaration", + "scope": 3080, + "src": "33342:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3072, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "33342:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "33323:34:9" + }, + "returnParameters": { + "id": 3077, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3076, + "mutability": "mutable", + "name": "result", + "nameLocation": "33420:6:9", + "nodeType": "VariableDeclaration", + "scope": 3080, + "src": "33405:21:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3075, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "33405:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "33404:23:9" + }, + "scope": 3089, + "src": "33299:673:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3087, + "nodeType": "Block", + "src": "34120:110:9", + "statements": [ + { + "AST": { + "nativeSrc": "34182:42:9", + "nodeType": "YulBlock", + "src": "34182:42:9", + "statements": [ + { + "nativeSrc": "34196:18:9", + "nodeType": "YulAssignment", + "src": "34196:18:9", + "value": { + "kind": "number", + "nativeSrc": "34213:1:9", + "nodeType": "YulLiteral", + "src": "34213:1:9", + "type": "", + "value": "0" + }, + "variableNames": [ + { + "name": "result.length", + "nativeSrc": "34196:13:9", + "nodeType": "YulIdentifier", + "src": "34196:13:9" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3084, + "isOffset": false, + "isSlot": false, + "src": "34196:13:9", + "suffix": "length", + "valueSize": 1 + } + ], + "id": 3086, + "nodeType": "InlineAssembly", + "src": "34173:51:9" + } + ] + }, + "documentation": { + "id": 3081, + "nodeType": "StructuredDocumentation", + "src": "33978:66:9", + "text": "@dev Returns empty calldata bytes. For silencing the compiler." + }, + "id": 3088, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "emptyCalldata", + "nameLocation": "34058:13:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3082, + "nodeType": "ParameterList", + "parameters": [], + "src": "34071:2:9" + }, + "returnParameters": { + "id": 3085, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3084, + "mutability": "mutable", + "name": "result", + "nameLocation": "34112:6:9", + "nodeType": "VariableDeclaration", + "scope": 3088, + "src": "34097:21:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3083, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "34097:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "34096:23:9" + }, + "scope": 3089, + "src": "34049:181:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 3090, + "src": "197:34035:9", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "32:34201:9" + }, + "id": 9 + }, + "solady/utils/LibClone.sol": { + "ast": { + "absolutePath": "solady/utils/LibClone.sol", + "exportedSymbols": { + "LibClone": [ + 5104 + ] + }, + "id": 5105, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3091, + "literals": [ + "solidity", + "^", + "0.8", + ".4" + ], + "nodeType": "PragmaDirective", + "src": "32:23:10" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "LibClone", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 3092, + "nodeType": "StructuredDocumentation", + "src": "57:3699:10", + "text": "@notice Minimal proxy library.\n @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/LibClone.sol)\n @author Minimal proxy by 0age (https://github.com/0age)\n @author Clones with immutable args by wighawag, zefram.eth, Saw-mon & Natalie\n (https://github.com/Saw-mon-and-Natalie/clones-with-immutable-args)\n @author Minimal ERC1967 proxy by jtriley-eth (https://github.com/jtriley-eth/minimum-viable-proxy)\n @dev Minimal proxy:\n Although the sw0nt pattern saves 5 gas over the ERC1167 pattern during runtime,\n it is not supported out-of-the-box on Etherscan. Hence, we choose to use the 0age pattern,\n which saves 4 gas over the ERC1167 pattern during runtime, and has the smallest bytecode.\n - Automatically verified on Etherscan.\n @dev Minimal proxy (PUSH0 variant):\n This is a new minimal proxy that uses the PUSH0 opcode introduced during Shanghai.\n It is optimized first for minimal runtime gas, then for minimal bytecode.\n The PUSH0 clone functions are intentionally postfixed with a jarring \"_PUSH0\" as\n many EVM chains may not support the PUSH0 opcode in the early months after Shanghai.\n Please use with caution.\n - Automatically verified on Etherscan.\n @dev Clones with immutable args (CWIA):\n The implementation of CWIA here does NOT append the immutable args into the calldata\n passed into delegatecall. It is simply an ERC1167 minimal proxy with the immutable arguments\n appended to the back of the runtime bytecode.\n - Uses the identity precompile (0x4) to copy args during deployment.\n @dev Minimal ERC1967 proxy:\n A minimal ERC1967 proxy, intended to be upgraded with UUPS.\n This is NOT the same as ERC1967Factory's transparent proxy, which includes admin logic.\n - Automatically verified on Etherscan.\n @dev Minimal ERC1967 proxy with immutable args:\n - Uses the identity precompile (0x4) to copy args during deployment.\n - Automatically verified on Etherscan.\n @dev ERC1967I proxy:\n A variant of the minimal ERC1967 proxy, with a special code path that activates\n if `calldatasize() == 1`. This code path skips the delegatecall and directly returns the\n `implementation` address. The returned implementation is guaranteed to be valid if the\n keccak256 of the proxy's code is equal to `ERC1967I_CODE_HASH`.\n @dev ERC1967I proxy with immutable args:\n A variant of the minimal ERC1967 proxy, with a special code path that activates\n if `calldatasize() == 1`. This code path skips the delegatecall and directly returns the\n - Uses the identity precompile (0x4) to copy args during deployment.\n @dev Minimal ERC1967 beacon proxy:\n A minimal beacon proxy, intended to be upgraded with an upgradable beacon.\n - Automatically verified on Etherscan.\n @dev Minimal ERC1967 beacon proxy with immutable args:\n - Uses the identity precompile (0x4) to copy args during deployment.\n - Automatically verified on Etherscan.\n @dev ERC1967I beacon proxy:\n A variant of the minimal ERC1967 beacon proxy, with a special code path that activates\n if `calldatasize() == 1`. This code path skips the delegatecall and directly returns the\n `implementation` address. The returned implementation is guaranteed to be valid if the\n keccak256 of the proxy's code is equal to `ERC1967I_CODE_HASH`.\n @dev ERC1967I proxy with immutable args:\n A variant of the minimal ERC1967 beacon proxy, with a special code path that activates\n if `calldatasize() == 1`. This code path skips the delegatecall and directly returns the\n - Uses the identity precompile (0x4) to copy args during deployment." + }, + "fullyImplemented": true, + "id": 5104, + "linearizedBaseContracts": [ + 5104 + ], + "name": "LibClone", + "nameLocation": "3764:8:10", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "documentation": { + "id": 3093, + "nodeType": "StructuredDocumentation", + "src": "4062:113:10", + "text": "@dev The keccak256 of deployed code for the clone proxy,\n with the implementation set to `address(0)`." + }, + "id": 3096, + "mutability": "constant", + "name": "CLONE_CODE_HASH", + "nameLocation": "4206:15:10", + "nodeType": "VariableDeclaration", + "scope": 5104, + "src": "4180:118:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3094, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4180:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307834386462326366646232383533666365306234363466316639336131393936343639343539646633616236633831323130363037346334313036613165623166", + "id": 3095, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4232:66:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_32953775121687815178966905492285762856483655534839352964685488268574961298207_by_1", + "typeString": "int_const 3295...(69 digits omitted)...8207" + }, + "value": "0x48db2cfdb2853fce0b464f1f93a1996469459df3ab6c812106074c4106a1eb1f" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 3097, + "nodeType": "StructuredDocumentation", + "src": "4305:113:10", + "text": "@dev The keccak256 of deployed code for the PUSH0 proxy,\n with the implementation set to `address(0)`." + }, + "id": 3100, + "mutability": "constant", + "name": "PUSH0_CLONE_CODE_HASH", + "nameLocation": "4449:21:10", + "nodeType": "VariableDeclaration", + "scope": 5104, + "src": "4423:124:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3098, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4423:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307836376263366264653162383464363665323637633731386261343463663339323861363135643239383835353337393535636234336434346233653738396463", + "id": 3099, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4481:66:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_46921135127120119055790321133066561721794295594222880073092654593624563485148_by_1", + "typeString": "int_const 4692...(69 digits omitted)...5148" + }, + "value": "0x67bc6bde1b84d66e267c718ba44cf3928a615d29885537955cb43d44b3e789dc" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 3101, + "nodeType": "StructuredDocumentation", + "src": "4554:121:10", + "text": "@dev The keccak256 of deployed code for the ERC-1167 CWIA proxy,\n with the implementation set to `address(0)`." + }, + "id": 3104, + "mutability": "constant", + "name": "CWIA_CODE_HASH", + "nameLocation": "4706:14:10", + "nodeType": "VariableDeclaration", + "scope": 5104, + "src": "4680:117:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3102, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4680:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307833636639323436343236383232356134353133646134306133346439363733353436383463333263643065646436376235663636386466653335353065393430", + "id": 3103, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4731:66:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_27578966997044358645488470518768744668637152609449014031475063678064313559360_by_1", + "typeString": "int_const 2757...(69 digits omitted)...9360" + }, + "value": "0x3cf92464268225a4513da40a34d967354684c32cd0edd67b5f668dfe3550e940" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 3105, + "nodeType": "StructuredDocumentation", + "src": "4804:66:10", + "text": "@dev The keccak256 of the deployed code for the ERC1967 proxy." + }, + "id": 3108, + "mutability": "constant", + "name": "ERC1967_CODE_HASH", + "nameLocation": "4901:17:10", + "nodeType": "VariableDeclaration", + "scope": 5104, + "src": "4875:120:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3106, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4875:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307861616135326338636338613065336664323763653735366363366234653730633531343233653962353937623131663332643365343966386231666338393064", + "id": 3107, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4929:66:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_77185021497204156503765693158949628883174901464818108677459927010977630685453_by_1", + "typeString": "int_const 7718...(69 digits omitted)...5453" + }, + "value": "0xaaa52c8cc8a0e3fd27ce756cc6b4e70c51423e9b597b11f32d3e49f8b1fc890d" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 3109, + "nodeType": "StructuredDocumentation", + "src": "5002:67:10", + "text": "@dev The keccak256 of the deployed code for the ERC1967I proxy." + }, + "id": 3112, + "mutability": "constant", + "name": "ERC1967I_CODE_HASH", + "nameLocation": "5100:18:10", + "nodeType": "VariableDeclaration", + "scope": 5104, + "src": "5074:121:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3110, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5074:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307863653730303232336330643463656134353833343039616363666334356164616334613039336233353139393938613963626265313530346461646261366637", + "id": 3111, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5129:66:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_93374348446806385783963617675677071552231539524766885499178152025851048994551_by_1", + "typeString": "int_const 9337...(69 digits omitted)...4551" + }, + "value": "0xce700223c0d4cea4583409accfc45adac4a093b3519998a9cbbe1504dadba6f7" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 3113, + "nodeType": "StructuredDocumentation", + "src": "5202:73:10", + "text": "@dev The keccak256 of the deployed code for the ERC1967 beacon proxy." + }, + "id": 3116, + "mutability": "constant", + "name": "ERC1967_BEACON_PROXY_CODE_HASH", + "nameLocation": "5306:30:10", + "nodeType": "VariableDeclaration", + "scope": 5104, + "src": "5280:133:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3114, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5280:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307831343034343435396166313762633466306635616132663635386362363932616464373764313330326332396665326165626162303035656561396431313632", + "id": 3115, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5347:66:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_9053796096550691733351246263824737728846953073129913053479247112142852002146_by_1", + "typeString": "int_const 9053...(68 digits omitted)...2146" + }, + "value": "0x14044459af17bc4f0f5aa2f658cb692add77d1302c29fe2aebab005eea9d1162" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 3117, + "nodeType": "StructuredDocumentation", + "src": "5420:73:10", + "text": "@dev The keccak256 of the deployed code for the ERC1967 beacon proxy." + }, + "id": 3120, + "mutability": "constant", + "name": "ERC1967I_BEACON_PROXY_CODE_HASH", + "nameLocation": "5524:31:10", + "nodeType": "VariableDeclaration", + "scope": 5104, + "src": "5498:134:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3118, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5498:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307866386334366432373933643561613938346562383237616561626134623633616564636162383031313932313266636538323733303937383837333535313961", + "id": 3119, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5566:66:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_112520641830705151963982941871809749409489933969190717264161230730867152081306_by_1", + "typeString": "int_const 1125...(70 digits omitted)...1306" + }, + "value": "0xf8c46d2793d5aa984eb827aeaba4b63aedcab80119212fce827309788735519a" + }, + "visibility": "internal" + }, + { + "documentation": { + "id": 3121, + "nodeType": "StructuredDocumentation", + "src": "5922:36:10", + "text": "@dev Unable to deploy the clone." + }, + "errorSelector": "30116425", + "id": 3123, + "name": "DeploymentFailed", + "nameLocation": "5969:16:10", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3122, + "nodeType": "ParameterList", + "parameters": [], + "src": "5985:2:10" + }, + "src": "5963:25:10" + }, + { + "documentation": { + "id": 3124, + "nodeType": "StructuredDocumentation", + "src": "5994:66:10", + "text": "@dev The salt must start with either the zero address or `by`." + }, + "errorSelector": "0c4549ef", + "id": 3126, + "name": "SaltDoesNotStartWith", + "nameLocation": "6071:20:10", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3125, + "nodeType": "ParameterList", + "parameters": [], + "src": "6091:2:10" + }, + "src": "6065:29:10" + }, + { + "documentation": { + "id": 3127, + "nodeType": "StructuredDocumentation", + "src": "6100:37:10", + "text": "@dev The ETH transfer has failed." + }, + "errorSelector": "b12d13eb", + "id": 3129, + "name": "ETHTransferFailed", + "nameLocation": "6148:17:10", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3128, + "nodeType": "ParameterList", + "parameters": [], + "src": "6165:2:10" + }, + "src": "6142:26:10" + }, + { + "body": { + "id": 3144, + "nodeType": "Block", + "src": "6582:52:10", + "statements": [ + { + "expression": { + "id": 3142, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3137, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3135, + "src": "6592:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 3139, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6609:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 3140, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3132, + "src": "6612:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3138, + "name": "clone", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3145, + 3157, + 3364, + 3378 + ], + "referencedDeclaration": 3157, + "src": "6603:5:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$_t_address_$", + "typeString": "function (uint256,address) returns (address)" + } + }, + "id": 3141, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6603:24:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "6592:35:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3143, + "nodeType": "ExpressionStatement", + "src": "6592:35:10" + } + ] + }, + "documentation": { + "id": 3130, + "nodeType": "StructuredDocumentation", + "src": "6457:45:10", + "text": "@dev Deploys a clone of `implementation`." + }, + "id": 3145, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "clone", + "nameLocation": "6516:5:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3133, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3132, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "6530:14:10", + "nodeType": "VariableDeclaration", + "scope": 3145, + "src": "6522:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3131, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6522:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6521:24:10" + }, + "returnParameters": { + "id": 3136, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3135, + "mutability": "mutable", + "name": "instance", + "nameLocation": "6572:8:10", + "nodeType": "VariableDeclaration", + "scope": 3145, + "src": "6564:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3134, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6564:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6563:18:10" + }, + "scope": 5104, + "src": "6507:127:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3156, + "nodeType": "Block", + "src": "6828:5477:10", + "statements": [ + { + "AST": { + "nativeSrc": "6890:5409:10", + "nodeType": "YulBlock", + "src": "6890:5409:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "11857:4:10", + "nodeType": "YulLiteral", + "src": "11857:4:10", + "type": "", + "value": "0x21" + }, + { + "kind": "number", + "nativeSrc": "11863:28:10", + "nodeType": "YulLiteral", + "src": "11863:28:10", + "type": "", + "value": "0x5af43d3d93803e602a57fd5bf3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11850:6:10", + "nodeType": "YulIdentifier", + "src": "11850:6:10" + }, + "nativeSrc": "11850:42:10", + "nodeType": "YulFunctionCall", + "src": "11850:42:10" + }, + "nativeSrc": "11850:42:10", + "nodeType": "YulExpressionStatement", + "src": "11850:42:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "11912:4:10", + "nodeType": "YulLiteral", + "src": "11912:4:10", + "type": "", + "value": "0x14" + }, + { + "name": "implementation", + "nativeSrc": "11918:14:10", + "nodeType": "YulIdentifier", + "src": "11918:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11905:6:10", + "nodeType": "YulIdentifier", + "src": "11905:6:10" + }, + "nativeSrc": "11905:28:10", + "nodeType": "YulFunctionCall", + "src": "11905:28:10" + }, + "nativeSrc": "11905:28:10", + "nodeType": "YulExpressionStatement", + "src": "11905:28:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "11953:4:10", + "nodeType": "YulLiteral", + "src": "11953:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "11959:42:10", + "nodeType": "YulLiteral", + "src": "11959:42:10", + "type": "", + "value": "0x602c3d8160093d39f33d3d3d3d363d3d37363d73" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11946:6:10", + "nodeType": "YulIdentifier", + "src": "11946:6:10" + }, + "nativeSrc": "11946:56:10", + "nodeType": "YulFunctionCall", + "src": "11946:56:10" + }, + "nativeSrc": "11946:56:10", + "nodeType": "YulExpressionStatement", + "src": "11946:56:10" + }, + { + "nativeSrc": "12015:37:10", + "nodeType": "YulAssignment", + "src": "12015:37:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "12034:5:10", + "nodeType": "YulIdentifier", + "src": "12034:5:10" + }, + { + "kind": "number", + "nativeSrc": "12041:4:10", + "nodeType": "YulLiteral", + "src": "12041:4:10", + "type": "", + "value": "0x0c" + }, + { + "kind": "number", + "nativeSrc": "12047:4:10", + "nodeType": "YulLiteral", + "src": "12047:4:10", + "type": "", + "value": "0x35" + } + ], + "functionName": { + "name": "create", + "nativeSrc": "12027:6:10", + "nodeType": "YulIdentifier", + "src": "12027:6:10" + }, + "nativeSrc": "12027:25:10", + "nodeType": "YulFunctionCall", + "src": "12027:25:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "12015:8:10", + "nodeType": "YulIdentifier", + "src": "12015:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "12085:116:10", + "nodeType": "YulBlock", + "src": "12085:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12110:4:10", + "nodeType": "YulLiteral", + "src": "12110:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "12116:10:10", + "nodeType": "YulLiteral", + "src": "12116:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12103:6:10", + "nodeType": "YulIdentifier", + "src": "12103:6:10" + }, + "nativeSrc": "12103:24:10", + "nodeType": "YulFunctionCall", + "src": "12103:24:10" + }, + "nativeSrc": "12103:24:10", + "nodeType": "YulExpressionStatement", + "src": "12103:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12176:4:10", + "nodeType": "YulLiteral", + "src": "12176:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "12182:4:10", + "nodeType": "YulLiteral", + "src": "12182:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "12169:6:10", + "nodeType": "YulIdentifier", + "src": "12169:6:10" + }, + "nativeSrc": "12169:18:10", + "nodeType": "YulFunctionCall", + "src": "12169:18:10" + }, + "nativeSrc": "12169:18:10", + "nodeType": "YulExpressionStatement", + "src": "12169:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "12075:8:10", + "nodeType": "YulIdentifier", + "src": "12075:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "12068:6:10", + "nodeType": "YulIdentifier", + "src": "12068:6:10" + }, + "nativeSrc": "12068:16:10", + "nodeType": "YulFunctionCall", + "src": "12068:16:10" + }, + "nativeSrc": "12065:136:10", + "nodeType": "YulIf", + "src": "12065:136:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12221:4:10", + "nodeType": "YulLiteral", + "src": "12221:4:10", + "type": "", + "value": "0x21" + }, + { + "kind": "number", + "nativeSrc": "12227:1:10", + "nodeType": "YulLiteral", + "src": "12227:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12214:6:10", + "nodeType": "YulIdentifier", + "src": "12214:6:10" + }, + "nativeSrc": "12214:15:10", + "nodeType": "YulFunctionCall", + "src": "12214:15:10" + }, + "nativeSrc": "12214:15:10", + "nodeType": "YulExpressionStatement", + "src": "12214:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3150, + "isOffset": false, + "isSlot": false, + "src": "11918:14:10", + "valueSize": 1 + }, + { + "declaration": 3153, + "isOffset": false, + "isSlot": false, + "src": "12015:8:10", + "valueSize": 1 + }, + { + "declaration": 3153, + "isOffset": false, + "isSlot": false, + "src": "12075:8:10", + "valueSize": 1 + }, + { + "declaration": 3148, + "isOffset": false, + "isSlot": false, + "src": "12034:5:10", + "valueSize": 1 + } + ], + "id": 3155, + "nodeType": "InlineAssembly", + "src": "6881:5418:10" + } + ] + }, + "documentation": { + "id": 3146, + "nodeType": "StructuredDocumentation", + "src": "6640:93:10", + "text": "@dev Deploys a clone of `implementation`.\n Deposits `value` ETH during deployment." + }, + "id": 3157, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "clone", + "nameLocation": "6747:5:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3151, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3148, + "mutability": "mutable", + "name": "value", + "nameLocation": "6761:5:10", + "nodeType": "VariableDeclaration", + "scope": 3157, + "src": "6753:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3147, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6753:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3150, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "6776:14:10", + "nodeType": "VariableDeclaration", + "scope": 3157, + "src": "6768:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3149, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6768:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6752:39:10" + }, + "returnParameters": { + "id": 3154, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3153, + "mutability": "mutable", + "name": "instance", + "nameLocation": "6818:8:10", + "nodeType": "VariableDeclaration", + "scope": 3157, + "src": "6810:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3152, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6810:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6809:18:10" + }, + "scope": 5104, + "src": "6738:5567:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3175, + "nodeType": "Block", + "src": "12509:71:10", + "statements": [ + { + "expression": { + "id": 3173, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3167, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3165, + "src": "12519:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 3169, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12549:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 3170, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3160, + "src": "12552:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3171, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3162, + "src": "12568:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3168, + "name": "cloneDeterministic", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3176, + 3190, + 3400, + 3416 + ], + "referencedDeclaration": 3190, + "src": "12530:18:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (uint256,address,bytes32) returns (address)" + } + }, + "id": 3172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12530:43:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "12519:54:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3174, + "nodeType": "ExpressionStatement", + "src": "12519:54:10" + } + ] + }, + "documentation": { + "id": 3158, + "nodeType": "StructuredDocumentation", + "src": "12311:71:10", + "text": "@dev Deploys a deterministic clone of `implementation` with `salt`." + }, + "id": 3176, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "cloneDeterministic", + "nameLocation": "12396:18:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3163, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3160, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "12423:14:10", + "nodeType": "VariableDeclaration", + "scope": 3176, + "src": "12415:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3159, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12415:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3162, + "mutability": "mutable", + "name": "salt", + "nameLocation": "12447:4:10", + "nodeType": "VariableDeclaration", + "scope": 3176, + "src": "12439:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3161, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12439:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "12414:38:10" + }, + "returnParameters": { + "id": 3166, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3165, + "mutability": "mutable", + "name": "instance", + "nameLocation": "12495:8:10", + "nodeType": "VariableDeclaration", + "scope": 3176, + "src": "12487:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3164, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12487:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "12486:18:10" + }, + "scope": 5104, + "src": "12387:193:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3189, + "nodeType": "Block", + "src": "12847:538:10", + "statements": [ + { + "AST": { + "nativeSrc": "12909:470:10", + "nodeType": "YulBlock", + "src": "12909:470:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12930:4:10", + "nodeType": "YulLiteral", + "src": "12930:4:10", + "type": "", + "value": "0x21" + }, + { + "kind": "number", + "nativeSrc": "12936:28:10", + "nodeType": "YulLiteral", + "src": "12936:28:10", + "type": "", + "value": "0x5af43d3d93803e602a57fd5bf3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12923:6:10", + "nodeType": "YulIdentifier", + "src": "12923:6:10" + }, + "nativeSrc": "12923:42:10", + "nodeType": "YulFunctionCall", + "src": "12923:42:10" + }, + "nativeSrc": "12923:42:10", + "nodeType": "YulExpressionStatement", + "src": "12923:42:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12985:4:10", + "nodeType": "YulLiteral", + "src": "12985:4:10", + "type": "", + "value": "0x14" + }, + { + "name": "implementation", + "nativeSrc": "12991:14:10", + "nodeType": "YulIdentifier", + "src": "12991:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12978:6:10", + "nodeType": "YulIdentifier", + "src": "12978:6:10" + }, + "nativeSrc": "12978:28:10", + "nodeType": "YulFunctionCall", + "src": "12978:28:10" + }, + "nativeSrc": "12978:28:10", + "nodeType": "YulExpressionStatement", + "src": "12978:28:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13026:4:10", + "nodeType": "YulLiteral", + "src": "13026:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "13032:42:10", + "nodeType": "YulLiteral", + "src": "13032:42:10", + "type": "", + "value": "0x602c3d8160093d39f33d3d3d3d363d3d37363d73" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13019:6:10", + "nodeType": "YulIdentifier", + "src": "13019:6:10" + }, + "nativeSrc": "13019:56:10", + "nodeType": "YulFunctionCall", + "src": "13019:56:10" + }, + "nativeSrc": "13019:56:10", + "nodeType": "YulExpressionStatement", + "src": "13019:56:10" + }, + { + "nativeSrc": "13088:44:10", + "nodeType": "YulAssignment", + "src": "13088:44:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "13108:5:10", + "nodeType": "YulIdentifier", + "src": "13108:5:10" + }, + { + "kind": "number", + "nativeSrc": "13115:4:10", + "nodeType": "YulLiteral", + "src": "13115:4:10", + "type": "", + "value": "0x0c" + }, + { + "kind": "number", + "nativeSrc": "13121:4:10", + "nodeType": "YulLiteral", + "src": "13121:4:10", + "type": "", + "value": "0x35" + }, + { + "name": "salt", + "nativeSrc": "13127:4:10", + "nodeType": "YulIdentifier", + "src": "13127:4:10" + } + ], + "functionName": { + "name": "create2", + "nativeSrc": "13100:7:10", + "nodeType": "YulIdentifier", + "src": "13100:7:10" + }, + "nativeSrc": "13100:32:10", + "nodeType": "YulFunctionCall", + "src": "13100:32:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "13088:8:10", + "nodeType": "YulIdentifier", + "src": "13088:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "13165:116:10", + "nodeType": "YulBlock", + "src": "13165:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13190:4:10", + "nodeType": "YulLiteral", + "src": "13190:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "13196:10:10", + "nodeType": "YulLiteral", + "src": "13196:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13183:6:10", + "nodeType": "YulIdentifier", + "src": "13183:6:10" + }, + "nativeSrc": "13183:24:10", + "nodeType": "YulFunctionCall", + "src": "13183:24:10" + }, + "nativeSrc": "13183:24:10", + "nodeType": "YulExpressionStatement", + "src": "13183:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13256:4:10", + "nodeType": "YulLiteral", + "src": "13256:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "13262:4:10", + "nodeType": "YulLiteral", + "src": "13262:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "13249:6:10", + "nodeType": "YulIdentifier", + "src": "13249:6:10" + }, + "nativeSrc": "13249:18:10", + "nodeType": "YulFunctionCall", + "src": "13249:18:10" + }, + "nativeSrc": "13249:18:10", + "nodeType": "YulExpressionStatement", + "src": "13249:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "13155:8:10", + "nodeType": "YulIdentifier", + "src": "13155:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "13148:6:10", + "nodeType": "YulIdentifier", + "src": "13148:6:10" + }, + "nativeSrc": "13148:16:10", + "nodeType": "YulFunctionCall", + "src": "13148:16:10" + }, + "nativeSrc": "13145:136:10", + "nodeType": "YulIf", + "src": "13145:136:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13301:4:10", + "nodeType": "YulLiteral", + "src": "13301:4:10", + "type": "", + "value": "0x21" + }, + { + "kind": "number", + "nativeSrc": "13307:1:10", + "nodeType": "YulLiteral", + "src": "13307:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13294:6:10", + "nodeType": "YulIdentifier", + "src": "13294:6:10" + }, + "nativeSrc": "13294:15:10", + "nodeType": "YulFunctionCall", + "src": "13294:15:10" + }, + "nativeSrc": "13294:15:10", + "nodeType": "YulExpressionStatement", + "src": "13294:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3181, + "isOffset": false, + "isSlot": false, + "src": "12991:14:10", + "valueSize": 1 + }, + { + "declaration": 3186, + "isOffset": false, + "isSlot": false, + "src": "13088:8:10", + "valueSize": 1 + }, + { + "declaration": 3186, + "isOffset": false, + "isSlot": false, + "src": "13155:8:10", + "valueSize": 1 + }, + { + "declaration": 3183, + "isOffset": false, + "isSlot": false, + "src": "13127:4:10", + "valueSize": 1 + }, + { + "declaration": 3179, + "isOffset": false, + "isSlot": false, + "src": "13108:5:10", + "valueSize": 1 + } + ], + "id": 3188, + "nodeType": "InlineAssembly", + "src": "12900:479:10" + } + ] + }, + "documentation": { + "id": 3177, + "nodeType": "StructuredDocumentation", + "src": "12586:119:10", + "text": "@dev Deploys a deterministic clone of `implementation` with `salt`.\n Deposits `value` ETH during deployment." + }, + "id": 3190, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "cloneDeterministic", + "nameLocation": "12719:18:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3184, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3179, + "mutability": "mutable", + "name": "value", + "nameLocation": "12746:5:10", + "nodeType": "VariableDeclaration", + "scope": 3190, + "src": "12738:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3178, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12738:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3181, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "12761:14:10", + "nodeType": "VariableDeclaration", + "scope": 3190, + "src": "12753:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3180, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12753:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3183, + "mutability": "mutable", + "name": "salt", + "nameLocation": "12785:4:10", + "nodeType": "VariableDeclaration", + "scope": 3190, + "src": "12777:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3182, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12777:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "12737:53:10" + }, + "returnParameters": { + "id": 3187, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3186, + "mutability": "mutable", + "name": "instance", + "nameLocation": "12833:8:10", + "nodeType": "VariableDeclaration", + "scope": 3190, + "src": "12825:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3185, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12825:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "12824:18:10" + }, + "scope": 5104, + "src": "12710:675:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3199, + "nodeType": "Block", + "src": "13551:427:10", + "statements": [ + { + "AST": { + "nativeSrc": "13613:359:10", + "nodeType": "YulBlock", + "src": "13613:359:10", + "statements": [ + { + "nativeSrc": "13627:16:10", + "nodeType": "YulAssignment", + "src": "13627:16:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13638:4:10", + "nodeType": "YulLiteral", + "src": "13638:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "13632:5:10", + "nodeType": "YulIdentifier", + "src": "13632:5:10" + }, + "nativeSrc": "13632:11:10", + "nodeType": "YulFunctionCall", + "src": "13632:11:10" + }, + "variableNames": [ + { + "name": "c", + "nativeSrc": "13627:1:10", + "nodeType": "YulIdentifier", + "src": "13627:1:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "13667:1:10", + "nodeType": "YulIdentifier", + "src": "13667:1:10" + }, + { + "kind": "number", + "nativeSrc": "13670:4:10", + "nodeType": "YulLiteral", + "src": "13670:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13663:3:10", + "nodeType": "YulIdentifier", + "src": "13663:3:10" + }, + "nativeSrc": "13663:12:10", + "nodeType": "YulFunctionCall", + "src": "13663:12:10" + }, + { + "kind": "number", + "nativeSrc": "13677:50:10", + "nodeType": "YulLiteral", + "src": "13677:50:10", + "type": "", + "value": "0x5af43d3d93803e602a57fd5bf30000000000000000000000" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13656:6:10", + "nodeType": "YulIdentifier", + "src": "13656:6:10" + }, + "nativeSrc": "13656:72:10", + "nodeType": "YulFunctionCall", + "src": "13656:72:10" + }, + "nativeSrc": "13656:72:10", + "nodeType": "YulExpressionStatement", + "src": "13656:72:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "13752:1:10", + "nodeType": "YulIdentifier", + "src": "13752:1:10" + }, + { + "kind": "number", + "nativeSrc": "13755:4:10", + "nodeType": "YulLiteral", + "src": "13755:4:10", + "type": "", + "value": "0x28" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13748:3:10", + "nodeType": "YulIdentifier", + "src": "13748:3:10" + }, + "nativeSrc": "13748:12:10", + "nodeType": "YulFunctionCall", + "src": "13748:12:10" + }, + { + "name": "implementation", + "nativeSrc": "13762:14:10", + "nodeType": "YulIdentifier", + "src": "13762:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13741:6:10", + "nodeType": "YulIdentifier", + "src": "13741:6:10" + }, + "nativeSrc": "13741:36:10", + "nodeType": "YulFunctionCall", + "src": "13741:36:10" + }, + "nativeSrc": "13741:36:10", + "nodeType": "YulExpressionStatement", + "src": "13741:36:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "13801:1:10", + "nodeType": "YulIdentifier", + "src": "13801:1:10" + }, + { + "kind": "number", + "nativeSrc": "13804:4:10", + "nodeType": "YulLiteral", + "src": "13804:4:10", + "type": "", + "value": "0x14" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13797:3:10", + "nodeType": "YulIdentifier", + "src": "13797:3:10" + }, + "nativeSrc": "13797:12:10", + "nodeType": "YulFunctionCall", + "src": "13797:12:10" + }, + { + "kind": "number", + "nativeSrc": "13811:42:10", + "nodeType": "YulLiteral", + "src": "13811:42:10", + "type": "", + "value": "0x602c3d8160093d39f33d3d3d3d363d3d37363d73" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13790:6:10", + "nodeType": "YulIdentifier", + "src": "13790:6:10" + }, + "nativeSrc": "13790:64:10", + "nodeType": "YulFunctionCall", + "src": "13790:64:10" + }, + "nativeSrc": "13790:64:10", + "nodeType": "YulExpressionStatement", + "src": "13790:64:10" + }, + { + "expression": { + "arguments": [ + { + "name": "c", + "nativeSrc": "13874:1:10", + "nodeType": "YulIdentifier", + "src": "13874:1:10" + }, + { + "kind": "number", + "nativeSrc": "13877:4:10", + "nodeType": "YulLiteral", + "src": "13877:4:10", + "type": "", + "value": "0x35" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13867:6:10", + "nodeType": "YulIdentifier", + "src": "13867:6:10" + }, + "nativeSrc": "13867:15:10", + "nodeType": "YulFunctionCall", + "src": "13867:15:10" + }, + "nativeSrc": "13867:15:10", + "nodeType": "YulExpressionStatement", + "src": "13867:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13923:4:10", + "nodeType": "YulLiteral", + "src": "13923:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "c", + "nativeSrc": "13933:1:10", + "nodeType": "YulIdentifier", + "src": "13933:1:10" + }, + { + "kind": "number", + "nativeSrc": "13936:4:10", + "nodeType": "YulLiteral", + "src": "13936:4:10", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13929:3:10", + "nodeType": "YulIdentifier", + "src": "13929:3:10" + }, + "nativeSrc": "13929:12:10", + "nodeType": "YulFunctionCall", + "src": "13929:12:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13916:6:10", + "nodeType": "YulIdentifier", + "src": "13916:6:10" + }, + "nativeSrc": "13916:26:10", + "nodeType": "YulFunctionCall", + "src": "13916:26:10" + }, + "nativeSrc": "13916:26:10", + "nodeType": "YulExpressionStatement", + "src": "13916:26:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3196, + "isOffset": false, + "isSlot": false, + "src": "13627:1:10", + "valueSize": 1 + }, + { + "declaration": 3196, + "isOffset": false, + "isSlot": false, + "src": "13667:1:10", + "valueSize": 1 + }, + { + "declaration": 3196, + "isOffset": false, + "isSlot": false, + "src": "13752:1:10", + "valueSize": 1 + }, + { + "declaration": 3196, + "isOffset": false, + "isSlot": false, + "src": "13801:1:10", + "valueSize": 1 + }, + { + "declaration": 3196, + "isOffset": false, + "isSlot": false, + "src": "13874:1:10", + "valueSize": 1 + }, + { + "declaration": 3196, + "isOffset": false, + "isSlot": false, + "src": "13933:1:10", + "valueSize": 1 + }, + { + "declaration": 3193, + "isOffset": false, + "isSlot": false, + "src": "13762:14:10", + "valueSize": 1 + } + ], + "id": 3198, + "nodeType": "InlineAssembly", + "src": "13604:368:10" + } + ] + }, + "documentation": { + "id": 3191, + "nodeType": "StructuredDocumentation", + "src": "13391:74:10", + "text": "@dev Returns the initialization code of the clone of `implementation`." + }, + "id": 3200, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCode", + "nameLocation": "13479:8:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3194, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3193, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "13496:14:10", + "nodeType": "VariableDeclaration", + "scope": 3200, + "src": "13488:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3192, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13488:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "13487:24:10" + }, + "returnParameters": { + "id": 3197, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3196, + "mutability": "mutable", + "name": "c", + "nameLocation": "13548:1:10", + "nodeType": "VariableDeclaration", + "scope": 3200, + "src": "13535:14:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3195, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "13535:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "13534:16:10" + }, + "scope": 5104, + "src": "13470:508:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3209, + "nodeType": "Block", + "src": "14151:374:10", + "statements": [ + { + "AST": { + "nativeSrc": "14213:306:10", + "nodeType": "YulBlock", + "src": "14213:306:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14234:4:10", + "nodeType": "YulLiteral", + "src": "14234:4:10", + "type": "", + "value": "0x21" + }, + { + "kind": "number", + "nativeSrc": "14240:28:10", + "nodeType": "YulLiteral", + "src": "14240:28:10", + "type": "", + "value": "0x5af43d3d93803e602a57fd5bf3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "14227:6:10", + "nodeType": "YulIdentifier", + "src": "14227:6:10" + }, + "nativeSrc": "14227:42:10", + "nodeType": "YulFunctionCall", + "src": "14227:42:10" + }, + "nativeSrc": "14227:42:10", + "nodeType": "YulExpressionStatement", + "src": "14227:42:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14289:4:10", + "nodeType": "YulLiteral", + "src": "14289:4:10", + "type": "", + "value": "0x14" + }, + { + "name": "implementation", + "nativeSrc": "14295:14:10", + "nodeType": "YulIdentifier", + "src": "14295:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "14282:6:10", + "nodeType": "YulIdentifier", + "src": "14282:6:10" + }, + "nativeSrc": "14282:28:10", + "nodeType": "YulFunctionCall", + "src": "14282:28:10" + }, + "nativeSrc": "14282:28:10", + "nodeType": "YulExpressionStatement", + "src": "14282:28:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14330:4:10", + "nodeType": "YulLiteral", + "src": "14330:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "14336:42:10", + "nodeType": "YulLiteral", + "src": "14336:42:10", + "type": "", + "value": "0x602c3d8160093d39f33d3d3d3d363d3d37363d73" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "14323:6:10", + "nodeType": "YulIdentifier", + "src": "14323:6:10" + }, + "nativeSrc": "14323:56:10", + "nodeType": "YulFunctionCall", + "src": "14323:56:10" + }, + "nativeSrc": "14323:56:10", + "nodeType": "YulExpressionStatement", + "src": "14323:56:10" + }, + { + "nativeSrc": "14392:29:10", + "nodeType": "YulAssignment", + "src": "14392:29:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14410:4:10", + "nodeType": "YulLiteral", + "src": "14410:4:10", + "type": "", + "value": "0x0c" + }, + { + "kind": "number", + "nativeSrc": "14416:4:10", + "nodeType": "YulLiteral", + "src": "14416:4:10", + "type": "", + "value": "0x35" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "14400:9:10", + "nodeType": "YulIdentifier", + "src": "14400:9:10" + }, + "nativeSrc": "14400:21:10", + "nodeType": "YulFunctionCall", + "src": "14400:21:10" + }, + "variableNames": [ + { + "name": "hash", + "nativeSrc": "14392:4:10", + "nodeType": "YulIdentifier", + "src": "14392:4:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14441:4:10", + "nodeType": "YulLiteral", + "src": "14441:4:10", + "type": "", + "value": "0x21" + }, + { + "kind": "number", + "nativeSrc": "14447:1:10", + "nodeType": "YulLiteral", + "src": "14447:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "14434:6:10", + "nodeType": "YulIdentifier", + "src": "14434:6:10" + }, + "nativeSrc": "14434:15:10", + "nodeType": "YulFunctionCall", + "src": "14434:15:10" + }, + "nativeSrc": "14434:15:10", + "nodeType": "YulExpressionStatement", + "src": "14434:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3206, + "isOffset": false, + "isSlot": false, + "src": "14392:4:10", + "valueSize": 1 + }, + { + "declaration": 3203, + "isOffset": false, + "isSlot": false, + "src": "14295:14:10", + "valueSize": 1 + } + ], + "id": 3208, + "nodeType": "InlineAssembly", + "src": "14204:315:10" + } + ] + }, + "documentation": { + "id": 3201, + "nodeType": "StructuredDocumentation", + "src": "13984:79:10", + "text": "@dev Returns the initialization code hash of the clone of `implementation`." + }, + "id": 3210, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeHash", + "nameLocation": "14077:12:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3204, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3203, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "14098:14:10", + "nodeType": "VariableDeclaration", + "scope": 3210, + "src": "14090:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3202, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14090:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "14089:24:10" + }, + "returnParameters": { + "id": 3207, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3206, + "mutability": "mutable", + "name": "hash", + "nameLocation": "14145:4:10", + "nodeType": "VariableDeclaration", + "scope": 3210, + "src": "14137:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3205, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14137:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "14136:14:10" + }, + "scope": 5104, + "src": "14068:457:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3236, + "nodeType": "Block", + "src": "14881:131:10", + "statements": [ + { + "assignments": [ + 3223 + ], + "declarations": [ + { + "constant": false, + "id": 3223, + "mutability": "mutable", + "name": "hash", + "nameLocation": "14899:4:10", + "nodeType": "VariableDeclaration", + "scope": 3236, + "src": "14891:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3222, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14891:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 3227, + "initialValue": { + "arguments": [ + { + "id": 3225, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3213, + "src": "14919:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3224, + "name": "initCodeHash", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3210, + 3480 + ], + "referencedDeclaration": 3210, + "src": "14906:12:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_bytes32_$", + "typeString": "function (address) pure returns (bytes32)" + } + }, + "id": 3226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14906:28:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14891:43:10" + }, + { + "expression": { + "id": 3234, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3228, + "name": "predicted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3220, + "src": "14944:9:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3230, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3223, + "src": "14984:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 3231, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3215, + "src": "14990:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 3232, + "name": "deployer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3217, + "src": "14996:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3229, + "name": "predictDeterministicAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3237, + 3510, + 5081 + ], + "referencedDeclaration": 5081, + "src": "14956:27:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_address_$", + "typeString": "function (bytes32,bytes32,address) pure returns (address)" + } + }, + "id": 3233, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14956:49:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "14944:61:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3235, + "nodeType": "ExpressionStatement", + "src": "14944:61:10" + } + ] + }, + "documentation": { + "id": 3211, + "nodeType": "StructuredDocumentation", + "src": "14531:182:10", + "text": "@dev Returns the address of the clone of `implementation`, with `salt` by `deployer`.\n Note: The returned result has dirty upper 96 bits. Please clean if used in assembly." + }, + "id": 3237, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "predictDeterministicAddress", + "nameLocation": "14727:27:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3218, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3213, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "14763:14:10", + "nodeType": "VariableDeclaration", + "scope": 3237, + "src": "14755:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3212, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14755:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3215, + "mutability": "mutable", + "name": "salt", + "nameLocation": "14787:4:10", + "nodeType": "VariableDeclaration", + "scope": 3237, + "src": "14779:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3214, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14779:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3217, + "mutability": "mutable", + "name": "deployer", + "nameLocation": "14801:8:10", + "nodeType": "VariableDeclaration", + "scope": 3237, + "src": "14793:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3216, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14793:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "14754:56:10" + }, + "returnParameters": { + "id": 3221, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3220, + "mutability": "mutable", + "name": "predicted", + "nameLocation": "14866:9:10", + "nodeType": "VariableDeclaration", + "scope": 3237, + "src": "14858:17:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3219, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14858:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "14857:19:10" + }, + "scope": 5104, + "src": "14718:294:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3252, + "nodeType": "Block", + "src": "15438:58:10", + "statements": [ + { + "expression": { + "id": 3250, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3245, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3243, + "src": "15448:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 3247, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15471:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 3248, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3240, + "src": "15474:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3246, + "name": "clone_PUSH0", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3253, + 3265 + ], + "referencedDeclaration": 3265, + "src": "15459:11:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$_t_address_$", + "typeString": "function (uint256,address) returns (address)" + } + }, + "id": 3249, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15459:30:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "15448:41:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3251, + "nodeType": "ExpressionStatement", + "src": "15448:41:10" + } + ] + }, + "documentation": { + "id": 3238, + "nodeType": "StructuredDocumentation", + "src": "15301:51:10", + "text": "@dev Deploys a PUSH0 clone of `implementation`." + }, + "id": 3253, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "clone_PUSH0", + "nameLocation": "15366:11:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3241, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3240, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "15386:14:10", + "nodeType": "VariableDeclaration", + "scope": 3253, + "src": "15378:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3239, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15378:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "15377:24:10" + }, + "returnParameters": { + "id": 3244, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3243, + "mutability": "mutable", + "name": "instance", + "nameLocation": "15428:8:10", + "nodeType": "VariableDeclaration", + "scope": 3253, + "src": "15420:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3242, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15420:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "15419:18:10" + }, + "scope": 5104, + "src": "15357:139:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3264, + "nodeType": "Block", + "src": "15722:5591:10", + "statements": [ + { + "AST": { + "nativeSrc": "15784:5523:10", + "nodeType": "YulBlock", + "src": "15784:5523:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20842:4:10", + "nodeType": "YulLiteral", + "src": "20842:4:10", + "type": "", + "value": "0x24" + }, + { + "kind": "number", + "nativeSrc": "20848:34:10", + "nodeType": "YulLiteral", + "src": "20848:34:10", + "type": "", + "value": "0x5af43d5f5f3e6029573d5ffd5b3d5ff3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "20835:6:10", + "nodeType": "YulIdentifier", + "src": "20835:6:10" + }, + "nativeSrc": "20835:48:10", + "nodeType": "YulFunctionCall", + "src": "20835:48:10" + }, + "nativeSrc": "20835:48:10", + "nodeType": "YulExpressionStatement", + "src": "20835:48:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20909:4:10", + "nodeType": "YulLiteral", + "src": "20909:4:10", + "type": "", + "value": "0x14" + }, + { + "name": "implementation", + "nativeSrc": "20915:14:10", + "nodeType": "YulIdentifier", + "src": "20915:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "20902:6:10", + "nodeType": "YulIdentifier", + "src": "20902:6:10" + }, + "nativeSrc": "20902:28:10", + "nodeType": "YulFunctionCall", + "src": "20902:28:10" + }, + "nativeSrc": "20902:28:10", + "nodeType": "YulExpressionStatement", + "src": "20902:28:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20956:4:10", + "nodeType": "YulLiteral", + "src": "20956:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "20962:38:10", + "nodeType": "YulLiteral", + "src": "20962:38:10", + "type": "", + "value": "0x602d5f8160095f39f35f5f365f5f37365f73" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "20949:6:10", + "nodeType": "YulIdentifier", + "src": "20949:6:10" + }, + "nativeSrc": "20949:52:10", + "nodeType": "YulFunctionCall", + "src": "20949:52:10" + }, + "nativeSrc": "20949:52:10", + "nodeType": "YulExpressionStatement", + "src": "20949:52:10" + }, + { + "nativeSrc": "21023:37:10", + "nodeType": "YulAssignment", + "src": "21023:37:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "21042:5:10", + "nodeType": "YulIdentifier", + "src": "21042:5:10" + }, + { + "kind": "number", + "nativeSrc": "21049:4:10", + "nodeType": "YulLiteral", + "src": "21049:4:10", + "type": "", + "value": "0x0e" + }, + { + "kind": "number", + "nativeSrc": "21055:4:10", + "nodeType": "YulLiteral", + "src": "21055:4:10", + "type": "", + "value": "0x36" + } + ], + "functionName": { + "name": "create", + "nativeSrc": "21035:6:10", + "nodeType": "YulIdentifier", + "src": "21035:6:10" + }, + "nativeSrc": "21035:25:10", + "nodeType": "YulFunctionCall", + "src": "21035:25:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "21023:8:10", + "nodeType": "YulIdentifier", + "src": "21023:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "21093:116:10", + "nodeType": "YulBlock", + "src": "21093:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21118:4:10", + "nodeType": "YulLiteral", + "src": "21118:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "21124:10:10", + "nodeType": "YulLiteral", + "src": "21124:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "21111:6:10", + "nodeType": "YulIdentifier", + "src": "21111:6:10" + }, + "nativeSrc": "21111:24:10", + "nodeType": "YulFunctionCall", + "src": "21111:24:10" + }, + "nativeSrc": "21111:24:10", + "nodeType": "YulExpressionStatement", + "src": "21111:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21184:4:10", + "nodeType": "YulLiteral", + "src": "21184:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "21190:4:10", + "nodeType": "YulLiteral", + "src": "21190:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "21177:6:10", + "nodeType": "YulIdentifier", + "src": "21177:6:10" + }, + "nativeSrc": "21177:18:10", + "nodeType": "YulFunctionCall", + "src": "21177:18:10" + }, + "nativeSrc": "21177:18:10", + "nodeType": "YulExpressionStatement", + "src": "21177:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "21083:8:10", + "nodeType": "YulIdentifier", + "src": "21083:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "21076:6:10", + "nodeType": "YulIdentifier", + "src": "21076:6:10" + }, + "nativeSrc": "21076:16:10", + "nodeType": "YulFunctionCall", + "src": "21076:16:10" + }, + "nativeSrc": "21073:136:10", + "nodeType": "YulIf", + "src": "21073:136:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21229:4:10", + "nodeType": "YulLiteral", + "src": "21229:4:10", + "type": "", + "value": "0x24" + }, + { + "kind": "number", + "nativeSrc": "21235:1:10", + "nodeType": "YulLiteral", + "src": "21235:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "21222:6:10", + "nodeType": "YulIdentifier", + "src": "21222:6:10" + }, + "nativeSrc": "21222:15:10", + "nodeType": "YulFunctionCall", + "src": "21222:15:10" + }, + "nativeSrc": "21222:15:10", + "nodeType": "YulExpressionStatement", + "src": "21222:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3258, + "isOffset": false, + "isSlot": false, + "src": "20915:14:10", + "valueSize": 1 + }, + { + "declaration": 3261, + "isOffset": false, + "isSlot": false, + "src": "21023:8:10", + "valueSize": 1 + }, + { + "declaration": 3261, + "isOffset": false, + "isSlot": false, + "src": "21083:8:10", + "valueSize": 1 + }, + { + "declaration": 3256, + "isOffset": false, + "isSlot": false, + "src": "21042:5:10", + "valueSize": 1 + } + ], + "id": 3263, + "nodeType": "InlineAssembly", + "src": "15775:5532:10" + } + ] + }, + "documentation": { + "id": 3254, + "nodeType": "StructuredDocumentation", + "src": "15502:99:10", + "text": "@dev Deploys a PUSH0 clone of `implementation`.\n Deposits `value` ETH during deployment." + }, + "id": 3265, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "clone_PUSH0", + "nameLocation": "15615:11:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3259, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3256, + "mutability": "mutable", + "name": "value", + "nameLocation": "15635:5:10", + "nodeType": "VariableDeclaration", + "scope": 3265, + "src": "15627:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3255, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15627:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3258, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "15650:14:10", + "nodeType": "VariableDeclaration", + "scope": 3265, + "src": "15642:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3257, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15642:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "15626:39:10" + }, + "returnParameters": { + "id": 3262, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3261, + "mutability": "mutable", + "name": "instance", + "nameLocation": "15708:8:10", + "nodeType": "VariableDeclaration", + "scope": 3265, + "src": "15700:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3260, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15700:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "15699:18:10" + }, + "scope": 5104, + "src": "15606:5707:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3283, + "nodeType": "Block", + "src": "21529:77:10", + "statements": [ + { + "expression": { + "id": 3281, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3275, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3273, + "src": "21539:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 3277, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21575:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 3278, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3268, + "src": "21578:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3279, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3270, + "src": "21594:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3276, + "name": "cloneDeterministic_PUSH0", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3284, + 3298 + ], + "referencedDeclaration": 3298, + "src": "21550:24:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (uint256,address,bytes32) returns (address)" + } + }, + "id": 3280, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21550:49:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "21539:60:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3282, + "nodeType": "ExpressionStatement", + "src": "21539:60:10" + } + ] + }, + "documentation": { + "id": 3266, + "nodeType": "StructuredDocumentation", + "src": "21319:77:10", + "text": "@dev Deploys a deterministic PUSH0 clone of `implementation` with `salt`." + }, + "id": 3284, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "cloneDeterministic_PUSH0", + "nameLocation": "21410:24:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3271, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3268, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "21443:14:10", + "nodeType": "VariableDeclaration", + "scope": 3284, + "src": "21435:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3267, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21435:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3270, + "mutability": "mutable", + "name": "salt", + "nameLocation": "21467:4:10", + "nodeType": "VariableDeclaration", + "scope": 3284, + "src": "21459:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3269, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "21459:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "21434:38:10" + }, + "returnParameters": { + "id": 3274, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3273, + "mutability": "mutable", + "name": "instance", + "nameLocation": "21515:8:10", + "nodeType": "VariableDeclaration", + "scope": 3284, + "src": "21507:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3272, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21507:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "21506:18:10" + }, + "scope": 5104, + "src": "21401:205:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3297, + "nodeType": "Block", + "src": "21885:561:10", + "statements": [ + { + "AST": { + "nativeSrc": "21947:493:10", + "nodeType": "YulBlock", + "src": "21947:493:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21968:4:10", + "nodeType": "YulLiteral", + "src": "21968:4:10", + "type": "", + "value": "0x24" + }, + { + "kind": "number", + "nativeSrc": "21974:34:10", + "nodeType": "YulLiteral", + "src": "21974:34:10", + "type": "", + "value": "0x5af43d5f5f3e6029573d5ffd5b3d5ff3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "21961:6:10", + "nodeType": "YulIdentifier", + "src": "21961:6:10" + }, + "nativeSrc": "21961:48:10", + "nodeType": "YulFunctionCall", + "src": "21961:48:10" + }, + "nativeSrc": "21961:48:10", + "nodeType": "YulExpressionStatement", + "src": "21961:48:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22035:4:10", + "nodeType": "YulLiteral", + "src": "22035:4:10", + "type": "", + "value": "0x14" + }, + { + "name": "implementation", + "nativeSrc": "22041:14:10", + "nodeType": "YulIdentifier", + "src": "22041:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22028:6:10", + "nodeType": "YulIdentifier", + "src": "22028:6:10" + }, + "nativeSrc": "22028:28:10", + "nodeType": "YulFunctionCall", + "src": "22028:28:10" + }, + "nativeSrc": "22028:28:10", + "nodeType": "YulExpressionStatement", + "src": "22028:28:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22082:4:10", + "nodeType": "YulLiteral", + "src": "22082:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "22088:38:10", + "nodeType": "YulLiteral", + "src": "22088:38:10", + "type": "", + "value": "0x602d5f8160095f39f35f5f365f5f37365f73" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22075:6:10", + "nodeType": "YulIdentifier", + "src": "22075:6:10" + }, + "nativeSrc": "22075:52:10", + "nodeType": "YulFunctionCall", + "src": "22075:52:10" + }, + "nativeSrc": "22075:52:10", + "nodeType": "YulExpressionStatement", + "src": "22075:52:10" + }, + { + "nativeSrc": "22149:44:10", + "nodeType": "YulAssignment", + "src": "22149:44:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "22169:5:10", + "nodeType": "YulIdentifier", + "src": "22169:5:10" + }, + { + "kind": "number", + "nativeSrc": "22176:4:10", + "nodeType": "YulLiteral", + "src": "22176:4:10", + "type": "", + "value": "0x0e" + }, + { + "kind": "number", + "nativeSrc": "22182:4:10", + "nodeType": "YulLiteral", + "src": "22182:4:10", + "type": "", + "value": "0x36" + }, + { + "name": "salt", + "nativeSrc": "22188:4:10", + "nodeType": "YulIdentifier", + "src": "22188:4:10" + } + ], + "functionName": { + "name": "create2", + "nativeSrc": "22161:7:10", + "nodeType": "YulIdentifier", + "src": "22161:7:10" + }, + "nativeSrc": "22161:32:10", + "nodeType": "YulFunctionCall", + "src": "22161:32:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "22149:8:10", + "nodeType": "YulIdentifier", + "src": "22149:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "22226:116:10", + "nodeType": "YulBlock", + "src": "22226:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22251:4:10", + "nodeType": "YulLiteral", + "src": "22251:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "22257:10:10", + "nodeType": "YulLiteral", + "src": "22257:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22244:6:10", + "nodeType": "YulIdentifier", + "src": "22244:6:10" + }, + "nativeSrc": "22244:24:10", + "nodeType": "YulFunctionCall", + "src": "22244:24:10" + }, + "nativeSrc": "22244:24:10", + "nodeType": "YulExpressionStatement", + "src": "22244:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22317:4:10", + "nodeType": "YulLiteral", + "src": "22317:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "22323:4:10", + "nodeType": "YulLiteral", + "src": "22323:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "22310:6:10", + "nodeType": "YulIdentifier", + "src": "22310:6:10" + }, + "nativeSrc": "22310:18:10", + "nodeType": "YulFunctionCall", + "src": "22310:18:10" + }, + "nativeSrc": "22310:18:10", + "nodeType": "YulExpressionStatement", + "src": "22310:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "22216:8:10", + "nodeType": "YulIdentifier", + "src": "22216:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "22209:6:10", + "nodeType": "YulIdentifier", + "src": "22209:6:10" + }, + "nativeSrc": "22209:16:10", + "nodeType": "YulFunctionCall", + "src": "22209:16:10" + }, + "nativeSrc": "22206:136:10", + "nodeType": "YulIf", + "src": "22206:136:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22362:4:10", + "nodeType": "YulLiteral", + "src": "22362:4:10", + "type": "", + "value": "0x24" + }, + { + "kind": "number", + "nativeSrc": "22368:1:10", + "nodeType": "YulLiteral", + "src": "22368:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22355:6:10", + "nodeType": "YulIdentifier", + "src": "22355:6:10" + }, + "nativeSrc": "22355:15:10", + "nodeType": "YulFunctionCall", + "src": "22355:15:10" + }, + "nativeSrc": "22355:15:10", + "nodeType": "YulExpressionStatement", + "src": "22355:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3289, + "isOffset": false, + "isSlot": false, + "src": "22041:14:10", + "valueSize": 1 + }, + { + "declaration": 3294, + "isOffset": false, + "isSlot": false, + "src": "22149:8:10", + "valueSize": 1 + }, + { + "declaration": 3294, + "isOffset": false, + "isSlot": false, + "src": "22216:8:10", + "valueSize": 1 + }, + { + "declaration": 3291, + "isOffset": false, + "isSlot": false, + "src": "22188:4:10", + "valueSize": 1 + }, + { + "declaration": 3287, + "isOffset": false, + "isSlot": false, + "src": "22169:5:10", + "valueSize": 1 + } + ], + "id": 3296, + "nodeType": "InlineAssembly", + "src": "21938:502:10" + } + ] + }, + "documentation": { + "id": 3285, + "nodeType": "StructuredDocumentation", + "src": "21612:125:10", + "text": "@dev Deploys a deterministic PUSH0 clone of `implementation` with `salt`.\n Deposits `value` ETH during deployment." + }, + "id": 3298, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "cloneDeterministic_PUSH0", + "nameLocation": "21751:24:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3292, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3287, + "mutability": "mutable", + "name": "value", + "nameLocation": "21784:5:10", + "nodeType": "VariableDeclaration", + "scope": 3298, + "src": "21776:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3286, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21776:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3289, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "21799:14:10", + "nodeType": "VariableDeclaration", + "scope": 3298, + "src": "21791:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3288, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21791:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3291, + "mutability": "mutable", + "name": "salt", + "nameLocation": "21823:4:10", + "nodeType": "VariableDeclaration", + "scope": 3298, + "src": "21815:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3290, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "21815:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "21775:53:10" + }, + "returnParameters": { + "id": 3295, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3294, + "mutability": "mutable", + "name": "instance", + "nameLocation": "21871:8:10", + "nodeType": "VariableDeclaration", + "scope": 3298, + "src": "21863:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3293, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21863:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "21862:18:10" + }, + "scope": 5104, + "src": "21742:704:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3307, + "nodeType": "Block", + "src": "22624:448:10", + "statements": [ + { + "AST": { + "nativeSrc": "22686:380:10", + "nodeType": "YulBlock", + "src": "22686:380:10", + "statements": [ + { + "nativeSrc": "22700:16:10", + "nodeType": "YulAssignment", + "src": "22700:16:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22711:4:10", + "nodeType": "YulLiteral", + "src": "22711:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "22705:5:10", + "nodeType": "YulIdentifier", + "src": "22705:5:10" + }, + "nativeSrc": "22705:11:10", + "nodeType": "YulFunctionCall", + "src": "22705:11:10" + }, + "variableNames": [ + { + "name": "c", + "nativeSrc": "22700:1:10", + "nodeType": "YulIdentifier", + "src": "22700:1:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "22740:1:10", + "nodeType": "YulIdentifier", + "src": "22740:1:10" + }, + { + "kind": "number", + "nativeSrc": "22743:4:10", + "nodeType": "YulLiteral", + "src": "22743:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22736:3:10", + "nodeType": "YulIdentifier", + "src": "22736:3:10" + }, + "nativeSrc": "22736:12:10", + "nodeType": "YulFunctionCall", + "src": "22736:12:10" + }, + { + "kind": "number", + "nativeSrc": "22750:54:10", + "nodeType": "YulLiteral", + "src": "22750:54:10", + "type": "", + "value": "0x5af43d5f5f3e6029573d5ffd5b3d5ff300000000000000000000" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22729:6:10", + "nodeType": "YulIdentifier", + "src": "22729:6:10" + }, + "nativeSrc": "22729:76:10", + "nodeType": "YulFunctionCall", + "src": "22729:76:10" + }, + "nativeSrc": "22729:76:10", + "nodeType": "YulExpressionStatement", + "src": "22729:76:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "22835:1:10", + "nodeType": "YulIdentifier", + "src": "22835:1:10" + }, + { + "kind": "number", + "nativeSrc": "22838:4:10", + "nodeType": "YulLiteral", + "src": "22838:4:10", + "type": "", + "value": "0x26" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22831:3:10", + "nodeType": "YulIdentifier", + "src": "22831:3:10" + }, + "nativeSrc": "22831:12:10", + "nodeType": "YulFunctionCall", + "src": "22831:12:10" + }, + { + "name": "implementation", + "nativeSrc": "22845:14:10", + "nodeType": "YulIdentifier", + "src": "22845:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22824:6:10", + "nodeType": "YulIdentifier", + "src": "22824:6:10" + }, + "nativeSrc": "22824:36:10", + "nodeType": "YulFunctionCall", + "src": "22824:36:10" + }, + "nativeSrc": "22824:36:10", + "nodeType": "YulExpressionStatement", + "src": "22824:36:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "22890:1:10", + "nodeType": "YulIdentifier", + "src": "22890:1:10" + }, + { + "kind": "number", + "nativeSrc": "22893:4:10", + "nodeType": "YulLiteral", + "src": "22893:4:10", + "type": "", + "value": "0x12" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22886:3:10", + "nodeType": "YulIdentifier", + "src": "22886:3:10" + }, + "nativeSrc": "22886:12:10", + "nodeType": "YulFunctionCall", + "src": "22886:12:10" + }, + { + "kind": "number", + "nativeSrc": "22900:38:10", + "nodeType": "YulLiteral", + "src": "22900:38:10", + "type": "", + "value": "0x602d5f8160095f39f35f5f365f5f37365f73" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22879:6:10", + "nodeType": "YulIdentifier", + "src": "22879:6:10" + }, + "nativeSrc": "22879:60:10", + "nodeType": "YulFunctionCall", + "src": "22879:60:10" + }, + "nativeSrc": "22879:60:10", + "nodeType": "YulExpressionStatement", + "src": "22879:60:10" + }, + { + "expression": { + "arguments": [ + { + "name": "c", + "nativeSrc": "22968:1:10", + "nodeType": "YulIdentifier", + "src": "22968:1:10" + }, + { + "kind": "number", + "nativeSrc": "22971:4:10", + "nodeType": "YulLiteral", + "src": "22971:4:10", + "type": "", + "value": "0x36" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22961:6:10", + "nodeType": "YulIdentifier", + "src": "22961:6:10" + }, + "nativeSrc": "22961:15:10", + "nodeType": "YulFunctionCall", + "src": "22961:15:10" + }, + "nativeSrc": "22961:15:10", + "nodeType": "YulExpressionStatement", + "src": "22961:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23017:4:10", + "nodeType": "YulLiteral", + "src": "23017:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "c", + "nativeSrc": "23027:1:10", + "nodeType": "YulIdentifier", + "src": "23027:1:10" + }, + { + "kind": "number", + "nativeSrc": "23030:4:10", + "nodeType": "YulLiteral", + "src": "23030:4:10", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23023:3:10", + "nodeType": "YulIdentifier", + "src": "23023:3:10" + }, + "nativeSrc": "23023:12:10", + "nodeType": "YulFunctionCall", + "src": "23023:12:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "23010:6:10", + "nodeType": "YulIdentifier", + "src": "23010:6:10" + }, + "nativeSrc": "23010:26:10", + "nodeType": "YulFunctionCall", + "src": "23010:26:10" + }, + "nativeSrc": "23010:26:10", + "nodeType": "YulExpressionStatement", + "src": "23010:26:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3304, + "isOffset": false, + "isSlot": false, + "src": "22700:1:10", + "valueSize": 1 + }, + { + "declaration": 3304, + "isOffset": false, + "isSlot": false, + "src": "22740:1:10", + "valueSize": 1 + }, + { + "declaration": 3304, + "isOffset": false, + "isSlot": false, + "src": "22835:1:10", + "valueSize": 1 + }, + { + "declaration": 3304, + "isOffset": false, + "isSlot": false, + "src": "22890:1:10", + "valueSize": 1 + }, + { + "declaration": 3304, + "isOffset": false, + "isSlot": false, + "src": "22968:1:10", + "valueSize": 1 + }, + { + "declaration": 3304, + "isOffset": false, + "isSlot": false, + "src": "23027:1:10", + "valueSize": 1 + }, + { + "declaration": 3301, + "isOffset": false, + "isSlot": false, + "src": "22845:14:10", + "valueSize": 1 + } + ], + "id": 3306, + "nodeType": "InlineAssembly", + "src": "22677:389:10" + } + ] + }, + "documentation": { + "id": 3299, + "nodeType": "StructuredDocumentation", + "src": "22452:80:10", + "text": "@dev Returns the initialization code of the PUSH0 clone of `implementation`." + }, + "id": 3308, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCode_PUSH0", + "nameLocation": "22546:14:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3302, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3301, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "22569:14:10", + "nodeType": "VariableDeclaration", + "scope": 3308, + "src": "22561:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3300, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "22561:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "22560:24:10" + }, + "returnParameters": { + "id": 3305, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3304, + "mutability": "mutable", + "name": "c", + "nameLocation": "22621:1:10", + "nodeType": "VariableDeclaration", + "scope": 3308, + "src": "22608:14:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3303, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "22608:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "22607:16:10" + }, + "scope": 5104, + "src": "22537:535:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3317, + "nodeType": "Block", + "src": "23257:397:10", + "statements": [ + { + "AST": { + "nativeSrc": "23319:329:10", + "nodeType": "YulBlock", + "src": "23319:329:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23340:4:10", + "nodeType": "YulLiteral", + "src": "23340:4:10", + "type": "", + "value": "0x24" + }, + { + "kind": "number", + "nativeSrc": "23346:34:10", + "nodeType": "YulLiteral", + "src": "23346:34:10", + "type": "", + "value": "0x5af43d5f5f3e6029573d5ffd5b3d5ff3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "23333:6:10", + "nodeType": "YulIdentifier", + "src": "23333:6:10" + }, + "nativeSrc": "23333:48:10", + "nodeType": "YulFunctionCall", + "src": "23333:48:10" + }, + "nativeSrc": "23333:48:10", + "nodeType": "YulExpressionStatement", + "src": "23333:48:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23407:4:10", + "nodeType": "YulLiteral", + "src": "23407:4:10", + "type": "", + "value": "0x14" + }, + { + "name": "implementation", + "nativeSrc": "23413:14:10", + "nodeType": "YulIdentifier", + "src": "23413:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "23400:6:10", + "nodeType": "YulIdentifier", + "src": "23400:6:10" + }, + "nativeSrc": "23400:28:10", + "nodeType": "YulFunctionCall", + "src": "23400:28:10" + }, + "nativeSrc": "23400:28:10", + "nodeType": "YulExpressionStatement", + "src": "23400:28:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23454:4:10", + "nodeType": "YulLiteral", + "src": "23454:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "23460:38:10", + "nodeType": "YulLiteral", + "src": "23460:38:10", + "type": "", + "value": "0x602d5f8160095f39f35f5f365f5f37365f73" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "23447:6:10", + "nodeType": "YulIdentifier", + "src": "23447:6:10" + }, + "nativeSrc": "23447:52:10", + "nodeType": "YulFunctionCall", + "src": "23447:52:10" + }, + "nativeSrc": "23447:52:10", + "nodeType": "YulExpressionStatement", + "src": "23447:52:10" + }, + { + "nativeSrc": "23521:29:10", + "nodeType": "YulAssignment", + "src": "23521:29:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23539:4:10", + "nodeType": "YulLiteral", + "src": "23539:4:10", + "type": "", + "value": "0x0e" + }, + { + "kind": "number", + "nativeSrc": "23545:4:10", + "nodeType": "YulLiteral", + "src": "23545:4:10", + "type": "", + "value": "0x36" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "23529:9:10", + "nodeType": "YulIdentifier", + "src": "23529:9:10" + }, + "nativeSrc": "23529:21:10", + "nodeType": "YulFunctionCall", + "src": "23529:21:10" + }, + "variableNames": [ + { + "name": "hash", + "nativeSrc": "23521:4:10", + "nodeType": "YulIdentifier", + "src": "23521:4:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23570:4:10", + "nodeType": "YulLiteral", + "src": "23570:4:10", + "type": "", + "value": "0x24" + }, + { + "kind": "number", + "nativeSrc": "23576:1:10", + "nodeType": "YulLiteral", + "src": "23576:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "23563:6:10", + "nodeType": "YulIdentifier", + "src": "23563:6:10" + }, + "nativeSrc": "23563:15:10", + "nodeType": "YulFunctionCall", + "src": "23563:15:10" + }, + "nativeSrc": "23563:15:10", + "nodeType": "YulExpressionStatement", + "src": "23563:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3314, + "isOffset": false, + "isSlot": false, + "src": "23521:4:10", + "valueSize": 1 + }, + { + "declaration": 3311, + "isOffset": false, + "isSlot": false, + "src": "23413:14:10", + "valueSize": 1 + } + ], + "id": 3316, + "nodeType": "InlineAssembly", + "src": "23310:338:10" + } + ] + }, + "documentation": { + "id": 3309, + "nodeType": "StructuredDocumentation", + "src": "23078:85:10", + "text": "@dev Returns the initialization code hash of the PUSH0 clone of `implementation`." + }, + "id": 3318, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeHash_PUSH0", + "nameLocation": "23177:18:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3312, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3311, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "23204:14:10", + "nodeType": "VariableDeclaration", + "scope": 3318, + "src": "23196:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3310, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "23196:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "23195:24:10" + }, + "returnParameters": { + "id": 3315, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3314, + "mutability": "mutable", + "name": "hash", + "nameLocation": "23251:4:10", + "nodeType": "VariableDeclaration", + "scope": 3318, + "src": "23243:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3313, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "23243:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "23242:14:10" + }, + "scope": 5104, + "src": "23168:486:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3344, + "nodeType": "Block", + "src": "24024:137:10", + "statements": [ + { + "assignments": [ + 3331 + ], + "declarations": [ + { + "constant": false, + "id": 3331, + "mutability": "mutable", + "name": "hash", + "nameLocation": "24042:4:10", + "nodeType": "VariableDeclaration", + "scope": 3344, + "src": "24034:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3330, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "24034:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 3335, + "initialValue": { + "arguments": [ + { + "id": 3333, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3321, + "src": "24068:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3332, + "name": "initCodeHash_PUSH0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3318, + "src": "24049:18:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_bytes32_$", + "typeString": "function (address) pure returns (bytes32)" + } + }, + "id": 3334, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24049:34:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "24034:49:10" + }, + { + "expression": { + "id": 3342, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3336, + "name": "predicted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3328, + "src": "24093:9:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3338, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3331, + "src": "24133:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 3339, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3323, + "src": "24139:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 3340, + "name": "deployer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3325, + "src": "24145:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3337, + "name": "predictDeterministicAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3237, + 3510, + 5081 + ], + "referencedDeclaration": 5081, + "src": "24105:27:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_address_$", + "typeString": "function (bytes32,bytes32,address) pure returns (address)" + } + }, + "id": 3341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24105:49:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "24093:61:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3343, + "nodeType": "ExpressionStatement", + "src": "24093:61:10" + } + ] + }, + "documentation": { + "id": 3319, + "nodeType": "StructuredDocumentation", + "src": "23660:188:10", + "text": "@dev Returns the address of the PUSH0 clone of `implementation`, with `salt` by `deployer`.\n Note: The returned result has dirty upper 96 bits. Please clean if used in assembly." + }, + "id": 3345, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "predictDeterministicAddress_PUSH0", + "nameLocation": "23862:33:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3326, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3321, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "23913:14:10", + "nodeType": "VariableDeclaration", + "scope": 3345, + "src": "23905:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3320, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "23905:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3323, + "mutability": "mutable", + "name": "salt", + "nameLocation": "23945:4:10", + "nodeType": "VariableDeclaration", + "scope": 3345, + "src": "23937:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3322, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "23937:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3325, + "mutability": "mutable", + "name": "deployer", + "nameLocation": "23967:8:10", + "nodeType": "VariableDeclaration", + "scope": 3345, + "src": "23959:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3324, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "23959:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "23895:86:10" + }, + "returnParameters": { + "id": 3329, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3328, + "mutability": "mutable", + "name": "predicted", + "nameLocation": "24013:9:10", + "nodeType": "VariableDeclaration", + "scope": 3345, + "src": "24005:17:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3327, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24005:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "24004:19:10" + }, + "scope": 5104, + "src": "23853:308:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3363, + "nodeType": "Block", + "src": "24637:58:10", + "statements": [ + { + "expression": { + "id": 3361, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3355, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3353, + "src": "24647:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 3357, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24664:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 3358, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3348, + "src": "24667:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3359, + "name": "args", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3350, + "src": "24683:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 3356, + "name": "clone", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3145, + 3157, + 3364, + 3378 + ], + "referencedDeclaration": 3378, + "src": "24658:5:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$", + "typeString": "function (uint256,address,bytes memory) returns (address)" + } + }, + "id": 3360, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24658:30:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "24647:41:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3362, + "nodeType": "ExpressionStatement", + "src": "24647:41:10" + } + ] + }, + "documentation": { + "id": 3346, + "nodeType": "StructuredDocumentation", + "src": "24450:88:10", + "text": "@dev Deploys a clone of `implementation` with immutable arguments encoded in `args`." + }, + "id": 3364, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "clone", + "nameLocation": "24552:5:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3351, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3348, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "24566:14:10", + "nodeType": "VariableDeclaration", + "scope": 3364, + "src": "24558:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3347, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24558:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3350, + "mutability": "mutable", + "name": "args", + "nameLocation": "24595:4:10", + "nodeType": "VariableDeclaration", + "scope": 3364, + "src": "24582:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3349, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "24582:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "24557:43:10" + }, + "returnParameters": { + "id": 3354, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3353, + "mutability": "mutable", + "name": "instance", + "nameLocation": "24627:8:10", + "nodeType": "VariableDeclaration", + "scope": 3364, + "src": "24619:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3352, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24619:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "24618:18:10" + }, + "scope": 5104, + "src": "24543:152:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3377, + "nodeType": "Block", + "src": "24971:5652:10", + "statements": [ + { + "AST": { + "nativeSrc": "25033:5584:10", + "nodeType": "YulBlock", + "src": "25033:5584:10", + "statements": [ + { + "nativeSrc": "29955:20:10", + "nodeType": "YulVariableDeclaration", + "src": "29955:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "29970:4:10", + "nodeType": "YulLiteral", + "src": "29970:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "29964:5:10", + "nodeType": "YulIdentifier", + "src": "29964:5:10" + }, + "nativeSrc": "29964:11:10", + "nodeType": "YulFunctionCall", + "src": "29964:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "29959:1:10", + "nodeType": "YulTypedName", + "src": "29959:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "29988:20:10", + "nodeType": "YulVariableDeclaration", + "src": "29988:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "30003:4:10", + "nodeType": "YulIdentifier", + "src": "30003:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "29997:5:10", + "nodeType": "YulIdentifier", + "src": "29997:5:10" + }, + "nativeSrc": "29997:11:10", + "nodeType": "YulFunctionCall", + "src": "29997:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "29992:1:10", + "nodeType": "YulTypedName", + "src": "29992:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "30036:3:10", + "nodeType": "YulIdentifier", + "src": "30036:3:10" + }, + "nativeSrc": "30036:5:10", + "nodeType": "YulFunctionCall", + "src": "30036:5:10" + }, + { + "kind": "number", + "nativeSrc": "30043:1:10", + "nodeType": "YulLiteral", + "src": "30043:1:10", + "type": "", + "value": "4" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "30050:4:10", + "nodeType": "YulIdentifier", + "src": "30050:4:10" + }, + { + "kind": "number", + "nativeSrc": "30056:4:10", + "nodeType": "YulLiteral", + "src": "30056:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30046:3:10", + "nodeType": "YulIdentifier", + "src": "30046:3:10" + }, + "nativeSrc": "30046:15:10", + "nodeType": "YulFunctionCall", + "src": "30046:15:10" + }, + { + "name": "n", + "nativeSrc": "30063:1:10", + "nodeType": "YulIdentifier", + "src": "30063:1:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "30070:1:10", + "nodeType": "YulIdentifier", + "src": "30070:1:10" + }, + { + "kind": "number", + "nativeSrc": "30073:4:10", + "nodeType": "YulLiteral", + "src": "30073:4:10", + "type": "", + "value": "0x43" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30066:3:10", + "nodeType": "YulIdentifier", + "src": "30066:3:10" + }, + "nativeSrc": "30066:12:10", + "nodeType": "YulFunctionCall", + "src": "30066:12:10" + }, + { + "name": "n", + "nativeSrc": "30080:1:10", + "nodeType": "YulIdentifier", + "src": "30080:1:10" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "30025:10:10", + "nodeType": "YulIdentifier", + "src": "30025:10:10" + }, + "nativeSrc": "30025:57:10", + "nodeType": "YulFunctionCall", + "src": "30025:57:10" + } + ], + "functionName": { + "name": "pop", + "nativeSrc": "30021:3:10", + "nodeType": "YulIdentifier", + "src": "30021:3:10" + }, + "nativeSrc": "30021:62:10", + "nodeType": "YulFunctionCall", + "src": "30021:62:10" + }, + "nativeSrc": "30021:62:10", + "nodeType": "YulExpressionStatement", + "src": "30021:62:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "30107:1:10", + "nodeType": "YulIdentifier", + "src": "30107:1:10" + }, + { + "kind": "number", + "nativeSrc": "30110:4:10", + "nodeType": "YulLiteral", + "src": "30110:4:10", + "type": "", + "value": "0x23" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30103:3:10", + "nodeType": "YulIdentifier", + "src": "30103:3:10" + }, + "nativeSrc": "30103:12:10", + "nodeType": "YulFunctionCall", + "src": "30103:12:10" + }, + { + "kind": "number", + "nativeSrc": "30117:32:10", + "nodeType": "YulLiteral", + "src": "30117:32:10", + "type": "", + "value": "0x5af43d82803e903d91602b57fd5bf3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "30096:6:10", + "nodeType": "YulIdentifier", + "src": "30096:6:10" + }, + "nativeSrc": "30096:54:10", + "nodeType": "YulFunctionCall", + "src": "30096:54:10" + }, + "nativeSrc": "30096:54:10", + "nodeType": "YulExpressionStatement", + "src": "30096:54:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "30174:1:10", + "nodeType": "YulIdentifier", + "src": "30174:1:10" + }, + { + "kind": "number", + "nativeSrc": "30177:4:10", + "nodeType": "YulLiteral", + "src": "30177:4:10", + "type": "", + "value": "0x14" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30170:3:10", + "nodeType": "YulIdentifier", + "src": "30170:3:10" + }, + "nativeSrc": "30170:12:10", + "nodeType": "YulFunctionCall", + "src": "30170:12:10" + }, + { + "name": "implementation", + "nativeSrc": "30184:14:10", + "nodeType": "YulIdentifier", + "src": "30184:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "30163:6:10", + "nodeType": "YulIdentifier", + "src": "30163:6:10" + }, + "nativeSrc": "30163:36:10", + "nodeType": "YulFunctionCall", + "src": "30163:36:10" + }, + "nativeSrc": "30163:36:10", + "nodeType": "YulExpressionStatement", + "src": "30163:36:10" + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "30219:1:10", + "nodeType": "YulIdentifier", + "src": "30219:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30226:44:10", + "nodeType": "YulLiteral", + "src": "30226:44:10", + "type": "", + "value": "0xfe61002d3d81600a3d39f3363d3d373d3d3d363d73" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30276:3:10", + "nodeType": "YulLiteral", + "src": "30276:3:10", + "type": "", + "value": "136" + }, + { + "name": "n", + "nativeSrc": "30281:1:10", + "nodeType": "YulIdentifier", + "src": "30281:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "30272:3:10", + "nodeType": "YulIdentifier", + "src": "30272:3:10" + }, + "nativeSrc": "30272:11:10", + "nodeType": "YulFunctionCall", + "src": "30272:11:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30222:3:10", + "nodeType": "YulIdentifier", + "src": "30222:3:10" + }, + "nativeSrc": "30222:62:10", + "nodeType": "YulFunctionCall", + "src": "30222:62:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "30212:6:10", + "nodeType": "YulIdentifier", + "src": "30212:6:10" + }, + "nativeSrc": "30212:73:10", + "nodeType": "YulFunctionCall", + "src": "30212:73:10" + }, + "nativeSrc": "30212:73:10", + "nodeType": "YulExpressionStatement", + "src": "30212:73:10" + }, + { + "nativeSrc": "30385:73:10", + "nodeType": "YulAssignment", + "src": "30385:73:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "30404:5:10", + "nodeType": "YulIdentifier", + "src": "30404:5:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "30415:1:10", + "nodeType": "YulIdentifier", + "src": "30415:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30422:4:10", + "nodeType": "YulLiteral", + "src": "30422:4:10", + "type": "", + "value": "0x0b" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "30431:1:10", + "nodeType": "YulIdentifier", + "src": "30431:1:10" + }, + { + "kind": "number", + "nativeSrc": "30434:6:10", + "nodeType": "YulLiteral", + "src": "30434:6:10", + "type": "", + "value": "0xffd3" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "30428:2:10", + "nodeType": "YulIdentifier", + "src": "30428:2:10" + }, + "nativeSrc": "30428:13:10", + "nodeType": "YulFunctionCall", + "src": "30428:13:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30418:3:10", + "nodeType": "YulIdentifier", + "src": "30418:3:10" + }, + "nativeSrc": "30418:24:10", + "nodeType": "YulFunctionCall", + "src": "30418:24:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30411:3:10", + "nodeType": "YulIdentifier", + "src": "30411:3:10" + }, + "nativeSrc": "30411:32:10", + "nodeType": "YulFunctionCall", + "src": "30411:32:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "30449:1:10", + "nodeType": "YulIdentifier", + "src": "30449:1:10" + }, + { + "kind": "number", + "nativeSrc": "30452:4:10", + "nodeType": "YulLiteral", + "src": "30452:4:10", + "type": "", + "value": "0x37" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30445:3:10", + "nodeType": "YulIdentifier", + "src": "30445:3:10" + }, + "nativeSrc": "30445:12:10", + "nodeType": "YulFunctionCall", + "src": "30445:12:10" + } + ], + "functionName": { + "name": "create", + "nativeSrc": "30397:6:10", + "nodeType": "YulIdentifier", + "src": "30397:6:10" + }, + "nativeSrc": "30397:61:10", + "nodeType": "YulFunctionCall", + "src": "30397:61:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "30385:8:10", + "nodeType": "YulIdentifier", + "src": "30385:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "30491:116:10", + "nodeType": "YulBlock", + "src": "30491:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30516:4:10", + "nodeType": "YulLiteral", + "src": "30516:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "30522:10:10", + "nodeType": "YulLiteral", + "src": "30522:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "30509:6:10", + "nodeType": "YulIdentifier", + "src": "30509:6:10" + }, + "nativeSrc": "30509:24:10", + "nodeType": "YulFunctionCall", + "src": "30509:24:10" + }, + "nativeSrc": "30509:24:10", + "nodeType": "YulExpressionStatement", + "src": "30509:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30582:4:10", + "nodeType": "YulLiteral", + "src": "30582:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "30588:4:10", + "nodeType": "YulLiteral", + "src": "30588:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "30575:6:10", + "nodeType": "YulIdentifier", + "src": "30575:6:10" + }, + "nativeSrc": "30575:18:10", + "nodeType": "YulFunctionCall", + "src": "30575:18:10" + }, + "nativeSrc": "30575:18:10", + "nodeType": "YulExpressionStatement", + "src": "30575:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "30481:8:10", + "nodeType": "YulIdentifier", + "src": "30481:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "30474:6:10", + "nodeType": "YulIdentifier", + "src": "30474:6:10" + }, + "nativeSrc": "30474:16:10", + "nodeType": "YulFunctionCall", + "src": "30474:16:10" + }, + "nativeSrc": "30471:136:10", + "nodeType": "YulIf", + "src": "30471:136:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3371, + "isOffset": false, + "isSlot": false, + "src": "30003:4:10", + "valueSize": 1 + }, + { + "declaration": 3371, + "isOffset": false, + "isSlot": false, + "src": "30050:4:10", + "valueSize": 1 + }, + { + "declaration": 3369, + "isOffset": false, + "isSlot": false, + "src": "30184:14:10", + "valueSize": 1 + }, + { + "declaration": 3374, + "isOffset": false, + "isSlot": false, + "src": "30385:8:10", + "valueSize": 1 + }, + { + "declaration": 3374, + "isOffset": false, + "isSlot": false, + "src": "30481:8:10", + "valueSize": 1 + }, + { + "declaration": 3367, + "isOffset": false, + "isSlot": false, + "src": "30404:5:10", + "valueSize": 1 + } + ], + "id": 3376, + "nodeType": "InlineAssembly", + "src": "25024:5593:10" + } + ] + }, + "documentation": { + "id": 3365, + "nodeType": "StructuredDocumentation", + "src": "24701:136:10", + "text": "@dev Deploys a clone of `implementation` with immutable arguments encoded in `args`.\n Deposits `value` ETH during deployment." + }, + "id": 3378, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "clone", + "nameLocation": "24851:5:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3372, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3367, + "mutability": "mutable", + "name": "value", + "nameLocation": "24865:5:10", + "nodeType": "VariableDeclaration", + "scope": 3378, + "src": "24857:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3366, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "24857:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3369, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "24880:14:10", + "nodeType": "VariableDeclaration", + "scope": 3378, + "src": "24872:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3368, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24872:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3371, + "mutability": "mutable", + "name": "args", + "nameLocation": "24909:4:10", + "nodeType": "VariableDeclaration", + "scope": 3378, + "src": "24896:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3370, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "24896:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "24856:58:10" + }, + "returnParameters": { + "id": 3375, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3374, + "mutability": "mutable", + "name": "instance", + "nameLocation": "24957:8:10", + "nodeType": "VariableDeclaration", + "scope": 3378, + "src": "24949:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3373, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24949:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "24948:18:10" + }, + "scope": 5104, + "src": "24842:5781:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3399, + "nodeType": "Block", + "src": "30896:77:10", + "statements": [ + { + "expression": { + "id": 3397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3390, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3388, + "src": "30906:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 3392, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30936:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 3393, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3381, + "src": "30939:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3394, + "name": "args", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3383, + "src": "30955:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 3395, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3385, + "src": "30961:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3391, + "name": "cloneDeterministic", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3176, + 3190, + 3400, + 3416 + ], + "referencedDeclaration": 3416, + "src": "30917:18:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (uint256,address,bytes memory,bytes32) returns (address)" + } + }, + "id": 3396, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "30917:49:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "30906:60:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3398, + "nodeType": "ExpressionStatement", + "src": "30906:60:10" + } + ] + }, + "documentation": { + "id": 3379, + "nodeType": "StructuredDocumentation", + "src": "30629:121:10", + "text": "@dev Deploys a deterministic clone of `implementation`\n with immutable arguments encoded in `args` and `salt`." + }, + "id": 3400, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "cloneDeterministic", + "nameLocation": "30764:18:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3386, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3381, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "30791:14:10", + "nodeType": "VariableDeclaration", + "scope": 3400, + "src": "30783:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3380, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "30783:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3383, + "mutability": "mutable", + "name": "args", + "nameLocation": "30820:4:10", + "nodeType": "VariableDeclaration", + "scope": 3400, + "src": "30807:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3382, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "30807:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3385, + "mutability": "mutable", + "name": "salt", + "nameLocation": "30834:4:10", + "nodeType": "VariableDeclaration", + "scope": 3400, + "src": "30826:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3384, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "30826:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "30782:57:10" + }, + "returnParameters": { + "id": 3389, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3388, + "mutability": "mutable", + "name": "instance", + "nameLocation": "30882:8:10", + "nodeType": "VariableDeclaration", + "scope": 3400, + "src": "30874:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3387, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "30874:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "30873:18:10" + }, + "scope": 5104, + "src": "30755:218:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3415, + "nodeType": "Block", + "src": "31279:751:10", + "statements": [ + { + "AST": { + "nativeSrc": "31341:683:10", + "nodeType": "YulBlock", + "src": "31341:683:10", + "statements": [ + { + "nativeSrc": "31355:20:10", + "nodeType": "YulVariableDeclaration", + "src": "31355:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "31370:4:10", + "nodeType": "YulLiteral", + "src": "31370:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "31364:5:10", + "nodeType": "YulIdentifier", + "src": "31364:5:10" + }, + "nativeSrc": "31364:11:10", + "nodeType": "YulFunctionCall", + "src": "31364:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "31359:1:10", + "nodeType": "YulTypedName", + "src": "31359:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "31388:20:10", + "nodeType": "YulVariableDeclaration", + "src": "31388:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "31403:4:10", + "nodeType": "YulIdentifier", + "src": "31403:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "31397:5:10", + "nodeType": "YulIdentifier", + "src": "31397:5:10" + }, + "nativeSrc": "31397:11:10", + "nodeType": "YulFunctionCall", + "src": "31397:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "31392:1:10", + "nodeType": "YulTypedName", + "src": "31392:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "31436:3:10", + "nodeType": "YulIdentifier", + "src": "31436:3:10" + }, + "nativeSrc": "31436:5:10", + "nodeType": "YulFunctionCall", + "src": "31436:5:10" + }, + { + "kind": "number", + "nativeSrc": "31443:1:10", + "nodeType": "YulLiteral", + "src": "31443:1:10", + "type": "", + "value": "4" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "31450:4:10", + "nodeType": "YulIdentifier", + "src": "31450:4:10" + }, + { + "kind": "number", + "nativeSrc": "31456:4:10", + "nodeType": "YulLiteral", + "src": "31456:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31446:3:10", + "nodeType": "YulIdentifier", + "src": "31446:3:10" + }, + "nativeSrc": "31446:15:10", + "nodeType": "YulFunctionCall", + "src": "31446:15:10" + }, + { + "name": "n", + "nativeSrc": "31463:1:10", + "nodeType": "YulIdentifier", + "src": "31463:1:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "31470:1:10", + "nodeType": "YulIdentifier", + "src": "31470:1:10" + }, + { + "kind": "number", + "nativeSrc": "31473:4:10", + "nodeType": "YulLiteral", + "src": "31473:4:10", + "type": "", + "value": "0x43" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31466:3:10", + "nodeType": "YulIdentifier", + "src": "31466:3:10" + }, + "nativeSrc": "31466:12:10", + "nodeType": "YulFunctionCall", + "src": "31466:12:10" + }, + { + "name": "n", + "nativeSrc": "31480:1:10", + "nodeType": "YulIdentifier", + "src": "31480:1:10" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "31425:10:10", + "nodeType": "YulIdentifier", + "src": "31425:10:10" + }, + "nativeSrc": "31425:57:10", + "nodeType": "YulFunctionCall", + "src": "31425:57:10" + } + ], + "functionName": { + "name": "pop", + "nativeSrc": "31421:3:10", + "nodeType": "YulIdentifier", + "src": "31421:3:10" + }, + "nativeSrc": "31421:62:10", + "nodeType": "YulFunctionCall", + "src": "31421:62:10" + }, + "nativeSrc": "31421:62:10", + "nodeType": "YulExpressionStatement", + "src": "31421:62:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "31507:1:10", + "nodeType": "YulIdentifier", + "src": "31507:1:10" + }, + { + "kind": "number", + "nativeSrc": "31510:4:10", + "nodeType": "YulLiteral", + "src": "31510:4:10", + "type": "", + "value": "0x23" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31503:3:10", + "nodeType": "YulIdentifier", + "src": "31503:3:10" + }, + "nativeSrc": "31503:12:10", + "nodeType": "YulFunctionCall", + "src": "31503:12:10" + }, + { + "kind": "number", + "nativeSrc": "31517:32:10", + "nodeType": "YulLiteral", + "src": "31517:32:10", + "type": "", + "value": "0x5af43d82803e903d91602b57fd5bf3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "31496:6:10", + "nodeType": "YulIdentifier", + "src": "31496:6:10" + }, + "nativeSrc": "31496:54:10", + "nodeType": "YulFunctionCall", + "src": "31496:54:10" + }, + "nativeSrc": "31496:54:10", + "nodeType": "YulExpressionStatement", + "src": "31496:54:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "31574:1:10", + "nodeType": "YulIdentifier", + "src": "31574:1:10" + }, + { + "kind": "number", + "nativeSrc": "31577:4:10", + "nodeType": "YulLiteral", + "src": "31577:4:10", + "type": "", + "value": "0x14" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31570:3:10", + "nodeType": "YulIdentifier", + "src": "31570:3:10" + }, + "nativeSrc": "31570:12:10", + "nodeType": "YulFunctionCall", + "src": "31570:12:10" + }, + { + "name": "implementation", + "nativeSrc": "31584:14:10", + "nodeType": "YulIdentifier", + "src": "31584:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "31563:6:10", + "nodeType": "YulIdentifier", + "src": "31563:6:10" + }, + "nativeSrc": "31563:36:10", + "nodeType": "YulFunctionCall", + "src": "31563:36:10" + }, + "nativeSrc": "31563:36:10", + "nodeType": "YulExpressionStatement", + "src": "31563:36:10" + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "31619:1:10", + "nodeType": "YulIdentifier", + "src": "31619:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "31626:44:10", + "nodeType": "YulLiteral", + "src": "31626:44:10", + "type": "", + "value": "0xfe61002d3d81600a3d39f3363d3d373d3d3d363d73" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "31676:3:10", + "nodeType": "YulLiteral", + "src": "31676:3:10", + "type": "", + "value": "136" + }, + { + "name": "n", + "nativeSrc": "31681:1:10", + "nodeType": "YulIdentifier", + "src": "31681:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "31672:3:10", + "nodeType": "YulIdentifier", + "src": "31672:3:10" + }, + "nativeSrc": "31672:11:10", + "nodeType": "YulFunctionCall", + "src": "31672:11:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31622:3:10", + "nodeType": "YulIdentifier", + "src": "31622:3:10" + }, + "nativeSrc": "31622:62:10", + "nodeType": "YulFunctionCall", + "src": "31622:62:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "31612:6:10", + "nodeType": "YulIdentifier", + "src": "31612:6:10" + }, + "nativeSrc": "31612:73:10", + "nodeType": "YulFunctionCall", + "src": "31612:73:10" + }, + "nativeSrc": "31612:73:10", + "nodeType": "YulExpressionStatement", + "src": "31612:73:10" + }, + { + "nativeSrc": "31785:80:10", + "nodeType": "YulAssignment", + "src": "31785:80:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "31805:5:10", + "nodeType": "YulIdentifier", + "src": "31805:5:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "31816:1:10", + "nodeType": "YulIdentifier", + "src": "31816:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "31823:4:10", + "nodeType": "YulLiteral", + "src": "31823:4:10", + "type": "", + "value": "0x0b" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "31832:1:10", + "nodeType": "YulIdentifier", + "src": "31832:1:10" + }, + { + "kind": "number", + "nativeSrc": "31835:6:10", + "nodeType": "YulLiteral", + "src": "31835:6:10", + "type": "", + "value": "0xffd3" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "31829:2:10", + "nodeType": "YulIdentifier", + "src": "31829:2:10" + }, + "nativeSrc": "31829:13:10", + "nodeType": "YulFunctionCall", + "src": "31829:13:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31819:3:10", + "nodeType": "YulIdentifier", + "src": "31819:3:10" + }, + "nativeSrc": "31819:24:10", + "nodeType": "YulFunctionCall", + "src": "31819:24:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31812:3:10", + "nodeType": "YulIdentifier", + "src": "31812:3:10" + }, + "nativeSrc": "31812:32:10", + "nodeType": "YulFunctionCall", + "src": "31812:32:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "31850:1:10", + "nodeType": "YulIdentifier", + "src": "31850:1:10" + }, + { + "kind": "number", + "nativeSrc": "31853:4:10", + "nodeType": "YulLiteral", + "src": "31853:4:10", + "type": "", + "value": "0x37" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31846:3:10", + "nodeType": "YulIdentifier", + "src": "31846:3:10" + }, + "nativeSrc": "31846:12:10", + "nodeType": "YulFunctionCall", + "src": "31846:12:10" + }, + { + "name": "salt", + "nativeSrc": "31860:4:10", + "nodeType": "YulIdentifier", + "src": "31860:4:10" + } + ], + "functionName": { + "name": "create2", + "nativeSrc": "31797:7:10", + "nodeType": "YulIdentifier", + "src": "31797:7:10" + }, + "nativeSrc": "31797:68:10", + "nodeType": "YulFunctionCall", + "src": "31797:68:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "31785:8:10", + "nodeType": "YulIdentifier", + "src": "31785:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "31898:116:10", + "nodeType": "YulBlock", + "src": "31898:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "31923:4:10", + "nodeType": "YulLiteral", + "src": "31923:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "31929:10:10", + "nodeType": "YulLiteral", + "src": "31929:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "31916:6:10", + "nodeType": "YulIdentifier", + "src": "31916:6:10" + }, + "nativeSrc": "31916:24:10", + "nodeType": "YulFunctionCall", + "src": "31916:24:10" + }, + "nativeSrc": "31916:24:10", + "nodeType": "YulExpressionStatement", + "src": "31916:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "31989:4:10", + "nodeType": "YulLiteral", + "src": "31989:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "31995:4:10", + "nodeType": "YulLiteral", + "src": "31995:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "31982:6:10", + "nodeType": "YulIdentifier", + "src": "31982:6:10" + }, + "nativeSrc": "31982:18:10", + "nodeType": "YulFunctionCall", + "src": "31982:18:10" + }, + "nativeSrc": "31982:18:10", + "nodeType": "YulExpressionStatement", + "src": "31982:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "31888:8:10", + "nodeType": "YulIdentifier", + "src": "31888:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "31881:6:10", + "nodeType": "YulIdentifier", + "src": "31881:6:10" + }, + "nativeSrc": "31881:16:10", + "nodeType": "YulFunctionCall", + "src": "31881:16:10" + }, + "nativeSrc": "31878:136:10", + "nodeType": "YulIf", + "src": "31878:136:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3407, + "isOffset": false, + "isSlot": false, + "src": "31403:4:10", + "valueSize": 1 + }, + { + "declaration": 3407, + "isOffset": false, + "isSlot": false, + "src": "31450:4:10", + "valueSize": 1 + }, + { + "declaration": 3405, + "isOffset": false, + "isSlot": false, + "src": "31584:14:10", + "valueSize": 1 + }, + { + "declaration": 3412, + "isOffset": false, + "isSlot": false, + "src": "31785:8:10", + "valueSize": 1 + }, + { + "declaration": 3412, + "isOffset": false, + "isSlot": false, + "src": "31888:8:10", + "valueSize": 1 + }, + { + "declaration": 3409, + "isOffset": false, + "isSlot": false, + "src": "31860:4:10", + "valueSize": 1 + }, + { + "declaration": 3403, + "isOffset": false, + "isSlot": false, + "src": "31805:5:10", + "valueSize": 1 + } + ], + "id": 3414, + "nodeType": "InlineAssembly", + "src": "31332:692:10" + } + ] + }, + "documentation": { + "id": 3401, + "nodeType": "StructuredDocumentation", + "src": "30979:121:10", + "text": "@dev Deploys a deterministic clone of `implementation`\n with immutable arguments encoded in `args` and `salt`." + }, + "id": 3416, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "cloneDeterministic", + "nameLocation": "31114:18:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3410, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3403, + "mutability": "mutable", + "name": "value", + "nameLocation": "31150:5:10", + "nodeType": "VariableDeclaration", + "scope": 3416, + "src": "31142:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3402, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "31142:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3405, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "31173:14:10", + "nodeType": "VariableDeclaration", + "scope": 3416, + "src": "31165:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3404, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "31165:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3407, + "mutability": "mutable", + "name": "args", + "nameLocation": "31210:4:10", + "nodeType": "VariableDeclaration", + "scope": 3416, + "src": "31197:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3406, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "31197:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3409, + "mutability": "mutable", + "name": "salt", + "nameLocation": "31232:4:10", + "nodeType": "VariableDeclaration", + "scope": 3416, + "src": "31224:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3408, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "31224:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "31132:110:10" + }, + "returnParameters": { + "id": 3413, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3412, + "mutability": "mutable", + "name": "instance", + "nameLocation": "31269:8:10", + "nodeType": "VariableDeclaration", + "scope": 3416, + "src": "31261:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3411, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "31261:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "31260:18:10" + }, + "scope": 5104, + "src": "31105:925:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3437, + "nodeType": "Block", + "src": "32407:79:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "30", + "id": 3431, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32449:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 3432, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3419, + "src": "32452:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3433, + "name": "args", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3421, + "src": "32468:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 3434, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3423, + "src": "32474:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3430, + "name": "createDeterministicClone", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3438, + 3456 + ], + "referencedDeclaration": 3456, + "src": "32424:24:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$_t_bytes32_$returns$_t_bool_$_t_address_$", + "typeString": "function (uint256,address,bytes memory,bytes32) returns (bool,address)" + } + }, + "id": 3435, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "32424:55:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_address_$", + "typeString": "tuple(bool,address)" + } + }, + "functionReturnParameters": 3429, + "id": 3436, + "nodeType": "Return", + "src": "32417:62:10" + } + ] + }, + "documentation": { + "id": 3417, + "nodeType": "StructuredDocumentation", + "src": "32036:197:10", + "text": "@dev Deploys a deterministic clone of `implementation`\n with immutable arguments encoded in `args` and `salt`.\n This method does not revert if the clone has already been deployed." + }, + "id": 3438, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createDeterministicClone", + "nameLocation": "32247:24:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3424, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3419, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "32280:14:10", + "nodeType": "VariableDeclaration", + "scope": 3438, + "src": "32272:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3418, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32272:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3421, + "mutability": "mutable", + "name": "args", + "nameLocation": "32309:4:10", + "nodeType": "VariableDeclaration", + "scope": 3438, + "src": "32296:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3420, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "32296:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3423, + "mutability": "mutable", + "name": "salt", + "nameLocation": "32323:4:10", + "nodeType": "VariableDeclaration", + "scope": 3438, + "src": "32315:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3422, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "32315:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "32271:57:10" + }, + "returnParameters": { + "id": 3429, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3426, + "mutability": "mutable", + "name": "alreadyDeployed", + "nameLocation": "32368:15:10", + "nodeType": "VariableDeclaration", + "scope": 3438, + "src": "32363:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3425, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "32363:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3428, + "mutability": "mutable", + "name": "instance", + "nameLocation": "32393:8:10", + "nodeType": "VariableDeclaration", + "scope": 3438, + "src": "32385:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3427, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32385:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "32362:40:10" + }, + "scope": 5104, + "src": "32238:248:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3455, + "nodeType": "Block", + "src": "32896:1672:10", + "statements": [ + { + "AST": { + "nativeSrc": "32958:1604:10", + "nodeType": "YulBlock", + "src": "32958:1604:10", + "statements": [ + { + "nativeSrc": "32972:20:10", + "nodeType": "YulVariableDeclaration", + "src": "32972:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "32987:4:10", + "nodeType": "YulLiteral", + "src": "32987:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "32981:5:10", + "nodeType": "YulIdentifier", + "src": "32981:5:10" + }, + "nativeSrc": "32981:11:10", + "nodeType": "YulFunctionCall", + "src": "32981:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "32976:1:10", + "nodeType": "YulTypedName", + "src": "32976:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "33005:20:10", + "nodeType": "YulVariableDeclaration", + "src": "33005:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "33020:4:10", + "nodeType": "YulIdentifier", + "src": "33020:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "33014:5:10", + "nodeType": "YulIdentifier", + "src": "33014:5:10" + }, + "nativeSrc": "33014:11:10", + "nodeType": "YulFunctionCall", + "src": "33014:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "33009:1:10", + "nodeType": "YulTypedName", + "src": "33009:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "33053:3:10", + "nodeType": "YulIdentifier", + "src": "33053:3:10" + }, + "nativeSrc": "33053:5:10", + "nodeType": "YulFunctionCall", + "src": "33053:5:10" + }, + { + "kind": "number", + "nativeSrc": "33060:1:10", + "nodeType": "YulLiteral", + "src": "33060:1:10", + "type": "", + "value": "4" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "33067:4:10", + "nodeType": "YulIdentifier", + "src": "33067:4:10" + }, + { + "kind": "number", + "nativeSrc": "33073:4:10", + "nodeType": "YulLiteral", + "src": "33073:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33063:3:10", + "nodeType": "YulIdentifier", + "src": "33063:3:10" + }, + "nativeSrc": "33063:15:10", + "nodeType": "YulFunctionCall", + "src": "33063:15:10" + }, + { + "name": "n", + "nativeSrc": "33080:1:10", + "nodeType": "YulIdentifier", + "src": "33080:1:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "33087:1:10", + "nodeType": "YulIdentifier", + "src": "33087:1:10" + }, + { + "kind": "number", + "nativeSrc": "33090:4:10", + "nodeType": "YulLiteral", + "src": "33090:4:10", + "type": "", + "value": "0x43" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33083:3:10", + "nodeType": "YulIdentifier", + "src": "33083:3:10" + }, + "nativeSrc": "33083:12:10", + "nodeType": "YulFunctionCall", + "src": "33083:12:10" + }, + { + "name": "n", + "nativeSrc": "33097:1:10", + "nodeType": "YulIdentifier", + "src": "33097:1:10" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "33042:10:10", + "nodeType": "YulIdentifier", + "src": "33042:10:10" + }, + "nativeSrc": "33042:57:10", + "nodeType": "YulFunctionCall", + "src": "33042:57:10" + } + ], + "functionName": { + "name": "pop", + "nativeSrc": "33038:3:10", + "nodeType": "YulIdentifier", + "src": "33038:3:10" + }, + "nativeSrc": "33038:62:10", + "nodeType": "YulFunctionCall", + "src": "33038:62:10" + }, + "nativeSrc": "33038:62:10", + "nodeType": "YulExpressionStatement", + "src": "33038:62:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "33124:1:10", + "nodeType": "YulIdentifier", + "src": "33124:1:10" + }, + { + "kind": "number", + "nativeSrc": "33127:4:10", + "nodeType": "YulLiteral", + "src": "33127:4:10", + "type": "", + "value": "0x23" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33120:3:10", + "nodeType": "YulIdentifier", + "src": "33120:3:10" + }, + "nativeSrc": "33120:12:10", + "nodeType": "YulFunctionCall", + "src": "33120:12:10" + }, + { + "kind": "number", + "nativeSrc": "33134:32:10", + "nodeType": "YulLiteral", + "src": "33134:32:10", + "type": "", + "value": "0x5af43d82803e903d91602b57fd5bf3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "33113:6:10", + "nodeType": "YulIdentifier", + "src": "33113:6:10" + }, + "nativeSrc": "33113:54:10", + "nodeType": "YulFunctionCall", + "src": "33113:54:10" + }, + "nativeSrc": "33113:54:10", + "nodeType": "YulExpressionStatement", + "src": "33113:54:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "33191:1:10", + "nodeType": "YulIdentifier", + "src": "33191:1:10" + }, + { + "kind": "number", + "nativeSrc": "33194:4:10", + "nodeType": "YulLiteral", + "src": "33194:4:10", + "type": "", + "value": "0x14" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33187:3:10", + "nodeType": "YulIdentifier", + "src": "33187:3:10" + }, + "nativeSrc": "33187:12:10", + "nodeType": "YulFunctionCall", + "src": "33187:12:10" + }, + { + "name": "implementation", + "nativeSrc": "33201:14:10", + "nodeType": "YulIdentifier", + "src": "33201:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "33180:6:10", + "nodeType": "YulIdentifier", + "src": "33180:6:10" + }, + "nativeSrc": "33180:36:10", + "nodeType": "YulFunctionCall", + "src": "33180:36:10" + }, + "nativeSrc": "33180:36:10", + "nodeType": "YulExpressionStatement", + "src": "33180:36:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "33370:1:10", + "nodeType": "YulIdentifier", + "src": "33370:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "33376:1:10", + "nodeType": "YulIdentifier", + "src": "33376:1:10" + }, + { + "kind": "number", + "nativeSrc": "33379:6:10", + "nodeType": "YulLiteral", + "src": "33379:6:10", + "type": "", + "value": "0xffd2" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "33373:2:10", + "nodeType": "YulIdentifier", + "src": "33373:2:10" + }, + "nativeSrc": "33373:13:10", + "nodeType": "YulFunctionCall", + "src": "33373:13:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33366:3:10", + "nodeType": "YulIdentifier", + "src": "33366:3:10" + }, + "nativeSrc": "33366:21:10", + "nodeType": "YulFunctionCall", + "src": "33366:21:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33393:44:10", + "nodeType": "YulLiteral", + "src": "33393:44:10", + "type": "", + "value": "0xfe61002d3d81600a3d39f3363d3d373d3d3d363d73" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33443:3:10", + "nodeType": "YulLiteral", + "src": "33443:3:10", + "type": "", + "value": "136" + }, + { + "name": "n", + "nativeSrc": "33448:1:10", + "nodeType": "YulIdentifier", + "src": "33448:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "33439:3:10", + "nodeType": "YulIdentifier", + "src": "33439:3:10" + }, + "nativeSrc": "33439:11:10", + "nodeType": "YulFunctionCall", + "src": "33439:11:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33389:3:10", + "nodeType": "YulIdentifier", + "src": "33389:3:10" + }, + "nativeSrc": "33389:62:10", + "nodeType": "YulFunctionCall", + "src": "33389:62:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "33359:6:10", + "nodeType": "YulIdentifier", + "src": "33359:6:10" + }, + "nativeSrc": "33359:93:10", + "nodeType": "YulFunctionCall", + "src": "33359:93:10" + }, + "nativeSrc": "33359:93:10", + "nodeType": "YulExpressionStatement", + "src": "33359:93:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33525:4:10", + "nodeType": "YulLiteral", + "src": "33525:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "33531:4:10", + "nodeType": "YulLiteral", + "src": "33531:4:10", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "33517:7:10", + "nodeType": "YulIdentifier", + "src": "33517:7:10" + }, + "nativeSrc": "33517:19:10", + "nodeType": "YulFunctionCall", + "src": "33517:19:10" + }, + "nativeSrc": "33517:19:10", + "nodeType": "YulExpressionStatement", + "src": "33517:19:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33577:4:10", + "nodeType": "YulLiteral", + "src": "33577:4:10", + "type": "", + "value": "0x35" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "33597:1:10", + "nodeType": "YulIdentifier", + "src": "33597:1:10" + }, + { + "kind": "number", + "nativeSrc": "33600:4:10", + "nodeType": "YulLiteral", + "src": "33600:4:10", + "type": "", + "value": "0x0c" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33593:3:10", + "nodeType": "YulIdentifier", + "src": "33593:3:10" + }, + "nativeSrc": "33593:12:10", + "nodeType": "YulFunctionCall", + "src": "33593:12:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "33611:1:10", + "nodeType": "YulIdentifier", + "src": "33611:1:10" + }, + { + "kind": "number", + "nativeSrc": "33614:4:10", + "nodeType": "YulLiteral", + "src": "33614:4:10", + "type": "", + "value": "0x37" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33607:3:10", + "nodeType": "YulIdentifier", + "src": "33607:3:10" + }, + "nativeSrc": "33607:12:10", + "nodeType": "YulFunctionCall", + "src": "33607:12:10" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "33583:9:10", + "nodeType": "YulIdentifier", + "src": "33583:9:10" + }, + "nativeSrc": "33583:37:10", + "nodeType": "YulFunctionCall", + "src": "33583:37:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "33570:6:10", + "nodeType": "YulIdentifier", + "src": "33570:6:10" + }, + "nativeSrc": "33570:51:10", + "nodeType": "YulFunctionCall", + "src": "33570:51:10" + }, + "nativeSrc": "33570:51:10", + "nodeType": "YulExpressionStatement", + "src": "33570:51:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33641:4:10", + "nodeType": "YulLiteral", + "src": "33641:4:10", + "type": "", + "value": "0x01" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33651:2:10", + "nodeType": "YulLiteral", + "src": "33651:2:10", + "type": "", + "value": "96" + }, + { + "arguments": [], + "functionName": { + "name": "address", + "nativeSrc": "33655:7:10", + "nodeType": "YulIdentifier", + "src": "33655:7:10" + }, + "nativeSrc": "33655:9:10", + "nodeType": "YulFunctionCall", + "src": "33655:9:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "33647:3:10", + "nodeType": "YulIdentifier", + "src": "33647:3:10" + }, + "nativeSrc": "33647:18:10", + "nodeType": "YulFunctionCall", + "src": "33647:18:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "33634:6:10", + "nodeType": "YulIdentifier", + "src": "33634:6:10" + }, + "nativeSrc": "33634:32:10", + "nodeType": "YulFunctionCall", + "src": "33634:32:10" + }, + "nativeSrc": "33634:32:10", + "nodeType": "YulExpressionStatement", + "src": "33634:32:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33686:4:10", + "nodeType": "YulLiteral", + "src": "33686:4:10", + "type": "", + "value": "0x15" + }, + { + "name": "salt", + "nativeSrc": "33692:4:10", + "nodeType": "YulIdentifier", + "src": "33692:4:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "33679:6:10", + "nodeType": "YulIdentifier", + "src": "33679:6:10" + }, + "nativeSrc": "33679:18:10", + "nodeType": "YulFunctionCall", + "src": "33679:18:10" + }, + "nativeSrc": "33679:18:10", + "nodeType": "YulExpressionStatement", + "src": "33679:18:10" + }, + { + "nativeSrc": "33710:33:10", + "nodeType": "YulAssignment", + "src": "33710:33:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33732:4:10", + "nodeType": "YulLiteral", + "src": "33732:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "33738:4:10", + "nodeType": "YulLiteral", + "src": "33738:4:10", + "type": "", + "value": "0x55" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "33722:9:10", + "nodeType": "YulIdentifier", + "src": "33722:9:10" + }, + "nativeSrc": "33722:21:10", + "nodeType": "YulFunctionCall", + "src": "33722:21:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "33710:8:10", + "nodeType": "YulIdentifier", + "src": "33710:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "33768:696:10", + "nodeType": "YulBlock", + "src": "33768:696:10", + "statements": [ + { + "body": { + "nativeSrc": "33819:307:10", + "nodeType": "YulBlock", + "src": "33819:307:10", + "statements": [ + { + "nativeSrc": "33841:60:10", + "nodeType": "YulAssignment", + "src": "33841:60:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "33861:5:10", + "nodeType": "YulIdentifier", + "src": "33861:5:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "33872:1:10", + "nodeType": "YulIdentifier", + "src": "33872:1:10" + }, + { + "kind": "number", + "nativeSrc": "33875:4:10", + "nodeType": "YulLiteral", + "src": "33875:4:10", + "type": "", + "value": "0x0c" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33868:3:10", + "nodeType": "YulIdentifier", + "src": "33868:3:10" + }, + "nativeSrc": "33868:12:10", + "nodeType": "YulFunctionCall", + "src": "33868:12:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "33886:1:10", + "nodeType": "YulIdentifier", + "src": "33886:1:10" + }, + { + "kind": "number", + "nativeSrc": "33889:4:10", + "nodeType": "YulLiteral", + "src": "33889:4:10", + "type": "", + "value": "0x37" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33882:3:10", + "nodeType": "YulIdentifier", + "src": "33882:3:10" + }, + "nativeSrc": "33882:12:10", + "nodeType": "YulFunctionCall", + "src": "33882:12:10" + }, + { + "name": "salt", + "nativeSrc": "33896:4:10", + "nodeType": "YulIdentifier", + "src": "33896:4:10" + } + ], + "functionName": { + "name": "create2", + "nativeSrc": "33853:7:10", + "nodeType": "YulIdentifier", + "src": "33853:7:10" + }, + "nativeSrc": "33853:48:10", + "nodeType": "YulFunctionCall", + "src": "33853:48:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "33841:8:10", + "nodeType": "YulIdentifier", + "src": "33841:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "33942:140:10", + "nodeType": "YulBlock", + "src": "33942:140:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33975:4:10", + "nodeType": "YulLiteral", + "src": "33975:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "33981:10:10", + "nodeType": "YulLiteral", + "src": "33981:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "33968:6:10", + "nodeType": "YulIdentifier", + "src": "33968:6:10" + }, + "nativeSrc": "33968:24:10", + "nodeType": "YulFunctionCall", + "src": "33968:24:10" + }, + "nativeSrc": "33968:24:10", + "nodeType": "YulExpressionStatement", + "src": "33968:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "34049:4:10", + "nodeType": "YulLiteral", + "src": "34049:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "34055:4:10", + "nodeType": "YulLiteral", + "src": "34055:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "34042:6:10", + "nodeType": "YulIdentifier", + "src": "34042:6:10" + }, + "nativeSrc": "34042:18:10", + "nodeType": "YulFunctionCall", + "src": "34042:18:10" + }, + "nativeSrc": "34042:18:10", + "nodeType": "YulExpressionStatement", + "src": "34042:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "33932:8:10", + "nodeType": "YulIdentifier", + "src": "33932:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "33925:6:10", + "nodeType": "YulIdentifier", + "src": "33925:6:10" + }, + "nativeSrc": "33925:16:10", + "nodeType": "YulFunctionCall", + "src": "33925:16:10" + }, + "nativeSrc": "33922:160:10", + "nodeType": "YulIf", + "src": "33922:160:10" + }, + { + "nativeSrc": "34103:5:10", + "nodeType": "YulBreak", + "src": "34103:5:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "33808:8:10", + "nodeType": "YulIdentifier", + "src": "33808:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "33796:11:10", + "nodeType": "YulIdentifier", + "src": "33796:11:10" + }, + "nativeSrc": "33796:21:10", + "nodeType": "YulFunctionCall", + "src": "33796:21:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "33789:6:10", + "nodeType": "YulIdentifier", + "src": "33789:6:10" + }, + "nativeSrc": "33789:29:10", + "nodeType": "YulFunctionCall", + "src": "33789:29:10" + }, + "nativeSrc": "33786:340:10", + "nodeType": "YulIf", + "src": "33786:340:10" + }, + { + "nativeSrc": "34143:20:10", + "nodeType": "YulAssignment", + "src": "34143:20:10", + "value": { + "kind": "number", + "nativeSrc": "34162:1:10", + "nodeType": "YulLiteral", + "src": "34162:1:10", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "alreadyDeployed", + "nativeSrc": "34143:15:10", + "nodeType": "YulIdentifier", + "src": "34143:15:10" + } + ] + }, + { + "body": { + "nativeSrc": "34197:9:10", + "nodeType": "YulBlock", + "src": "34197:9:10", + "statements": [ + { + "nativeSrc": "34199:5:10", + "nodeType": "YulBreak", + "src": "34199:5:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nativeSrc": "34190:5:10", + "nodeType": "YulIdentifier", + "src": "34190:5:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "34183:6:10", + "nodeType": "YulIdentifier", + "src": "34183:6:10" + }, + "nativeSrc": "34183:13:10", + "nodeType": "YulFunctionCall", + "src": "34183:13:10" + }, + "nativeSrc": "34180:26:10", + "nodeType": "YulIf", + "src": "34180:26:10" + }, + { + "body": { + "nativeSrc": "34299:129:10", + "nodeType": "YulBlock", + "src": "34299:129:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "34328:4:10", + "nodeType": "YulLiteral", + "src": "34328:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "34334:10:10", + "nodeType": "YulLiteral", + "src": "34334:10:10", + "type": "", + "value": "0xb12d13eb" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "34321:6:10", + "nodeType": "YulIdentifier", + "src": "34321:6:10" + }, + "nativeSrc": "34321:24:10", + "nodeType": "YulFunctionCall", + "src": "34321:24:10" + }, + "nativeSrc": "34321:24:10", + "nodeType": "YulExpressionStatement", + "src": "34321:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "34399:4:10", + "nodeType": "YulLiteral", + "src": "34399:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "34405:4:10", + "nodeType": "YulLiteral", + "src": "34405:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "34392:6:10", + "nodeType": "YulIdentifier", + "src": "34392:6:10" + }, + "nativeSrc": "34392:18:10", + "nodeType": "YulFunctionCall", + "src": "34392:18:10" + }, + "nativeSrc": "34392:18:10", + "nodeType": "YulExpressionStatement", + "src": "34392:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "34238:3:10", + "nodeType": "YulIdentifier", + "src": "34238:3:10" + }, + "nativeSrc": "34238:5:10", + "nodeType": "YulFunctionCall", + "src": "34238:5:10" + }, + { + "name": "instance", + "nativeSrc": "34245:8:10", + "nodeType": "YulIdentifier", + "src": "34245:8:10" + }, + { + "name": "value", + "nativeSrc": "34255:5:10", + "nodeType": "YulIdentifier", + "src": "34255:5:10" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "34262:8:10", + "nodeType": "YulIdentifier", + "src": "34262:8:10" + }, + "nativeSrc": "34262:10:10", + "nodeType": "YulFunctionCall", + "src": "34262:10:10" + }, + { + "kind": "number", + "nativeSrc": "34274:4:10", + "nodeType": "YulLiteral", + "src": "34274:4:10", + "type": "", + "value": "0x00" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "34280:8:10", + "nodeType": "YulIdentifier", + "src": "34280:8:10" + }, + "nativeSrc": "34280:10:10", + "nodeType": "YulFunctionCall", + "src": "34280:10:10" + }, + { + "kind": "number", + "nativeSrc": "34292:4:10", + "nodeType": "YulLiteral", + "src": "34292:4:10", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "call", + "nativeSrc": "34233:4:10", + "nodeType": "YulIdentifier", + "src": "34233:4:10" + }, + "nativeSrc": "34233:64:10", + "nodeType": "YulFunctionCall", + "src": "34233:64:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "34226:6:10", + "nodeType": "YulIdentifier", + "src": "34226:6:10" + }, + "nativeSrc": "34226:72:10", + "nodeType": "YulFunctionCall", + "src": "34226:72:10" + }, + "nativeSrc": "34223:205:10", + "nodeType": "YulIf", + "src": "34223:205:10" + }, + { + "nativeSrc": "34445:5:10", + "nodeType": "YulBreak", + "src": "34445:5:10" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "33763:1:10", + "nodeType": "YulLiteral", + "src": "33763:1:10", + "type": "", + "value": "1" + }, + "nativeSrc": "33756:708:10", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "33765:2:10", + "nodeType": "YulBlock", + "src": "33765:2:10", + "statements": [] + }, + "pre": { + "nativeSrc": "33760:2:10", + "nodeType": "YulBlock", + "src": "33760:2:10", + "statements": [] + }, + "src": "33756:708:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "34484:4:10", + "nodeType": "YulLiteral", + "src": "34484:4:10", + "type": "", + "value": "0x35" + }, + { + "kind": "number", + "nativeSrc": "34490:1:10", + "nodeType": "YulLiteral", + "src": "34490:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "34477:6:10", + "nodeType": "YulIdentifier", + "src": "34477:6:10" + }, + "nativeSrc": "34477:15:10", + "nodeType": "YulFunctionCall", + "src": "34477:15:10" + }, + "nativeSrc": "34477:15:10", + "nodeType": "YulExpressionStatement", + "src": "34477:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3450, + "isOffset": false, + "isSlot": false, + "src": "34143:15:10", + "valueSize": 1 + }, + { + "declaration": 3445, + "isOffset": false, + "isSlot": false, + "src": "33020:4:10", + "valueSize": 1 + }, + { + "declaration": 3445, + "isOffset": false, + "isSlot": false, + "src": "33067:4:10", + "valueSize": 1 + }, + { + "declaration": 3443, + "isOffset": false, + "isSlot": false, + "src": "33201:14:10", + "valueSize": 1 + }, + { + "declaration": 3452, + "isOffset": false, + "isSlot": false, + "src": "33710:8:10", + "valueSize": 1 + }, + { + "declaration": 3452, + "isOffset": false, + "isSlot": false, + "src": "33808:8:10", + "valueSize": 1 + }, + { + "declaration": 3452, + "isOffset": false, + "isSlot": false, + "src": "33841:8:10", + "valueSize": 1 + }, + { + "declaration": 3452, + "isOffset": false, + "isSlot": false, + "src": "33932:8:10", + "valueSize": 1 + }, + { + "declaration": 3452, + "isOffset": false, + "isSlot": false, + "src": "34245:8:10", + "valueSize": 1 + }, + { + "declaration": 3447, + "isOffset": false, + "isSlot": false, + "src": "33692:4:10", + "valueSize": 1 + }, + { + "declaration": 3447, + "isOffset": false, + "isSlot": false, + "src": "33896:4:10", + "valueSize": 1 + }, + { + "declaration": 3441, + "isOffset": false, + "isSlot": false, + "src": "33861:5:10", + "valueSize": 1 + }, + { + "declaration": 3441, + "isOffset": false, + "isSlot": false, + "src": "34190:5:10", + "valueSize": 1 + }, + { + "declaration": 3441, + "isOffset": false, + "isSlot": false, + "src": "34255:5:10", + "valueSize": 1 + } + ], + "id": 3454, + "nodeType": "InlineAssembly", + "src": "32949:1613:10" + } + ] + }, + "documentation": { + "id": 3439, + "nodeType": "StructuredDocumentation", + "src": "32492:197:10", + "text": "@dev Deploys a deterministic clone of `implementation`\n with immutable arguments encoded in `args` and `salt`.\n This method does not revert if the clone has already been deployed." + }, + "id": 3456, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createDeterministicClone", + "nameLocation": "32703:24:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3448, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3441, + "mutability": "mutable", + "name": "value", + "nameLocation": "32745:5:10", + "nodeType": "VariableDeclaration", + "scope": 3456, + "src": "32737:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3440, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "32737:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3443, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "32768:14:10", + "nodeType": "VariableDeclaration", + "scope": 3456, + "src": "32760:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3442, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32760:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3445, + "mutability": "mutable", + "name": "args", + "nameLocation": "32805:4:10", + "nodeType": "VariableDeclaration", + "scope": 3456, + "src": "32792:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3444, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "32792:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3447, + "mutability": "mutable", + "name": "salt", + "nameLocation": "32827:4:10", + "nodeType": "VariableDeclaration", + "scope": 3456, + "src": "32819:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3446, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "32819:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "32727:110:10" + }, + "returnParameters": { + "id": 3453, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3450, + "mutability": "mutable", + "name": "alreadyDeployed", + "nameLocation": "32861:15:10", + "nodeType": "VariableDeclaration", + "scope": 3456, + "src": "32856:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3449, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "32856:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3452, + "mutability": "mutable", + "name": "instance", + "nameLocation": "32886:8:10", + "nodeType": "VariableDeclaration", + "scope": 3456, + "src": "32878:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3451, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32878:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "32855:40:10" + }, + "scope": 5104, + "src": "32694:1874:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3467, + "nodeType": "Block", + "src": "34833:877:10", + "statements": [ + { + "AST": { + "nativeSrc": "34895:809:10", + "nodeType": "YulBlock", + "src": "34895:809:10", + "statements": [ + { + "nativeSrc": "34909:16:10", + "nodeType": "YulAssignment", + "src": "34909:16:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "34920:4:10", + "nodeType": "YulLiteral", + "src": "34920:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "34914:5:10", + "nodeType": "YulIdentifier", + "src": "34914:5:10" + }, + "nativeSrc": "34914:11:10", + "nodeType": "YulFunctionCall", + "src": "34914:11:10" + }, + "variableNames": [ + { + "name": "c", + "nativeSrc": "34909:1:10", + "nodeType": "YulIdentifier", + "src": "34909:1:10" + } + ] + }, + { + "nativeSrc": "34938:20:10", + "nodeType": "YulVariableDeclaration", + "src": "34938:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "34953:4:10", + "nodeType": "YulIdentifier", + "src": "34953:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "34947:5:10", + "nodeType": "YulIdentifier", + "src": "34947:5:10" + }, + "nativeSrc": "34947:11:10", + "nodeType": "YulFunctionCall", + "src": "34947:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "34942:1:10", + "nodeType": "YulTypedName", + "src": "34942:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "35073:14:10", + "nodeType": "YulIdentifier", + "src": "35073:14:10" + }, + "nativeSrc": "35073:16:10", + "nodeType": "YulFunctionCall", + "src": "35073:16:10" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "35091:14:10", + "nodeType": "YulIdentifier", + "src": "35091:14:10" + }, + "nativeSrc": "35091:16:10", + "nodeType": "YulFunctionCall", + "src": "35091:16:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "35112:1:10", + "nodeType": "YulIdentifier", + "src": "35112:1:10" + }, + { + "kind": "number", + "nativeSrc": "35115:6:10", + "nodeType": "YulLiteral", + "src": "35115:6:10", + "type": "", + "value": "0xffd2" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "35109:2:10", + "nodeType": "YulIdentifier", + "src": "35109:2:10" + }, + "nativeSrc": "35109:13:10", + "nodeType": "YulFunctionCall", + "src": "35109:13:10" + } + ], + "functionName": { + "name": "returndatacopy", + "nativeSrc": "35058:14:10", + "nodeType": "YulIdentifier", + "src": "35058:14:10" + }, + "nativeSrc": "35058:65:10", + "nodeType": "YulFunctionCall", + "src": "35058:65:10" + }, + "nativeSrc": "35058:65:10", + "nodeType": "YulExpressionStatement", + "src": "35058:65:10" + }, + { + "body": { + "nativeSrc": "35186:92:10", + "nodeType": "YulBlock", + "src": "35186:92:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "35219:1:10", + "nodeType": "YulIdentifier", + "src": "35219:1:10" + }, + { + "kind": "number", + "nativeSrc": "35222:4:10", + "nodeType": "YulLiteral", + "src": "35222:4:10", + "type": "", + "value": "0x57" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35215:3:10", + "nodeType": "YulIdentifier", + "src": "35215:3:10" + }, + "nativeSrc": "35215:12:10", + "nodeType": "YulFunctionCall", + "src": "35215:12:10" + }, + { + "name": "i", + "nativeSrc": "35229:1:10", + "nodeType": "YulIdentifier", + "src": "35229:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35211:3:10", + "nodeType": "YulIdentifier", + "src": "35211:3:10" + }, + "nativeSrc": "35211:20:10", + "nodeType": "YulFunctionCall", + "src": "35211:20:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "35247:4:10", + "nodeType": "YulIdentifier", + "src": "35247:4:10" + }, + { + "kind": "number", + "nativeSrc": "35253:4:10", + "nodeType": "YulLiteral", + "src": "35253:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35243:3:10", + "nodeType": "YulIdentifier", + "src": "35243:3:10" + }, + "nativeSrc": "35243:15:10", + "nodeType": "YulFunctionCall", + "src": "35243:15:10" + }, + { + "name": "i", + "nativeSrc": "35260:1:10", + "nodeType": "YulIdentifier", + "src": "35260:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35239:3:10", + "nodeType": "YulIdentifier", + "src": "35239:3:10" + }, + "nativeSrc": "35239:23:10", + "nodeType": "YulFunctionCall", + "src": "35239:23:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "35233:5:10", + "nodeType": "YulIdentifier", + "src": "35233:5:10" + }, + "nativeSrc": "35233:30:10", + "nodeType": "YulFunctionCall", + "src": "35233:30:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "35204:6:10", + "nodeType": "YulIdentifier", + "src": "35204:6:10" + }, + "nativeSrc": "35204:60:10", + "nodeType": "YulFunctionCall", + "src": "35204:60:10" + }, + "nativeSrc": "35204:60:10", + "nodeType": "YulExpressionStatement", + "src": "35204:60:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "35158:1:10", + "nodeType": "YulIdentifier", + "src": "35158:1:10" + }, + { + "name": "n", + "nativeSrc": "35161:1:10", + "nodeType": "YulIdentifier", + "src": "35161:1:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "35155:2:10", + "nodeType": "YulIdentifier", + "src": "35155:2:10" + }, + "nativeSrc": "35155:8:10", + "nodeType": "YulFunctionCall", + "src": "35155:8:10" + }, + "nativeSrc": "35136:142:10", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "35164:21:10", + "nodeType": "YulBlock", + "src": "35164:21:10", + "statements": [ + { + "nativeSrc": "35166:17:10", + "nodeType": "YulAssignment", + "src": "35166:17:10", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "35175:1:10", + "nodeType": "YulIdentifier", + "src": "35175:1:10" + }, + { + "kind": "number", + "nativeSrc": "35178:4:10", + "nodeType": "YulLiteral", + "src": "35178:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35171:3:10", + "nodeType": "YulIdentifier", + "src": "35171:3:10" + }, + "nativeSrc": "35171:12:10", + "nodeType": "YulFunctionCall", + "src": "35171:12:10" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "35166:1:10", + "nodeType": "YulIdentifier", + "src": "35166:1:10" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "35140:14:10", + "nodeType": "YulBlock", + "src": "35140:14:10", + "statements": [ + { + "nativeSrc": "35142:10:10", + "nodeType": "YulVariableDeclaration", + "src": "35142:10:10", + "value": { + "kind": "number", + "nativeSrc": "35151:1:10", + "nodeType": "YulLiteral", + "src": "35151:1:10", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "35146:1:10", + "nodeType": "YulTypedName", + "src": "35146:1:10", + "type": "" + } + ] + } + ] + }, + "src": "35136:142:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "35302:1:10", + "nodeType": "YulIdentifier", + "src": "35302:1:10" + }, + { + "kind": "number", + "nativeSrc": "35305:4:10", + "nodeType": "YulLiteral", + "src": "35305:4:10", + "type": "", + "value": "0x37" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35298:3:10", + "nodeType": "YulIdentifier", + "src": "35298:3:10" + }, + "nativeSrc": "35298:12:10", + "nodeType": "YulFunctionCall", + "src": "35298:12:10" + }, + { + "kind": "number", + "nativeSrc": "35312:32:10", + "nodeType": "YulLiteral", + "src": "35312:32:10", + "type": "", + "value": "0x5af43d82803e903d91602b57fd5bf3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "35291:6:10", + "nodeType": "YulIdentifier", + "src": "35291:6:10" + }, + "nativeSrc": "35291:54:10", + "nodeType": "YulFunctionCall", + "src": "35291:54:10" + }, + "nativeSrc": "35291:54:10", + "nodeType": "YulExpressionStatement", + "src": "35291:54:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "35369:1:10", + "nodeType": "YulIdentifier", + "src": "35369:1:10" + }, + { + "kind": "number", + "nativeSrc": "35372:4:10", + "nodeType": "YulLiteral", + "src": "35372:4:10", + "type": "", + "value": "0x28" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35365:3:10", + "nodeType": "YulIdentifier", + "src": "35365:3:10" + }, + "nativeSrc": "35365:12:10", + "nodeType": "YulFunctionCall", + "src": "35365:12:10" + }, + { + "name": "implementation", + "nativeSrc": "35379:14:10", + "nodeType": "YulIdentifier", + "src": "35379:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "35358:6:10", + "nodeType": "YulIdentifier", + "src": "35358:6:10" + }, + "nativeSrc": "35358:36:10", + "nodeType": "YulFunctionCall", + "src": "35358:36:10" + }, + "nativeSrc": "35358:36:10", + "nodeType": "YulExpressionStatement", + "src": "35358:36:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "35418:1:10", + "nodeType": "YulIdentifier", + "src": "35418:1:10" + }, + { + "kind": "number", + "nativeSrc": "35421:4:10", + "nodeType": "YulLiteral", + "src": "35421:4:10", + "type": "", + "value": "0x14" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35414:3:10", + "nodeType": "YulIdentifier", + "src": "35414:3:10" + }, + "nativeSrc": "35414:12:10", + "nodeType": "YulFunctionCall", + "src": "35414:12:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "35432:42:10", + "nodeType": "YulLiteral", + "src": "35432:42:10", + "type": "", + "value": "0x61002d3d81600a3d39f3363d3d373d3d3d363d73" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "35480:3:10", + "nodeType": "YulLiteral", + "src": "35480:3:10", + "type": "", + "value": "136" + }, + { + "name": "n", + "nativeSrc": "35485:1:10", + "nodeType": "YulIdentifier", + "src": "35485:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "35476:3:10", + "nodeType": "YulIdentifier", + "src": "35476:3:10" + }, + "nativeSrc": "35476:11:10", + "nodeType": "YulFunctionCall", + "src": "35476:11:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35428:3:10", + "nodeType": "YulIdentifier", + "src": "35428:3:10" + }, + "nativeSrc": "35428:60:10", + "nodeType": "YulFunctionCall", + "src": "35428:60:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "35407:6:10", + "nodeType": "YulIdentifier", + "src": "35407:6:10" + }, + "nativeSrc": "35407:82:10", + "nodeType": "YulFunctionCall", + "src": "35407:82:10" + }, + "nativeSrc": "35407:82:10", + "nodeType": "YulExpressionStatement", + "src": "35407:82:10" + }, + { + "expression": { + "arguments": [ + { + "name": "c", + "nativeSrc": "35509:1:10", + "nodeType": "YulIdentifier", + "src": "35509:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "35516:4:10", + "nodeType": "YulLiteral", + "src": "35516:4:10", + "type": "", + "value": "0x37" + }, + { + "name": "n", + "nativeSrc": "35522:1:10", + "nodeType": "YulIdentifier", + "src": "35522:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35512:3:10", + "nodeType": "YulIdentifier", + "src": "35512:3:10" + }, + "nativeSrc": "35512:12:10", + "nodeType": "YulFunctionCall", + "src": "35512:12:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "35502:6:10", + "nodeType": "YulIdentifier", + "src": "35502:6:10" + }, + "nativeSrc": "35502:23:10", + "nodeType": "YulFunctionCall", + "src": "35502:23:10" + }, + "nativeSrc": "35502:23:10", + "nodeType": "YulExpressionStatement", + "src": "35502:23:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "35570:1:10", + "nodeType": "YulIdentifier", + "src": "35570:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "35577:1:10", + "nodeType": "YulIdentifier", + "src": "35577:1:10" + }, + { + "kind": "number", + "nativeSrc": "35580:4:10", + "nodeType": "YulLiteral", + "src": "35580:4:10", + "type": "", + "value": "0x57" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35573:3:10", + "nodeType": "YulIdentifier", + "src": "35573:3:10" + }, + "nativeSrc": "35573:12:10", + "nodeType": "YulFunctionCall", + "src": "35573:12:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35566:3:10", + "nodeType": "YulIdentifier", + "src": "35566:3:10" + }, + "nativeSrc": "35566:20:10", + "nodeType": "YulFunctionCall", + "src": "35566:20:10" + }, + { + "kind": "number", + "nativeSrc": "35588:1:10", + "nodeType": "YulLiteral", + "src": "35588:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "35559:6:10", + "nodeType": "YulIdentifier", + "src": "35559:6:10" + }, + "nativeSrc": "35559:31:10", + "nodeType": "YulFunctionCall", + "src": "35559:31:10" + }, + "nativeSrc": "35559:31:10", + "nodeType": "YulExpressionStatement", + "src": "35559:31:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "35647:4:10", + "nodeType": "YulLiteral", + "src": "35647:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "c", + "nativeSrc": "35657:1:10", + "nodeType": "YulIdentifier", + "src": "35657:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "35664:1:10", + "nodeType": "YulIdentifier", + "src": "35664:1:10" + }, + { + "kind": "number", + "nativeSrc": "35667:4:10", + "nodeType": "YulLiteral", + "src": "35667:4:10", + "type": "", + "value": "0x77" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35660:3:10", + "nodeType": "YulIdentifier", + "src": "35660:3:10" + }, + "nativeSrc": "35660:12:10", + "nodeType": "YulFunctionCall", + "src": "35660:12:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35653:3:10", + "nodeType": "YulIdentifier", + "src": "35653:3:10" + }, + "nativeSrc": "35653:20:10", + "nodeType": "YulFunctionCall", + "src": "35653:20:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "35640:6:10", + "nodeType": "YulIdentifier", + "src": "35640:6:10" + }, + "nativeSrc": "35640:34:10", + "nodeType": "YulFunctionCall", + "src": "35640:34:10" + }, + "nativeSrc": "35640:34:10", + "nodeType": "YulExpressionStatement", + "src": "35640:34:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3461, + "isOffset": false, + "isSlot": false, + "src": "34953:4:10", + "valueSize": 1 + }, + { + "declaration": 3461, + "isOffset": false, + "isSlot": false, + "src": "35247:4:10", + "valueSize": 1 + }, + { + "declaration": 3464, + "isOffset": false, + "isSlot": false, + "src": "34909:1:10", + "valueSize": 1 + }, + { + "declaration": 3464, + "isOffset": false, + "isSlot": false, + "src": "35219:1:10", + "valueSize": 1 + }, + { + "declaration": 3464, + "isOffset": false, + "isSlot": false, + "src": "35302:1:10", + "valueSize": 1 + }, + { + "declaration": 3464, + "isOffset": false, + "isSlot": false, + "src": "35369:1:10", + "valueSize": 1 + }, + { + "declaration": 3464, + "isOffset": false, + "isSlot": false, + "src": "35418:1:10", + "valueSize": 1 + }, + { + "declaration": 3464, + "isOffset": false, + "isSlot": false, + "src": "35509:1:10", + "valueSize": 1 + }, + { + "declaration": 3464, + "isOffset": false, + "isSlot": false, + "src": "35570:1:10", + "valueSize": 1 + }, + { + "declaration": 3464, + "isOffset": false, + "isSlot": false, + "src": "35657:1:10", + "valueSize": 1 + }, + { + "declaration": 3459, + "isOffset": false, + "isSlot": false, + "src": "35379:14:10", + "valueSize": 1 + } + ], + "id": 3466, + "nodeType": "InlineAssembly", + "src": "34886:818:10" + } + ] + }, + "documentation": { + "id": 3457, + "nodeType": "StructuredDocumentation", + "src": "34574:126:10", + "text": "@dev Returns the initialization code of the clone of `implementation`\n using immutable arguments encoded in `args`." + }, + "id": 3468, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCode", + "nameLocation": "34714:8:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3462, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3459, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "34731:14:10", + "nodeType": "VariableDeclaration", + "scope": 3468, + "src": "34723:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3458, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "34723:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3461, + "mutability": "mutable", + "name": "args", + "nameLocation": "34760:4:10", + "nodeType": "VariableDeclaration", + "scope": 3468, + "src": "34747:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3460, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "34747:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "34722:43:10" + }, + "returnParameters": { + "id": 3465, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3464, + "mutability": "mutable", + "name": "c", + "nameLocation": "34826:1:10", + "nodeType": "VariableDeclaration", + "scope": 3468, + "src": "34813:14:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3463, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "34813:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "34812:16:10" + }, + "scope": 5104, + "src": "34705:1005:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3479, + "nodeType": "Block", + "src": "35982:723:10", + "statements": [ + { + "AST": { + "nativeSrc": "36044:655:10", + "nodeType": "YulBlock", + "src": "36044:655:10", + "statements": [ + { + "nativeSrc": "36058:20:10", + "nodeType": "YulVariableDeclaration", + "src": "36058:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "36073:4:10", + "nodeType": "YulLiteral", + "src": "36073:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "36067:5:10", + "nodeType": "YulIdentifier", + "src": "36067:5:10" + }, + "nativeSrc": "36067:11:10", + "nodeType": "YulFunctionCall", + "src": "36067:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "36062:1:10", + "nodeType": "YulTypedName", + "src": "36062:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "36091:20:10", + "nodeType": "YulVariableDeclaration", + "src": "36091:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "36106:4:10", + "nodeType": "YulIdentifier", + "src": "36106:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "36100:5:10", + "nodeType": "YulIdentifier", + "src": "36100:5:10" + }, + "nativeSrc": "36100:11:10", + "nodeType": "YulFunctionCall", + "src": "36100:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "36095:1:10", + "nodeType": "YulTypedName", + "src": "36095:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "36226:14:10", + "nodeType": "YulIdentifier", + "src": "36226:14:10" + }, + "nativeSrc": "36226:16:10", + "nodeType": "YulFunctionCall", + "src": "36226:16:10" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "36244:14:10", + "nodeType": "YulIdentifier", + "src": "36244:14:10" + }, + "nativeSrc": "36244:16:10", + "nodeType": "YulFunctionCall", + "src": "36244:16:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "36265:1:10", + "nodeType": "YulIdentifier", + "src": "36265:1:10" + }, + { + "kind": "number", + "nativeSrc": "36268:6:10", + "nodeType": "YulLiteral", + "src": "36268:6:10", + "type": "", + "value": "0xffd2" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "36262:2:10", + "nodeType": "YulIdentifier", + "src": "36262:2:10" + }, + "nativeSrc": "36262:13:10", + "nodeType": "YulFunctionCall", + "src": "36262:13:10" + } + ], + "functionName": { + "name": "returndatacopy", + "nativeSrc": "36211:14:10", + "nodeType": "YulIdentifier", + "src": "36211:14:10" + }, + "nativeSrc": "36211:65:10", + "nodeType": "YulFunctionCall", + "src": "36211:65:10" + }, + "nativeSrc": "36211:65:10", + "nodeType": "YulExpressionStatement", + "src": "36211:65:10" + }, + { + "body": { + "nativeSrc": "36339:92:10", + "nodeType": "YulBlock", + "src": "36339:92:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "36372:1:10", + "nodeType": "YulIdentifier", + "src": "36372:1:10" + }, + { + "kind": "number", + "nativeSrc": "36375:4:10", + "nodeType": "YulLiteral", + "src": "36375:4:10", + "type": "", + "value": "0x43" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36368:3:10", + "nodeType": "YulIdentifier", + "src": "36368:3:10" + }, + "nativeSrc": "36368:12:10", + "nodeType": "YulFunctionCall", + "src": "36368:12:10" + }, + { + "name": "i", + "nativeSrc": "36382:1:10", + "nodeType": "YulIdentifier", + "src": "36382:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36364:3:10", + "nodeType": "YulIdentifier", + "src": "36364:3:10" + }, + "nativeSrc": "36364:20:10", + "nodeType": "YulFunctionCall", + "src": "36364:20:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "36400:4:10", + "nodeType": "YulIdentifier", + "src": "36400:4:10" + }, + { + "kind": "number", + "nativeSrc": "36406:4:10", + "nodeType": "YulLiteral", + "src": "36406:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36396:3:10", + "nodeType": "YulIdentifier", + "src": "36396:3:10" + }, + "nativeSrc": "36396:15:10", + "nodeType": "YulFunctionCall", + "src": "36396:15:10" + }, + { + "name": "i", + "nativeSrc": "36413:1:10", + "nodeType": "YulIdentifier", + "src": "36413:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36392:3:10", + "nodeType": "YulIdentifier", + "src": "36392:3:10" + }, + "nativeSrc": "36392:23:10", + "nodeType": "YulFunctionCall", + "src": "36392:23:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "36386:5:10", + "nodeType": "YulIdentifier", + "src": "36386:5:10" + }, + "nativeSrc": "36386:30:10", + "nodeType": "YulFunctionCall", + "src": "36386:30:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "36357:6:10", + "nodeType": "YulIdentifier", + "src": "36357:6:10" + }, + "nativeSrc": "36357:60:10", + "nodeType": "YulFunctionCall", + "src": "36357:60:10" + }, + "nativeSrc": "36357:60:10", + "nodeType": "YulExpressionStatement", + "src": "36357:60:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "36311:1:10", + "nodeType": "YulIdentifier", + "src": "36311:1:10" + }, + { + "name": "n", + "nativeSrc": "36314:1:10", + "nodeType": "YulIdentifier", + "src": "36314:1:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "36308:2:10", + "nodeType": "YulIdentifier", + "src": "36308:2:10" + }, + "nativeSrc": "36308:8:10", + "nodeType": "YulFunctionCall", + "src": "36308:8:10" + }, + "nativeSrc": "36289:142:10", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "36317:21:10", + "nodeType": "YulBlock", + "src": "36317:21:10", + "statements": [ + { + "nativeSrc": "36319:17:10", + "nodeType": "YulAssignment", + "src": "36319:17:10", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "36328:1:10", + "nodeType": "YulIdentifier", + "src": "36328:1:10" + }, + { + "kind": "number", + "nativeSrc": "36331:4:10", + "nodeType": "YulLiteral", + "src": "36331:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36324:3:10", + "nodeType": "YulIdentifier", + "src": "36324:3:10" + }, + "nativeSrc": "36324:12:10", + "nodeType": "YulFunctionCall", + "src": "36324:12:10" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "36319:1:10", + "nodeType": "YulIdentifier", + "src": "36319:1:10" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "36293:14:10", + "nodeType": "YulBlock", + "src": "36293:14:10", + "statements": [ + { + "nativeSrc": "36295:10:10", + "nodeType": "YulVariableDeclaration", + "src": "36295:10:10", + "value": { + "kind": "number", + "nativeSrc": "36304:1:10", + "nodeType": "YulLiteral", + "src": "36304:1:10", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "36299:1:10", + "nodeType": "YulTypedName", + "src": "36299:1:10", + "type": "" + } + ] + } + ] + }, + "src": "36289:142:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "36455:1:10", + "nodeType": "YulIdentifier", + "src": "36455:1:10" + }, + { + "kind": "number", + "nativeSrc": "36458:4:10", + "nodeType": "YulLiteral", + "src": "36458:4:10", + "type": "", + "value": "0x23" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36451:3:10", + "nodeType": "YulIdentifier", + "src": "36451:3:10" + }, + "nativeSrc": "36451:12:10", + "nodeType": "YulFunctionCall", + "src": "36451:12:10" + }, + { + "kind": "number", + "nativeSrc": "36465:32:10", + "nodeType": "YulLiteral", + "src": "36465:32:10", + "type": "", + "value": "0x5af43d82803e903d91602b57fd5bf3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "36444:6:10", + "nodeType": "YulIdentifier", + "src": "36444:6:10" + }, + "nativeSrc": "36444:54:10", + "nodeType": "YulFunctionCall", + "src": "36444:54:10" + }, + "nativeSrc": "36444:54:10", + "nodeType": "YulExpressionStatement", + "src": "36444:54:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "36522:1:10", + "nodeType": "YulIdentifier", + "src": "36522:1:10" + }, + { + "kind": "number", + "nativeSrc": "36525:4:10", + "nodeType": "YulLiteral", + "src": "36525:4:10", + "type": "", + "value": "0x14" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36518:3:10", + "nodeType": "YulIdentifier", + "src": "36518:3:10" + }, + "nativeSrc": "36518:12:10", + "nodeType": "YulFunctionCall", + "src": "36518:12:10" + }, + { + "name": "implementation", + "nativeSrc": "36532:14:10", + "nodeType": "YulIdentifier", + "src": "36532:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "36511:6:10", + "nodeType": "YulIdentifier", + "src": "36511:6:10" + }, + "nativeSrc": "36511:36:10", + "nodeType": "YulFunctionCall", + "src": "36511:36:10" + }, + "nativeSrc": "36511:36:10", + "nodeType": "YulExpressionStatement", + "src": "36511:36:10" + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "36567:1:10", + "nodeType": "YulIdentifier", + "src": "36567:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "36574:42:10", + "nodeType": "YulLiteral", + "src": "36574:42:10", + "type": "", + "value": "0x61002d3d81600a3d39f3363d3d373d3d3d363d73" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "36622:3:10", + "nodeType": "YulLiteral", + "src": "36622:3:10", + "type": "", + "value": "136" + }, + { + "name": "n", + "nativeSrc": "36627:1:10", + "nodeType": "YulIdentifier", + "src": "36627:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "36618:3:10", + "nodeType": "YulIdentifier", + "src": "36618:3:10" + }, + "nativeSrc": "36618:11:10", + "nodeType": "YulFunctionCall", + "src": "36618:11:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36570:3:10", + "nodeType": "YulIdentifier", + "src": "36570:3:10" + }, + "nativeSrc": "36570:60:10", + "nodeType": "YulFunctionCall", + "src": "36570:60:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "36560:6:10", + "nodeType": "YulIdentifier", + "src": "36560:6:10" + }, + "nativeSrc": "36560:71:10", + "nodeType": "YulFunctionCall", + "src": "36560:71:10" + }, + "nativeSrc": "36560:71:10", + "nodeType": "YulExpressionStatement", + "src": "36560:71:10" + }, + { + "nativeSrc": "36644:45:10", + "nodeType": "YulAssignment", + "src": "36644:45:10", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "36666:1:10", + "nodeType": "YulIdentifier", + "src": "36666:1:10" + }, + { + "kind": "number", + "nativeSrc": "36669:4:10", + "nodeType": "YulLiteral", + "src": "36669:4:10", + "type": "", + "value": "0x0c" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36662:3:10", + "nodeType": "YulIdentifier", + "src": "36662:3:10" + }, + "nativeSrc": "36662:12:10", + "nodeType": "YulFunctionCall", + "src": "36662:12:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "36680:1:10", + "nodeType": "YulIdentifier", + "src": "36680:1:10" + }, + { + "kind": "number", + "nativeSrc": "36683:4:10", + "nodeType": "YulLiteral", + "src": "36683:4:10", + "type": "", + "value": "0x37" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36676:3:10", + "nodeType": "YulIdentifier", + "src": "36676:3:10" + }, + "nativeSrc": "36676:12:10", + "nodeType": "YulFunctionCall", + "src": "36676:12:10" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "36652:9:10", + "nodeType": "YulIdentifier", + "src": "36652:9:10" + }, + "nativeSrc": "36652:37:10", + "nodeType": "YulFunctionCall", + "src": "36652:37:10" + }, + "variableNames": [ + { + "name": "hash", + "nativeSrc": "36644:4:10", + "nodeType": "YulIdentifier", + "src": "36644:4:10" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3473, + "isOffset": false, + "isSlot": false, + "src": "36106:4:10", + "valueSize": 1 + }, + { + "declaration": 3473, + "isOffset": false, + "isSlot": false, + "src": "36400:4:10", + "valueSize": 1 + }, + { + "declaration": 3476, + "isOffset": false, + "isSlot": false, + "src": "36644:4:10", + "valueSize": 1 + }, + { + "declaration": 3471, + "isOffset": false, + "isSlot": false, + "src": "36532:14:10", + "valueSize": 1 + } + ], + "id": 3478, + "nodeType": "InlineAssembly", + "src": "36035:664:10" + } + ] + }, + "documentation": { + "id": 3469, + "nodeType": "StructuredDocumentation", + "src": "35716:131:10", + "text": "@dev Returns the initialization code hash of the clone of `implementation`\n using immutable arguments encoded in `args`." + }, + "id": 3480, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeHash", + "nameLocation": "35861:12:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3474, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3471, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "35882:14:10", + "nodeType": "VariableDeclaration", + "scope": 3480, + "src": "35874:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3470, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "35874:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3473, + "mutability": "mutable", + "name": "args", + "nameLocation": "35911:4:10", + "nodeType": "VariableDeclaration", + "scope": 3480, + "src": "35898:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3472, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "35898:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "35873:43:10" + }, + "returnParameters": { + "id": 3477, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3476, + "mutability": "mutable", + "name": "hash", + "nameLocation": "35972:4:10", + "nodeType": "VariableDeclaration", + "scope": 3480, + "src": "35964:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3475, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "35964:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "35963:14:10" + }, + "scope": 5104, + "src": "35852:853:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3509, + "nodeType": "Block", + "src": "37143:137:10", + "statements": [ + { + "assignments": [ + 3495 + ], + "declarations": [ + { + "constant": false, + "id": 3495, + "mutability": "mutable", + "name": "hash", + "nameLocation": "37161:4:10", + "nodeType": "VariableDeclaration", + "scope": 3509, + "src": "37153:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3494, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "37153:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 3500, + "initialValue": { + "arguments": [ + { + "id": 3497, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3483, + "src": "37181:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3498, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3485, + "src": "37197:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 3496, + "name": "initCodeHash", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3210, + 3480 + ], + "referencedDeclaration": 3480, + "src": "37168:12:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (address,bytes memory) pure returns (bytes32)" + } + }, + "id": 3499, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "37168:34:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "37153:49:10" + }, + { + "expression": { + "id": 3507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3501, + "name": "predicted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3492, + "src": "37212:9:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3503, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3495, + "src": "37252:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 3504, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3487, + "src": "37258:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 3505, + "name": "deployer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3489, + "src": "37264:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3502, + "name": "predictDeterministicAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3237, + 3510, + 5081 + ], + "referencedDeclaration": 5081, + "src": "37224:27:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_address_$", + "typeString": "function (bytes32,bytes32,address) pure returns (address)" + } + }, + "id": 3506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "37224:49:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "37212:61:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3508, + "nodeType": "ExpressionStatement", + "src": "37212:61:10" + } + ] + }, + "documentation": { + "id": 3481, + "nodeType": "StructuredDocumentation", + "src": "36711:235:10", + "text": "@dev Returns the address of the clone of\n `implementation` using immutable arguments encoded in `args`, with `salt`, by `deployer`.\n Note: The returned result has dirty upper 96 bits. Please clean if used in assembly." + }, + "id": 3510, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "predictDeterministicAddress", + "nameLocation": "36960:27:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3490, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3483, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "37005:14:10", + "nodeType": "VariableDeclaration", + "scope": 3510, + "src": "36997:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3482, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "36997:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3485, + "mutability": "mutable", + "name": "data", + "nameLocation": "37042:4:10", + "nodeType": "VariableDeclaration", + "scope": 3510, + "src": "37029:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3484, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "37029:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3487, + "mutability": "mutable", + "name": "salt", + "nameLocation": "37064:4:10", + "nodeType": "VariableDeclaration", + "scope": 3510, + "src": "37056:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3486, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "37056:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3489, + "mutability": "mutable", + "name": "deployer", + "nameLocation": "37086:8:10", + "nodeType": "VariableDeclaration", + "scope": 3510, + "src": "37078:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3488, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "37078:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "36987:113:10" + }, + "returnParameters": { + "id": 3493, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3492, + "mutability": "mutable", + "name": "predicted", + "nameLocation": "37132:9:10", + "nodeType": "VariableDeclaration", + "scope": 3510, + "src": "37124:17:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3491, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "37124:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "37123:19:10" + }, + "scope": 5104, + "src": "36951:329:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3519, + "nodeType": "Block", + "src": "37436:371:10", + "statements": [ + { + "AST": { + "nativeSrc": "37498:303:10", + "nodeType": "YulBlock", + "src": "37498:303:10", + "statements": [ + { + "nativeSrc": "37512:19:10", + "nodeType": "YulAssignment", + "src": "37512:19:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "37526:4:10", + "nodeType": "YulLiteral", + "src": "37526:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "37520:5:10", + "nodeType": "YulIdentifier", + "src": "37520:5:10" + }, + "nativeSrc": "37520:11:10", + "nodeType": "YulFunctionCall", + "src": "37520:11:10" + }, + "variableNames": [ + { + "name": "args", + "nativeSrc": "37512:4:10", + "nodeType": "YulIdentifier", + "src": "37512:4:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "args", + "nativeSrc": "37551:4:10", + "nodeType": "YulIdentifier", + "src": "37551:4:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "37561:12:10", + "nodeType": "YulLiteral", + "src": "37561:12:10", + "type": "", + "value": "0xffffffffff" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "37591:8:10", + "nodeType": "YulIdentifier", + "src": "37591:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "37579:11:10", + "nodeType": "YulIdentifier", + "src": "37579:11:10" + }, + "nativeSrc": "37579:21:10", + "nodeType": "YulFunctionCall", + "src": "37579:21:10" + }, + { + "kind": "number", + "nativeSrc": "37602:4:10", + "nodeType": "YulLiteral", + "src": "37602:4:10", + "type": "", + "value": "0x2d" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "37575:3:10", + "nodeType": "YulIdentifier", + "src": "37575:3:10" + }, + "nativeSrc": "37575:32:10", + "nodeType": "YulFunctionCall", + "src": "37575:32:10" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "37557:3:10", + "nodeType": "YulIdentifier", + "src": "37557:3:10" + }, + "nativeSrc": "37557:51:10", + "nodeType": "YulFunctionCall", + "src": "37557:51:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "37544:6:10", + "nodeType": "YulIdentifier", + "src": "37544:6:10" + }, + "nativeSrc": "37544:65:10", + "nodeType": "YulFunctionCall", + "src": "37544:65:10" + }, + "nativeSrc": "37544:65:10", + "nodeType": "YulExpressionStatement", + "src": "37544:65:10" + }, + { + "expression": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "37655:8:10", + "nodeType": "YulIdentifier", + "src": "37655:8:10" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "37669:4:10", + "nodeType": "YulIdentifier", + "src": "37669:4:10" + }, + { + "kind": "number", + "nativeSrc": "37675:4:10", + "nodeType": "YulLiteral", + "src": "37675:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "37665:3:10", + "nodeType": "YulIdentifier", + "src": "37665:3:10" + }, + "nativeSrc": "37665:15:10", + "nodeType": "YulFunctionCall", + "src": "37665:15:10" + }, + { + "kind": "number", + "nativeSrc": "37682:4:10", + "nodeType": "YulLiteral", + "src": "37682:4:10", + "type": "", + "value": "0x2d" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "37698:4:10", + "nodeType": "YulIdentifier", + "src": "37698:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "37692:5:10", + "nodeType": "YulIdentifier", + "src": "37692:5:10" + }, + "nativeSrc": "37692:11:10", + "nodeType": "YulFunctionCall", + "src": "37692:11:10" + }, + { + "kind": "number", + "nativeSrc": "37705:4:10", + "nodeType": "YulLiteral", + "src": "37705:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "37688:3:10", + "nodeType": "YulIdentifier", + "src": "37688:3:10" + }, + "nativeSrc": "37688:22:10", + "nodeType": "YulFunctionCall", + "src": "37688:22:10" + } + ], + "functionName": { + "name": "extcodecopy", + "nativeSrc": "37643:11:10", + "nodeType": "YulIdentifier", + "src": "37643:11:10" + }, + "nativeSrc": "37643:68:10", + "nodeType": "YulFunctionCall", + "src": "37643:68:10" + }, + "nativeSrc": "37643:68:10", + "nodeType": "YulExpressionStatement", + "src": "37643:68:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "37731:4:10", + "nodeType": "YulLiteral", + "src": "37731:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "37747:4:10", + "nodeType": "YulIdentifier", + "src": "37747:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "37741:5:10", + "nodeType": "YulIdentifier", + "src": "37741:5:10" + }, + "nativeSrc": "37741:11:10", + "nodeType": "YulFunctionCall", + "src": "37741:11:10" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "37758:4:10", + "nodeType": "YulIdentifier", + "src": "37758:4:10" + }, + { + "kind": "number", + "nativeSrc": "37764:4:10", + "nodeType": "YulLiteral", + "src": "37764:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "37754:3:10", + "nodeType": "YulIdentifier", + "src": "37754:3:10" + }, + "nativeSrc": "37754:15:10", + "nodeType": "YulFunctionCall", + "src": "37754:15:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "37737:3:10", + "nodeType": "YulIdentifier", + "src": "37737:3:10" + }, + "nativeSrc": "37737:33:10", + "nodeType": "YulFunctionCall", + "src": "37737:33:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "37724:6:10", + "nodeType": "YulIdentifier", + "src": "37724:6:10" + }, + "nativeSrc": "37724:47:10", + "nodeType": "YulFunctionCall", + "src": "37724:47:10" + }, + "nativeSrc": "37724:47:10", + "nodeType": "YulExpressionStatement", + "src": "37724:47:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3516, + "isOffset": false, + "isSlot": false, + "src": "37512:4:10", + "valueSize": 1 + }, + { + "declaration": 3516, + "isOffset": false, + "isSlot": false, + "src": "37551:4:10", + "valueSize": 1 + }, + { + "declaration": 3516, + "isOffset": false, + "isSlot": false, + "src": "37669:4:10", + "valueSize": 1 + }, + { + "declaration": 3516, + "isOffset": false, + "isSlot": false, + "src": "37698:4:10", + "valueSize": 1 + }, + { + "declaration": 3516, + "isOffset": false, + "isSlot": false, + "src": "37747:4:10", + "valueSize": 1 + }, + { + "declaration": 3516, + "isOffset": false, + "isSlot": false, + "src": "37758:4:10", + "valueSize": 1 + }, + { + "declaration": 3513, + "isOffset": false, + "isSlot": false, + "src": "37591:8:10", + "valueSize": 1 + }, + { + "declaration": 3513, + "isOffset": false, + "isSlot": false, + "src": "37655:8:10", + "valueSize": 1 + } + ], + "id": 3518, + "nodeType": "InlineAssembly", + "src": "37489:312:10" + } + ] + }, + "documentation": { + "id": 3511, + "nodeType": "StructuredDocumentation", + "src": "37286:64:10", + "text": "@dev Equivalent to `argsOnClone(instance, 0, 2 ** 256 - 1)`." + }, + "id": 3520, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "argsOnClone", + "nameLocation": "37364:11:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3514, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3513, + "mutability": "mutable", + "name": "instance", + "nameLocation": "37384:8:10", + "nodeType": "VariableDeclaration", + "scope": 3520, + "src": "37376:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3512, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "37376:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "37375:18:10" + }, + "returnParameters": { + "id": 3517, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3516, + "mutability": "mutable", + "name": "args", + "nameLocation": "37430:4:10", + "nodeType": "VariableDeclaration", + "scope": 3520, + "src": "37417:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3515, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "37417:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "37416:19:10" + }, + "scope": 5104, + "src": "37355:452:10", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3531, + "nodeType": "Block", + "src": "38010:485:10", + "statements": [ + { + "AST": { + "nativeSrc": "38072:417:10", + "nodeType": "YulBlock", + "src": "38072:417:10", + "statements": [ + { + "nativeSrc": "38086:19:10", + "nodeType": "YulAssignment", + "src": "38086:19:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "38100:4:10", + "nodeType": "YulLiteral", + "src": "38100:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "38094:5:10", + "nodeType": "YulIdentifier", + "src": "38094:5:10" + }, + "nativeSrc": "38094:11:10", + "nodeType": "YulFunctionCall", + "src": "38094:11:10" + }, + "variableNames": [ + { + "name": "args", + "nativeSrc": "38086:4:10", + "nodeType": "YulIdentifier", + "src": "38086:4:10" + } + ] + }, + { + "nativeSrc": "38118:60:10", + "nodeType": "YulVariableDeclaration", + "src": "38118:60:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "38131:12:10", + "nodeType": "YulLiteral", + "src": "38131:12:10", + "type": "", + "value": "0xffffffffff" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "38161:8:10", + "nodeType": "YulIdentifier", + "src": "38161:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "38149:11:10", + "nodeType": "YulIdentifier", + "src": "38149:11:10" + }, + "nativeSrc": "38149:21:10", + "nodeType": "YulFunctionCall", + "src": "38149:21:10" + }, + { + "kind": "number", + "nativeSrc": "38172:4:10", + "nodeType": "YulLiteral", + "src": "38172:4:10", + "type": "", + "value": "0x2d" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "38145:3:10", + "nodeType": "YulIdentifier", + "src": "38145:3:10" + }, + "nativeSrc": "38145:32:10", + "nodeType": "YulFunctionCall", + "src": "38145:32:10" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "38127:3:10", + "nodeType": "YulIdentifier", + "src": "38127:3:10" + }, + "nativeSrc": "38127:51:10", + "nodeType": "YulFunctionCall", + "src": "38127:51:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "38122:1:10", + "nodeType": "YulTypedName", + "src": "38122:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "38191:56:10", + "nodeType": "YulVariableDeclaration", + "src": "38191:56:10", + "value": { + "arguments": [ + { + "name": "n", + "nativeSrc": "38204:1:10", + "nodeType": "YulIdentifier", + "src": "38204:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "38211:8:10", + "nodeType": "YulLiteral", + "src": "38211:8:10", + "type": "", + "value": "0xffffff" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "start", + "nativeSrc": "38228:5:10", + "nodeType": "YulIdentifier", + "src": "38228:5:10" + }, + { + "name": "n", + "nativeSrc": "38235:1:10", + "nodeType": "YulIdentifier", + "src": "38235:1:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "38225:2:10", + "nodeType": "YulIdentifier", + "src": "38225:2:10" + }, + "nativeSrc": "38225:12:10", + "nodeType": "YulFunctionCall", + "src": "38225:12:10" + }, + { + "name": "start", + "nativeSrc": "38239:5:10", + "nodeType": "YulIdentifier", + "src": "38239:5:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "38221:3:10", + "nodeType": "YulIdentifier", + "src": "38221:3:10" + }, + "nativeSrc": "38221:24:10", + "nodeType": "YulFunctionCall", + "src": "38221:24:10" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "38207:3:10", + "nodeType": "YulIdentifier", + "src": "38207:3:10" + }, + "nativeSrc": "38207:39:10", + "nodeType": "YulFunctionCall", + "src": "38207:39:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "38200:3:10", + "nodeType": "YulIdentifier", + "src": "38200:3:10" + }, + "nativeSrc": "38200:47:10", + "nodeType": "YulFunctionCall", + "src": "38200:47:10" + }, + "variables": [ + { + "name": "l", + "nativeSrc": "38195:1:10", + "nodeType": "YulTypedName", + "src": "38195:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "38272:8:10", + "nodeType": "YulIdentifier", + "src": "38272:8:10" + }, + { + "name": "args", + "nativeSrc": "38282:4:10", + "nodeType": "YulIdentifier", + "src": "38282:4:10" + }, + { + "arguments": [ + { + "name": "start", + "nativeSrc": "38292:5:10", + "nodeType": "YulIdentifier", + "src": "38292:5:10" + }, + { + "kind": "number", + "nativeSrc": "38299:4:10", + "nodeType": "YulLiteral", + "src": "38299:4:10", + "type": "", + "value": "0x0d" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "38288:3:10", + "nodeType": "YulIdentifier", + "src": "38288:3:10" + }, + "nativeSrc": "38288:16:10", + "nodeType": "YulFunctionCall", + "src": "38288:16:10" + }, + { + "arguments": [ + { + "name": "l", + "nativeSrc": "38310:1:10", + "nodeType": "YulIdentifier", + "src": "38310:1:10" + }, + { + "kind": "number", + "nativeSrc": "38313:4:10", + "nodeType": "YulLiteral", + "src": "38313:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "38306:3:10", + "nodeType": "YulIdentifier", + "src": "38306:3:10" + }, + "nativeSrc": "38306:12:10", + "nodeType": "YulFunctionCall", + "src": "38306:12:10" + } + ], + "functionName": { + "name": "extcodecopy", + "nativeSrc": "38260:11:10", + "nodeType": "YulIdentifier", + "src": "38260:11:10" + }, + "nativeSrc": "38260:59:10", + "nodeType": "YulFunctionCall", + "src": "38260:59:10" + }, + "nativeSrc": "38260:59:10", + "nodeType": "YulExpressionStatement", + "src": "38260:59:10" + }, + { + "expression": { + "arguments": [ + { + "name": "args", + "nativeSrc": "38339:4:10", + "nodeType": "YulIdentifier", + "src": "38339:4:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "n", + "nativeSrc": "38353:1:10", + "nodeType": "YulIdentifier", + "src": "38353:1:10" + }, + { + "name": "start", + "nativeSrc": "38356:5:10", + "nodeType": "YulIdentifier", + "src": "38356:5:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "38349:3:10", + "nodeType": "YulIdentifier", + "src": "38349:3:10" + }, + "nativeSrc": "38349:13:10", + "nodeType": "YulFunctionCall", + "src": "38349:13:10" + }, + { + "arguments": [ + { + "name": "start", + "nativeSrc": "38367:5:10", + "nodeType": "YulIdentifier", + "src": "38367:5:10" + }, + { + "name": "n", + "nativeSrc": "38374:1:10", + "nodeType": "YulIdentifier", + "src": "38374:1:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "38364:2:10", + "nodeType": "YulIdentifier", + "src": "38364:2:10" + }, + "nativeSrc": "38364:12:10", + "nodeType": "YulFunctionCall", + "src": "38364:12:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "38345:3:10", + "nodeType": "YulIdentifier", + "src": "38345:3:10" + }, + "nativeSrc": "38345:32:10", + "nodeType": "YulFunctionCall", + "src": "38345:32:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "38332:6:10", + "nodeType": "YulIdentifier", + "src": "38332:6:10" + }, + "nativeSrc": "38332:46:10", + "nodeType": "YulFunctionCall", + "src": "38332:46:10" + }, + "nativeSrc": "38332:46:10", + "nodeType": "YulExpressionStatement", + "src": "38332:46:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "38419:4:10", + "nodeType": "YulLiteral", + "src": "38419:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "38429:4:10", + "nodeType": "YulIdentifier", + "src": "38429:4:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "38439:4:10", + "nodeType": "YulLiteral", + "src": "38439:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "38451:4:10", + "nodeType": "YulIdentifier", + "src": "38451:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "38445:5:10", + "nodeType": "YulIdentifier", + "src": "38445:5:10" + }, + "nativeSrc": "38445:11:10", + "nodeType": "YulFunctionCall", + "src": "38445:11:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "38435:3:10", + "nodeType": "YulIdentifier", + "src": "38435:3:10" + }, + "nativeSrc": "38435:22:10", + "nodeType": "YulFunctionCall", + "src": "38435:22:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "38425:3:10", + "nodeType": "YulIdentifier", + "src": "38425:3:10" + }, + "nativeSrc": "38425:33:10", + "nodeType": "YulFunctionCall", + "src": "38425:33:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "38412:6:10", + "nodeType": "YulIdentifier", + "src": "38412:6:10" + }, + "nativeSrc": "38412:47:10", + "nodeType": "YulFunctionCall", + "src": "38412:47:10" + }, + "nativeSrc": "38412:47:10", + "nodeType": "YulExpressionStatement", + "src": "38412:47:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3528, + "isOffset": false, + "isSlot": false, + "src": "38086:4:10", + "valueSize": 1 + }, + { + "declaration": 3528, + "isOffset": false, + "isSlot": false, + "src": "38282:4:10", + "valueSize": 1 + }, + { + "declaration": 3528, + "isOffset": false, + "isSlot": false, + "src": "38339:4:10", + "valueSize": 1 + }, + { + "declaration": 3528, + "isOffset": false, + "isSlot": false, + "src": "38429:4:10", + "valueSize": 1 + }, + { + "declaration": 3528, + "isOffset": false, + "isSlot": false, + "src": "38451:4:10", + "valueSize": 1 + }, + { + "declaration": 3523, + "isOffset": false, + "isSlot": false, + "src": "38161:8:10", + "valueSize": 1 + }, + { + "declaration": 3523, + "isOffset": false, + "isSlot": false, + "src": "38272:8:10", + "valueSize": 1 + }, + { + "declaration": 3525, + "isOffset": false, + "isSlot": false, + "src": "38228:5:10", + "valueSize": 1 + }, + { + "declaration": 3525, + "isOffset": false, + "isSlot": false, + "src": "38239:5:10", + "valueSize": 1 + }, + { + "declaration": 3525, + "isOffset": false, + "isSlot": false, + "src": "38292:5:10", + "valueSize": 1 + }, + { + "declaration": 3525, + "isOffset": false, + "isSlot": false, + "src": "38356:5:10", + "valueSize": 1 + }, + { + "declaration": 3525, + "isOffset": false, + "isSlot": false, + "src": "38367:5:10", + "valueSize": 1 + } + ], + "id": 3530, + "nodeType": "InlineAssembly", + "src": "38063:426:10" + } + ] + }, + "documentation": { + "id": 3521, + "nodeType": "StructuredDocumentation", + "src": "37813:68:10", + "text": "@dev Equivalent to `argsOnClone(instance, start, 2 ** 256 - 1)`." + }, + "id": 3532, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "argsOnClone", + "nameLocation": "37895:11:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3526, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3523, + "mutability": "mutable", + "name": "instance", + "nameLocation": "37915:8:10", + "nodeType": "VariableDeclaration", + "scope": 3532, + "src": "37907:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3522, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "37907:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3525, + "mutability": "mutable", + "name": "start", + "nameLocation": "37933:5:10", + "nodeType": "VariableDeclaration", + "scope": 3532, + "src": "37925:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3524, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "37925:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "37906:33:10" + }, + "returnParameters": { + "id": 3529, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3528, + "mutability": "mutable", + "name": "args", + "nameLocation": "38000:4:10", + "nodeType": "VariableDeclaration", + "scope": 3532, + "src": "37987:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3527, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "37987:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "37986:19:10" + }, + "scope": 5104, + "src": "37886:609:10", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3545, + "nodeType": "Block", + "src": "39002:785:10", + "statements": [ + { + "AST": { + "nativeSrc": "39064:717:10", + "nodeType": "YulBlock", + "src": "39064:717:10", + "statements": [ + { + "nativeSrc": "39078:19:10", + "nodeType": "YulAssignment", + "src": "39078:19:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "39092:4:10", + "nodeType": "YulLiteral", + "src": "39092:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "39086:5:10", + "nodeType": "YulIdentifier", + "src": "39086:5:10" + }, + "nativeSrc": "39086:11:10", + "nodeType": "YulFunctionCall", + "src": "39086:11:10" + }, + "variableNames": [ + { + "name": "args", + "nativeSrc": "39078:4:10", + "nodeType": "YulIdentifier", + "src": "39078:4:10" + } + ] + }, + { + "body": { + "nativeSrc": "39137:17:10", + "nodeType": "YulBlock", + "src": "39137:17:10", + "statements": [ + { + "nativeSrc": "39139:13:10", + "nodeType": "YulAssignment", + "src": "39139:13:10", + "value": { + "kind": "number", + "nativeSrc": "39146:6:10", + "nodeType": "YulLiteral", + "src": "39146:6:10", + "type": "", + "value": "0xffff" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "39139:3:10", + "nodeType": "YulIdentifier", + "src": "39139:3:10" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "end", + "nativeSrc": "39123:3:10", + "nodeType": "YulIdentifier", + "src": "39123:3:10" + }, + { + "kind": "number", + "nativeSrc": "39128:6:10", + "nodeType": "YulLiteral", + "src": "39128:6:10", + "type": "", + "value": "0xffff" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "39120:2:10", + "nodeType": "YulIdentifier", + "src": "39120:2:10" + }, + "nativeSrc": "39120:15:10", + "nodeType": "YulFunctionCall", + "src": "39120:15:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "39113:6:10", + "nodeType": "YulIdentifier", + "src": "39113:6:10" + }, + "nativeSrc": "39113:23:10", + "nodeType": "YulFunctionCall", + "src": "39113:23:10" + }, + "nativeSrc": "39110:44:10", + "nodeType": "YulIf", + "src": "39110:44:10" + }, + { + "nativeSrc": "39167:45:10", + "nodeType": "YulVariableDeclaration", + "src": "39167:45:10", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "end", + "nativeSrc": "39184:3:10", + "nodeType": "YulIdentifier", + "src": "39184:3:10" + }, + { + "name": "start", + "nativeSrc": "39189:5:10", + "nodeType": "YulIdentifier", + "src": "39189:5:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "39180:3:10", + "nodeType": "YulIdentifier", + "src": "39180:3:10" + }, + "nativeSrc": "39180:15:10", + "nodeType": "YulFunctionCall", + "src": "39180:15:10" + }, + { + "arguments": [ + { + "name": "start", + "nativeSrc": "39200:5:10", + "nodeType": "YulIdentifier", + "src": "39200:5:10" + }, + { + "name": "end", + "nativeSrc": "39207:3:10", + "nodeType": "YulIdentifier", + "src": "39207:3:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "39197:2:10", + "nodeType": "YulIdentifier", + "src": "39197:2:10" + }, + "nativeSrc": "39197:14:10", + "nodeType": "YulFunctionCall", + "src": "39197:14:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "39176:3:10", + "nodeType": "YulIdentifier", + "src": "39176:3:10" + }, + "nativeSrc": "39176:36:10", + "nodeType": "YulFunctionCall", + "src": "39176:36:10" + }, + "variables": [ + { + "name": "d", + "nativeSrc": "39171:1:10", + "nodeType": "YulTypedName", + "src": "39171:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "39237:8:10", + "nodeType": "YulIdentifier", + "src": "39237:8:10" + }, + { + "name": "args", + "nativeSrc": "39247:4:10", + "nodeType": "YulIdentifier", + "src": "39247:4:10" + }, + { + "arguments": [ + { + "name": "start", + "nativeSrc": "39257:5:10", + "nodeType": "YulIdentifier", + "src": "39257:5:10" + }, + { + "kind": "number", + "nativeSrc": "39264:4:10", + "nodeType": "YulLiteral", + "src": "39264:4:10", + "type": "", + "value": "0x0d" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "39253:3:10", + "nodeType": "YulIdentifier", + "src": "39253:3:10" + }, + "nativeSrc": "39253:16:10", + "nodeType": "YulFunctionCall", + "src": "39253:16:10" + }, + { + "arguments": [ + { + "name": "d", + "nativeSrc": "39275:1:10", + "nodeType": "YulIdentifier", + "src": "39275:1:10" + }, + { + "kind": "number", + "nativeSrc": "39278:4:10", + "nodeType": "YulLiteral", + "src": "39278:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "39271:3:10", + "nodeType": "YulIdentifier", + "src": "39271:3:10" + }, + "nativeSrc": "39271:12:10", + "nodeType": "YulFunctionCall", + "src": "39271:12:10" + } + ], + "functionName": { + "name": "extcodecopy", + "nativeSrc": "39225:11:10", + "nodeType": "YulIdentifier", + "src": "39225:11:10" + }, + "nativeSrc": "39225:59:10", + "nodeType": "YulFunctionCall", + "src": "39225:59:10" + }, + "nativeSrc": "39225:59:10", + "nodeType": "YulExpressionStatement", + "src": "39225:59:10" + }, + { + "body": { + "nativeSrc": "39339:229:10", + "nodeType": "YulBlock", + "src": "39339:229:10", + "statements": [ + { + "nativeSrc": "39357:41:10", + "nodeType": "YulVariableDeclaration", + "src": "39357:41:10", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "39382:8:10", + "nodeType": "YulIdentifier", + "src": "39382:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "39370:11:10", + "nodeType": "YulIdentifier", + "src": "39370:11:10" + }, + "nativeSrc": "39370:21:10", + "nodeType": "YulFunctionCall", + "src": "39370:21:10" + }, + { + "kind": "number", + "nativeSrc": "39393:4:10", + "nodeType": "YulLiteral", + "src": "39393:4:10", + "type": "", + "value": "0x2d" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "39366:3:10", + "nodeType": "YulIdentifier", + "src": "39366:3:10" + }, + "nativeSrc": "39366:32:10", + "nodeType": "YulFunctionCall", + "src": "39366:32:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "39361:1:10", + "nodeType": "YulTypedName", + "src": "39361:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "39430:14:10", + "nodeType": "YulIdentifier", + "src": "39430:14:10" + }, + "nativeSrc": "39430:16:10", + "nodeType": "YulFunctionCall", + "src": "39430:16:10" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "39448:14:10", + "nodeType": "YulIdentifier", + "src": "39448:14:10" + }, + "nativeSrc": "39448:16:10", + "nodeType": "YulFunctionCall", + "src": "39448:16:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "39470:2:10", + "nodeType": "YulLiteral", + "src": "39470:2:10", + "type": "", + "value": "40" + }, + { + "name": "n", + "nativeSrc": "39474:1:10", + "nodeType": "YulIdentifier", + "src": "39474:1:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "39466:3:10", + "nodeType": "YulIdentifier", + "src": "39466:3:10" + }, + "nativeSrc": "39466:10:10", + "nodeType": "YulFunctionCall", + "src": "39466:10:10" + } + ], + "functionName": { + "name": "returndatacopy", + "nativeSrc": "39415:14:10", + "nodeType": "YulIdentifier", + "src": "39415:14:10" + }, + "nativeSrc": "39415:62:10", + "nodeType": "YulFunctionCall", + "src": "39415:62:10" + }, + "nativeSrc": "39415:62:10", + "nodeType": "YulExpressionStatement", + "src": "39415:62:10" + }, + { + "nativeSrc": "39494:60:10", + "nodeType": "YulAssignment", + "src": "39494:60:10", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "n", + "nativeSrc": "39506:1:10", + "nodeType": "YulIdentifier", + "src": "39506:1:10" + }, + { + "name": "start", + "nativeSrc": "39509:5:10", + "nodeType": "YulIdentifier", + "src": "39509:5:10" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "39503:2:10", + "nodeType": "YulIdentifier", + "src": "39503:2:10" + }, + "nativeSrc": "39503:12:10", + "nodeType": "YulFunctionCall", + "src": "39503:12:10" + }, + { + "arguments": [ + { + "name": "d", + "nativeSrc": "39521:1:10", + "nodeType": "YulIdentifier", + "src": "39521:1:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "end", + "nativeSrc": "39531:3:10", + "nodeType": "YulIdentifier", + "src": "39531:3:10" + }, + { + "name": "n", + "nativeSrc": "39536:1:10", + "nodeType": "YulIdentifier", + "src": "39536:1:10" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "39528:2:10", + "nodeType": "YulIdentifier", + "src": "39528:2:10" + }, + "nativeSrc": "39528:10:10", + "nodeType": "YulFunctionCall", + "src": "39528:10:10" + }, + { + "arguments": [ + { + "name": "end", + "nativeSrc": "39544:3:10", + "nodeType": "YulIdentifier", + "src": "39544:3:10" + }, + { + "name": "n", + "nativeSrc": "39549:1:10", + "nodeType": "YulIdentifier", + "src": "39549:1:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "39540:3:10", + "nodeType": "YulIdentifier", + "src": "39540:3:10" + }, + "nativeSrc": "39540:11:10", + "nodeType": "YulFunctionCall", + "src": "39540:11:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "39524:3:10", + "nodeType": "YulIdentifier", + "src": "39524:3:10" + }, + "nativeSrc": "39524:28:10", + "nodeType": "YulFunctionCall", + "src": "39524:28:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "39517:3:10", + "nodeType": "YulIdentifier", + "src": "39517:3:10" + }, + "nativeSrc": "39517:36:10", + "nodeType": "YulFunctionCall", + "src": "39517:36:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "39499:3:10", + "nodeType": "YulIdentifier", + "src": "39499:3:10" + }, + "nativeSrc": "39499:55:10", + "nodeType": "YulFunctionCall", + "src": "39499:55:10" + }, + "variableNames": [ + { + "name": "d", + "nativeSrc": "39494:1:10", + "nodeType": "YulIdentifier", + "src": "39494:1:10" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "39311:4:10", + "nodeType": "YulLiteral", + "src": "39311:4:10", + "type": "", + "value": "0xff" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "39327:4:10", + "nodeType": "YulIdentifier", + "src": "39327:4:10" + }, + { + "name": "d", + "nativeSrc": "39333:1:10", + "nodeType": "YulIdentifier", + "src": "39333:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "39323:3:10", + "nodeType": "YulIdentifier", + "src": "39323:3:10" + }, + "nativeSrc": "39323:12:10", + "nodeType": "YulFunctionCall", + "src": "39323:12:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "39317:5:10", + "nodeType": "YulIdentifier", + "src": "39317:5:10" + }, + "nativeSrc": "39317:19:10", + "nodeType": "YulFunctionCall", + "src": "39317:19:10" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "39307:3:10", + "nodeType": "YulIdentifier", + "src": "39307:3:10" + }, + "nativeSrc": "39307:30:10", + "nodeType": "YulFunctionCall", + "src": "39307:30:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "39300:6:10", + "nodeType": "YulIdentifier", + "src": "39300:6:10" + }, + "nativeSrc": "39300:38:10", + "nodeType": "YulFunctionCall", + "src": "39300:38:10" + }, + "nativeSrc": "39297:271:10", + "nodeType": "YulIf", + "src": "39297:271:10" + }, + { + "expression": { + "arguments": [ + { + "name": "args", + "nativeSrc": "39588:4:10", + "nodeType": "YulIdentifier", + "src": "39588:4:10" + }, + { + "name": "d", + "nativeSrc": "39594:1:10", + "nodeType": "YulIdentifier", + "src": "39594:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "39581:6:10", + "nodeType": "YulIdentifier", + "src": "39581:6:10" + }, + "nativeSrc": "39581:15:10", + "nodeType": "YulFunctionCall", + "src": "39581:15:10" + }, + "nativeSrc": "39581:15:10", + "nodeType": "YulExpressionStatement", + "src": "39581:15:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "39645:4:10", + "nodeType": "YulIdentifier", + "src": "39645:4:10" + }, + { + "kind": "number", + "nativeSrc": "39651:4:10", + "nodeType": "YulLiteral", + "src": "39651:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "39641:3:10", + "nodeType": "YulIdentifier", + "src": "39641:3:10" + }, + "nativeSrc": "39641:15:10", + "nodeType": "YulFunctionCall", + "src": "39641:15:10" + }, + { + "name": "d", + "nativeSrc": "39658:1:10", + "nodeType": "YulIdentifier", + "src": "39658:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "39637:3:10", + "nodeType": "YulIdentifier", + "src": "39637:3:10" + }, + "nativeSrc": "39637:23:10", + "nodeType": "YulFunctionCall", + "src": "39637:23:10" + }, + { + "kind": "number", + "nativeSrc": "39662:1:10", + "nodeType": "YulLiteral", + "src": "39662:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "39630:6:10", + "nodeType": "YulIdentifier", + "src": "39630:6:10" + }, + "nativeSrc": "39630:34:10", + "nodeType": "YulFunctionCall", + "src": "39630:34:10" + }, + "nativeSrc": "39630:34:10", + "nodeType": "YulExpressionStatement", + "src": "39630:34:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "39721:4:10", + "nodeType": "YulLiteral", + "src": "39721:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "39735:4:10", + "nodeType": "YulIdentifier", + "src": "39735:4:10" + }, + { + "kind": "number", + "nativeSrc": "39741:4:10", + "nodeType": "YulLiteral", + "src": "39741:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "39731:3:10", + "nodeType": "YulIdentifier", + "src": "39731:3:10" + }, + "nativeSrc": "39731:15:10", + "nodeType": "YulFunctionCall", + "src": "39731:15:10" + }, + { + "name": "d", + "nativeSrc": "39748:1:10", + "nodeType": "YulIdentifier", + "src": "39748:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "39727:3:10", + "nodeType": "YulIdentifier", + "src": "39727:3:10" + }, + "nativeSrc": "39727:23:10", + "nodeType": "YulFunctionCall", + "src": "39727:23:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "39714:6:10", + "nodeType": "YulIdentifier", + "src": "39714:6:10" + }, + "nativeSrc": "39714:37:10", + "nodeType": "YulFunctionCall", + "src": "39714:37:10" + }, + "nativeSrc": "39714:37:10", + "nodeType": "YulExpressionStatement", + "src": "39714:37:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3542, + "isOffset": false, + "isSlot": false, + "src": "39078:4:10", + "valueSize": 1 + }, + { + "declaration": 3542, + "isOffset": false, + "isSlot": false, + "src": "39247:4:10", + "valueSize": 1 + }, + { + "declaration": 3542, + "isOffset": false, + "isSlot": false, + "src": "39327:4:10", + "valueSize": 1 + }, + { + "declaration": 3542, + "isOffset": false, + "isSlot": false, + "src": "39588:4:10", + "valueSize": 1 + }, + { + "declaration": 3542, + "isOffset": false, + "isSlot": false, + "src": "39645:4:10", + "valueSize": 1 + }, + { + "declaration": 3542, + "isOffset": false, + "isSlot": false, + "src": "39735:4:10", + "valueSize": 1 + }, + { + "declaration": 3539, + "isOffset": false, + "isSlot": false, + "src": "39123:3:10", + "valueSize": 1 + }, + { + "declaration": 3539, + "isOffset": false, + "isSlot": false, + "src": "39139:3:10", + "valueSize": 1 + }, + { + "declaration": 3539, + "isOffset": false, + "isSlot": false, + "src": "39184:3:10", + "valueSize": 1 + }, + { + "declaration": 3539, + "isOffset": false, + "isSlot": false, + "src": "39207:3:10", + "valueSize": 1 + }, + { + "declaration": 3539, + "isOffset": false, + "isSlot": false, + "src": "39531:3:10", + "valueSize": 1 + }, + { + "declaration": 3539, + "isOffset": false, + "isSlot": false, + "src": "39544:3:10", + "valueSize": 1 + }, + { + "declaration": 3535, + "isOffset": false, + "isSlot": false, + "src": "39237:8:10", + "valueSize": 1 + }, + { + "declaration": 3535, + "isOffset": false, + "isSlot": false, + "src": "39382:8:10", + "valueSize": 1 + }, + { + "declaration": 3537, + "isOffset": false, + "isSlot": false, + "src": "39189:5:10", + "valueSize": 1 + }, + { + "declaration": 3537, + "isOffset": false, + "isSlot": false, + "src": "39200:5:10", + "valueSize": 1 + }, + { + "declaration": 3537, + "isOffset": false, + "isSlot": false, + "src": "39257:5:10", + "valueSize": 1 + }, + { + "declaration": 3537, + "isOffset": false, + "isSlot": false, + "src": "39509:5:10", + "valueSize": 1 + } + ], + "id": 3544, + "nodeType": "InlineAssembly", + "src": "39055:726:10" + } + ] + }, + "documentation": { + "id": 3533, + "nodeType": "StructuredDocumentation", + "src": "38501:359:10", + "text": "@dev Returns a slice of the immutable arguments on `instance` from `start` to `end`.\n `start` and `end` will be clamped to the range `[0, args.length]`.\n The `instance` MUST be deployed via the clone with immutable args functions.\n Otherwise, the behavior is undefined.\n Out-of-gas reverts if `instance` does not have any code." + }, + "id": 3546, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "argsOnClone", + "nameLocation": "38874:11:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3540, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3535, + "mutability": "mutable", + "name": "instance", + "nameLocation": "38894:8:10", + "nodeType": "VariableDeclaration", + "scope": 3546, + "src": "38886:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3534, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "38886:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3537, + "mutability": "mutable", + "name": "start", + "nameLocation": "38912:5:10", + "nodeType": "VariableDeclaration", + "scope": 3546, + "src": "38904:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3536, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "38904:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3539, + "mutability": "mutable", + "name": "end", + "nameLocation": "38927:3:10", + "nodeType": "VariableDeclaration", + "scope": 3546, + "src": "38919:11:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3538, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "38919:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "38885:46:10" + }, + "returnParameters": { + "id": 3543, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3542, + "mutability": "mutable", + "name": "args", + "nameLocation": "38992:4:10", + "nodeType": "VariableDeclaration", + "scope": 3546, + "src": "38979:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3541, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "38979:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "38978:19:10" + }, + "scope": 5104, + "src": "38865:922:10", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3561, + "nodeType": "Block", + "src": "40397:60:10", + "statements": [ + { + "expression": { + "id": 3559, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3554, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3552, + "src": "40407:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 3556, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "40432:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 3557, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3549, + "src": "40435:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3555, + "name": "deployERC1967", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3562, + 3574, + 3708, + 3722 + ], + "referencedDeclaration": 3574, + "src": "40418:13:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$_t_address_$", + "typeString": "function (uint256,address) returns (address)" + } + }, + "id": 3558, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "40418:32:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "40407:43:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3560, + "nodeType": "ExpressionStatement", + "src": "40407:43:10" + } + ] + }, + "documentation": { + "id": 3547, + "nodeType": "StructuredDocumentation", + "src": "40246:63:10", + "text": "@dev Deploys a minimal ERC1967 proxy with `implementation`." + }, + "id": 3562, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployERC1967", + "nameLocation": "40323:13:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3550, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3549, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "40345:14:10", + "nodeType": "VariableDeclaration", + "scope": 3562, + "src": "40337:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3548, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "40337:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "40336:24:10" + }, + "returnParameters": { + "id": 3553, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3552, + "mutability": "mutable", + "name": "instance", + "nameLocation": "40387:8:10", + "nodeType": "VariableDeclaration", + "scope": 3562, + "src": "40379:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3551, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "40379:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "40378:18:10" + }, + "scope": 5104, + "src": "40314:143:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3573, + "nodeType": "Block", + "src": "40697:6584:10", + "statements": [ + { + "AST": { + "nativeSrc": "40759:6516:10", + "nodeType": "YulBlock", + "src": "40759:6516:10", + "statements": [ + { + "nativeSrc": "46587:20:10", + "nodeType": "YulVariableDeclaration", + "src": "46587:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "46602:4:10", + "nodeType": "YulLiteral", + "src": "46602:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "46596:5:10", + "nodeType": "YulIdentifier", + "src": "46596:5:10" + }, + "nativeSrc": "46596:11:10", + "nodeType": "YulFunctionCall", + "src": "46596:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "46591:1:10", + "nodeType": "YulTypedName", + "src": "46591:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "46661:4:10", + "nodeType": "YulLiteral", + "src": "46661:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "46667:66:10", + "nodeType": "YulLiteral", + "src": "46667:66:10", + "type": "", + "value": "0xcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "46654:6:10", + "nodeType": "YulIdentifier", + "src": "46654:6:10" + }, + "nativeSrc": "46654:80:10", + "nodeType": "YulFunctionCall", + "src": "46654:80:10" + }, + "nativeSrc": "46654:80:10", + "nodeType": "YulExpressionStatement", + "src": "46654:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "46754:4:10", + "nodeType": "YulLiteral", + "src": "46754:4:10", + "type": "", + "value": "0x40" + }, + { + "kind": "number", + "nativeSrc": "46760:66:10", + "nodeType": "YulLiteral", + "src": "46760:66:10", + "type": "", + "value": "0x5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "46747:6:10", + "nodeType": "YulIdentifier", + "src": "46747:6:10" + }, + "nativeSrc": "46747:80:10", + "nodeType": "YulFunctionCall", + "src": "46747:80:10" + }, + "nativeSrc": "46747:80:10", + "nodeType": "YulExpressionStatement", + "src": "46747:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "46847:4:10", + "nodeType": "YulLiteral", + "src": "46847:4:10", + "type": "", + "value": "0x20" + }, + { + "kind": "number", + "nativeSrc": "46853:6:10", + "nodeType": "YulLiteral", + "src": "46853:6:10", + "type": "", + "value": "0x6009" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "46840:6:10", + "nodeType": "YulIdentifier", + "src": "46840:6:10" + }, + "nativeSrc": "46840:20:10", + "nodeType": "YulFunctionCall", + "src": "46840:20:10" + }, + "nativeSrc": "46840:20:10", + "nodeType": "YulExpressionStatement", + "src": "46840:20:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "46880:4:10", + "nodeType": "YulLiteral", + "src": "46880:4:10", + "type": "", + "value": "0x1e" + }, + { + "name": "implementation", + "nativeSrc": "46886:14:10", + "nodeType": "YulIdentifier", + "src": "46886:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "46873:6:10", + "nodeType": "YulIdentifier", + "src": "46873:6:10" + }, + "nativeSrc": "46873:28:10", + "nodeType": "YulFunctionCall", + "src": "46873:28:10" + }, + "nativeSrc": "46873:28:10", + "nodeType": "YulExpressionStatement", + "src": "46873:28:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "46921:4:10", + "nodeType": "YulLiteral", + "src": "46921:4:10", + "type": "", + "value": "0x0a" + }, + { + "kind": "number", + "nativeSrc": "46927:20:10", + "nodeType": "YulLiteral", + "src": "46927:20:10", + "type": "", + "value": "0x603d3d8160223d3973" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "46914:6:10", + "nodeType": "YulIdentifier", + "src": "46914:6:10" + }, + "nativeSrc": "46914:34:10", + "nodeType": "YulFunctionCall", + "src": "46914:34:10" + }, + "nativeSrc": "46914:34:10", + "nodeType": "YulExpressionStatement", + "src": "46914:34:10" + }, + { + "nativeSrc": "46961:37:10", + "nodeType": "YulAssignment", + "src": "46961:37:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "46980:5:10", + "nodeType": "YulIdentifier", + "src": "46980:5:10" + }, + { + "kind": "number", + "nativeSrc": "46987:4:10", + "nodeType": "YulLiteral", + "src": "46987:4:10", + "type": "", + "value": "0x21" + }, + { + "kind": "number", + "nativeSrc": "46993:4:10", + "nodeType": "YulLiteral", + "src": "46993:4:10", + "type": "", + "value": "0x5f" + } + ], + "functionName": { + "name": "create", + "nativeSrc": "46973:6:10", + "nodeType": "YulIdentifier", + "src": "46973:6:10" + }, + "nativeSrc": "46973:25:10", + "nodeType": "YulFunctionCall", + "src": "46973:25:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "46961:8:10", + "nodeType": "YulIdentifier", + "src": "46961:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "47031:116:10", + "nodeType": "YulBlock", + "src": "47031:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "47056:4:10", + "nodeType": "YulLiteral", + "src": "47056:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "47062:10:10", + "nodeType": "YulLiteral", + "src": "47062:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "47049:6:10", + "nodeType": "YulIdentifier", + "src": "47049:6:10" + }, + "nativeSrc": "47049:24:10", + "nodeType": "YulFunctionCall", + "src": "47049:24:10" + }, + "nativeSrc": "47049:24:10", + "nodeType": "YulExpressionStatement", + "src": "47049:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "47122:4:10", + "nodeType": "YulLiteral", + "src": "47122:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "47128:4:10", + "nodeType": "YulLiteral", + "src": "47128:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "47115:6:10", + "nodeType": "YulIdentifier", + "src": "47115:6:10" + }, + "nativeSrc": "47115:18:10", + "nodeType": "YulFunctionCall", + "src": "47115:18:10" + }, + "nativeSrc": "47115:18:10", + "nodeType": "YulExpressionStatement", + "src": "47115:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "47021:8:10", + "nodeType": "YulIdentifier", + "src": "47021:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "47014:6:10", + "nodeType": "YulIdentifier", + "src": "47014:6:10" + }, + "nativeSrc": "47014:16:10", + "nodeType": "YulFunctionCall", + "src": "47014:16:10" + }, + "nativeSrc": "47011:136:10", + "nodeType": "YulIf", + "src": "47011:136:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "47167:4:10", + "nodeType": "YulLiteral", + "src": "47167:4:10", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "47173:1:10", + "nodeType": "YulIdentifier", + "src": "47173:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "47160:6:10", + "nodeType": "YulIdentifier", + "src": "47160:6:10" + }, + "nativeSrc": "47160:15:10", + "nodeType": "YulFunctionCall", + "src": "47160:15:10" + }, + "nativeSrc": "47160:15:10", + "nodeType": "YulExpressionStatement", + "src": "47160:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "47231:4:10", + "nodeType": "YulLiteral", + "src": "47231:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "47237:1:10", + "nodeType": "YulLiteral", + "src": "47237:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "47224:6:10", + "nodeType": "YulIdentifier", + "src": "47224:6:10" + }, + "nativeSrc": "47224:15:10", + "nodeType": "YulFunctionCall", + "src": "47224:15:10" + }, + "nativeSrc": "47224:15:10", + "nodeType": "YulExpressionStatement", + "src": "47224:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3567, + "isOffset": false, + "isSlot": false, + "src": "46886:14:10", + "valueSize": 1 + }, + { + "declaration": 3570, + "isOffset": false, + "isSlot": false, + "src": "46961:8:10", + "valueSize": 1 + }, + { + "declaration": 3570, + "isOffset": false, + "isSlot": false, + "src": "47021:8:10", + "valueSize": 1 + }, + { + "declaration": 3565, + "isOffset": false, + "isSlot": false, + "src": "46980:5:10", + "valueSize": 1 + } + ], + "id": 3572, + "nodeType": "InlineAssembly", + "src": "40750:6525:10" + } + ] + }, + "documentation": { + "id": 3563, + "nodeType": "StructuredDocumentation", + "src": "40463:111:10", + "text": "@dev Deploys a minimal ERC1967 proxy with `implementation`.\n Deposits `value` ETH during deployment." + }, + "id": 3574, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployERC1967", + "nameLocation": "40588:13:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3568, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3565, + "mutability": "mutable", + "name": "value", + "nameLocation": "40610:5:10", + "nodeType": "VariableDeclaration", + "scope": 3574, + "src": "40602:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3564, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "40602:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3567, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "40625:14:10", + "nodeType": "VariableDeclaration", + "scope": 3574, + "src": "40617:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3566, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "40617:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "40601:39:10" + }, + "returnParameters": { + "id": 3571, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3570, + "mutability": "mutable", + "name": "instance", + "nameLocation": "40683:8:10", + "nodeType": "VariableDeclaration", + "scope": 3574, + "src": "40675:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3569, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "40675:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "40674:18:10" + }, + "scope": 5104, + "src": "40579:6702:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3592, + "nodeType": "Block", + "src": "47510:79:10", + "statements": [ + { + "expression": { + "id": 3590, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3584, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3582, + "src": "47520:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 3586, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "47558:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 3587, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3577, + "src": "47561:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3588, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3579, + "src": "47577:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3585, + "name": "deployDeterministicERC1967", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3593, + 3607, + 3744, + 3760 + ], + "referencedDeclaration": 3607, + "src": "47531:26:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (uint256,address,bytes32) returns (address)" + } + }, + "id": 3589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "47531:51:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "47520:62:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3591, + "nodeType": "ExpressionStatement", + "src": "47520:62:10" + } + ] + }, + "documentation": { + "id": 3575, + "nodeType": "StructuredDocumentation", + "src": "47287:88:10", + "text": "@dev Deploys a deterministic minimal ERC1967 proxy with `implementation` and `salt`." + }, + "id": 3593, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployDeterministicERC1967", + "nameLocation": "47389:26:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3580, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3577, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "47424:14:10", + "nodeType": "VariableDeclaration", + "scope": 3593, + "src": "47416:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3576, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "47416:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3579, + "mutability": "mutable", + "name": "salt", + "nameLocation": "47448:4:10", + "nodeType": "VariableDeclaration", + "scope": 3593, + "src": "47440:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3578, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "47440:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "47415:38:10" + }, + "returnParameters": { + "id": 3583, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3582, + "mutability": "mutable", + "name": "instance", + "nameLocation": "47496:8:10", + "nodeType": "VariableDeclaration", + "scope": 3593, + "src": "47488:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3581, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "47488:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "47487:18:10" + }, + "scope": 5104, + "src": "47380:209:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3606, + "nodeType": "Block", + "src": "47881:777:10", + "statements": [ + { + "AST": { + "nativeSrc": "47943:709:10", + "nodeType": "YulBlock", + "src": "47943:709:10", + "statements": [ + { + "nativeSrc": "47957:20:10", + "nodeType": "YulVariableDeclaration", + "src": "47957:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "47972:4:10", + "nodeType": "YulLiteral", + "src": "47972:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "47966:5:10", + "nodeType": "YulIdentifier", + "src": "47966:5:10" + }, + "nativeSrc": "47966:11:10", + "nodeType": "YulFunctionCall", + "src": "47966:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "47961:1:10", + "nodeType": "YulTypedName", + "src": "47961:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "48031:4:10", + "nodeType": "YulLiteral", + "src": "48031:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "48037:66:10", + "nodeType": "YulLiteral", + "src": "48037:66:10", + "type": "", + "value": "0xcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "48024:6:10", + "nodeType": "YulIdentifier", + "src": "48024:6:10" + }, + "nativeSrc": "48024:80:10", + "nodeType": "YulFunctionCall", + "src": "48024:80:10" + }, + "nativeSrc": "48024:80:10", + "nodeType": "YulExpressionStatement", + "src": "48024:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "48124:4:10", + "nodeType": "YulLiteral", + "src": "48124:4:10", + "type": "", + "value": "0x40" + }, + { + "kind": "number", + "nativeSrc": "48130:66:10", + "nodeType": "YulLiteral", + "src": "48130:66:10", + "type": "", + "value": "0x5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "48117:6:10", + "nodeType": "YulIdentifier", + "src": "48117:6:10" + }, + "nativeSrc": "48117:80:10", + "nodeType": "YulFunctionCall", + "src": "48117:80:10" + }, + "nativeSrc": "48117:80:10", + "nodeType": "YulExpressionStatement", + "src": "48117:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "48217:4:10", + "nodeType": "YulLiteral", + "src": "48217:4:10", + "type": "", + "value": "0x20" + }, + { + "kind": "number", + "nativeSrc": "48223:6:10", + "nodeType": "YulLiteral", + "src": "48223:6:10", + "type": "", + "value": "0x6009" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "48210:6:10", + "nodeType": "YulIdentifier", + "src": "48210:6:10" + }, + "nativeSrc": "48210:20:10", + "nodeType": "YulFunctionCall", + "src": "48210:20:10" + }, + "nativeSrc": "48210:20:10", + "nodeType": "YulExpressionStatement", + "src": "48210:20:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "48250:4:10", + "nodeType": "YulLiteral", + "src": "48250:4:10", + "type": "", + "value": "0x1e" + }, + { + "name": "implementation", + "nativeSrc": "48256:14:10", + "nodeType": "YulIdentifier", + "src": "48256:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "48243:6:10", + "nodeType": "YulIdentifier", + "src": "48243:6:10" + }, + "nativeSrc": "48243:28:10", + "nodeType": "YulFunctionCall", + "src": "48243:28:10" + }, + "nativeSrc": "48243:28:10", + "nodeType": "YulExpressionStatement", + "src": "48243:28:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "48291:4:10", + "nodeType": "YulLiteral", + "src": "48291:4:10", + "type": "", + "value": "0x0a" + }, + { + "kind": "number", + "nativeSrc": "48297:20:10", + "nodeType": "YulLiteral", + "src": "48297:20:10", + "type": "", + "value": "0x603d3d8160223d3973" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "48284:6:10", + "nodeType": "YulIdentifier", + "src": "48284:6:10" + }, + "nativeSrc": "48284:34:10", + "nodeType": "YulFunctionCall", + "src": "48284:34:10" + }, + "nativeSrc": "48284:34:10", + "nodeType": "YulExpressionStatement", + "src": "48284:34:10" + }, + { + "nativeSrc": "48331:44:10", + "nodeType": "YulAssignment", + "src": "48331:44:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "48351:5:10", + "nodeType": "YulIdentifier", + "src": "48351:5:10" + }, + { + "kind": "number", + "nativeSrc": "48358:4:10", + "nodeType": "YulLiteral", + "src": "48358:4:10", + "type": "", + "value": "0x21" + }, + { + "kind": "number", + "nativeSrc": "48364:4:10", + "nodeType": "YulLiteral", + "src": "48364:4:10", + "type": "", + "value": "0x5f" + }, + { + "name": "salt", + "nativeSrc": "48370:4:10", + "nodeType": "YulIdentifier", + "src": "48370:4:10" + } + ], + "functionName": { + "name": "create2", + "nativeSrc": "48343:7:10", + "nodeType": "YulIdentifier", + "src": "48343:7:10" + }, + "nativeSrc": "48343:32:10", + "nodeType": "YulFunctionCall", + "src": "48343:32:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "48331:8:10", + "nodeType": "YulIdentifier", + "src": "48331:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "48408:116:10", + "nodeType": "YulBlock", + "src": "48408:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "48433:4:10", + "nodeType": "YulLiteral", + "src": "48433:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "48439:10:10", + "nodeType": "YulLiteral", + "src": "48439:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "48426:6:10", + "nodeType": "YulIdentifier", + "src": "48426:6:10" + }, + "nativeSrc": "48426:24:10", + "nodeType": "YulFunctionCall", + "src": "48426:24:10" + }, + "nativeSrc": "48426:24:10", + "nodeType": "YulExpressionStatement", + "src": "48426:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "48499:4:10", + "nodeType": "YulLiteral", + "src": "48499:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "48505:4:10", + "nodeType": "YulLiteral", + "src": "48505:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "48492:6:10", + "nodeType": "YulIdentifier", + "src": "48492:6:10" + }, + "nativeSrc": "48492:18:10", + "nodeType": "YulFunctionCall", + "src": "48492:18:10" + }, + "nativeSrc": "48492:18:10", + "nodeType": "YulExpressionStatement", + "src": "48492:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "48398:8:10", + "nodeType": "YulIdentifier", + "src": "48398:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "48391:6:10", + "nodeType": "YulIdentifier", + "src": "48391:6:10" + }, + "nativeSrc": "48391:16:10", + "nodeType": "YulFunctionCall", + "src": "48391:16:10" + }, + "nativeSrc": "48388:136:10", + "nodeType": "YulIf", + "src": "48388:136:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "48544:4:10", + "nodeType": "YulLiteral", + "src": "48544:4:10", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "48550:1:10", + "nodeType": "YulIdentifier", + "src": "48550:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "48537:6:10", + "nodeType": "YulIdentifier", + "src": "48537:6:10" + }, + "nativeSrc": "48537:15:10", + "nodeType": "YulFunctionCall", + "src": "48537:15:10" + }, + "nativeSrc": "48537:15:10", + "nodeType": "YulExpressionStatement", + "src": "48537:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "48608:4:10", + "nodeType": "YulLiteral", + "src": "48608:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "48614:1:10", + "nodeType": "YulLiteral", + "src": "48614:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "48601:6:10", + "nodeType": "YulIdentifier", + "src": "48601:6:10" + }, + "nativeSrc": "48601:15:10", + "nodeType": "YulFunctionCall", + "src": "48601:15:10" + }, + "nativeSrc": "48601:15:10", + "nodeType": "YulExpressionStatement", + "src": "48601:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3598, + "isOffset": false, + "isSlot": false, + "src": "48256:14:10", + "valueSize": 1 + }, + { + "declaration": 3603, + "isOffset": false, + "isSlot": false, + "src": "48331:8:10", + "valueSize": 1 + }, + { + "declaration": 3603, + "isOffset": false, + "isSlot": false, + "src": "48398:8:10", + "valueSize": 1 + }, + { + "declaration": 3600, + "isOffset": false, + "isSlot": false, + "src": "48370:4:10", + "valueSize": 1 + }, + { + "declaration": 3596, + "isOffset": false, + "isSlot": false, + "src": "48351:5:10", + "valueSize": 1 + } + ], + "id": 3605, + "nodeType": "InlineAssembly", + "src": "47934:718:10" + } + ] + }, + "documentation": { + "id": 3594, + "nodeType": "StructuredDocumentation", + "src": "47595:136:10", + "text": "@dev Deploys a deterministic minimal ERC1967 proxy with `implementation` and `salt`.\n Deposits `value` ETH during deployment." + }, + "id": 3607, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployDeterministicERC1967", + "nameLocation": "47745:26:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3601, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3596, + "mutability": "mutable", + "name": "value", + "nameLocation": "47780:5:10", + "nodeType": "VariableDeclaration", + "scope": 3607, + "src": "47772:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3595, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "47772:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3598, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "47795:14:10", + "nodeType": "VariableDeclaration", + "scope": 3607, + "src": "47787:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3597, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "47787:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3600, + "mutability": "mutable", + "name": "salt", + "nameLocation": "47819:4:10", + "nodeType": "VariableDeclaration", + "scope": 3607, + "src": "47811:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3599, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "47811:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "47771:53:10" + }, + "returnParameters": { + "id": 3604, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3603, + "mutability": "mutable", + "name": "instance", + "nameLocation": "47867:8:10", + "nodeType": "VariableDeclaration", + "scope": 3607, + "src": "47859:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3602, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "47859:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "47858:18:10" + }, + "scope": 5104, + "src": "47736:922:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3625, + "nodeType": "Block", + "src": "49052:75:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "30", + "id": 3620, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "49096:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 3621, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3610, + "src": "49099:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3622, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3612, + "src": "49115:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3619, + "name": "createDeterministicERC1967", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3626, + 3642, + 3782, + 3800 + ], + "referencedDeclaration": 3642, + "src": "49069:26:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$_t_bool_$_t_address_$", + "typeString": "function (uint256,address,bytes32) returns (bool,address)" + } + }, + "id": 3623, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "49069:51:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_address_$", + "typeString": "tuple(bool,address)" + } + }, + "functionReturnParameters": 3618, + "id": 3624, + "nodeType": "Return", + "src": "49062:58:10" + } + ] + }, + "documentation": { + "id": 3608, + "nodeType": "StructuredDocumentation", + "src": "48664:231:10", + "text": "@dev Creates a deterministic minimal ERC1967 proxy with `implementation` and `salt`.\n Note: This method is intended for use in ERC4337 factories,\n which are expected to NOT revert if the proxy is already deployed." + }, + "id": 3626, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createDeterministicERC1967", + "nameLocation": "48909:26:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3613, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3610, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "48944:14:10", + "nodeType": "VariableDeclaration", + "scope": 3626, + "src": "48936:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3609, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "48936:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3612, + "mutability": "mutable", + "name": "salt", + "nameLocation": "48968:4:10", + "nodeType": "VariableDeclaration", + "scope": 3626, + "src": "48960:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3611, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "48960:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "48935:38:10" + }, + "returnParameters": { + "id": 3618, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3615, + "mutability": "mutable", + "name": "alreadyDeployed", + "nameLocation": "49013:15:10", + "nodeType": "VariableDeclaration", + "scope": 3626, + "src": "49008:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3614, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "49008:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3617, + "mutability": "mutable", + "name": "instance", + "nameLocation": "49038:8:10", + "nodeType": "VariableDeclaration", + "scope": 3626, + "src": "49030:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3616, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "49030:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "49007:40:10" + }, + "scope": 5104, + "src": "48900:227:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3641, + "nodeType": "Block", + "src": "49584:1558:10", + "statements": [ + { + "AST": { + "nativeSrc": "49646:1490:10", + "nodeType": "YulBlock", + "src": "49646:1490:10", + "statements": [ + { + "nativeSrc": "49660:20:10", + "nodeType": "YulVariableDeclaration", + "src": "49660:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "49675:4:10", + "nodeType": "YulLiteral", + "src": "49675:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "49669:5:10", + "nodeType": "YulIdentifier", + "src": "49669:5:10" + }, + "nativeSrc": "49669:11:10", + "nodeType": "YulFunctionCall", + "src": "49669:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "49664:1:10", + "nodeType": "YulTypedName", + "src": "49664:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "49734:4:10", + "nodeType": "YulLiteral", + "src": "49734:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "49740:66:10", + "nodeType": "YulLiteral", + "src": "49740:66:10", + "type": "", + "value": "0xcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "49727:6:10", + "nodeType": "YulIdentifier", + "src": "49727:6:10" + }, + "nativeSrc": "49727:80:10", + "nodeType": "YulFunctionCall", + "src": "49727:80:10" + }, + "nativeSrc": "49727:80:10", + "nodeType": "YulExpressionStatement", + "src": "49727:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "49827:4:10", + "nodeType": "YulLiteral", + "src": "49827:4:10", + "type": "", + "value": "0x40" + }, + { + "kind": "number", + "nativeSrc": "49833:66:10", + "nodeType": "YulLiteral", + "src": "49833:66:10", + "type": "", + "value": "0x5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "49820:6:10", + "nodeType": "YulIdentifier", + "src": "49820:6:10" + }, + "nativeSrc": "49820:80:10", + "nodeType": "YulFunctionCall", + "src": "49820:80:10" + }, + "nativeSrc": "49820:80:10", + "nodeType": "YulExpressionStatement", + "src": "49820:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "49920:4:10", + "nodeType": "YulLiteral", + "src": "49920:4:10", + "type": "", + "value": "0x20" + }, + { + "kind": "number", + "nativeSrc": "49926:6:10", + "nodeType": "YulLiteral", + "src": "49926:6:10", + "type": "", + "value": "0x6009" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "49913:6:10", + "nodeType": "YulIdentifier", + "src": "49913:6:10" + }, + "nativeSrc": "49913:20:10", + "nodeType": "YulFunctionCall", + "src": "49913:20:10" + }, + "nativeSrc": "49913:20:10", + "nodeType": "YulExpressionStatement", + "src": "49913:20:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "49953:4:10", + "nodeType": "YulLiteral", + "src": "49953:4:10", + "type": "", + "value": "0x1e" + }, + { + "name": "implementation", + "nativeSrc": "49959:14:10", + "nodeType": "YulIdentifier", + "src": "49959:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "49946:6:10", + "nodeType": "YulIdentifier", + "src": "49946:6:10" + }, + "nativeSrc": "49946:28:10", + "nodeType": "YulFunctionCall", + "src": "49946:28:10" + }, + "nativeSrc": "49946:28:10", + "nodeType": "YulExpressionStatement", + "src": "49946:28:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "49994:4:10", + "nodeType": "YulLiteral", + "src": "49994:4:10", + "type": "", + "value": "0x0a" + }, + { + "kind": "number", + "nativeSrc": "50000:20:10", + "nodeType": "YulLiteral", + "src": "50000:20:10", + "type": "", + "value": "0x603d3d8160223d3973" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "49987:6:10", + "nodeType": "YulIdentifier", + "src": "49987:6:10" + }, + "nativeSrc": "49987:34:10", + "nodeType": "YulFunctionCall", + "src": "49987:34:10" + }, + "nativeSrc": "49987:34:10", + "nodeType": "YulExpressionStatement", + "src": "49987:34:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "50097:1:10", + "nodeType": "YulIdentifier", + "src": "50097:1:10" + }, + { + "kind": "number", + "nativeSrc": "50100:4:10", + "nodeType": "YulLiteral", + "src": "50100:4:10", + "type": "", + "value": "0x35" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "50093:3:10", + "nodeType": "YulIdentifier", + "src": "50093:3:10" + }, + "nativeSrc": "50093:12:10", + "nodeType": "YulFunctionCall", + "src": "50093:12:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "50117:4:10", + "nodeType": "YulLiteral", + "src": "50117:4:10", + "type": "", + "value": "0x21" + }, + { + "kind": "number", + "nativeSrc": "50123:4:10", + "nodeType": "YulLiteral", + "src": "50123:4:10", + "type": "", + "value": "0x5f" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "50107:9:10", + "nodeType": "YulIdentifier", + "src": "50107:9:10" + }, + "nativeSrc": "50107:21:10", + "nodeType": "YulFunctionCall", + "src": "50107:21:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "50086:6:10", + "nodeType": "YulIdentifier", + "src": "50086:6:10" + }, + "nativeSrc": "50086:43:10", + "nodeType": "YulFunctionCall", + "src": "50086:43:10" + }, + "nativeSrc": "50086:43:10", + "nodeType": "YulExpressionStatement", + "src": "50086:43:10" + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "50149:1:10", + "nodeType": "YulIdentifier", + "src": "50149:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "50156:2:10", + "nodeType": "YulLiteral", + "src": "50156:2:10", + "type": "", + "value": "88" + }, + { + "arguments": [], + "functionName": { + "name": "address", + "nativeSrc": "50160:7:10", + "nodeType": "YulIdentifier", + "src": "50160:7:10" + }, + "nativeSrc": "50160:9:10", + "nodeType": "YulFunctionCall", + "src": "50160:9:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "50152:3:10", + "nodeType": "YulIdentifier", + "src": "50152:3:10" + }, + "nativeSrc": "50152:18:10", + "nodeType": "YulFunctionCall", + "src": "50152:18:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "50142:6:10", + "nodeType": "YulIdentifier", + "src": "50142:6:10" + }, + "nativeSrc": "50142:29:10", + "nodeType": "YulFunctionCall", + "src": "50142:29:10" + }, + "nativeSrc": "50142:29:10", + "nodeType": "YulExpressionStatement", + "src": "50142:29:10" + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "50192:1:10", + "nodeType": "YulIdentifier", + "src": "50192:1:10" + }, + { + "kind": "number", + "nativeSrc": "50195:4:10", + "nodeType": "YulLiteral", + "src": "50195:4:10", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "50184:7:10", + "nodeType": "YulIdentifier", + "src": "50184:7:10" + }, + "nativeSrc": "50184:16:10", + "nodeType": "YulFunctionCall", + "src": "50184:16:10" + }, + "nativeSrc": "50184:16:10", + "nodeType": "YulExpressionStatement", + "src": "50184:16:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "50245:1:10", + "nodeType": "YulIdentifier", + "src": "50245:1:10" + }, + { + "kind": "number", + "nativeSrc": "50248:4:10", + "nodeType": "YulLiteral", + "src": "50248:4:10", + "type": "", + "value": "0x15" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "50241:3:10", + "nodeType": "YulIdentifier", + "src": "50241:3:10" + }, + "nativeSrc": "50241:12:10", + "nodeType": "YulFunctionCall", + "src": "50241:12:10" + }, + { + "name": "salt", + "nativeSrc": "50255:4:10", + "nodeType": "YulIdentifier", + "src": "50255:4:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "50234:6:10", + "nodeType": "YulIdentifier", + "src": "50234:6:10" + }, + "nativeSrc": "50234:26:10", + "nodeType": "YulFunctionCall", + "src": "50234:26:10" + }, + "nativeSrc": "50234:26:10", + "nodeType": "YulExpressionStatement", + "src": "50234:26:10" + }, + { + "nativeSrc": "50273:30:10", + "nodeType": "YulAssignment", + "src": "50273:30:10", + "value": { + "arguments": [ + { + "name": "m", + "nativeSrc": "50295:1:10", + "nodeType": "YulIdentifier", + "src": "50295:1:10" + }, + { + "kind": "number", + "nativeSrc": "50298:4:10", + "nodeType": "YulLiteral", + "src": "50298:4:10", + "type": "", + "value": "0x55" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "50285:9:10", + "nodeType": "YulIdentifier", + "src": "50285:9:10" + }, + "nativeSrc": "50285:18:10", + "nodeType": "YulFunctionCall", + "src": "50285:18:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "50273:8:10", + "nodeType": "YulIdentifier", + "src": "50273:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "50328:680:10", + "nodeType": "YulBlock", + "src": "50328:680:10", + "statements": [ + { + "body": { + "nativeSrc": "50379:291:10", + "nodeType": "YulBlock", + "src": "50379:291:10", + "statements": [ + { + "nativeSrc": "50401:44:10", + "nodeType": "YulAssignment", + "src": "50401:44:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "50421:5:10", + "nodeType": "YulIdentifier", + "src": "50421:5:10" + }, + { + "kind": "number", + "nativeSrc": "50428:4:10", + "nodeType": "YulLiteral", + "src": "50428:4:10", + "type": "", + "value": "0x21" + }, + { + "kind": "number", + "nativeSrc": "50434:4:10", + "nodeType": "YulLiteral", + "src": "50434:4:10", + "type": "", + "value": "0x5f" + }, + { + "name": "salt", + "nativeSrc": "50440:4:10", + "nodeType": "YulIdentifier", + "src": "50440:4:10" + } + ], + "functionName": { + "name": "create2", + "nativeSrc": "50413:7:10", + "nodeType": "YulIdentifier", + "src": "50413:7:10" + }, + "nativeSrc": "50413:32:10", + "nodeType": "YulFunctionCall", + "src": "50413:32:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "50401:8:10", + "nodeType": "YulIdentifier", + "src": "50401:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "50486:140:10", + "nodeType": "YulBlock", + "src": "50486:140:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "50519:4:10", + "nodeType": "YulLiteral", + "src": "50519:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "50525:10:10", + "nodeType": "YulLiteral", + "src": "50525:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "50512:6:10", + "nodeType": "YulIdentifier", + "src": "50512:6:10" + }, + "nativeSrc": "50512:24:10", + "nodeType": "YulFunctionCall", + "src": "50512:24:10" + }, + "nativeSrc": "50512:24:10", + "nodeType": "YulExpressionStatement", + "src": "50512:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "50593:4:10", + "nodeType": "YulLiteral", + "src": "50593:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "50599:4:10", + "nodeType": "YulLiteral", + "src": "50599:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "50586:6:10", + "nodeType": "YulIdentifier", + "src": "50586:6:10" + }, + "nativeSrc": "50586:18:10", + "nodeType": "YulFunctionCall", + "src": "50586:18:10" + }, + "nativeSrc": "50586:18:10", + "nodeType": "YulExpressionStatement", + "src": "50586:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "50476:8:10", + "nodeType": "YulIdentifier", + "src": "50476:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "50469:6:10", + "nodeType": "YulIdentifier", + "src": "50469:6:10" + }, + "nativeSrc": "50469:16:10", + "nodeType": "YulFunctionCall", + "src": "50469:16:10" + }, + "nativeSrc": "50466:160:10", + "nodeType": "YulIf", + "src": "50466:160:10" + }, + { + "nativeSrc": "50647:5:10", + "nodeType": "YulBreak", + "src": "50647:5:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "50368:8:10", + "nodeType": "YulIdentifier", + "src": "50368:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "50356:11:10", + "nodeType": "YulIdentifier", + "src": "50356:11:10" + }, + "nativeSrc": "50356:21:10", + "nodeType": "YulFunctionCall", + "src": "50356:21:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "50349:6:10", + "nodeType": "YulIdentifier", + "src": "50349:6:10" + }, + "nativeSrc": "50349:29:10", + "nodeType": "YulFunctionCall", + "src": "50349:29:10" + }, + "nativeSrc": "50346:324:10", + "nodeType": "YulIf", + "src": "50346:324:10" + }, + { + "nativeSrc": "50687:20:10", + "nodeType": "YulAssignment", + "src": "50687:20:10", + "value": { + "kind": "number", + "nativeSrc": "50706:1:10", + "nodeType": "YulLiteral", + "src": "50706:1:10", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "alreadyDeployed", + "nativeSrc": "50687:15:10", + "nodeType": "YulIdentifier", + "src": "50687:15:10" + } + ] + }, + { + "body": { + "nativeSrc": "50741:9:10", + "nodeType": "YulBlock", + "src": "50741:9:10", + "statements": [ + { + "nativeSrc": "50743:5:10", + "nodeType": "YulBreak", + "src": "50743:5:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nativeSrc": "50734:5:10", + "nodeType": "YulIdentifier", + "src": "50734:5:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "50727:6:10", + "nodeType": "YulIdentifier", + "src": "50727:6:10" + }, + "nativeSrc": "50727:13:10", + "nodeType": "YulFunctionCall", + "src": "50727:13:10" + }, + "nativeSrc": "50724:26:10", + "nodeType": "YulIf", + "src": "50724:26:10" + }, + { + "body": { + "nativeSrc": "50843:129:10", + "nodeType": "YulBlock", + "src": "50843:129:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "50872:4:10", + "nodeType": "YulLiteral", + "src": "50872:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "50878:10:10", + "nodeType": "YulLiteral", + "src": "50878:10:10", + "type": "", + "value": "0xb12d13eb" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "50865:6:10", + "nodeType": "YulIdentifier", + "src": "50865:6:10" + }, + "nativeSrc": "50865:24:10", + "nodeType": "YulFunctionCall", + "src": "50865:24:10" + }, + "nativeSrc": "50865:24:10", + "nodeType": "YulExpressionStatement", + "src": "50865:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "50943:4:10", + "nodeType": "YulLiteral", + "src": "50943:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "50949:4:10", + "nodeType": "YulLiteral", + "src": "50949:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "50936:6:10", + "nodeType": "YulIdentifier", + "src": "50936:6:10" + }, + "nativeSrc": "50936:18:10", + "nodeType": "YulFunctionCall", + "src": "50936:18:10" + }, + "nativeSrc": "50936:18:10", + "nodeType": "YulExpressionStatement", + "src": "50936:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "50782:3:10", + "nodeType": "YulIdentifier", + "src": "50782:3:10" + }, + "nativeSrc": "50782:5:10", + "nodeType": "YulFunctionCall", + "src": "50782:5:10" + }, + { + "name": "instance", + "nativeSrc": "50789:8:10", + "nodeType": "YulIdentifier", + "src": "50789:8:10" + }, + { + "name": "value", + "nativeSrc": "50799:5:10", + "nodeType": "YulIdentifier", + "src": "50799:5:10" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "50806:8:10", + "nodeType": "YulIdentifier", + "src": "50806:8:10" + }, + "nativeSrc": "50806:10:10", + "nodeType": "YulFunctionCall", + "src": "50806:10:10" + }, + { + "kind": "number", + "nativeSrc": "50818:4:10", + "nodeType": "YulLiteral", + "src": "50818:4:10", + "type": "", + "value": "0x00" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "50824:8:10", + "nodeType": "YulIdentifier", + "src": "50824:8:10" + }, + "nativeSrc": "50824:10:10", + "nodeType": "YulFunctionCall", + "src": "50824:10:10" + }, + { + "kind": "number", + "nativeSrc": "50836:4:10", + "nodeType": "YulLiteral", + "src": "50836:4:10", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "call", + "nativeSrc": "50777:4:10", + "nodeType": "YulIdentifier", + "src": "50777:4:10" + }, + "nativeSrc": "50777:64:10", + "nodeType": "YulFunctionCall", + "src": "50777:64:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "50770:6:10", + "nodeType": "YulIdentifier", + "src": "50770:6:10" + }, + "nativeSrc": "50770:72:10", + "nodeType": "YulFunctionCall", + "src": "50770:72:10" + }, + "nativeSrc": "50767:205:10", + "nodeType": "YulIf", + "src": "50767:205:10" + }, + { + "nativeSrc": "50989:5:10", + "nodeType": "YulBreak", + "src": "50989:5:10" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "50323:1:10", + "nodeType": "YulLiteral", + "src": "50323:1:10", + "type": "", + "value": "1" + }, + "nativeSrc": "50316:692:10", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "50325:2:10", + "nodeType": "YulBlock", + "src": "50325:2:10", + "statements": [] + }, + "pre": { + "nativeSrc": "50320:2:10", + "nodeType": "YulBlock", + "src": "50320:2:10", + "statements": [] + }, + "src": "50316:692:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "51028:4:10", + "nodeType": "YulLiteral", + "src": "51028:4:10", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "51034:1:10", + "nodeType": "YulIdentifier", + "src": "51034:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "51021:6:10", + "nodeType": "YulIdentifier", + "src": "51021:6:10" + }, + "nativeSrc": "51021:15:10", + "nodeType": "YulFunctionCall", + "src": "51021:15:10" + }, + "nativeSrc": "51021:15:10", + "nodeType": "YulExpressionStatement", + "src": "51021:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "51092:4:10", + "nodeType": "YulLiteral", + "src": "51092:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "51098:1:10", + "nodeType": "YulLiteral", + "src": "51098:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "51085:6:10", + "nodeType": "YulIdentifier", + "src": "51085:6:10" + }, + "nativeSrc": "51085:15:10", + "nodeType": "YulFunctionCall", + "src": "51085:15:10" + }, + "nativeSrc": "51085:15:10", + "nodeType": "YulExpressionStatement", + "src": "51085:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3636, + "isOffset": false, + "isSlot": false, + "src": "50687:15:10", + "valueSize": 1 + }, + { + "declaration": 3631, + "isOffset": false, + "isSlot": false, + "src": "49959:14:10", + "valueSize": 1 + }, + { + "declaration": 3638, + "isOffset": false, + "isSlot": false, + "src": "50273:8:10", + "valueSize": 1 + }, + { + "declaration": 3638, + "isOffset": false, + "isSlot": false, + "src": "50368:8:10", + "valueSize": 1 + }, + { + "declaration": 3638, + "isOffset": false, + "isSlot": false, + "src": "50401:8:10", + "valueSize": 1 + }, + { + "declaration": 3638, + "isOffset": false, + "isSlot": false, + "src": "50476:8:10", + "valueSize": 1 + }, + { + "declaration": 3638, + "isOffset": false, + "isSlot": false, + "src": "50789:8:10", + "valueSize": 1 + }, + { + "declaration": 3633, + "isOffset": false, + "isSlot": false, + "src": "50255:4:10", + "valueSize": 1 + }, + { + "declaration": 3633, + "isOffset": false, + "isSlot": false, + "src": "50440:4:10", + "valueSize": 1 + }, + { + "declaration": 3629, + "isOffset": false, + "isSlot": false, + "src": "50421:5:10", + "valueSize": 1 + }, + { + "declaration": 3629, + "isOffset": false, + "isSlot": false, + "src": "50734:5:10", + "valueSize": 1 + }, + { + "declaration": 3629, + "isOffset": false, + "isSlot": false, + "src": "50799:5:10", + "valueSize": 1 + } + ], + "id": 3640, + "nodeType": "InlineAssembly", + "src": "49637:1499:10" + } + ] + }, + "documentation": { + "id": 3627, + "nodeType": "StructuredDocumentation", + "src": "49133:279:10", + "text": "@dev Creates a deterministic minimal ERC1967 proxy with `implementation` and `salt`.\n Deposits `value` ETH during deployment.\n Note: This method is intended for use in ERC4337 factories,\n which are expected to NOT revert if the proxy is already deployed." + }, + "id": 3642, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createDeterministicERC1967", + "nameLocation": "49426:26:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3634, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3629, + "mutability": "mutable", + "name": "value", + "nameLocation": "49461:5:10", + "nodeType": "VariableDeclaration", + "scope": 3642, + "src": "49453:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3628, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "49453:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3631, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "49476:14:10", + "nodeType": "VariableDeclaration", + "scope": 3642, + "src": "49468:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3630, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "49468:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3633, + "mutability": "mutable", + "name": "salt", + "nameLocation": "49500:4:10", + "nodeType": "VariableDeclaration", + "scope": 3642, + "src": "49492:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3632, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "49492:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "49452:53:10" + }, + "returnParameters": { + "id": 3639, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3636, + "mutability": "mutable", + "name": "alreadyDeployed", + "nameLocation": "49545:15:10", + "nodeType": "VariableDeclaration", + "scope": 3642, + "src": "49540:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3635, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "49540:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3638, + "mutability": "mutable", + "name": "instance", + "nameLocation": "49570:8:10", + "nodeType": "VariableDeclaration", + "scope": 3642, + "src": "49562:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3637, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "49562:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "49539:40:10" + }, + "scope": 5104, + "src": "49417:1725:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3651, + "nodeType": "Block", + "src": "51331:545:10", + "statements": [ + { + "AST": { + "nativeSrc": "51393:477:10", + "nodeType": "YulBlock", + "src": "51393:477:10", + "statements": [ + { + "nativeSrc": "51407:16:10", + "nodeType": "YulAssignment", + "src": "51407:16:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "51418:4:10", + "nodeType": "YulLiteral", + "src": "51418:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "51412:5:10", + "nodeType": "YulIdentifier", + "src": "51412:5:10" + }, + "nativeSrc": "51412:11:10", + "nodeType": "YulFunctionCall", + "src": "51412:11:10" + }, + "variableNames": [ + { + "name": "c", + "nativeSrc": "51407:1:10", + "nodeType": "YulIdentifier", + "src": "51407:1:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "51447:1:10", + "nodeType": "YulIdentifier", + "src": "51447:1:10" + }, + { + "kind": "number", + "nativeSrc": "51450:4:10", + "nodeType": "YulLiteral", + "src": "51450:4:10", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "51443:3:10", + "nodeType": "YulIdentifier", + "src": "51443:3:10" + }, + "nativeSrc": "51443:12:10", + "nodeType": "YulFunctionCall", + "src": "51443:12:10" + }, + { + "kind": "number", + "nativeSrc": "51457:66:10", + "nodeType": "YulLiteral", + "src": "51457:66:10", + "type": "", + "value": "0x3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f300" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "51436:6:10", + "nodeType": "YulIdentifier", + "src": "51436:6:10" + }, + "nativeSrc": "51436:88:10", + "nodeType": "YulFunctionCall", + "src": "51436:88:10" + }, + "nativeSrc": "51436:88:10", + "nodeType": "YulExpressionStatement", + "src": "51436:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "51548:1:10", + "nodeType": "YulIdentifier", + "src": "51548:1:10" + }, + { + "kind": "number", + "nativeSrc": "51551:4:10", + "nodeType": "YulLiteral", + "src": "51551:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "51544:3:10", + "nodeType": "YulIdentifier", + "src": "51544:3:10" + }, + "nativeSrc": "51544:12:10", + "nodeType": "YulFunctionCall", + "src": "51544:12:10" + }, + { + "kind": "number", + "nativeSrc": "51558:66:10", + "nodeType": "YulLiteral", + "src": "51558:66:10", + "type": "", + "value": "0x55f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076cc" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "51537:6:10", + "nodeType": "YulIdentifier", + "src": "51537:6:10" + }, + "nativeSrc": "51537:88:10", + "nodeType": "YulFunctionCall", + "src": "51537:88:10" + }, + "nativeSrc": "51537:88:10", + "nodeType": "YulExpressionStatement", + "src": "51537:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "51649:1:10", + "nodeType": "YulIdentifier", + "src": "51649:1:10" + }, + { + "kind": "number", + "nativeSrc": "51652:4:10", + "nodeType": "YulLiteral", + "src": "51652:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "51645:3:10", + "nodeType": "YulIdentifier", + "src": "51645:3:10" + }, + "nativeSrc": "51645:12:10", + "nodeType": "YulFunctionCall", + "src": "51645:12:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "51666:2:10", + "nodeType": "YulLiteral", + "src": "51666:2:10", + "type": "", + "value": "24" + }, + { + "name": "implementation", + "nativeSrc": "51670:14:10", + "nodeType": "YulIdentifier", + "src": "51670:14:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "51662:3:10", + "nodeType": "YulIdentifier", + "src": "51662:3:10" + }, + "nativeSrc": "51662:23:10", + "nodeType": "YulFunctionCall", + "src": "51662:23:10" + }, + { + "kind": "number", + "nativeSrc": "51687:8:10", + "nodeType": "YulLiteral", + "src": "51687:8:10", + "type": "", + "value": "0x600951" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "51659:2:10", + "nodeType": "YulIdentifier", + "src": "51659:2:10" + }, + "nativeSrc": "51659:37:10", + "nodeType": "YulFunctionCall", + "src": "51659:37:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "51638:6:10", + "nodeType": "YulIdentifier", + "src": "51638:6:10" + }, + "nativeSrc": "51638:59:10", + "nodeType": "YulFunctionCall", + "src": "51638:59:10" + }, + "nativeSrc": "51638:59:10", + "nodeType": "YulExpressionStatement", + "src": "51638:59:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "51721:1:10", + "nodeType": "YulIdentifier", + "src": "51721:1:10" + }, + { + "kind": "number", + "nativeSrc": "51724:4:10", + "nodeType": "YulLiteral", + "src": "51724:4:10", + "type": "", + "value": "0x09" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "51717:3:10", + "nodeType": "YulIdentifier", + "src": "51717:3:10" + }, + "nativeSrc": "51717:12:10", + "nodeType": "YulFunctionCall", + "src": "51717:12:10" + }, + { + "kind": "number", + "nativeSrc": "51731:20:10", + "nodeType": "YulLiteral", + "src": "51731:20:10", + "type": "", + "value": "0x603d3d8160223d3973" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "51710:6:10", + "nodeType": "YulIdentifier", + "src": "51710:6:10" + }, + "nativeSrc": "51710:42:10", + "nodeType": "YulFunctionCall", + "src": "51710:42:10" + }, + "nativeSrc": "51710:42:10", + "nodeType": "YulExpressionStatement", + "src": "51710:42:10" + }, + { + "expression": { + "arguments": [ + { + "name": "c", + "nativeSrc": "51772:1:10", + "nodeType": "YulIdentifier", + "src": "51772:1:10" + }, + { + "kind": "number", + "nativeSrc": "51775:4:10", + "nodeType": "YulLiteral", + "src": "51775:4:10", + "type": "", + "value": "0x5f" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "51765:6:10", + "nodeType": "YulIdentifier", + "src": "51765:6:10" + }, + "nativeSrc": "51765:15:10", + "nodeType": "YulFunctionCall", + "src": "51765:15:10" + }, + "nativeSrc": "51765:15:10", + "nodeType": "YulExpressionStatement", + "src": "51765:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "51821:4:10", + "nodeType": "YulLiteral", + "src": "51821:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "c", + "nativeSrc": "51831:1:10", + "nodeType": "YulIdentifier", + "src": "51831:1:10" + }, + { + "kind": "number", + "nativeSrc": "51834:4:10", + "nodeType": "YulLiteral", + "src": "51834:4:10", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "51827:3:10", + "nodeType": "YulIdentifier", + "src": "51827:3:10" + }, + "nativeSrc": "51827:12:10", + "nodeType": "YulFunctionCall", + "src": "51827:12:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "51814:6:10", + "nodeType": "YulIdentifier", + "src": "51814:6:10" + }, + "nativeSrc": "51814:26:10", + "nodeType": "YulFunctionCall", + "src": "51814:26:10" + }, + "nativeSrc": "51814:26:10", + "nodeType": "YulExpressionStatement", + "src": "51814:26:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3648, + "isOffset": false, + "isSlot": false, + "src": "51407:1:10", + "valueSize": 1 + }, + { + "declaration": 3648, + "isOffset": false, + "isSlot": false, + "src": "51447:1:10", + "valueSize": 1 + }, + { + "declaration": 3648, + "isOffset": false, + "isSlot": false, + "src": "51548:1:10", + "valueSize": 1 + }, + { + "declaration": 3648, + "isOffset": false, + "isSlot": false, + "src": "51649:1:10", + "valueSize": 1 + }, + { + "declaration": 3648, + "isOffset": false, + "isSlot": false, + "src": "51721:1:10", + "valueSize": 1 + }, + { + "declaration": 3648, + "isOffset": false, + "isSlot": false, + "src": "51772:1:10", + "valueSize": 1 + }, + { + "declaration": 3648, + "isOffset": false, + "isSlot": false, + "src": "51831:1:10", + "valueSize": 1 + }, + { + "declaration": 3645, + "isOffset": false, + "isSlot": false, + "src": "51670:14:10", + "valueSize": 1 + } + ], + "id": 3650, + "nodeType": "InlineAssembly", + "src": "51384:486:10" + } + ] + }, + "documentation": { + "id": 3643, + "nodeType": "StructuredDocumentation", + "src": "51148:90:10", + "text": "@dev Returns the initialization code of the minimal ERC1967 proxy of `implementation`." + }, + "id": 3652, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeERC1967", + "nameLocation": "51252:15:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3646, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3645, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "51276:14:10", + "nodeType": "VariableDeclaration", + "scope": 3652, + "src": "51268:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3644, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "51268:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "51267:24:10" + }, + "returnParameters": { + "id": 3649, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3648, + "mutability": "mutable", + "name": "c", + "nameLocation": "51328:1:10", + "nodeType": "VariableDeclaration", + "scope": 3652, + "src": "51315:14:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3647, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "51315:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "51314:16:10" + }, + "scope": 5104, + "src": "51243:633:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3661, + "nodeType": "Block", + "src": "52072:613:10", + "statements": [ + { + "AST": { + "nativeSrc": "52134:545:10", + "nodeType": "YulBlock", + "src": "52134:545:10", + "statements": [ + { + "nativeSrc": "52148:20:10", + "nodeType": "YulVariableDeclaration", + "src": "52148:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "52163:4:10", + "nodeType": "YulLiteral", + "src": "52163:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "52157:5:10", + "nodeType": "YulIdentifier", + "src": "52157:5:10" + }, + "nativeSrc": "52157:11:10", + "nodeType": "YulFunctionCall", + "src": "52157:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "52152:1:10", + "nodeType": "YulTypedName", + "src": "52152:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "52222:4:10", + "nodeType": "YulLiteral", + "src": "52222:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "52228:66:10", + "nodeType": "YulLiteral", + "src": "52228:66:10", + "type": "", + "value": "0xcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "52215:6:10", + "nodeType": "YulIdentifier", + "src": "52215:6:10" + }, + "nativeSrc": "52215:80:10", + "nodeType": "YulFunctionCall", + "src": "52215:80:10" + }, + "nativeSrc": "52215:80:10", + "nodeType": "YulExpressionStatement", + "src": "52215:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "52315:4:10", + "nodeType": "YulLiteral", + "src": "52315:4:10", + "type": "", + "value": "0x40" + }, + { + "kind": "number", + "nativeSrc": "52321:66:10", + "nodeType": "YulLiteral", + "src": "52321:66:10", + "type": "", + "value": "0x5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "52308:6:10", + "nodeType": "YulIdentifier", + "src": "52308:6:10" + }, + "nativeSrc": "52308:80:10", + "nodeType": "YulFunctionCall", + "src": "52308:80:10" + }, + "nativeSrc": "52308:80:10", + "nodeType": "YulExpressionStatement", + "src": "52308:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "52408:4:10", + "nodeType": "YulLiteral", + "src": "52408:4:10", + "type": "", + "value": "0x20" + }, + { + "kind": "number", + "nativeSrc": "52414:6:10", + "nodeType": "YulLiteral", + "src": "52414:6:10", + "type": "", + "value": "0x6009" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "52401:6:10", + "nodeType": "YulIdentifier", + "src": "52401:6:10" + }, + "nativeSrc": "52401:20:10", + "nodeType": "YulFunctionCall", + "src": "52401:20:10" + }, + "nativeSrc": "52401:20:10", + "nodeType": "YulExpressionStatement", + "src": "52401:20:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "52441:4:10", + "nodeType": "YulLiteral", + "src": "52441:4:10", + "type": "", + "value": "0x1e" + }, + { + "name": "implementation", + "nativeSrc": "52447:14:10", + "nodeType": "YulIdentifier", + "src": "52447:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "52434:6:10", + "nodeType": "YulIdentifier", + "src": "52434:6:10" + }, + "nativeSrc": "52434:28:10", + "nodeType": "YulFunctionCall", + "src": "52434:28:10" + }, + "nativeSrc": "52434:28:10", + "nodeType": "YulExpressionStatement", + "src": "52434:28:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "52482:4:10", + "nodeType": "YulLiteral", + "src": "52482:4:10", + "type": "", + "value": "0x0a" + }, + { + "kind": "number", + "nativeSrc": "52488:20:10", + "nodeType": "YulLiteral", + "src": "52488:20:10", + "type": "", + "value": "0x603d3d8160223d3973" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "52475:6:10", + "nodeType": "YulIdentifier", + "src": "52475:6:10" + }, + "nativeSrc": "52475:34:10", + "nodeType": "YulFunctionCall", + "src": "52475:34:10" + }, + "nativeSrc": "52475:34:10", + "nodeType": "YulExpressionStatement", + "src": "52475:34:10" + }, + { + "nativeSrc": "52522:29:10", + "nodeType": "YulAssignment", + "src": "52522:29:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "52540:4:10", + "nodeType": "YulLiteral", + "src": "52540:4:10", + "type": "", + "value": "0x21" + }, + { + "kind": "number", + "nativeSrc": "52546:4:10", + "nodeType": "YulLiteral", + "src": "52546:4:10", + "type": "", + "value": "0x5f" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "52530:9:10", + "nodeType": "YulIdentifier", + "src": "52530:9:10" + }, + "nativeSrc": "52530:21:10", + "nodeType": "YulFunctionCall", + "src": "52530:21:10" + }, + "variableNames": [ + { + "name": "hash", + "nativeSrc": "52522:4:10", + "nodeType": "YulIdentifier", + "src": "52522:4:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "52571:4:10", + "nodeType": "YulLiteral", + "src": "52571:4:10", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "52577:1:10", + "nodeType": "YulIdentifier", + "src": "52577:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "52564:6:10", + "nodeType": "YulIdentifier", + "src": "52564:6:10" + }, + "nativeSrc": "52564:15:10", + "nodeType": "YulFunctionCall", + "src": "52564:15:10" + }, + "nativeSrc": "52564:15:10", + "nodeType": "YulExpressionStatement", + "src": "52564:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "52635:4:10", + "nodeType": "YulLiteral", + "src": "52635:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "52641:1:10", + "nodeType": "YulLiteral", + "src": "52641:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "52628:6:10", + "nodeType": "YulIdentifier", + "src": "52628:6:10" + }, + "nativeSrc": "52628:15:10", + "nodeType": "YulFunctionCall", + "src": "52628:15:10" + }, + "nativeSrc": "52628:15:10", + "nodeType": "YulExpressionStatement", + "src": "52628:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3658, + "isOffset": false, + "isSlot": false, + "src": "52522:4:10", + "valueSize": 1 + }, + { + "declaration": 3655, + "isOffset": false, + "isSlot": false, + "src": "52447:14:10", + "valueSize": 1 + } + ], + "id": 3660, + "nodeType": "InlineAssembly", + "src": "52125:554:10" + } + ] + }, + "documentation": { + "id": 3653, + "nodeType": "StructuredDocumentation", + "src": "51882:95:10", + "text": "@dev Returns the initialization code hash of the minimal ERC1967 proxy of `implementation`." + }, + "id": 3662, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeHashERC1967", + "nameLocation": "51991:19:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3656, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3655, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "52019:14:10", + "nodeType": "VariableDeclaration", + "scope": 3662, + "src": "52011:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3654, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "52011:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "52010:24:10" + }, + "returnParameters": { + "id": 3659, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3658, + "mutability": "mutable", + "name": "hash", + "nameLocation": "52066:4:10", + "nodeType": "VariableDeclaration", + "scope": 3662, + "src": "52058:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3657, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "52058:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "52057:14:10" + }, + "scope": 5104, + "src": "51982:703:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3688, + "nodeType": "Block", + "src": "53058:138:10", + "statements": [ + { + "assignments": [ + 3675 + ], + "declarations": [ + { + "constant": false, + "id": 3675, + "mutability": "mutable", + "name": "hash", + "nameLocation": "53076:4:10", + "nodeType": "VariableDeclaration", + "scope": 3688, + "src": "53068:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3674, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "53068:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 3679, + "initialValue": { + "arguments": [ + { + "id": 3677, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3665, + "src": "53103:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3676, + "name": "initCodeHashERC1967", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3662, + 3824 + ], + "referencedDeclaration": 3662, + "src": "53083:19:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_bytes32_$", + "typeString": "function (address) pure returns (bytes32)" + } + }, + "id": 3678, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "53083:35:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "53068:50:10" + }, + { + "expression": { + "id": 3686, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3680, + "name": "predicted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3672, + "src": "53128:9:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3682, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3675, + "src": "53168:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 3683, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3667, + "src": "53174:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 3684, + "name": "deployer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3669, + "src": "53180:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3681, + "name": "predictDeterministicAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3237, + 3510, + 5081 + ], + "referencedDeclaration": 5081, + "src": "53140:27:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_address_$", + "typeString": "function (bytes32,bytes32,address) pure returns (address)" + } + }, + "id": 3685, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "53140:49:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "53128:61:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3687, + "nodeType": "ExpressionStatement", + "src": "53128:61:10" + } + ] + }, + "documentation": { + "id": 3663, + "nodeType": "StructuredDocumentation", + "src": "52691:190:10", + "text": "@dev Returns the address of the ERC1967 proxy of `implementation`, with `salt` by `deployer`.\n Note: The returned result has dirty upper 96 bits. Please clean if used in assembly." + }, + "id": 3689, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "predictDeterministicAddressERC1967", + "nameLocation": "52895:34:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3670, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3665, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "52947:14:10", + "nodeType": "VariableDeclaration", + "scope": 3689, + "src": "52939:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3664, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "52939:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3667, + "mutability": "mutable", + "name": "salt", + "nameLocation": "52979:4:10", + "nodeType": "VariableDeclaration", + "scope": 3689, + "src": "52971:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3666, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "52971:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3669, + "mutability": "mutable", + "name": "deployer", + "nameLocation": "53001:8:10", + "nodeType": "VariableDeclaration", + "scope": 3689, + "src": "52993:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3668, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "52993:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "52929:86:10" + }, + "returnParameters": { + "id": 3673, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3672, + "mutability": "mutable", + "name": "predicted", + "nameLocation": "53047:9:10", + "nodeType": "VariableDeclaration", + "scope": 3689, + "src": "53039:17:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3671, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "53039:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "53038:19:10" + }, + "scope": 5104, + "src": "52886:310:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3707, + "nodeType": "Block", + "src": "53686:66:10", + "statements": [ + { + "expression": { + "id": 3705, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3699, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3697, + "src": "53696:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 3701, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "53721:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 3702, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3692, + "src": "53724:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3703, + "name": "args", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3694, + "src": "53740:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 3700, + "name": "deployERC1967", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3562, + 3574, + 3708, + 3722 + ], + "referencedDeclaration": 3722, + "src": "53707:13:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$", + "typeString": "function (uint256,address,bytes memory) returns (address)" + } + }, + "id": 3704, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "53707:38:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "53696:49:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3706, + "nodeType": "ExpressionStatement", + "src": "53696:49:10" + } + ] + }, + "documentation": { + "id": 3690, + "nodeType": "StructuredDocumentation", + "src": "53485:74:10", + "text": "@dev Deploys a minimal ERC1967 proxy with `implementation` and `args`." + }, + "id": 3708, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployERC1967", + "nameLocation": "53573:13:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3695, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3692, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "53595:14:10", + "nodeType": "VariableDeclaration", + "scope": 3708, + "src": "53587:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3691, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "53587:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3694, + "mutability": "mutable", + "name": "args", + "nameLocation": "53624:4:10", + "nodeType": "VariableDeclaration", + "scope": 3708, + "src": "53611:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3693, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "53611:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "53586:43:10" + }, + "returnParameters": { + "id": 3698, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3697, + "mutability": "mutable", + "name": "instance", + "nameLocation": "53672:8:10", + "nodeType": "VariableDeclaration", + "scope": 3708, + "src": "53664:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3696, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "53664:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "53663:18:10" + }, + "scope": 5104, + "src": "53564:188:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3721, + "nodeType": "Block", + "src": "54022:899:10", + "statements": [ + { + "AST": { + "nativeSrc": "54084:831:10", + "nodeType": "YulBlock", + "src": "54084:831:10", + "statements": [ + { + "nativeSrc": "54098:20:10", + "nodeType": "YulVariableDeclaration", + "src": "54098:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "54113:4:10", + "nodeType": "YulLiteral", + "src": "54113:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "54107:5:10", + "nodeType": "YulIdentifier", + "src": "54107:5:10" + }, + "nativeSrc": "54107:11:10", + "nodeType": "YulFunctionCall", + "src": "54107:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "54102:1:10", + "nodeType": "YulTypedName", + "src": "54102:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "54131:20:10", + "nodeType": "YulVariableDeclaration", + "src": "54131:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "54146:4:10", + "nodeType": "YulIdentifier", + "src": "54146:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "54140:5:10", + "nodeType": "YulIdentifier", + "src": "54140:5:10" + }, + "nativeSrc": "54140:11:10", + "nodeType": "YulFunctionCall", + "src": "54140:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "54135:1:10", + "nodeType": "YulTypedName", + "src": "54135:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "54179:3:10", + "nodeType": "YulIdentifier", + "src": "54179:3:10" + }, + "nativeSrc": "54179:5:10", + "nodeType": "YulFunctionCall", + "src": "54179:5:10" + }, + { + "kind": "number", + "nativeSrc": "54186:1:10", + "nodeType": "YulLiteral", + "src": "54186:1:10", + "type": "", + "value": "4" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "54193:4:10", + "nodeType": "YulIdentifier", + "src": "54193:4:10" + }, + { + "kind": "number", + "nativeSrc": "54199:4:10", + "nodeType": "YulLiteral", + "src": "54199:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "54189:3:10", + "nodeType": "YulIdentifier", + "src": "54189:3:10" + }, + "nativeSrc": "54189:15:10", + "nodeType": "YulFunctionCall", + "src": "54189:15:10" + }, + { + "name": "n", + "nativeSrc": "54206:1:10", + "nodeType": "YulIdentifier", + "src": "54206:1:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "54213:1:10", + "nodeType": "YulIdentifier", + "src": "54213:1:10" + }, + { + "kind": "number", + "nativeSrc": "54216:4:10", + "nodeType": "YulLiteral", + "src": "54216:4:10", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "54209:3:10", + "nodeType": "YulIdentifier", + "src": "54209:3:10" + }, + "nativeSrc": "54209:12:10", + "nodeType": "YulFunctionCall", + "src": "54209:12:10" + }, + { + "name": "n", + "nativeSrc": "54223:1:10", + "nodeType": "YulIdentifier", + "src": "54223:1:10" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "54168:10:10", + "nodeType": "YulIdentifier", + "src": "54168:10:10" + }, + "nativeSrc": "54168:57:10", + "nodeType": "YulFunctionCall", + "src": "54168:57:10" + } + ], + "functionName": { + "name": "pop", + "nativeSrc": "54164:3:10", + "nodeType": "YulIdentifier", + "src": "54164:3:10" + }, + "nativeSrc": "54164:62:10", + "nodeType": "YulFunctionCall", + "src": "54164:62:10" + }, + "nativeSrc": "54164:62:10", + "nodeType": "YulExpressionStatement", + "src": "54164:62:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "54250:1:10", + "nodeType": "YulIdentifier", + "src": "54250:1:10" + }, + { + "kind": "number", + "nativeSrc": "54253:4:10", + "nodeType": "YulLiteral", + "src": "54253:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "54246:3:10", + "nodeType": "YulIdentifier", + "src": "54246:3:10" + }, + "nativeSrc": "54246:12:10", + "nodeType": "YulFunctionCall", + "src": "54246:12:10" + }, + { + "kind": "number", + "nativeSrc": "54260:66:10", + "nodeType": "YulLiteral", + "src": "54260:66:10", + "type": "", + "value": "0xcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "54239:6:10", + "nodeType": "YulIdentifier", + "src": "54239:6:10" + }, + "nativeSrc": "54239:88:10", + "nodeType": "YulFunctionCall", + "src": "54239:88:10" + }, + "nativeSrc": "54239:88:10", + "nodeType": "YulExpressionStatement", + "src": "54239:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "54351:1:10", + "nodeType": "YulIdentifier", + "src": "54351:1:10" + }, + { + "kind": "number", + "nativeSrc": "54354:4:10", + "nodeType": "YulLiteral", + "src": "54354:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "54347:3:10", + "nodeType": "YulIdentifier", + "src": "54347:3:10" + }, + "nativeSrc": "54347:12:10", + "nodeType": "YulFunctionCall", + "src": "54347:12:10" + }, + { + "kind": "number", + "nativeSrc": "54361:66:10", + "nodeType": "YulLiteral", + "src": "54361:66:10", + "type": "", + "value": "0x5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "54340:6:10", + "nodeType": "YulIdentifier", + "src": "54340:6:10" + }, + "nativeSrc": "54340:88:10", + "nodeType": "YulFunctionCall", + "src": "54340:88:10" + }, + "nativeSrc": "54340:88:10", + "nodeType": "YulExpressionStatement", + "src": "54340:88:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "54448:4:10", + "nodeType": "YulLiteral", + "src": "54448:4:10", + "type": "", + "value": "0x16" + }, + { + "kind": "number", + "nativeSrc": "54454:6:10", + "nodeType": "YulLiteral", + "src": "54454:6:10", + "type": "", + "value": "0x6009" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "54441:6:10", + "nodeType": "YulIdentifier", + "src": "54441:6:10" + }, + "nativeSrc": "54441:20:10", + "nodeType": "YulFunctionCall", + "src": "54441:20:10" + }, + "nativeSrc": "54441:20:10", + "nodeType": "YulExpressionStatement", + "src": "54441:20:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "54481:4:10", + "nodeType": "YulLiteral", + "src": "54481:4:10", + "type": "", + "value": "0x14" + }, + { + "name": "implementation", + "nativeSrc": "54487:14:10", + "nodeType": "YulIdentifier", + "src": "54487:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "54474:6:10", + "nodeType": "YulIdentifier", + "src": "54474:6:10" + }, + "nativeSrc": "54474:28:10", + "nodeType": "YulFunctionCall", + "src": "54474:28:10" + }, + "nativeSrc": "54474:28:10", + "nodeType": "YulExpressionStatement", + "src": "54474:28:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "n", + "nativeSrc": "54612:1:10", + "nodeType": "YulIdentifier", + "src": "54612:1:10" + }, + { + "kind": "number", + "nativeSrc": "54615:6:10", + "nodeType": "YulLiteral", + "src": "54615:6:10", + "type": "", + "value": "0xffc2" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "54609:2:10", + "nodeType": "YulIdentifier", + "src": "54609:2:10" + }, + "nativeSrc": "54609:13:10", + "nodeType": "YulFunctionCall", + "src": "54609:13:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "54628:24:10", + "nodeType": "YulLiteral", + "src": "54628:24:10", + "type": "", + "value": "0xfe61003d3d8160233d3973" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "54658:2:10", + "nodeType": "YulLiteral", + "src": "54658:2:10", + "type": "", + "value": "56" + }, + { + "name": "n", + "nativeSrc": "54662:1:10", + "nodeType": "YulIdentifier", + "src": "54662:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "54654:3:10", + "nodeType": "YulIdentifier", + "src": "54654:3:10" + }, + "nativeSrc": "54654:10:10", + "nodeType": "YulFunctionCall", + "src": "54654:10:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "54624:3:10", + "nodeType": "YulIdentifier", + "src": "54624:3:10" + }, + "nativeSrc": "54624:41:10", + "nodeType": "YulFunctionCall", + "src": "54624:41:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "54602:6:10", + "nodeType": "YulIdentifier", + "src": "54602:6:10" + }, + "nativeSrc": "54602:64:10", + "nodeType": "YulFunctionCall", + "src": "54602:64:10" + }, + "nativeSrc": "54602:64:10", + "nodeType": "YulExpressionStatement", + "src": "54602:64:10" + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "54686:1:10", + "nodeType": "YulIdentifier", + "src": "54686:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "54695:4:10", + "nodeType": "YulLiteral", + "src": "54695:4:10", + "type": "", + "value": "0x16" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "54689:5:10", + "nodeType": "YulIdentifier", + "src": "54689:5:10" + }, + "nativeSrc": "54689:11:10", + "nodeType": "YulFunctionCall", + "src": "54689:11:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "54679:6:10", + "nodeType": "YulIdentifier", + "src": "54679:6:10" + }, + "nativeSrc": "54679:22:10", + "nodeType": "YulFunctionCall", + "src": "54679:22:10" + }, + "nativeSrc": "54679:22:10", + "nodeType": "YulExpressionStatement", + "src": "54679:22:10" + }, + { + "nativeSrc": "54714:42:10", + "nodeType": "YulAssignment", + "src": "54714:42:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "54733:5:10", + "nodeType": "YulIdentifier", + "src": "54733:5:10" + }, + { + "name": "m", + "nativeSrc": "54740:1:10", + "nodeType": "YulIdentifier", + "src": "54740:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "54747:1:10", + "nodeType": "YulIdentifier", + "src": "54747:1:10" + }, + { + "kind": "number", + "nativeSrc": "54750:4:10", + "nodeType": "YulLiteral", + "src": "54750:4:10", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "54743:3:10", + "nodeType": "YulIdentifier", + "src": "54743:3:10" + }, + "nativeSrc": "54743:12:10", + "nodeType": "YulFunctionCall", + "src": "54743:12:10" + } + ], + "functionName": { + "name": "create", + "nativeSrc": "54726:6:10", + "nodeType": "YulIdentifier", + "src": "54726:6:10" + }, + "nativeSrc": "54726:30:10", + "nodeType": "YulFunctionCall", + "src": "54726:30:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "54714:8:10", + "nodeType": "YulIdentifier", + "src": "54714:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "54789:116:10", + "nodeType": "YulBlock", + "src": "54789:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "54814:4:10", + "nodeType": "YulLiteral", + "src": "54814:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "54820:10:10", + "nodeType": "YulLiteral", + "src": "54820:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "54807:6:10", + "nodeType": "YulIdentifier", + "src": "54807:6:10" + }, + "nativeSrc": "54807:24:10", + "nodeType": "YulFunctionCall", + "src": "54807:24:10" + }, + "nativeSrc": "54807:24:10", + "nodeType": "YulExpressionStatement", + "src": "54807:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "54880:4:10", + "nodeType": "YulLiteral", + "src": "54880:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "54886:4:10", + "nodeType": "YulLiteral", + "src": "54886:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "54873:6:10", + "nodeType": "YulIdentifier", + "src": "54873:6:10" + }, + "nativeSrc": "54873:18:10", + "nodeType": "YulFunctionCall", + "src": "54873:18:10" + }, + "nativeSrc": "54873:18:10", + "nodeType": "YulExpressionStatement", + "src": "54873:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "54779:8:10", + "nodeType": "YulIdentifier", + "src": "54779:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "54772:6:10", + "nodeType": "YulIdentifier", + "src": "54772:6:10" + }, + "nativeSrc": "54772:16:10", + "nodeType": "YulFunctionCall", + "src": "54772:16:10" + }, + "nativeSrc": "54769:136:10", + "nodeType": "YulIf", + "src": "54769:136:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3715, + "isOffset": false, + "isSlot": false, + "src": "54146:4:10", + "valueSize": 1 + }, + { + "declaration": 3715, + "isOffset": false, + "isSlot": false, + "src": "54193:4:10", + "valueSize": 1 + }, + { + "declaration": 3713, + "isOffset": false, + "isSlot": false, + "src": "54487:14:10", + "valueSize": 1 + }, + { + "declaration": 3718, + "isOffset": false, + "isSlot": false, + "src": "54714:8:10", + "valueSize": 1 + }, + { + "declaration": 3718, + "isOffset": false, + "isSlot": false, + "src": "54779:8:10", + "valueSize": 1 + }, + { + "declaration": 3711, + "isOffset": false, + "isSlot": false, + "src": "54733:5:10", + "valueSize": 1 + } + ], + "id": 3720, + "nodeType": "InlineAssembly", + "src": "54075:840:10" + } + ] + }, + "documentation": { + "id": 3709, + "nodeType": "StructuredDocumentation", + "src": "53758:122:10", + "text": "@dev Deploys a minimal ERC1967 proxy with `implementation` and `args`.\n Deposits `value` ETH during deployment." + }, + "id": 3722, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployERC1967", + "nameLocation": "53894:13:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3716, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3711, + "mutability": "mutable", + "name": "value", + "nameLocation": "53916:5:10", + "nodeType": "VariableDeclaration", + "scope": 3722, + "src": "53908:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3710, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "53908:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3713, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "53931:14:10", + "nodeType": "VariableDeclaration", + "scope": 3722, + "src": "53923:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3712, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "53923:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3715, + "mutability": "mutable", + "name": "args", + "nameLocation": "53960:4:10", + "nodeType": "VariableDeclaration", + "scope": 3722, + "src": "53947:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3714, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "53947:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "53907:58:10" + }, + "returnParameters": { + "id": 3719, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3718, + "mutability": "mutable", + "name": "instance", + "nameLocation": "54008:8:10", + "nodeType": "VariableDeclaration", + "scope": 3722, + "src": "54000:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3717, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "54000:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "53999:18:10" + }, + "scope": 5104, + "src": "53885:1036:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3743, + "nodeType": "Block", + "src": "55177:85:10", + "statements": [ + { + "expression": { + "id": 3741, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3734, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3732, + "src": "55187:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 3736, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "55225:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 3737, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3725, + "src": "55228:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3738, + "name": "args", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3727, + "src": "55244:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 3739, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3729, + "src": "55250:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3735, + "name": "deployDeterministicERC1967", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3593, + 3607, + 3744, + 3760 + ], + "referencedDeclaration": 3760, + "src": "55198:26:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (uint256,address,bytes memory,bytes32) returns (address)" + } + }, + "id": 3740, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "55198:57:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "55187:68:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3742, + "nodeType": "ExpressionStatement", + "src": "55187:68:10" + } + ] + }, + "documentation": { + "id": 3723, + "nodeType": "StructuredDocumentation", + "src": "54927:96:10", + "text": "@dev Deploys a deterministic minimal ERC1967 proxy with `implementation`, `args` and `salt`." + }, + "id": 3744, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployDeterministicERC1967", + "nameLocation": "55037:26:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3730, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3725, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "55072:14:10", + "nodeType": "VariableDeclaration", + "scope": 3744, + "src": "55064:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3724, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "55064:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3727, + "mutability": "mutable", + "name": "args", + "nameLocation": "55101:4:10", + "nodeType": "VariableDeclaration", + "scope": 3744, + "src": "55088:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3726, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "55088:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3729, + "mutability": "mutable", + "name": "salt", + "nameLocation": "55115:4:10", + "nodeType": "VariableDeclaration", + "scope": 3744, + "src": "55107:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3728, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "55107:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "55063:57:10" + }, + "returnParameters": { + "id": 3733, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3732, + "mutability": "mutable", + "name": "instance", + "nameLocation": "55163:8:10", + "nodeType": "VariableDeclaration", + "scope": 3744, + "src": "55155:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3731, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "55155:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "55154:18:10" + }, + "scope": 5104, + "src": "55028:234:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3759, + "nodeType": "Block", + "src": "55599:906:10", + "statements": [ + { + "AST": { + "nativeSrc": "55661:838:10", + "nodeType": "YulBlock", + "src": "55661:838:10", + "statements": [ + { + "nativeSrc": "55675:20:10", + "nodeType": "YulVariableDeclaration", + "src": "55675:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "55690:4:10", + "nodeType": "YulLiteral", + "src": "55690:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "55684:5:10", + "nodeType": "YulIdentifier", + "src": "55684:5:10" + }, + "nativeSrc": "55684:11:10", + "nodeType": "YulFunctionCall", + "src": "55684:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "55679:1:10", + "nodeType": "YulTypedName", + "src": "55679:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "55708:20:10", + "nodeType": "YulVariableDeclaration", + "src": "55708:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "55723:4:10", + "nodeType": "YulIdentifier", + "src": "55723:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "55717:5:10", + "nodeType": "YulIdentifier", + "src": "55717:5:10" + }, + "nativeSrc": "55717:11:10", + "nodeType": "YulFunctionCall", + "src": "55717:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "55712:1:10", + "nodeType": "YulTypedName", + "src": "55712:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "55756:3:10", + "nodeType": "YulIdentifier", + "src": "55756:3:10" + }, + "nativeSrc": "55756:5:10", + "nodeType": "YulFunctionCall", + "src": "55756:5:10" + }, + { + "kind": "number", + "nativeSrc": "55763:1:10", + "nodeType": "YulLiteral", + "src": "55763:1:10", + "type": "", + "value": "4" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "55770:4:10", + "nodeType": "YulIdentifier", + "src": "55770:4:10" + }, + { + "kind": "number", + "nativeSrc": "55776:4:10", + "nodeType": "YulLiteral", + "src": "55776:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "55766:3:10", + "nodeType": "YulIdentifier", + "src": "55766:3:10" + }, + "nativeSrc": "55766:15:10", + "nodeType": "YulFunctionCall", + "src": "55766:15:10" + }, + { + "name": "n", + "nativeSrc": "55783:1:10", + "nodeType": "YulIdentifier", + "src": "55783:1:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "55790:1:10", + "nodeType": "YulIdentifier", + "src": "55790:1:10" + }, + { + "kind": "number", + "nativeSrc": "55793:4:10", + "nodeType": "YulLiteral", + "src": "55793:4:10", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "55786:3:10", + "nodeType": "YulIdentifier", + "src": "55786:3:10" + }, + "nativeSrc": "55786:12:10", + "nodeType": "YulFunctionCall", + "src": "55786:12:10" + }, + { + "name": "n", + "nativeSrc": "55800:1:10", + "nodeType": "YulIdentifier", + "src": "55800:1:10" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "55745:10:10", + "nodeType": "YulIdentifier", + "src": "55745:10:10" + }, + "nativeSrc": "55745:57:10", + "nodeType": "YulFunctionCall", + "src": "55745:57:10" + } + ], + "functionName": { + "name": "pop", + "nativeSrc": "55741:3:10", + "nodeType": "YulIdentifier", + "src": "55741:3:10" + }, + "nativeSrc": "55741:62:10", + "nodeType": "YulFunctionCall", + "src": "55741:62:10" + }, + "nativeSrc": "55741:62:10", + "nodeType": "YulExpressionStatement", + "src": "55741:62:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "55827:1:10", + "nodeType": "YulIdentifier", + "src": "55827:1:10" + }, + { + "kind": "number", + "nativeSrc": "55830:4:10", + "nodeType": "YulLiteral", + "src": "55830:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "55823:3:10", + "nodeType": "YulIdentifier", + "src": "55823:3:10" + }, + "nativeSrc": "55823:12:10", + "nodeType": "YulFunctionCall", + "src": "55823:12:10" + }, + { + "kind": "number", + "nativeSrc": "55837:66:10", + "nodeType": "YulLiteral", + "src": "55837:66:10", + "type": "", + "value": "0xcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "55816:6:10", + "nodeType": "YulIdentifier", + "src": "55816:6:10" + }, + "nativeSrc": "55816:88:10", + "nodeType": "YulFunctionCall", + "src": "55816:88:10" + }, + "nativeSrc": "55816:88:10", + "nodeType": "YulExpressionStatement", + "src": "55816:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "55928:1:10", + "nodeType": "YulIdentifier", + "src": "55928:1:10" + }, + { + "kind": "number", + "nativeSrc": "55931:4:10", + "nodeType": "YulLiteral", + "src": "55931:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "55924:3:10", + "nodeType": "YulIdentifier", + "src": "55924:3:10" + }, + "nativeSrc": "55924:12:10", + "nodeType": "YulFunctionCall", + "src": "55924:12:10" + }, + { + "kind": "number", + "nativeSrc": "55938:66:10", + "nodeType": "YulLiteral", + "src": "55938:66:10", + "type": "", + "value": "0x5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "55917:6:10", + "nodeType": "YulIdentifier", + "src": "55917:6:10" + }, + "nativeSrc": "55917:88:10", + "nodeType": "YulFunctionCall", + "src": "55917:88:10" + }, + "nativeSrc": "55917:88:10", + "nodeType": "YulExpressionStatement", + "src": "55917:88:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "56025:4:10", + "nodeType": "YulLiteral", + "src": "56025:4:10", + "type": "", + "value": "0x16" + }, + { + "kind": "number", + "nativeSrc": "56031:6:10", + "nodeType": "YulLiteral", + "src": "56031:6:10", + "type": "", + "value": "0x6009" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "56018:6:10", + "nodeType": "YulIdentifier", + "src": "56018:6:10" + }, + "nativeSrc": "56018:20:10", + "nodeType": "YulFunctionCall", + "src": "56018:20:10" + }, + "nativeSrc": "56018:20:10", + "nodeType": "YulExpressionStatement", + "src": "56018:20:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "56058:4:10", + "nodeType": "YulLiteral", + "src": "56058:4:10", + "type": "", + "value": "0x14" + }, + { + "name": "implementation", + "nativeSrc": "56064:14:10", + "nodeType": "YulIdentifier", + "src": "56064:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "56051:6:10", + "nodeType": "YulIdentifier", + "src": "56051:6:10" + }, + "nativeSrc": "56051:28:10", + "nodeType": "YulFunctionCall", + "src": "56051:28:10" + }, + "nativeSrc": "56051:28:10", + "nodeType": "YulExpressionStatement", + "src": "56051:28:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "n", + "nativeSrc": "56189:1:10", + "nodeType": "YulIdentifier", + "src": "56189:1:10" + }, + { + "kind": "number", + "nativeSrc": "56192:6:10", + "nodeType": "YulLiteral", + "src": "56192:6:10", + "type": "", + "value": "0xffc2" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "56186:2:10", + "nodeType": "YulIdentifier", + "src": "56186:2:10" + }, + "nativeSrc": "56186:13:10", + "nodeType": "YulFunctionCall", + "src": "56186:13:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "56205:24:10", + "nodeType": "YulLiteral", + "src": "56205:24:10", + "type": "", + "value": "0xfe61003d3d8160233d3973" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "56235:2:10", + "nodeType": "YulLiteral", + "src": "56235:2:10", + "type": "", + "value": "56" + }, + { + "name": "n", + "nativeSrc": "56239:1:10", + "nodeType": "YulIdentifier", + "src": "56239:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "56231:3:10", + "nodeType": "YulIdentifier", + "src": "56231:3:10" + }, + "nativeSrc": "56231:10:10", + "nodeType": "YulFunctionCall", + "src": "56231:10:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "56201:3:10", + "nodeType": "YulIdentifier", + "src": "56201:3:10" + }, + "nativeSrc": "56201:41:10", + "nodeType": "YulFunctionCall", + "src": "56201:41:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "56179:6:10", + "nodeType": "YulIdentifier", + "src": "56179:6:10" + }, + "nativeSrc": "56179:64:10", + "nodeType": "YulFunctionCall", + "src": "56179:64:10" + }, + "nativeSrc": "56179:64:10", + "nodeType": "YulExpressionStatement", + "src": "56179:64:10" + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "56263:1:10", + "nodeType": "YulIdentifier", + "src": "56263:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "56272:4:10", + "nodeType": "YulLiteral", + "src": "56272:4:10", + "type": "", + "value": "0x16" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "56266:5:10", + "nodeType": "YulIdentifier", + "src": "56266:5:10" + }, + "nativeSrc": "56266:11:10", + "nodeType": "YulFunctionCall", + "src": "56266:11:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "56256:6:10", + "nodeType": "YulIdentifier", + "src": "56256:6:10" + }, + "nativeSrc": "56256:22:10", + "nodeType": "YulFunctionCall", + "src": "56256:22:10" + }, + "nativeSrc": "56256:22:10", + "nodeType": "YulExpressionStatement", + "src": "56256:22:10" + }, + { + "nativeSrc": "56291:49:10", + "nodeType": "YulAssignment", + "src": "56291:49:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "56311:5:10", + "nodeType": "YulIdentifier", + "src": "56311:5:10" + }, + { + "name": "m", + "nativeSrc": "56318:1:10", + "nodeType": "YulIdentifier", + "src": "56318:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "56325:1:10", + "nodeType": "YulIdentifier", + "src": "56325:1:10" + }, + { + "kind": "number", + "nativeSrc": "56328:4:10", + "nodeType": "YulLiteral", + "src": "56328:4:10", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "56321:3:10", + "nodeType": "YulIdentifier", + "src": "56321:3:10" + }, + "nativeSrc": "56321:12:10", + "nodeType": "YulFunctionCall", + "src": "56321:12:10" + }, + { + "name": "salt", + "nativeSrc": "56335:4:10", + "nodeType": "YulIdentifier", + "src": "56335:4:10" + } + ], + "functionName": { + "name": "create2", + "nativeSrc": "56303:7:10", + "nodeType": "YulIdentifier", + "src": "56303:7:10" + }, + "nativeSrc": "56303:37:10", + "nodeType": "YulFunctionCall", + "src": "56303:37:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "56291:8:10", + "nodeType": "YulIdentifier", + "src": "56291:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "56373:116:10", + "nodeType": "YulBlock", + "src": "56373:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "56398:4:10", + "nodeType": "YulLiteral", + "src": "56398:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "56404:10:10", + "nodeType": "YulLiteral", + "src": "56404:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "56391:6:10", + "nodeType": "YulIdentifier", + "src": "56391:6:10" + }, + "nativeSrc": "56391:24:10", + "nodeType": "YulFunctionCall", + "src": "56391:24:10" + }, + "nativeSrc": "56391:24:10", + "nodeType": "YulExpressionStatement", + "src": "56391:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "56464:4:10", + "nodeType": "YulLiteral", + "src": "56464:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "56470:4:10", + "nodeType": "YulLiteral", + "src": "56470:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "56457:6:10", + "nodeType": "YulIdentifier", + "src": "56457:6:10" + }, + "nativeSrc": "56457:18:10", + "nodeType": "YulFunctionCall", + "src": "56457:18:10" + }, + "nativeSrc": "56457:18:10", + "nodeType": "YulExpressionStatement", + "src": "56457:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "56363:8:10", + "nodeType": "YulIdentifier", + "src": "56363:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "56356:6:10", + "nodeType": "YulIdentifier", + "src": "56356:6:10" + }, + "nativeSrc": "56356:16:10", + "nodeType": "YulFunctionCall", + "src": "56356:16:10" + }, + "nativeSrc": "56353:136:10", + "nodeType": "YulIf", + "src": "56353:136:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3751, + "isOffset": false, + "isSlot": false, + "src": "55723:4:10", + "valueSize": 1 + }, + { + "declaration": 3751, + "isOffset": false, + "isSlot": false, + "src": "55770:4:10", + "valueSize": 1 + }, + { + "declaration": 3749, + "isOffset": false, + "isSlot": false, + "src": "56064:14:10", + "valueSize": 1 + }, + { + "declaration": 3756, + "isOffset": false, + "isSlot": false, + "src": "56291:8:10", + "valueSize": 1 + }, + { + "declaration": 3756, + "isOffset": false, + "isSlot": false, + "src": "56363:8:10", + "valueSize": 1 + }, + { + "declaration": 3753, + "isOffset": false, + "isSlot": false, + "src": "56335:4:10", + "valueSize": 1 + }, + { + "declaration": 3747, + "isOffset": false, + "isSlot": false, + "src": "56311:5:10", + "valueSize": 1 + } + ], + "id": 3758, + "nodeType": "InlineAssembly", + "src": "55652:847:10" + } + ] + }, + "documentation": { + "id": 3745, + "nodeType": "StructuredDocumentation", + "src": "55268:144:10", + "text": "@dev Deploys a deterministic minimal ERC1967 proxy with `implementation`, `args` and `salt`.\n Deposits `value` ETH during deployment." + }, + "id": 3760, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployDeterministicERC1967", + "nameLocation": "55426:26:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3754, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3747, + "mutability": "mutable", + "name": "value", + "nameLocation": "55470:5:10", + "nodeType": "VariableDeclaration", + "scope": 3760, + "src": "55462:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3746, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "55462:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3749, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "55493:14:10", + "nodeType": "VariableDeclaration", + "scope": 3760, + "src": "55485:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3748, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "55485:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3751, + "mutability": "mutable", + "name": "args", + "nameLocation": "55530:4:10", + "nodeType": "VariableDeclaration", + "scope": 3760, + "src": "55517:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3750, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "55517:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3753, + "mutability": "mutable", + "name": "salt", + "nameLocation": "55552:4:10", + "nodeType": "VariableDeclaration", + "scope": 3760, + "src": "55544:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3752, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "55544:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "55452:110:10" + }, + "returnParameters": { + "id": 3757, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3756, + "mutability": "mutable", + "name": "instance", + "nameLocation": "55589:8:10", + "nodeType": "VariableDeclaration", + "scope": 3760, + "src": "55581:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3755, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "55581:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "55580:18:10" + }, + "scope": 5104, + "src": "55417:1088:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3781, + "nodeType": "Block", + "src": "56926:81:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "30", + "id": 3775, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "56970:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 3776, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3763, + "src": "56973:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3777, + "name": "args", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3765, + "src": "56989:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 3778, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3767, + "src": "56995:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3774, + "name": "createDeterministicERC1967", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3626, + 3642, + 3782, + 3800 + ], + "referencedDeclaration": 3800, + "src": "56943:26:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$_t_bytes32_$returns$_t_bool_$_t_address_$", + "typeString": "function (uint256,address,bytes memory,bytes32) returns (bool,address)" + } + }, + "id": 3779, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "56943:57:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_address_$", + "typeString": "tuple(bool,address)" + } + }, + "functionReturnParameters": 3773, + "id": 3780, + "nodeType": "Return", + "src": "56936:64:10" + } + ] + }, + "documentation": { + "id": 3761, + "nodeType": "StructuredDocumentation", + "src": "56511:239:10", + "text": "@dev Creates a deterministic minimal ERC1967 proxy with `implementation`, `args` and `salt`.\n Note: This method is intended for use in ERC4337 factories,\n which are expected to NOT revert if the proxy is already deployed." + }, + "id": 3782, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createDeterministicERC1967", + "nameLocation": "56764:26:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3768, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3763, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "56799:14:10", + "nodeType": "VariableDeclaration", + "scope": 3782, + "src": "56791:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3762, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "56791:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3765, + "mutability": "mutable", + "name": "args", + "nameLocation": "56828:4:10", + "nodeType": "VariableDeclaration", + "scope": 3782, + "src": "56815:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3764, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "56815:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3767, + "mutability": "mutable", + "name": "salt", + "nameLocation": "56842:4:10", + "nodeType": "VariableDeclaration", + "scope": 3782, + "src": "56834:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3766, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "56834:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "56790:57:10" + }, + "returnParameters": { + "id": 3773, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3770, + "mutability": "mutable", + "name": "alreadyDeployed", + "nameLocation": "56887:15:10", + "nodeType": "VariableDeclaration", + "scope": 3782, + "src": "56882:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3769, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "56882:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3772, + "mutability": "mutable", + "name": "instance", + "nameLocation": "56912:8:10", + "nodeType": "VariableDeclaration", + "scope": 3782, + "src": "56904:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3771, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "56904:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "56881:40:10" + }, + "scope": 5104, + "src": "56755:252:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3799, + "nodeType": "Block", + "src": "57509:1773:10", + "statements": [ + { + "AST": { + "nativeSrc": "57571:1705:10", + "nodeType": "YulBlock", + "src": "57571:1705:10", + "statements": [ + { + "nativeSrc": "57585:20:10", + "nodeType": "YulVariableDeclaration", + "src": "57585:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "57600:4:10", + "nodeType": "YulLiteral", + "src": "57600:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "57594:5:10", + "nodeType": "YulIdentifier", + "src": "57594:5:10" + }, + "nativeSrc": "57594:11:10", + "nodeType": "YulFunctionCall", + "src": "57594:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "57589:1:10", + "nodeType": "YulTypedName", + "src": "57589:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "57618:20:10", + "nodeType": "YulVariableDeclaration", + "src": "57618:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "57633:4:10", + "nodeType": "YulIdentifier", + "src": "57633:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "57627:5:10", + "nodeType": "YulIdentifier", + "src": "57627:5:10" + }, + "nativeSrc": "57627:11:10", + "nodeType": "YulFunctionCall", + "src": "57627:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "57622:1:10", + "nodeType": "YulTypedName", + "src": "57622:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "57666:3:10", + "nodeType": "YulIdentifier", + "src": "57666:3:10" + }, + "nativeSrc": "57666:5:10", + "nodeType": "YulFunctionCall", + "src": "57666:5:10" + }, + { + "kind": "number", + "nativeSrc": "57673:1:10", + "nodeType": "YulLiteral", + "src": "57673:1:10", + "type": "", + "value": "4" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "57680:4:10", + "nodeType": "YulIdentifier", + "src": "57680:4:10" + }, + { + "kind": "number", + "nativeSrc": "57686:4:10", + "nodeType": "YulLiteral", + "src": "57686:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "57676:3:10", + "nodeType": "YulIdentifier", + "src": "57676:3:10" + }, + "nativeSrc": "57676:15:10", + "nodeType": "YulFunctionCall", + "src": "57676:15:10" + }, + { + "name": "n", + "nativeSrc": "57693:1:10", + "nodeType": "YulIdentifier", + "src": "57693:1:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "57700:1:10", + "nodeType": "YulIdentifier", + "src": "57700:1:10" + }, + { + "kind": "number", + "nativeSrc": "57703:4:10", + "nodeType": "YulLiteral", + "src": "57703:4:10", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "57696:3:10", + "nodeType": "YulIdentifier", + "src": "57696:3:10" + }, + "nativeSrc": "57696:12:10", + "nodeType": "YulFunctionCall", + "src": "57696:12:10" + }, + { + "name": "n", + "nativeSrc": "57710:1:10", + "nodeType": "YulIdentifier", + "src": "57710:1:10" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "57655:10:10", + "nodeType": "YulIdentifier", + "src": "57655:10:10" + }, + "nativeSrc": "57655:57:10", + "nodeType": "YulFunctionCall", + "src": "57655:57:10" + } + ], + "functionName": { + "name": "pop", + "nativeSrc": "57651:3:10", + "nodeType": "YulIdentifier", + "src": "57651:3:10" + }, + "nativeSrc": "57651:62:10", + "nodeType": "YulFunctionCall", + "src": "57651:62:10" + }, + "nativeSrc": "57651:62:10", + "nodeType": "YulExpressionStatement", + "src": "57651:62:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "57737:1:10", + "nodeType": "YulIdentifier", + "src": "57737:1:10" + }, + { + "kind": "number", + "nativeSrc": "57740:4:10", + "nodeType": "YulLiteral", + "src": "57740:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "57733:3:10", + "nodeType": "YulIdentifier", + "src": "57733:3:10" + }, + "nativeSrc": "57733:12:10", + "nodeType": "YulFunctionCall", + "src": "57733:12:10" + }, + { + "kind": "number", + "nativeSrc": "57747:66:10", + "nodeType": "YulLiteral", + "src": "57747:66:10", + "type": "", + "value": "0xcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "57726:6:10", + "nodeType": "YulIdentifier", + "src": "57726:6:10" + }, + "nativeSrc": "57726:88:10", + "nodeType": "YulFunctionCall", + "src": "57726:88:10" + }, + "nativeSrc": "57726:88:10", + "nodeType": "YulExpressionStatement", + "src": "57726:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "57838:1:10", + "nodeType": "YulIdentifier", + "src": "57838:1:10" + }, + { + "kind": "number", + "nativeSrc": "57841:4:10", + "nodeType": "YulLiteral", + "src": "57841:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "57834:3:10", + "nodeType": "YulIdentifier", + "src": "57834:3:10" + }, + "nativeSrc": "57834:12:10", + "nodeType": "YulFunctionCall", + "src": "57834:12:10" + }, + { + "kind": "number", + "nativeSrc": "57848:66:10", + "nodeType": "YulLiteral", + "src": "57848:66:10", + "type": "", + "value": "0x5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "57827:6:10", + "nodeType": "YulIdentifier", + "src": "57827:6:10" + }, + "nativeSrc": "57827:88:10", + "nodeType": "YulFunctionCall", + "src": "57827:88:10" + }, + "nativeSrc": "57827:88:10", + "nodeType": "YulExpressionStatement", + "src": "57827:88:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "57935:4:10", + "nodeType": "YulLiteral", + "src": "57935:4:10", + "type": "", + "value": "0x16" + }, + { + "kind": "number", + "nativeSrc": "57941:6:10", + "nodeType": "YulLiteral", + "src": "57941:6:10", + "type": "", + "value": "0x6009" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "57928:6:10", + "nodeType": "YulIdentifier", + "src": "57928:6:10" + }, + "nativeSrc": "57928:20:10", + "nodeType": "YulFunctionCall", + "src": "57928:20:10" + }, + "nativeSrc": "57928:20:10", + "nodeType": "YulExpressionStatement", + "src": "57928:20:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "57968:4:10", + "nodeType": "YulLiteral", + "src": "57968:4:10", + "type": "", + "value": "0x14" + }, + { + "name": "implementation", + "nativeSrc": "57974:14:10", + "nodeType": "YulIdentifier", + "src": "57974:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "57961:6:10", + "nodeType": "YulIdentifier", + "src": "57961:6:10" + }, + "nativeSrc": "57961:28:10", + "nodeType": "YulFunctionCall", + "src": "57961:28:10" + }, + "nativeSrc": "57961:28:10", + "nodeType": "YulExpressionStatement", + "src": "57961:28:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "n", + "nativeSrc": "58099:1:10", + "nodeType": "YulIdentifier", + "src": "58099:1:10" + }, + { + "kind": "number", + "nativeSrc": "58102:6:10", + "nodeType": "YulLiteral", + "src": "58102:6:10", + "type": "", + "value": "0xffc2" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "58096:2:10", + "nodeType": "YulIdentifier", + "src": "58096:2:10" + }, + "nativeSrc": "58096:13:10", + "nodeType": "YulFunctionCall", + "src": "58096:13:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "58115:24:10", + "nodeType": "YulLiteral", + "src": "58115:24:10", + "type": "", + "value": "0xfe61003d3d8160233d3973" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "58145:2:10", + "nodeType": "YulLiteral", + "src": "58145:2:10", + "type": "", + "value": "56" + }, + { + "name": "n", + "nativeSrc": "58149:1:10", + "nodeType": "YulIdentifier", + "src": "58149:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "58141:3:10", + "nodeType": "YulIdentifier", + "src": "58141:3:10" + }, + "nativeSrc": "58141:10:10", + "nodeType": "YulFunctionCall", + "src": "58141:10:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "58111:3:10", + "nodeType": "YulIdentifier", + "src": "58111:3:10" + }, + "nativeSrc": "58111:41:10", + "nodeType": "YulFunctionCall", + "src": "58111:41:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "58089:6:10", + "nodeType": "YulIdentifier", + "src": "58089:6:10" + }, + "nativeSrc": "58089:64:10", + "nodeType": "YulFunctionCall", + "src": "58089:64:10" + }, + "nativeSrc": "58089:64:10", + "nodeType": "YulExpressionStatement", + "src": "58089:64:10" + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "58173:1:10", + "nodeType": "YulIdentifier", + "src": "58173:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "58182:4:10", + "nodeType": "YulLiteral", + "src": "58182:4:10", + "type": "", + "value": "0x16" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "58176:5:10", + "nodeType": "YulIdentifier", + "src": "58176:5:10" + }, + "nativeSrc": "58176:11:10", + "nodeType": "YulFunctionCall", + "src": "58176:11:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "58166:6:10", + "nodeType": "YulIdentifier", + "src": "58166:6:10" + }, + "nativeSrc": "58166:22:10", + "nodeType": "YulFunctionCall", + "src": "58166:22:10" + }, + "nativeSrc": "58166:22:10", + "nodeType": "YulExpressionStatement", + "src": "58166:22:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "58261:4:10", + "nodeType": "YulLiteral", + "src": "58261:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "58267:4:10", + "nodeType": "YulLiteral", + "src": "58267:4:10", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "58253:7:10", + "nodeType": "YulIdentifier", + "src": "58253:7:10" + }, + "nativeSrc": "58253:19:10", + "nodeType": "YulFunctionCall", + "src": "58253:19:10" + }, + "nativeSrc": "58253:19:10", + "nodeType": "YulExpressionStatement", + "src": "58253:19:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "58313:4:10", + "nodeType": "YulLiteral", + "src": "58313:4:10", + "type": "", + "value": "0x35" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "58329:1:10", + "nodeType": "YulIdentifier", + "src": "58329:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "58336:1:10", + "nodeType": "YulIdentifier", + "src": "58336:1:10" + }, + { + "kind": "number", + "nativeSrc": "58339:4:10", + "nodeType": "YulLiteral", + "src": "58339:4:10", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "58332:3:10", + "nodeType": "YulIdentifier", + "src": "58332:3:10" + }, + "nativeSrc": "58332:12:10", + "nodeType": "YulFunctionCall", + "src": "58332:12:10" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "58319:9:10", + "nodeType": "YulIdentifier", + "src": "58319:9:10" + }, + "nativeSrc": "58319:26:10", + "nodeType": "YulFunctionCall", + "src": "58319:26:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "58306:6:10", + "nodeType": "YulIdentifier", + "src": "58306:6:10" + }, + "nativeSrc": "58306:40:10", + "nodeType": "YulFunctionCall", + "src": "58306:40:10" + }, + "nativeSrc": "58306:40:10", + "nodeType": "YulExpressionStatement", + "src": "58306:40:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "58366:4:10", + "nodeType": "YulLiteral", + "src": "58366:4:10", + "type": "", + "value": "0x01" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "58376:2:10", + "nodeType": "YulLiteral", + "src": "58376:2:10", + "type": "", + "value": "96" + }, + { + "arguments": [], + "functionName": { + "name": "address", + "nativeSrc": "58380:7:10", + "nodeType": "YulIdentifier", + "src": "58380:7:10" + }, + "nativeSrc": "58380:9:10", + "nodeType": "YulFunctionCall", + "src": "58380:9:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "58372:3:10", + "nodeType": "YulIdentifier", + "src": "58372:3:10" + }, + "nativeSrc": "58372:18:10", + "nodeType": "YulFunctionCall", + "src": "58372:18:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "58359:6:10", + "nodeType": "YulIdentifier", + "src": "58359:6:10" + }, + "nativeSrc": "58359:32:10", + "nodeType": "YulFunctionCall", + "src": "58359:32:10" + }, + "nativeSrc": "58359:32:10", + "nodeType": "YulExpressionStatement", + "src": "58359:32:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "58411:4:10", + "nodeType": "YulLiteral", + "src": "58411:4:10", + "type": "", + "value": "0x15" + }, + { + "name": "salt", + "nativeSrc": "58417:4:10", + "nodeType": "YulIdentifier", + "src": "58417:4:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "58404:6:10", + "nodeType": "YulIdentifier", + "src": "58404:6:10" + }, + "nativeSrc": "58404:18:10", + "nodeType": "YulFunctionCall", + "src": "58404:18:10" + }, + "nativeSrc": "58404:18:10", + "nodeType": "YulExpressionStatement", + "src": "58404:18:10" + }, + { + "nativeSrc": "58435:33:10", + "nodeType": "YulAssignment", + "src": "58435:33:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "58457:4:10", + "nodeType": "YulLiteral", + "src": "58457:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "58463:4:10", + "nodeType": "YulLiteral", + "src": "58463:4:10", + "type": "", + "value": "0x55" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "58447:9:10", + "nodeType": "YulIdentifier", + "src": "58447:9:10" + }, + "nativeSrc": "58447:21:10", + "nodeType": "YulFunctionCall", + "src": "58447:21:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "58435:8:10", + "nodeType": "YulIdentifier", + "src": "58435:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "58493:685:10", + "nodeType": "YulBlock", + "src": "58493:685:10", + "statements": [ + { + "body": { + "nativeSrc": "58544:296:10", + "nodeType": "YulBlock", + "src": "58544:296:10", + "statements": [ + { + "nativeSrc": "58566:49:10", + "nodeType": "YulAssignment", + "src": "58566:49:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "58586:5:10", + "nodeType": "YulIdentifier", + "src": "58586:5:10" + }, + { + "name": "m", + "nativeSrc": "58593:1:10", + "nodeType": "YulIdentifier", + "src": "58593:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "58600:1:10", + "nodeType": "YulIdentifier", + "src": "58600:1:10" + }, + { + "kind": "number", + "nativeSrc": "58603:4:10", + "nodeType": "YulLiteral", + "src": "58603:4:10", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "58596:3:10", + "nodeType": "YulIdentifier", + "src": "58596:3:10" + }, + "nativeSrc": "58596:12:10", + "nodeType": "YulFunctionCall", + "src": "58596:12:10" + }, + { + "name": "salt", + "nativeSrc": "58610:4:10", + "nodeType": "YulIdentifier", + "src": "58610:4:10" + } + ], + "functionName": { + "name": "create2", + "nativeSrc": "58578:7:10", + "nodeType": "YulIdentifier", + "src": "58578:7:10" + }, + "nativeSrc": "58578:37:10", + "nodeType": "YulFunctionCall", + "src": "58578:37:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "58566:8:10", + "nodeType": "YulIdentifier", + "src": "58566:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "58656:140:10", + "nodeType": "YulBlock", + "src": "58656:140:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "58689:4:10", + "nodeType": "YulLiteral", + "src": "58689:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "58695:10:10", + "nodeType": "YulLiteral", + "src": "58695:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "58682:6:10", + "nodeType": "YulIdentifier", + "src": "58682:6:10" + }, + "nativeSrc": "58682:24:10", + "nodeType": "YulFunctionCall", + "src": "58682:24:10" + }, + "nativeSrc": "58682:24:10", + "nodeType": "YulExpressionStatement", + "src": "58682:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "58763:4:10", + "nodeType": "YulLiteral", + "src": "58763:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "58769:4:10", + "nodeType": "YulLiteral", + "src": "58769:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "58756:6:10", + "nodeType": "YulIdentifier", + "src": "58756:6:10" + }, + "nativeSrc": "58756:18:10", + "nodeType": "YulFunctionCall", + "src": "58756:18:10" + }, + "nativeSrc": "58756:18:10", + "nodeType": "YulExpressionStatement", + "src": "58756:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "58646:8:10", + "nodeType": "YulIdentifier", + "src": "58646:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "58639:6:10", + "nodeType": "YulIdentifier", + "src": "58639:6:10" + }, + "nativeSrc": "58639:16:10", + "nodeType": "YulFunctionCall", + "src": "58639:16:10" + }, + "nativeSrc": "58636:160:10", + "nodeType": "YulIf", + "src": "58636:160:10" + }, + { + "nativeSrc": "58817:5:10", + "nodeType": "YulBreak", + "src": "58817:5:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "58533:8:10", + "nodeType": "YulIdentifier", + "src": "58533:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "58521:11:10", + "nodeType": "YulIdentifier", + "src": "58521:11:10" + }, + "nativeSrc": "58521:21:10", + "nodeType": "YulFunctionCall", + "src": "58521:21:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "58514:6:10", + "nodeType": "YulIdentifier", + "src": "58514:6:10" + }, + "nativeSrc": "58514:29:10", + "nodeType": "YulFunctionCall", + "src": "58514:29:10" + }, + "nativeSrc": "58511:329:10", + "nodeType": "YulIf", + "src": "58511:329:10" + }, + { + "nativeSrc": "58857:20:10", + "nodeType": "YulAssignment", + "src": "58857:20:10", + "value": { + "kind": "number", + "nativeSrc": "58876:1:10", + "nodeType": "YulLiteral", + "src": "58876:1:10", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "alreadyDeployed", + "nativeSrc": "58857:15:10", + "nodeType": "YulIdentifier", + "src": "58857:15:10" + } + ] + }, + { + "body": { + "nativeSrc": "58911:9:10", + "nodeType": "YulBlock", + "src": "58911:9:10", + "statements": [ + { + "nativeSrc": "58913:5:10", + "nodeType": "YulBreak", + "src": "58913:5:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nativeSrc": "58904:5:10", + "nodeType": "YulIdentifier", + "src": "58904:5:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "58897:6:10", + "nodeType": "YulIdentifier", + "src": "58897:6:10" + }, + "nativeSrc": "58897:13:10", + "nodeType": "YulFunctionCall", + "src": "58897:13:10" + }, + "nativeSrc": "58894:26:10", + "nodeType": "YulIf", + "src": "58894:26:10" + }, + { + "body": { + "nativeSrc": "59013:129:10", + "nodeType": "YulBlock", + "src": "59013:129:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "59042:4:10", + "nodeType": "YulLiteral", + "src": "59042:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "59048:10:10", + "nodeType": "YulLiteral", + "src": "59048:10:10", + "type": "", + "value": "0xb12d13eb" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "59035:6:10", + "nodeType": "YulIdentifier", + "src": "59035:6:10" + }, + "nativeSrc": "59035:24:10", + "nodeType": "YulFunctionCall", + "src": "59035:24:10" + }, + "nativeSrc": "59035:24:10", + "nodeType": "YulExpressionStatement", + "src": "59035:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "59113:4:10", + "nodeType": "YulLiteral", + "src": "59113:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "59119:4:10", + "nodeType": "YulLiteral", + "src": "59119:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "59106:6:10", + "nodeType": "YulIdentifier", + "src": "59106:6:10" + }, + "nativeSrc": "59106:18:10", + "nodeType": "YulFunctionCall", + "src": "59106:18:10" + }, + "nativeSrc": "59106:18:10", + "nodeType": "YulExpressionStatement", + "src": "59106:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "58952:3:10", + "nodeType": "YulIdentifier", + "src": "58952:3:10" + }, + "nativeSrc": "58952:5:10", + "nodeType": "YulFunctionCall", + "src": "58952:5:10" + }, + { + "name": "instance", + "nativeSrc": "58959:8:10", + "nodeType": "YulIdentifier", + "src": "58959:8:10" + }, + { + "name": "value", + "nativeSrc": "58969:5:10", + "nodeType": "YulIdentifier", + "src": "58969:5:10" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "58976:8:10", + "nodeType": "YulIdentifier", + "src": "58976:8:10" + }, + "nativeSrc": "58976:10:10", + "nodeType": "YulFunctionCall", + "src": "58976:10:10" + }, + { + "kind": "number", + "nativeSrc": "58988:4:10", + "nodeType": "YulLiteral", + "src": "58988:4:10", + "type": "", + "value": "0x00" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "58994:8:10", + "nodeType": "YulIdentifier", + "src": "58994:8:10" + }, + "nativeSrc": "58994:10:10", + "nodeType": "YulFunctionCall", + "src": "58994:10:10" + }, + { + "kind": "number", + "nativeSrc": "59006:4:10", + "nodeType": "YulLiteral", + "src": "59006:4:10", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "call", + "nativeSrc": "58947:4:10", + "nodeType": "YulIdentifier", + "src": "58947:4:10" + }, + "nativeSrc": "58947:64:10", + "nodeType": "YulFunctionCall", + "src": "58947:64:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "58940:6:10", + "nodeType": "YulIdentifier", + "src": "58940:6:10" + }, + "nativeSrc": "58940:72:10", + "nodeType": "YulFunctionCall", + "src": "58940:72:10" + }, + "nativeSrc": "58937:205:10", + "nodeType": "YulIf", + "src": "58937:205:10" + }, + { + "nativeSrc": "59159:5:10", + "nodeType": "YulBreak", + "src": "59159:5:10" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "58488:1:10", + "nodeType": "YulLiteral", + "src": "58488:1:10", + "type": "", + "value": "1" + }, + "nativeSrc": "58481:697:10", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "58490:2:10", + "nodeType": "YulBlock", + "src": "58490:2:10", + "statements": [] + }, + "pre": { + "nativeSrc": "58485:2:10", + "nodeType": "YulBlock", + "src": "58485:2:10", + "statements": [] + }, + "src": "58481:697:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "59198:4:10", + "nodeType": "YulLiteral", + "src": "59198:4:10", + "type": "", + "value": "0x35" + }, + { + "kind": "number", + "nativeSrc": "59204:1:10", + "nodeType": "YulLiteral", + "src": "59204:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "59191:6:10", + "nodeType": "YulIdentifier", + "src": "59191:6:10" + }, + "nativeSrc": "59191:15:10", + "nodeType": "YulFunctionCall", + "src": "59191:15:10" + }, + "nativeSrc": "59191:15:10", + "nodeType": "YulExpressionStatement", + "src": "59191:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3794, + "isOffset": false, + "isSlot": false, + "src": "58857:15:10", + "valueSize": 1 + }, + { + "declaration": 3789, + "isOffset": false, + "isSlot": false, + "src": "57633:4:10", + "valueSize": 1 + }, + { + "declaration": 3789, + "isOffset": false, + "isSlot": false, + "src": "57680:4:10", + "valueSize": 1 + }, + { + "declaration": 3787, + "isOffset": false, + "isSlot": false, + "src": "57974:14:10", + "valueSize": 1 + }, + { + "declaration": 3796, + "isOffset": false, + "isSlot": false, + "src": "58435:8:10", + "valueSize": 1 + }, + { + "declaration": 3796, + "isOffset": false, + "isSlot": false, + "src": "58533:8:10", + "valueSize": 1 + }, + { + "declaration": 3796, + "isOffset": false, + "isSlot": false, + "src": "58566:8:10", + "valueSize": 1 + }, + { + "declaration": 3796, + "isOffset": false, + "isSlot": false, + "src": "58646:8:10", + "valueSize": 1 + }, + { + "declaration": 3796, + "isOffset": false, + "isSlot": false, + "src": "58959:8:10", + "valueSize": 1 + }, + { + "declaration": 3791, + "isOffset": false, + "isSlot": false, + "src": "58417:4:10", + "valueSize": 1 + }, + { + "declaration": 3791, + "isOffset": false, + "isSlot": false, + "src": "58610:4:10", + "valueSize": 1 + }, + { + "declaration": 3785, + "isOffset": false, + "isSlot": false, + "src": "58586:5:10", + "valueSize": 1 + }, + { + "declaration": 3785, + "isOffset": false, + "isSlot": false, + "src": "58904:5:10", + "valueSize": 1 + }, + { + "declaration": 3785, + "isOffset": false, + "isSlot": false, + "src": "58969:5:10", + "valueSize": 1 + } + ], + "id": 3798, + "nodeType": "InlineAssembly", + "src": "57562:1714:10" + } + ] + }, + "documentation": { + "id": 3783, + "nodeType": "StructuredDocumentation", + "src": "57013:287:10", + "text": "@dev Creates a deterministic minimal ERC1967 proxy with `implementation`, `args` and `salt`.\n Deposits `value` ETH during deployment.\n Note: This method is intended for use in ERC4337 factories,\n which are expected to NOT revert if the proxy is already deployed." + }, + "id": 3800, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createDeterministicERC1967", + "nameLocation": "57314:26:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3792, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3785, + "mutability": "mutable", + "name": "value", + "nameLocation": "57358:5:10", + "nodeType": "VariableDeclaration", + "scope": 3800, + "src": "57350:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3784, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "57350:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3787, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "57381:14:10", + "nodeType": "VariableDeclaration", + "scope": 3800, + "src": "57373:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3786, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "57373:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3789, + "mutability": "mutable", + "name": "args", + "nameLocation": "57418:4:10", + "nodeType": "VariableDeclaration", + "scope": 3800, + "src": "57405:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3788, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "57405:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3791, + "mutability": "mutable", + "name": "salt", + "nameLocation": "57440:4:10", + "nodeType": "VariableDeclaration", + "scope": 3800, + "src": "57432:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3790, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "57432:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "57340:110:10" + }, + "returnParameters": { + "id": 3797, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3794, + "mutability": "mutable", + "name": "alreadyDeployed", + "nameLocation": "57474:15:10", + "nodeType": "VariableDeclaration", + "scope": 3800, + "src": "57469:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3793, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "57469:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3796, + "mutability": "mutable", + "name": "instance", + "nameLocation": "57499:8:10", + "nodeType": "VariableDeclaration", + "scope": 3800, + "src": "57491:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3795, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "57491:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "57468:40:10" + }, + "scope": 5104, + "src": "57305:1977:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3811, + "nodeType": "Block", + "src": "59529:1032:10", + "statements": [ + { + "AST": { + "nativeSrc": "59591:964:10", + "nodeType": "YulBlock", + "src": "59591:964:10", + "statements": [ + { + "nativeSrc": "59605:16:10", + "nodeType": "YulAssignment", + "src": "59605:16:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "59616:4:10", + "nodeType": "YulLiteral", + "src": "59616:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "59610:5:10", + "nodeType": "YulIdentifier", + "src": "59610:5:10" + }, + "nativeSrc": "59610:11:10", + "nodeType": "YulFunctionCall", + "src": "59610:11:10" + }, + "variableNames": [ + { + "name": "c", + "nativeSrc": "59605:1:10", + "nodeType": "YulIdentifier", + "src": "59605:1:10" + } + ] + }, + { + "nativeSrc": "59634:20:10", + "nodeType": "YulVariableDeclaration", + "src": "59634:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "59649:4:10", + "nodeType": "YulIdentifier", + "src": "59649:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "59643:5:10", + "nodeType": "YulIdentifier", + "src": "59643:5:10" + }, + "nativeSrc": "59643:11:10", + "nodeType": "YulFunctionCall", + "src": "59643:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "59638:1:10", + "nodeType": "YulTypedName", + "src": "59638:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "59769:14:10", + "nodeType": "YulIdentifier", + "src": "59769:14:10" + }, + "nativeSrc": "59769:16:10", + "nodeType": "YulFunctionCall", + "src": "59769:16:10" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "59787:14:10", + "nodeType": "YulIdentifier", + "src": "59787:14:10" + }, + "nativeSrc": "59787:16:10", + "nodeType": "YulFunctionCall", + "src": "59787:16:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "59808:1:10", + "nodeType": "YulIdentifier", + "src": "59808:1:10" + }, + { + "kind": "number", + "nativeSrc": "59811:6:10", + "nodeType": "YulLiteral", + "src": "59811:6:10", + "type": "", + "value": "0xffc2" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "59805:2:10", + "nodeType": "YulIdentifier", + "src": "59805:2:10" + }, + "nativeSrc": "59805:13:10", + "nodeType": "YulFunctionCall", + "src": "59805:13:10" + } + ], + "functionName": { + "name": "returndatacopy", + "nativeSrc": "59754:14:10", + "nodeType": "YulIdentifier", + "src": "59754:14:10" + }, + "nativeSrc": "59754:65:10", + "nodeType": "YulFunctionCall", + "src": "59754:65:10" + }, + "nativeSrc": "59754:65:10", + "nodeType": "YulExpressionStatement", + "src": "59754:65:10" + }, + { + "body": { + "nativeSrc": "59882:92:10", + "nodeType": "YulBlock", + "src": "59882:92:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "59915:1:10", + "nodeType": "YulIdentifier", + "src": "59915:1:10" + }, + { + "kind": "number", + "nativeSrc": "59918:4:10", + "nodeType": "YulLiteral", + "src": "59918:4:10", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "59911:3:10", + "nodeType": "YulIdentifier", + "src": "59911:3:10" + }, + "nativeSrc": "59911:12:10", + "nodeType": "YulFunctionCall", + "src": "59911:12:10" + }, + { + "name": "i", + "nativeSrc": "59925:1:10", + "nodeType": "YulIdentifier", + "src": "59925:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "59907:3:10", + "nodeType": "YulIdentifier", + "src": "59907:3:10" + }, + "nativeSrc": "59907:20:10", + "nodeType": "YulFunctionCall", + "src": "59907:20:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "59943:4:10", + "nodeType": "YulIdentifier", + "src": "59943:4:10" + }, + { + "kind": "number", + "nativeSrc": "59949:4:10", + "nodeType": "YulLiteral", + "src": "59949:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "59939:3:10", + "nodeType": "YulIdentifier", + "src": "59939:3:10" + }, + "nativeSrc": "59939:15:10", + "nodeType": "YulFunctionCall", + "src": "59939:15:10" + }, + { + "name": "i", + "nativeSrc": "59956:1:10", + "nodeType": "YulIdentifier", + "src": "59956:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "59935:3:10", + "nodeType": "YulIdentifier", + "src": "59935:3:10" + }, + "nativeSrc": "59935:23:10", + "nodeType": "YulFunctionCall", + "src": "59935:23:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "59929:5:10", + "nodeType": "YulIdentifier", + "src": "59929:5:10" + }, + "nativeSrc": "59929:30:10", + "nodeType": "YulFunctionCall", + "src": "59929:30:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "59900:6:10", + "nodeType": "YulIdentifier", + "src": "59900:6:10" + }, + "nativeSrc": "59900:60:10", + "nodeType": "YulFunctionCall", + "src": "59900:60:10" + }, + "nativeSrc": "59900:60:10", + "nodeType": "YulExpressionStatement", + "src": "59900:60:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "59854:1:10", + "nodeType": "YulIdentifier", + "src": "59854:1:10" + }, + { + "name": "n", + "nativeSrc": "59857:1:10", + "nodeType": "YulIdentifier", + "src": "59857:1:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "59851:2:10", + "nodeType": "YulIdentifier", + "src": "59851:2:10" + }, + "nativeSrc": "59851:8:10", + "nodeType": "YulFunctionCall", + "src": "59851:8:10" + }, + "nativeSrc": "59832:142:10", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "59860:21:10", + "nodeType": "YulBlock", + "src": "59860:21:10", + "statements": [ + { + "nativeSrc": "59862:17:10", + "nodeType": "YulAssignment", + "src": "59862:17:10", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "59871:1:10", + "nodeType": "YulIdentifier", + "src": "59871:1:10" + }, + { + "kind": "number", + "nativeSrc": "59874:4:10", + "nodeType": "YulLiteral", + "src": "59874:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "59867:3:10", + "nodeType": "YulIdentifier", + "src": "59867:3:10" + }, + "nativeSrc": "59867:12:10", + "nodeType": "YulFunctionCall", + "src": "59867:12:10" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "59862:1:10", + "nodeType": "YulIdentifier", + "src": "59862:1:10" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "59836:14:10", + "nodeType": "YulBlock", + "src": "59836:14:10", + "statements": [ + { + "nativeSrc": "59838:10:10", + "nodeType": "YulVariableDeclaration", + "src": "59838:10:10", + "value": { + "kind": "number", + "nativeSrc": "59847:1:10", + "nodeType": "YulLiteral", + "src": "59847:1:10", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "59842:1:10", + "nodeType": "YulTypedName", + "src": "59842:1:10", + "type": "" + } + ] + } + ] + }, + "src": "59832:142:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "59998:1:10", + "nodeType": "YulIdentifier", + "src": "59998:1:10" + }, + { + "kind": "number", + "nativeSrc": "60001:4:10", + "nodeType": "YulLiteral", + "src": "60001:4:10", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "59994:3:10", + "nodeType": "YulIdentifier", + "src": "59994:3:10" + }, + "nativeSrc": "59994:12:10", + "nodeType": "YulFunctionCall", + "src": "59994:12:10" + }, + { + "kind": "number", + "nativeSrc": "60008:66:10", + "nodeType": "YulLiteral", + "src": "60008:66:10", + "type": "", + "value": "0xcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "59987:6:10", + "nodeType": "YulIdentifier", + "src": "59987:6:10" + }, + "nativeSrc": "59987:88:10", + "nodeType": "YulFunctionCall", + "src": "59987:88:10" + }, + "nativeSrc": "59987:88:10", + "nodeType": "YulExpressionStatement", + "src": "59987:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "60099:1:10", + "nodeType": "YulIdentifier", + "src": "60099:1:10" + }, + { + "kind": "number", + "nativeSrc": "60102:4:10", + "nodeType": "YulLiteral", + "src": "60102:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "60095:3:10", + "nodeType": "YulIdentifier", + "src": "60095:3:10" + }, + "nativeSrc": "60095:12:10", + "nodeType": "YulFunctionCall", + "src": "60095:12:10" + }, + { + "kind": "number", + "nativeSrc": "60109:66:10", + "nodeType": "YulLiteral", + "src": "60109:66:10", + "type": "", + "value": "0x5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "60088:6:10", + "nodeType": "YulIdentifier", + "src": "60088:6:10" + }, + "nativeSrc": "60088:88:10", + "nodeType": "YulFunctionCall", + "src": "60088:88:10" + }, + "nativeSrc": "60088:88:10", + "nodeType": "YulExpressionStatement", + "src": "60088:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "60200:1:10", + "nodeType": "YulIdentifier", + "src": "60200:1:10" + }, + { + "kind": "number", + "nativeSrc": "60203:4:10", + "nodeType": "YulLiteral", + "src": "60203:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "60196:3:10", + "nodeType": "YulIdentifier", + "src": "60196:3:10" + }, + "nativeSrc": "60196:12:10", + "nodeType": "YulFunctionCall", + "src": "60196:12:10" + }, + { + "kind": "number", + "nativeSrc": "60210:6:10", + "nodeType": "YulLiteral", + "src": "60210:6:10", + "type": "", + "value": "0x6009" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "60189:6:10", + "nodeType": "YulIdentifier", + "src": "60189:6:10" + }, + "nativeSrc": "60189:28:10", + "nodeType": "YulFunctionCall", + "src": "60189:28:10" + }, + "nativeSrc": "60189:28:10", + "nodeType": "YulExpressionStatement", + "src": "60189:28:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "60241:1:10", + "nodeType": "YulIdentifier", + "src": "60241:1:10" + }, + { + "kind": "number", + "nativeSrc": "60244:4:10", + "nodeType": "YulLiteral", + "src": "60244:4:10", + "type": "", + "value": "0x1e" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "60237:3:10", + "nodeType": "YulIdentifier", + "src": "60237:3:10" + }, + "nativeSrc": "60237:12:10", + "nodeType": "YulFunctionCall", + "src": "60237:12:10" + }, + { + "name": "implementation", + "nativeSrc": "60251:14:10", + "nodeType": "YulIdentifier", + "src": "60251:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "60230:6:10", + "nodeType": "YulIdentifier", + "src": "60230:6:10" + }, + "nativeSrc": "60230:36:10", + "nodeType": "YulFunctionCall", + "src": "60230:36:10" + }, + "nativeSrc": "60230:36:10", + "nodeType": "YulExpressionStatement", + "src": "60230:36:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "60290:1:10", + "nodeType": "YulIdentifier", + "src": "60290:1:10" + }, + { + "kind": "number", + "nativeSrc": "60293:4:10", + "nodeType": "YulLiteral", + "src": "60293:4:10", + "type": "", + "value": "0x0a" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "60286:3:10", + "nodeType": "YulIdentifier", + "src": "60286:3:10" + }, + "nativeSrc": "60286:12:10", + "nodeType": "YulFunctionCall", + "src": "60286:12:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "60304:22:10", + "nodeType": "YulLiteral", + "src": "60304:22:10", + "type": "", + "value": "0x61003d3d8160233d3973" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "60332:2:10", + "nodeType": "YulLiteral", + "src": "60332:2:10", + "type": "", + "value": "56" + }, + { + "name": "n", + "nativeSrc": "60336:1:10", + "nodeType": "YulIdentifier", + "src": "60336:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "60328:3:10", + "nodeType": "YulIdentifier", + "src": "60328:3:10" + }, + "nativeSrc": "60328:10:10", + "nodeType": "YulFunctionCall", + "src": "60328:10:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "60300:3:10", + "nodeType": "YulIdentifier", + "src": "60300:3:10" + }, + "nativeSrc": "60300:39:10", + "nodeType": "YulFunctionCall", + "src": "60300:39:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "60279:6:10", + "nodeType": "YulIdentifier", + "src": "60279:6:10" + }, + "nativeSrc": "60279:61:10", + "nodeType": "YulFunctionCall", + "src": "60279:61:10" + }, + "nativeSrc": "60279:61:10", + "nodeType": "YulExpressionStatement", + "src": "60279:61:10" + }, + { + "expression": { + "arguments": [ + { + "name": "c", + "nativeSrc": "60360:1:10", + "nodeType": "YulIdentifier", + "src": "60360:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "60367:1:10", + "nodeType": "YulIdentifier", + "src": "60367:1:10" + }, + { + "kind": "number", + "nativeSrc": "60370:4:10", + "nodeType": "YulLiteral", + "src": "60370:4:10", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "60363:3:10", + "nodeType": "YulIdentifier", + "src": "60363:3:10" + }, + "nativeSrc": "60363:12:10", + "nodeType": "YulFunctionCall", + "src": "60363:12:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "60353:6:10", + "nodeType": "YulIdentifier", + "src": "60353:6:10" + }, + "nativeSrc": "60353:23:10", + "nodeType": "YulFunctionCall", + "src": "60353:23:10" + }, + "nativeSrc": "60353:23:10", + "nodeType": "YulExpressionStatement", + "src": "60353:23:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "60421:1:10", + "nodeType": "YulIdentifier", + "src": "60421:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "60428:1:10", + "nodeType": "YulIdentifier", + "src": "60428:1:10" + }, + { + "kind": "number", + "nativeSrc": "60431:4:10", + "nodeType": "YulLiteral", + "src": "60431:4:10", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "60424:3:10", + "nodeType": "YulIdentifier", + "src": "60424:3:10" + }, + "nativeSrc": "60424:12:10", + "nodeType": "YulFunctionCall", + "src": "60424:12:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "60417:3:10", + "nodeType": "YulIdentifier", + "src": "60417:3:10" + }, + "nativeSrc": "60417:20:10", + "nodeType": "YulFunctionCall", + "src": "60417:20:10" + }, + { + "kind": "number", + "nativeSrc": "60439:1:10", + "nodeType": "YulLiteral", + "src": "60439:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "60410:6:10", + "nodeType": "YulIdentifier", + "src": "60410:6:10" + }, + "nativeSrc": "60410:31:10", + "nodeType": "YulFunctionCall", + "src": "60410:31:10" + }, + "nativeSrc": "60410:31:10", + "nodeType": "YulExpressionStatement", + "src": "60410:31:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "60498:4:10", + "nodeType": "YulLiteral", + "src": "60498:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "c", + "nativeSrc": "60508:1:10", + "nodeType": "YulIdentifier", + "src": "60508:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "60515:1:10", + "nodeType": "YulIdentifier", + "src": "60515:1:10" + }, + { + "kind": "number", + "nativeSrc": "60518:4:10", + "nodeType": "YulLiteral", + "src": "60518:4:10", + "type": "", + "value": "0xa0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "60511:3:10", + "nodeType": "YulIdentifier", + "src": "60511:3:10" + }, + "nativeSrc": "60511:12:10", + "nodeType": "YulFunctionCall", + "src": "60511:12:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "60504:3:10", + "nodeType": "YulIdentifier", + "src": "60504:3:10" + }, + "nativeSrc": "60504:20:10", + "nodeType": "YulFunctionCall", + "src": "60504:20:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "60491:6:10", + "nodeType": "YulIdentifier", + "src": "60491:6:10" + }, + "nativeSrc": "60491:34:10", + "nodeType": "YulFunctionCall", + "src": "60491:34:10" + }, + "nativeSrc": "60491:34:10", + "nodeType": "YulExpressionStatement", + "src": "60491:34:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3805, + "isOffset": false, + "isSlot": false, + "src": "59649:4:10", + "valueSize": 1 + }, + { + "declaration": 3805, + "isOffset": false, + "isSlot": false, + "src": "59943:4:10", + "valueSize": 1 + }, + { + "declaration": 3808, + "isOffset": false, + "isSlot": false, + "src": "59605:1:10", + "valueSize": 1 + }, + { + "declaration": 3808, + "isOffset": false, + "isSlot": false, + "src": "59915:1:10", + "valueSize": 1 + }, + { + "declaration": 3808, + "isOffset": false, + "isSlot": false, + "src": "59998:1:10", + "valueSize": 1 + }, + { + "declaration": 3808, + "isOffset": false, + "isSlot": false, + "src": "60099:1:10", + "valueSize": 1 + }, + { + "declaration": 3808, + "isOffset": false, + "isSlot": false, + "src": "60200:1:10", + "valueSize": 1 + }, + { + "declaration": 3808, + "isOffset": false, + "isSlot": false, + "src": "60241:1:10", + "valueSize": 1 + }, + { + "declaration": 3808, + "isOffset": false, + "isSlot": false, + "src": "60290:1:10", + "valueSize": 1 + }, + { + "declaration": 3808, + "isOffset": false, + "isSlot": false, + "src": "60360:1:10", + "valueSize": 1 + }, + { + "declaration": 3808, + "isOffset": false, + "isSlot": false, + "src": "60421:1:10", + "valueSize": 1 + }, + { + "declaration": 3808, + "isOffset": false, + "isSlot": false, + "src": "60508:1:10", + "valueSize": 1 + }, + { + "declaration": 3803, + "isOffset": false, + "isSlot": false, + "src": "60251:14:10", + "valueSize": 1 + } + ], + "id": 3810, + "nodeType": "InlineAssembly", + "src": "59582:973:10" + } + ] + }, + "documentation": { + "id": 3801, + "nodeType": "StructuredDocumentation", + "src": "59288:101:10", + "text": "@dev Returns the initialization code of the minimal ERC1967 proxy of `implementation` and `args`." + }, + "id": 3812, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeERC1967", + "nameLocation": "59403:15:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3806, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3803, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "59427:14:10", + "nodeType": "VariableDeclaration", + "scope": 3812, + "src": "59419:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3802, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "59419:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3805, + "mutability": "mutable", + "name": "args", + "nameLocation": "59456:4:10", + "nodeType": "VariableDeclaration", + "scope": 3812, + "src": "59443:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3804, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "59443:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "59418:43:10" + }, + "returnParameters": { + "id": 3809, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3808, + "mutability": "mutable", + "name": "c", + "nameLocation": "59522:1:10", + "nodeType": "VariableDeclaration", + "scope": 3812, + "src": "59509:14:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3807, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "59509:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "59508:16:10" + }, + "scope": 5104, + "src": "59394:1167:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3823, + "nodeType": "Block", + "src": "60815:889:10", + "statements": [ + { + "AST": { + "nativeSrc": "60877:821:10", + "nodeType": "YulBlock", + "src": "60877:821:10", + "statements": [ + { + "nativeSrc": "60891:20:10", + "nodeType": "YulVariableDeclaration", + "src": "60891:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "60906:4:10", + "nodeType": "YulLiteral", + "src": "60906:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "60900:5:10", + "nodeType": "YulIdentifier", + "src": "60900:5:10" + }, + "nativeSrc": "60900:11:10", + "nodeType": "YulFunctionCall", + "src": "60900:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "60895:1:10", + "nodeType": "YulTypedName", + "src": "60895:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "60924:20:10", + "nodeType": "YulVariableDeclaration", + "src": "60924:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "60939:4:10", + "nodeType": "YulIdentifier", + "src": "60939:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "60933:5:10", + "nodeType": "YulIdentifier", + "src": "60933:5:10" + }, + "nativeSrc": "60933:11:10", + "nodeType": "YulFunctionCall", + "src": "60933:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "60928:1:10", + "nodeType": "YulTypedName", + "src": "60928:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "61059:14:10", + "nodeType": "YulIdentifier", + "src": "61059:14:10" + }, + "nativeSrc": "61059:16:10", + "nodeType": "YulFunctionCall", + "src": "61059:16:10" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "61077:14:10", + "nodeType": "YulIdentifier", + "src": "61077:14:10" + }, + "nativeSrc": "61077:16:10", + "nodeType": "YulFunctionCall", + "src": "61077:16:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "61098:1:10", + "nodeType": "YulIdentifier", + "src": "61098:1:10" + }, + { + "kind": "number", + "nativeSrc": "61101:6:10", + "nodeType": "YulLiteral", + "src": "61101:6:10", + "type": "", + "value": "0xffc2" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "61095:2:10", + "nodeType": "YulIdentifier", + "src": "61095:2:10" + }, + "nativeSrc": "61095:13:10", + "nodeType": "YulFunctionCall", + "src": "61095:13:10" + } + ], + "functionName": { + "name": "returndatacopy", + "nativeSrc": "61044:14:10", + "nodeType": "YulIdentifier", + "src": "61044:14:10" + }, + "nativeSrc": "61044:65:10", + "nodeType": "YulFunctionCall", + "src": "61044:65:10" + }, + "nativeSrc": "61044:65:10", + "nodeType": "YulExpressionStatement", + "src": "61044:65:10" + }, + { + "body": { + "nativeSrc": "61172:92:10", + "nodeType": "YulBlock", + "src": "61172:92:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "61205:1:10", + "nodeType": "YulIdentifier", + "src": "61205:1:10" + }, + { + "kind": "number", + "nativeSrc": "61208:4:10", + "nodeType": "YulLiteral", + "src": "61208:4:10", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "61201:3:10", + "nodeType": "YulIdentifier", + "src": "61201:3:10" + }, + "nativeSrc": "61201:12:10", + "nodeType": "YulFunctionCall", + "src": "61201:12:10" + }, + { + "name": "i", + "nativeSrc": "61215:1:10", + "nodeType": "YulIdentifier", + "src": "61215:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "61197:3:10", + "nodeType": "YulIdentifier", + "src": "61197:3:10" + }, + "nativeSrc": "61197:20:10", + "nodeType": "YulFunctionCall", + "src": "61197:20:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "61233:4:10", + "nodeType": "YulIdentifier", + "src": "61233:4:10" + }, + { + "kind": "number", + "nativeSrc": "61239:4:10", + "nodeType": "YulLiteral", + "src": "61239:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "61229:3:10", + "nodeType": "YulIdentifier", + "src": "61229:3:10" + }, + "nativeSrc": "61229:15:10", + "nodeType": "YulFunctionCall", + "src": "61229:15:10" + }, + { + "name": "i", + "nativeSrc": "61246:1:10", + "nodeType": "YulIdentifier", + "src": "61246:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "61225:3:10", + "nodeType": "YulIdentifier", + "src": "61225:3:10" + }, + "nativeSrc": "61225:23:10", + "nodeType": "YulFunctionCall", + "src": "61225:23:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "61219:5:10", + "nodeType": "YulIdentifier", + "src": "61219:5:10" + }, + "nativeSrc": "61219:30:10", + "nodeType": "YulFunctionCall", + "src": "61219:30:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "61190:6:10", + "nodeType": "YulIdentifier", + "src": "61190:6:10" + }, + "nativeSrc": "61190:60:10", + "nodeType": "YulFunctionCall", + "src": "61190:60:10" + }, + "nativeSrc": "61190:60:10", + "nodeType": "YulExpressionStatement", + "src": "61190:60:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "61144:1:10", + "nodeType": "YulIdentifier", + "src": "61144:1:10" + }, + { + "name": "n", + "nativeSrc": "61147:1:10", + "nodeType": "YulIdentifier", + "src": "61147:1:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "61141:2:10", + "nodeType": "YulIdentifier", + "src": "61141:2:10" + }, + "nativeSrc": "61141:8:10", + "nodeType": "YulFunctionCall", + "src": "61141:8:10" + }, + "nativeSrc": "61122:142:10", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "61150:21:10", + "nodeType": "YulBlock", + "src": "61150:21:10", + "statements": [ + { + "nativeSrc": "61152:17:10", + "nodeType": "YulAssignment", + "src": "61152:17:10", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "61161:1:10", + "nodeType": "YulIdentifier", + "src": "61161:1:10" + }, + { + "kind": "number", + "nativeSrc": "61164:4:10", + "nodeType": "YulLiteral", + "src": "61164:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "61157:3:10", + "nodeType": "YulIdentifier", + "src": "61157:3:10" + }, + "nativeSrc": "61157:12:10", + "nodeType": "YulFunctionCall", + "src": "61157:12:10" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "61152:1:10", + "nodeType": "YulIdentifier", + "src": "61152:1:10" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "61126:14:10", + "nodeType": "YulBlock", + "src": "61126:14:10", + "statements": [ + { + "nativeSrc": "61128:10:10", + "nodeType": "YulVariableDeclaration", + "src": "61128:10:10", + "value": { + "kind": "number", + "nativeSrc": "61137:1:10", + "nodeType": "YulLiteral", + "src": "61137:1:10", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "61132:1:10", + "nodeType": "YulTypedName", + "src": "61132:1:10", + "type": "" + } + ] + } + ] + }, + "src": "61122:142:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "61288:1:10", + "nodeType": "YulIdentifier", + "src": "61288:1:10" + }, + { + "kind": "number", + "nativeSrc": "61291:4:10", + "nodeType": "YulLiteral", + "src": "61291:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "61284:3:10", + "nodeType": "YulIdentifier", + "src": "61284:3:10" + }, + "nativeSrc": "61284:12:10", + "nodeType": "YulFunctionCall", + "src": "61284:12:10" + }, + { + "kind": "number", + "nativeSrc": "61298:66:10", + "nodeType": "YulLiteral", + "src": "61298:66:10", + "type": "", + "value": "0xcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "61277:6:10", + "nodeType": "YulIdentifier", + "src": "61277:6:10" + }, + "nativeSrc": "61277:88:10", + "nodeType": "YulFunctionCall", + "src": "61277:88:10" + }, + "nativeSrc": "61277:88:10", + "nodeType": "YulExpressionStatement", + "src": "61277:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "61389:1:10", + "nodeType": "YulIdentifier", + "src": "61389:1:10" + }, + { + "kind": "number", + "nativeSrc": "61392:4:10", + "nodeType": "YulLiteral", + "src": "61392:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "61385:3:10", + "nodeType": "YulIdentifier", + "src": "61385:3:10" + }, + "nativeSrc": "61385:12:10", + "nodeType": "YulFunctionCall", + "src": "61385:12:10" + }, + { + "kind": "number", + "nativeSrc": "61399:66:10", + "nodeType": "YulLiteral", + "src": "61399:66:10", + "type": "", + "value": "0x5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "61378:6:10", + "nodeType": "YulIdentifier", + "src": "61378:6:10" + }, + "nativeSrc": "61378:88:10", + "nodeType": "YulFunctionCall", + "src": "61378:88:10" + }, + "nativeSrc": "61378:88:10", + "nodeType": "YulExpressionStatement", + "src": "61378:88:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "61486:4:10", + "nodeType": "YulLiteral", + "src": "61486:4:10", + "type": "", + "value": "0x16" + }, + { + "kind": "number", + "nativeSrc": "61492:6:10", + "nodeType": "YulLiteral", + "src": "61492:6:10", + "type": "", + "value": "0x6009" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "61479:6:10", + "nodeType": "YulIdentifier", + "src": "61479:6:10" + }, + "nativeSrc": "61479:20:10", + "nodeType": "YulFunctionCall", + "src": "61479:20:10" + }, + "nativeSrc": "61479:20:10", + "nodeType": "YulExpressionStatement", + "src": "61479:20:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "61519:4:10", + "nodeType": "YulLiteral", + "src": "61519:4:10", + "type": "", + "value": "0x14" + }, + { + "name": "implementation", + "nativeSrc": "61525:14:10", + "nodeType": "YulIdentifier", + "src": "61525:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "61512:6:10", + "nodeType": "YulIdentifier", + "src": "61512:6:10" + }, + "nativeSrc": "61512:28:10", + "nodeType": "YulFunctionCall", + "src": "61512:28:10" + }, + "nativeSrc": "61512:28:10", + "nodeType": "YulExpressionStatement", + "src": "61512:28:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "61560:4:10", + "nodeType": "YulLiteral", + "src": "61560:4:10", + "type": "", + "value": "0x00" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "61570:22:10", + "nodeType": "YulLiteral", + "src": "61570:22:10", + "type": "", + "value": "0x61003d3d8160233d3973" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "61598:2:10", + "nodeType": "YulLiteral", + "src": "61598:2:10", + "type": "", + "value": "56" + }, + { + "name": "n", + "nativeSrc": "61602:1:10", + "nodeType": "YulIdentifier", + "src": "61602:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "61594:3:10", + "nodeType": "YulIdentifier", + "src": "61594:3:10" + }, + "nativeSrc": "61594:10:10", + "nodeType": "YulFunctionCall", + "src": "61594:10:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "61566:3:10", + "nodeType": "YulIdentifier", + "src": "61566:3:10" + }, + "nativeSrc": "61566:39:10", + "nodeType": "YulFunctionCall", + "src": "61566:39:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "61553:6:10", + "nodeType": "YulIdentifier", + "src": "61553:6:10" + }, + "nativeSrc": "61553:53:10", + "nodeType": "YulFunctionCall", + "src": "61553:53:10" + }, + "nativeSrc": "61553:53:10", + "nodeType": "YulExpressionStatement", + "src": "61553:53:10" + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "61626:1:10", + "nodeType": "YulIdentifier", + "src": "61626:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "61635:4:10", + "nodeType": "YulLiteral", + "src": "61635:4:10", + "type": "", + "value": "0x16" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "61629:5:10", + "nodeType": "YulIdentifier", + "src": "61629:5:10" + }, + "nativeSrc": "61629:11:10", + "nodeType": "YulFunctionCall", + "src": "61629:11:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "61619:6:10", + "nodeType": "YulIdentifier", + "src": "61619:6:10" + }, + "nativeSrc": "61619:22:10", + "nodeType": "YulFunctionCall", + "src": "61619:22:10" + }, + "nativeSrc": "61619:22:10", + "nodeType": "YulExpressionStatement", + "src": "61619:22:10" + }, + { + "nativeSrc": "61654:34:10", + "nodeType": "YulAssignment", + "src": "61654:34:10", + "value": { + "arguments": [ + { + "name": "m", + "nativeSrc": "61672:1:10", + "nodeType": "YulIdentifier", + "src": "61672:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "61679:1:10", + "nodeType": "YulIdentifier", + "src": "61679:1:10" + }, + { + "kind": "number", + "nativeSrc": "61682:4:10", + "nodeType": "YulLiteral", + "src": "61682:4:10", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "61675:3:10", + "nodeType": "YulIdentifier", + "src": "61675:3:10" + }, + "nativeSrc": "61675:12:10", + "nodeType": "YulFunctionCall", + "src": "61675:12:10" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "61662:9:10", + "nodeType": "YulIdentifier", + "src": "61662:9:10" + }, + "nativeSrc": "61662:26:10", + "nodeType": "YulFunctionCall", + "src": "61662:26:10" + }, + "variableNames": [ + { + "name": "hash", + "nativeSrc": "61654:4:10", + "nodeType": "YulIdentifier", + "src": "61654:4:10" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3817, + "isOffset": false, + "isSlot": false, + "src": "60939:4:10", + "valueSize": 1 + }, + { + "declaration": 3817, + "isOffset": false, + "isSlot": false, + "src": "61233:4:10", + "valueSize": 1 + }, + { + "declaration": 3820, + "isOffset": false, + "isSlot": false, + "src": "61654:4:10", + "valueSize": 1 + }, + { + "declaration": 3815, + "isOffset": false, + "isSlot": false, + "src": "61525:14:10", + "valueSize": 1 + } + ], + "id": 3822, + "nodeType": "InlineAssembly", + "src": "60868:830:10" + } + ] + }, + "documentation": { + "id": 3813, + "nodeType": "StructuredDocumentation", + "src": "60567:106:10", + "text": "@dev Returns the initialization code hash of the minimal ERC1967 proxy of `implementation` and `args`." + }, + "id": 3824, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeHashERC1967", + "nameLocation": "60687:19:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3818, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3815, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "60715:14:10", + "nodeType": "VariableDeclaration", + "scope": 3824, + "src": "60707:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3814, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "60707:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3817, + "mutability": "mutable", + "name": "args", + "nameLocation": "60744:4:10", + "nodeType": "VariableDeclaration", + "scope": 3824, + "src": "60731:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3816, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "60731:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "60706:43:10" + }, + "returnParameters": { + "id": 3821, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3820, + "mutability": "mutable", + "name": "hash", + "nameLocation": "60805:4:10", + "nodeType": "VariableDeclaration", + "scope": 3824, + "src": "60797:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3819, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "60797:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "60796:14:10" + }, + "scope": 5104, + "src": "60678:1026:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3853, + "nodeType": "Block", + "src": "62112:144:10", + "statements": [ + { + "assignments": [ + 3839 + ], + "declarations": [ + { + "constant": false, + "id": 3839, + "mutability": "mutable", + "name": "hash", + "nameLocation": "62130:4:10", + "nodeType": "VariableDeclaration", + "scope": 3853, + "src": "62122:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3838, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "62122:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 3844, + "initialValue": { + "arguments": [ + { + "id": 3841, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3827, + "src": "62157:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3842, + "name": "args", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3829, + "src": "62173:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 3840, + "name": "initCodeHashERC1967", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3662, + 3824 + ], + "referencedDeclaration": 3824, + "src": "62137:19:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (address,bytes memory) pure returns (bytes32)" + } + }, + "id": 3843, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "62137:41:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "62122:56:10" + }, + { + "expression": { + "id": 3851, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3845, + "name": "predicted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3836, + "src": "62188:9:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3847, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3839, + "src": "62228:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 3848, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3831, + "src": "62234:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 3849, + "name": "deployer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3833, + "src": "62240:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3846, + "name": "predictDeterministicAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3237, + 3510, + 5081 + ], + "referencedDeclaration": 5081, + "src": "62200:27:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_address_$", + "typeString": "function (bytes32,bytes32,address) pure returns (address)" + } + }, + "id": 3850, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "62200:49:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "62188:61:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3852, + "nodeType": "ExpressionStatement", + "src": "62188:61:10" + } + ] + }, + "documentation": { + "id": 3825, + "nodeType": "StructuredDocumentation", + "src": "61710:198:10", + "text": "@dev Returns the address of the ERC1967 proxy of `implementation`, `args`, with `salt` by `deployer`.\n Note: The returned result has dirty upper 96 bits. Please clean if used in assembly." + }, + "id": 3854, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "predictDeterministicAddressERC1967", + "nameLocation": "61922:34:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3834, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3827, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "61974:14:10", + "nodeType": "VariableDeclaration", + "scope": 3854, + "src": "61966:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3826, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "61966:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3829, + "mutability": "mutable", + "name": "args", + "nameLocation": "62011:4:10", + "nodeType": "VariableDeclaration", + "scope": 3854, + "src": "61998:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3828, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "61998:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3831, + "mutability": "mutable", + "name": "salt", + "nameLocation": "62033:4:10", + "nodeType": "VariableDeclaration", + "scope": 3854, + "src": "62025:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3830, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "62025:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3833, + "mutability": "mutable", + "name": "deployer", + "nameLocation": "62055:8:10", + "nodeType": "VariableDeclaration", + "scope": 3854, + "src": "62047:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3832, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "62047:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "61956:113:10" + }, + "returnParameters": { + "id": 3837, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3836, + "mutability": "mutable", + "name": "predicted", + "nameLocation": "62101:9:10", + "nodeType": "VariableDeclaration", + "scope": 3854, + "src": "62093:17:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3835, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "62093:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "62092:19:10" + }, + "scope": 5104, + "src": "61913:343:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3863, + "nodeType": "Block", + "src": "62420:371:10", + "statements": [ + { + "AST": { + "nativeSrc": "62482:303:10", + "nodeType": "YulBlock", + "src": "62482:303:10", + "statements": [ + { + "nativeSrc": "62496:19:10", + "nodeType": "YulAssignment", + "src": "62496:19:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "62510:4:10", + "nodeType": "YulLiteral", + "src": "62510:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "62504:5:10", + "nodeType": "YulIdentifier", + "src": "62504:5:10" + }, + "nativeSrc": "62504:11:10", + "nodeType": "YulFunctionCall", + "src": "62504:11:10" + }, + "variableNames": [ + { + "name": "args", + "nativeSrc": "62496:4:10", + "nodeType": "YulIdentifier", + "src": "62496:4:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "args", + "nativeSrc": "62535:4:10", + "nodeType": "YulIdentifier", + "src": "62535:4:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "62545:12:10", + "nodeType": "YulLiteral", + "src": "62545:12:10", + "type": "", + "value": "0xffffffffff" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "62575:8:10", + "nodeType": "YulIdentifier", + "src": "62575:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "62563:11:10", + "nodeType": "YulIdentifier", + "src": "62563:11:10" + }, + "nativeSrc": "62563:21:10", + "nodeType": "YulFunctionCall", + "src": "62563:21:10" + }, + { + "kind": "number", + "nativeSrc": "62586:4:10", + "nodeType": "YulLiteral", + "src": "62586:4:10", + "type": "", + "value": "0x3d" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "62559:3:10", + "nodeType": "YulIdentifier", + "src": "62559:3:10" + }, + "nativeSrc": "62559:32:10", + "nodeType": "YulFunctionCall", + "src": "62559:32:10" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "62541:3:10", + "nodeType": "YulIdentifier", + "src": "62541:3:10" + }, + "nativeSrc": "62541:51:10", + "nodeType": "YulFunctionCall", + "src": "62541:51:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "62528:6:10", + "nodeType": "YulIdentifier", + "src": "62528:6:10" + }, + "nativeSrc": "62528:65:10", + "nodeType": "YulFunctionCall", + "src": "62528:65:10" + }, + "nativeSrc": "62528:65:10", + "nodeType": "YulExpressionStatement", + "src": "62528:65:10" + }, + { + "expression": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "62639:8:10", + "nodeType": "YulIdentifier", + "src": "62639:8:10" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "62653:4:10", + "nodeType": "YulIdentifier", + "src": "62653:4:10" + }, + { + "kind": "number", + "nativeSrc": "62659:4:10", + "nodeType": "YulLiteral", + "src": "62659:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "62649:3:10", + "nodeType": "YulIdentifier", + "src": "62649:3:10" + }, + "nativeSrc": "62649:15:10", + "nodeType": "YulFunctionCall", + "src": "62649:15:10" + }, + { + "kind": "number", + "nativeSrc": "62666:4:10", + "nodeType": "YulLiteral", + "src": "62666:4:10", + "type": "", + "value": "0x3d" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "62682:4:10", + "nodeType": "YulIdentifier", + "src": "62682:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "62676:5:10", + "nodeType": "YulIdentifier", + "src": "62676:5:10" + }, + "nativeSrc": "62676:11:10", + "nodeType": "YulFunctionCall", + "src": "62676:11:10" + }, + { + "kind": "number", + "nativeSrc": "62689:4:10", + "nodeType": "YulLiteral", + "src": "62689:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "62672:3:10", + "nodeType": "YulIdentifier", + "src": "62672:3:10" + }, + "nativeSrc": "62672:22:10", + "nodeType": "YulFunctionCall", + "src": "62672:22:10" + } + ], + "functionName": { + "name": "extcodecopy", + "nativeSrc": "62627:11:10", + "nodeType": "YulIdentifier", + "src": "62627:11:10" + }, + "nativeSrc": "62627:68:10", + "nodeType": "YulFunctionCall", + "src": "62627:68:10" + }, + "nativeSrc": "62627:68:10", + "nodeType": "YulExpressionStatement", + "src": "62627:68:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "62715:4:10", + "nodeType": "YulLiteral", + "src": "62715:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "62731:4:10", + "nodeType": "YulIdentifier", + "src": "62731:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "62725:5:10", + "nodeType": "YulIdentifier", + "src": "62725:5:10" + }, + "nativeSrc": "62725:11:10", + "nodeType": "YulFunctionCall", + "src": "62725:11:10" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "62742:4:10", + "nodeType": "YulIdentifier", + "src": "62742:4:10" + }, + { + "kind": "number", + "nativeSrc": "62748:4:10", + "nodeType": "YulLiteral", + "src": "62748:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "62738:3:10", + "nodeType": "YulIdentifier", + "src": "62738:3:10" + }, + "nativeSrc": "62738:15:10", + "nodeType": "YulFunctionCall", + "src": "62738:15:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "62721:3:10", + "nodeType": "YulIdentifier", + "src": "62721:3:10" + }, + "nativeSrc": "62721:33:10", + "nodeType": "YulFunctionCall", + "src": "62721:33:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "62708:6:10", + "nodeType": "YulIdentifier", + "src": "62708:6:10" + }, + "nativeSrc": "62708:47:10", + "nodeType": "YulFunctionCall", + "src": "62708:47:10" + }, + "nativeSrc": "62708:47:10", + "nodeType": "YulExpressionStatement", + "src": "62708:47:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3860, + "isOffset": false, + "isSlot": false, + "src": "62496:4:10", + "valueSize": 1 + }, + { + "declaration": 3860, + "isOffset": false, + "isSlot": false, + "src": "62535:4:10", + "valueSize": 1 + }, + { + "declaration": 3860, + "isOffset": false, + "isSlot": false, + "src": "62653:4:10", + "valueSize": 1 + }, + { + "declaration": 3860, + "isOffset": false, + "isSlot": false, + "src": "62682:4:10", + "valueSize": 1 + }, + { + "declaration": 3860, + "isOffset": false, + "isSlot": false, + "src": "62731:4:10", + "valueSize": 1 + }, + { + "declaration": 3860, + "isOffset": false, + "isSlot": false, + "src": "62742:4:10", + "valueSize": 1 + }, + { + "declaration": 3857, + "isOffset": false, + "isSlot": false, + "src": "62575:8:10", + "valueSize": 1 + }, + { + "declaration": 3857, + "isOffset": false, + "isSlot": false, + "src": "62639:8:10", + "valueSize": 1 + } + ], + "id": 3862, + "nodeType": "InlineAssembly", + "src": "62473:312:10" + } + ] + }, + "documentation": { + "id": 3855, + "nodeType": "StructuredDocumentation", + "src": "62262:70:10", + "text": "@dev Equivalent to `argsOnERC1967(instance, start, 2 ** 256 - 1)`." + }, + "id": 3864, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "argsOnERC1967", + "nameLocation": "62346:13:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3858, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3857, + "mutability": "mutable", + "name": "instance", + "nameLocation": "62368:8:10", + "nodeType": "VariableDeclaration", + "scope": 3864, + "src": "62360:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3856, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "62360:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "62359:18:10" + }, + "returnParameters": { + "id": 3861, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3860, + "mutability": "mutable", + "name": "args", + "nameLocation": "62414:4:10", + "nodeType": "VariableDeclaration", + "scope": 3864, + "src": "62401:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3859, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "62401:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "62400:19:10" + }, + "scope": 5104, + "src": "62337:454:10", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3875, + "nodeType": "Block", + "src": "62998:485:10", + "statements": [ + { + "AST": { + "nativeSrc": "63060:417:10", + "nodeType": "YulBlock", + "src": "63060:417:10", + "statements": [ + { + "nativeSrc": "63074:19:10", + "nodeType": "YulAssignment", + "src": "63074:19:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "63088:4:10", + "nodeType": "YulLiteral", + "src": "63088:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "63082:5:10", + "nodeType": "YulIdentifier", + "src": "63082:5:10" + }, + "nativeSrc": "63082:11:10", + "nodeType": "YulFunctionCall", + "src": "63082:11:10" + }, + "variableNames": [ + { + "name": "args", + "nativeSrc": "63074:4:10", + "nodeType": "YulIdentifier", + "src": "63074:4:10" + } + ] + }, + { + "nativeSrc": "63106:60:10", + "nodeType": "YulVariableDeclaration", + "src": "63106:60:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "63119:12:10", + "nodeType": "YulLiteral", + "src": "63119:12:10", + "type": "", + "value": "0xffffffffff" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "63149:8:10", + "nodeType": "YulIdentifier", + "src": "63149:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "63137:11:10", + "nodeType": "YulIdentifier", + "src": "63137:11:10" + }, + "nativeSrc": "63137:21:10", + "nodeType": "YulFunctionCall", + "src": "63137:21:10" + }, + { + "kind": "number", + "nativeSrc": "63160:4:10", + "nodeType": "YulLiteral", + "src": "63160:4:10", + "type": "", + "value": "0x3d" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "63133:3:10", + "nodeType": "YulIdentifier", + "src": "63133:3:10" + }, + "nativeSrc": "63133:32:10", + "nodeType": "YulFunctionCall", + "src": "63133:32:10" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "63115:3:10", + "nodeType": "YulIdentifier", + "src": "63115:3:10" + }, + "nativeSrc": "63115:51:10", + "nodeType": "YulFunctionCall", + "src": "63115:51:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "63110:1:10", + "nodeType": "YulTypedName", + "src": "63110:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "63179:56:10", + "nodeType": "YulVariableDeclaration", + "src": "63179:56:10", + "value": { + "arguments": [ + { + "name": "n", + "nativeSrc": "63192:1:10", + "nodeType": "YulIdentifier", + "src": "63192:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "63199:8:10", + "nodeType": "YulLiteral", + "src": "63199:8:10", + "type": "", + "value": "0xffffff" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "start", + "nativeSrc": "63216:5:10", + "nodeType": "YulIdentifier", + "src": "63216:5:10" + }, + { + "name": "n", + "nativeSrc": "63223:1:10", + "nodeType": "YulIdentifier", + "src": "63223:1:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "63213:2:10", + "nodeType": "YulIdentifier", + "src": "63213:2:10" + }, + "nativeSrc": "63213:12:10", + "nodeType": "YulFunctionCall", + "src": "63213:12:10" + }, + { + "name": "start", + "nativeSrc": "63227:5:10", + "nodeType": "YulIdentifier", + "src": "63227:5:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "63209:3:10", + "nodeType": "YulIdentifier", + "src": "63209:3:10" + }, + "nativeSrc": "63209:24:10", + "nodeType": "YulFunctionCall", + "src": "63209:24:10" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "63195:3:10", + "nodeType": "YulIdentifier", + "src": "63195:3:10" + }, + "nativeSrc": "63195:39:10", + "nodeType": "YulFunctionCall", + "src": "63195:39:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "63188:3:10", + "nodeType": "YulIdentifier", + "src": "63188:3:10" + }, + "nativeSrc": "63188:47:10", + "nodeType": "YulFunctionCall", + "src": "63188:47:10" + }, + "variables": [ + { + "name": "l", + "nativeSrc": "63183:1:10", + "nodeType": "YulTypedName", + "src": "63183:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "63260:8:10", + "nodeType": "YulIdentifier", + "src": "63260:8:10" + }, + { + "name": "args", + "nativeSrc": "63270:4:10", + "nodeType": "YulIdentifier", + "src": "63270:4:10" + }, + { + "arguments": [ + { + "name": "start", + "nativeSrc": "63280:5:10", + "nodeType": "YulIdentifier", + "src": "63280:5:10" + }, + { + "kind": "number", + "nativeSrc": "63287:4:10", + "nodeType": "YulLiteral", + "src": "63287:4:10", + "type": "", + "value": "0x1d" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "63276:3:10", + "nodeType": "YulIdentifier", + "src": "63276:3:10" + }, + "nativeSrc": "63276:16:10", + "nodeType": "YulFunctionCall", + "src": "63276:16:10" + }, + { + "arguments": [ + { + "name": "l", + "nativeSrc": "63298:1:10", + "nodeType": "YulIdentifier", + "src": "63298:1:10" + }, + { + "kind": "number", + "nativeSrc": "63301:4:10", + "nodeType": "YulLiteral", + "src": "63301:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "63294:3:10", + "nodeType": "YulIdentifier", + "src": "63294:3:10" + }, + "nativeSrc": "63294:12:10", + "nodeType": "YulFunctionCall", + "src": "63294:12:10" + } + ], + "functionName": { + "name": "extcodecopy", + "nativeSrc": "63248:11:10", + "nodeType": "YulIdentifier", + "src": "63248:11:10" + }, + "nativeSrc": "63248:59:10", + "nodeType": "YulFunctionCall", + "src": "63248:59:10" + }, + "nativeSrc": "63248:59:10", + "nodeType": "YulExpressionStatement", + "src": "63248:59:10" + }, + { + "expression": { + "arguments": [ + { + "name": "args", + "nativeSrc": "63327:4:10", + "nodeType": "YulIdentifier", + "src": "63327:4:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "n", + "nativeSrc": "63341:1:10", + "nodeType": "YulIdentifier", + "src": "63341:1:10" + }, + { + "name": "start", + "nativeSrc": "63344:5:10", + "nodeType": "YulIdentifier", + "src": "63344:5:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "63337:3:10", + "nodeType": "YulIdentifier", + "src": "63337:3:10" + }, + "nativeSrc": "63337:13:10", + "nodeType": "YulFunctionCall", + "src": "63337:13:10" + }, + { + "arguments": [ + { + "name": "start", + "nativeSrc": "63355:5:10", + "nodeType": "YulIdentifier", + "src": "63355:5:10" + }, + { + "name": "n", + "nativeSrc": "63362:1:10", + "nodeType": "YulIdentifier", + "src": "63362:1:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "63352:2:10", + "nodeType": "YulIdentifier", + "src": "63352:2:10" + }, + "nativeSrc": "63352:12:10", + "nodeType": "YulFunctionCall", + "src": "63352:12:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "63333:3:10", + "nodeType": "YulIdentifier", + "src": "63333:3:10" + }, + "nativeSrc": "63333:32:10", + "nodeType": "YulFunctionCall", + "src": "63333:32:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "63320:6:10", + "nodeType": "YulIdentifier", + "src": "63320:6:10" + }, + "nativeSrc": "63320:46:10", + "nodeType": "YulFunctionCall", + "src": "63320:46:10" + }, + "nativeSrc": "63320:46:10", + "nodeType": "YulExpressionStatement", + "src": "63320:46:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "63407:4:10", + "nodeType": "YulLiteral", + "src": "63407:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "63417:4:10", + "nodeType": "YulIdentifier", + "src": "63417:4:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "63427:4:10", + "nodeType": "YulLiteral", + "src": "63427:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "63439:4:10", + "nodeType": "YulIdentifier", + "src": "63439:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "63433:5:10", + "nodeType": "YulIdentifier", + "src": "63433:5:10" + }, + "nativeSrc": "63433:11:10", + "nodeType": "YulFunctionCall", + "src": "63433:11:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "63423:3:10", + "nodeType": "YulIdentifier", + "src": "63423:3:10" + }, + "nativeSrc": "63423:22:10", + "nodeType": "YulFunctionCall", + "src": "63423:22:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "63413:3:10", + "nodeType": "YulIdentifier", + "src": "63413:3:10" + }, + "nativeSrc": "63413:33:10", + "nodeType": "YulFunctionCall", + "src": "63413:33:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "63400:6:10", + "nodeType": "YulIdentifier", + "src": "63400:6:10" + }, + "nativeSrc": "63400:47:10", + "nodeType": "YulFunctionCall", + "src": "63400:47:10" + }, + "nativeSrc": "63400:47:10", + "nodeType": "YulExpressionStatement", + "src": "63400:47:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3872, + "isOffset": false, + "isSlot": false, + "src": "63074:4:10", + "valueSize": 1 + }, + { + "declaration": 3872, + "isOffset": false, + "isSlot": false, + "src": "63270:4:10", + "valueSize": 1 + }, + { + "declaration": 3872, + "isOffset": false, + "isSlot": false, + "src": "63327:4:10", + "valueSize": 1 + }, + { + "declaration": 3872, + "isOffset": false, + "isSlot": false, + "src": "63417:4:10", + "valueSize": 1 + }, + { + "declaration": 3872, + "isOffset": false, + "isSlot": false, + "src": "63439:4:10", + "valueSize": 1 + }, + { + "declaration": 3867, + "isOffset": false, + "isSlot": false, + "src": "63149:8:10", + "valueSize": 1 + }, + { + "declaration": 3867, + "isOffset": false, + "isSlot": false, + "src": "63260:8:10", + "valueSize": 1 + }, + { + "declaration": 3869, + "isOffset": false, + "isSlot": false, + "src": "63216:5:10", + "valueSize": 1 + }, + { + "declaration": 3869, + "isOffset": false, + "isSlot": false, + "src": "63227:5:10", + "valueSize": 1 + }, + { + "declaration": 3869, + "isOffset": false, + "isSlot": false, + "src": "63280:5:10", + "valueSize": 1 + }, + { + "declaration": 3869, + "isOffset": false, + "isSlot": false, + "src": "63344:5:10", + "valueSize": 1 + }, + { + "declaration": 3869, + "isOffset": false, + "isSlot": false, + "src": "63355:5:10", + "valueSize": 1 + } + ], + "id": 3874, + "nodeType": "InlineAssembly", + "src": "63051:426:10" + } + ] + }, + "documentation": { + "id": 3865, + "nodeType": "StructuredDocumentation", + "src": "62797:70:10", + "text": "@dev Equivalent to `argsOnERC1967(instance, start, 2 ** 256 - 1)`." + }, + "id": 3876, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "argsOnERC1967", + "nameLocation": "62881:13:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3870, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3867, + "mutability": "mutable", + "name": "instance", + "nameLocation": "62903:8:10", + "nodeType": "VariableDeclaration", + "scope": 3876, + "src": "62895:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3866, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "62895:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3869, + "mutability": "mutable", + "name": "start", + "nameLocation": "62921:5:10", + "nodeType": "VariableDeclaration", + "scope": 3876, + "src": "62913:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3868, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "62913:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "62894:33:10" + }, + "returnParameters": { + "id": 3873, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3872, + "mutability": "mutable", + "name": "args", + "nameLocation": "62988:4:10", + "nodeType": "VariableDeclaration", + "scope": 3876, + "src": "62975:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3871, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "62975:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "62974:19:10" + }, + "scope": 5104, + "src": "62872:611:10", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3889, + "nodeType": "Block", + "src": "63994:785:10", + "statements": [ + { + "AST": { + "nativeSrc": "64056:717:10", + "nodeType": "YulBlock", + "src": "64056:717:10", + "statements": [ + { + "nativeSrc": "64070:19:10", + "nodeType": "YulAssignment", + "src": "64070:19:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "64084:4:10", + "nodeType": "YulLiteral", + "src": "64084:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "64078:5:10", + "nodeType": "YulIdentifier", + "src": "64078:5:10" + }, + "nativeSrc": "64078:11:10", + "nodeType": "YulFunctionCall", + "src": "64078:11:10" + }, + "variableNames": [ + { + "name": "args", + "nativeSrc": "64070:4:10", + "nodeType": "YulIdentifier", + "src": "64070:4:10" + } + ] + }, + { + "body": { + "nativeSrc": "64129:17:10", + "nodeType": "YulBlock", + "src": "64129:17:10", + "statements": [ + { + "nativeSrc": "64131:13:10", + "nodeType": "YulAssignment", + "src": "64131:13:10", + "value": { + "kind": "number", + "nativeSrc": "64138:6:10", + "nodeType": "YulLiteral", + "src": "64138:6:10", + "type": "", + "value": "0xffff" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "64131:3:10", + "nodeType": "YulIdentifier", + "src": "64131:3:10" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "end", + "nativeSrc": "64115:3:10", + "nodeType": "YulIdentifier", + "src": "64115:3:10" + }, + { + "kind": "number", + "nativeSrc": "64120:6:10", + "nodeType": "YulLiteral", + "src": "64120:6:10", + "type": "", + "value": "0xffff" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "64112:2:10", + "nodeType": "YulIdentifier", + "src": "64112:2:10" + }, + "nativeSrc": "64112:15:10", + "nodeType": "YulFunctionCall", + "src": "64112:15:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "64105:6:10", + "nodeType": "YulIdentifier", + "src": "64105:6:10" + }, + "nativeSrc": "64105:23:10", + "nodeType": "YulFunctionCall", + "src": "64105:23:10" + }, + "nativeSrc": "64102:44:10", + "nodeType": "YulIf", + "src": "64102:44:10" + }, + { + "nativeSrc": "64159:45:10", + "nodeType": "YulVariableDeclaration", + "src": "64159:45:10", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "end", + "nativeSrc": "64176:3:10", + "nodeType": "YulIdentifier", + "src": "64176:3:10" + }, + { + "name": "start", + "nativeSrc": "64181:5:10", + "nodeType": "YulIdentifier", + "src": "64181:5:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "64172:3:10", + "nodeType": "YulIdentifier", + "src": "64172:3:10" + }, + "nativeSrc": "64172:15:10", + "nodeType": "YulFunctionCall", + "src": "64172:15:10" + }, + { + "arguments": [ + { + "name": "start", + "nativeSrc": "64192:5:10", + "nodeType": "YulIdentifier", + "src": "64192:5:10" + }, + { + "name": "end", + "nativeSrc": "64199:3:10", + "nodeType": "YulIdentifier", + "src": "64199:3:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "64189:2:10", + "nodeType": "YulIdentifier", + "src": "64189:2:10" + }, + "nativeSrc": "64189:14:10", + "nodeType": "YulFunctionCall", + "src": "64189:14:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "64168:3:10", + "nodeType": "YulIdentifier", + "src": "64168:3:10" + }, + "nativeSrc": "64168:36:10", + "nodeType": "YulFunctionCall", + "src": "64168:36:10" + }, + "variables": [ + { + "name": "d", + "nativeSrc": "64163:1:10", + "nodeType": "YulTypedName", + "src": "64163:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "64229:8:10", + "nodeType": "YulIdentifier", + "src": "64229:8:10" + }, + { + "name": "args", + "nativeSrc": "64239:4:10", + "nodeType": "YulIdentifier", + "src": "64239:4:10" + }, + { + "arguments": [ + { + "name": "start", + "nativeSrc": "64249:5:10", + "nodeType": "YulIdentifier", + "src": "64249:5:10" + }, + { + "kind": "number", + "nativeSrc": "64256:4:10", + "nodeType": "YulLiteral", + "src": "64256:4:10", + "type": "", + "value": "0x1d" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "64245:3:10", + "nodeType": "YulIdentifier", + "src": "64245:3:10" + }, + "nativeSrc": "64245:16:10", + "nodeType": "YulFunctionCall", + "src": "64245:16:10" + }, + { + "arguments": [ + { + "name": "d", + "nativeSrc": "64267:1:10", + "nodeType": "YulIdentifier", + "src": "64267:1:10" + }, + { + "kind": "number", + "nativeSrc": "64270:4:10", + "nodeType": "YulLiteral", + "src": "64270:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "64263:3:10", + "nodeType": "YulIdentifier", + "src": "64263:3:10" + }, + "nativeSrc": "64263:12:10", + "nodeType": "YulFunctionCall", + "src": "64263:12:10" + } + ], + "functionName": { + "name": "extcodecopy", + "nativeSrc": "64217:11:10", + "nodeType": "YulIdentifier", + "src": "64217:11:10" + }, + "nativeSrc": "64217:59:10", + "nodeType": "YulFunctionCall", + "src": "64217:59:10" + }, + "nativeSrc": "64217:59:10", + "nodeType": "YulExpressionStatement", + "src": "64217:59:10" + }, + { + "body": { + "nativeSrc": "64331:229:10", + "nodeType": "YulBlock", + "src": "64331:229:10", + "statements": [ + { + "nativeSrc": "64349:41:10", + "nodeType": "YulVariableDeclaration", + "src": "64349:41:10", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "64374:8:10", + "nodeType": "YulIdentifier", + "src": "64374:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "64362:11:10", + "nodeType": "YulIdentifier", + "src": "64362:11:10" + }, + "nativeSrc": "64362:21:10", + "nodeType": "YulFunctionCall", + "src": "64362:21:10" + }, + { + "kind": "number", + "nativeSrc": "64385:4:10", + "nodeType": "YulLiteral", + "src": "64385:4:10", + "type": "", + "value": "0x3d" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "64358:3:10", + "nodeType": "YulIdentifier", + "src": "64358:3:10" + }, + "nativeSrc": "64358:32:10", + "nodeType": "YulFunctionCall", + "src": "64358:32:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "64353:1:10", + "nodeType": "YulTypedName", + "src": "64353:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "64422:14:10", + "nodeType": "YulIdentifier", + "src": "64422:14:10" + }, + "nativeSrc": "64422:16:10", + "nodeType": "YulFunctionCall", + "src": "64422:16:10" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "64440:14:10", + "nodeType": "YulIdentifier", + "src": "64440:14:10" + }, + "nativeSrc": "64440:16:10", + "nodeType": "YulFunctionCall", + "src": "64440:16:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "64462:2:10", + "nodeType": "YulLiteral", + "src": "64462:2:10", + "type": "", + "value": "40" + }, + { + "name": "n", + "nativeSrc": "64466:1:10", + "nodeType": "YulIdentifier", + "src": "64466:1:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "64458:3:10", + "nodeType": "YulIdentifier", + "src": "64458:3:10" + }, + "nativeSrc": "64458:10:10", + "nodeType": "YulFunctionCall", + "src": "64458:10:10" + } + ], + "functionName": { + "name": "returndatacopy", + "nativeSrc": "64407:14:10", + "nodeType": "YulIdentifier", + "src": "64407:14:10" + }, + "nativeSrc": "64407:62:10", + "nodeType": "YulFunctionCall", + "src": "64407:62:10" + }, + "nativeSrc": "64407:62:10", + "nodeType": "YulExpressionStatement", + "src": "64407:62:10" + }, + { + "nativeSrc": "64486:60:10", + "nodeType": "YulAssignment", + "src": "64486:60:10", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "n", + "nativeSrc": "64498:1:10", + "nodeType": "YulIdentifier", + "src": "64498:1:10" + }, + { + "name": "start", + "nativeSrc": "64501:5:10", + "nodeType": "YulIdentifier", + "src": "64501:5:10" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "64495:2:10", + "nodeType": "YulIdentifier", + "src": "64495:2:10" + }, + "nativeSrc": "64495:12:10", + "nodeType": "YulFunctionCall", + "src": "64495:12:10" + }, + { + "arguments": [ + { + "name": "d", + "nativeSrc": "64513:1:10", + "nodeType": "YulIdentifier", + "src": "64513:1:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "end", + "nativeSrc": "64523:3:10", + "nodeType": "YulIdentifier", + "src": "64523:3:10" + }, + { + "name": "n", + "nativeSrc": "64528:1:10", + "nodeType": "YulIdentifier", + "src": "64528:1:10" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "64520:2:10", + "nodeType": "YulIdentifier", + "src": "64520:2:10" + }, + "nativeSrc": "64520:10:10", + "nodeType": "YulFunctionCall", + "src": "64520:10:10" + }, + { + "arguments": [ + { + "name": "end", + "nativeSrc": "64536:3:10", + "nodeType": "YulIdentifier", + "src": "64536:3:10" + }, + { + "name": "n", + "nativeSrc": "64541:1:10", + "nodeType": "YulIdentifier", + "src": "64541:1:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "64532:3:10", + "nodeType": "YulIdentifier", + "src": "64532:3:10" + }, + "nativeSrc": "64532:11:10", + "nodeType": "YulFunctionCall", + "src": "64532:11:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "64516:3:10", + "nodeType": "YulIdentifier", + "src": "64516:3:10" + }, + "nativeSrc": "64516:28:10", + "nodeType": "YulFunctionCall", + "src": "64516:28:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "64509:3:10", + "nodeType": "YulIdentifier", + "src": "64509:3:10" + }, + "nativeSrc": "64509:36:10", + "nodeType": "YulFunctionCall", + "src": "64509:36:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "64491:3:10", + "nodeType": "YulIdentifier", + "src": "64491:3:10" + }, + "nativeSrc": "64491:55:10", + "nodeType": "YulFunctionCall", + "src": "64491:55:10" + }, + "variableNames": [ + { + "name": "d", + "nativeSrc": "64486:1:10", + "nodeType": "YulIdentifier", + "src": "64486:1:10" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "64303:4:10", + "nodeType": "YulLiteral", + "src": "64303:4:10", + "type": "", + "value": "0xff" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "64319:4:10", + "nodeType": "YulIdentifier", + "src": "64319:4:10" + }, + { + "name": "d", + "nativeSrc": "64325:1:10", + "nodeType": "YulIdentifier", + "src": "64325:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "64315:3:10", + "nodeType": "YulIdentifier", + "src": "64315:3:10" + }, + "nativeSrc": "64315:12:10", + "nodeType": "YulFunctionCall", + "src": "64315:12:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "64309:5:10", + "nodeType": "YulIdentifier", + "src": "64309:5:10" + }, + "nativeSrc": "64309:19:10", + "nodeType": "YulFunctionCall", + "src": "64309:19:10" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "64299:3:10", + "nodeType": "YulIdentifier", + "src": "64299:3:10" + }, + "nativeSrc": "64299:30:10", + "nodeType": "YulFunctionCall", + "src": "64299:30:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "64292:6:10", + "nodeType": "YulIdentifier", + "src": "64292:6:10" + }, + "nativeSrc": "64292:38:10", + "nodeType": "YulFunctionCall", + "src": "64292:38:10" + }, + "nativeSrc": "64289:271:10", + "nodeType": "YulIf", + "src": "64289:271:10" + }, + { + "expression": { + "arguments": [ + { + "name": "args", + "nativeSrc": "64580:4:10", + "nodeType": "YulIdentifier", + "src": "64580:4:10" + }, + { + "name": "d", + "nativeSrc": "64586:1:10", + "nodeType": "YulIdentifier", + "src": "64586:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "64573:6:10", + "nodeType": "YulIdentifier", + "src": "64573:6:10" + }, + "nativeSrc": "64573:15:10", + "nodeType": "YulFunctionCall", + "src": "64573:15:10" + }, + "nativeSrc": "64573:15:10", + "nodeType": "YulExpressionStatement", + "src": "64573:15:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "64637:4:10", + "nodeType": "YulIdentifier", + "src": "64637:4:10" + }, + { + "kind": "number", + "nativeSrc": "64643:4:10", + "nodeType": "YulLiteral", + "src": "64643:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "64633:3:10", + "nodeType": "YulIdentifier", + "src": "64633:3:10" + }, + "nativeSrc": "64633:15:10", + "nodeType": "YulFunctionCall", + "src": "64633:15:10" + }, + { + "name": "d", + "nativeSrc": "64650:1:10", + "nodeType": "YulIdentifier", + "src": "64650:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "64629:3:10", + "nodeType": "YulIdentifier", + "src": "64629:3:10" + }, + "nativeSrc": "64629:23:10", + "nodeType": "YulFunctionCall", + "src": "64629:23:10" + }, + { + "kind": "number", + "nativeSrc": "64654:1:10", + "nodeType": "YulLiteral", + "src": "64654:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "64622:6:10", + "nodeType": "YulIdentifier", + "src": "64622:6:10" + }, + "nativeSrc": "64622:34:10", + "nodeType": "YulFunctionCall", + "src": "64622:34:10" + }, + "nativeSrc": "64622:34:10", + "nodeType": "YulExpressionStatement", + "src": "64622:34:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "64713:4:10", + "nodeType": "YulLiteral", + "src": "64713:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "64727:4:10", + "nodeType": "YulIdentifier", + "src": "64727:4:10" + }, + { + "kind": "number", + "nativeSrc": "64733:4:10", + "nodeType": "YulLiteral", + "src": "64733:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "64723:3:10", + "nodeType": "YulIdentifier", + "src": "64723:3:10" + }, + "nativeSrc": "64723:15:10", + "nodeType": "YulFunctionCall", + "src": "64723:15:10" + }, + { + "name": "d", + "nativeSrc": "64740:1:10", + "nodeType": "YulIdentifier", + "src": "64740:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "64719:3:10", + "nodeType": "YulIdentifier", + "src": "64719:3:10" + }, + "nativeSrc": "64719:23:10", + "nodeType": "YulFunctionCall", + "src": "64719:23:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "64706:6:10", + "nodeType": "YulIdentifier", + "src": "64706:6:10" + }, + "nativeSrc": "64706:37:10", + "nodeType": "YulFunctionCall", + "src": "64706:37:10" + }, + "nativeSrc": "64706:37:10", + "nodeType": "YulExpressionStatement", + "src": "64706:37:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3886, + "isOffset": false, + "isSlot": false, + "src": "64070:4:10", + "valueSize": 1 + }, + { + "declaration": 3886, + "isOffset": false, + "isSlot": false, + "src": "64239:4:10", + "valueSize": 1 + }, + { + "declaration": 3886, + "isOffset": false, + "isSlot": false, + "src": "64319:4:10", + "valueSize": 1 + }, + { + "declaration": 3886, + "isOffset": false, + "isSlot": false, + "src": "64580:4:10", + "valueSize": 1 + }, + { + "declaration": 3886, + "isOffset": false, + "isSlot": false, + "src": "64637:4:10", + "valueSize": 1 + }, + { + "declaration": 3886, + "isOffset": false, + "isSlot": false, + "src": "64727:4:10", + "valueSize": 1 + }, + { + "declaration": 3883, + "isOffset": false, + "isSlot": false, + "src": "64115:3:10", + "valueSize": 1 + }, + { + "declaration": 3883, + "isOffset": false, + "isSlot": false, + "src": "64131:3:10", + "valueSize": 1 + }, + { + "declaration": 3883, + "isOffset": false, + "isSlot": false, + "src": "64176:3:10", + "valueSize": 1 + }, + { + "declaration": 3883, + "isOffset": false, + "isSlot": false, + "src": "64199:3:10", + "valueSize": 1 + }, + { + "declaration": 3883, + "isOffset": false, + "isSlot": false, + "src": "64523:3:10", + "valueSize": 1 + }, + { + "declaration": 3883, + "isOffset": false, + "isSlot": false, + "src": "64536:3:10", + "valueSize": 1 + }, + { + "declaration": 3879, + "isOffset": false, + "isSlot": false, + "src": "64229:8:10", + "valueSize": 1 + }, + { + "declaration": 3879, + "isOffset": false, + "isSlot": false, + "src": "64374:8:10", + "valueSize": 1 + }, + { + "declaration": 3881, + "isOffset": false, + "isSlot": false, + "src": "64181:5:10", + "valueSize": 1 + }, + { + "declaration": 3881, + "isOffset": false, + "isSlot": false, + "src": "64192:5:10", + "valueSize": 1 + }, + { + "declaration": 3881, + "isOffset": false, + "isSlot": false, + "src": "64249:5:10", + "valueSize": 1 + }, + { + "declaration": 3881, + "isOffset": false, + "isSlot": false, + "src": "64501:5:10", + "valueSize": 1 + } + ], + "id": 3888, + "nodeType": "InlineAssembly", + "src": "64047:726:10" + } + ] + }, + "documentation": { + "id": 3877, + "nodeType": "StructuredDocumentation", + "src": "63489:361:10", + "text": "@dev Returns a slice of the immutable arguments on `instance` from `start` to `end`.\n `start` and `end` will be clamped to the range `[0, args.length]`.\n The `instance` MUST be deployed via the ERC1967 with immutable args functions.\n Otherwise, the behavior is undefined.\n Out-of-gas reverts if `instance` does not have any code." + }, + "id": 3890, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "argsOnERC1967", + "nameLocation": "63864:13:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3884, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3879, + "mutability": "mutable", + "name": "instance", + "nameLocation": "63886:8:10", + "nodeType": "VariableDeclaration", + "scope": 3890, + "src": "63878:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3878, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "63878:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3881, + "mutability": "mutable", + "name": "start", + "nameLocation": "63904:5:10", + "nodeType": "VariableDeclaration", + "scope": 3890, + "src": "63896:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3880, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "63896:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3883, + "mutability": "mutable", + "name": "end", + "nameLocation": "63919:3:10", + "nodeType": "VariableDeclaration", + "scope": 3890, + "src": "63911:11:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3882, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "63911:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "63877:46:10" + }, + "returnParameters": { + "id": 3887, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3886, + "mutability": "mutable", + "name": "args", + "nameLocation": "63984:4:10", + "nodeType": "VariableDeclaration", + "scope": 3890, + "src": "63971:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3885, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "63971:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "63970:19:10" + }, + "scope": 5104, + "src": "63855:924:10", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3905, + "nodeType": "Block", + "src": "65538:61:10", + "statements": [ + { + "expression": { + "id": 3903, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3898, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3896, + "src": "65548:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 3900, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "65574:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 3901, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3893, + "src": "65577:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3899, + "name": "deployERC1967I", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3906, + 3918, + 4050, + 4064 + ], + "referencedDeclaration": 3918, + "src": "65559:14:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$_t_address_$", + "typeString": "function (uint256,address) returns (address)" + } + }, + "id": 3902, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "65559:33:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "65548:44:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3904, + "nodeType": "ExpressionStatement", + "src": "65548:44:10" + } + ] + }, + "documentation": { + "id": 3891, + "nodeType": "StructuredDocumentation", + "src": "65393:56:10", + "text": "@dev Deploys a ERC1967I proxy with `implementation`." + }, + "id": 3906, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployERC1967I", + "nameLocation": "65463:14:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3894, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3893, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "65486:14:10", + "nodeType": "VariableDeclaration", + "scope": 3906, + "src": "65478:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3892, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "65478:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "65477:24:10" + }, + "returnParameters": { + "id": 3897, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3896, + "mutability": "mutable", + "name": "instance", + "nameLocation": "65528:8:10", + "nodeType": "VariableDeclaration", + "scope": 3906, + "src": "65520:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3895, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "65520:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "65519:18:10" + }, + "scope": 5104, + "src": "65454:145:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3917, + "nodeType": "Block", + "src": "65833:8789:10", + "statements": [ + { + "AST": { + "nativeSrc": "65895:8721:10", + "nodeType": "YulBlock", + "src": "65895:8721:10", + "statements": [ + { + "nativeSrc": "73879:20:10", + "nodeType": "YulVariableDeclaration", + "src": "73879:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "73894:4:10", + "nodeType": "YulLiteral", + "src": "73894:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "73888:5:10", + "nodeType": "YulIdentifier", + "src": "73888:5:10" + }, + "nativeSrc": "73888:11:10", + "nodeType": "YulFunctionCall", + "src": "73888:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "73883:1:10", + "nodeType": "YulTypedName", + "src": "73883:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "73953:4:10", + "nodeType": "YulLiteral", + "src": "73953:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "73959:66:10", + "nodeType": "YulLiteral", + "src": "73959:66:10", + "type": "", + "value": "0x3d6000803e603e573d6000fd5b3d6000f35b6020600f3d393d51543d52593df3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "73946:6:10", + "nodeType": "YulIdentifier", + "src": "73946:6:10" + }, + "nativeSrc": "73946:80:10", + "nodeType": "YulFunctionCall", + "src": "73946:80:10" + }, + "nativeSrc": "73946:80:10", + "nodeType": "YulExpressionStatement", + "src": "73946:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "74046:4:10", + "nodeType": "YulLiteral", + "src": "74046:4:10", + "type": "", + "value": "0x40" + }, + { + "kind": "number", + "nativeSrc": "74052:66:10", + "nodeType": "YulLiteral", + "src": "74052:66:10", + "type": "", + "value": "0xa13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af4" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "74039:6:10", + "nodeType": "YulIdentifier", + "src": "74039:6:10" + }, + "nativeSrc": "74039:80:10", + "nodeType": "YulFunctionCall", + "src": "74039:80:10" + }, + "nativeSrc": "74039:80:10", + "nodeType": "YulExpressionStatement", + "src": "74039:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "74139:4:10", + "nodeType": "YulLiteral", + "src": "74139:4:10", + "type": "", + "value": "0x20" + }, + { + "kind": "number", + "nativeSrc": "74145:48:10", + "nodeType": "YulLiteral", + "src": "74145:48:10", + "type": "", + "value": "0x600f5155f3365814604357363d3d373d3d363d7f360894" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "74132:6:10", + "nodeType": "YulIdentifier", + "src": "74132:6:10" + }, + "nativeSrc": "74132:62:10", + "nodeType": "YulFunctionCall", + "src": "74132:62:10" + }, + "nativeSrc": "74132:62:10", + "nodeType": "YulExpressionStatement", + "src": "74132:62:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "74214:4:10", + "nodeType": "YulLiteral", + "src": "74214:4:10", + "type": "", + "value": "0x09" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "74227:3:10", + "nodeType": "YulLiteral", + "src": "74227:3:10", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "74232:20:10", + "nodeType": "YulLiteral", + "src": "74232:20:10", + "type": "", + "value": "0x60523d8160223d3973" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "74223:3:10", + "nodeType": "YulIdentifier", + "src": "74223:3:10" + }, + "nativeSrc": "74223:30:10", + "nodeType": "YulFunctionCall", + "src": "74223:30:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "74259:2:10", + "nodeType": "YulLiteral", + "src": "74259:2:10", + "type": "", + "value": "96" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "74267:2:10", + "nodeType": "YulLiteral", + "src": "74267:2:10", + "type": "", + "value": "96" + }, + { + "name": "implementation", + "nativeSrc": "74271:14:10", + "nodeType": "YulIdentifier", + "src": "74271:14:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "74263:3:10", + "nodeType": "YulIdentifier", + "src": "74263:3:10" + }, + "nativeSrc": "74263:23:10", + "nodeType": "YulFunctionCall", + "src": "74263:23:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "74255:3:10", + "nodeType": "YulIdentifier", + "src": "74255:3:10" + }, + "nativeSrc": "74255:32:10", + "nodeType": "YulFunctionCall", + "src": "74255:32:10" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "74220:2:10", + "nodeType": "YulIdentifier", + "src": "74220:2:10" + }, + "nativeSrc": "74220:68:10", + "nodeType": "YulFunctionCall", + "src": "74220:68:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "74207:6:10", + "nodeType": "YulIdentifier", + "src": "74207:6:10" + }, + "nativeSrc": "74207:82:10", + "nodeType": "YulFunctionCall", + "src": "74207:82:10" + }, + "nativeSrc": "74207:82:10", + "nodeType": "YulExpressionStatement", + "src": "74207:82:10" + }, + { + "nativeSrc": "74302:37:10", + "nodeType": "YulAssignment", + "src": "74302:37:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "74321:5:10", + "nodeType": "YulIdentifier", + "src": "74321:5:10" + }, + { + "kind": "number", + "nativeSrc": "74328:4:10", + "nodeType": "YulLiteral", + "src": "74328:4:10", + "type": "", + "value": "0x0c" + }, + { + "kind": "number", + "nativeSrc": "74334:4:10", + "nodeType": "YulLiteral", + "src": "74334:4:10", + "type": "", + "value": "0x74" + } + ], + "functionName": { + "name": "create", + "nativeSrc": "74314:6:10", + "nodeType": "YulIdentifier", + "src": "74314:6:10" + }, + "nativeSrc": "74314:25:10", + "nodeType": "YulFunctionCall", + "src": "74314:25:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "74302:8:10", + "nodeType": "YulIdentifier", + "src": "74302:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "74372:116:10", + "nodeType": "YulBlock", + "src": "74372:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "74397:4:10", + "nodeType": "YulLiteral", + "src": "74397:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "74403:10:10", + "nodeType": "YulLiteral", + "src": "74403:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "74390:6:10", + "nodeType": "YulIdentifier", + "src": "74390:6:10" + }, + "nativeSrc": "74390:24:10", + "nodeType": "YulFunctionCall", + "src": "74390:24:10" + }, + "nativeSrc": "74390:24:10", + "nodeType": "YulExpressionStatement", + "src": "74390:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "74463:4:10", + "nodeType": "YulLiteral", + "src": "74463:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "74469:4:10", + "nodeType": "YulLiteral", + "src": "74469:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "74456:6:10", + "nodeType": "YulIdentifier", + "src": "74456:6:10" + }, + "nativeSrc": "74456:18:10", + "nodeType": "YulFunctionCall", + "src": "74456:18:10" + }, + "nativeSrc": "74456:18:10", + "nodeType": "YulExpressionStatement", + "src": "74456:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "74362:8:10", + "nodeType": "YulIdentifier", + "src": "74362:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "74355:6:10", + "nodeType": "YulIdentifier", + "src": "74355:6:10" + }, + "nativeSrc": "74355:16:10", + "nodeType": "YulFunctionCall", + "src": "74355:16:10" + }, + "nativeSrc": "74352:136:10", + "nodeType": "YulIf", + "src": "74352:136:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "74508:4:10", + "nodeType": "YulLiteral", + "src": "74508:4:10", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "74514:1:10", + "nodeType": "YulIdentifier", + "src": "74514:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "74501:6:10", + "nodeType": "YulIdentifier", + "src": "74501:6:10" + }, + "nativeSrc": "74501:15:10", + "nodeType": "YulFunctionCall", + "src": "74501:15:10" + }, + "nativeSrc": "74501:15:10", + "nodeType": "YulExpressionStatement", + "src": "74501:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "74572:4:10", + "nodeType": "YulLiteral", + "src": "74572:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "74578:1:10", + "nodeType": "YulLiteral", + "src": "74578:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "74565:6:10", + "nodeType": "YulIdentifier", + "src": "74565:6:10" + }, + "nativeSrc": "74565:15:10", + "nodeType": "YulFunctionCall", + "src": "74565:15:10" + }, + "nativeSrc": "74565:15:10", + "nodeType": "YulExpressionStatement", + "src": "74565:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3911, + "isOffset": false, + "isSlot": false, + "src": "74271:14:10", + "valueSize": 1 + }, + { + "declaration": 3914, + "isOffset": false, + "isSlot": false, + "src": "74302:8:10", + "valueSize": 1 + }, + { + "declaration": 3914, + "isOffset": false, + "isSlot": false, + "src": "74362:8:10", + "valueSize": 1 + }, + { + "declaration": 3909, + "isOffset": false, + "isSlot": false, + "src": "74321:5:10", + "valueSize": 1 + } + ], + "id": 3916, + "nodeType": "InlineAssembly", + "src": "65886:8730:10" + } + ] + }, + "documentation": { + "id": 3907, + "nodeType": "StructuredDocumentation", + "src": "65605:104:10", + "text": "@dev Deploys a ERC1967I proxy with `implementation`.\n Deposits `value` ETH during deployment." + }, + "id": 3918, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployERC1967I", + "nameLocation": "65723:14:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3912, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3909, + "mutability": "mutable", + "name": "value", + "nameLocation": "65746:5:10", + "nodeType": "VariableDeclaration", + "scope": 3918, + "src": "65738:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3908, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "65738:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3911, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "65761:14:10", + "nodeType": "VariableDeclaration", + "scope": 3918, + "src": "65753:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3910, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "65753:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "65737:39:10" + }, + "returnParameters": { + "id": 3915, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3914, + "mutability": "mutable", + "name": "instance", + "nameLocation": "65819:8:10", + "nodeType": "VariableDeclaration", + "scope": 3918, + "src": "65811:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3913, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "65811:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "65810:18:10" + }, + "scope": 5104, + "src": "65714:8908:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3936, + "nodeType": "Block", + "src": "74845:80:10", + "statements": [ + { + "expression": { + "id": 3934, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3928, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3926, + "src": "74855:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 3930, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "74894:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 3931, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3921, + "src": "74897:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3932, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3923, + "src": "74913:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3929, + "name": "deployDeterministicERC1967I", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3937, + 3951, + 4086, + 4102 + ], + "referencedDeclaration": 3951, + "src": "74866:27:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (uint256,address,bytes32) returns (address)" + } + }, + "id": 3933, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "74866:52:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "74855:63:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3935, + "nodeType": "ExpressionStatement", + "src": "74855:63:10" + } + ] + }, + "documentation": { + "id": 3919, + "nodeType": "StructuredDocumentation", + "src": "74628:81:10", + "text": "@dev Deploys a deterministic ERC1967I proxy with `implementation` and `salt`." + }, + "id": 3937, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployDeterministicERC1967I", + "nameLocation": "74723:27:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3924, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3921, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "74759:14:10", + "nodeType": "VariableDeclaration", + "scope": 3937, + "src": "74751:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3920, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "74751:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3923, + "mutability": "mutable", + "name": "salt", + "nameLocation": "74783:4:10", + "nodeType": "VariableDeclaration", + "scope": 3937, + "src": "74775:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3922, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "74775:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "74750:38:10" + }, + "returnParameters": { + "id": 3927, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3926, + "mutability": "mutable", + "name": "instance", + "nameLocation": "74831:8:10", + "nodeType": "VariableDeclaration", + "scope": 3937, + "src": "74823:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3925, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "74823:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "74822:18:10" + }, + "scope": 5104, + "src": "74714:211:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3950, + "nodeType": "Block", + "src": "75211:826:10", + "statements": [ + { + "AST": { + "nativeSrc": "75273:758:10", + "nodeType": "YulBlock", + "src": "75273:758:10", + "statements": [ + { + "nativeSrc": "75287:20:10", + "nodeType": "YulVariableDeclaration", + "src": "75287:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "75302:4:10", + "nodeType": "YulLiteral", + "src": "75302:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "75296:5:10", + "nodeType": "YulIdentifier", + "src": "75296:5:10" + }, + "nativeSrc": "75296:11:10", + "nodeType": "YulFunctionCall", + "src": "75296:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "75291:1:10", + "nodeType": "YulTypedName", + "src": "75291:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "75361:4:10", + "nodeType": "YulLiteral", + "src": "75361:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "75367:66:10", + "nodeType": "YulLiteral", + "src": "75367:66:10", + "type": "", + "value": "0x3d6000803e603e573d6000fd5b3d6000f35b6020600f3d393d51543d52593df3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "75354:6:10", + "nodeType": "YulIdentifier", + "src": "75354:6:10" + }, + "nativeSrc": "75354:80:10", + "nodeType": "YulFunctionCall", + "src": "75354:80:10" + }, + "nativeSrc": "75354:80:10", + "nodeType": "YulExpressionStatement", + "src": "75354:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "75454:4:10", + "nodeType": "YulLiteral", + "src": "75454:4:10", + "type": "", + "value": "0x40" + }, + { + "kind": "number", + "nativeSrc": "75460:66:10", + "nodeType": "YulLiteral", + "src": "75460:66:10", + "type": "", + "value": "0xa13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af4" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "75447:6:10", + "nodeType": "YulIdentifier", + "src": "75447:6:10" + }, + "nativeSrc": "75447:80:10", + "nodeType": "YulFunctionCall", + "src": "75447:80:10" + }, + "nativeSrc": "75447:80:10", + "nodeType": "YulExpressionStatement", + "src": "75447:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "75547:4:10", + "nodeType": "YulLiteral", + "src": "75547:4:10", + "type": "", + "value": "0x20" + }, + { + "kind": "number", + "nativeSrc": "75553:48:10", + "nodeType": "YulLiteral", + "src": "75553:48:10", + "type": "", + "value": "0x600f5155f3365814604357363d3d373d3d363d7f360894" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "75540:6:10", + "nodeType": "YulIdentifier", + "src": "75540:6:10" + }, + "nativeSrc": "75540:62:10", + "nodeType": "YulFunctionCall", + "src": "75540:62:10" + }, + "nativeSrc": "75540:62:10", + "nodeType": "YulExpressionStatement", + "src": "75540:62:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "75622:4:10", + "nodeType": "YulLiteral", + "src": "75622:4:10", + "type": "", + "value": "0x09" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "75635:3:10", + "nodeType": "YulLiteral", + "src": "75635:3:10", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "75640:20:10", + "nodeType": "YulLiteral", + "src": "75640:20:10", + "type": "", + "value": "0x60523d8160223d3973" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "75631:3:10", + "nodeType": "YulIdentifier", + "src": "75631:3:10" + }, + "nativeSrc": "75631:30:10", + "nodeType": "YulFunctionCall", + "src": "75631:30:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "75667:2:10", + "nodeType": "YulLiteral", + "src": "75667:2:10", + "type": "", + "value": "96" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "75675:2:10", + "nodeType": "YulLiteral", + "src": "75675:2:10", + "type": "", + "value": "96" + }, + { + "name": "implementation", + "nativeSrc": "75679:14:10", + "nodeType": "YulIdentifier", + "src": "75679:14:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "75671:3:10", + "nodeType": "YulIdentifier", + "src": "75671:3:10" + }, + "nativeSrc": "75671:23:10", + "nodeType": "YulFunctionCall", + "src": "75671:23:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "75663:3:10", + "nodeType": "YulIdentifier", + "src": "75663:3:10" + }, + "nativeSrc": "75663:32:10", + "nodeType": "YulFunctionCall", + "src": "75663:32:10" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "75628:2:10", + "nodeType": "YulIdentifier", + "src": "75628:2:10" + }, + "nativeSrc": "75628:68:10", + "nodeType": "YulFunctionCall", + "src": "75628:68:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "75615:6:10", + "nodeType": "YulIdentifier", + "src": "75615:6:10" + }, + "nativeSrc": "75615:82:10", + "nodeType": "YulFunctionCall", + "src": "75615:82:10" + }, + "nativeSrc": "75615:82:10", + "nodeType": "YulExpressionStatement", + "src": "75615:82:10" + }, + { + "nativeSrc": "75710:44:10", + "nodeType": "YulAssignment", + "src": "75710:44:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "75730:5:10", + "nodeType": "YulIdentifier", + "src": "75730:5:10" + }, + { + "kind": "number", + "nativeSrc": "75737:4:10", + "nodeType": "YulLiteral", + "src": "75737:4:10", + "type": "", + "value": "0x0c" + }, + { + "kind": "number", + "nativeSrc": "75743:4:10", + "nodeType": "YulLiteral", + "src": "75743:4:10", + "type": "", + "value": "0x74" + }, + { + "name": "salt", + "nativeSrc": "75749:4:10", + "nodeType": "YulIdentifier", + "src": "75749:4:10" + } + ], + "functionName": { + "name": "create2", + "nativeSrc": "75722:7:10", + "nodeType": "YulIdentifier", + "src": "75722:7:10" + }, + "nativeSrc": "75722:32:10", + "nodeType": "YulFunctionCall", + "src": "75722:32:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "75710:8:10", + "nodeType": "YulIdentifier", + "src": "75710:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "75787:116:10", + "nodeType": "YulBlock", + "src": "75787:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "75812:4:10", + "nodeType": "YulLiteral", + "src": "75812:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "75818:10:10", + "nodeType": "YulLiteral", + "src": "75818:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "75805:6:10", + "nodeType": "YulIdentifier", + "src": "75805:6:10" + }, + "nativeSrc": "75805:24:10", + "nodeType": "YulFunctionCall", + "src": "75805:24:10" + }, + "nativeSrc": "75805:24:10", + "nodeType": "YulExpressionStatement", + "src": "75805:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "75878:4:10", + "nodeType": "YulLiteral", + "src": "75878:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "75884:4:10", + "nodeType": "YulLiteral", + "src": "75884:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "75871:6:10", + "nodeType": "YulIdentifier", + "src": "75871:6:10" + }, + "nativeSrc": "75871:18:10", + "nodeType": "YulFunctionCall", + "src": "75871:18:10" + }, + "nativeSrc": "75871:18:10", + "nodeType": "YulExpressionStatement", + "src": "75871:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "75777:8:10", + "nodeType": "YulIdentifier", + "src": "75777:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "75770:6:10", + "nodeType": "YulIdentifier", + "src": "75770:6:10" + }, + "nativeSrc": "75770:16:10", + "nodeType": "YulFunctionCall", + "src": "75770:16:10" + }, + "nativeSrc": "75767:136:10", + "nodeType": "YulIf", + "src": "75767:136:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "75923:4:10", + "nodeType": "YulLiteral", + "src": "75923:4:10", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "75929:1:10", + "nodeType": "YulIdentifier", + "src": "75929:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "75916:6:10", + "nodeType": "YulIdentifier", + "src": "75916:6:10" + }, + "nativeSrc": "75916:15:10", + "nodeType": "YulFunctionCall", + "src": "75916:15:10" + }, + "nativeSrc": "75916:15:10", + "nodeType": "YulExpressionStatement", + "src": "75916:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "75987:4:10", + "nodeType": "YulLiteral", + "src": "75987:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "75993:1:10", + "nodeType": "YulLiteral", + "src": "75993:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "75980:6:10", + "nodeType": "YulIdentifier", + "src": "75980:6:10" + }, + "nativeSrc": "75980:15:10", + "nodeType": "YulFunctionCall", + "src": "75980:15:10" + }, + "nativeSrc": "75980:15:10", + "nodeType": "YulExpressionStatement", + "src": "75980:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3942, + "isOffset": false, + "isSlot": false, + "src": "75679:14:10", + "valueSize": 1 + }, + { + "declaration": 3947, + "isOffset": false, + "isSlot": false, + "src": "75710:8:10", + "valueSize": 1 + }, + { + "declaration": 3947, + "isOffset": false, + "isSlot": false, + "src": "75777:8:10", + "valueSize": 1 + }, + { + "declaration": 3944, + "isOffset": false, + "isSlot": false, + "src": "75749:4:10", + "valueSize": 1 + }, + { + "declaration": 3940, + "isOffset": false, + "isSlot": false, + "src": "75730:5:10", + "valueSize": 1 + } + ], + "id": 3949, + "nodeType": "InlineAssembly", + "src": "75264:767:10" + } + ] + }, + "documentation": { + "id": 3938, + "nodeType": "StructuredDocumentation", + "src": "74931:129:10", + "text": "@dev Deploys a deterministic ERC1967I proxy with `implementation` and `salt`.\n Deposits `value` ETH during deployment." + }, + "id": 3951, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployDeterministicERC1967I", + "nameLocation": "75074:27:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3945, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3940, + "mutability": "mutable", + "name": "value", + "nameLocation": "75110:5:10", + "nodeType": "VariableDeclaration", + "scope": 3951, + "src": "75102:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3939, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "75102:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3942, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "75125:14:10", + "nodeType": "VariableDeclaration", + "scope": 3951, + "src": "75117:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3941, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "75117:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3944, + "mutability": "mutable", + "name": "salt", + "nameLocation": "75149:4:10", + "nodeType": "VariableDeclaration", + "scope": 3951, + "src": "75141:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3943, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "75141:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "75101:53:10" + }, + "returnParameters": { + "id": 3948, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3947, + "mutability": "mutable", + "name": "instance", + "nameLocation": "75197:8:10", + "nodeType": "VariableDeclaration", + "scope": 3951, + "src": "75189:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3946, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "75189:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "75188:18:10" + }, + "scope": 5104, + "src": "75065:972:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3969, + "nodeType": "Block", + "src": "76425:76:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "30", + "id": 3964, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "76470:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 3965, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3954, + "src": "76473:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3966, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3956, + "src": "76489:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3963, + "name": "createDeterministicERC1967I", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3970, + 3986, + 4124, + 4142 + ], + "referencedDeclaration": 3986, + "src": "76442:27:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$_t_bool_$_t_address_$", + "typeString": "function (uint256,address,bytes32) returns (bool,address)" + } + }, + "id": 3967, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "76442:52:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_address_$", + "typeString": "tuple(bool,address)" + } + }, + "functionReturnParameters": 3962, + "id": 3968, + "nodeType": "Return", + "src": "76435:59:10" + } + ] + }, + "documentation": { + "id": 3952, + "nodeType": "StructuredDocumentation", + "src": "76043:224:10", + "text": "@dev Creates a deterministic ERC1967I proxy with `implementation` and `salt`.\n Note: This method is intended for use in ERC4337 factories,\n which are expected to NOT revert if the proxy is already deployed." + }, + "id": 3970, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createDeterministicERC1967I", + "nameLocation": "76281:27:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3957, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3954, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "76317:14:10", + "nodeType": "VariableDeclaration", + "scope": 3970, + "src": "76309:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3953, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "76309:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3956, + "mutability": "mutable", + "name": "salt", + "nameLocation": "76341:4:10", + "nodeType": "VariableDeclaration", + "scope": 3970, + "src": "76333:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3955, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "76333:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "76308:38:10" + }, + "returnParameters": { + "id": 3962, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3959, + "mutability": "mutable", + "name": "alreadyDeployed", + "nameLocation": "76386:15:10", + "nodeType": "VariableDeclaration", + "scope": 3970, + "src": "76381:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3958, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "76381:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3961, + "mutability": "mutable", + "name": "instance", + "nameLocation": "76411:8:10", + "nodeType": "VariableDeclaration", + "scope": 3970, + "src": "76403:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3960, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "76403:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "76380:40:10" + }, + "scope": 5104, + "src": "76272:229:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3985, + "nodeType": "Block", + "src": "76952:1607:10", + "statements": [ + { + "AST": { + "nativeSrc": "77014:1539:10", + "nodeType": "YulBlock", + "src": "77014:1539:10", + "statements": [ + { + "nativeSrc": "77028:20:10", + "nodeType": "YulVariableDeclaration", + "src": "77028:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "77043:4:10", + "nodeType": "YulLiteral", + "src": "77043:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "77037:5:10", + "nodeType": "YulIdentifier", + "src": "77037:5:10" + }, + "nativeSrc": "77037:11:10", + "nodeType": "YulFunctionCall", + "src": "77037:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "77032:1:10", + "nodeType": "YulTypedName", + "src": "77032:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "77102:4:10", + "nodeType": "YulLiteral", + "src": "77102:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "77108:66:10", + "nodeType": "YulLiteral", + "src": "77108:66:10", + "type": "", + "value": "0x3d6000803e603e573d6000fd5b3d6000f35b6020600f3d393d51543d52593df3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "77095:6:10", + "nodeType": "YulIdentifier", + "src": "77095:6:10" + }, + "nativeSrc": "77095:80:10", + "nodeType": "YulFunctionCall", + "src": "77095:80:10" + }, + "nativeSrc": "77095:80:10", + "nodeType": "YulExpressionStatement", + "src": "77095:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "77195:4:10", + "nodeType": "YulLiteral", + "src": "77195:4:10", + "type": "", + "value": "0x40" + }, + { + "kind": "number", + "nativeSrc": "77201:66:10", + "nodeType": "YulLiteral", + "src": "77201:66:10", + "type": "", + "value": "0xa13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af4" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "77188:6:10", + "nodeType": "YulIdentifier", + "src": "77188:6:10" + }, + "nativeSrc": "77188:80:10", + "nodeType": "YulFunctionCall", + "src": "77188:80:10" + }, + "nativeSrc": "77188:80:10", + "nodeType": "YulExpressionStatement", + "src": "77188:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "77288:4:10", + "nodeType": "YulLiteral", + "src": "77288:4:10", + "type": "", + "value": "0x20" + }, + { + "kind": "number", + "nativeSrc": "77294:48:10", + "nodeType": "YulLiteral", + "src": "77294:48:10", + "type": "", + "value": "0x600f5155f3365814604357363d3d373d3d363d7f360894" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "77281:6:10", + "nodeType": "YulIdentifier", + "src": "77281:6:10" + }, + "nativeSrc": "77281:62:10", + "nodeType": "YulFunctionCall", + "src": "77281:62:10" + }, + "nativeSrc": "77281:62:10", + "nodeType": "YulExpressionStatement", + "src": "77281:62:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "77363:4:10", + "nodeType": "YulLiteral", + "src": "77363:4:10", + "type": "", + "value": "0x09" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "77376:3:10", + "nodeType": "YulLiteral", + "src": "77376:3:10", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "77381:20:10", + "nodeType": "YulLiteral", + "src": "77381:20:10", + "type": "", + "value": "0x60523d8160223d3973" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "77372:3:10", + "nodeType": "YulIdentifier", + "src": "77372:3:10" + }, + "nativeSrc": "77372:30:10", + "nodeType": "YulFunctionCall", + "src": "77372:30:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "77408:2:10", + "nodeType": "YulLiteral", + "src": "77408:2:10", + "type": "", + "value": "96" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "77416:2:10", + "nodeType": "YulLiteral", + "src": "77416:2:10", + "type": "", + "value": "96" + }, + { + "name": "implementation", + "nativeSrc": "77420:14:10", + "nodeType": "YulIdentifier", + "src": "77420:14:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "77412:3:10", + "nodeType": "YulIdentifier", + "src": "77412:3:10" + }, + "nativeSrc": "77412:23:10", + "nodeType": "YulFunctionCall", + "src": "77412:23:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "77404:3:10", + "nodeType": "YulIdentifier", + "src": "77404:3:10" + }, + "nativeSrc": "77404:32:10", + "nodeType": "YulFunctionCall", + "src": "77404:32:10" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "77369:2:10", + "nodeType": "YulIdentifier", + "src": "77369:2:10" + }, + "nativeSrc": "77369:68:10", + "nodeType": "YulFunctionCall", + "src": "77369:68:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "77356:6:10", + "nodeType": "YulIdentifier", + "src": "77356:6:10" + }, + "nativeSrc": "77356:82:10", + "nodeType": "YulFunctionCall", + "src": "77356:82:10" + }, + "nativeSrc": "77356:82:10", + "nodeType": "YulExpressionStatement", + "src": "77356:82:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "77514:1:10", + "nodeType": "YulIdentifier", + "src": "77514:1:10" + }, + { + "kind": "number", + "nativeSrc": "77517:4:10", + "nodeType": "YulLiteral", + "src": "77517:4:10", + "type": "", + "value": "0x35" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "77510:3:10", + "nodeType": "YulIdentifier", + "src": "77510:3:10" + }, + "nativeSrc": "77510:12:10", + "nodeType": "YulFunctionCall", + "src": "77510:12:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "77534:4:10", + "nodeType": "YulLiteral", + "src": "77534:4:10", + "type": "", + "value": "0x0c" + }, + { + "kind": "number", + "nativeSrc": "77540:4:10", + "nodeType": "YulLiteral", + "src": "77540:4:10", + "type": "", + "value": "0x74" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "77524:9:10", + "nodeType": "YulIdentifier", + "src": "77524:9:10" + }, + "nativeSrc": "77524:21:10", + "nodeType": "YulFunctionCall", + "src": "77524:21:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "77503:6:10", + "nodeType": "YulIdentifier", + "src": "77503:6:10" + }, + "nativeSrc": "77503:43:10", + "nodeType": "YulFunctionCall", + "src": "77503:43:10" + }, + "nativeSrc": "77503:43:10", + "nodeType": "YulExpressionStatement", + "src": "77503:43:10" + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "77566:1:10", + "nodeType": "YulIdentifier", + "src": "77566:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "77573:2:10", + "nodeType": "YulLiteral", + "src": "77573:2:10", + "type": "", + "value": "88" + }, + { + "arguments": [], + "functionName": { + "name": "address", + "nativeSrc": "77577:7:10", + "nodeType": "YulIdentifier", + "src": "77577:7:10" + }, + "nativeSrc": "77577:9:10", + "nodeType": "YulFunctionCall", + "src": "77577:9:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "77569:3:10", + "nodeType": "YulIdentifier", + "src": "77569:3:10" + }, + "nativeSrc": "77569:18:10", + "nodeType": "YulFunctionCall", + "src": "77569:18:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "77559:6:10", + "nodeType": "YulIdentifier", + "src": "77559:6:10" + }, + "nativeSrc": "77559:29:10", + "nodeType": "YulFunctionCall", + "src": "77559:29:10" + }, + "nativeSrc": "77559:29:10", + "nodeType": "YulExpressionStatement", + "src": "77559:29:10" + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "77609:1:10", + "nodeType": "YulIdentifier", + "src": "77609:1:10" + }, + { + "kind": "number", + "nativeSrc": "77612:4:10", + "nodeType": "YulLiteral", + "src": "77612:4:10", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "77601:7:10", + "nodeType": "YulIdentifier", + "src": "77601:7:10" + }, + "nativeSrc": "77601:16:10", + "nodeType": "YulFunctionCall", + "src": "77601:16:10" + }, + "nativeSrc": "77601:16:10", + "nodeType": "YulExpressionStatement", + "src": "77601:16:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "77662:1:10", + "nodeType": "YulIdentifier", + "src": "77662:1:10" + }, + { + "kind": "number", + "nativeSrc": "77665:4:10", + "nodeType": "YulLiteral", + "src": "77665:4:10", + "type": "", + "value": "0x15" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "77658:3:10", + "nodeType": "YulIdentifier", + "src": "77658:3:10" + }, + "nativeSrc": "77658:12:10", + "nodeType": "YulFunctionCall", + "src": "77658:12:10" + }, + { + "name": "salt", + "nativeSrc": "77672:4:10", + "nodeType": "YulIdentifier", + "src": "77672:4:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "77651:6:10", + "nodeType": "YulIdentifier", + "src": "77651:6:10" + }, + "nativeSrc": "77651:26:10", + "nodeType": "YulFunctionCall", + "src": "77651:26:10" + }, + "nativeSrc": "77651:26:10", + "nodeType": "YulExpressionStatement", + "src": "77651:26:10" + }, + { + "nativeSrc": "77690:30:10", + "nodeType": "YulAssignment", + "src": "77690:30:10", + "value": { + "arguments": [ + { + "name": "m", + "nativeSrc": "77712:1:10", + "nodeType": "YulIdentifier", + "src": "77712:1:10" + }, + { + "kind": "number", + "nativeSrc": "77715:4:10", + "nodeType": "YulLiteral", + "src": "77715:4:10", + "type": "", + "value": "0x55" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "77702:9:10", + "nodeType": "YulIdentifier", + "src": "77702:9:10" + }, + "nativeSrc": "77702:18:10", + "nodeType": "YulFunctionCall", + "src": "77702:18:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "77690:8:10", + "nodeType": "YulIdentifier", + "src": "77690:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "77745:680:10", + "nodeType": "YulBlock", + "src": "77745:680:10", + "statements": [ + { + "body": { + "nativeSrc": "77796:291:10", + "nodeType": "YulBlock", + "src": "77796:291:10", + "statements": [ + { + "nativeSrc": "77818:44:10", + "nodeType": "YulAssignment", + "src": "77818:44:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "77838:5:10", + "nodeType": "YulIdentifier", + "src": "77838:5:10" + }, + { + "kind": "number", + "nativeSrc": "77845:4:10", + "nodeType": "YulLiteral", + "src": "77845:4:10", + "type": "", + "value": "0x0c" + }, + { + "kind": "number", + "nativeSrc": "77851:4:10", + "nodeType": "YulLiteral", + "src": "77851:4:10", + "type": "", + "value": "0x74" + }, + { + "name": "salt", + "nativeSrc": "77857:4:10", + "nodeType": "YulIdentifier", + "src": "77857:4:10" + } + ], + "functionName": { + "name": "create2", + "nativeSrc": "77830:7:10", + "nodeType": "YulIdentifier", + "src": "77830:7:10" + }, + "nativeSrc": "77830:32:10", + "nodeType": "YulFunctionCall", + "src": "77830:32:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "77818:8:10", + "nodeType": "YulIdentifier", + "src": "77818:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "77903:140:10", + "nodeType": "YulBlock", + "src": "77903:140:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "77936:4:10", + "nodeType": "YulLiteral", + "src": "77936:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "77942:10:10", + "nodeType": "YulLiteral", + "src": "77942:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "77929:6:10", + "nodeType": "YulIdentifier", + "src": "77929:6:10" + }, + "nativeSrc": "77929:24:10", + "nodeType": "YulFunctionCall", + "src": "77929:24:10" + }, + "nativeSrc": "77929:24:10", + "nodeType": "YulExpressionStatement", + "src": "77929:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "78010:4:10", + "nodeType": "YulLiteral", + "src": "78010:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "78016:4:10", + "nodeType": "YulLiteral", + "src": "78016:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "78003:6:10", + "nodeType": "YulIdentifier", + "src": "78003:6:10" + }, + "nativeSrc": "78003:18:10", + "nodeType": "YulFunctionCall", + "src": "78003:18:10" + }, + "nativeSrc": "78003:18:10", + "nodeType": "YulExpressionStatement", + "src": "78003:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "77893:8:10", + "nodeType": "YulIdentifier", + "src": "77893:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "77886:6:10", + "nodeType": "YulIdentifier", + "src": "77886:6:10" + }, + "nativeSrc": "77886:16:10", + "nodeType": "YulFunctionCall", + "src": "77886:16:10" + }, + "nativeSrc": "77883:160:10", + "nodeType": "YulIf", + "src": "77883:160:10" + }, + { + "nativeSrc": "78064:5:10", + "nodeType": "YulBreak", + "src": "78064:5:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "77785:8:10", + "nodeType": "YulIdentifier", + "src": "77785:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "77773:11:10", + "nodeType": "YulIdentifier", + "src": "77773:11:10" + }, + "nativeSrc": "77773:21:10", + "nodeType": "YulFunctionCall", + "src": "77773:21:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "77766:6:10", + "nodeType": "YulIdentifier", + "src": "77766:6:10" + }, + "nativeSrc": "77766:29:10", + "nodeType": "YulFunctionCall", + "src": "77766:29:10" + }, + "nativeSrc": "77763:324:10", + "nodeType": "YulIf", + "src": "77763:324:10" + }, + { + "nativeSrc": "78104:20:10", + "nodeType": "YulAssignment", + "src": "78104:20:10", + "value": { + "kind": "number", + "nativeSrc": "78123:1:10", + "nodeType": "YulLiteral", + "src": "78123:1:10", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "alreadyDeployed", + "nativeSrc": "78104:15:10", + "nodeType": "YulIdentifier", + "src": "78104:15:10" + } + ] + }, + { + "body": { + "nativeSrc": "78158:9:10", + "nodeType": "YulBlock", + "src": "78158:9:10", + "statements": [ + { + "nativeSrc": "78160:5:10", + "nodeType": "YulBreak", + "src": "78160:5:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nativeSrc": "78151:5:10", + "nodeType": "YulIdentifier", + "src": "78151:5:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "78144:6:10", + "nodeType": "YulIdentifier", + "src": "78144:6:10" + }, + "nativeSrc": "78144:13:10", + "nodeType": "YulFunctionCall", + "src": "78144:13:10" + }, + "nativeSrc": "78141:26:10", + "nodeType": "YulIf", + "src": "78141:26:10" + }, + { + "body": { + "nativeSrc": "78260:129:10", + "nodeType": "YulBlock", + "src": "78260:129:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "78289:4:10", + "nodeType": "YulLiteral", + "src": "78289:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "78295:10:10", + "nodeType": "YulLiteral", + "src": "78295:10:10", + "type": "", + "value": "0xb12d13eb" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "78282:6:10", + "nodeType": "YulIdentifier", + "src": "78282:6:10" + }, + "nativeSrc": "78282:24:10", + "nodeType": "YulFunctionCall", + "src": "78282:24:10" + }, + "nativeSrc": "78282:24:10", + "nodeType": "YulExpressionStatement", + "src": "78282:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "78360:4:10", + "nodeType": "YulLiteral", + "src": "78360:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "78366:4:10", + "nodeType": "YulLiteral", + "src": "78366:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "78353:6:10", + "nodeType": "YulIdentifier", + "src": "78353:6:10" + }, + "nativeSrc": "78353:18:10", + "nodeType": "YulFunctionCall", + "src": "78353:18:10" + }, + "nativeSrc": "78353:18:10", + "nodeType": "YulExpressionStatement", + "src": "78353:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "78199:3:10", + "nodeType": "YulIdentifier", + "src": "78199:3:10" + }, + "nativeSrc": "78199:5:10", + "nodeType": "YulFunctionCall", + "src": "78199:5:10" + }, + { + "name": "instance", + "nativeSrc": "78206:8:10", + "nodeType": "YulIdentifier", + "src": "78206:8:10" + }, + { + "name": "value", + "nativeSrc": "78216:5:10", + "nodeType": "YulIdentifier", + "src": "78216:5:10" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "78223:8:10", + "nodeType": "YulIdentifier", + "src": "78223:8:10" + }, + "nativeSrc": "78223:10:10", + "nodeType": "YulFunctionCall", + "src": "78223:10:10" + }, + { + "kind": "number", + "nativeSrc": "78235:4:10", + "nodeType": "YulLiteral", + "src": "78235:4:10", + "type": "", + "value": "0x00" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "78241:8:10", + "nodeType": "YulIdentifier", + "src": "78241:8:10" + }, + "nativeSrc": "78241:10:10", + "nodeType": "YulFunctionCall", + "src": "78241:10:10" + }, + { + "kind": "number", + "nativeSrc": "78253:4:10", + "nodeType": "YulLiteral", + "src": "78253:4:10", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "call", + "nativeSrc": "78194:4:10", + "nodeType": "YulIdentifier", + "src": "78194:4:10" + }, + "nativeSrc": "78194:64:10", + "nodeType": "YulFunctionCall", + "src": "78194:64:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "78187:6:10", + "nodeType": "YulIdentifier", + "src": "78187:6:10" + }, + "nativeSrc": "78187:72:10", + "nodeType": "YulFunctionCall", + "src": "78187:72:10" + }, + "nativeSrc": "78184:205:10", + "nodeType": "YulIf", + "src": "78184:205:10" + }, + { + "nativeSrc": "78406:5:10", + "nodeType": "YulBreak", + "src": "78406:5:10" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "77740:1:10", + "nodeType": "YulLiteral", + "src": "77740:1:10", + "type": "", + "value": "1" + }, + "nativeSrc": "77733:692:10", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "77742:2:10", + "nodeType": "YulBlock", + "src": "77742:2:10", + "statements": [] + }, + "pre": { + "nativeSrc": "77737:2:10", + "nodeType": "YulBlock", + "src": "77737:2:10", + "statements": [] + }, + "src": "77733:692:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "78445:4:10", + "nodeType": "YulLiteral", + "src": "78445:4:10", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "78451:1:10", + "nodeType": "YulIdentifier", + "src": "78451:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "78438:6:10", + "nodeType": "YulIdentifier", + "src": "78438:6:10" + }, + "nativeSrc": "78438:15:10", + "nodeType": "YulFunctionCall", + "src": "78438:15:10" + }, + "nativeSrc": "78438:15:10", + "nodeType": "YulExpressionStatement", + "src": "78438:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "78509:4:10", + "nodeType": "YulLiteral", + "src": "78509:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "78515:1:10", + "nodeType": "YulLiteral", + "src": "78515:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "78502:6:10", + "nodeType": "YulIdentifier", + "src": "78502:6:10" + }, + "nativeSrc": "78502:15:10", + "nodeType": "YulFunctionCall", + "src": "78502:15:10" + }, + "nativeSrc": "78502:15:10", + "nodeType": "YulExpressionStatement", + "src": "78502:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3980, + "isOffset": false, + "isSlot": false, + "src": "78104:15:10", + "valueSize": 1 + }, + { + "declaration": 3975, + "isOffset": false, + "isSlot": false, + "src": "77420:14:10", + "valueSize": 1 + }, + { + "declaration": 3982, + "isOffset": false, + "isSlot": false, + "src": "77690:8:10", + "valueSize": 1 + }, + { + "declaration": 3982, + "isOffset": false, + "isSlot": false, + "src": "77785:8:10", + "valueSize": 1 + }, + { + "declaration": 3982, + "isOffset": false, + "isSlot": false, + "src": "77818:8:10", + "valueSize": 1 + }, + { + "declaration": 3982, + "isOffset": false, + "isSlot": false, + "src": "77893:8:10", + "valueSize": 1 + }, + { + "declaration": 3982, + "isOffset": false, + "isSlot": false, + "src": "78206:8:10", + "valueSize": 1 + }, + { + "declaration": 3977, + "isOffset": false, + "isSlot": false, + "src": "77672:4:10", + "valueSize": 1 + }, + { + "declaration": 3977, + "isOffset": false, + "isSlot": false, + "src": "77857:4:10", + "valueSize": 1 + }, + { + "declaration": 3973, + "isOffset": false, + "isSlot": false, + "src": "77838:5:10", + "valueSize": 1 + }, + { + "declaration": 3973, + "isOffset": false, + "isSlot": false, + "src": "78151:5:10", + "valueSize": 1 + }, + { + "declaration": 3973, + "isOffset": false, + "isSlot": false, + "src": "78216:5:10", + "valueSize": 1 + } + ], + "id": 3984, + "nodeType": "InlineAssembly", + "src": "77005:1548:10" + } + ] + }, + "documentation": { + "id": 3971, + "nodeType": "StructuredDocumentation", + "src": "76507:272:10", + "text": "@dev Creates a deterministic ERC1967I proxy with `implementation` and `salt`.\n Deposits `value` ETH during deployment.\n Note: This method is intended for use in ERC4337 factories,\n which are expected to NOT revert if the proxy is already deployed." + }, + "id": 3986, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createDeterministicERC1967I", + "nameLocation": "76793:27:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3978, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3973, + "mutability": "mutable", + "name": "value", + "nameLocation": "76829:5:10", + "nodeType": "VariableDeclaration", + "scope": 3986, + "src": "76821:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3972, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "76821:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3975, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "76844:14:10", + "nodeType": "VariableDeclaration", + "scope": 3986, + "src": "76836:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3974, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "76836:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3977, + "mutability": "mutable", + "name": "salt", + "nameLocation": "76868:4:10", + "nodeType": "VariableDeclaration", + "scope": 3986, + "src": "76860:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3976, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "76860:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "76820:53:10" + }, + "returnParameters": { + "id": 3983, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3980, + "mutability": "mutable", + "name": "alreadyDeployed", + "nameLocation": "76913:15:10", + "nodeType": "VariableDeclaration", + "scope": 3986, + "src": "76908:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3979, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "76908:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3982, + "mutability": "mutable", + "name": "instance", + "nameLocation": "76938:8:10", + "nodeType": "VariableDeclaration", + "scope": 3986, + "src": "76930:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3981, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "76930:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "76907:40:10" + }, + "scope": 5104, + "src": "76784:1775:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3995, + "nodeType": "Block", + "src": "78742:641:10", + "statements": [ + { + "AST": { + "nativeSrc": "78804:573:10", + "nodeType": "YulBlock", + "src": "78804:573:10", + "statements": [ + { + "nativeSrc": "78818:16:10", + "nodeType": "YulAssignment", + "src": "78818:16:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "78829:4:10", + "nodeType": "YulLiteral", + "src": "78829:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "78823:5:10", + "nodeType": "YulIdentifier", + "src": "78823:5:10" + }, + "nativeSrc": "78823:11:10", + "nodeType": "YulFunctionCall", + "src": "78823:11:10" + }, + "variableNames": [ + { + "name": "c", + "nativeSrc": "78818:1:10", + "nodeType": "YulIdentifier", + "src": "78818:1:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "78858:1:10", + "nodeType": "YulIdentifier", + "src": "78858:1:10" + }, + { + "kind": "number", + "nativeSrc": "78861:4:10", + "nodeType": "YulLiteral", + "src": "78861:4:10", + "type": "", + "value": "0x74" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "78854:3:10", + "nodeType": "YulIdentifier", + "src": "78854:3:10" + }, + "nativeSrc": "78854:12:10", + "nodeType": "YulFunctionCall", + "src": "78854:12:10" + }, + { + "kind": "number", + "nativeSrc": "78868:66:10", + "nodeType": "YulLiteral", + "src": "78868:66:10", + "type": "", + "value": "0x3d6000803e603e573d6000fd5b3d6000f35b6020600f3d393d51543d52593df3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "78847:6:10", + "nodeType": "YulIdentifier", + "src": "78847:6:10" + }, + "nativeSrc": "78847:88:10", + "nodeType": "YulFunctionCall", + "src": "78847:88:10" + }, + "nativeSrc": "78847:88:10", + "nodeType": "YulExpressionStatement", + "src": "78847:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "78959:1:10", + "nodeType": "YulIdentifier", + "src": "78959:1:10" + }, + { + "kind": "number", + "nativeSrc": "78962:4:10", + "nodeType": "YulLiteral", + "src": "78962:4:10", + "type": "", + "value": "0x54" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "78955:3:10", + "nodeType": "YulIdentifier", + "src": "78955:3:10" + }, + "nativeSrc": "78955:12:10", + "nodeType": "YulFunctionCall", + "src": "78955:12:10" + }, + { + "kind": "number", + "nativeSrc": "78969:66:10", + "nodeType": "YulLiteral", + "src": "78969:66:10", + "type": "", + "value": "0xa13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af4" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "78948:6:10", + "nodeType": "YulIdentifier", + "src": "78948:6:10" + }, + "nativeSrc": "78948:88:10", + "nodeType": "YulFunctionCall", + "src": "78948:88:10" + }, + "nativeSrc": "78948:88:10", + "nodeType": "YulExpressionStatement", + "src": "78948:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "79060:1:10", + "nodeType": "YulIdentifier", + "src": "79060:1:10" + }, + { + "kind": "number", + "nativeSrc": "79063:4:10", + "nodeType": "YulLiteral", + "src": "79063:4:10", + "type": "", + "value": "0x34" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "79056:3:10", + "nodeType": "YulIdentifier", + "src": "79056:3:10" + }, + "nativeSrc": "79056:12:10", + "nodeType": "YulFunctionCall", + "src": "79056:12:10" + }, + { + "kind": "number", + "nativeSrc": "79070:48:10", + "nodeType": "YulLiteral", + "src": "79070:48:10", + "type": "", + "value": "0x600f5155f3365814604357363d3d373d3d363d7f360894" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "79049:6:10", + "nodeType": "YulIdentifier", + "src": "79049:6:10" + }, + "nativeSrc": "79049:70:10", + "nodeType": "YulFunctionCall", + "src": "79049:70:10" + }, + "nativeSrc": "79049:70:10", + "nodeType": "YulExpressionStatement", + "src": "79049:70:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "79143:1:10", + "nodeType": "YulIdentifier", + "src": "79143:1:10" + }, + { + "kind": "number", + "nativeSrc": "79146:4:10", + "nodeType": "YulLiteral", + "src": "79146:4:10", + "type": "", + "value": "0x1d" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "79139:3:10", + "nodeType": "YulIdentifier", + "src": "79139:3:10" + }, + "nativeSrc": "79139:12:10", + "nodeType": "YulFunctionCall", + "src": "79139:12:10" + }, + { + "name": "implementation", + "nativeSrc": "79153:14:10", + "nodeType": "YulIdentifier", + "src": "79153:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "79132:6:10", + "nodeType": "YulIdentifier", + "src": "79132:6:10" + }, + "nativeSrc": "79132:36:10", + "nodeType": "YulFunctionCall", + "src": "79132:36:10" + }, + "nativeSrc": "79132:36:10", + "nodeType": "YulExpressionStatement", + "src": "79132:36:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "79192:1:10", + "nodeType": "YulIdentifier", + "src": "79192:1:10" + }, + { + "kind": "number", + "nativeSrc": "79195:4:10", + "nodeType": "YulLiteral", + "src": "79195:4:10", + "type": "", + "value": "0x09" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "79188:3:10", + "nodeType": "YulIdentifier", + "src": "79188:3:10" + }, + "nativeSrc": "79188:12:10", + "nodeType": "YulFunctionCall", + "src": "79188:12:10" + }, + { + "kind": "number", + "nativeSrc": "79202:20:10", + "nodeType": "YulLiteral", + "src": "79202:20:10", + "type": "", + "value": "0x60523d8160223d3973" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "79181:6:10", + "nodeType": "YulIdentifier", + "src": "79181:6:10" + }, + "nativeSrc": "79181:42:10", + "nodeType": "YulFunctionCall", + "src": "79181:42:10" + }, + "nativeSrc": "79181:42:10", + "nodeType": "YulExpressionStatement", + "src": "79181:42:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "79247:1:10", + "nodeType": "YulIdentifier", + "src": "79247:1:10" + }, + { + "kind": "number", + "nativeSrc": "79250:4:10", + "nodeType": "YulLiteral", + "src": "79250:4:10", + "type": "", + "value": "0x94" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "79243:3:10", + "nodeType": "YulIdentifier", + "src": "79243:3:10" + }, + "nativeSrc": "79243:12:10", + "nodeType": "YulFunctionCall", + "src": "79243:12:10" + }, + { + "kind": "number", + "nativeSrc": "79257:1:10", + "nodeType": "YulLiteral", + "src": "79257:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "79236:6:10", + "nodeType": "YulIdentifier", + "src": "79236:6:10" + }, + "nativeSrc": "79236:23:10", + "nodeType": "YulFunctionCall", + "src": "79236:23:10" + }, + "nativeSrc": "79236:23:10", + "nodeType": "YulExpressionStatement", + "src": "79236:23:10" + }, + { + "expression": { + "arguments": [ + { + "name": "c", + "nativeSrc": "79279:1:10", + "nodeType": "YulIdentifier", + "src": "79279:1:10" + }, + { + "kind": "number", + "nativeSrc": "79282:4:10", + "nodeType": "YulLiteral", + "src": "79282:4:10", + "type": "", + "value": "0x74" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "79272:6:10", + "nodeType": "YulIdentifier", + "src": "79272:6:10" + }, + "nativeSrc": "79272:15:10", + "nodeType": "YulFunctionCall", + "src": "79272:15:10" + }, + "nativeSrc": "79272:15:10", + "nodeType": "YulExpressionStatement", + "src": "79272:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "79328:4:10", + "nodeType": "YulLiteral", + "src": "79328:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "c", + "nativeSrc": "79338:1:10", + "nodeType": "YulIdentifier", + "src": "79338:1:10" + }, + { + "kind": "number", + "nativeSrc": "79341:4:10", + "nodeType": "YulLiteral", + "src": "79341:4:10", + "type": "", + "value": "0xa0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "79334:3:10", + "nodeType": "YulIdentifier", + "src": "79334:3:10" + }, + "nativeSrc": "79334:12:10", + "nodeType": "YulFunctionCall", + "src": "79334:12:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "79321:6:10", + "nodeType": "YulIdentifier", + "src": "79321:6:10" + }, + "nativeSrc": "79321:26:10", + "nodeType": "YulFunctionCall", + "src": "79321:26:10" + }, + "nativeSrc": "79321:26:10", + "nodeType": "YulExpressionStatement", + "src": "79321:26:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3992, + "isOffset": false, + "isSlot": false, + "src": "78818:1:10", + "valueSize": 1 + }, + { + "declaration": 3992, + "isOffset": false, + "isSlot": false, + "src": "78858:1:10", + "valueSize": 1 + }, + { + "declaration": 3992, + "isOffset": false, + "isSlot": false, + "src": "78959:1:10", + "valueSize": 1 + }, + { + "declaration": 3992, + "isOffset": false, + "isSlot": false, + "src": "79060:1:10", + "valueSize": 1 + }, + { + "declaration": 3992, + "isOffset": false, + "isSlot": false, + "src": "79143:1:10", + "valueSize": 1 + }, + { + "declaration": 3992, + "isOffset": false, + "isSlot": false, + "src": "79192:1:10", + "valueSize": 1 + }, + { + "declaration": 3992, + "isOffset": false, + "isSlot": false, + "src": "79247:1:10", + "valueSize": 1 + }, + { + "declaration": 3992, + "isOffset": false, + "isSlot": false, + "src": "79279:1:10", + "valueSize": 1 + }, + { + "declaration": 3992, + "isOffset": false, + "isSlot": false, + "src": "79338:1:10", + "valueSize": 1 + }, + { + "declaration": 3989, + "isOffset": false, + "isSlot": false, + "src": "79153:14:10", + "valueSize": 1 + } + ], + "id": 3994, + "nodeType": "InlineAssembly", + "src": "78795:582:10" + } + ] + }, + "documentation": { + "id": 3987, + "nodeType": "StructuredDocumentation", + "src": "78565:83:10", + "text": "@dev Returns the initialization code of the ERC1967I proxy of `implementation`." + }, + "id": 3996, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeERC1967I", + "nameLocation": "78662:16:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3990, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3989, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "78687:14:10", + "nodeType": "VariableDeclaration", + "scope": 3996, + "src": "78679:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3988, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "78679:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "78678:24:10" + }, + "returnParameters": { + "id": 3993, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3992, + "mutability": "mutable", + "name": "c", + "nameLocation": "78739:1:10", + "nodeType": "VariableDeclaration", + "scope": 3996, + "src": "78726:14:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3991, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "78726:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "78725:16:10" + }, + "scope": 5104, + "src": "78653:730:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4005, + "nodeType": "Block", + "src": "79573:662:10", + "statements": [ + { + "AST": { + "nativeSrc": "79635:594:10", + "nodeType": "YulBlock", + "src": "79635:594:10", + "statements": [ + { + "nativeSrc": "79649:20:10", + "nodeType": "YulVariableDeclaration", + "src": "79649:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "79664:4:10", + "nodeType": "YulLiteral", + "src": "79664:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "79658:5:10", + "nodeType": "YulIdentifier", + "src": "79658:5:10" + }, + "nativeSrc": "79658:11:10", + "nodeType": "YulFunctionCall", + "src": "79658:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "79653:1:10", + "nodeType": "YulTypedName", + "src": "79653:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "79723:4:10", + "nodeType": "YulLiteral", + "src": "79723:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "79729:66:10", + "nodeType": "YulLiteral", + "src": "79729:66:10", + "type": "", + "value": "0x3d6000803e603e573d6000fd5b3d6000f35b6020600f3d393d51543d52593df3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "79716:6:10", + "nodeType": "YulIdentifier", + "src": "79716:6:10" + }, + "nativeSrc": "79716:80:10", + "nodeType": "YulFunctionCall", + "src": "79716:80:10" + }, + "nativeSrc": "79716:80:10", + "nodeType": "YulExpressionStatement", + "src": "79716:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "79816:4:10", + "nodeType": "YulLiteral", + "src": "79816:4:10", + "type": "", + "value": "0x40" + }, + { + "kind": "number", + "nativeSrc": "79822:66:10", + "nodeType": "YulLiteral", + "src": "79822:66:10", + "type": "", + "value": "0xa13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af4" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "79809:6:10", + "nodeType": "YulIdentifier", + "src": "79809:6:10" + }, + "nativeSrc": "79809:80:10", + "nodeType": "YulFunctionCall", + "src": "79809:80:10" + }, + "nativeSrc": "79809:80:10", + "nodeType": "YulExpressionStatement", + "src": "79809:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "79909:4:10", + "nodeType": "YulLiteral", + "src": "79909:4:10", + "type": "", + "value": "0x20" + }, + { + "kind": "number", + "nativeSrc": "79915:48:10", + "nodeType": "YulLiteral", + "src": "79915:48:10", + "type": "", + "value": "0x600f5155f3365814604357363d3d373d3d363d7f360894" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "79902:6:10", + "nodeType": "YulIdentifier", + "src": "79902:6:10" + }, + "nativeSrc": "79902:62:10", + "nodeType": "YulFunctionCall", + "src": "79902:62:10" + }, + "nativeSrc": "79902:62:10", + "nodeType": "YulExpressionStatement", + "src": "79902:62:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "79984:4:10", + "nodeType": "YulLiteral", + "src": "79984:4:10", + "type": "", + "value": "0x09" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "79997:3:10", + "nodeType": "YulLiteral", + "src": "79997:3:10", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "80002:20:10", + "nodeType": "YulLiteral", + "src": "80002:20:10", + "type": "", + "value": "0x60523d8160223d3973" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "79993:3:10", + "nodeType": "YulIdentifier", + "src": "79993:3:10" + }, + "nativeSrc": "79993:30:10", + "nodeType": "YulFunctionCall", + "src": "79993:30:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "80029:2:10", + "nodeType": "YulLiteral", + "src": "80029:2:10", + "type": "", + "value": "96" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "80037:2:10", + "nodeType": "YulLiteral", + "src": "80037:2:10", + "type": "", + "value": "96" + }, + { + "name": "implementation", + "nativeSrc": "80041:14:10", + "nodeType": "YulIdentifier", + "src": "80041:14:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "80033:3:10", + "nodeType": "YulIdentifier", + "src": "80033:3:10" + }, + "nativeSrc": "80033:23:10", + "nodeType": "YulFunctionCall", + "src": "80033:23:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "80025:3:10", + "nodeType": "YulIdentifier", + "src": "80025:3:10" + }, + "nativeSrc": "80025:32:10", + "nodeType": "YulFunctionCall", + "src": "80025:32:10" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "79990:2:10", + "nodeType": "YulIdentifier", + "src": "79990:2:10" + }, + "nativeSrc": "79990:68:10", + "nodeType": "YulFunctionCall", + "src": "79990:68:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "79977:6:10", + "nodeType": "YulIdentifier", + "src": "79977:6:10" + }, + "nativeSrc": "79977:82:10", + "nodeType": "YulFunctionCall", + "src": "79977:82:10" + }, + "nativeSrc": "79977:82:10", + "nodeType": "YulExpressionStatement", + "src": "79977:82:10" + }, + { + "nativeSrc": "80072:29:10", + "nodeType": "YulAssignment", + "src": "80072:29:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "80090:4:10", + "nodeType": "YulLiteral", + "src": "80090:4:10", + "type": "", + "value": "0x0c" + }, + { + "kind": "number", + "nativeSrc": "80096:4:10", + "nodeType": "YulLiteral", + "src": "80096:4:10", + "type": "", + "value": "0x74" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "80080:9:10", + "nodeType": "YulIdentifier", + "src": "80080:9:10" + }, + "nativeSrc": "80080:21:10", + "nodeType": "YulFunctionCall", + "src": "80080:21:10" + }, + "variableNames": [ + { + "name": "hash", + "nativeSrc": "80072:4:10", + "nodeType": "YulIdentifier", + "src": "80072:4:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "80121:4:10", + "nodeType": "YulLiteral", + "src": "80121:4:10", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "80127:1:10", + "nodeType": "YulIdentifier", + "src": "80127:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "80114:6:10", + "nodeType": "YulIdentifier", + "src": "80114:6:10" + }, + "nativeSrc": "80114:15:10", + "nodeType": "YulFunctionCall", + "src": "80114:15:10" + }, + "nativeSrc": "80114:15:10", + "nodeType": "YulExpressionStatement", + "src": "80114:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "80185:4:10", + "nodeType": "YulLiteral", + "src": "80185:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "80191:1:10", + "nodeType": "YulLiteral", + "src": "80191:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "80178:6:10", + "nodeType": "YulIdentifier", + "src": "80178:6:10" + }, + "nativeSrc": "80178:15:10", + "nodeType": "YulFunctionCall", + "src": "80178:15:10" + }, + "nativeSrc": "80178:15:10", + "nodeType": "YulExpressionStatement", + "src": "80178:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4002, + "isOffset": false, + "isSlot": false, + "src": "80072:4:10", + "valueSize": 1 + }, + { + "declaration": 3999, + "isOffset": false, + "isSlot": false, + "src": "80041:14:10", + "valueSize": 1 + } + ], + "id": 4004, + "nodeType": "InlineAssembly", + "src": "79626:603:10" + } + ] + }, + "documentation": { + "id": 3997, + "nodeType": "StructuredDocumentation", + "src": "79389:88:10", + "text": "@dev Returns the initialization code hash of the ERC1967I proxy of `implementation`." + }, + "id": 4006, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeHashERC1967I", + "nameLocation": "79491:20:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4000, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3999, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "79520:14:10", + "nodeType": "VariableDeclaration", + "scope": 4006, + "src": "79512:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3998, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "79512:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "79511:24:10" + }, + "returnParameters": { + "id": 4003, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4002, + "mutability": "mutable", + "name": "hash", + "nameLocation": "79567:4:10", + "nodeType": "VariableDeclaration", + "scope": 4006, + "src": "79559:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4001, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "79559:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "79558:14:10" + }, + "scope": 5104, + "src": "79482:753:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4032, + "nodeType": "Block", + "src": "80610:139:10", + "statements": [ + { + "assignments": [ + 4019 + ], + "declarations": [ + { + "constant": false, + "id": 4019, + "mutability": "mutable", + "name": "hash", + "nameLocation": "80628:4:10", + "nodeType": "VariableDeclaration", + "scope": 4032, + "src": "80620:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4018, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "80620:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 4023, + "initialValue": { + "arguments": [ + { + "id": 4021, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4009, + "src": "80656:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4020, + "name": "initCodeHashERC1967I", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4006, + 4166 + ], + "referencedDeclaration": 4006, + "src": "80635:20:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_bytes32_$", + "typeString": "function (address) pure returns (bytes32)" + } + }, + "id": 4022, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "80635:36:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "80620:51:10" + }, + { + "expression": { + "id": 4030, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4024, + "name": "predicted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4016, + "src": "80681:9:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 4026, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4019, + "src": "80721:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 4027, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4011, + "src": "80727:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 4028, + "name": "deployer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4013, + "src": "80733:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4025, + "name": "predictDeterministicAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3237, + 3510, + 5081 + ], + "referencedDeclaration": 5081, + "src": "80693:27:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_address_$", + "typeString": "function (bytes32,bytes32,address) pure returns (address)" + } + }, + "id": 4029, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "80693:49:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "80681:61:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4031, + "nodeType": "ExpressionStatement", + "src": "80681:61:10" + } + ] + }, + "documentation": { + "id": 4007, + "nodeType": "StructuredDocumentation", + "src": "80241:191:10", + "text": "@dev Returns the address of the ERC1967I proxy of `implementation`, with `salt` by `deployer`.\n Note: The returned result has dirty upper 96 bits. Please clean if used in assembly." + }, + "id": 4033, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "predictDeterministicAddressERC1967I", + "nameLocation": "80446:35:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4014, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4009, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "80499:14:10", + "nodeType": "VariableDeclaration", + "scope": 4033, + "src": "80491:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4008, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "80491:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4011, + "mutability": "mutable", + "name": "salt", + "nameLocation": "80531:4:10", + "nodeType": "VariableDeclaration", + "scope": 4033, + "src": "80523:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4010, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "80523:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4013, + "mutability": "mutable", + "name": "deployer", + "nameLocation": "80553:8:10", + "nodeType": "VariableDeclaration", + "scope": 4033, + "src": "80545:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4012, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "80545:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "80481:86:10" + }, + "returnParameters": { + "id": 4017, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4016, + "mutability": "mutable", + "name": "predicted", + "nameLocation": "80599:9:10", + "nodeType": "VariableDeclaration", + "scope": 4033, + "src": "80591:17:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4015, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "80591:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "80590:19:10" + }, + "scope": 5104, + "src": "80437:312:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4049, + "nodeType": "Block", + "src": "81212:63:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "30", + "id": 4044, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "81244:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 4045, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4036, + "src": "81247:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4046, + "name": "args", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4038, + "src": "81263:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 4043, + "name": "deployERC1967I", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3906, + 3918, + 4050, + 4064 + ], + "referencedDeclaration": 4064, + "src": "81229:14:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$", + "typeString": "function (uint256,address,bytes memory) returns (address)" + } + }, + "id": 4047, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "81229:39:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 4042, + "id": 4048, + "nodeType": "Return", + "src": "81222:46:10" + } + ] + }, + "documentation": { + "id": 4034, + "nodeType": "StructuredDocumentation", + "src": "81038:75:10", + "text": "@dev Deploys a minimal ERC1967I proxy with `implementation` and `args`." + }, + "id": 4050, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployERC1967I", + "nameLocation": "81127:14:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4039, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4036, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "81150:14:10", + "nodeType": "VariableDeclaration", + "scope": 4050, + "src": "81142:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4035, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "81142:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4038, + "mutability": "mutable", + "name": "args", + "nameLocation": "81179:4:10", + "nodeType": "VariableDeclaration", + "scope": 4050, + "src": "81166:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4037, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "81166:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "81141:43:10" + }, + "returnParameters": { + "id": 4042, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4041, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4050, + "src": "81203:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4040, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "81203:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "81202:9:10" + }, + "scope": 5104, + "src": "81118:157:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4063, + "nodeType": "Block", + "src": "81547:943:10", + "statements": [ + { + "AST": { + "nativeSrc": "81609:875:10", + "nodeType": "YulBlock", + "src": "81609:875:10", + "statements": [ + { + "nativeSrc": "81623:20:10", + "nodeType": "YulVariableDeclaration", + "src": "81623:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "81638:4:10", + "nodeType": "YulLiteral", + "src": "81638:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "81632:5:10", + "nodeType": "YulIdentifier", + "src": "81632:5:10" + }, + "nativeSrc": "81632:11:10", + "nodeType": "YulFunctionCall", + "src": "81632:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "81627:1:10", + "nodeType": "YulTypedName", + "src": "81627:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "81656:20:10", + "nodeType": "YulVariableDeclaration", + "src": "81656:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "81671:4:10", + "nodeType": "YulIdentifier", + "src": "81671:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "81665:5:10", + "nodeType": "YulIdentifier", + "src": "81665:5:10" + }, + "nativeSrc": "81665:11:10", + "nodeType": "YulFunctionCall", + "src": "81665:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "81660:1:10", + "nodeType": "YulTypedName", + "src": "81660:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "81704:3:10", + "nodeType": "YulIdentifier", + "src": "81704:3:10" + }, + "nativeSrc": "81704:5:10", + "nodeType": "YulFunctionCall", + "src": "81704:5:10" + }, + { + "kind": "number", + "nativeSrc": "81711:1:10", + "nodeType": "YulLiteral", + "src": "81711:1:10", + "type": "", + "value": "4" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "81718:4:10", + "nodeType": "YulIdentifier", + "src": "81718:4:10" + }, + { + "kind": "number", + "nativeSrc": "81724:4:10", + "nodeType": "YulLiteral", + "src": "81724:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "81714:3:10", + "nodeType": "YulIdentifier", + "src": "81714:3:10" + }, + "nativeSrc": "81714:15:10", + "nodeType": "YulFunctionCall", + "src": "81714:15:10" + }, + { + "name": "n", + "nativeSrc": "81731:1:10", + "nodeType": "YulIdentifier", + "src": "81731:1:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "81738:1:10", + "nodeType": "YulIdentifier", + "src": "81738:1:10" + }, + { + "kind": "number", + "nativeSrc": "81741:4:10", + "nodeType": "YulLiteral", + "src": "81741:4:10", + "type": "", + "value": "0x8b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "81734:3:10", + "nodeType": "YulIdentifier", + "src": "81734:3:10" + }, + "nativeSrc": "81734:12:10", + "nodeType": "YulFunctionCall", + "src": "81734:12:10" + }, + { + "name": "n", + "nativeSrc": "81748:1:10", + "nodeType": "YulIdentifier", + "src": "81748:1:10" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "81693:10:10", + "nodeType": "YulIdentifier", + "src": "81693:10:10" + }, + "nativeSrc": "81693:57:10", + "nodeType": "YulFunctionCall", + "src": "81693:57:10" + } + ], + "functionName": { + "name": "pop", + "nativeSrc": "81689:3:10", + "nodeType": "YulIdentifier", + "src": "81689:3:10" + }, + "nativeSrc": "81689:62:10", + "nodeType": "YulFunctionCall", + "src": "81689:62:10" + }, + "nativeSrc": "81689:62:10", + "nodeType": "YulExpressionStatement", + "src": "81689:62:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "81776:1:10", + "nodeType": "YulIdentifier", + "src": "81776:1:10" + }, + { + "kind": "number", + "nativeSrc": "81779:4:10", + "nodeType": "YulLiteral", + "src": "81779:4:10", + "type": "", + "value": "0x6b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "81772:3:10", + "nodeType": "YulIdentifier", + "src": "81772:3:10" + }, + "nativeSrc": "81772:12:10", + "nodeType": "YulFunctionCall", + "src": "81772:12:10" + }, + { + "kind": "number", + "nativeSrc": "81786:66:10", + "nodeType": "YulLiteral", + "src": "81786:66:10", + "type": "", + "value": "0x3d6000803e603e573d6000fd5b3d6000f35b6020600f3d393d51543d52593df3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "81765:6:10", + "nodeType": "YulIdentifier", + "src": "81765:6:10" + }, + "nativeSrc": "81765:88:10", + "nodeType": "YulFunctionCall", + "src": "81765:88:10" + }, + "nativeSrc": "81765:88:10", + "nodeType": "YulExpressionStatement", + "src": "81765:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "81877:1:10", + "nodeType": "YulIdentifier", + "src": "81877:1:10" + }, + { + "kind": "number", + "nativeSrc": "81880:4:10", + "nodeType": "YulLiteral", + "src": "81880:4:10", + "type": "", + "value": "0x4b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "81873:3:10", + "nodeType": "YulIdentifier", + "src": "81873:3:10" + }, + "nativeSrc": "81873:12:10", + "nodeType": "YulFunctionCall", + "src": "81873:12:10" + }, + { + "kind": "number", + "nativeSrc": "81887:66:10", + "nodeType": "YulLiteral", + "src": "81887:66:10", + "type": "", + "value": "0xa13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af4" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "81866:6:10", + "nodeType": "YulIdentifier", + "src": "81866:6:10" + }, + "nativeSrc": "81866:88:10", + "nodeType": "YulFunctionCall", + "src": "81866:88:10" + }, + "nativeSrc": "81866:88:10", + "nodeType": "YulExpressionStatement", + "src": "81866:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "81978:1:10", + "nodeType": "YulIdentifier", + "src": "81978:1:10" + }, + { + "kind": "number", + "nativeSrc": "81981:4:10", + "nodeType": "YulLiteral", + "src": "81981:4:10", + "type": "", + "value": "0x2b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "81974:3:10", + "nodeType": "YulIdentifier", + "src": "81974:3:10" + }, + "nativeSrc": "81974:12:10", + "nodeType": "YulFunctionCall", + "src": "81974:12:10" + }, + { + "kind": "number", + "nativeSrc": "81988:48:10", + "nodeType": "YulLiteral", + "src": "81988:48:10", + "type": "", + "value": "0x600f5155f3365814604357363d3d373d3d363d7f360894" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "81967:6:10", + "nodeType": "YulIdentifier", + "src": "81967:6:10" + }, + "nativeSrc": "81967:70:10", + "nodeType": "YulFunctionCall", + "src": "81967:70:10" + }, + "nativeSrc": "81967:70:10", + "nodeType": "YulExpressionStatement", + "src": "81967:70:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "82061:1:10", + "nodeType": "YulIdentifier", + "src": "82061:1:10" + }, + { + "kind": "number", + "nativeSrc": "82064:4:10", + "nodeType": "YulLiteral", + "src": "82064:4:10", + "type": "", + "value": "0x14" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "82057:3:10", + "nodeType": "YulIdentifier", + "src": "82057:3:10" + }, + "nativeSrc": "82057:12:10", + "nodeType": "YulFunctionCall", + "src": "82057:12:10" + }, + { + "name": "implementation", + "nativeSrc": "82071:14:10", + "nodeType": "YulIdentifier", + "src": "82071:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "82050:6:10", + "nodeType": "YulIdentifier", + "src": "82050:6:10" + }, + "nativeSrc": "82050:36:10", + "nodeType": "YulFunctionCall", + "src": "82050:36:10" + }, + "nativeSrc": "82050:36:10", + "nodeType": "YulExpressionStatement", + "src": "82050:36:10" + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "82106:1:10", + "nodeType": "YulIdentifier", + "src": "82106:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "82113:24:10", + "nodeType": "YulLiteral", + "src": "82113:24:10", + "type": "", + "value": "0xfe6100523d8160233d3973" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "82143:2:10", + "nodeType": "YulLiteral", + "src": "82143:2:10", + "type": "", + "value": "56" + }, + { + "name": "n", + "nativeSrc": "82147:1:10", + "nodeType": "YulIdentifier", + "src": "82147:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "82139:3:10", + "nodeType": "YulIdentifier", + "src": "82139:3:10" + }, + "nativeSrc": "82139:10:10", + "nodeType": "YulFunctionCall", + "src": "82139:10:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "82109:3:10", + "nodeType": "YulIdentifier", + "src": "82109:3:10" + }, + "nativeSrc": "82109:41:10", + "nodeType": "YulFunctionCall", + "src": "82109:41:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "82099:6:10", + "nodeType": "YulIdentifier", + "src": "82099:6:10" + }, + "nativeSrc": "82099:52:10", + "nodeType": "YulFunctionCall", + "src": "82099:52:10" + }, + "nativeSrc": "82099:52:10", + "nodeType": "YulExpressionStatement", + "src": "82099:52:10" + }, + { + "nativeSrc": "82252:73:10", + "nodeType": "YulAssignment", + "src": "82252:73:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "82271:5:10", + "nodeType": "YulIdentifier", + "src": "82271:5:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "82282:1:10", + "nodeType": "YulIdentifier", + "src": "82282:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "82289:4:10", + "nodeType": "YulLiteral", + "src": "82289:4:10", + "type": "", + "value": "0x15" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "82298:1:10", + "nodeType": "YulIdentifier", + "src": "82298:1:10" + }, + { + "kind": "number", + "nativeSrc": "82301:6:10", + "nodeType": "YulLiteral", + "src": "82301:6:10", + "type": "", + "value": "0xffae" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "82295:2:10", + "nodeType": "YulIdentifier", + "src": "82295:2:10" + }, + "nativeSrc": "82295:13:10", + "nodeType": "YulFunctionCall", + "src": "82295:13:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "82285:3:10", + "nodeType": "YulIdentifier", + "src": "82285:3:10" + }, + "nativeSrc": "82285:24:10", + "nodeType": "YulFunctionCall", + "src": "82285:24:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "82278:3:10", + "nodeType": "YulIdentifier", + "src": "82278:3:10" + }, + "nativeSrc": "82278:32:10", + "nodeType": "YulFunctionCall", + "src": "82278:32:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "82316:4:10", + "nodeType": "YulLiteral", + "src": "82316:4:10", + "type": "", + "value": "0x75" + }, + { + "name": "n", + "nativeSrc": "82322:1:10", + "nodeType": "YulIdentifier", + "src": "82322:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "82312:3:10", + "nodeType": "YulIdentifier", + "src": "82312:3:10" + }, + "nativeSrc": "82312:12:10", + "nodeType": "YulFunctionCall", + "src": "82312:12:10" + } + ], + "functionName": { + "name": "create", + "nativeSrc": "82264:6:10", + "nodeType": "YulIdentifier", + "src": "82264:6:10" + }, + "nativeSrc": "82264:61:10", + "nodeType": "YulFunctionCall", + "src": "82264:61:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "82252:8:10", + "nodeType": "YulIdentifier", + "src": "82252:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "82358:116:10", + "nodeType": "YulBlock", + "src": "82358:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "82383:4:10", + "nodeType": "YulLiteral", + "src": "82383:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "82389:10:10", + "nodeType": "YulLiteral", + "src": "82389:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "82376:6:10", + "nodeType": "YulIdentifier", + "src": "82376:6:10" + }, + "nativeSrc": "82376:24:10", + "nodeType": "YulFunctionCall", + "src": "82376:24:10" + }, + "nativeSrc": "82376:24:10", + "nodeType": "YulExpressionStatement", + "src": "82376:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "82449:4:10", + "nodeType": "YulLiteral", + "src": "82449:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "82455:4:10", + "nodeType": "YulLiteral", + "src": "82455:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "82442:6:10", + "nodeType": "YulIdentifier", + "src": "82442:6:10" + }, + "nativeSrc": "82442:18:10", + "nodeType": "YulFunctionCall", + "src": "82442:18:10" + }, + "nativeSrc": "82442:18:10", + "nodeType": "YulExpressionStatement", + "src": "82442:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "82348:8:10", + "nodeType": "YulIdentifier", + "src": "82348:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "82341:6:10", + "nodeType": "YulIdentifier", + "src": "82341:6:10" + }, + "nativeSrc": "82341:16:10", + "nodeType": "YulFunctionCall", + "src": "82341:16:10" + }, + "nativeSrc": "82338:136:10", + "nodeType": "YulIf", + "src": "82338:136:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4057, + "isOffset": false, + "isSlot": false, + "src": "81671:4:10", + "valueSize": 1 + }, + { + "declaration": 4057, + "isOffset": false, + "isSlot": false, + "src": "81718:4:10", + "valueSize": 1 + }, + { + "declaration": 4055, + "isOffset": false, + "isSlot": false, + "src": "82071:14:10", + "valueSize": 1 + }, + { + "declaration": 4060, + "isOffset": false, + "isSlot": false, + "src": "82252:8:10", + "valueSize": 1 + }, + { + "declaration": 4060, + "isOffset": false, + "isSlot": false, + "src": "82348:8:10", + "valueSize": 1 + }, + { + "declaration": 4053, + "isOffset": false, + "isSlot": false, + "src": "82271:5:10", + "valueSize": 1 + } + ], + "id": 4062, + "nodeType": "InlineAssembly", + "src": "81600:884:10" + } + ] + }, + "documentation": { + "id": 4051, + "nodeType": "StructuredDocumentation", + "src": "81281:123:10", + "text": "@dev Deploys a minimal ERC1967I proxy with `implementation` and `args`.\n Deposits `value` ETH during deployment." + }, + "id": 4064, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployERC1967I", + "nameLocation": "81418:14:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4058, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4053, + "mutability": "mutable", + "name": "value", + "nameLocation": "81441:5:10", + "nodeType": "VariableDeclaration", + "scope": 4064, + "src": "81433:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4052, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "81433:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4055, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "81456:14:10", + "nodeType": "VariableDeclaration", + "scope": 4064, + "src": "81448:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4054, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "81448:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4057, + "mutability": "mutable", + "name": "args", + "nameLocation": "81485:4:10", + "nodeType": "VariableDeclaration", + "scope": 4064, + "src": "81472:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4056, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "81472:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "81432:58:10" + }, + "returnParameters": { + "id": 4061, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4060, + "mutability": "mutable", + "name": "instance", + "nameLocation": "81533:8:10", + "nodeType": "VariableDeclaration", + "scope": 4064, + "src": "81525:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4059, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "81525:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "81524:18:10" + }, + "scope": 5104, + "src": "81409:1081:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4085, + "nodeType": "Block", + "src": "82741:86:10", + "statements": [ + { + "expression": { + "id": 4083, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4076, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4074, + "src": "82751:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 4078, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "82790:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 4079, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4067, + "src": "82793:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4080, + "name": "args", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4069, + "src": "82809:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 4081, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4071, + "src": "82815:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4077, + "name": "deployDeterministicERC1967I", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3937, + 3951, + 4086, + 4102 + ], + "referencedDeclaration": 4102, + "src": "82762:27:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (uint256,address,bytes memory,bytes32) returns (address)" + } + }, + "id": 4082, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "82762:58:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "82751:69:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4084, + "nodeType": "ExpressionStatement", + "src": "82751:69:10" + } + ] + }, + "documentation": { + "id": 4065, + "nodeType": "StructuredDocumentation", + "src": "82496:90:10", + "text": "@dev Deploys a deterministic ERC1967I proxy with `implementation`, `args`, and `salt`." + }, + "id": 4086, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployDeterministicERC1967I", + "nameLocation": "82600:27:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4072, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4067, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "82636:14:10", + "nodeType": "VariableDeclaration", + "scope": 4086, + "src": "82628:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4066, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "82628:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4069, + "mutability": "mutable", + "name": "args", + "nameLocation": "82665:4:10", + "nodeType": "VariableDeclaration", + "scope": 4086, + "src": "82652:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4068, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "82652:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4071, + "mutability": "mutable", + "name": "salt", + "nameLocation": "82679:4:10", + "nodeType": "VariableDeclaration", + "scope": 4086, + "src": "82671:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4070, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "82671:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "82627:57:10" + }, + "returnParameters": { + "id": 4075, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4074, + "mutability": "mutable", + "name": "instance", + "nameLocation": "82727:8:10", + "nodeType": "VariableDeclaration", + "scope": 4086, + "src": "82719:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4073, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "82719:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "82718:18:10" + }, + "scope": 5104, + "src": "82591:236:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4101, + "nodeType": "Block", + "src": "83159:950:10", + "statements": [ + { + "AST": { + "nativeSrc": "83221:882:10", + "nodeType": "YulBlock", + "src": "83221:882:10", + "statements": [ + { + "nativeSrc": "83235:20:10", + "nodeType": "YulVariableDeclaration", + "src": "83235:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "83250:4:10", + "nodeType": "YulLiteral", + "src": "83250:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "83244:5:10", + "nodeType": "YulIdentifier", + "src": "83244:5:10" + }, + "nativeSrc": "83244:11:10", + "nodeType": "YulFunctionCall", + "src": "83244:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "83239:1:10", + "nodeType": "YulTypedName", + "src": "83239:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "83268:20:10", + "nodeType": "YulVariableDeclaration", + "src": "83268:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "83283:4:10", + "nodeType": "YulIdentifier", + "src": "83283:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "83277:5:10", + "nodeType": "YulIdentifier", + "src": "83277:5:10" + }, + "nativeSrc": "83277:11:10", + "nodeType": "YulFunctionCall", + "src": "83277:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "83272:1:10", + "nodeType": "YulTypedName", + "src": "83272:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "83316:3:10", + "nodeType": "YulIdentifier", + "src": "83316:3:10" + }, + "nativeSrc": "83316:5:10", + "nodeType": "YulFunctionCall", + "src": "83316:5:10" + }, + { + "kind": "number", + "nativeSrc": "83323:1:10", + "nodeType": "YulLiteral", + "src": "83323:1:10", + "type": "", + "value": "4" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "83330:4:10", + "nodeType": "YulIdentifier", + "src": "83330:4:10" + }, + { + "kind": "number", + "nativeSrc": "83336:4:10", + "nodeType": "YulLiteral", + "src": "83336:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "83326:3:10", + "nodeType": "YulIdentifier", + "src": "83326:3:10" + }, + "nativeSrc": "83326:15:10", + "nodeType": "YulFunctionCall", + "src": "83326:15:10" + }, + { + "name": "n", + "nativeSrc": "83343:1:10", + "nodeType": "YulIdentifier", + "src": "83343:1:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "83350:1:10", + "nodeType": "YulIdentifier", + "src": "83350:1:10" + }, + { + "kind": "number", + "nativeSrc": "83353:4:10", + "nodeType": "YulLiteral", + "src": "83353:4:10", + "type": "", + "value": "0x8b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "83346:3:10", + "nodeType": "YulIdentifier", + "src": "83346:3:10" + }, + "nativeSrc": "83346:12:10", + "nodeType": "YulFunctionCall", + "src": "83346:12:10" + }, + { + "name": "n", + "nativeSrc": "83360:1:10", + "nodeType": "YulIdentifier", + "src": "83360:1:10" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "83305:10:10", + "nodeType": "YulIdentifier", + "src": "83305:10:10" + }, + "nativeSrc": "83305:57:10", + "nodeType": "YulFunctionCall", + "src": "83305:57:10" + } + ], + "functionName": { + "name": "pop", + "nativeSrc": "83301:3:10", + "nodeType": "YulIdentifier", + "src": "83301:3:10" + }, + "nativeSrc": "83301:62:10", + "nodeType": "YulFunctionCall", + "src": "83301:62:10" + }, + "nativeSrc": "83301:62:10", + "nodeType": "YulExpressionStatement", + "src": "83301:62:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "83388:1:10", + "nodeType": "YulIdentifier", + "src": "83388:1:10" + }, + { + "kind": "number", + "nativeSrc": "83391:4:10", + "nodeType": "YulLiteral", + "src": "83391:4:10", + "type": "", + "value": "0x6b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "83384:3:10", + "nodeType": "YulIdentifier", + "src": "83384:3:10" + }, + "nativeSrc": "83384:12:10", + "nodeType": "YulFunctionCall", + "src": "83384:12:10" + }, + { + "kind": "number", + "nativeSrc": "83398:66:10", + "nodeType": "YulLiteral", + "src": "83398:66:10", + "type": "", + "value": "0x3d6000803e603e573d6000fd5b3d6000f35b6020600f3d393d51543d52593df3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "83377:6:10", + "nodeType": "YulIdentifier", + "src": "83377:6:10" + }, + "nativeSrc": "83377:88:10", + "nodeType": "YulFunctionCall", + "src": "83377:88:10" + }, + "nativeSrc": "83377:88:10", + "nodeType": "YulExpressionStatement", + "src": "83377:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "83489:1:10", + "nodeType": "YulIdentifier", + "src": "83489:1:10" + }, + { + "kind": "number", + "nativeSrc": "83492:4:10", + "nodeType": "YulLiteral", + "src": "83492:4:10", + "type": "", + "value": "0x4b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "83485:3:10", + "nodeType": "YulIdentifier", + "src": "83485:3:10" + }, + "nativeSrc": "83485:12:10", + "nodeType": "YulFunctionCall", + "src": "83485:12:10" + }, + { + "kind": "number", + "nativeSrc": "83499:66:10", + "nodeType": "YulLiteral", + "src": "83499:66:10", + "type": "", + "value": "0xa13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af4" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "83478:6:10", + "nodeType": "YulIdentifier", + "src": "83478:6:10" + }, + "nativeSrc": "83478:88:10", + "nodeType": "YulFunctionCall", + "src": "83478:88:10" + }, + "nativeSrc": "83478:88:10", + "nodeType": "YulExpressionStatement", + "src": "83478:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "83590:1:10", + "nodeType": "YulIdentifier", + "src": "83590:1:10" + }, + { + "kind": "number", + "nativeSrc": "83593:4:10", + "nodeType": "YulLiteral", + "src": "83593:4:10", + "type": "", + "value": "0x2b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "83586:3:10", + "nodeType": "YulIdentifier", + "src": "83586:3:10" + }, + "nativeSrc": "83586:12:10", + "nodeType": "YulFunctionCall", + "src": "83586:12:10" + }, + { + "kind": "number", + "nativeSrc": "83600:48:10", + "nodeType": "YulLiteral", + "src": "83600:48:10", + "type": "", + "value": "0x600f5155f3365814604357363d3d373d3d363d7f360894" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "83579:6:10", + "nodeType": "YulIdentifier", + "src": "83579:6:10" + }, + "nativeSrc": "83579:70:10", + "nodeType": "YulFunctionCall", + "src": "83579:70:10" + }, + "nativeSrc": "83579:70:10", + "nodeType": "YulExpressionStatement", + "src": "83579:70:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "83673:1:10", + "nodeType": "YulIdentifier", + "src": "83673:1:10" + }, + { + "kind": "number", + "nativeSrc": "83676:4:10", + "nodeType": "YulLiteral", + "src": "83676:4:10", + "type": "", + "value": "0x14" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "83669:3:10", + "nodeType": "YulIdentifier", + "src": "83669:3:10" + }, + "nativeSrc": "83669:12:10", + "nodeType": "YulFunctionCall", + "src": "83669:12:10" + }, + { + "name": "implementation", + "nativeSrc": "83683:14:10", + "nodeType": "YulIdentifier", + "src": "83683:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "83662:6:10", + "nodeType": "YulIdentifier", + "src": "83662:6:10" + }, + "nativeSrc": "83662:36:10", + "nodeType": "YulFunctionCall", + "src": "83662:36:10" + }, + "nativeSrc": "83662:36:10", + "nodeType": "YulExpressionStatement", + "src": "83662:36:10" + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "83718:1:10", + "nodeType": "YulIdentifier", + "src": "83718:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "83725:24:10", + "nodeType": "YulLiteral", + "src": "83725:24:10", + "type": "", + "value": "0xfe6100523d8160233d3973" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "83755:2:10", + "nodeType": "YulLiteral", + "src": "83755:2:10", + "type": "", + "value": "56" + }, + { + "name": "n", + "nativeSrc": "83759:1:10", + "nodeType": "YulIdentifier", + "src": "83759:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "83751:3:10", + "nodeType": "YulIdentifier", + "src": "83751:3:10" + }, + "nativeSrc": "83751:10:10", + "nodeType": "YulFunctionCall", + "src": "83751:10:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "83721:3:10", + "nodeType": "YulIdentifier", + "src": "83721:3:10" + }, + "nativeSrc": "83721:41:10", + "nodeType": "YulFunctionCall", + "src": "83721:41:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "83711:6:10", + "nodeType": "YulIdentifier", + "src": "83711:6:10" + }, + "nativeSrc": "83711:52:10", + "nodeType": "YulFunctionCall", + "src": "83711:52:10" + }, + "nativeSrc": "83711:52:10", + "nodeType": "YulExpressionStatement", + "src": "83711:52:10" + }, + { + "nativeSrc": "83864:80:10", + "nodeType": "YulAssignment", + "src": "83864:80:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "83884:5:10", + "nodeType": "YulIdentifier", + "src": "83884:5:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "83895:1:10", + "nodeType": "YulIdentifier", + "src": "83895:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "83902:4:10", + "nodeType": "YulLiteral", + "src": "83902:4:10", + "type": "", + "value": "0x15" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "83911:1:10", + "nodeType": "YulIdentifier", + "src": "83911:1:10" + }, + { + "kind": "number", + "nativeSrc": "83914:6:10", + "nodeType": "YulLiteral", + "src": "83914:6:10", + "type": "", + "value": "0xffae" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "83908:2:10", + "nodeType": "YulIdentifier", + "src": "83908:2:10" + }, + "nativeSrc": "83908:13:10", + "nodeType": "YulFunctionCall", + "src": "83908:13:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "83898:3:10", + "nodeType": "YulIdentifier", + "src": "83898:3:10" + }, + "nativeSrc": "83898:24:10", + "nodeType": "YulFunctionCall", + "src": "83898:24:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "83891:3:10", + "nodeType": "YulIdentifier", + "src": "83891:3:10" + }, + "nativeSrc": "83891:32:10", + "nodeType": "YulFunctionCall", + "src": "83891:32:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "83929:4:10", + "nodeType": "YulLiteral", + "src": "83929:4:10", + "type": "", + "value": "0x75" + }, + { + "name": "n", + "nativeSrc": "83935:1:10", + "nodeType": "YulIdentifier", + "src": "83935:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "83925:3:10", + "nodeType": "YulIdentifier", + "src": "83925:3:10" + }, + "nativeSrc": "83925:12:10", + "nodeType": "YulFunctionCall", + "src": "83925:12:10" + }, + { + "name": "salt", + "nativeSrc": "83939:4:10", + "nodeType": "YulIdentifier", + "src": "83939:4:10" + } + ], + "functionName": { + "name": "create2", + "nativeSrc": "83876:7:10", + "nodeType": "YulIdentifier", + "src": "83876:7:10" + }, + "nativeSrc": "83876:68:10", + "nodeType": "YulFunctionCall", + "src": "83876:68:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "83864:8:10", + "nodeType": "YulIdentifier", + "src": "83864:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "83977:116:10", + "nodeType": "YulBlock", + "src": "83977:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "84002:4:10", + "nodeType": "YulLiteral", + "src": "84002:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "84008:10:10", + "nodeType": "YulLiteral", + "src": "84008:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "83995:6:10", + "nodeType": "YulIdentifier", + "src": "83995:6:10" + }, + "nativeSrc": "83995:24:10", + "nodeType": "YulFunctionCall", + "src": "83995:24:10" + }, + "nativeSrc": "83995:24:10", + "nodeType": "YulExpressionStatement", + "src": "83995:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "84068:4:10", + "nodeType": "YulLiteral", + "src": "84068:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "84074:4:10", + "nodeType": "YulLiteral", + "src": "84074:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "84061:6:10", + "nodeType": "YulIdentifier", + "src": "84061:6:10" + }, + "nativeSrc": "84061:18:10", + "nodeType": "YulFunctionCall", + "src": "84061:18:10" + }, + "nativeSrc": "84061:18:10", + "nodeType": "YulExpressionStatement", + "src": "84061:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "83967:8:10", + "nodeType": "YulIdentifier", + "src": "83967:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "83960:6:10", + "nodeType": "YulIdentifier", + "src": "83960:6:10" + }, + "nativeSrc": "83960:16:10", + "nodeType": "YulFunctionCall", + "src": "83960:16:10" + }, + "nativeSrc": "83957:136:10", + "nodeType": "YulIf", + "src": "83957:136:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4093, + "isOffset": false, + "isSlot": false, + "src": "83283:4:10", + "valueSize": 1 + }, + { + "declaration": 4093, + "isOffset": false, + "isSlot": false, + "src": "83330:4:10", + "valueSize": 1 + }, + { + "declaration": 4091, + "isOffset": false, + "isSlot": false, + "src": "83683:14:10", + "valueSize": 1 + }, + { + "declaration": 4098, + "isOffset": false, + "isSlot": false, + "src": "83864:8:10", + "valueSize": 1 + }, + { + "declaration": 4098, + "isOffset": false, + "isSlot": false, + "src": "83967:8:10", + "valueSize": 1 + }, + { + "declaration": 4095, + "isOffset": false, + "isSlot": false, + "src": "83939:4:10", + "valueSize": 1 + }, + { + "declaration": 4089, + "isOffset": false, + "isSlot": false, + "src": "83884:5:10", + "valueSize": 1 + } + ], + "id": 4100, + "nodeType": "InlineAssembly", + "src": "83212:891:10" + } + ] + }, + "documentation": { + "id": 4087, + "nodeType": "StructuredDocumentation", + "src": "82833:138:10", + "text": "@dev Deploys a deterministic ERC1967I proxy with `implementation`, `args`, and `salt`.\n Deposits `value` ETH during deployment." + }, + "id": 4102, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployDeterministicERC1967I", + "nameLocation": "82985:27:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4096, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4089, + "mutability": "mutable", + "name": "value", + "nameLocation": "83030:5:10", + "nodeType": "VariableDeclaration", + "scope": 4102, + "src": "83022:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4088, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "83022:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4091, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "83053:14:10", + "nodeType": "VariableDeclaration", + "scope": 4102, + "src": "83045:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4090, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "83045:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4093, + "mutability": "mutable", + "name": "args", + "nameLocation": "83090:4:10", + "nodeType": "VariableDeclaration", + "scope": 4102, + "src": "83077:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4092, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "83077:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4095, + "mutability": "mutable", + "name": "salt", + "nameLocation": "83112:4:10", + "nodeType": "VariableDeclaration", + "scope": 4102, + "src": "83104:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4094, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "83104:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "83012:110:10" + }, + "returnParameters": { + "id": 4099, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4098, + "mutability": "mutable", + "name": "instance", + "nameLocation": "83149:8:10", + "nodeType": "VariableDeclaration", + "scope": 4102, + "src": "83141:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4097, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "83141:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "83140:18:10" + }, + "scope": 5104, + "src": "82976:1133:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4123, + "nodeType": "Block", + "src": "84524:82:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "30", + "id": 4117, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "84569:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 4118, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4105, + "src": "84572:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4119, + "name": "args", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4107, + "src": "84588:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 4120, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4109, + "src": "84594:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4116, + "name": "createDeterministicERC1967I", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3970, + 3986, + 4124, + 4142 + ], + "referencedDeclaration": 4142, + "src": "84541:27:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$_t_bytes32_$returns$_t_bool_$_t_address_$", + "typeString": "function (uint256,address,bytes memory,bytes32) returns (bool,address)" + } + }, + "id": 4121, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "84541:58:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_address_$", + "typeString": "tuple(bool,address)" + } + }, + "functionReturnParameters": 4115, + "id": 4122, + "nodeType": "Return", + "src": "84534:65:10" + } + ] + }, + "documentation": { + "id": 4103, + "nodeType": "StructuredDocumentation", + "src": "84115:232:10", + "text": "@dev Creates a deterministic ERC1967I proxy with `implementation`, `args` and `salt`.\n Note: This method is intended for use in ERC4337 factories,\n which are expected to NOT revert if the proxy is already deployed." + }, + "id": 4124, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createDeterministicERC1967I", + "nameLocation": "84361:27:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4110, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4105, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "84397:14:10", + "nodeType": "VariableDeclaration", + "scope": 4124, + "src": "84389:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4104, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "84389:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4107, + "mutability": "mutable", + "name": "args", + "nameLocation": "84426:4:10", + "nodeType": "VariableDeclaration", + "scope": 4124, + "src": "84413:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4106, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "84413:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4109, + "mutability": "mutable", + "name": "salt", + "nameLocation": "84440:4:10", + "nodeType": "VariableDeclaration", + "scope": 4124, + "src": "84432:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4108, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "84432:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "84388:57:10" + }, + "returnParameters": { + "id": 4115, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4112, + "mutability": "mutable", + "name": "alreadyDeployed", + "nameLocation": "84485:15:10", + "nodeType": "VariableDeclaration", + "scope": 4124, + "src": "84480:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4111, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "84480:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4114, + "mutability": "mutable", + "name": "instance", + "nameLocation": "84510:8:10", + "nodeType": "VariableDeclaration", + "scope": 4124, + "src": "84502:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4113, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "84502:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "84479:40:10" + }, + "scope": 5104, + "src": "84352:254:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4141, + "nodeType": "Block", + "src": "85102:1852:10", + "statements": [ + { + "AST": { + "nativeSrc": "85164:1784:10", + "nodeType": "YulBlock", + "src": "85164:1784:10", + "statements": [ + { + "nativeSrc": "85178:20:10", + "nodeType": "YulVariableDeclaration", + "src": "85178:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "85193:4:10", + "nodeType": "YulLiteral", + "src": "85193:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "85187:5:10", + "nodeType": "YulIdentifier", + "src": "85187:5:10" + }, + "nativeSrc": "85187:11:10", + "nodeType": "YulFunctionCall", + "src": "85187:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "85182:1:10", + "nodeType": "YulTypedName", + "src": "85182:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "85211:20:10", + "nodeType": "YulVariableDeclaration", + "src": "85211:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "85226:4:10", + "nodeType": "YulIdentifier", + "src": "85226:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "85220:5:10", + "nodeType": "YulIdentifier", + "src": "85220:5:10" + }, + "nativeSrc": "85220:11:10", + "nodeType": "YulFunctionCall", + "src": "85220:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "85215:1:10", + "nodeType": "YulTypedName", + "src": "85215:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "85259:3:10", + "nodeType": "YulIdentifier", + "src": "85259:3:10" + }, + "nativeSrc": "85259:5:10", + "nodeType": "YulFunctionCall", + "src": "85259:5:10" + }, + { + "kind": "number", + "nativeSrc": "85266:1:10", + "nodeType": "YulLiteral", + "src": "85266:1:10", + "type": "", + "value": "4" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "85273:4:10", + "nodeType": "YulIdentifier", + "src": "85273:4:10" + }, + { + "kind": "number", + "nativeSrc": "85279:4:10", + "nodeType": "YulLiteral", + "src": "85279:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "85269:3:10", + "nodeType": "YulIdentifier", + "src": "85269:3:10" + }, + "nativeSrc": "85269:15:10", + "nodeType": "YulFunctionCall", + "src": "85269:15:10" + }, + { + "name": "n", + "nativeSrc": "85286:1:10", + "nodeType": "YulIdentifier", + "src": "85286:1:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "85293:1:10", + "nodeType": "YulIdentifier", + "src": "85293:1:10" + }, + { + "kind": "number", + "nativeSrc": "85296:4:10", + "nodeType": "YulLiteral", + "src": "85296:4:10", + "type": "", + "value": "0x75" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "85289:3:10", + "nodeType": "YulIdentifier", + "src": "85289:3:10" + }, + "nativeSrc": "85289:12:10", + "nodeType": "YulFunctionCall", + "src": "85289:12:10" + }, + { + "name": "n", + "nativeSrc": "85303:1:10", + "nodeType": "YulIdentifier", + "src": "85303:1:10" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "85248:10:10", + "nodeType": "YulIdentifier", + "src": "85248:10:10" + }, + "nativeSrc": "85248:57:10", + "nodeType": "YulFunctionCall", + "src": "85248:57:10" + } + ], + "functionName": { + "name": "pop", + "nativeSrc": "85244:3:10", + "nodeType": "YulIdentifier", + "src": "85244:3:10" + }, + "nativeSrc": "85244:62:10", + "nodeType": "YulFunctionCall", + "src": "85244:62:10" + }, + "nativeSrc": "85244:62:10", + "nodeType": "YulExpressionStatement", + "src": "85244:62:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "85330:1:10", + "nodeType": "YulIdentifier", + "src": "85330:1:10" + }, + { + "kind": "number", + "nativeSrc": "85333:4:10", + "nodeType": "YulLiteral", + "src": "85333:4:10", + "type": "", + "value": "0x55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "85326:3:10", + "nodeType": "YulIdentifier", + "src": "85326:3:10" + }, + "nativeSrc": "85326:12:10", + "nodeType": "YulFunctionCall", + "src": "85326:12:10" + }, + { + "kind": "number", + "nativeSrc": "85340:66:10", + "nodeType": "YulLiteral", + "src": "85340:66:10", + "type": "", + "value": "0x3d6000803e603e573d6000fd5b3d6000f35b6020600f3d393d51543d52593df3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "85319:6:10", + "nodeType": "YulIdentifier", + "src": "85319:6:10" + }, + "nativeSrc": "85319:88:10", + "nodeType": "YulFunctionCall", + "src": "85319:88:10" + }, + "nativeSrc": "85319:88:10", + "nodeType": "YulExpressionStatement", + "src": "85319:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "85431:1:10", + "nodeType": "YulIdentifier", + "src": "85431:1:10" + }, + { + "kind": "number", + "nativeSrc": "85434:4:10", + "nodeType": "YulLiteral", + "src": "85434:4:10", + "type": "", + "value": "0x35" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "85427:3:10", + "nodeType": "YulIdentifier", + "src": "85427:3:10" + }, + "nativeSrc": "85427:12:10", + "nodeType": "YulFunctionCall", + "src": "85427:12:10" + }, + { + "kind": "number", + "nativeSrc": "85441:66:10", + "nodeType": "YulLiteral", + "src": "85441:66:10", + "type": "", + "value": "0xa13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af4" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "85420:6:10", + "nodeType": "YulIdentifier", + "src": "85420:6:10" + }, + "nativeSrc": "85420:88:10", + "nodeType": "YulFunctionCall", + "src": "85420:88:10" + }, + "nativeSrc": "85420:88:10", + "nodeType": "YulExpressionStatement", + "src": "85420:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "85532:1:10", + "nodeType": "YulIdentifier", + "src": "85532:1:10" + }, + { + "kind": "number", + "nativeSrc": "85535:4:10", + "nodeType": "YulLiteral", + "src": "85535:4:10", + "type": "", + "value": "0x15" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "85528:3:10", + "nodeType": "YulIdentifier", + "src": "85528:3:10" + }, + "nativeSrc": "85528:12:10", + "nodeType": "YulFunctionCall", + "src": "85528:12:10" + }, + { + "kind": "number", + "nativeSrc": "85542:44:10", + "nodeType": "YulLiteral", + "src": "85542:44:10", + "type": "", + "value": "0x5155f3365814604357363d3d373d3d363d7f360894" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "85521:6:10", + "nodeType": "YulIdentifier", + "src": "85521:6:10" + }, + "nativeSrc": "85521:66:10", + "nodeType": "YulFunctionCall", + "src": "85521:66:10" + }, + "nativeSrc": "85521:66:10", + "nodeType": "YulExpressionStatement", + "src": "85521:66:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "85607:4:10", + "nodeType": "YulLiteral", + "src": "85607:4:10", + "type": "", + "value": "0x16" + }, + { + "kind": "number", + "nativeSrc": "85613:6:10", + "nodeType": "YulLiteral", + "src": "85613:6:10", + "type": "", + "value": "0x600f" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "85600:6:10", + "nodeType": "YulIdentifier", + "src": "85600:6:10" + }, + "nativeSrc": "85600:20:10", + "nodeType": "YulFunctionCall", + "src": "85600:20:10" + }, + "nativeSrc": "85600:20:10", + "nodeType": "YulExpressionStatement", + "src": "85600:20:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "85640:4:10", + "nodeType": "YulLiteral", + "src": "85640:4:10", + "type": "", + "value": "0x14" + }, + { + "name": "implementation", + "nativeSrc": "85646:14:10", + "nodeType": "YulIdentifier", + "src": "85646:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "85633:6:10", + "nodeType": "YulIdentifier", + "src": "85633:6:10" + }, + "nativeSrc": "85633:28:10", + "nodeType": "YulFunctionCall", + "src": "85633:28:10" + }, + "nativeSrc": "85633:28:10", + "nodeType": "YulExpressionStatement", + "src": "85633:28:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "n", + "nativeSrc": "85771:1:10", + "nodeType": "YulIdentifier", + "src": "85771:1:10" + }, + { + "kind": "number", + "nativeSrc": "85774:6:10", + "nodeType": "YulLiteral", + "src": "85774:6:10", + "type": "", + "value": "0xffad" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "85768:2:10", + "nodeType": "YulIdentifier", + "src": "85768:2:10" + }, + "nativeSrc": "85768:13:10", + "nodeType": "YulFunctionCall", + "src": "85768:13:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "85787:24:10", + "nodeType": "YulLiteral", + "src": "85787:24:10", + "type": "", + "value": "0xfe6100523d8160233d3973" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "85817:2:10", + "nodeType": "YulLiteral", + "src": "85817:2:10", + "type": "", + "value": "56" + }, + { + "name": "n", + "nativeSrc": "85821:1:10", + "nodeType": "YulIdentifier", + "src": "85821:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "85813:3:10", + "nodeType": "YulIdentifier", + "src": "85813:3:10" + }, + "nativeSrc": "85813:10:10", + "nodeType": "YulFunctionCall", + "src": "85813:10:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "85783:3:10", + "nodeType": "YulIdentifier", + "src": "85783:3:10" + }, + "nativeSrc": "85783:41:10", + "nodeType": "YulFunctionCall", + "src": "85783:41:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "85761:6:10", + "nodeType": "YulIdentifier", + "src": "85761:6:10" + }, + "nativeSrc": "85761:64:10", + "nodeType": "YulFunctionCall", + "src": "85761:64:10" + }, + "nativeSrc": "85761:64:10", + "nodeType": "YulExpressionStatement", + "src": "85761:64:10" + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "85845:1:10", + "nodeType": "YulIdentifier", + "src": "85845:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "85854:4:10", + "nodeType": "YulLiteral", + "src": "85854:4:10", + "type": "", + "value": "0x16" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "85848:5:10", + "nodeType": "YulIdentifier", + "src": "85848:5:10" + }, + "nativeSrc": "85848:11:10", + "nodeType": "YulFunctionCall", + "src": "85848:11:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "85838:6:10", + "nodeType": "YulIdentifier", + "src": "85838:6:10" + }, + "nativeSrc": "85838:22:10", + "nodeType": "YulFunctionCall", + "src": "85838:22:10" + }, + "nativeSrc": "85838:22:10", + "nodeType": "YulExpressionStatement", + "src": "85838:22:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "85933:4:10", + "nodeType": "YulLiteral", + "src": "85933:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "85939:4:10", + "nodeType": "YulLiteral", + "src": "85939:4:10", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "85925:7:10", + "nodeType": "YulIdentifier", + "src": "85925:7:10" + }, + "nativeSrc": "85925:19:10", + "nodeType": "YulFunctionCall", + "src": "85925:19:10" + }, + "nativeSrc": "85925:19:10", + "nodeType": "YulExpressionStatement", + "src": "85925:19:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "85985:4:10", + "nodeType": "YulLiteral", + "src": "85985:4:10", + "type": "", + "value": "0x35" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "86001:1:10", + "nodeType": "YulIdentifier", + "src": "86001:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "86008:1:10", + "nodeType": "YulIdentifier", + "src": "86008:1:10" + }, + { + "kind": "number", + "nativeSrc": "86011:4:10", + "nodeType": "YulLiteral", + "src": "86011:4:10", + "type": "", + "value": "0x75" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "86004:3:10", + "nodeType": "YulIdentifier", + "src": "86004:3:10" + }, + "nativeSrc": "86004:12:10", + "nodeType": "YulFunctionCall", + "src": "86004:12:10" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "85991:9:10", + "nodeType": "YulIdentifier", + "src": "85991:9:10" + }, + "nativeSrc": "85991:26:10", + "nodeType": "YulFunctionCall", + "src": "85991:26:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "85978:6:10", + "nodeType": "YulIdentifier", + "src": "85978:6:10" + }, + "nativeSrc": "85978:40:10", + "nodeType": "YulFunctionCall", + "src": "85978:40:10" + }, + "nativeSrc": "85978:40:10", + "nodeType": "YulExpressionStatement", + "src": "85978:40:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "86038:4:10", + "nodeType": "YulLiteral", + "src": "86038:4:10", + "type": "", + "value": "0x01" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "86048:2:10", + "nodeType": "YulLiteral", + "src": "86048:2:10", + "type": "", + "value": "96" + }, + { + "arguments": [], + "functionName": { + "name": "address", + "nativeSrc": "86052:7:10", + "nodeType": "YulIdentifier", + "src": "86052:7:10" + }, + "nativeSrc": "86052:9:10", + "nodeType": "YulFunctionCall", + "src": "86052:9:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "86044:3:10", + "nodeType": "YulIdentifier", + "src": "86044:3:10" + }, + "nativeSrc": "86044:18:10", + "nodeType": "YulFunctionCall", + "src": "86044:18:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "86031:6:10", + "nodeType": "YulIdentifier", + "src": "86031:6:10" + }, + "nativeSrc": "86031:32:10", + "nodeType": "YulFunctionCall", + "src": "86031:32:10" + }, + "nativeSrc": "86031:32:10", + "nodeType": "YulExpressionStatement", + "src": "86031:32:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "86083:4:10", + "nodeType": "YulLiteral", + "src": "86083:4:10", + "type": "", + "value": "0x15" + }, + { + "name": "salt", + "nativeSrc": "86089:4:10", + "nodeType": "YulIdentifier", + "src": "86089:4:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "86076:6:10", + "nodeType": "YulIdentifier", + "src": "86076:6:10" + }, + "nativeSrc": "86076:18:10", + "nodeType": "YulFunctionCall", + "src": "86076:18:10" + }, + "nativeSrc": "86076:18:10", + "nodeType": "YulExpressionStatement", + "src": "86076:18:10" + }, + { + "nativeSrc": "86107:33:10", + "nodeType": "YulAssignment", + "src": "86107:33:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "86129:4:10", + "nodeType": "YulLiteral", + "src": "86129:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "86135:4:10", + "nodeType": "YulLiteral", + "src": "86135:4:10", + "type": "", + "value": "0x55" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "86119:9:10", + "nodeType": "YulIdentifier", + "src": "86119:9:10" + }, + "nativeSrc": "86119:21:10", + "nodeType": "YulFunctionCall", + "src": "86119:21:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "86107:8:10", + "nodeType": "YulIdentifier", + "src": "86107:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "86165:685:10", + "nodeType": "YulBlock", + "src": "86165:685:10", + "statements": [ + { + "body": { + "nativeSrc": "86216:296:10", + "nodeType": "YulBlock", + "src": "86216:296:10", + "statements": [ + { + "nativeSrc": "86238:49:10", + "nodeType": "YulAssignment", + "src": "86238:49:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "86258:5:10", + "nodeType": "YulIdentifier", + "src": "86258:5:10" + }, + { + "name": "m", + "nativeSrc": "86265:1:10", + "nodeType": "YulIdentifier", + "src": "86265:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "86272:4:10", + "nodeType": "YulLiteral", + "src": "86272:4:10", + "type": "", + "value": "0x75" + }, + { + "name": "n", + "nativeSrc": "86278:1:10", + "nodeType": "YulIdentifier", + "src": "86278:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "86268:3:10", + "nodeType": "YulIdentifier", + "src": "86268:3:10" + }, + "nativeSrc": "86268:12:10", + "nodeType": "YulFunctionCall", + "src": "86268:12:10" + }, + { + "name": "salt", + "nativeSrc": "86282:4:10", + "nodeType": "YulIdentifier", + "src": "86282:4:10" + } + ], + "functionName": { + "name": "create2", + "nativeSrc": "86250:7:10", + "nodeType": "YulIdentifier", + "src": "86250:7:10" + }, + "nativeSrc": "86250:37:10", + "nodeType": "YulFunctionCall", + "src": "86250:37:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "86238:8:10", + "nodeType": "YulIdentifier", + "src": "86238:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "86328:140:10", + "nodeType": "YulBlock", + "src": "86328:140:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "86361:4:10", + "nodeType": "YulLiteral", + "src": "86361:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "86367:10:10", + "nodeType": "YulLiteral", + "src": "86367:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "86354:6:10", + "nodeType": "YulIdentifier", + "src": "86354:6:10" + }, + "nativeSrc": "86354:24:10", + "nodeType": "YulFunctionCall", + "src": "86354:24:10" + }, + "nativeSrc": "86354:24:10", + "nodeType": "YulExpressionStatement", + "src": "86354:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "86435:4:10", + "nodeType": "YulLiteral", + "src": "86435:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "86441:4:10", + "nodeType": "YulLiteral", + "src": "86441:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "86428:6:10", + "nodeType": "YulIdentifier", + "src": "86428:6:10" + }, + "nativeSrc": "86428:18:10", + "nodeType": "YulFunctionCall", + "src": "86428:18:10" + }, + "nativeSrc": "86428:18:10", + "nodeType": "YulExpressionStatement", + "src": "86428:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "86318:8:10", + "nodeType": "YulIdentifier", + "src": "86318:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "86311:6:10", + "nodeType": "YulIdentifier", + "src": "86311:6:10" + }, + "nativeSrc": "86311:16:10", + "nodeType": "YulFunctionCall", + "src": "86311:16:10" + }, + "nativeSrc": "86308:160:10", + "nodeType": "YulIf", + "src": "86308:160:10" + }, + { + "nativeSrc": "86489:5:10", + "nodeType": "YulBreak", + "src": "86489:5:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "86205:8:10", + "nodeType": "YulIdentifier", + "src": "86205:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "86193:11:10", + "nodeType": "YulIdentifier", + "src": "86193:11:10" + }, + "nativeSrc": "86193:21:10", + "nodeType": "YulFunctionCall", + "src": "86193:21:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "86186:6:10", + "nodeType": "YulIdentifier", + "src": "86186:6:10" + }, + "nativeSrc": "86186:29:10", + "nodeType": "YulFunctionCall", + "src": "86186:29:10" + }, + "nativeSrc": "86183:329:10", + "nodeType": "YulIf", + "src": "86183:329:10" + }, + { + "nativeSrc": "86529:20:10", + "nodeType": "YulAssignment", + "src": "86529:20:10", + "value": { + "kind": "number", + "nativeSrc": "86548:1:10", + "nodeType": "YulLiteral", + "src": "86548:1:10", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "alreadyDeployed", + "nativeSrc": "86529:15:10", + "nodeType": "YulIdentifier", + "src": "86529:15:10" + } + ] + }, + { + "body": { + "nativeSrc": "86583:9:10", + "nodeType": "YulBlock", + "src": "86583:9:10", + "statements": [ + { + "nativeSrc": "86585:5:10", + "nodeType": "YulBreak", + "src": "86585:5:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nativeSrc": "86576:5:10", + "nodeType": "YulIdentifier", + "src": "86576:5:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "86569:6:10", + "nodeType": "YulIdentifier", + "src": "86569:6:10" + }, + "nativeSrc": "86569:13:10", + "nodeType": "YulFunctionCall", + "src": "86569:13:10" + }, + "nativeSrc": "86566:26:10", + "nodeType": "YulIf", + "src": "86566:26:10" + }, + { + "body": { + "nativeSrc": "86685:129:10", + "nodeType": "YulBlock", + "src": "86685:129:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "86714:4:10", + "nodeType": "YulLiteral", + "src": "86714:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "86720:10:10", + "nodeType": "YulLiteral", + "src": "86720:10:10", + "type": "", + "value": "0xb12d13eb" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "86707:6:10", + "nodeType": "YulIdentifier", + "src": "86707:6:10" + }, + "nativeSrc": "86707:24:10", + "nodeType": "YulFunctionCall", + "src": "86707:24:10" + }, + "nativeSrc": "86707:24:10", + "nodeType": "YulExpressionStatement", + "src": "86707:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "86785:4:10", + "nodeType": "YulLiteral", + "src": "86785:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "86791:4:10", + "nodeType": "YulLiteral", + "src": "86791:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "86778:6:10", + "nodeType": "YulIdentifier", + "src": "86778:6:10" + }, + "nativeSrc": "86778:18:10", + "nodeType": "YulFunctionCall", + "src": "86778:18:10" + }, + "nativeSrc": "86778:18:10", + "nodeType": "YulExpressionStatement", + "src": "86778:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "86624:3:10", + "nodeType": "YulIdentifier", + "src": "86624:3:10" + }, + "nativeSrc": "86624:5:10", + "nodeType": "YulFunctionCall", + "src": "86624:5:10" + }, + { + "name": "instance", + "nativeSrc": "86631:8:10", + "nodeType": "YulIdentifier", + "src": "86631:8:10" + }, + { + "name": "value", + "nativeSrc": "86641:5:10", + "nodeType": "YulIdentifier", + "src": "86641:5:10" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "86648:8:10", + "nodeType": "YulIdentifier", + "src": "86648:8:10" + }, + "nativeSrc": "86648:10:10", + "nodeType": "YulFunctionCall", + "src": "86648:10:10" + }, + { + "kind": "number", + "nativeSrc": "86660:4:10", + "nodeType": "YulLiteral", + "src": "86660:4:10", + "type": "", + "value": "0x00" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "86666:8:10", + "nodeType": "YulIdentifier", + "src": "86666:8:10" + }, + "nativeSrc": "86666:10:10", + "nodeType": "YulFunctionCall", + "src": "86666:10:10" + }, + { + "kind": "number", + "nativeSrc": "86678:4:10", + "nodeType": "YulLiteral", + "src": "86678:4:10", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "call", + "nativeSrc": "86619:4:10", + "nodeType": "YulIdentifier", + "src": "86619:4:10" + }, + "nativeSrc": "86619:64:10", + "nodeType": "YulFunctionCall", + "src": "86619:64:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "86612:6:10", + "nodeType": "YulIdentifier", + "src": "86612:6:10" + }, + "nativeSrc": "86612:72:10", + "nodeType": "YulFunctionCall", + "src": "86612:72:10" + }, + "nativeSrc": "86609:205:10", + "nodeType": "YulIf", + "src": "86609:205:10" + }, + { + "nativeSrc": "86831:5:10", + "nodeType": "YulBreak", + "src": "86831:5:10" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "86160:1:10", + "nodeType": "YulLiteral", + "src": "86160:1:10", + "type": "", + "value": "1" + }, + "nativeSrc": "86153:697:10", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "86162:2:10", + "nodeType": "YulBlock", + "src": "86162:2:10", + "statements": [] + }, + "pre": { + "nativeSrc": "86157:2:10", + "nodeType": "YulBlock", + "src": "86157:2:10", + "statements": [] + }, + "src": "86153:697:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "86870:4:10", + "nodeType": "YulLiteral", + "src": "86870:4:10", + "type": "", + "value": "0x35" + }, + { + "kind": "number", + "nativeSrc": "86876:1:10", + "nodeType": "YulLiteral", + "src": "86876:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "86863:6:10", + "nodeType": "YulIdentifier", + "src": "86863:6:10" + }, + "nativeSrc": "86863:15:10", + "nodeType": "YulFunctionCall", + "src": "86863:15:10" + }, + "nativeSrc": "86863:15:10", + "nodeType": "YulExpressionStatement", + "src": "86863:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4136, + "isOffset": false, + "isSlot": false, + "src": "86529:15:10", + "valueSize": 1 + }, + { + "declaration": 4131, + "isOffset": false, + "isSlot": false, + "src": "85226:4:10", + "valueSize": 1 + }, + { + "declaration": 4131, + "isOffset": false, + "isSlot": false, + "src": "85273:4:10", + "valueSize": 1 + }, + { + "declaration": 4129, + "isOffset": false, + "isSlot": false, + "src": "85646:14:10", + "valueSize": 1 + }, + { + "declaration": 4138, + "isOffset": false, + "isSlot": false, + "src": "86107:8:10", + "valueSize": 1 + }, + { + "declaration": 4138, + "isOffset": false, + "isSlot": false, + "src": "86205:8:10", + "valueSize": 1 + }, + { + "declaration": 4138, + "isOffset": false, + "isSlot": false, + "src": "86238:8:10", + "valueSize": 1 + }, + { + "declaration": 4138, + "isOffset": false, + "isSlot": false, + "src": "86318:8:10", + "valueSize": 1 + }, + { + "declaration": 4138, + "isOffset": false, + "isSlot": false, + "src": "86631:8:10", + "valueSize": 1 + }, + { + "declaration": 4133, + "isOffset": false, + "isSlot": false, + "src": "86089:4:10", + "valueSize": 1 + }, + { + "declaration": 4133, + "isOffset": false, + "isSlot": false, + "src": "86282:4:10", + "valueSize": 1 + }, + { + "declaration": 4127, + "isOffset": false, + "isSlot": false, + "src": "86258:5:10", + "valueSize": 1 + }, + { + "declaration": 4127, + "isOffset": false, + "isSlot": false, + "src": "86576:5:10", + "valueSize": 1 + }, + { + "declaration": 4127, + "isOffset": false, + "isSlot": false, + "src": "86641:5:10", + "valueSize": 1 + } + ], + "id": 4140, + "nodeType": "InlineAssembly", + "src": "85155:1793:10" + } + ] + }, + "documentation": { + "id": 4125, + "nodeType": "StructuredDocumentation", + "src": "84612:280:10", + "text": "@dev Creates a deterministic ERC1967I proxy with `implementation`, `args` and `salt`.\n Deposits `value` ETH during deployment.\n Note: This method is intended for use in ERC4337 factories,\n which are expected to NOT revert if the proxy is already deployed." + }, + "id": 4142, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createDeterministicERC1967I", + "nameLocation": "84906:27:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4134, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4127, + "mutability": "mutable", + "name": "value", + "nameLocation": "84951:5:10", + "nodeType": "VariableDeclaration", + "scope": 4142, + "src": "84943:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4126, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "84943:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4129, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "84974:14:10", + "nodeType": "VariableDeclaration", + "scope": 4142, + "src": "84966:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4128, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "84966:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4131, + "mutability": "mutable", + "name": "args", + "nameLocation": "85011:4:10", + "nodeType": "VariableDeclaration", + "scope": 4142, + "src": "84998:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4130, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "84998:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4133, + "mutability": "mutable", + "name": "salt", + "nameLocation": "85033:4:10", + "nodeType": "VariableDeclaration", + "scope": 4142, + "src": "85025:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4132, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "85025:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "84933:110:10" + }, + "returnParameters": { + "id": 4139, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4136, + "mutability": "mutable", + "name": "alreadyDeployed", + "nameLocation": "85067:15:10", + "nodeType": "VariableDeclaration", + "scope": 4142, + "src": "85062:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4135, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "85062:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4138, + "mutability": "mutable", + "name": "instance", + "nameLocation": "85092:8:10", + "nodeType": "VariableDeclaration", + "scope": 4142, + "src": "85084:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4137, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "85084:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "85061:40:10" + }, + "scope": 5104, + "src": "84897:2057:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4153, + "nodeType": "Block", + "src": "87195:1038:10", + "statements": [ + { + "AST": { + "nativeSrc": "87257:970:10", + "nodeType": "YulBlock", + "src": "87257:970:10", + "statements": [ + { + "nativeSrc": "87271:16:10", + "nodeType": "YulAssignment", + "src": "87271:16:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "87282:4:10", + "nodeType": "YulLiteral", + "src": "87282:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "87276:5:10", + "nodeType": "YulIdentifier", + "src": "87276:5:10" + }, + "nativeSrc": "87276:11:10", + "nodeType": "YulFunctionCall", + "src": "87276:11:10" + }, + "variableNames": [ + { + "name": "c", + "nativeSrc": "87271:1:10", + "nodeType": "YulIdentifier", + "src": "87271:1:10" + } + ] + }, + { + "nativeSrc": "87300:20:10", + "nodeType": "YulVariableDeclaration", + "src": "87300:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "87315:4:10", + "nodeType": "YulIdentifier", + "src": "87315:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "87309:5:10", + "nodeType": "YulIdentifier", + "src": "87309:5:10" + }, + "nativeSrc": "87309:11:10", + "nodeType": "YulFunctionCall", + "src": "87309:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "87304:1:10", + "nodeType": "YulTypedName", + "src": "87304:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "87435:14:10", + "nodeType": "YulIdentifier", + "src": "87435:14:10" + }, + "nativeSrc": "87435:16:10", + "nodeType": "YulFunctionCall", + "src": "87435:16:10" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "87453:14:10", + "nodeType": "YulIdentifier", + "src": "87453:14:10" + }, + "nativeSrc": "87453:16:10", + "nodeType": "YulFunctionCall", + "src": "87453:16:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "87474:1:10", + "nodeType": "YulIdentifier", + "src": "87474:1:10" + }, + { + "kind": "number", + "nativeSrc": "87477:6:10", + "nodeType": "YulLiteral", + "src": "87477:6:10", + "type": "", + "value": "0xffad" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "87471:2:10", + "nodeType": "YulIdentifier", + "src": "87471:2:10" + }, + "nativeSrc": "87471:13:10", + "nodeType": "YulFunctionCall", + "src": "87471:13:10" + } + ], + "functionName": { + "name": "returndatacopy", + "nativeSrc": "87420:14:10", + "nodeType": "YulIdentifier", + "src": "87420:14:10" + }, + "nativeSrc": "87420:65:10", + "nodeType": "YulFunctionCall", + "src": "87420:65:10" + }, + "nativeSrc": "87420:65:10", + "nodeType": "YulExpressionStatement", + "src": "87420:65:10" + }, + { + "body": { + "nativeSrc": "87548:92:10", + "nodeType": "YulBlock", + "src": "87548:92:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "87581:1:10", + "nodeType": "YulIdentifier", + "src": "87581:1:10" + }, + { + "kind": "number", + "nativeSrc": "87584:4:10", + "nodeType": "YulLiteral", + "src": "87584:4:10", + "type": "", + "value": "0x95" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "87577:3:10", + "nodeType": "YulIdentifier", + "src": "87577:3:10" + }, + "nativeSrc": "87577:12:10", + "nodeType": "YulFunctionCall", + "src": "87577:12:10" + }, + { + "name": "i", + "nativeSrc": "87591:1:10", + "nodeType": "YulIdentifier", + "src": "87591:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "87573:3:10", + "nodeType": "YulIdentifier", + "src": "87573:3:10" + }, + "nativeSrc": "87573:20:10", + "nodeType": "YulFunctionCall", + "src": "87573:20:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "87609:4:10", + "nodeType": "YulIdentifier", + "src": "87609:4:10" + }, + { + "kind": "number", + "nativeSrc": "87615:4:10", + "nodeType": "YulLiteral", + "src": "87615:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "87605:3:10", + "nodeType": "YulIdentifier", + "src": "87605:3:10" + }, + "nativeSrc": "87605:15:10", + "nodeType": "YulFunctionCall", + "src": "87605:15:10" + }, + { + "name": "i", + "nativeSrc": "87622:1:10", + "nodeType": "YulIdentifier", + "src": "87622:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "87601:3:10", + "nodeType": "YulIdentifier", + "src": "87601:3:10" + }, + "nativeSrc": "87601:23:10", + "nodeType": "YulFunctionCall", + "src": "87601:23:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "87595:5:10", + "nodeType": "YulIdentifier", + "src": "87595:5:10" + }, + "nativeSrc": "87595:30:10", + "nodeType": "YulFunctionCall", + "src": "87595:30:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "87566:6:10", + "nodeType": "YulIdentifier", + "src": "87566:6:10" + }, + "nativeSrc": "87566:60:10", + "nodeType": "YulFunctionCall", + "src": "87566:60:10" + }, + "nativeSrc": "87566:60:10", + "nodeType": "YulExpressionStatement", + "src": "87566:60:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "87520:1:10", + "nodeType": "YulIdentifier", + "src": "87520:1:10" + }, + { + "name": "n", + "nativeSrc": "87523:1:10", + "nodeType": "YulIdentifier", + "src": "87523:1:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "87517:2:10", + "nodeType": "YulIdentifier", + "src": "87517:2:10" + }, + "nativeSrc": "87517:8:10", + "nodeType": "YulFunctionCall", + "src": "87517:8:10" + }, + "nativeSrc": "87498:142:10", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "87526:21:10", + "nodeType": "YulBlock", + "src": "87526:21:10", + "statements": [ + { + "nativeSrc": "87528:17:10", + "nodeType": "YulAssignment", + "src": "87528:17:10", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "87537:1:10", + "nodeType": "YulIdentifier", + "src": "87537:1:10" + }, + { + "kind": "number", + "nativeSrc": "87540:4:10", + "nodeType": "YulLiteral", + "src": "87540:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "87533:3:10", + "nodeType": "YulIdentifier", + "src": "87533:3:10" + }, + "nativeSrc": "87533:12:10", + "nodeType": "YulFunctionCall", + "src": "87533:12:10" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "87528:1:10", + "nodeType": "YulIdentifier", + "src": "87528:1:10" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "87502:14:10", + "nodeType": "YulBlock", + "src": "87502:14:10", + "statements": [ + { + "nativeSrc": "87504:10:10", + "nodeType": "YulVariableDeclaration", + "src": "87504:10:10", + "value": { + "kind": "number", + "nativeSrc": "87513:1:10", + "nodeType": "YulLiteral", + "src": "87513:1:10", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "87508:1:10", + "nodeType": "YulTypedName", + "src": "87508:1:10", + "type": "" + } + ] + } + ] + }, + "src": "87498:142:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "87665:1:10", + "nodeType": "YulIdentifier", + "src": "87665:1:10" + }, + { + "kind": "number", + "nativeSrc": "87668:4:10", + "nodeType": "YulLiteral", + "src": "87668:4:10", + "type": "", + "value": "0x75" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "87661:3:10", + "nodeType": "YulIdentifier", + "src": "87661:3:10" + }, + "nativeSrc": "87661:12:10", + "nodeType": "YulFunctionCall", + "src": "87661:12:10" + }, + { + "kind": "number", + "nativeSrc": "87675:66:10", + "nodeType": "YulLiteral", + "src": "87675:66:10", + "type": "", + "value": "0x3d6000803e603e573d6000fd5b3d6000f35b6020600f3d393d51543d52593df3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "87654:6:10", + "nodeType": "YulIdentifier", + "src": "87654:6:10" + }, + "nativeSrc": "87654:88:10", + "nodeType": "YulFunctionCall", + "src": "87654:88:10" + }, + "nativeSrc": "87654:88:10", + "nodeType": "YulExpressionStatement", + "src": "87654:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "87766:1:10", + "nodeType": "YulIdentifier", + "src": "87766:1:10" + }, + { + "kind": "number", + "nativeSrc": "87769:4:10", + "nodeType": "YulLiteral", + "src": "87769:4:10", + "type": "", + "value": "0x55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "87762:3:10", + "nodeType": "YulIdentifier", + "src": "87762:3:10" + }, + "nativeSrc": "87762:12:10", + "nodeType": "YulFunctionCall", + "src": "87762:12:10" + }, + { + "kind": "number", + "nativeSrc": "87776:66:10", + "nodeType": "YulLiteral", + "src": "87776:66:10", + "type": "", + "value": "0xa13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af4" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "87755:6:10", + "nodeType": "YulIdentifier", + "src": "87755:6:10" + }, + "nativeSrc": "87755:88:10", + "nodeType": "YulFunctionCall", + "src": "87755:88:10" + }, + "nativeSrc": "87755:88:10", + "nodeType": "YulExpressionStatement", + "src": "87755:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "87867:1:10", + "nodeType": "YulIdentifier", + "src": "87867:1:10" + }, + { + "kind": "number", + "nativeSrc": "87870:4:10", + "nodeType": "YulLiteral", + "src": "87870:4:10", + "type": "", + "value": "0x35" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "87863:3:10", + "nodeType": "YulIdentifier", + "src": "87863:3:10" + }, + "nativeSrc": "87863:12:10", + "nodeType": "YulFunctionCall", + "src": "87863:12:10" + }, + { + "kind": "number", + "nativeSrc": "87877:48:10", + "nodeType": "YulLiteral", + "src": "87877:48:10", + "type": "", + "value": "0x600f5155f3365814604357363d3d373d3d363d7f360894" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "87856:6:10", + "nodeType": "YulIdentifier", + "src": "87856:6:10" + }, + "nativeSrc": "87856:70:10", + "nodeType": "YulFunctionCall", + "src": "87856:70:10" + }, + "nativeSrc": "87856:70:10", + "nodeType": "YulExpressionStatement", + "src": "87856:70:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "87950:1:10", + "nodeType": "YulIdentifier", + "src": "87950:1:10" + }, + { + "kind": "number", + "nativeSrc": "87953:4:10", + "nodeType": "YulLiteral", + "src": "87953:4:10", + "type": "", + "value": "0x1e" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "87946:3:10", + "nodeType": "YulIdentifier", + "src": "87946:3:10" + }, + "nativeSrc": "87946:12:10", + "nodeType": "YulFunctionCall", + "src": "87946:12:10" + }, + { + "name": "implementation", + "nativeSrc": "87960:14:10", + "nodeType": "YulIdentifier", + "src": "87960:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "87939:6:10", + "nodeType": "YulIdentifier", + "src": "87939:6:10" + }, + "nativeSrc": "87939:36:10", + "nodeType": "YulFunctionCall", + "src": "87939:36:10" + }, + "nativeSrc": "87939:36:10", + "nodeType": "YulExpressionStatement", + "src": "87939:36:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "87999:1:10", + "nodeType": "YulIdentifier", + "src": "87999:1:10" + }, + { + "kind": "number", + "nativeSrc": "88002:4:10", + "nodeType": "YulLiteral", + "src": "88002:4:10", + "type": "", + "value": "0x0a" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "87995:3:10", + "nodeType": "YulIdentifier", + "src": "87995:3:10" + }, + "nativeSrc": "87995:12:10", + "nodeType": "YulFunctionCall", + "src": "87995:12:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "88013:22:10", + "nodeType": "YulLiteral", + "src": "88013:22:10", + "type": "", + "value": "0x6100523d8160233d3973" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "88041:2:10", + "nodeType": "YulLiteral", + "src": "88041:2:10", + "type": "", + "value": "56" + }, + { + "name": "n", + "nativeSrc": "88045:1:10", + "nodeType": "YulIdentifier", + "src": "88045:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "88037:3:10", + "nodeType": "YulIdentifier", + "src": "88037:3:10" + }, + "nativeSrc": "88037:10:10", + "nodeType": "YulFunctionCall", + "src": "88037:10:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "88009:3:10", + "nodeType": "YulIdentifier", + "src": "88009:3:10" + }, + "nativeSrc": "88009:39:10", + "nodeType": "YulFunctionCall", + "src": "88009:39:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "87988:6:10", + "nodeType": "YulIdentifier", + "src": "87988:6:10" + }, + "nativeSrc": "87988:61:10", + "nodeType": "YulFunctionCall", + "src": "87988:61:10" + }, + "nativeSrc": "87988:61:10", + "nodeType": "YulExpressionStatement", + "src": "87988:61:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "88073:1:10", + "nodeType": "YulIdentifier", + "src": "88073:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "88080:1:10", + "nodeType": "YulIdentifier", + "src": "88080:1:10" + }, + { + "kind": "number", + "nativeSrc": "88083:4:10", + "nodeType": "YulLiteral", + "src": "88083:4:10", + "type": "", + "value": "0x95" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "88076:3:10", + "nodeType": "YulIdentifier", + "src": "88076:3:10" + }, + "nativeSrc": "88076:12:10", + "nodeType": "YulFunctionCall", + "src": "88076:12:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "88069:3:10", + "nodeType": "YulIdentifier", + "src": "88069:3:10" + }, + "nativeSrc": "88069:20:10", + "nodeType": "YulFunctionCall", + "src": "88069:20:10" + }, + { + "kind": "number", + "nativeSrc": "88091:1:10", + "nodeType": "YulLiteral", + "src": "88091:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "88062:6:10", + "nodeType": "YulIdentifier", + "src": "88062:6:10" + }, + "nativeSrc": "88062:31:10", + "nodeType": "YulFunctionCall", + "src": "88062:31:10" + }, + "nativeSrc": "88062:31:10", + "nodeType": "YulExpressionStatement", + "src": "88062:31:10" + }, + { + "expression": { + "arguments": [ + { + "name": "c", + "nativeSrc": "88113:1:10", + "nodeType": "YulIdentifier", + "src": "88113:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "88120:4:10", + "nodeType": "YulLiteral", + "src": "88120:4:10", + "type": "", + "value": "0x75" + }, + { + "name": "n", + "nativeSrc": "88126:1:10", + "nodeType": "YulIdentifier", + "src": "88126:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "88116:3:10", + "nodeType": "YulIdentifier", + "src": "88116:3:10" + }, + "nativeSrc": "88116:12:10", + "nodeType": "YulFunctionCall", + "src": "88116:12:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "88106:6:10", + "nodeType": "YulIdentifier", + "src": "88106:6:10" + }, + "nativeSrc": "88106:23:10", + "nodeType": "YulFunctionCall", + "src": "88106:23:10" + }, + "nativeSrc": "88106:23:10", + "nodeType": "YulExpressionStatement", + "src": "88106:23:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "88170:4:10", + "nodeType": "YulLiteral", + "src": "88170:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "c", + "nativeSrc": "88180:1:10", + "nodeType": "YulIdentifier", + "src": "88180:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "88187:1:10", + "nodeType": "YulIdentifier", + "src": "88187:1:10" + }, + { + "kind": "number", + "nativeSrc": "88190:4:10", + "nodeType": "YulLiteral", + "src": "88190:4:10", + "type": "", + "value": "0xb5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "88183:3:10", + "nodeType": "YulIdentifier", + "src": "88183:3:10" + }, + "nativeSrc": "88183:12:10", + "nodeType": "YulFunctionCall", + "src": "88183:12:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "88176:3:10", + "nodeType": "YulIdentifier", + "src": "88176:3:10" + }, + "nativeSrc": "88176:20:10", + "nodeType": "YulFunctionCall", + "src": "88176:20:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "88163:6:10", + "nodeType": "YulIdentifier", + "src": "88163:6:10" + }, + "nativeSrc": "88163:34:10", + "nodeType": "YulFunctionCall", + "src": "88163:34:10" + }, + "nativeSrc": "88163:34:10", + "nodeType": "YulExpressionStatement", + "src": "88163:34:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4147, + "isOffset": false, + "isSlot": false, + "src": "87315:4:10", + "valueSize": 1 + }, + { + "declaration": 4147, + "isOffset": false, + "isSlot": false, + "src": "87609:4:10", + "valueSize": 1 + }, + { + "declaration": 4150, + "isOffset": false, + "isSlot": false, + "src": "87271:1:10", + "valueSize": 1 + }, + { + "declaration": 4150, + "isOffset": false, + "isSlot": false, + "src": "87581:1:10", + "valueSize": 1 + }, + { + "declaration": 4150, + "isOffset": false, + "isSlot": false, + "src": "87665:1:10", + "valueSize": 1 + }, + { + "declaration": 4150, + "isOffset": false, + "isSlot": false, + "src": "87766:1:10", + "valueSize": 1 + }, + { + "declaration": 4150, + "isOffset": false, + "isSlot": false, + "src": "87867:1:10", + "valueSize": 1 + }, + { + "declaration": 4150, + "isOffset": false, + "isSlot": false, + "src": "87950:1:10", + "valueSize": 1 + }, + { + "declaration": 4150, + "isOffset": false, + "isSlot": false, + "src": "87999:1:10", + "valueSize": 1 + }, + { + "declaration": 4150, + "isOffset": false, + "isSlot": false, + "src": "88073:1:10", + "valueSize": 1 + }, + { + "declaration": 4150, + "isOffset": false, + "isSlot": false, + "src": "88113:1:10", + "valueSize": 1 + }, + { + "declaration": 4150, + "isOffset": false, + "isSlot": false, + "src": "88180:1:10", + "valueSize": 1 + }, + { + "declaration": 4145, + "isOffset": false, + "isSlot": false, + "src": "87960:14:10", + "valueSize": 1 + } + ], + "id": 4152, + "nodeType": "InlineAssembly", + "src": "87248:979:10" + } + ] + }, + "documentation": { + "id": 4143, + "nodeType": "StructuredDocumentation", + "src": "86960:94:10", + "text": "@dev Returns the initialization code of the ERC1967I proxy of `implementation` and `args`." + }, + "id": 4154, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeERC1967I", + "nameLocation": "87068:16:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4148, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4145, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "87093:14:10", + "nodeType": "VariableDeclaration", + "scope": 4154, + "src": "87085:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4144, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "87085:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4147, + "mutability": "mutable", + "name": "args", + "nameLocation": "87122:4:10", + "nodeType": "VariableDeclaration", + "scope": 4154, + "src": "87109:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4146, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "87109:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "87084:43:10" + }, + "returnParameters": { + "id": 4151, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4150, + "mutability": "mutable", + "name": "c", + "nameLocation": "87188:1:10", + "nodeType": "VariableDeclaration", + "scope": 4154, + "src": "87175:14:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4149, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "87175:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "87174:16:10" + }, + "scope": 5104, + "src": "87059:1174:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4165, + "nodeType": "Block", + "src": "88480:1004:10", + "statements": [ + { + "AST": { + "nativeSrc": "88542:936:10", + "nodeType": "YulBlock", + "src": "88542:936:10", + "statements": [ + { + "nativeSrc": "88556:20:10", + "nodeType": "YulVariableDeclaration", + "src": "88556:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "88571:4:10", + "nodeType": "YulLiteral", + "src": "88571:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "88565:5:10", + "nodeType": "YulIdentifier", + "src": "88565:5:10" + }, + "nativeSrc": "88565:11:10", + "nodeType": "YulFunctionCall", + "src": "88565:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "88560:1:10", + "nodeType": "YulTypedName", + "src": "88560:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "88623:20:10", + "nodeType": "YulVariableDeclaration", + "src": "88623:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "88638:4:10", + "nodeType": "YulIdentifier", + "src": "88638:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "88632:5:10", + "nodeType": "YulIdentifier", + "src": "88632:5:10" + }, + "nativeSrc": "88632:11:10", + "nodeType": "YulFunctionCall", + "src": "88632:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "88627:1:10", + "nodeType": "YulTypedName", + "src": "88627:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "88758:14:10", + "nodeType": "YulIdentifier", + "src": "88758:14:10" + }, + "nativeSrc": "88758:16:10", + "nodeType": "YulFunctionCall", + "src": "88758:16:10" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "88776:14:10", + "nodeType": "YulIdentifier", + "src": "88776:14:10" + }, + "nativeSrc": "88776:16:10", + "nodeType": "YulFunctionCall", + "src": "88776:16:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "88797:1:10", + "nodeType": "YulIdentifier", + "src": "88797:1:10" + }, + { + "kind": "number", + "nativeSrc": "88800:6:10", + "nodeType": "YulLiteral", + "src": "88800:6:10", + "type": "", + "value": "0xffad" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "88794:2:10", + "nodeType": "YulIdentifier", + "src": "88794:2:10" + }, + "nativeSrc": "88794:13:10", + "nodeType": "YulFunctionCall", + "src": "88794:13:10" + } + ], + "functionName": { + "name": "returndatacopy", + "nativeSrc": "88743:14:10", + "nodeType": "YulIdentifier", + "src": "88743:14:10" + }, + "nativeSrc": "88743:65:10", + "nodeType": "YulFunctionCall", + "src": "88743:65:10" + }, + "nativeSrc": "88743:65:10", + "nodeType": "YulExpressionStatement", + "src": "88743:65:10" + }, + { + "body": { + "nativeSrc": "88872:92:10", + "nodeType": "YulBlock", + "src": "88872:92:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "88905:1:10", + "nodeType": "YulIdentifier", + "src": "88905:1:10" + }, + { + "kind": "number", + "nativeSrc": "88908:4:10", + "nodeType": "YulLiteral", + "src": "88908:4:10", + "type": "", + "value": "0x75" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "88901:3:10", + "nodeType": "YulIdentifier", + "src": "88901:3:10" + }, + "nativeSrc": "88901:12:10", + "nodeType": "YulFunctionCall", + "src": "88901:12:10" + }, + { + "name": "i", + "nativeSrc": "88915:1:10", + "nodeType": "YulIdentifier", + "src": "88915:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "88897:3:10", + "nodeType": "YulIdentifier", + "src": "88897:3:10" + }, + "nativeSrc": "88897:20:10", + "nodeType": "YulFunctionCall", + "src": "88897:20:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "88933:4:10", + "nodeType": "YulIdentifier", + "src": "88933:4:10" + }, + { + "kind": "number", + "nativeSrc": "88939:4:10", + "nodeType": "YulLiteral", + "src": "88939:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "88929:3:10", + "nodeType": "YulIdentifier", + "src": "88929:3:10" + }, + "nativeSrc": "88929:15:10", + "nodeType": "YulFunctionCall", + "src": "88929:15:10" + }, + { + "name": "i", + "nativeSrc": "88946:1:10", + "nodeType": "YulIdentifier", + "src": "88946:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "88925:3:10", + "nodeType": "YulIdentifier", + "src": "88925:3:10" + }, + "nativeSrc": "88925:23:10", + "nodeType": "YulFunctionCall", + "src": "88925:23:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "88919:5:10", + "nodeType": "YulIdentifier", + "src": "88919:5:10" + }, + "nativeSrc": "88919:30:10", + "nodeType": "YulFunctionCall", + "src": "88919:30:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "88890:6:10", + "nodeType": "YulIdentifier", + "src": "88890:6:10" + }, + "nativeSrc": "88890:60:10", + "nodeType": "YulFunctionCall", + "src": "88890:60:10" + }, + "nativeSrc": "88890:60:10", + "nodeType": "YulExpressionStatement", + "src": "88890:60:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "88844:1:10", + "nodeType": "YulIdentifier", + "src": "88844:1:10" + }, + { + "name": "n", + "nativeSrc": "88847:1:10", + "nodeType": "YulIdentifier", + "src": "88847:1:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "88841:2:10", + "nodeType": "YulIdentifier", + "src": "88841:2:10" + }, + "nativeSrc": "88841:8:10", + "nodeType": "YulFunctionCall", + "src": "88841:8:10" + }, + "nativeSrc": "88822:142:10", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "88850:21:10", + "nodeType": "YulBlock", + "src": "88850:21:10", + "statements": [ + { + "nativeSrc": "88852:17:10", + "nodeType": "YulAssignment", + "src": "88852:17:10", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "88861:1:10", + "nodeType": "YulIdentifier", + "src": "88861:1:10" + }, + { + "kind": "number", + "nativeSrc": "88864:4:10", + "nodeType": "YulLiteral", + "src": "88864:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "88857:3:10", + "nodeType": "YulIdentifier", + "src": "88857:3:10" + }, + "nativeSrc": "88857:12:10", + "nodeType": "YulFunctionCall", + "src": "88857:12:10" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "88852:1:10", + "nodeType": "YulIdentifier", + "src": "88852:1:10" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "88826:14:10", + "nodeType": "YulBlock", + "src": "88826:14:10", + "statements": [ + { + "nativeSrc": "88828:10:10", + "nodeType": "YulVariableDeclaration", + "src": "88828:10:10", + "value": { + "kind": "number", + "nativeSrc": "88837:1:10", + "nodeType": "YulLiteral", + "src": "88837:1:10", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "88832:1:10", + "nodeType": "YulTypedName", + "src": "88832:1:10", + "type": "" + } + ] + } + ] + }, + "src": "88822:142:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "88989:1:10", + "nodeType": "YulIdentifier", + "src": "88989:1:10" + }, + { + "kind": "number", + "nativeSrc": "88992:4:10", + "nodeType": "YulLiteral", + "src": "88992:4:10", + "type": "", + "value": "0x55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "88985:3:10", + "nodeType": "YulIdentifier", + "src": "88985:3:10" + }, + "nativeSrc": "88985:12:10", + "nodeType": "YulFunctionCall", + "src": "88985:12:10" + }, + { + "kind": "number", + "nativeSrc": "88999:66:10", + "nodeType": "YulLiteral", + "src": "88999:66:10", + "type": "", + "value": "0x3d6000803e603e573d6000fd5b3d6000f35b6020600f3d393d51543d52593df3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "88978:6:10", + "nodeType": "YulIdentifier", + "src": "88978:6:10" + }, + "nativeSrc": "88978:88:10", + "nodeType": "YulFunctionCall", + "src": "88978:88:10" + }, + "nativeSrc": "88978:88:10", + "nodeType": "YulExpressionStatement", + "src": "88978:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "89090:1:10", + "nodeType": "YulIdentifier", + "src": "89090:1:10" + }, + { + "kind": "number", + "nativeSrc": "89093:4:10", + "nodeType": "YulLiteral", + "src": "89093:4:10", + "type": "", + "value": "0x35" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "89086:3:10", + "nodeType": "YulIdentifier", + "src": "89086:3:10" + }, + "nativeSrc": "89086:12:10", + "nodeType": "YulFunctionCall", + "src": "89086:12:10" + }, + { + "kind": "number", + "nativeSrc": "89100:66:10", + "nodeType": "YulLiteral", + "src": "89100:66:10", + "type": "", + "value": "0xa13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af4" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "89079:6:10", + "nodeType": "YulIdentifier", + "src": "89079:6:10" + }, + "nativeSrc": "89079:88:10", + "nodeType": "YulFunctionCall", + "src": "89079:88:10" + }, + "nativeSrc": "89079:88:10", + "nodeType": "YulExpressionStatement", + "src": "89079:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "89191:1:10", + "nodeType": "YulIdentifier", + "src": "89191:1:10" + }, + { + "kind": "number", + "nativeSrc": "89194:4:10", + "nodeType": "YulLiteral", + "src": "89194:4:10", + "type": "", + "value": "0x15" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "89187:3:10", + "nodeType": "YulIdentifier", + "src": "89187:3:10" + }, + "nativeSrc": "89187:12:10", + "nodeType": "YulFunctionCall", + "src": "89187:12:10" + }, + { + "kind": "number", + "nativeSrc": "89201:44:10", + "nodeType": "YulLiteral", + "src": "89201:44:10", + "type": "", + "value": "0x5155f3365814604357363d3d373d3d363d7f360894" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "89180:6:10", + "nodeType": "YulIdentifier", + "src": "89180:6:10" + }, + "nativeSrc": "89180:66:10", + "nodeType": "YulFunctionCall", + "src": "89180:66:10" + }, + "nativeSrc": "89180:66:10", + "nodeType": "YulExpressionStatement", + "src": "89180:66:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "89266:4:10", + "nodeType": "YulLiteral", + "src": "89266:4:10", + "type": "", + "value": "0x16" + }, + { + "kind": "number", + "nativeSrc": "89272:6:10", + "nodeType": "YulLiteral", + "src": "89272:6:10", + "type": "", + "value": "0x600f" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "89259:6:10", + "nodeType": "YulIdentifier", + "src": "89259:6:10" + }, + "nativeSrc": "89259:20:10", + "nodeType": "YulFunctionCall", + "src": "89259:20:10" + }, + "nativeSrc": "89259:20:10", + "nodeType": "YulExpressionStatement", + "src": "89259:20:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "89299:4:10", + "nodeType": "YulLiteral", + "src": "89299:4:10", + "type": "", + "value": "0x14" + }, + { + "name": "implementation", + "nativeSrc": "89305:14:10", + "nodeType": "YulIdentifier", + "src": "89305:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "89292:6:10", + "nodeType": "YulIdentifier", + "src": "89292:6:10" + }, + "nativeSrc": "89292:28:10", + "nodeType": "YulFunctionCall", + "src": "89292:28:10" + }, + "nativeSrc": "89292:28:10", + "nodeType": "YulExpressionStatement", + "src": "89292:28:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "89340:4:10", + "nodeType": "YulLiteral", + "src": "89340:4:10", + "type": "", + "value": "0x00" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "89350:22:10", + "nodeType": "YulLiteral", + "src": "89350:22:10", + "type": "", + "value": "0x6100523d8160233d3973" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "89378:2:10", + "nodeType": "YulLiteral", + "src": "89378:2:10", + "type": "", + "value": "56" + }, + { + "name": "n", + "nativeSrc": "89382:1:10", + "nodeType": "YulIdentifier", + "src": "89382:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "89374:3:10", + "nodeType": "YulIdentifier", + "src": "89374:3:10" + }, + "nativeSrc": "89374:10:10", + "nodeType": "YulFunctionCall", + "src": "89374:10:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "89346:3:10", + "nodeType": "YulIdentifier", + "src": "89346:3:10" + }, + "nativeSrc": "89346:39:10", + "nodeType": "YulFunctionCall", + "src": "89346:39:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "89333:6:10", + "nodeType": "YulIdentifier", + "src": "89333:6:10" + }, + "nativeSrc": "89333:53:10", + "nodeType": "YulFunctionCall", + "src": "89333:53:10" + }, + "nativeSrc": "89333:53:10", + "nodeType": "YulExpressionStatement", + "src": "89333:53:10" + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "89406:1:10", + "nodeType": "YulIdentifier", + "src": "89406:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "89415:4:10", + "nodeType": "YulLiteral", + "src": "89415:4:10", + "type": "", + "value": "0x16" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "89409:5:10", + "nodeType": "YulIdentifier", + "src": "89409:5:10" + }, + "nativeSrc": "89409:11:10", + "nodeType": "YulFunctionCall", + "src": "89409:11:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "89399:6:10", + "nodeType": "YulIdentifier", + "src": "89399:6:10" + }, + "nativeSrc": "89399:22:10", + "nodeType": "YulFunctionCall", + "src": "89399:22:10" + }, + "nativeSrc": "89399:22:10", + "nodeType": "YulExpressionStatement", + "src": "89399:22:10" + }, + { + "nativeSrc": "89434:34:10", + "nodeType": "YulAssignment", + "src": "89434:34:10", + "value": { + "arguments": [ + { + "name": "m", + "nativeSrc": "89452:1:10", + "nodeType": "YulIdentifier", + "src": "89452:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "89459:4:10", + "nodeType": "YulLiteral", + "src": "89459:4:10", + "type": "", + "value": "0x75" + }, + { + "name": "n", + "nativeSrc": "89465:1:10", + "nodeType": "YulIdentifier", + "src": "89465:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "89455:3:10", + "nodeType": "YulIdentifier", + "src": "89455:3:10" + }, + "nativeSrc": "89455:12:10", + "nodeType": "YulFunctionCall", + "src": "89455:12:10" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "89442:9:10", + "nodeType": "YulIdentifier", + "src": "89442:9:10" + }, + "nativeSrc": "89442:26:10", + "nodeType": "YulFunctionCall", + "src": "89442:26:10" + }, + "variableNames": [ + { + "name": "hash", + "nativeSrc": "89434:4:10", + "nodeType": "YulIdentifier", + "src": "89434:4:10" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4159, + "isOffset": false, + "isSlot": false, + "src": "88638:4:10", + "valueSize": 1 + }, + { + "declaration": 4159, + "isOffset": false, + "isSlot": false, + "src": "88933:4:10", + "valueSize": 1 + }, + { + "declaration": 4162, + "isOffset": false, + "isSlot": false, + "src": "89434:4:10", + "valueSize": 1 + }, + { + "declaration": 4157, + "isOffset": false, + "isSlot": false, + "src": "89305:14:10", + "valueSize": 1 + } + ], + "id": 4164, + "nodeType": "InlineAssembly", + "src": "88533:945:10" + } + ] + }, + "documentation": { + "id": 4155, + "nodeType": "StructuredDocumentation", + "src": "88239:98:10", + "text": "@dev Returns the initialization code hash of the ERC1967I proxy of `implementation` and `args." + }, + "id": 4166, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeHashERC1967I", + "nameLocation": "88351:20:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4160, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4157, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "88380:14:10", + "nodeType": "VariableDeclaration", + "scope": 4166, + "src": "88372:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4156, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "88372:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4159, + "mutability": "mutable", + "name": "args", + "nameLocation": "88409:4:10", + "nodeType": "VariableDeclaration", + "scope": 4166, + "src": "88396:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4158, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "88396:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "88371:43:10" + }, + "returnParameters": { + "id": 4163, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4162, + "mutability": "mutable", + "name": "hash", + "nameLocation": "88470:4:10", + "nodeType": "VariableDeclaration", + "scope": 4166, + "src": "88462:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4161, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "88462:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "88461:14:10" + }, + "scope": 5104, + "src": "88342:1142:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4195, + "nodeType": "Block", + "src": "89893:145:10", + "statements": [ + { + "assignments": [ + 4181 + ], + "declarations": [ + { + "constant": false, + "id": 4181, + "mutability": "mutable", + "name": "hash", + "nameLocation": "89911:4:10", + "nodeType": "VariableDeclaration", + "scope": 4195, + "src": "89903:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4180, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "89903:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 4186, + "initialValue": { + "arguments": [ + { + "id": 4183, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4169, + "src": "89939:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4184, + "name": "args", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4171, + "src": "89955:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 4182, + "name": "initCodeHashERC1967I", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4006, + 4166 + ], + "referencedDeclaration": 4166, + "src": "89918:20:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (address,bytes memory) pure returns (bytes32)" + } + }, + "id": 4185, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "89918:42:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "89903:57:10" + }, + { + "expression": { + "id": 4193, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4187, + "name": "predicted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4178, + "src": "89970:9:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 4189, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4181, + "src": "90010:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 4190, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4173, + "src": "90016:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 4191, + "name": "deployer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4175, + "src": "90022:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4188, + "name": "predictDeterministicAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3237, + 3510, + 5081 + ], + "referencedDeclaration": 5081, + "src": "89982:27:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_address_$", + "typeString": "function (bytes32,bytes32,address) pure returns (address)" + } + }, + "id": 4192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "89982:49:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "89970:61:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4194, + "nodeType": "ExpressionStatement", + "src": "89970:61:10" + } + ] + }, + "documentation": { + "id": 4167, + "nodeType": "StructuredDocumentation", + "src": "89490:198:10", + "text": "@dev Returns the address of the ERC1967I proxy of `implementation`, `args` with `salt` by `deployer`.\n Note: The returned result has dirty upper 96 bits. Please clean if used in assembly." + }, + "id": 4196, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "predictDeterministicAddressERC1967I", + "nameLocation": "89702:35:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4176, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4169, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "89755:14:10", + "nodeType": "VariableDeclaration", + "scope": 4196, + "src": "89747:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4168, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "89747:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4171, + "mutability": "mutable", + "name": "args", + "nameLocation": "89792:4:10", + "nodeType": "VariableDeclaration", + "scope": 4196, + "src": "89779:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4170, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "89779:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4173, + "mutability": "mutable", + "name": "salt", + "nameLocation": "89814:4:10", + "nodeType": "VariableDeclaration", + "scope": 4196, + "src": "89806:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4172, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "89806:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4175, + "mutability": "mutable", + "name": "deployer", + "nameLocation": "89836:8:10", + "nodeType": "VariableDeclaration", + "scope": 4196, + "src": "89828:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4174, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "89828:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "89737:113:10" + }, + "returnParameters": { + "id": 4179, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4178, + "mutability": "mutable", + "name": "predicted", + "nameLocation": "89882:9:10", + "nodeType": "VariableDeclaration", + "scope": 4196, + "src": "89874:17:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4177, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "89874:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "89873:19:10" + }, + "scope": 5104, + "src": "89693:345:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4205, + "nodeType": "Block", + "src": "90204:371:10", + "statements": [ + { + "AST": { + "nativeSrc": "90266:303:10", + "nodeType": "YulBlock", + "src": "90266:303:10", + "statements": [ + { + "nativeSrc": "90280:19:10", + "nodeType": "YulAssignment", + "src": "90280:19:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "90294:4:10", + "nodeType": "YulLiteral", + "src": "90294:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "90288:5:10", + "nodeType": "YulIdentifier", + "src": "90288:5:10" + }, + "nativeSrc": "90288:11:10", + "nodeType": "YulFunctionCall", + "src": "90288:11:10" + }, + "variableNames": [ + { + "name": "args", + "nativeSrc": "90280:4:10", + "nodeType": "YulIdentifier", + "src": "90280:4:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "args", + "nativeSrc": "90319:4:10", + "nodeType": "YulIdentifier", + "src": "90319:4:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "90329:12:10", + "nodeType": "YulLiteral", + "src": "90329:12:10", + "type": "", + "value": "0xffffffffff" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "90359:8:10", + "nodeType": "YulIdentifier", + "src": "90359:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "90347:11:10", + "nodeType": "YulIdentifier", + "src": "90347:11:10" + }, + "nativeSrc": "90347:21:10", + "nodeType": "YulFunctionCall", + "src": "90347:21:10" + }, + { + "kind": "number", + "nativeSrc": "90370:4:10", + "nodeType": "YulLiteral", + "src": "90370:4:10", + "type": "", + "value": "0x52" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "90343:3:10", + "nodeType": "YulIdentifier", + "src": "90343:3:10" + }, + "nativeSrc": "90343:32:10", + "nodeType": "YulFunctionCall", + "src": "90343:32:10" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "90325:3:10", + "nodeType": "YulIdentifier", + "src": "90325:3:10" + }, + "nativeSrc": "90325:51:10", + "nodeType": "YulFunctionCall", + "src": "90325:51:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "90312:6:10", + "nodeType": "YulIdentifier", + "src": "90312:6:10" + }, + "nativeSrc": "90312:65:10", + "nodeType": "YulFunctionCall", + "src": "90312:65:10" + }, + "nativeSrc": "90312:65:10", + "nodeType": "YulExpressionStatement", + "src": "90312:65:10" + }, + { + "expression": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "90423:8:10", + "nodeType": "YulIdentifier", + "src": "90423:8:10" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "90437:4:10", + "nodeType": "YulIdentifier", + "src": "90437:4:10" + }, + { + "kind": "number", + "nativeSrc": "90443:4:10", + "nodeType": "YulLiteral", + "src": "90443:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "90433:3:10", + "nodeType": "YulIdentifier", + "src": "90433:3:10" + }, + "nativeSrc": "90433:15:10", + "nodeType": "YulFunctionCall", + "src": "90433:15:10" + }, + { + "kind": "number", + "nativeSrc": "90450:4:10", + "nodeType": "YulLiteral", + "src": "90450:4:10", + "type": "", + "value": "0x52" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "90466:4:10", + "nodeType": "YulIdentifier", + "src": "90466:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "90460:5:10", + "nodeType": "YulIdentifier", + "src": "90460:5:10" + }, + "nativeSrc": "90460:11:10", + "nodeType": "YulFunctionCall", + "src": "90460:11:10" + }, + { + "kind": "number", + "nativeSrc": "90473:4:10", + "nodeType": "YulLiteral", + "src": "90473:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "90456:3:10", + "nodeType": "YulIdentifier", + "src": "90456:3:10" + }, + "nativeSrc": "90456:22:10", + "nodeType": "YulFunctionCall", + "src": "90456:22:10" + } + ], + "functionName": { + "name": "extcodecopy", + "nativeSrc": "90411:11:10", + "nodeType": "YulIdentifier", + "src": "90411:11:10" + }, + "nativeSrc": "90411:68:10", + "nodeType": "YulFunctionCall", + "src": "90411:68:10" + }, + "nativeSrc": "90411:68:10", + "nodeType": "YulExpressionStatement", + "src": "90411:68:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "90499:4:10", + "nodeType": "YulLiteral", + "src": "90499:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "90515:4:10", + "nodeType": "YulIdentifier", + "src": "90515:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "90509:5:10", + "nodeType": "YulIdentifier", + "src": "90509:5:10" + }, + "nativeSrc": "90509:11:10", + "nodeType": "YulFunctionCall", + "src": "90509:11:10" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "90526:4:10", + "nodeType": "YulIdentifier", + "src": "90526:4:10" + }, + { + "kind": "number", + "nativeSrc": "90532:4:10", + "nodeType": "YulLiteral", + "src": "90532:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "90522:3:10", + "nodeType": "YulIdentifier", + "src": "90522:3:10" + }, + "nativeSrc": "90522:15:10", + "nodeType": "YulFunctionCall", + "src": "90522:15:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "90505:3:10", + "nodeType": "YulIdentifier", + "src": "90505:3:10" + }, + "nativeSrc": "90505:33:10", + "nodeType": "YulFunctionCall", + "src": "90505:33:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "90492:6:10", + "nodeType": "YulIdentifier", + "src": "90492:6:10" + }, + "nativeSrc": "90492:47:10", + "nodeType": "YulFunctionCall", + "src": "90492:47:10" + }, + "nativeSrc": "90492:47:10", + "nodeType": "YulExpressionStatement", + "src": "90492:47:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4202, + "isOffset": false, + "isSlot": false, + "src": "90280:4:10", + "valueSize": 1 + }, + { + "declaration": 4202, + "isOffset": false, + "isSlot": false, + "src": "90319:4:10", + "valueSize": 1 + }, + { + "declaration": 4202, + "isOffset": false, + "isSlot": false, + "src": "90437:4:10", + "valueSize": 1 + }, + { + "declaration": 4202, + "isOffset": false, + "isSlot": false, + "src": "90466:4:10", + "valueSize": 1 + }, + { + "declaration": 4202, + "isOffset": false, + "isSlot": false, + "src": "90515:4:10", + "valueSize": 1 + }, + { + "declaration": 4202, + "isOffset": false, + "isSlot": false, + "src": "90526:4:10", + "valueSize": 1 + }, + { + "declaration": 4199, + "isOffset": false, + "isSlot": false, + "src": "90359:8:10", + "valueSize": 1 + }, + { + "declaration": 4199, + "isOffset": false, + "isSlot": false, + "src": "90423:8:10", + "valueSize": 1 + } + ], + "id": 4204, + "nodeType": "InlineAssembly", + "src": "90257:312:10" + } + ] + }, + "documentation": { + "id": 4197, + "nodeType": "StructuredDocumentation", + "src": "90044:71:10", + "text": "@dev Equivalent to `argsOnERC1967I(instance, start, 2 ** 256 - 1)`." + }, + "id": 4206, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "argsOnERC1967I", + "nameLocation": "90129:14:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4200, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4199, + "mutability": "mutable", + "name": "instance", + "nameLocation": "90152:8:10", + "nodeType": "VariableDeclaration", + "scope": 4206, + "src": "90144:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4198, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "90144:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "90143:18:10" + }, + "returnParameters": { + "id": 4203, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4202, + "mutability": "mutable", + "name": "args", + "nameLocation": "90198:4:10", + "nodeType": "VariableDeclaration", + "scope": 4206, + "src": "90185:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4201, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "90185:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "90184:19:10" + }, + "scope": 5104, + "src": "90120:455:10", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4217, + "nodeType": "Block", + "src": "90784:485:10", + "statements": [ + { + "AST": { + "nativeSrc": "90846:417:10", + "nodeType": "YulBlock", + "src": "90846:417:10", + "statements": [ + { + "nativeSrc": "90860:19:10", + "nodeType": "YulAssignment", + "src": "90860:19:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "90874:4:10", + "nodeType": "YulLiteral", + "src": "90874:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "90868:5:10", + "nodeType": "YulIdentifier", + "src": "90868:5:10" + }, + "nativeSrc": "90868:11:10", + "nodeType": "YulFunctionCall", + "src": "90868:11:10" + }, + "variableNames": [ + { + "name": "args", + "nativeSrc": "90860:4:10", + "nodeType": "YulIdentifier", + "src": "90860:4:10" + } + ] + }, + { + "nativeSrc": "90892:60:10", + "nodeType": "YulVariableDeclaration", + "src": "90892:60:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "90905:12:10", + "nodeType": "YulLiteral", + "src": "90905:12:10", + "type": "", + "value": "0xffffffffff" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "90935:8:10", + "nodeType": "YulIdentifier", + "src": "90935:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "90923:11:10", + "nodeType": "YulIdentifier", + "src": "90923:11:10" + }, + "nativeSrc": "90923:21:10", + "nodeType": "YulFunctionCall", + "src": "90923:21:10" + }, + { + "kind": "number", + "nativeSrc": "90946:4:10", + "nodeType": "YulLiteral", + "src": "90946:4:10", + "type": "", + "value": "0x52" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "90919:3:10", + "nodeType": "YulIdentifier", + "src": "90919:3:10" + }, + "nativeSrc": "90919:32:10", + "nodeType": "YulFunctionCall", + "src": "90919:32:10" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "90901:3:10", + "nodeType": "YulIdentifier", + "src": "90901:3:10" + }, + "nativeSrc": "90901:51:10", + "nodeType": "YulFunctionCall", + "src": "90901:51:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "90896:1:10", + "nodeType": "YulTypedName", + "src": "90896:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "90965:56:10", + "nodeType": "YulVariableDeclaration", + "src": "90965:56:10", + "value": { + "arguments": [ + { + "name": "n", + "nativeSrc": "90978:1:10", + "nodeType": "YulIdentifier", + "src": "90978:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "90985:8:10", + "nodeType": "YulLiteral", + "src": "90985:8:10", + "type": "", + "value": "0xffffff" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "start", + "nativeSrc": "91002:5:10", + "nodeType": "YulIdentifier", + "src": "91002:5:10" + }, + { + "name": "n", + "nativeSrc": "91009:1:10", + "nodeType": "YulIdentifier", + "src": "91009:1:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "90999:2:10", + "nodeType": "YulIdentifier", + "src": "90999:2:10" + }, + "nativeSrc": "90999:12:10", + "nodeType": "YulFunctionCall", + "src": "90999:12:10" + }, + { + "name": "start", + "nativeSrc": "91013:5:10", + "nodeType": "YulIdentifier", + "src": "91013:5:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "90995:3:10", + "nodeType": "YulIdentifier", + "src": "90995:3:10" + }, + "nativeSrc": "90995:24:10", + "nodeType": "YulFunctionCall", + "src": "90995:24:10" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "90981:3:10", + "nodeType": "YulIdentifier", + "src": "90981:3:10" + }, + "nativeSrc": "90981:39:10", + "nodeType": "YulFunctionCall", + "src": "90981:39:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "90974:3:10", + "nodeType": "YulIdentifier", + "src": "90974:3:10" + }, + "nativeSrc": "90974:47:10", + "nodeType": "YulFunctionCall", + "src": "90974:47:10" + }, + "variables": [ + { + "name": "l", + "nativeSrc": "90969:1:10", + "nodeType": "YulTypedName", + "src": "90969:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "91046:8:10", + "nodeType": "YulIdentifier", + "src": "91046:8:10" + }, + { + "name": "args", + "nativeSrc": "91056:4:10", + "nodeType": "YulIdentifier", + "src": "91056:4:10" + }, + { + "arguments": [ + { + "name": "start", + "nativeSrc": "91066:5:10", + "nodeType": "YulIdentifier", + "src": "91066:5:10" + }, + { + "kind": "number", + "nativeSrc": "91073:4:10", + "nodeType": "YulLiteral", + "src": "91073:4:10", + "type": "", + "value": "0x32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "91062:3:10", + "nodeType": "YulIdentifier", + "src": "91062:3:10" + }, + "nativeSrc": "91062:16:10", + "nodeType": "YulFunctionCall", + "src": "91062:16:10" + }, + { + "arguments": [ + { + "name": "l", + "nativeSrc": "91084:1:10", + "nodeType": "YulIdentifier", + "src": "91084:1:10" + }, + { + "kind": "number", + "nativeSrc": "91087:4:10", + "nodeType": "YulLiteral", + "src": "91087:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "91080:3:10", + "nodeType": "YulIdentifier", + "src": "91080:3:10" + }, + "nativeSrc": "91080:12:10", + "nodeType": "YulFunctionCall", + "src": "91080:12:10" + } + ], + "functionName": { + "name": "extcodecopy", + "nativeSrc": "91034:11:10", + "nodeType": "YulIdentifier", + "src": "91034:11:10" + }, + "nativeSrc": "91034:59:10", + "nodeType": "YulFunctionCall", + "src": "91034:59:10" + }, + "nativeSrc": "91034:59:10", + "nodeType": "YulExpressionStatement", + "src": "91034:59:10" + }, + { + "expression": { + "arguments": [ + { + "name": "args", + "nativeSrc": "91113:4:10", + "nodeType": "YulIdentifier", + "src": "91113:4:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "n", + "nativeSrc": "91127:1:10", + "nodeType": "YulIdentifier", + "src": "91127:1:10" + }, + { + "name": "start", + "nativeSrc": "91130:5:10", + "nodeType": "YulIdentifier", + "src": "91130:5:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "91123:3:10", + "nodeType": "YulIdentifier", + "src": "91123:3:10" + }, + "nativeSrc": "91123:13:10", + "nodeType": "YulFunctionCall", + "src": "91123:13:10" + }, + { + "arguments": [ + { + "name": "start", + "nativeSrc": "91141:5:10", + "nodeType": "YulIdentifier", + "src": "91141:5:10" + }, + { + "name": "n", + "nativeSrc": "91148:1:10", + "nodeType": "YulIdentifier", + "src": "91148:1:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "91138:2:10", + "nodeType": "YulIdentifier", + "src": "91138:2:10" + }, + "nativeSrc": "91138:12:10", + "nodeType": "YulFunctionCall", + "src": "91138:12:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "91119:3:10", + "nodeType": "YulIdentifier", + "src": "91119:3:10" + }, + "nativeSrc": "91119:32:10", + "nodeType": "YulFunctionCall", + "src": "91119:32:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "91106:6:10", + "nodeType": "YulIdentifier", + "src": "91106:6:10" + }, + "nativeSrc": "91106:46:10", + "nodeType": "YulFunctionCall", + "src": "91106:46:10" + }, + "nativeSrc": "91106:46:10", + "nodeType": "YulExpressionStatement", + "src": "91106:46:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "91193:4:10", + "nodeType": "YulLiteral", + "src": "91193:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "91209:4:10", + "nodeType": "YulIdentifier", + "src": "91209:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "91203:5:10", + "nodeType": "YulIdentifier", + "src": "91203:5:10" + }, + "nativeSrc": "91203:11:10", + "nodeType": "YulFunctionCall", + "src": "91203:11:10" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "91220:4:10", + "nodeType": "YulIdentifier", + "src": "91220:4:10" + }, + { + "kind": "number", + "nativeSrc": "91226:4:10", + "nodeType": "YulLiteral", + "src": "91226:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "91216:3:10", + "nodeType": "YulIdentifier", + "src": "91216:3:10" + }, + "nativeSrc": "91216:15:10", + "nodeType": "YulFunctionCall", + "src": "91216:15:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "91199:3:10", + "nodeType": "YulIdentifier", + "src": "91199:3:10" + }, + "nativeSrc": "91199:33:10", + "nodeType": "YulFunctionCall", + "src": "91199:33:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "91186:6:10", + "nodeType": "YulIdentifier", + "src": "91186:6:10" + }, + "nativeSrc": "91186:47:10", + "nodeType": "YulFunctionCall", + "src": "91186:47:10" + }, + "nativeSrc": "91186:47:10", + "nodeType": "YulExpressionStatement", + "src": "91186:47:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4214, + "isOffset": false, + "isSlot": false, + "src": "90860:4:10", + "valueSize": 1 + }, + { + "declaration": 4214, + "isOffset": false, + "isSlot": false, + "src": "91056:4:10", + "valueSize": 1 + }, + { + "declaration": 4214, + "isOffset": false, + "isSlot": false, + "src": "91113:4:10", + "valueSize": 1 + }, + { + "declaration": 4214, + "isOffset": false, + "isSlot": false, + "src": "91209:4:10", + "valueSize": 1 + }, + { + "declaration": 4214, + "isOffset": false, + "isSlot": false, + "src": "91220:4:10", + "valueSize": 1 + }, + { + "declaration": 4209, + "isOffset": false, + "isSlot": false, + "src": "90935:8:10", + "valueSize": 1 + }, + { + "declaration": 4209, + "isOffset": false, + "isSlot": false, + "src": "91046:8:10", + "valueSize": 1 + }, + { + "declaration": 4211, + "isOffset": false, + "isSlot": false, + "src": "91002:5:10", + "valueSize": 1 + }, + { + "declaration": 4211, + "isOffset": false, + "isSlot": false, + "src": "91013:5:10", + "valueSize": 1 + }, + { + "declaration": 4211, + "isOffset": false, + "isSlot": false, + "src": "91066:5:10", + "valueSize": 1 + }, + { + "declaration": 4211, + "isOffset": false, + "isSlot": false, + "src": "91130:5:10", + "valueSize": 1 + }, + { + "declaration": 4211, + "isOffset": false, + "isSlot": false, + "src": "91141:5:10", + "valueSize": 1 + } + ], + "id": 4216, + "nodeType": "InlineAssembly", + "src": "90837:426:10" + } + ] + }, + "documentation": { + "id": 4207, + "nodeType": "StructuredDocumentation", + "src": "90581:71:10", + "text": "@dev Equivalent to `argsOnERC1967I(instance, start, 2 ** 256 - 1)`." + }, + "id": 4218, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "argsOnERC1967I", + "nameLocation": "90666:14:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4212, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4209, + "mutability": "mutable", + "name": "instance", + "nameLocation": "90689:8:10", + "nodeType": "VariableDeclaration", + "scope": 4218, + "src": "90681:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4208, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "90681:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4211, + "mutability": "mutable", + "name": "start", + "nameLocation": "90707:5:10", + "nodeType": "VariableDeclaration", + "scope": 4218, + "src": "90699:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4210, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "90699:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "90680:33:10" + }, + "returnParameters": { + "id": 4215, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4214, + "mutability": "mutable", + "name": "args", + "nameLocation": "90774:4:10", + "nodeType": "VariableDeclaration", + "scope": 4218, + "src": "90761:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4213, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "90761:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "90760:19:10" + }, + "scope": 5104, + "src": "90657:612:10", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4231, + "nodeType": "Block", + "src": "91781:785:10", + "statements": [ + { + "AST": { + "nativeSrc": "91843:717:10", + "nodeType": "YulBlock", + "src": "91843:717:10", + "statements": [ + { + "nativeSrc": "91857:19:10", + "nodeType": "YulAssignment", + "src": "91857:19:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "91871:4:10", + "nodeType": "YulLiteral", + "src": "91871:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "91865:5:10", + "nodeType": "YulIdentifier", + "src": "91865:5:10" + }, + "nativeSrc": "91865:11:10", + "nodeType": "YulFunctionCall", + "src": "91865:11:10" + }, + "variableNames": [ + { + "name": "args", + "nativeSrc": "91857:4:10", + "nodeType": "YulIdentifier", + "src": "91857:4:10" + } + ] + }, + { + "body": { + "nativeSrc": "91916:17:10", + "nodeType": "YulBlock", + "src": "91916:17:10", + "statements": [ + { + "nativeSrc": "91918:13:10", + "nodeType": "YulAssignment", + "src": "91918:13:10", + "value": { + "kind": "number", + "nativeSrc": "91925:6:10", + "nodeType": "YulLiteral", + "src": "91925:6:10", + "type": "", + "value": "0xffff" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "91918:3:10", + "nodeType": "YulIdentifier", + "src": "91918:3:10" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "end", + "nativeSrc": "91902:3:10", + "nodeType": "YulIdentifier", + "src": "91902:3:10" + }, + { + "kind": "number", + "nativeSrc": "91907:6:10", + "nodeType": "YulLiteral", + "src": "91907:6:10", + "type": "", + "value": "0xffff" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "91899:2:10", + "nodeType": "YulIdentifier", + "src": "91899:2:10" + }, + "nativeSrc": "91899:15:10", + "nodeType": "YulFunctionCall", + "src": "91899:15:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "91892:6:10", + "nodeType": "YulIdentifier", + "src": "91892:6:10" + }, + "nativeSrc": "91892:23:10", + "nodeType": "YulFunctionCall", + "src": "91892:23:10" + }, + "nativeSrc": "91889:44:10", + "nodeType": "YulIf", + "src": "91889:44:10" + }, + { + "nativeSrc": "91946:45:10", + "nodeType": "YulVariableDeclaration", + "src": "91946:45:10", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "end", + "nativeSrc": "91963:3:10", + "nodeType": "YulIdentifier", + "src": "91963:3:10" + }, + { + "name": "start", + "nativeSrc": "91968:5:10", + "nodeType": "YulIdentifier", + "src": "91968:5:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "91959:3:10", + "nodeType": "YulIdentifier", + "src": "91959:3:10" + }, + "nativeSrc": "91959:15:10", + "nodeType": "YulFunctionCall", + "src": "91959:15:10" + }, + { + "arguments": [ + { + "name": "start", + "nativeSrc": "91979:5:10", + "nodeType": "YulIdentifier", + "src": "91979:5:10" + }, + { + "name": "end", + "nativeSrc": "91986:3:10", + "nodeType": "YulIdentifier", + "src": "91986:3:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "91976:2:10", + "nodeType": "YulIdentifier", + "src": "91976:2:10" + }, + "nativeSrc": "91976:14:10", + "nodeType": "YulFunctionCall", + "src": "91976:14:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "91955:3:10", + "nodeType": "YulIdentifier", + "src": "91955:3:10" + }, + "nativeSrc": "91955:36:10", + "nodeType": "YulFunctionCall", + "src": "91955:36:10" + }, + "variables": [ + { + "name": "d", + "nativeSrc": "91950:1:10", + "nodeType": "YulTypedName", + "src": "91950:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "92016:8:10", + "nodeType": "YulIdentifier", + "src": "92016:8:10" + }, + { + "name": "args", + "nativeSrc": "92026:4:10", + "nodeType": "YulIdentifier", + "src": "92026:4:10" + }, + { + "arguments": [ + { + "name": "start", + "nativeSrc": "92036:5:10", + "nodeType": "YulIdentifier", + "src": "92036:5:10" + }, + { + "kind": "number", + "nativeSrc": "92043:4:10", + "nodeType": "YulLiteral", + "src": "92043:4:10", + "type": "", + "value": "0x32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "92032:3:10", + "nodeType": "YulIdentifier", + "src": "92032:3:10" + }, + "nativeSrc": "92032:16:10", + "nodeType": "YulFunctionCall", + "src": "92032:16:10" + }, + { + "arguments": [ + { + "name": "d", + "nativeSrc": "92054:1:10", + "nodeType": "YulIdentifier", + "src": "92054:1:10" + }, + { + "kind": "number", + "nativeSrc": "92057:4:10", + "nodeType": "YulLiteral", + "src": "92057:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "92050:3:10", + "nodeType": "YulIdentifier", + "src": "92050:3:10" + }, + "nativeSrc": "92050:12:10", + "nodeType": "YulFunctionCall", + "src": "92050:12:10" + } + ], + "functionName": { + "name": "extcodecopy", + "nativeSrc": "92004:11:10", + "nodeType": "YulIdentifier", + "src": "92004:11:10" + }, + "nativeSrc": "92004:59:10", + "nodeType": "YulFunctionCall", + "src": "92004:59:10" + }, + "nativeSrc": "92004:59:10", + "nodeType": "YulExpressionStatement", + "src": "92004:59:10" + }, + { + "body": { + "nativeSrc": "92118:229:10", + "nodeType": "YulBlock", + "src": "92118:229:10", + "statements": [ + { + "nativeSrc": "92136:41:10", + "nodeType": "YulVariableDeclaration", + "src": "92136:41:10", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "92161:8:10", + "nodeType": "YulIdentifier", + "src": "92161:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "92149:11:10", + "nodeType": "YulIdentifier", + "src": "92149:11:10" + }, + "nativeSrc": "92149:21:10", + "nodeType": "YulFunctionCall", + "src": "92149:21:10" + }, + { + "kind": "number", + "nativeSrc": "92172:4:10", + "nodeType": "YulLiteral", + "src": "92172:4:10", + "type": "", + "value": "0x52" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "92145:3:10", + "nodeType": "YulIdentifier", + "src": "92145:3:10" + }, + "nativeSrc": "92145:32:10", + "nodeType": "YulFunctionCall", + "src": "92145:32:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "92140:1:10", + "nodeType": "YulTypedName", + "src": "92140:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "92209:14:10", + "nodeType": "YulIdentifier", + "src": "92209:14:10" + }, + "nativeSrc": "92209:16:10", + "nodeType": "YulFunctionCall", + "src": "92209:16:10" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "92227:14:10", + "nodeType": "YulIdentifier", + "src": "92227:14:10" + }, + "nativeSrc": "92227:16:10", + "nodeType": "YulFunctionCall", + "src": "92227:16:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "92249:2:10", + "nodeType": "YulLiteral", + "src": "92249:2:10", + "type": "", + "value": "40" + }, + { + "name": "n", + "nativeSrc": "92253:1:10", + "nodeType": "YulIdentifier", + "src": "92253:1:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "92245:3:10", + "nodeType": "YulIdentifier", + "src": "92245:3:10" + }, + "nativeSrc": "92245:10:10", + "nodeType": "YulFunctionCall", + "src": "92245:10:10" + } + ], + "functionName": { + "name": "returndatacopy", + "nativeSrc": "92194:14:10", + "nodeType": "YulIdentifier", + "src": "92194:14:10" + }, + "nativeSrc": "92194:62:10", + "nodeType": "YulFunctionCall", + "src": "92194:62:10" + }, + "nativeSrc": "92194:62:10", + "nodeType": "YulExpressionStatement", + "src": "92194:62:10" + }, + { + "nativeSrc": "92273:60:10", + "nodeType": "YulAssignment", + "src": "92273:60:10", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "n", + "nativeSrc": "92285:1:10", + "nodeType": "YulIdentifier", + "src": "92285:1:10" + }, + { + "name": "start", + "nativeSrc": "92288:5:10", + "nodeType": "YulIdentifier", + "src": "92288:5:10" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "92282:2:10", + "nodeType": "YulIdentifier", + "src": "92282:2:10" + }, + "nativeSrc": "92282:12:10", + "nodeType": "YulFunctionCall", + "src": "92282:12:10" + }, + { + "arguments": [ + { + "name": "d", + "nativeSrc": "92300:1:10", + "nodeType": "YulIdentifier", + "src": "92300:1:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "end", + "nativeSrc": "92310:3:10", + "nodeType": "YulIdentifier", + "src": "92310:3:10" + }, + { + "name": "n", + "nativeSrc": "92315:1:10", + "nodeType": "YulIdentifier", + "src": "92315:1:10" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "92307:2:10", + "nodeType": "YulIdentifier", + "src": "92307:2:10" + }, + "nativeSrc": "92307:10:10", + "nodeType": "YulFunctionCall", + "src": "92307:10:10" + }, + { + "arguments": [ + { + "name": "end", + "nativeSrc": "92323:3:10", + "nodeType": "YulIdentifier", + "src": "92323:3:10" + }, + { + "name": "n", + "nativeSrc": "92328:1:10", + "nodeType": "YulIdentifier", + "src": "92328:1:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "92319:3:10", + "nodeType": "YulIdentifier", + "src": "92319:3:10" + }, + "nativeSrc": "92319:11:10", + "nodeType": "YulFunctionCall", + "src": "92319:11:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "92303:3:10", + "nodeType": "YulIdentifier", + "src": "92303:3:10" + }, + "nativeSrc": "92303:28:10", + "nodeType": "YulFunctionCall", + "src": "92303:28:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "92296:3:10", + "nodeType": "YulIdentifier", + "src": "92296:3:10" + }, + "nativeSrc": "92296:36:10", + "nodeType": "YulFunctionCall", + "src": "92296:36:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "92278:3:10", + "nodeType": "YulIdentifier", + "src": "92278:3:10" + }, + "nativeSrc": "92278:55:10", + "nodeType": "YulFunctionCall", + "src": "92278:55:10" + }, + "variableNames": [ + { + "name": "d", + "nativeSrc": "92273:1:10", + "nodeType": "YulIdentifier", + "src": "92273:1:10" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "92090:4:10", + "nodeType": "YulLiteral", + "src": "92090:4:10", + "type": "", + "value": "0xff" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "92106:4:10", + "nodeType": "YulIdentifier", + "src": "92106:4:10" + }, + { + "name": "d", + "nativeSrc": "92112:1:10", + "nodeType": "YulIdentifier", + "src": "92112:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "92102:3:10", + "nodeType": "YulIdentifier", + "src": "92102:3:10" + }, + "nativeSrc": "92102:12:10", + "nodeType": "YulFunctionCall", + "src": "92102:12:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "92096:5:10", + "nodeType": "YulIdentifier", + "src": "92096:5:10" + }, + "nativeSrc": "92096:19:10", + "nodeType": "YulFunctionCall", + "src": "92096:19:10" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "92086:3:10", + "nodeType": "YulIdentifier", + "src": "92086:3:10" + }, + "nativeSrc": "92086:30:10", + "nodeType": "YulFunctionCall", + "src": "92086:30:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "92079:6:10", + "nodeType": "YulIdentifier", + "src": "92079:6:10" + }, + "nativeSrc": "92079:38:10", + "nodeType": "YulFunctionCall", + "src": "92079:38:10" + }, + "nativeSrc": "92076:271:10", + "nodeType": "YulIf", + "src": "92076:271:10" + }, + { + "expression": { + "arguments": [ + { + "name": "args", + "nativeSrc": "92367:4:10", + "nodeType": "YulIdentifier", + "src": "92367:4:10" + }, + { + "name": "d", + "nativeSrc": "92373:1:10", + "nodeType": "YulIdentifier", + "src": "92373:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "92360:6:10", + "nodeType": "YulIdentifier", + "src": "92360:6:10" + }, + "nativeSrc": "92360:15:10", + "nodeType": "YulFunctionCall", + "src": "92360:15:10" + }, + "nativeSrc": "92360:15:10", + "nodeType": "YulExpressionStatement", + "src": "92360:15:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "92424:4:10", + "nodeType": "YulIdentifier", + "src": "92424:4:10" + }, + { + "kind": "number", + "nativeSrc": "92430:4:10", + "nodeType": "YulLiteral", + "src": "92430:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "92420:3:10", + "nodeType": "YulIdentifier", + "src": "92420:3:10" + }, + "nativeSrc": "92420:15:10", + "nodeType": "YulFunctionCall", + "src": "92420:15:10" + }, + { + "name": "d", + "nativeSrc": "92437:1:10", + "nodeType": "YulIdentifier", + "src": "92437:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "92416:3:10", + "nodeType": "YulIdentifier", + "src": "92416:3:10" + }, + "nativeSrc": "92416:23:10", + "nodeType": "YulFunctionCall", + "src": "92416:23:10" + }, + { + "kind": "number", + "nativeSrc": "92441:1:10", + "nodeType": "YulLiteral", + "src": "92441:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "92409:6:10", + "nodeType": "YulIdentifier", + "src": "92409:6:10" + }, + "nativeSrc": "92409:34:10", + "nodeType": "YulFunctionCall", + "src": "92409:34:10" + }, + "nativeSrc": "92409:34:10", + "nodeType": "YulExpressionStatement", + "src": "92409:34:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "92500:4:10", + "nodeType": "YulLiteral", + "src": "92500:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "92514:4:10", + "nodeType": "YulIdentifier", + "src": "92514:4:10" + }, + { + "kind": "number", + "nativeSrc": "92520:4:10", + "nodeType": "YulLiteral", + "src": "92520:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "92510:3:10", + "nodeType": "YulIdentifier", + "src": "92510:3:10" + }, + "nativeSrc": "92510:15:10", + "nodeType": "YulFunctionCall", + "src": "92510:15:10" + }, + { + "name": "d", + "nativeSrc": "92527:1:10", + "nodeType": "YulIdentifier", + "src": "92527:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "92506:3:10", + "nodeType": "YulIdentifier", + "src": "92506:3:10" + }, + "nativeSrc": "92506:23:10", + "nodeType": "YulFunctionCall", + "src": "92506:23:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "92493:6:10", + "nodeType": "YulIdentifier", + "src": "92493:6:10" + }, + "nativeSrc": "92493:37:10", + "nodeType": "YulFunctionCall", + "src": "92493:37:10" + }, + "nativeSrc": "92493:37:10", + "nodeType": "YulExpressionStatement", + "src": "92493:37:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4228, + "isOffset": false, + "isSlot": false, + "src": "91857:4:10", + "valueSize": 1 + }, + { + "declaration": 4228, + "isOffset": false, + "isSlot": false, + "src": "92026:4:10", + "valueSize": 1 + }, + { + "declaration": 4228, + "isOffset": false, + "isSlot": false, + "src": "92106:4:10", + "valueSize": 1 + }, + { + "declaration": 4228, + "isOffset": false, + "isSlot": false, + "src": "92367:4:10", + "valueSize": 1 + }, + { + "declaration": 4228, + "isOffset": false, + "isSlot": false, + "src": "92424:4:10", + "valueSize": 1 + }, + { + "declaration": 4228, + "isOffset": false, + "isSlot": false, + "src": "92514:4:10", + "valueSize": 1 + }, + { + "declaration": 4225, + "isOffset": false, + "isSlot": false, + "src": "91902:3:10", + "valueSize": 1 + }, + { + "declaration": 4225, + "isOffset": false, + "isSlot": false, + "src": "91918:3:10", + "valueSize": 1 + }, + { + "declaration": 4225, + "isOffset": false, + "isSlot": false, + "src": "91963:3:10", + "valueSize": 1 + }, + { + "declaration": 4225, + "isOffset": false, + "isSlot": false, + "src": "91986:3:10", + "valueSize": 1 + }, + { + "declaration": 4225, + "isOffset": false, + "isSlot": false, + "src": "92310:3:10", + "valueSize": 1 + }, + { + "declaration": 4225, + "isOffset": false, + "isSlot": false, + "src": "92323:3:10", + "valueSize": 1 + }, + { + "declaration": 4221, + "isOffset": false, + "isSlot": false, + "src": "92016:8:10", + "valueSize": 1 + }, + { + "declaration": 4221, + "isOffset": false, + "isSlot": false, + "src": "92161:8:10", + "valueSize": 1 + }, + { + "declaration": 4223, + "isOffset": false, + "isSlot": false, + "src": "91968:5:10", + "valueSize": 1 + }, + { + "declaration": 4223, + "isOffset": false, + "isSlot": false, + "src": "91979:5:10", + "valueSize": 1 + }, + { + "declaration": 4223, + "isOffset": false, + "isSlot": false, + "src": "92036:5:10", + "valueSize": 1 + }, + { + "declaration": 4223, + "isOffset": false, + "isSlot": false, + "src": "92288:5:10", + "valueSize": 1 + } + ], + "id": 4230, + "nodeType": "InlineAssembly", + "src": "91834:726:10" + } + ] + }, + "documentation": { + "id": 4219, + "nodeType": "StructuredDocumentation", + "src": "91275:361:10", + "text": "@dev Returns a slice of the immutable arguments on `instance` from `start` to `end`.\n `start` and `end` will be clamped to the range `[0, args.length]`.\n The `instance` MUST be deployed via the ERC1967 with immutable args functions.\n Otherwise, the behavior is undefined.\n Out-of-gas reverts if `instance` does not have any code." + }, + "id": 4232, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "argsOnERC1967I", + "nameLocation": "91650:14:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4226, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4221, + "mutability": "mutable", + "name": "instance", + "nameLocation": "91673:8:10", + "nodeType": "VariableDeclaration", + "scope": 4232, + "src": "91665:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4220, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "91665:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4223, + "mutability": "mutable", + "name": "start", + "nameLocation": "91691:5:10", + "nodeType": "VariableDeclaration", + "scope": 4232, + "src": "91683:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4222, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "91683:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4225, + "mutability": "mutable", + "name": "end", + "nameLocation": "91706:3:10", + "nodeType": "VariableDeclaration", + "scope": 4232, + "src": "91698:11:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4224, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "91698:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "91664:46:10" + }, + "returnParameters": { + "id": 4229, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4228, + "mutability": "mutable", + "name": "args", + "nameLocation": "91771:4:10", + "nodeType": "VariableDeclaration", + "scope": 4232, + "src": "91758:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4227, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "91758:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "91757:19:10" + }, + "scope": 5104, + "src": "91641:925:10", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4245, + "nodeType": "Block", + "src": "93444:55:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 4241, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "93486:4:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_LibClone_$5104", + "typeString": "library LibClone" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_LibClone_$5104", + "typeString": "library LibClone" + } + ], + "id": 4240, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "93478:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4239, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "93478:7:10", + "typeDescriptions": {} + } + }, + "id": 4242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "93478:13:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4238, + "name": "erc1967Bootstrap", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4246, + 4278 + ], + "referencedDeclaration": 4278, + "src": "93461:16:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$_t_address_$", + "typeString": "function (address) returns (address)" + } + }, + "id": 4243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "93461:31:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 4237, + "id": 4244, + "nodeType": "Return", + "src": "93454:38:10" + } + ] + }, + "documentation": { + "id": 4233, + "nodeType": "StructuredDocumentation", + "src": "93317:67:10", + "text": "@dev Deploys the ERC1967 bootstrap if it has not been deployed." + }, + "id": 4246, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "erc1967Bootstrap", + "nameLocation": "93398:16:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4234, + "nodeType": "ParameterList", + "parameters": [], + "src": "93414:2:10" + }, + "returnParameters": { + "id": 4237, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4236, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4246, + "src": "93435:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4235, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "93435:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "93434:9:10" + }, + "scope": 5104, + "src": "93389:110:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4277, + "nodeType": "Block", + "src": "93668:496:10", + "statements": [ + { + "assignments": [ + 4255 + ], + "declarations": [ + { + "constant": false, + "id": 4255, + "mutability": "mutable", + "name": "c", + "nameLocation": "93691:1:10", + "nodeType": "VariableDeclaration", + "scope": 4277, + "src": "93678:14:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4254, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "93678:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 4259, + "initialValue": { + "arguments": [ + { + "id": 4257, + "name": "authorizedUpgrader", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4249, + "src": "93720:18:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4256, + "name": "initCodeERC1967Bootstrap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4354, + "src": "93695:24:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address) pure returns (bytes memory)" + } + }, + "id": 4258, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "93695:44:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "93678:61:10" + }, + { + "expression": { + "id": 4274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4260, + "name": "bootstrap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4252, + "src": "93749:9:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 4263, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4255, + "src": "93799:1:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 4262, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "93789:9:10", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 4264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "93789:12:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 4267, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "93811:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4266, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "93803:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 4265, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "93803:7:10", + "typeDescriptions": {} + } + }, + "id": 4268, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "93803:10:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "id": 4271, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "93823:4:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_LibClone_$5104", + "typeString": "library LibClone" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_LibClone_$5104", + "typeString": "library LibClone" + } + ], + "id": 4270, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "93815:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4269, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "93815:7:10", + "typeDescriptions": {} + } + }, + "id": 4272, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "93815:13:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4261, + "name": "predictDeterministicAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3237, + 3510, + 5081 + ], + "referencedDeclaration": 5081, + "src": "93761:27:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_address_$", + "typeString": "function (bytes32,bytes32,address) pure returns (address)" + } + }, + "id": 4273, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "93761:68:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "93749:80:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4275, + "nodeType": "ExpressionStatement", + "src": "93749:80:10" + }, + { + "AST": { + "nativeSrc": "93891:267:10", + "nodeType": "YulBlock", + "src": "93891:267:10", + "statements": [ + { + "body": { + "nativeSrc": "93939:209:10", + "nodeType": "YulBlock", + "src": "93939:209:10", + "statements": [ + { + "body": { + "nativeSrc": "94006:128:10", + "nodeType": "YulBlock", + "src": "94006:128:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "94035:4:10", + "nodeType": "YulLiteral", + "src": "94035:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "94041:10:10", + "nodeType": "YulLiteral", + "src": "94041:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "94028:6:10", + "nodeType": "YulIdentifier", + "src": "94028:6:10" + }, + "nativeSrc": "94028:24:10", + "nodeType": "YulFunctionCall", + "src": "94028:24:10" + }, + "nativeSrc": "94028:24:10", + "nodeType": "YulExpressionStatement", + "src": "94028:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "94105:4:10", + "nodeType": "YulLiteral", + "src": "94105:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "94111:4:10", + "nodeType": "YulLiteral", + "src": "94111:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "94098:6:10", + "nodeType": "YulIdentifier", + "src": "94098:6:10" + }, + "nativeSrc": "94098:18:10", + "nodeType": "YulFunctionCall", + "src": "94098:18:10" + }, + "nativeSrc": "94098:18:10", + "nodeType": "YulExpressionStatement", + "src": "94098:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "93975:1:10", + "nodeType": "YulLiteral", + "src": "93975:1:10", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "name": "c", + "nativeSrc": "93982:1:10", + "nodeType": "YulIdentifier", + "src": "93982:1:10" + }, + { + "kind": "number", + "nativeSrc": "93985:4:10", + "nodeType": "YulLiteral", + "src": "93985:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "93978:3:10", + "nodeType": "YulIdentifier", + "src": "93978:3:10" + }, + "nativeSrc": "93978:12:10", + "nodeType": "YulFunctionCall", + "src": "93978:12:10" + }, + { + "arguments": [ + { + "name": "c", + "nativeSrc": "93998:1:10", + "nodeType": "YulIdentifier", + "src": "93998:1:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "93992:5:10", + "nodeType": "YulIdentifier", + "src": "93992:5:10" + }, + "nativeSrc": "93992:8:10", + "nodeType": "YulFunctionCall", + "src": "93992:8:10" + }, + { + "kind": "number", + "nativeSrc": "94002:1:10", + "nodeType": "YulLiteral", + "src": "94002:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "create2", + "nativeSrc": "93967:7:10", + "nodeType": "YulIdentifier", + "src": "93967:7:10" + }, + "nativeSrc": "93967:37:10", + "nodeType": "YulFunctionCall", + "src": "93967:37:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "93960:6:10", + "nodeType": "YulIdentifier", + "src": "93960:6:10" + }, + "nativeSrc": "93960:45:10", + "nodeType": "YulFunctionCall", + "src": "93960:45:10" + }, + "nativeSrc": "93957:177:10", + "nodeType": "YulIf", + "src": "93957:177:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "bootstrap", + "nativeSrc": "93927:9:10", + "nodeType": "YulIdentifier", + "src": "93927:9:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "93915:11:10", + "nodeType": "YulIdentifier", + "src": "93915:11:10" + }, + "nativeSrc": "93915:22:10", + "nodeType": "YulFunctionCall", + "src": "93915:22:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "93908:6:10", + "nodeType": "YulIdentifier", + "src": "93908:6:10" + }, + "nativeSrc": "93908:30:10", + "nodeType": "YulFunctionCall", + "src": "93908:30:10" + }, + "nativeSrc": "93905:243:10", + "nodeType": "YulIf", + "src": "93905:243:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4252, + "isOffset": false, + "isSlot": false, + "src": "93927:9:10", + "valueSize": 1 + }, + { + "declaration": 4255, + "isOffset": false, + "isSlot": false, + "src": "93982:1:10", + "valueSize": 1 + }, + { + "declaration": 4255, + "isOffset": false, + "isSlot": false, + "src": "93998:1:10", + "valueSize": 1 + } + ], + "id": 4276, + "nodeType": "InlineAssembly", + "src": "93882:276:10" + } + ] + }, + "documentation": { + "id": 4247, + "nodeType": "StructuredDocumentation", + "src": "93505:67:10", + "text": "@dev Deploys the ERC1967 bootstrap if it has not been deployed." + }, + "id": 4278, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "erc1967Bootstrap", + "nameLocation": "93586:16:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4250, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4249, + "mutability": "mutable", + "name": "authorizedUpgrader", + "nameLocation": "93611:18:10", + "nodeType": "VariableDeclaration", + "scope": 4278, + "src": "93603:26:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4248, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "93603:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "93602:28:10" + }, + "returnParameters": { + "id": 4253, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4252, + "mutability": "mutable", + "name": "bootstrap", + "nameLocation": "93657:9:10", + "nodeType": "VariableDeclaration", + "scope": 4278, + "src": "93649:17:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4251, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "93649:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "93648:19:10" + }, + "scope": 5104, + "src": "93577:587:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4287, + "nodeType": "Block", + "src": "94303:315:10", + "statements": [ + { + "AST": { + "nativeSrc": "94365:247:10", + "nodeType": "YulBlock", + "src": "94365:247:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "94386:4:10", + "nodeType": "YulLiteral", + "src": "94386:4:10", + "type": "", + "value": "0x00" + }, + { + "name": "implementation", + "nativeSrc": "94392:14:10", + "nodeType": "YulIdentifier", + "src": "94392:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "94379:6:10", + "nodeType": "YulIdentifier", + "src": "94379:6:10" + }, + "nativeSrc": "94379:28:10", + "nodeType": "YulFunctionCall", + "src": "94379:28:10" + }, + "nativeSrc": "94379:28:10", + "nodeType": "YulExpressionStatement", + "src": "94379:28:10" + }, + { + "body": { + "nativeSrc": "94486:116:10", + "nodeType": "YulBlock", + "src": "94486:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "94511:4:10", + "nodeType": "YulLiteral", + "src": "94511:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "94517:10:10", + "nodeType": "YulLiteral", + "src": "94517:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "94504:6:10", + "nodeType": "YulIdentifier", + "src": "94504:6:10" + }, + "nativeSrc": "94504:24:10", + "nodeType": "YulFunctionCall", + "src": "94504:24:10" + }, + "nativeSrc": "94504:24:10", + "nodeType": "YulExpressionStatement", + "src": "94504:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "94577:4:10", + "nodeType": "YulLiteral", + "src": "94577:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "94583:4:10", + "nodeType": "YulLiteral", + "src": "94583:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "94570:6:10", + "nodeType": "YulIdentifier", + "src": "94570:6:10" + }, + "nativeSrc": "94570:18:10", + "nodeType": "YulFunctionCall", + "src": "94570:18:10" + }, + "nativeSrc": "94570:18:10", + "nodeType": "YulExpressionStatement", + "src": "94570:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "94435:3:10", + "nodeType": "YulIdentifier", + "src": "94435:3:10" + }, + "nativeSrc": "94435:5:10", + "nodeType": "YulFunctionCall", + "src": "94435:5:10" + }, + { + "name": "instance", + "nativeSrc": "94442:8:10", + "nodeType": "YulIdentifier", + "src": "94442:8:10" + }, + { + "kind": "number", + "nativeSrc": "94452:1:10", + "nodeType": "YulLiteral", + "src": "94452:1:10", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "94455:4:10", + "nodeType": "YulLiteral", + "src": "94455:4:10", + "type": "", + "value": "0x0c" + }, + { + "kind": "number", + "nativeSrc": "94461:4:10", + "nodeType": "YulLiteral", + "src": "94461:4:10", + "type": "", + "value": "0x14" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "94467:8:10", + "nodeType": "YulIdentifier", + "src": "94467:8:10" + }, + "nativeSrc": "94467:10:10", + "nodeType": "YulFunctionCall", + "src": "94467:10:10" + }, + { + "kind": "number", + "nativeSrc": "94479:4:10", + "nodeType": "YulLiteral", + "src": "94479:4:10", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "call", + "nativeSrc": "94430:4:10", + "nodeType": "YulIdentifier", + "src": "94430:4:10" + }, + "nativeSrc": "94430:54:10", + "nodeType": "YulFunctionCall", + "src": "94430:54:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "94423:6:10", + "nodeType": "YulIdentifier", + "src": "94423:6:10" + }, + "nativeSrc": "94423:62:10", + "nodeType": "YulFunctionCall", + "src": "94423:62:10" + }, + "nativeSrc": "94420:182:10", + "nodeType": "YulIf", + "src": "94420:182:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4283, + "isOffset": false, + "isSlot": false, + "src": "94392:14:10", + "valueSize": 1 + }, + { + "declaration": 4281, + "isOffset": false, + "isSlot": false, + "src": "94442:8:10", + "valueSize": 1 + } + ], + "id": 4286, + "nodeType": "InlineAssembly", + "src": "94356:256:10" + } + ] + }, + "documentation": { + "id": 4279, + "nodeType": "StructuredDocumentation", + "src": "94170:51:10", + "text": "@dev Replaces the implementation at `instance`." + }, + "id": 4288, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "bootstrapERC1967", + "nameLocation": "94235:16:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4284, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4281, + "mutability": "mutable", + "name": "instance", + "nameLocation": "94260:8:10", + "nodeType": "VariableDeclaration", + "scope": 4288, + "src": "94252:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4280, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "94252:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4283, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "94278:14:10", + "nodeType": "VariableDeclaration", + "scope": 4288, + "src": "94270:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4282, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "94270:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "94251:42:10" + }, + "returnParameters": { + "id": 4285, + "nodeType": "ParameterList", + "parameters": [], + "src": "94303:0:10" + }, + "scope": 5104, + "src": "94226:392:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4299, + "nodeType": "Block", + "src": "94825:622:10", + "statements": [ + { + "AST": { + "nativeSrc": "94887:554:10", + "nodeType": "YulBlock", + "src": "94887:554:10", + "statements": [ + { + "nativeSrc": "94901:20:10", + "nodeType": "YulVariableDeclaration", + "src": "94901:20:10", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "94916:4:10", + "nodeType": "YulIdentifier", + "src": "94916:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "94910:5:10", + "nodeType": "YulIdentifier", + "src": "94910:5:10" + }, + "nativeSrc": "94910:11:10", + "nodeType": "YulFunctionCall", + "src": "94910:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "94905:1:10", + "nodeType": "YulTypedName", + "src": "94905:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "data", + "nativeSrc": "94941:4:10", + "nodeType": "YulIdentifier", + "src": "94941:4:10" + }, + { + "name": "implementation", + "nativeSrc": "94947:14:10", + "nodeType": "YulIdentifier", + "src": "94947:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "94934:6:10", + "nodeType": "YulIdentifier", + "src": "94934:6:10" + }, + "nativeSrc": "94934:28:10", + "nodeType": "YulFunctionCall", + "src": "94934:28:10" + }, + "nativeSrc": "94934:28:10", + "nodeType": "YulExpressionStatement", + "src": "94934:28:10" + }, + { + "body": { + "nativeSrc": "95060:310:10", + "nodeType": "YulBlock", + "src": "95060:310:10", + "statements": [ + { + "body": { + "nativeSrc": "95106:128:10", + "nodeType": "YulBlock", + "src": "95106:128:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "95135:4:10", + "nodeType": "YulLiteral", + "src": "95135:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "95141:10:10", + "nodeType": "YulLiteral", + "src": "95141:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "95128:6:10", + "nodeType": "YulIdentifier", + "src": "95128:6:10" + }, + "nativeSrc": "95128:24:10", + "nodeType": "YulFunctionCall", + "src": "95128:24:10" + }, + "nativeSrc": "95128:24:10", + "nodeType": "YulExpressionStatement", + "src": "95128:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "95205:4:10", + "nodeType": "YulLiteral", + "src": "95205:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "95211:4:10", + "nodeType": "YulLiteral", + "src": "95211:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "95198:6:10", + "nodeType": "YulIdentifier", + "src": "95198:6:10" + }, + "nativeSrc": "95198:18:10", + "nodeType": "YulFunctionCall", + "src": "95198:18:10" + }, + "nativeSrc": "95198:18:10", + "nodeType": "YulExpressionStatement", + "src": "95198:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "95088:14:10", + "nodeType": "YulIdentifier", + "src": "95088:14:10" + }, + "nativeSrc": "95088:16:10", + "nodeType": "YulFunctionCall", + "src": "95088:16:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "95081:6:10", + "nodeType": "YulIdentifier", + "src": "95081:6:10" + }, + "nativeSrc": "95081:24:10", + "nodeType": "YulFunctionCall", + "src": "95081:24:10" + }, + "nativeSrc": "95078:156:10", + "nodeType": "YulIf", + "src": "95078:156:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "95272:4:10", + "nodeType": "YulLiteral", + "src": "95272:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "95266:5:10", + "nodeType": "YulIdentifier", + "src": "95266:5:10" + }, + "nativeSrc": "95266:11:10", + "nodeType": "YulFunctionCall", + "src": "95266:11:10" + }, + { + "kind": "number", + "nativeSrc": "95279:4:10", + "nodeType": "YulLiteral", + "src": "95279:4:10", + "type": "", + "value": "0x00" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "95285:14:10", + "nodeType": "YulIdentifier", + "src": "95285:14:10" + }, + "nativeSrc": "95285:16:10", + "nodeType": "YulFunctionCall", + "src": "95285:16:10" + } + ], + "functionName": { + "name": "returndatacopy", + "nativeSrc": "95251:14:10", + "nodeType": "YulIdentifier", + "src": "95251:14:10" + }, + "nativeSrc": "95251:51:10", + "nodeType": "YulFunctionCall", + "src": "95251:51:10" + }, + "nativeSrc": "95251:51:10", + "nodeType": "YulExpressionStatement", + "src": "95251:51:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "95332:4:10", + "nodeType": "YulLiteral", + "src": "95332:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "95326:5:10", + "nodeType": "YulIdentifier", + "src": "95326:5:10" + }, + "nativeSrc": "95326:11:10", + "nodeType": "YulFunctionCall", + "src": "95326:11:10" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "95339:14:10", + "nodeType": "YulIdentifier", + "src": "95339:14:10" + }, + "nativeSrc": "95339:16:10", + "nodeType": "YulFunctionCall", + "src": "95339:16:10" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "95319:6:10", + "nodeType": "YulIdentifier", + "src": "95319:6:10" + }, + "nativeSrc": "95319:37:10", + "nodeType": "YulFunctionCall", + "src": "95319:37:10" + }, + "nativeSrc": "95319:37:10", + "nodeType": "YulExpressionStatement", + "src": "95319:37:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "94990:3:10", + "nodeType": "YulIdentifier", + "src": "94990:3:10" + }, + "nativeSrc": "94990:5:10", + "nodeType": "YulFunctionCall", + "src": "94990:5:10" + }, + { + "name": "instance", + "nativeSrc": "94997:8:10", + "nodeType": "YulIdentifier", + "src": "94997:8:10" + }, + { + "kind": "number", + "nativeSrc": "95007:1:10", + "nodeType": "YulLiteral", + "src": "95007:1:10", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "name": "data", + "nativeSrc": "95014:4:10", + "nodeType": "YulIdentifier", + "src": "95014:4:10" + }, + { + "kind": "number", + "nativeSrc": "95020:4:10", + "nodeType": "YulLiteral", + "src": "95020:4:10", + "type": "", + "value": "0x0c" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "95010:3:10", + "nodeType": "YulIdentifier", + "src": "95010:3:10" + }, + "nativeSrc": "95010:15:10", + "nodeType": "YulFunctionCall", + "src": "95010:15:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "95031:1:10", + "nodeType": "YulIdentifier", + "src": "95031:1:10" + }, + { + "kind": "number", + "nativeSrc": "95034:4:10", + "nodeType": "YulLiteral", + "src": "95034:4:10", + "type": "", + "value": "0x14" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "95027:3:10", + "nodeType": "YulIdentifier", + "src": "95027:3:10" + }, + "nativeSrc": "95027:12:10", + "nodeType": "YulFunctionCall", + "src": "95027:12:10" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "95041:8:10", + "nodeType": "YulIdentifier", + "src": "95041:8:10" + }, + "nativeSrc": "95041:10:10", + "nodeType": "YulFunctionCall", + "src": "95041:10:10" + }, + { + "kind": "number", + "nativeSrc": "95053:4:10", + "nodeType": "YulLiteral", + "src": "95053:4:10", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "call", + "nativeSrc": "94985:4:10", + "nodeType": "YulIdentifier", + "src": "94985:4:10" + }, + "nativeSrc": "94985:73:10", + "nodeType": "YulFunctionCall", + "src": "94985:73:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "94978:6:10", + "nodeType": "YulIdentifier", + "src": "94978:6:10" + }, + "nativeSrc": "94978:81:10", + "nodeType": "YulFunctionCall", + "src": "94978:81:10" + }, + "nativeSrc": "94975:395:10", + "nodeType": "YulIf", + "src": "94975:395:10" + }, + { + "expression": { + "arguments": [ + { + "name": "data", + "nativeSrc": "95390:4:10", + "nodeType": "YulIdentifier", + "src": "95390:4:10" + }, + { + "name": "n", + "nativeSrc": "95396:1:10", + "nodeType": "YulIdentifier", + "src": "95396:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "95383:6:10", + "nodeType": "YulIdentifier", + "src": "95383:6:10" + }, + "nativeSrc": "95383:15:10", + "nodeType": "YulFunctionCall", + "src": "95383:15:10" + }, + "nativeSrc": "95383:15:10", + "nodeType": "YulExpressionStatement", + "src": "95383:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4295, + "isOffset": false, + "isSlot": false, + "src": "94916:4:10", + "valueSize": 1 + }, + { + "declaration": 4295, + "isOffset": false, + "isSlot": false, + "src": "94941:4:10", + "valueSize": 1 + }, + { + "declaration": 4295, + "isOffset": false, + "isSlot": false, + "src": "95014:4:10", + "valueSize": 1 + }, + { + "declaration": 4295, + "isOffset": false, + "isSlot": false, + "src": "95390:4:10", + "valueSize": 1 + }, + { + "declaration": 4293, + "isOffset": false, + "isSlot": false, + "src": "94947:14:10", + "valueSize": 1 + }, + { + "declaration": 4291, + "isOffset": false, + "isSlot": false, + "src": "94997:8:10", + "valueSize": 1 + } + ], + "id": 4298, + "nodeType": "InlineAssembly", + "src": "94878:563:10" + } + ] + }, + "documentation": { + "id": 4289, + "nodeType": "StructuredDocumentation", + "src": "94624:81:10", + "text": "@dev Replaces the implementation at `instance`, and then call it with `data`." + }, + "id": 4300, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "bootstrapERC1967AndCall", + "nameLocation": "94719:23:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4296, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4291, + "mutability": "mutable", + "name": "instance", + "nameLocation": "94751:8:10", + "nodeType": "VariableDeclaration", + "scope": 4300, + "src": "94743:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4290, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "94743:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4293, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "94769:14:10", + "nodeType": "VariableDeclaration", + "scope": 4300, + "src": "94761:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4292, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "94761:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4295, + "mutability": "mutable", + "name": "data", + "nameLocation": "94798:4:10", + "nodeType": "VariableDeclaration", + "scope": 4300, + "src": "94785:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4294, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "94785:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "94742:61:10" + }, + "returnParameters": { + "id": 4297, + "nodeType": "ParameterList", + "parameters": [], + "src": "94825:0:10" + }, + "scope": 5104, + "src": "94710:737:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4317, + "nodeType": "Block", + "src": "95632:97:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 4309, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "95701:4:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_LibClone_$5104", + "typeString": "library LibClone" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_LibClone_$5104", + "typeString": "library LibClone" + } + ], + "id": 4308, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "95693:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4307, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "95693:7:10", + "typeDescriptions": {} + } + }, + "id": 4310, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "95693:13:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 4313, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "95716:4:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_LibClone_$5104", + "typeString": "library LibClone" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_LibClone_$5104", + "typeString": "library LibClone" + } + ], + "id": 4312, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "95708:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4311, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "95708:7:10", + "typeDescriptions": {} + } + }, + "id": 4314, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "95708:13:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4306, + "name": "predictDeterministicAddressERC1967Bootstrap", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4318, + 4344 + ], + "referencedDeclaration": 4344, + "src": "95649:43:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$returns$_t_address_$", + "typeString": "function (address,address) pure returns (address)" + } + }, + "id": 4315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "95649:73:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 4305, + "id": 4316, + "nodeType": "Return", + "src": "95642:80:10" + } + ] + }, + "documentation": { + "id": 4301, + "nodeType": "StructuredDocumentation", + "src": "95453:87:10", + "text": "@dev Returns the implementation address of the ERC1967 bootstrap for this contract." + }, + "id": 4318, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "predictDeterministicAddressERC1967Bootstrap", + "nameLocation": "95554:43:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4302, + "nodeType": "ParameterList", + "parameters": [], + "src": "95597:2:10" + }, + "returnParameters": { + "id": 4305, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4304, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4318, + "src": "95623:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4303, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "95623:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "95622:9:10" + }, + "scope": 5104, + "src": "95545:184:10", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4343, + "nodeType": "Block", + "src": "95980:152:10", + "statements": [ + { + "assignments": [ + 4329 + ], + "declarations": [ + { + "constant": false, + "id": 4329, + "mutability": "mutable", + "name": "hash", + "nameLocation": "95998:4:10", + "nodeType": "VariableDeclaration", + "scope": 4343, + "src": "95990:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4328, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "95990:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 4333, + "initialValue": { + "arguments": [ + { + "id": 4331, + "name": "authorizedUpgrader", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4321, + "src": "96034:18:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4330, + "name": "initCodeHashERC1967Bootstrap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4369, + "src": "96005:28:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_bytes32_$", + "typeString": "function (address) pure returns (bytes32)" + } + }, + "id": 4332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "96005:48:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "95990:63:10" + }, + { + "expression": { + "arguments": [ + { + "id": 4335, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4329, + "src": "96098:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 4338, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "96112:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4337, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "96104:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 4336, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "96104:7:10", + "typeDescriptions": {} + } + }, + "id": 4339, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "96104:10:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 4340, + "name": "deployer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4323, + "src": "96116:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4334, + "name": "predictDeterministicAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3237, + 3510, + 5081 + ], + "referencedDeclaration": 5081, + "src": "96070:27:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_address_$", + "typeString": "function (bytes32,bytes32,address) pure returns (address)" + } + }, + "id": 4341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "96070:55:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 4327, + "id": 4342, + "nodeType": "Return", + "src": "96063:62:10" + } + ] + }, + "documentation": { + "id": 4319, + "nodeType": "StructuredDocumentation", + "src": "95735:87:10", + "text": "@dev Returns the implementation address of the ERC1967 bootstrap for this contract." + }, + "id": 4344, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "predictDeterministicAddressERC1967Bootstrap", + "nameLocation": "95836:43:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4324, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4321, + "mutability": "mutable", + "name": "authorizedUpgrader", + "nameLocation": "95897:18:10", + "nodeType": "VariableDeclaration", + "scope": 4344, + "src": "95889:26:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4320, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "95889:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4323, + "mutability": "mutable", + "name": "deployer", + "nameLocation": "95933:8:10", + "nodeType": "VariableDeclaration", + "scope": 4344, + "src": "95925:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4322, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "95925:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "95879:68:10" + }, + "returnParameters": { + "id": 4327, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4326, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4344, + "src": "95971:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4325, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "95971:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "95970:9:10" + }, + "scope": 5104, + "src": "95827:305:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4353, + "nodeType": "Block", + "src": "96338:592:10", + "statements": [ + { + "AST": { + "nativeSrc": "96400:524:10", + "nodeType": "YulBlock", + "src": "96400:524:10", + "statements": [ + { + "nativeSrc": "96414:16:10", + "nodeType": "YulAssignment", + "src": "96414:16:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "96425:4:10", + "nodeType": "YulLiteral", + "src": "96425:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "96419:5:10", + "nodeType": "YulIdentifier", + "src": "96419:5:10" + }, + "nativeSrc": "96419:11:10", + "nodeType": "YulFunctionCall", + "src": "96419:11:10" + }, + "variableNames": [ + { + "name": "c", + "nativeSrc": "96414:1:10", + "nodeType": "YulIdentifier", + "src": "96414:1:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "96454:1:10", + "nodeType": "YulIdentifier", + "src": "96454:1:10" + }, + { + "kind": "number", + "nativeSrc": "96457:4:10", + "nodeType": "YulLiteral", + "src": "96457:4:10", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "96450:3:10", + "nodeType": "YulIdentifier", + "src": "96450:3:10" + }, + "nativeSrc": "96450:12:10", + "nodeType": "YulFunctionCall", + "src": "96450:12:10" + }, + { + "kind": "number", + "nativeSrc": "96464:66:10", + "nodeType": "YulLiteral", + "src": "96464:66:10", + "type": "", + "value": "0x3d3560601c5af46047573d6000383e3d38fd0000000000000000000000000000" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "96443:6:10", + "nodeType": "YulIdentifier", + "src": "96443:6:10" + }, + "nativeSrc": "96443:88:10", + "nodeType": "YulFunctionCall", + "src": "96443:88:10" + }, + "nativeSrc": "96443:88:10", + "nodeType": "YulExpressionStatement", + "src": "96443:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "96555:1:10", + "nodeType": "YulIdentifier", + "src": "96555:1:10" + }, + { + "kind": "number", + "nativeSrc": "96558:4:10", + "nodeType": "YulLiteral", + "src": "96558:4:10", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "96551:3:10", + "nodeType": "YulIdentifier", + "src": "96551:3:10" + }, + "nativeSrc": "96551:12:10", + "nodeType": "YulFunctionCall", + "src": "96551:12:10" + }, + { + "kind": "number", + "nativeSrc": "96565:66:10", + "nodeType": "YulLiteral", + "src": "96565:66:10", + "type": "", + "value": "0xa920a3ca505d382bbc55601436116049575b005b363d3d373d3d601436036014" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "96544:6:10", + "nodeType": "YulIdentifier", + "src": "96544:6:10" + }, + "nativeSrc": "96544:88:10", + "nodeType": "YulFunctionCall", + "src": "96544:88:10" + }, + "nativeSrc": "96544:88:10", + "nodeType": "YulExpressionStatement", + "src": "96544:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "96656:1:10", + "nodeType": "YulIdentifier", + "src": "96656:1:10" + }, + { + "kind": "number", + "nativeSrc": "96659:4:10", + "nodeType": "YulLiteral", + "src": "96659:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "96652:3:10", + "nodeType": "YulIdentifier", + "src": "96652:3:10" + }, + "nativeSrc": "96652:12:10", + "nodeType": "YulFunctionCall", + "src": "96652:12:10" + }, + { + "kind": "number", + "nativeSrc": "96666:66:10", + "nodeType": "YulLiteral", + "src": "96666:66:10", + "type": "", + "value": "0x0338573d3560601c7f360894a13ba1a3210667c828492db98dca3e2076cc3735" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "96645:6:10", + "nodeType": "YulIdentifier", + "src": "96645:6:10" + }, + "nativeSrc": "96645:88:10", + "nodeType": "YulFunctionCall", + "src": "96645:88:10" + }, + "nativeSrc": "96645:88:10", + "nodeType": "YulExpressionStatement", + "src": "96645:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "96757:1:10", + "nodeType": "YulIdentifier", + "src": "96757:1:10" + }, + { + "kind": "number", + "nativeSrc": "96760:4:10", + "nodeType": "YulLiteral", + "src": "96760:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "96753:3:10", + "nodeType": "YulIdentifier", + "src": "96753:3:10" + }, + "nativeSrc": "96753:12:10", + "nodeType": "YulFunctionCall", + "src": "96753:12:10" + }, + { + "name": "authorizedUpgrader", + "nativeSrc": "96767:18:10", + "nodeType": "YulIdentifier", + "src": "96767:18:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "96746:6:10", + "nodeType": "YulIdentifier", + "src": "96746:6:10" + }, + "nativeSrc": "96746:40:10", + "nodeType": "YulFunctionCall", + "src": "96746:40:10" + }, + "nativeSrc": "96746:40:10", + "nodeType": "YulExpressionStatement", + "src": "96746:40:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "96810:1:10", + "nodeType": "YulIdentifier", + "src": "96810:1:10" + }, + { + "kind": "number", + "nativeSrc": "96813:4:10", + "nodeType": "YulLiteral", + "src": "96813:4:10", + "type": "", + "value": "0x0c" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "96806:3:10", + "nodeType": "YulIdentifier", + "src": "96806:3:10" + }, + "nativeSrc": "96806:12:10", + "nodeType": "YulFunctionCall", + "src": "96806:12:10" + }, + { + "kind": "number", + "nativeSrc": "96820:26:10", + "nodeType": "YulLiteral", + "src": "96820:26:10", + "type": "", + "value": "0x606880600a3d393df3fe3373" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "96799:6:10", + "nodeType": "YulIdentifier", + "src": "96799:6:10" + }, + "nativeSrc": "96799:48:10", + "nodeType": "YulFunctionCall", + "src": "96799:48:10" + }, + "nativeSrc": "96799:48:10", + "nodeType": "YulExpressionStatement", + "src": "96799:48:10" + }, + { + "expression": { + "arguments": [ + { + "name": "c", + "nativeSrc": "96867:1:10", + "nodeType": "YulIdentifier", + "src": "96867:1:10" + }, + { + "kind": "number", + "nativeSrc": "96870:4:10", + "nodeType": "YulLiteral", + "src": "96870:4:10", + "type": "", + "value": "0x72" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "96860:6:10", + "nodeType": "YulIdentifier", + "src": "96860:6:10" + }, + "nativeSrc": "96860:15:10", + "nodeType": "YulFunctionCall", + "src": "96860:15:10" + }, + "nativeSrc": "96860:15:10", + "nodeType": "YulExpressionStatement", + "src": "96860:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "96895:4:10", + "nodeType": "YulLiteral", + "src": "96895:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "c", + "nativeSrc": "96905:1:10", + "nodeType": "YulIdentifier", + "src": "96905:1:10" + }, + { + "kind": "number", + "nativeSrc": "96908:4:10", + "nodeType": "YulLiteral", + "src": "96908:4:10", + "type": "", + "value": "0xa0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "96901:3:10", + "nodeType": "YulIdentifier", + "src": "96901:3:10" + }, + "nativeSrc": "96901:12:10", + "nodeType": "YulFunctionCall", + "src": "96901:12:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "96888:6:10", + "nodeType": "YulIdentifier", + "src": "96888:6:10" + }, + "nativeSrc": "96888:26:10", + "nodeType": "YulFunctionCall", + "src": "96888:26:10" + }, + "nativeSrc": "96888:26:10", + "nodeType": "YulExpressionStatement", + "src": "96888:26:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4347, + "isOffset": false, + "isSlot": false, + "src": "96767:18:10", + "valueSize": 1 + }, + { + "declaration": 4350, + "isOffset": false, + "isSlot": false, + "src": "96414:1:10", + "valueSize": 1 + }, + { + "declaration": 4350, + "isOffset": false, + "isSlot": false, + "src": "96454:1:10", + "valueSize": 1 + }, + { + "declaration": 4350, + "isOffset": false, + "isSlot": false, + "src": "96555:1:10", + "valueSize": 1 + }, + { + "declaration": 4350, + "isOffset": false, + "isSlot": false, + "src": "96656:1:10", + "valueSize": 1 + }, + { + "declaration": 4350, + "isOffset": false, + "isSlot": false, + "src": "96757:1:10", + "valueSize": 1 + }, + { + "declaration": 4350, + "isOffset": false, + "isSlot": false, + "src": "96810:1:10", + "valueSize": 1 + }, + { + "declaration": 4350, + "isOffset": false, + "isSlot": false, + "src": "96867:1:10", + "valueSize": 1 + }, + { + "declaration": 4350, + "isOffset": false, + "isSlot": false, + "src": "96905:1:10", + "valueSize": 1 + } + ], + "id": 4352, + "nodeType": "InlineAssembly", + "src": "96391:533:10" + } + ] + }, + "documentation": { + "id": 4345, + "nodeType": "StructuredDocumentation", + "src": "96138:66:10", + "text": "@dev Returns the initialization code of the ERC1967 bootstrap." + }, + "id": 4354, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeERC1967Bootstrap", + "nameLocation": "96218:24:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4348, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4347, + "mutability": "mutable", + "name": "authorizedUpgrader", + "nameLocation": "96251:18:10", + "nodeType": "VariableDeclaration", + "scope": 4354, + "src": "96243:26:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4346, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "96243:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "96242:28:10" + }, + "returnParameters": { + "id": 4351, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4350, + "mutability": "mutable", + "name": "c", + "nameLocation": "96331:1:10", + "nodeType": "VariableDeclaration", + "scope": 4354, + "src": "96318:14:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4349, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "96318:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "96317:16:10" + }, + "scope": 5104, + "src": "96209:721:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4368, + "nodeType": "Block", + "src": "97138:79:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 4364, + "name": "authorizedUpgrader", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4357, + "src": "97190:18:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4363, + "name": "initCodeERC1967Bootstrap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4354, + "src": "97165:24:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address) pure returns (bytes memory)" + } + }, + "id": 4365, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "97165:44:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 4362, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "97155:9:10", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 4366, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "97155:55:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 4361, + "id": 4367, + "nodeType": "Return", + "src": "97148:62:10" + } + ] + }, + "documentation": { + "id": 4355, + "nodeType": "StructuredDocumentation", + "src": "96936:71:10", + "text": "@dev Returns the initialization code hash of the ERC1967 bootstrap." + }, + "id": 4369, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeHashERC1967Bootstrap", + "nameLocation": "97021:28:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4358, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4357, + "mutability": "mutable", + "name": "authorizedUpgrader", + "nameLocation": "97058:18:10", + "nodeType": "VariableDeclaration", + "scope": 4369, + "src": "97050:26:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4356, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "97050:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "97049:28:10" + }, + "returnParameters": { + "id": 4361, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4360, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4369, + "src": "97125:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4359, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "97125:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "97124:9:10" + }, + "scope": 5104, + "src": "97012:205:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4384, + "nodeType": "Block", + "src": "98020:63:10", + "statements": [ + { + "expression": { + "id": 4382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4377, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4375, + "src": "98030:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 4379, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "98066:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 4380, + "name": "beacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4372, + "src": "98069:6:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4378, + "name": "deployERC1967BeaconProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4385, + 4397, + 4531, + 4545 + ], + "referencedDeclaration": 4397, + "src": "98041:24:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$_t_address_$", + "typeString": "function (uint256,address) returns (address)" + } + }, + "id": 4381, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "98041:35:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "98030:46:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4383, + "nodeType": "ExpressionStatement", + "src": "98030:46:10" + } + ] + }, + "documentation": { + "id": 4370, + "nodeType": "StructuredDocumentation", + "src": "97881:48:10", + "text": "@dev Deploys a minimal ERC1967 beacon proxy." + }, + "id": 4385, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployERC1967BeaconProxy", + "nameLocation": "97943:24:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4373, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4372, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "97976:6:10", + "nodeType": "VariableDeclaration", + "scope": 4385, + "src": "97968:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4371, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "97968:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "97967:16:10" + }, + "returnParameters": { + "id": 4376, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4375, + "mutability": "mutable", + "name": "instance", + "nameLocation": "98010:8:10", + "nodeType": "VariableDeclaration", + "scope": 4385, + "src": "98002:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4374, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "98002:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "98001:18:10" + }, + "scope": 5104, + "src": "97934:149:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4396, + "nodeType": "Block", + "src": "98311:8291:10", + "statements": [ + { + "AST": { + "nativeSrc": "98373:8223:10", + "nodeType": "YulBlock", + "src": "98373:8223:10", + "statements": [ + { + "nativeSrc": "105867:20:10", + "nodeType": "YulVariableDeclaration", + "src": "105867:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "105882:4:10", + "nodeType": "YulLiteral", + "src": "105882:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "105876:5:10", + "nodeType": "YulIdentifier", + "src": "105876:5:10" + }, + "nativeSrc": "105876:11:10", + "nodeType": "YulFunctionCall", + "src": "105876:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "105871:1:10", + "nodeType": "YulTypedName", + "src": "105871:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "105941:4:10", + "nodeType": "YulLiteral", + "src": "105941:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "105947:66:10", + "nodeType": "YulLiteral", + "src": "105947:66:10", + "type": "", + "value": "0xb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "105934:6:10", + "nodeType": "YulIdentifier", + "src": "105934:6:10" + }, + "nativeSrc": "105934:80:10", + "nodeType": "YulFunctionCall", + "src": "105934:80:10" + }, + "nativeSrc": "105934:80:10", + "nodeType": "YulExpressionStatement", + "src": "105934:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "106034:4:10", + "nodeType": "YulLiteral", + "src": "106034:4:10", + "type": "", + "value": "0x40" + }, + { + "kind": "number", + "nativeSrc": "106040:66:10", + "nodeType": "YulLiteral", + "src": "106040:66:10", + "type": "", + "value": "0x1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "106027:6:10", + "nodeType": "YulIdentifier", + "src": "106027:6:10" + }, + "nativeSrc": "106027:80:10", + "nodeType": "YulFunctionCall", + "src": "106027:80:10" + }, + "nativeSrc": "106027:80:10", + "nodeType": "YulExpressionStatement", + "src": "106027:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "106127:4:10", + "nodeType": "YulLiteral", + "src": "106127:4:10", + "type": "", + "value": "0x20" + }, + { + "kind": "number", + "nativeSrc": "106133:48:10", + "nodeType": "YulLiteral", + "src": "106133:48:10", + "type": "", + "value": "0x60195155f3363d3d373d3d363d602036600436635c60da" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "106120:6:10", + "nodeType": "YulIdentifier", + "src": "106120:6:10" + }, + "nativeSrc": "106120:62:10", + "nodeType": "YulFunctionCall", + "src": "106120:62:10" + }, + "nativeSrc": "106120:62:10", + "nodeType": "YulExpressionStatement", + "src": "106120:62:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "106202:4:10", + "nodeType": "YulLiteral", + "src": "106202:4:10", + "type": "", + "value": "0x09" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "106215:3:10", + "nodeType": "YulLiteral", + "src": "106215:3:10", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "106220:20:10", + "nodeType": "YulLiteral", + "src": "106220:20:10", + "type": "", + "value": "0x60523d8160223d3973" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "106211:3:10", + "nodeType": "YulIdentifier", + "src": "106211:3:10" + }, + "nativeSrc": "106211:30:10", + "nodeType": "YulFunctionCall", + "src": "106211:30:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "106247:2:10", + "nodeType": "YulLiteral", + "src": "106247:2:10", + "type": "", + "value": "96" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "106255:2:10", + "nodeType": "YulLiteral", + "src": "106255:2:10", + "type": "", + "value": "96" + }, + { + "name": "beacon", + "nativeSrc": "106259:6:10", + "nodeType": "YulIdentifier", + "src": "106259:6:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "106251:3:10", + "nodeType": "YulIdentifier", + "src": "106251:3:10" + }, + "nativeSrc": "106251:15:10", + "nodeType": "YulFunctionCall", + "src": "106251:15:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "106243:3:10", + "nodeType": "YulIdentifier", + "src": "106243:3:10" + }, + "nativeSrc": "106243:24:10", + "nodeType": "YulFunctionCall", + "src": "106243:24:10" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "106208:2:10", + "nodeType": "YulIdentifier", + "src": "106208:2:10" + }, + "nativeSrc": "106208:60:10", + "nodeType": "YulFunctionCall", + "src": "106208:60:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "106195:6:10", + "nodeType": "YulIdentifier", + "src": "106195:6:10" + }, + "nativeSrc": "106195:74:10", + "nodeType": "YulFunctionCall", + "src": "106195:74:10" + }, + "nativeSrc": "106195:74:10", + "nodeType": "YulExpressionStatement", + "src": "106195:74:10" + }, + { + "nativeSrc": "106282:37:10", + "nodeType": "YulAssignment", + "src": "106282:37:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "106301:5:10", + "nodeType": "YulIdentifier", + "src": "106301:5:10" + }, + { + "kind": "number", + "nativeSrc": "106308:4:10", + "nodeType": "YulLiteral", + "src": "106308:4:10", + "type": "", + "value": "0x0c" + }, + { + "kind": "number", + "nativeSrc": "106314:4:10", + "nodeType": "YulLiteral", + "src": "106314:4:10", + "type": "", + "value": "0x74" + } + ], + "functionName": { + "name": "create", + "nativeSrc": "106294:6:10", + "nodeType": "YulIdentifier", + "src": "106294:6:10" + }, + "nativeSrc": "106294:25:10", + "nodeType": "YulFunctionCall", + "src": "106294:25:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "106282:8:10", + "nodeType": "YulIdentifier", + "src": "106282:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "106352:116:10", + "nodeType": "YulBlock", + "src": "106352:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "106377:4:10", + "nodeType": "YulLiteral", + "src": "106377:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "106383:10:10", + "nodeType": "YulLiteral", + "src": "106383:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "106370:6:10", + "nodeType": "YulIdentifier", + "src": "106370:6:10" + }, + "nativeSrc": "106370:24:10", + "nodeType": "YulFunctionCall", + "src": "106370:24:10" + }, + "nativeSrc": "106370:24:10", + "nodeType": "YulExpressionStatement", + "src": "106370:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "106443:4:10", + "nodeType": "YulLiteral", + "src": "106443:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "106449:4:10", + "nodeType": "YulLiteral", + "src": "106449:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "106436:6:10", + "nodeType": "YulIdentifier", + "src": "106436:6:10" + }, + "nativeSrc": "106436:18:10", + "nodeType": "YulFunctionCall", + "src": "106436:18:10" + }, + "nativeSrc": "106436:18:10", + "nodeType": "YulExpressionStatement", + "src": "106436:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "106342:8:10", + "nodeType": "YulIdentifier", + "src": "106342:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "106335:6:10", + "nodeType": "YulIdentifier", + "src": "106335:6:10" + }, + "nativeSrc": "106335:16:10", + "nodeType": "YulFunctionCall", + "src": "106335:16:10" + }, + "nativeSrc": "106332:136:10", + "nodeType": "YulIf", + "src": "106332:136:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "106488:4:10", + "nodeType": "YulLiteral", + "src": "106488:4:10", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "106494:1:10", + "nodeType": "YulIdentifier", + "src": "106494:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "106481:6:10", + "nodeType": "YulIdentifier", + "src": "106481:6:10" + }, + "nativeSrc": "106481:15:10", + "nodeType": "YulFunctionCall", + "src": "106481:15:10" + }, + "nativeSrc": "106481:15:10", + "nodeType": "YulExpressionStatement", + "src": "106481:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "106552:4:10", + "nodeType": "YulLiteral", + "src": "106552:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "106558:1:10", + "nodeType": "YulLiteral", + "src": "106558:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "106545:6:10", + "nodeType": "YulIdentifier", + "src": "106545:6:10" + }, + "nativeSrc": "106545:15:10", + "nodeType": "YulFunctionCall", + "src": "106545:15:10" + }, + "nativeSrc": "106545:15:10", + "nodeType": "YulExpressionStatement", + "src": "106545:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4390, + "isOffset": false, + "isSlot": false, + "src": "106259:6:10", + "valueSize": 1 + }, + { + "declaration": 4393, + "isOffset": false, + "isSlot": false, + "src": "106282:8:10", + "valueSize": 1 + }, + { + "declaration": 4393, + "isOffset": false, + "isSlot": false, + "src": "106342:8:10", + "valueSize": 1 + }, + { + "declaration": 4388, + "isOffset": false, + "isSlot": false, + "src": "106301:5:10", + "valueSize": 1 + } + ], + "id": 4395, + "nodeType": "InlineAssembly", + "src": "98364:8232:10" + } + ] + }, + "documentation": { + "id": 4386, + "nodeType": "StructuredDocumentation", + "src": "98089:96:10", + "text": "@dev Deploys a minimal ERC1967 beacon proxy.\n Deposits `value` ETH during deployment." + }, + "id": 4397, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployERC1967BeaconProxy", + "nameLocation": "98199:24:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4391, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4388, + "mutability": "mutable", + "name": "value", + "nameLocation": "98232:5:10", + "nodeType": "VariableDeclaration", + "scope": 4397, + "src": "98224:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4387, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "98224:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4390, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "98247:6:10", + "nodeType": "VariableDeclaration", + "scope": 4397, + "src": "98239:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4389, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "98239:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "98223:31:10" + }, + "returnParameters": { + "id": 4394, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4393, + "mutability": "mutable", + "name": "instance", + "nameLocation": "98297:8:10", + "nodeType": "VariableDeclaration", + "scope": 4397, + "src": "98289:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4392, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "98289:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "98288:18:10" + }, + "scope": 5104, + "src": "98190:8412:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4415, + "nodeType": "Block", + "src": "106820:82:10", + "statements": [ + { + "expression": { + "id": 4413, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4407, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4405, + "src": "106830:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 4409, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "106879:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 4410, + "name": "beacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4400, + "src": "106882:6:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4411, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4402, + "src": "106890:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4408, + "name": "deployDeterministicERC1967BeaconProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4416, + 4430, + 4567, + 4583 + ], + "referencedDeclaration": 4430, + "src": "106841:37:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (uint256,address,bytes32) returns (address)" + } + }, + "id": 4412, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "106841:54:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "106830:65:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4414, + "nodeType": "ExpressionStatement", + "src": "106830:65:10" + } + ] + }, + "documentation": { + "id": 4398, + "nodeType": "StructuredDocumentation", + "src": "106608:74:10", + "text": "@dev Deploys a deterministic minimal ERC1967 beacon proxy with `salt`." + }, + "id": 4416, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployDeterministicERC1967BeaconProxy", + "nameLocation": "106696:37:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4403, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4400, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "106742:6:10", + "nodeType": "VariableDeclaration", + "scope": 4416, + "src": "106734:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4399, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "106734:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4402, + "mutability": "mutable", + "name": "salt", + "nameLocation": "106758:4:10", + "nodeType": "VariableDeclaration", + "scope": 4416, + "src": "106750:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4401, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "106750:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "106733:30:10" + }, + "returnParameters": { + "id": 4406, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4405, + "mutability": "mutable", + "name": "instance", + "nameLocation": "106806:8:10", + "nodeType": "VariableDeclaration", + "scope": 4416, + "src": "106798:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4404, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "106798:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "106797:18:10" + }, + "scope": 5104, + "src": "106687:215:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4429, + "nodeType": "Block", + "src": "107183:818:10", + "statements": [ + { + "AST": { + "nativeSrc": "107245:750:10", + "nodeType": "YulBlock", + "src": "107245:750:10", + "statements": [ + { + "nativeSrc": "107259:20:10", + "nodeType": "YulVariableDeclaration", + "src": "107259:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "107274:4:10", + "nodeType": "YulLiteral", + "src": "107274:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "107268:5:10", + "nodeType": "YulIdentifier", + "src": "107268:5:10" + }, + "nativeSrc": "107268:11:10", + "nodeType": "YulFunctionCall", + "src": "107268:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "107263:1:10", + "nodeType": "YulTypedName", + "src": "107263:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "107333:4:10", + "nodeType": "YulLiteral", + "src": "107333:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "107339:66:10", + "nodeType": "YulLiteral", + "src": "107339:66:10", + "type": "", + "value": "0xb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "107326:6:10", + "nodeType": "YulIdentifier", + "src": "107326:6:10" + }, + "nativeSrc": "107326:80:10", + "nodeType": "YulFunctionCall", + "src": "107326:80:10" + }, + "nativeSrc": "107326:80:10", + "nodeType": "YulExpressionStatement", + "src": "107326:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "107426:4:10", + "nodeType": "YulLiteral", + "src": "107426:4:10", + "type": "", + "value": "0x40" + }, + { + "kind": "number", + "nativeSrc": "107432:66:10", + "nodeType": "YulLiteral", + "src": "107432:66:10", + "type": "", + "value": "0x1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "107419:6:10", + "nodeType": "YulIdentifier", + "src": "107419:6:10" + }, + "nativeSrc": "107419:80:10", + "nodeType": "YulFunctionCall", + "src": "107419:80:10" + }, + "nativeSrc": "107419:80:10", + "nodeType": "YulExpressionStatement", + "src": "107419:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "107519:4:10", + "nodeType": "YulLiteral", + "src": "107519:4:10", + "type": "", + "value": "0x20" + }, + { + "kind": "number", + "nativeSrc": "107525:48:10", + "nodeType": "YulLiteral", + "src": "107525:48:10", + "type": "", + "value": "0x60195155f3363d3d373d3d363d602036600436635c60da" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "107512:6:10", + "nodeType": "YulIdentifier", + "src": "107512:6:10" + }, + "nativeSrc": "107512:62:10", + "nodeType": "YulFunctionCall", + "src": "107512:62:10" + }, + "nativeSrc": "107512:62:10", + "nodeType": "YulExpressionStatement", + "src": "107512:62:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "107594:4:10", + "nodeType": "YulLiteral", + "src": "107594:4:10", + "type": "", + "value": "0x09" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "107607:3:10", + "nodeType": "YulLiteral", + "src": "107607:3:10", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "107612:20:10", + "nodeType": "YulLiteral", + "src": "107612:20:10", + "type": "", + "value": "0x60523d8160223d3973" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "107603:3:10", + "nodeType": "YulIdentifier", + "src": "107603:3:10" + }, + "nativeSrc": "107603:30:10", + "nodeType": "YulFunctionCall", + "src": "107603:30:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "107639:2:10", + "nodeType": "YulLiteral", + "src": "107639:2:10", + "type": "", + "value": "96" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "107647:2:10", + "nodeType": "YulLiteral", + "src": "107647:2:10", + "type": "", + "value": "96" + }, + { + "name": "beacon", + "nativeSrc": "107651:6:10", + "nodeType": "YulIdentifier", + "src": "107651:6:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "107643:3:10", + "nodeType": "YulIdentifier", + "src": "107643:3:10" + }, + "nativeSrc": "107643:15:10", + "nodeType": "YulFunctionCall", + "src": "107643:15:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "107635:3:10", + "nodeType": "YulIdentifier", + "src": "107635:3:10" + }, + "nativeSrc": "107635:24:10", + "nodeType": "YulFunctionCall", + "src": "107635:24:10" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "107600:2:10", + "nodeType": "YulIdentifier", + "src": "107600:2:10" + }, + "nativeSrc": "107600:60:10", + "nodeType": "YulFunctionCall", + "src": "107600:60:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "107587:6:10", + "nodeType": "YulIdentifier", + "src": "107587:6:10" + }, + "nativeSrc": "107587:74:10", + "nodeType": "YulFunctionCall", + "src": "107587:74:10" + }, + "nativeSrc": "107587:74:10", + "nodeType": "YulExpressionStatement", + "src": "107587:74:10" + }, + { + "nativeSrc": "107674:44:10", + "nodeType": "YulAssignment", + "src": "107674:44:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "107694:5:10", + "nodeType": "YulIdentifier", + "src": "107694:5:10" + }, + { + "kind": "number", + "nativeSrc": "107701:4:10", + "nodeType": "YulLiteral", + "src": "107701:4:10", + "type": "", + "value": "0x0c" + }, + { + "kind": "number", + "nativeSrc": "107707:4:10", + "nodeType": "YulLiteral", + "src": "107707:4:10", + "type": "", + "value": "0x74" + }, + { + "name": "salt", + "nativeSrc": "107713:4:10", + "nodeType": "YulIdentifier", + "src": "107713:4:10" + } + ], + "functionName": { + "name": "create2", + "nativeSrc": "107686:7:10", + "nodeType": "YulIdentifier", + "src": "107686:7:10" + }, + "nativeSrc": "107686:32:10", + "nodeType": "YulFunctionCall", + "src": "107686:32:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "107674:8:10", + "nodeType": "YulIdentifier", + "src": "107674:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "107751:116:10", + "nodeType": "YulBlock", + "src": "107751:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "107776:4:10", + "nodeType": "YulLiteral", + "src": "107776:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "107782:10:10", + "nodeType": "YulLiteral", + "src": "107782:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "107769:6:10", + "nodeType": "YulIdentifier", + "src": "107769:6:10" + }, + "nativeSrc": "107769:24:10", + "nodeType": "YulFunctionCall", + "src": "107769:24:10" + }, + "nativeSrc": "107769:24:10", + "nodeType": "YulExpressionStatement", + "src": "107769:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "107842:4:10", + "nodeType": "YulLiteral", + "src": "107842:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "107848:4:10", + "nodeType": "YulLiteral", + "src": "107848:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "107835:6:10", + "nodeType": "YulIdentifier", + "src": "107835:6:10" + }, + "nativeSrc": "107835:18:10", + "nodeType": "YulFunctionCall", + "src": "107835:18:10" + }, + "nativeSrc": "107835:18:10", + "nodeType": "YulExpressionStatement", + "src": "107835:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "107741:8:10", + "nodeType": "YulIdentifier", + "src": "107741:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "107734:6:10", + "nodeType": "YulIdentifier", + "src": "107734:6:10" + }, + "nativeSrc": "107734:16:10", + "nodeType": "YulFunctionCall", + "src": "107734:16:10" + }, + "nativeSrc": "107731:136:10", + "nodeType": "YulIf", + "src": "107731:136:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "107887:4:10", + "nodeType": "YulLiteral", + "src": "107887:4:10", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "107893:1:10", + "nodeType": "YulIdentifier", + "src": "107893:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "107880:6:10", + "nodeType": "YulIdentifier", + "src": "107880:6:10" + }, + "nativeSrc": "107880:15:10", + "nodeType": "YulFunctionCall", + "src": "107880:15:10" + }, + "nativeSrc": "107880:15:10", + "nodeType": "YulExpressionStatement", + "src": "107880:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "107951:4:10", + "nodeType": "YulLiteral", + "src": "107951:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "107957:1:10", + "nodeType": "YulLiteral", + "src": "107957:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "107944:6:10", + "nodeType": "YulIdentifier", + "src": "107944:6:10" + }, + "nativeSrc": "107944:15:10", + "nodeType": "YulFunctionCall", + "src": "107944:15:10" + }, + "nativeSrc": "107944:15:10", + "nodeType": "YulExpressionStatement", + "src": "107944:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4421, + "isOffset": false, + "isSlot": false, + "src": "107651:6:10", + "valueSize": 1 + }, + { + "declaration": 4426, + "isOffset": false, + "isSlot": false, + "src": "107674:8:10", + "valueSize": 1 + }, + { + "declaration": 4426, + "isOffset": false, + "isSlot": false, + "src": "107741:8:10", + "valueSize": 1 + }, + { + "declaration": 4423, + "isOffset": false, + "isSlot": false, + "src": "107713:4:10", + "valueSize": 1 + }, + { + "declaration": 4419, + "isOffset": false, + "isSlot": false, + "src": "107694:5:10", + "valueSize": 1 + } + ], + "id": 4428, + "nodeType": "InlineAssembly", + "src": "107236:759:10" + } + ] + }, + "documentation": { + "id": 4417, + "nodeType": "StructuredDocumentation", + "src": "106908:122:10", + "text": "@dev Deploys a deterministic minimal ERC1967 beacon proxy with `salt`.\n Deposits `value` ETH during deployment." + }, + "id": 4430, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployDeterministicERC1967BeaconProxy", + "nameLocation": "107044:37:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4424, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4419, + "mutability": "mutable", + "name": "value", + "nameLocation": "107090:5:10", + "nodeType": "VariableDeclaration", + "scope": 4430, + "src": "107082:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4418, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "107082:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4421, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "107105:6:10", + "nodeType": "VariableDeclaration", + "scope": 4430, + "src": "107097:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4420, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "107097:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4423, + "mutability": "mutable", + "name": "salt", + "nameLocation": "107121:4:10", + "nodeType": "VariableDeclaration", + "scope": 4430, + "src": "107113:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4422, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "107113:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "107081:45:10" + }, + "returnParameters": { + "id": 4427, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4426, + "mutability": "mutable", + "name": "instance", + "nameLocation": "107169:8:10", + "nodeType": "VariableDeclaration", + "scope": 4430, + "src": "107161:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4425, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "107161:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "107160:18:10" + }, + "scope": 5104, + "src": "107035:966:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4448, + "nodeType": "Block", + "src": "108384:78:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "30", + "id": 4443, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "108439:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 4444, + "name": "beacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4433, + "src": "108442:6:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4445, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4435, + "src": "108450:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4442, + "name": "createDeterministicERC1967BeaconProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4449, + 4465, + 4605, + 4623 + ], + "referencedDeclaration": 4465, + "src": "108401:37:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$_t_bool_$_t_address_$", + "typeString": "function (uint256,address,bytes32) returns (bool,address)" + } + }, + "id": 4446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "108401:54:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_address_$", + "typeString": "tuple(bool,address)" + } + }, + "functionReturnParameters": 4441, + "id": 4447, + "nodeType": "Return", + "src": "108394:61:10" + } + ] + }, + "documentation": { + "id": 4431, + "nodeType": "StructuredDocumentation", + "src": "108007:217:10", + "text": "@dev Creates a deterministic minimal ERC1967 beacon proxy with `salt`.\n Note: This method is intended for use in ERC4337 factories,\n which are expected to NOT revert if the proxy is already deployed." + }, + "id": 4449, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createDeterministicERC1967BeaconProxy", + "nameLocation": "108238:37:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4436, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4433, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "108284:6:10", + "nodeType": "VariableDeclaration", + "scope": 4449, + "src": "108276:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4432, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "108276:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4435, + "mutability": "mutable", + "name": "salt", + "nameLocation": "108300:4:10", + "nodeType": "VariableDeclaration", + "scope": 4449, + "src": "108292:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4434, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "108292:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "108275:30:10" + }, + "returnParameters": { + "id": 4441, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4438, + "mutability": "mutable", + "name": "alreadyDeployed", + "nameLocation": "108345:15:10", + "nodeType": "VariableDeclaration", + "scope": 4449, + "src": "108340:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4437, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "108340:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4440, + "mutability": "mutable", + "name": "instance", + "nameLocation": "108370:8:10", + "nodeType": "VariableDeclaration", + "scope": 4449, + "src": "108362:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4439, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "108362:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "108339:40:10" + }, + "scope": 5104, + "src": "108229:233:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4464, + "nodeType": "Block", + "src": "108908:1599:10", + "statements": [ + { + "AST": { + "nativeSrc": "108970:1531:10", + "nodeType": "YulBlock", + "src": "108970:1531:10", + "statements": [ + { + "nativeSrc": "108984:20:10", + "nodeType": "YulVariableDeclaration", + "src": "108984:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "108999:4:10", + "nodeType": "YulLiteral", + "src": "108999:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "108993:5:10", + "nodeType": "YulIdentifier", + "src": "108993:5:10" + }, + "nativeSrc": "108993:11:10", + "nodeType": "YulFunctionCall", + "src": "108993:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "108988:1:10", + "nodeType": "YulTypedName", + "src": "108988:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "109058:4:10", + "nodeType": "YulLiteral", + "src": "109058:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "109064:66:10", + "nodeType": "YulLiteral", + "src": "109064:66:10", + "type": "", + "value": "0xb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "109051:6:10", + "nodeType": "YulIdentifier", + "src": "109051:6:10" + }, + "nativeSrc": "109051:80:10", + "nodeType": "YulFunctionCall", + "src": "109051:80:10" + }, + "nativeSrc": "109051:80:10", + "nodeType": "YulExpressionStatement", + "src": "109051:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "109151:4:10", + "nodeType": "YulLiteral", + "src": "109151:4:10", + "type": "", + "value": "0x40" + }, + { + "kind": "number", + "nativeSrc": "109157:66:10", + "nodeType": "YulLiteral", + "src": "109157:66:10", + "type": "", + "value": "0x1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "109144:6:10", + "nodeType": "YulIdentifier", + "src": "109144:6:10" + }, + "nativeSrc": "109144:80:10", + "nodeType": "YulFunctionCall", + "src": "109144:80:10" + }, + "nativeSrc": "109144:80:10", + "nodeType": "YulExpressionStatement", + "src": "109144:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "109244:4:10", + "nodeType": "YulLiteral", + "src": "109244:4:10", + "type": "", + "value": "0x20" + }, + { + "kind": "number", + "nativeSrc": "109250:48:10", + "nodeType": "YulLiteral", + "src": "109250:48:10", + "type": "", + "value": "0x60195155f3363d3d373d3d363d602036600436635c60da" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "109237:6:10", + "nodeType": "YulIdentifier", + "src": "109237:6:10" + }, + "nativeSrc": "109237:62:10", + "nodeType": "YulFunctionCall", + "src": "109237:62:10" + }, + "nativeSrc": "109237:62:10", + "nodeType": "YulExpressionStatement", + "src": "109237:62:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "109319:4:10", + "nodeType": "YulLiteral", + "src": "109319:4:10", + "type": "", + "value": "0x09" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "109332:3:10", + "nodeType": "YulLiteral", + "src": "109332:3:10", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "109337:20:10", + "nodeType": "YulLiteral", + "src": "109337:20:10", + "type": "", + "value": "0x60523d8160223d3973" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "109328:3:10", + "nodeType": "YulIdentifier", + "src": "109328:3:10" + }, + "nativeSrc": "109328:30:10", + "nodeType": "YulFunctionCall", + "src": "109328:30:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "109364:2:10", + "nodeType": "YulLiteral", + "src": "109364:2:10", + "type": "", + "value": "96" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "109372:2:10", + "nodeType": "YulLiteral", + "src": "109372:2:10", + "type": "", + "value": "96" + }, + { + "name": "beacon", + "nativeSrc": "109376:6:10", + "nodeType": "YulIdentifier", + "src": "109376:6:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "109368:3:10", + "nodeType": "YulIdentifier", + "src": "109368:3:10" + }, + "nativeSrc": "109368:15:10", + "nodeType": "YulFunctionCall", + "src": "109368:15:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "109360:3:10", + "nodeType": "YulIdentifier", + "src": "109360:3:10" + }, + "nativeSrc": "109360:24:10", + "nodeType": "YulFunctionCall", + "src": "109360:24:10" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "109325:2:10", + "nodeType": "YulIdentifier", + "src": "109325:2:10" + }, + "nativeSrc": "109325:60:10", + "nodeType": "YulFunctionCall", + "src": "109325:60:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "109312:6:10", + "nodeType": "YulIdentifier", + "src": "109312:6:10" + }, + "nativeSrc": "109312:74:10", + "nodeType": "YulFunctionCall", + "src": "109312:74:10" + }, + "nativeSrc": "109312:74:10", + "nodeType": "YulExpressionStatement", + "src": "109312:74:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "109462:1:10", + "nodeType": "YulIdentifier", + "src": "109462:1:10" + }, + { + "kind": "number", + "nativeSrc": "109465:4:10", + "nodeType": "YulLiteral", + "src": "109465:4:10", + "type": "", + "value": "0x35" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "109458:3:10", + "nodeType": "YulIdentifier", + "src": "109458:3:10" + }, + "nativeSrc": "109458:12:10", + "nodeType": "YulFunctionCall", + "src": "109458:12:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "109482:4:10", + "nodeType": "YulLiteral", + "src": "109482:4:10", + "type": "", + "value": "0x0c" + }, + { + "kind": "number", + "nativeSrc": "109488:4:10", + "nodeType": "YulLiteral", + "src": "109488:4:10", + "type": "", + "value": "0x74" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "109472:9:10", + "nodeType": "YulIdentifier", + "src": "109472:9:10" + }, + "nativeSrc": "109472:21:10", + "nodeType": "YulFunctionCall", + "src": "109472:21:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "109451:6:10", + "nodeType": "YulIdentifier", + "src": "109451:6:10" + }, + "nativeSrc": "109451:43:10", + "nodeType": "YulFunctionCall", + "src": "109451:43:10" + }, + "nativeSrc": "109451:43:10", + "nodeType": "YulExpressionStatement", + "src": "109451:43:10" + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "109514:1:10", + "nodeType": "YulIdentifier", + "src": "109514:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "109521:2:10", + "nodeType": "YulLiteral", + "src": "109521:2:10", + "type": "", + "value": "88" + }, + { + "arguments": [], + "functionName": { + "name": "address", + "nativeSrc": "109525:7:10", + "nodeType": "YulIdentifier", + "src": "109525:7:10" + }, + "nativeSrc": "109525:9:10", + "nodeType": "YulFunctionCall", + "src": "109525:9:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "109517:3:10", + "nodeType": "YulIdentifier", + "src": "109517:3:10" + }, + "nativeSrc": "109517:18:10", + "nodeType": "YulFunctionCall", + "src": "109517:18:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "109507:6:10", + "nodeType": "YulIdentifier", + "src": "109507:6:10" + }, + "nativeSrc": "109507:29:10", + "nodeType": "YulFunctionCall", + "src": "109507:29:10" + }, + "nativeSrc": "109507:29:10", + "nodeType": "YulExpressionStatement", + "src": "109507:29:10" + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "109557:1:10", + "nodeType": "YulIdentifier", + "src": "109557:1:10" + }, + { + "kind": "number", + "nativeSrc": "109560:4:10", + "nodeType": "YulLiteral", + "src": "109560:4:10", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "109549:7:10", + "nodeType": "YulIdentifier", + "src": "109549:7:10" + }, + "nativeSrc": "109549:16:10", + "nodeType": "YulFunctionCall", + "src": "109549:16:10" + }, + "nativeSrc": "109549:16:10", + "nodeType": "YulExpressionStatement", + "src": "109549:16:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "109610:1:10", + "nodeType": "YulIdentifier", + "src": "109610:1:10" + }, + { + "kind": "number", + "nativeSrc": "109613:4:10", + "nodeType": "YulLiteral", + "src": "109613:4:10", + "type": "", + "value": "0x15" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "109606:3:10", + "nodeType": "YulIdentifier", + "src": "109606:3:10" + }, + "nativeSrc": "109606:12:10", + "nodeType": "YulFunctionCall", + "src": "109606:12:10" + }, + { + "name": "salt", + "nativeSrc": "109620:4:10", + "nodeType": "YulIdentifier", + "src": "109620:4:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "109599:6:10", + "nodeType": "YulIdentifier", + "src": "109599:6:10" + }, + "nativeSrc": "109599:26:10", + "nodeType": "YulFunctionCall", + "src": "109599:26:10" + }, + "nativeSrc": "109599:26:10", + "nodeType": "YulExpressionStatement", + "src": "109599:26:10" + }, + { + "nativeSrc": "109638:30:10", + "nodeType": "YulAssignment", + "src": "109638:30:10", + "value": { + "arguments": [ + { + "name": "m", + "nativeSrc": "109660:1:10", + "nodeType": "YulIdentifier", + "src": "109660:1:10" + }, + { + "kind": "number", + "nativeSrc": "109663:4:10", + "nodeType": "YulLiteral", + "src": "109663:4:10", + "type": "", + "value": "0x55" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "109650:9:10", + "nodeType": "YulIdentifier", + "src": "109650:9:10" + }, + "nativeSrc": "109650:18:10", + "nodeType": "YulFunctionCall", + "src": "109650:18:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "109638:8:10", + "nodeType": "YulIdentifier", + "src": "109638:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "109693:680:10", + "nodeType": "YulBlock", + "src": "109693:680:10", + "statements": [ + { + "body": { + "nativeSrc": "109744:291:10", + "nodeType": "YulBlock", + "src": "109744:291:10", + "statements": [ + { + "nativeSrc": "109766:44:10", + "nodeType": "YulAssignment", + "src": "109766:44:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "109786:5:10", + "nodeType": "YulIdentifier", + "src": "109786:5:10" + }, + { + "kind": "number", + "nativeSrc": "109793:4:10", + "nodeType": "YulLiteral", + "src": "109793:4:10", + "type": "", + "value": "0x0c" + }, + { + "kind": "number", + "nativeSrc": "109799:4:10", + "nodeType": "YulLiteral", + "src": "109799:4:10", + "type": "", + "value": "0x74" + }, + { + "name": "salt", + "nativeSrc": "109805:4:10", + "nodeType": "YulIdentifier", + "src": "109805:4:10" + } + ], + "functionName": { + "name": "create2", + "nativeSrc": "109778:7:10", + "nodeType": "YulIdentifier", + "src": "109778:7:10" + }, + "nativeSrc": "109778:32:10", + "nodeType": "YulFunctionCall", + "src": "109778:32:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "109766:8:10", + "nodeType": "YulIdentifier", + "src": "109766:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "109851:140:10", + "nodeType": "YulBlock", + "src": "109851:140:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "109884:4:10", + "nodeType": "YulLiteral", + "src": "109884:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "109890:10:10", + "nodeType": "YulLiteral", + "src": "109890:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "109877:6:10", + "nodeType": "YulIdentifier", + "src": "109877:6:10" + }, + "nativeSrc": "109877:24:10", + "nodeType": "YulFunctionCall", + "src": "109877:24:10" + }, + "nativeSrc": "109877:24:10", + "nodeType": "YulExpressionStatement", + "src": "109877:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "109958:4:10", + "nodeType": "YulLiteral", + "src": "109958:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "109964:4:10", + "nodeType": "YulLiteral", + "src": "109964:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "109951:6:10", + "nodeType": "YulIdentifier", + "src": "109951:6:10" + }, + "nativeSrc": "109951:18:10", + "nodeType": "YulFunctionCall", + "src": "109951:18:10" + }, + "nativeSrc": "109951:18:10", + "nodeType": "YulExpressionStatement", + "src": "109951:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "109841:8:10", + "nodeType": "YulIdentifier", + "src": "109841:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "109834:6:10", + "nodeType": "YulIdentifier", + "src": "109834:6:10" + }, + "nativeSrc": "109834:16:10", + "nodeType": "YulFunctionCall", + "src": "109834:16:10" + }, + "nativeSrc": "109831:160:10", + "nodeType": "YulIf", + "src": "109831:160:10" + }, + { + "nativeSrc": "110012:5:10", + "nodeType": "YulBreak", + "src": "110012:5:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "109733:8:10", + "nodeType": "YulIdentifier", + "src": "109733:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "109721:11:10", + "nodeType": "YulIdentifier", + "src": "109721:11:10" + }, + "nativeSrc": "109721:21:10", + "nodeType": "YulFunctionCall", + "src": "109721:21:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "109714:6:10", + "nodeType": "YulIdentifier", + "src": "109714:6:10" + }, + "nativeSrc": "109714:29:10", + "nodeType": "YulFunctionCall", + "src": "109714:29:10" + }, + "nativeSrc": "109711:324:10", + "nodeType": "YulIf", + "src": "109711:324:10" + }, + { + "nativeSrc": "110052:20:10", + "nodeType": "YulAssignment", + "src": "110052:20:10", + "value": { + "kind": "number", + "nativeSrc": "110071:1:10", + "nodeType": "YulLiteral", + "src": "110071:1:10", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "alreadyDeployed", + "nativeSrc": "110052:15:10", + "nodeType": "YulIdentifier", + "src": "110052:15:10" + } + ] + }, + { + "body": { + "nativeSrc": "110106:9:10", + "nodeType": "YulBlock", + "src": "110106:9:10", + "statements": [ + { + "nativeSrc": "110108:5:10", + "nodeType": "YulBreak", + "src": "110108:5:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nativeSrc": "110099:5:10", + "nodeType": "YulIdentifier", + "src": "110099:5:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "110092:6:10", + "nodeType": "YulIdentifier", + "src": "110092:6:10" + }, + "nativeSrc": "110092:13:10", + "nodeType": "YulFunctionCall", + "src": "110092:13:10" + }, + "nativeSrc": "110089:26:10", + "nodeType": "YulIf", + "src": "110089:26:10" + }, + { + "body": { + "nativeSrc": "110208:129:10", + "nodeType": "YulBlock", + "src": "110208:129:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "110237:4:10", + "nodeType": "YulLiteral", + "src": "110237:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "110243:10:10", + "nodeType": "YulLiteral", + "src": "110243:10:10", + "type": "", + "value": "0xb12d13eb" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "110230:6:10", + "nodeType": "YulIdentifier", + "src": "110230:6:10" + }, + "nativeSrc": "110230:24:10", + "nodeType": "YulFunctionCall", + "src": "110230:24:10" + }, + "nativeSrc": "110230:24:10", + "nodeType": "YulExpressionStatement", + "src": "110230:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "110308:4:10", + "nodeType": "YulLiteral", + "src": "110308:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "110314:4:10", + "nodeType": "YulLiteral", + "src": "110314:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "110301:6:10", + "nodeType": "YulIdentifier", + "src": "110301:6:10" + }, + "nativeSrc": "110301:18:10", + "nodeType": "YulFunctionCall", + "src": "110301:18:10" + }, + "nativeSrc": "110301:18:10", + "nodeType": "YulExpressionStatement", + "src": "110301:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "110147:3:10", + "nodeType": "YulIdentifier", + "src": "110147:3:10" + }, + "nativeSrc": "110147:5:10", + "nodeType": "YulFunctionCall", + "src": "110147:5:10" + }, + { + "name": "instance", + "nativeSrc": "110154:8:10", + "nodeType": "YulIdentifier", + "src": "110154:8:10" + }, + { + "name": "value", + "nativeSrc": "110164:5:10", + "nodeType": "YulIdentifier", + "src": "110164:5:10" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "110171:8:10", + "nodeType": "YulIdentifier", + "src": "110171:8:10" + }, + "nativeSrc": "110171:10:10", + "nodeType": "YulFunctionCall", + "src": "110171:10:10" + }, + { + "kind": "number", + "nativeSrc": "110183:4:10", + "nodeType": "YulLiteral", + "src": "110183:4:10", + "type": "", + "value": "0x00" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "110189:8:10", + "nodeType": "YulIdentifier", + "src": "110189:8:10" + }, + "nativeSrc": "110189:10:10", + "nodeType": "YulFunctionCall", + "src": "110189:10:10" + }, + { + "kind": "number", + "nativeSrc": "110201:4:10", + "nodeType": "YulLiteral", + "src": "110201:4:10", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "call", + "nativeSrc": "110142:4:10", + "nodeType": "YulIdentifier", + "src": "110142:4:10" + }, + "nativeSrc": "110142:64:10", + "nodeType": "YulFunctionCall", + "src": "110142:64:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "110135:6:10", + "nodeType": "YulIdentifier", + "src": "110135:6:10" + }, + "nativeSrc": "110135:72:10", + "nodeType": "YulFunctionCall", + "src": "110135:72:10" + }, + "nativeSrc": "110132:205:10", + "nodeType": "YulIf", + "src": "110132:205:10" + }, + { + "nativeSrc": "110354:5:10", + "nodeType": "YulBreak", + "src": "110354:5:10" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "109688:1:10", + "nodeType": "YulLiteral", + "src": "109688:1:10", + "type": "", + "value": "1" + }, + "nativeSrc": "109681:692:10", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "109690:2:10", + "nodeType": "YulBlock", + "src": "109690:2:10", + "statements": [] + }, + "pre": { + "nativeSrc": "109685:2:10", + "nodeType": "YulBlock", + "src": "109685:2:10", + "statements": [] + }, + "src": "109681:692:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "110393:4:10", + "nodeType": "YulLiteral", + "src": "110393:4:10", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "110399:1:10", + "nodeType": "YulIdentifier", + "src": "110399:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "110386:6:10", + "nodeType": "YulIdentifier", + "src": "110386:6:10" + }, + "nativeSrc": "110386:15:10", + "nodeType": "YulFunctionCall", + "src": "110386:15:10" + }, + "nativeSrc": "110386:15:10", + "nodeType": "YulExpressionStatement", + "src": "110386:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "110457:4:10", + "nodeType": "YulLiteral", + "src": "110457:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "110463:1:10", + "nodeType": "YulLiteral", + "src": "110463:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "110450:6:10", + "nodeType": "YulIdentifier", + "src": "110450:6:10" + }, + "nativeSrc": "110450:15:10", + "nodeType": "YulFunctionCall", + "src": "110450:15:10" + }, + "nativeSrc": "110450:15:10", + "nodeType": "YulExpressionStatement", + "src": "110450:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4459, + "isOffset": false, + "isSlot": false, + "src": "110052:15:10", + "valueSize": 1 + }, + { + "declaration": 4454, + "isOffset": false, + "isSlot": false, + "src": "109376:6:10", + "valueSize": 1 + }, + { + "declaration": 4461, + "isOffset": false, + "isSlot": false, + "src": "109638:8:10", + "valueSize": 1 + }, + { + "declaration": 4461, + "isOffset": false, + "isSlot": false, + "src": "109733:8:10", + "valueSize": 1 + }, + { + "declaration": 4461, + "isOffset": false, + "isSlot": false, + "src": "109766:8:10", + "valueSize": 1 + }, + { + "declaration": 4461, + "isOffset": false, + "isSlot": false, + "src": "109841:8:10", + "valueSize": 1 + }, + { + "declaration": 4461, + "isOffset": false, + "isSlot": false, + "src": "110154:8:10", + "valueSize": 1 + }, + { + "declaration": 4456, + "isOffset": false, + "isSlot": false, + "src": "109620:4:10", + "valueSize": 1 + }, + { + "declaration": 4456, + "isOffset": false, + "isSlot": false, + "src": "109805:4:10", + "valueSize": 1 + }, + { + "declaration": 4452, + "isOffset": false, + "isSlot": false, + "src": "109786:5:10", + "valueSize": 1 + }, + { + "declaration": 4452, + "isOffset": false, + "isSlot": false, + "src": "110099:5:10", + "valueSize": 1 + }, + { + "declaration": 4452, + "isOffset": false, + "isSlot": false, + "src": "110164:5:10", + "valueSize": 1 + } + ], + "id": 4463, + "nodeType": "InlineAssembly", + "src": "108961:1540:10" + } + ] + }, + "documentation": { + "id": 4450, + "nodeType": "StructuredDocumentation", + "src": "108468:265:10", + "text": "@dev Creates a deterministic minimal ERC1967 beacon proxy with `salt`.\n Deposits `value` ETH during deployment.\n Note: This method is intended for use in ERC4337 factories,\n which are expected to NOT revert if the proxy is already deployed." + }, + "id": 4465, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createDeterministicERC1967BeaconProxy", + "nameLocation": "108747:37:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4457, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4452, + "mutability": "mutable", + "name": "value", + "nameLocation": "108793:5:10", + "nodeType": "VariableDeclaration", + "scope": 4465, + "src": "108785:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4451, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "108785:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4454, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "108808:6:10", + "nodeType": "VariableDeclaration", + "scope": 4465, + "src": "108800:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4453, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "108800:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4456, + "mutability": "mutable", + "name": "salt", + "nameLocation": "108824:4:10", + "nodeType": "VariableDeclaration", + "scope": 4465, + "src": "108816:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4455, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "108816:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "108784:45:10" + }, + "returnParameters": { + "id": 4462, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4459, + "mutability": "mutable", + "name": "alreadyDeployed", + "nameLocation": "108869:15:10", + "nodeType": "VariableDeclaration", + "scope": 4465, + "src": "108864:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4458, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "108864:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4461, + "mutability": "mutable", + "name": "instance", + "nameLocation": "108894:8:10", + "nodeType": "VariableDeclaration", + "scope": 4465, + "src": "108886:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4460, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "108886:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "108863:40:10" + }, + "scope": 5104, + "src": "108738:1769:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4474, + "nodeType": "Block", + "src": "110686:633:10", + "statements": [ + { + "AST": { + "nativeSrc": "110748:565:10", + "nodeType": "YulBlock", + "src": "110748:565:10", + "statements": [ + { + "nativeSrc": "110762:16:10", + "nodeType": "YulAssignment", + "src": "110762:16:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "110773:4:10", + "nodeType": "YulLiteral", + "src": "110773:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "110767:5:10", + "nodeType": "YulIdentifier", + "src": "110767:5:10" + }, + "nativeSrc": "110767:11:10", + "nodeType": "YulFunctionCall", + "src": "110767:11:10" + }, + "variableNames": [ + { + "name": "c", + "nativeSrc": "110762:1:10", + "nodeType": "YulIdentifier", + "src": "110762:1:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "110802:1:10", + "nodeType": "YulIdentifier", + "src": "110802:1:10" + }, + { + "kind": "number", + "nativeSrc": "110805:4:10", + "nodeType": "YulLiteral", + "src": "110805:4:10", + "type": "", + "value": "0x74" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "110798:3:10", + "nodeType": "YulIdentifier", + "src": "110798:3:10" + }, + "nativeSrc": "110798:12:10", + "nodeType": "YulFunctionCall", + "src": "110798:12:10" + }, + { + "kind": "number", + "nativeSrc": "110812:66:10", + "nodeType": "YulLiteral", + "src": "110812:66:10", + "type": "", + "value": "0xb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "110791:6:10", + "nodeType": "YulIdentifier", + "src": "110791:6:10" + }, + "nativeSrc": "110791:88:10", + "nodeType": "YulFunctionCall", + "src": "110791:88:10" + }, + "nativeSrc": "110791:88:10", + "nodeType": "YulExpressionStatement", + "src": "110791:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "110903:1:10", + "nodeType": "YulIdentifier", + "src": "110903:1:10" + }, + { + "kind": "number", + "nativeSrc": "110906:4:10", + "nodeType": "YulLiteral", + "src": "110906:4:10", + "type": "", + "value": "0x54" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "110899:3:10", + "nodeType": "YulIdentifier", + "src": "110899:3:10" + }, + "nativeSrc": "110899:12:10", + "nodeType": "YulFunctionCall", + "src": "110899:12:10" + }, + { + "kind": "number", + "nativeSrc": "110913:66:10", + "nodeType": "YulLiteral", + "src": "110913:66:10", + "type": "", + "value": "0x1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "110892:6:10", + "nodeType": "YulIdentifier", + "src": "110892:6:10" + }, + "nativeSrc": "110892:88:10", + "nodeType": "YulFunctionCall", + "src": "110892:88:10" + }, + "nativeSrc": "110892:88:10", + "nodeType": "YulExpressionStatement", + "src": "110892:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "111004:1:10", + "nodeType": "YulIdentifier", + "src": "111004:1:10" + }, + { + "kind": "number", + "nativeSrc": "111007:4:10", + "nodeType": "YulLiteral", + "src": "111007:4:10", + "type": "", + "value": "0x34" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "111000:3:10", + "nodeType": "YulIdentifier", + "src": "111000:3:10" + }, + "nativeSrc": "111000:12:10", + "nodeType": "YulFunctionCall", + "src": "111000:12:10" + }, + { + "kind": "number", + "nativeSrc": "111014:48:10", + "nodeType": "YulLiteral", + "src": "111014:48:10", + "type": "", + "value": "0x60195155f3363d3d373d3d363d602036600436635c60da" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "110993:6:10", + "nodeType": "YulIdentifier", + "src": "110993:6:10" + }, + "nativeSrc": "110993:70:10", + "nodeType": "YulFunctionCall", + "src": "110993:70:10" + }, + "nativeSrc": "110993:70:10", + "nodeType": "YulExpressionStatement", + "src": "110993:70:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "111087:1:10", + "nodeType": "YulIdentifier", + "src": "111087:1:10" + }, + { + "kind": "number", + "nativeSrc": "111090:4:10", + "nodeType": "YulLiteral", + "src": "111090:4:10", + "type": "", + "value": "0x1d" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "111083:3:10", + "nodeType": "YulIdentifier", + "src": "111083:3:10" + }, + "nativeSrc": "111083:12:10", + "nodeType": "YulFunctionCall", + "src": "111083:12:10" + }, + { + "name": "beacon", + "nativeSrc": "111097:6:10", + "nodeType": "YulIdentifier", + "src": "111097:6:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "111076:6:10", + "nodeType": "YulIdentifier", + "src": "111076:6:10" + }, + "nativeSrc": "111076:28:10", + "nodeType": "YulFunctionCall", + "src": "111076:28:10" + }, + "nativeSrc": "111076:28:10", + "nodeType": "YulExpressionStatement", + "src": "111076:28:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "111128:1:10", + "nodeType": "YulIdentifier", + "src": "111128:1:10" + }, + { + "kind": "number", + "nativeSrc": "111131:4:10", + "nodeType": "YulLiteral", + "src": "111131:4:10", + "type": "", + "value": "0x09" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "111124:3:10", + "nodeType": "YulIdentifier", + "src": "111124:3:10" + }, + "nativeSrc": "111124:12:10", + "nodeType": "YulFunctionCall", + "src": "111124:12:10" + }, + { + "kind": "number", + "nativeSrc": "111138:20:10", + "nodeType": "YulLiteral", + "src": "111138:20:10", + "type": "", + "value": "0x60523d8160223d3973" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "111117:6:10", + "nodeType": "YulIdentifier", + "src": "111117:6:10" + }, + "nativeSrc": "111117:42:10", + "nodeType": "YulFunctionCall", + "src": "111117:42:10" + }, + "nativeSrc": "111117:42:10", + "nodeType": "YulExpressionStatement", + "src": "111117:42:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "111183:1:10", + "nodeType": "YulIdentifier", + "src": "111183:1:10" + }, + { + "kind": "number", + "nativeSrc": "111186:4:10", + "nodeType": "YulLiteral", + "src": "111186:4:10", + "type": "", + "value": "0x94" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "111179:3:10", + "nodeType": "YulIdentifier", + "src": "111179:3:10" + }, + "nativeSrc": "111179:12:10", + "nodeType": "YulFunctionCall", + "src": "111179:12:10" + }, + { + "kind": "number", + "nativeSrc": "111193:1:10", + "nodeType": "YulLiteral", + "src": "111193:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "111172:6:10", + "nodeType": "YulIdentifier", + "src": "111172:6:10" + }, + "nativeSrc": "111172:23:10", + "nodeType": "YulFunctionCall", + "src": "111172:23:10" + }, + "nativeSrc": "111172:23:10", + "nodeType": "YulExpressionStatement", + "src": "111172:23:10" + }, + { + "expression": { + "arguments": [ + { + "name": "c", + "nativeSrc": "111215:1:10", + "nodeType": "YulIdentifier", + "src": "111215:1:10" + }, + { + "kind": "number", + "nativeSrc": "111218:4:10", + "nodeType": "YulLiteral", + "src": "111218:4:10", + "type": "", + "value": "0x74" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "111208:6:10", + "nodeType": "YulIdentifier", + "src": "111208:6:10" + }, + "nativeSrc": "111208:15:10", + "nodeType": "YulFunctionCall", + "src": "111208:15:10" + }, + "nativeSrc": "111208:15:10", + "nodeType": "YulExpressionStatement", + "src": "111208:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "111264:4:10", + "nodeType": "YulLiteral", + "src": "111264:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "c", + "nativeSrc": "111274:1:10", + "nodeType": "YulIdentifier", + "src": "111274:1:10" + }, + { + "kind": "number", + "nativeSrc": "111277:4:10", + "nodeType": "YulLiteral", + "src": "111277:4:10", + "type": "", + "value": "0xa0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "111270:3:10", + "nodeType": "YulIdentifier", + "src": "111270:3:10" + }, + "nativeSrc": "111270:12:10", + "nodeType": "YulFunctionCall", + "src": "111270:12:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "111257:6:10", + "nodeType": "YulIdentifier", + "src": "111257:6:10" + }, + "nativeSrc": "111257:26:10", + "nodeType": "YulFunctionCall", + "src": "111257:26:10" + }, + "nativeSrc": "111257:26:10", + "nodeType": "YulExpressionStatement", + "src": "111257:26:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4468, + "isOffset": false, + "isSlot": false, + "src": "111097:6:10", + "valueSize": 1 + }, + { + "declaration": 4471, + "isOffset": false, + "isSlot": false, + "src": "110762:1:10", + "valueSize": 1 + }, + { + "declaration": 4471, + "isOffset": false, + "isSlot": false, + "src": "110802:1:10", + "valueSize": 1 + }, + { + "declaration": 4471, + "isOffset": false, + "isSlot": false, + "src": "110903:1:10", + "valueSize": 1 + }, + { + "declaration": 4471, + "isOffset": false, + "isSlot": false, + "src": "111004:1:10", + "valueSize": 1 + }, + { + "declaration": 4471, + "isOffset": false, + "isSlot": false, + "src": "111087:1:10", + "valueSize": 1 + }, + { + "declaration": 4471, + "isOffset": false, + "isSlot": false, + "src": "111128:1:10", + "valueSize": 1 + }, + { + "declaration": 4471, + "isOffset": false, + "isSlot": false, + "src": "111183:1:10", + "valueSize": 1 + }, + { + "declaration": 4471, + "isOffset": false, + "isSlot": false, + "src": "111215:1:10", + "valueSize": 1 + }, + { + "declaration": 4471, + "isOffset": false, + "isSlot": false, + "src": "111274:1:10", + "valueSize": 1 + } + ], + "id": 4473, + "nodeType": "InlineAssembly", + "src": "110739:574:10" + } + ] + }, + "documentation": { + "id": 4466, + "nodeType": "StructuredDocumentation", + "src": "110513:77:10", + "text": "@dev Returns the initialization code of the minimal ERC1967 beacon proxy." + }, + "id": 4475, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeERC1967BeaconProxy", + "nameLocation": "110604:26:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4469, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4468, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "110639:6:10", + "nodeType": "VariableDeclaration", + "scope": 4475, + "src": "110631:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4467, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "110631:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "110630:16:10" + }, + "returnParameters": { + "id": 4472, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4471, + "mutability": "mutable", + "name": "c", + "nameLocation": "110683:1:10", + "nodeType": "VariableDeclaration", + "scope": 4475, + "src": "110670:14:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4470, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "110670:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "110669:16:10" + }, + "scope": 5104, + "src": "110595:724:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4484, + "nodeType": "Block", + "src": "111505:654:10", + "statements": [ + { + "AST": { + "nativeSrc": "111567:586:10", + "nodeType": "YulBlock", + "src": "111567:586:10", + "statements": [ + { + "nativeSrc": "111581:20:10", + "nodeType": "YulVariableDeclaration", + "src": "111581:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "111596:4:10", + "nodeType": "YulLiteral", + "src": "111596:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "111590:5:10", + "nodeType": "YulIdentifier", + "src": "111590:5:10" + }, + "nativeSrc": "111590:11:10", + "nodeType": "YulFunctionCall", + "src": "111590:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "111585:1:10", + "nodeType": "YulTypedName", + "src": "111585:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "111655:4:10", + "nodeType": "YulLiteral", + "src": "111655:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "111661:66:10", + "nodeType": "YulLiteral", + "src": "111661:66:10", + "type": "", + "value": "0xb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "111648:6:10", + "nodeType": "YulIdentifier", + "src": "111648:6:10" + }, + "nativeSrc": "111648:80:10", + "nodeType": "YulFunctionCall", + "src": "111648:80:10" + }, + "nativeSrc": "111648:80:10", + "nodeType": "YulExpressionStatement", + "src": "111648:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "111748:4:10", + "nodeType": "YulLiteral", + "src": "111748:4:10", + "type": "", + "value": "0x40" + }, + { + "kind": "number", + "nativeSrc": "111754:66:10", + "nodeType": "YulLiteral", + "src": "111754:66:10", + "type": "", + "value": "0x1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "111741:6:10", + "nodeType": "YulIdentifier", + "src": "111741:6:10" + }, + "nativeSrc": "111741:80:10", + "nodeType": "YulFunctionCall", + "src": "111741:80:10" + }, + "nativeSrc": "111741:80:10", + "nodeType": "YulExpressionStatement", + "src": "111741:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "111841:4:10", + "nodeType": "YulLiteral", + "src": "111841:4:10", + "type": "", + "value": "0x20" + }, + { + "kind": "number", + "nativeSrc": "111847:48:10", + "nodeType": "YulLiteral", + "src": "111847:48:10", + "type": "", + "value": "0x60195155f3363d3d373d3d363d602036600436635c60da" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "111834:6:10", + "nodeType": "YulIdentifier", + "src": "111834:6:10" + }, + "nativeSrc": "111834:62:10", + "nodeType": "YulFunctionCall", + "src": "111834:62:10" + }, + "nativeSrc": "111834:62:10", + "nodeType": "YulExpressionStatement", + "src": "111834:62:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "111916:4:10", + "nodeType": "YulLiteral", + "src": "111916:4:10", + "type": "", + "value": "0x09" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "111929:3:10", + "nodeType": "YulLiteral", + "src": "111929:3:10", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "111934:20:10", + "nodeType": "YulLiteral", + "src": "111934:20:10", + "type": "", + "value": "0x60523d8160223d3973" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "111925:3:10", + "nodeType": "YulIdentifier", + "src": "111925:3:10" + }, + "nativeSrc": "111925:30:10", + "nodeType": "YulFunctionCall", + "src": "111925:30:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "111961:2:10", + "nodeType": "YulLiteral", + "src": "111961:2:10", + "type": "", + "value": "96" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "111969:2:10", + "nodeType": "YulLiteral", + "src": "111969:2:10", + "type": "", + "value": "96" + }, + { + "name": "beacon", + "nativeSrc": "111973:6:10", + "nodeType": "YulIdentifier", + "src": "111973:6:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "111965:3:10", + "nodeType": "YulIdentifier", + "src": "111965:3:10" + }, + "nativeSrc": "111965:15:10", + "nodeType": "YulFunctionCall", + "src": "111965:15:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "111957:3:10", + "nodeType": "YulIdentifier", + "src": "111957:3:10" + }, + "nativeSrc": "111957:24:10", + "nodeType": "YulFunctionCall", + "src": "111957:24:10" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "111922:2:10", + "nodeType": "YulIdentifier", + "src": "111922:2:10" + }, + "nativeSrc": "111922:60:10", + "nodeType": "YulFunctionCall", + "src": "111922:60:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "111909:6:10", + "nodeType": "YulIdentifier", + "src": "111909:6:10" + }, + "nativeSrc": "111909:74:10", + "nodeType": "YulFunctionCall", + "src": "111909:74:10" + }, + "nativeSrc": "111909:74:10", + "nodeType": "YulExpressionStatement", + "src": "111909:74:10" + }, + { + "nativeSrc": "111996:29:10", + "nodeType": "YulAssignment", + "src": "111996:29:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "112014:4:10", + "nodeType": "YulLiteral", + "src": "112014:4:10", + "type": "", + "value": "0x0c" + }, + { + "kind": "number", + "nativeSrc": "112020:4:10", + "nodeType": "YulLiteral", + "src": "112020:4:10", + "type": "", + "value": "0x74" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "112004:9:10", + "nodeType": "YulIdentifier", + "src": "112004:9:10" + }, + "nativeSrc": "112004:21:10", + "nodeType": "YulFunctionCall", + "src": "112004:21:10" + }, + "variableNames": [ + { + "name": "hash", + "nativeSrc": "111996:4:10", + "nodeType": "YulIdentifier", + "src": "111996:4:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "112045:4:10", + "nodeType": "YulLiteral", + "src": "112045:4:10", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "112051:1:10", + "nodeType": "YulIdentifier", + "src": "112051:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "112038:6:10", + "nodeType": "YulIdentifier", + "src": "112038:6:10" + }, + "nativeSrc": "112038:15:10", + "nodeType": "YulFunctionCall", + "src": "112038:15:10" + }, + "nativeSrc": "112038:15:10", + "nodeType": "YulExpressionStatement", + "src": "112038:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "112109:4:10", + "nodeType": "YulLiteral", + "src": "112109:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "112115:1:10", + "nodeType": "YulLiteral", + "src": "112115:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "112102:6:10", + "nodeType": "YulIdentifier", + "src": "112102:6:10" + }, + "nativeSrc": "112102:15:10", + "nodeType": "YulFunctionCall", + "src": "112102:15:10" + }, + "nativeSrc": "112102:15:10", + "nodeType": "YulExpressionStatement", + "src": "112102:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4478, + "isOffset": false, + "isSlot": false, + "src": "111973:6:10", + "valueSize": 1 + }, + { + "declaration": 4481, + "isOffset": false, + "isSlot": false, + "src": "111996:4:10", + "valueSize": 1 + } + ], + "id": 4483, + "nodeType": "InlineAssembly", + "src": "111558:595:10" + } + ] + }, + "documentation": { + "id": 4476, + "nodeType": "StructuredDocumentation", + "src": "111325:82:10", + "text": "@dev Returns the initialization code hash of the minimal ERC1967 beacon proxy." + }, + "id": 4485, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeHashERC1967BeaconProxy", + "nameLocation": "111421:30:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4479, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4478, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "111460:6:10", + "nodeType": "VariableDeclaration", + "scope": 4485, + "src": "111452:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4477, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "111452:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "111451:16:10" + }, + "returnParameters": { + "id": 4482, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4481, + "mutability": "mutable", + "name": "hash", + "nameLocation": "111499:4:10", + "nodeType": "VariableDeclaration", + "scope": 4485, + "src": "111491:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4480, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "111491:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "111490:14:10" + }, + "scope": 5104, + "src": "111412:747:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4511, + "nodeType": "Block", + "src": "112522:141:10", + "statements": [ + { + "assignments": [ + 4498 + ], + "declarations": [ + { + "constant": false, + "id": 4498, + "mutability": "mutable", + "name": "hash", + "nameLocation": "112540:4:10", + "nodeType": "VariableDeclaration", + "scope": 4511, + "src": "112532:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4497, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "112532:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 4502, + "initialValue": { + "arguments": [ + { + "id": 4500, + "name": "beacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4488, + "src": "112578:6:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4499, + "name": "initCodeHashERC1967BeaconProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4485, + 4647 + ], + "referencedDeclaration": 4485, + "src": "112547:30:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_bytes32_$", + "typeString": "function (address) pure returns (bytes32)" + } + }, + "id": 4501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "112547:38:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "112532:53:10" + }, + { + "expression": { + "id": 4509, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4503, + "name": "predicted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4495, + "src": "112595:9:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 4505, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4498, + "src": "112635:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 4506, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4490, + "src": "112641:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 4507, + "name": "deployer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4492, + "src": "112647:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4504, + "name": "predictDeterministicAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3237, + 3510, + 5081 + ], + "referencedDeclaration": 5081, + "src": "112607:27:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_address_$", + "typeString": "function (bytes32,bytes32,address) pure returns (address)" + } + }, + "id": 4508, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "112607:49:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "112595:61:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4510, + "nodeType": "ExpressionStatement", + "src": "112595:61:10" + } + ] + }, + "documentation": { + "id": 4486, + "nodeType": "StructuredDocumentation", + "src": "112165:177:10", + "text": "@dev Returns the address of the ERC1967 beacon proxy, with `salt` by `deployer`.\n Note: The returned result has dirty upper 96 bits. Please clean if used in assembly." + }, + "id": 4512, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "predictDeterministicAddressERC1967BeaconProxy", + "nameLocation": "112356:45:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4493, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4488, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "112419:6:10", + "nodeType": "VariableDeclaration", + "scope": 4512, + "src": "112411:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4487, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "112411:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4490, + "mutability": "mutable", + "name": "salt", + "nameLocation": "112443:4:10", + "nodeType": "VariableDeclaration", + "scope": 4512, + "src": "112435:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4489, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "112435:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4492, + "mutability": "mutable", + "name": "deployer", + "nameLocation": "112465:8:10", + "nodeType": "VariableDeclaration", + "scope": 4512, + "src": "112457:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4491, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "112457:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "112401:78:10" + }, + "returnParameters": { + "id": 4496, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4495, + "mutability": "mutable", + "name": "predicted", + "nameLocation": "112511:9:10", + "nodeType": "VariableDeclaration", + "scope": 4512, + "src": "112503:17:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4494, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "112503:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "112502:19:10" + }, + "scope": 5104, + "src": "112347:316:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4530, + "nodeType": "Block", + "src": "113142:69:10", + "statements": [ + { + "expression": { + "id": 4528, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4522, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4520, + "src": "113152:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 4524, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "113188:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 4525, + "name": "beacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4515, + "src": "113191:6:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4526, + "name": "args", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4517, + "src": "113199:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 4523, + "name": "deployERC1967BeaconProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4385, + 4397, + 4531, + 4545 + ], + "referencedDeclaration": 4545, + "src": "113163:24:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$", + "typeString": "function (uint256,address,bytes memory) returns (address)" + } + }, + "id": 4527, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "113163:41:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "113152:52:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4529, + "nodeType": "ExpressionStatement", + "src": "113152:52:10" + } + ] + }, + "documentation": { + "id": 4513, + "nodeType": "StructuredDocumentation", + "src": "112952:60:10", + "text": "@dev Deploys a minimal ERC1967 beacon proxy with `args`." + }, + "id": 4531, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployERC1967BeaconProxy", + "nameLocation": "113026:24:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4518, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4515, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "113059:6:10", + "nodeType": "VariableDeclaration", + "scope": 4531, + "src": "113051:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4514, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "113051:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4517, + "mutability": "mutable", + "name": "args", + "nameLocation": "113080:4:10", + "nodeType": "VariableDeclaration", + "scope": 4531, + "src": "113067:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4516, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "113067:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "113050:35:10" + }, + "returnParameters": { + "id": 4521, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4520, + "mutability": "mutable", + "name": "instance", + "nameLocation": "113128:8:10", + "nodeType": "VariableDeclaration", + "scope": 4531, + "src": "113120:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4519, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "113120:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "113119:18:10" + }, + "scope": 5104, + "src": "113017:194:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4544, + "nodeType": "Block", + "src": "113470:933:10", + "statements": [ + { + "AST": { + "nativeSrc": "113532:865:10", + "nodeType": "YulBlock", + "src": "113532:865:10", + "statements": [ + { + "nativeSrc": "113546:20:10", + "nodeType": "YulVariableDeclaration", + "src": "113546:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "113561:4:10", + "nodeType": "YulLiteral", + "src": "113561:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "113555:5:10", + "nodeType": "YulIdentifier", + "src": "113555:5:10" + }, + "nativeSrc": "113555:11:10", + "nodeType": "YulFunctionCall", + "src": "113555:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "113550:1:10", + "nodeType": "YulTypedName", + "src": "113550:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "113579:20:10", + "nodeType": "YulVariableDeclaration", + "src": "113579:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "113594:4:10", + "nodeType": "YulIdentifier", + "src": "113594:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "113588:5:10", + "nodeType": "YulIdentifier", + "src": "113588:5:10" + }, + "nativeSrc": "113588:11:10", + "nodeType": "YulFunctionCall", + "src": "113588:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "113583:1:10", + "nodeType": "YulTypedName", + "src": "113583:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "113627:3:10", + "nodeType": "YulIdentifier", + "src": "113627:3:10" + }, + "nativeSrc": "113627:5:10", + "nodeType": "YulFunctionCall", + "src": "113627:5:10" + }, + { + "kind": "number", + "nativeSrc": "113634:1:10", + "nodeType": "YulLiteral", + "src": "113634:1:10", + "type": "", + "value": "4" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "113641:4:10", + "nodeType": "YulIdentifier", + "src": "113641:4:10" + }, + { + "kind": "number", + "nativeSrc": "113647:4:10", + "nodeType": "YulLiteral", + "src": "113647:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "113637:3:10", + "nodeType": "YulIdentifier", + "src": "113637:3:10" + }, + "nativeSrc": "113637:15:10", + "nodeType": "YulFunctionCall", + "src": "113637:15:10" + }, + { + "name": "n", + "nativeSrc": "113654:1:10", + "nodeType": "YulIdentifier", + "src": "113654:1:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "113661:1:10", + "nodeType": "YulIdentifier", + "src": "113661:1:10" + }, + { + "kind": "number", + "nativeSrc": "113664:4:10", + "nodeType": "YulLiteral", + "src": "113664:4:10", + "type": "", + "value": "0x8b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "113657:3:10", + "nodeType": "YulIdentifier", + "src": "113657:3:10" + }, + "nativeSrc": "113657:12:10", + "nodeType": "YulFunctionCall", + "src": "113657:12:10" + }, + { + "name": "n", + "nativeSrc": "113671:1:10", + "nodeType": "YulIdentifier", + "src": "113671:1:10" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "113616:10:10", + "nodeType": "YulIdentifier", + "src": "113616:10:10" + }, + "nativeSrc": "113616:57:10", + "nodeType": "YulFunctionCall", + "src": "113616:57:10" + } + ], + "functionName": { + "name": "pop", + "nativeSrc": "113612:3:10", + "nodeType": "YulIdentifier", + "src": "113612:3:10" + }, + "nativeSrc": "113612:62:10", + "nodeType": "YulFunctionCall", + "src": "113612:62:10" + }, + "nativeSrc": "113612:62:10", + "nodeType": "YulExpressionStatement", + "src": "113612:62:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "113698:1:10", + "nodeType": "YulIdentifier", + "src": "113698:1:10" + }, + { + "kind": "number", + "nativeSrc": "113701:4:10", + "nodeType": "YulLiteral", + "src": "113701:4:10", + "type": "", + "value": "0x6b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "113694:3:10", + "nodeType": "YulIdentifier", + "src": "113694:3:10" + }, + "nativeSrc": "113694:12:10", + "nodeType": "YulFunctionCall", + "src": "113694:12:10" + }, + { + "kind": "number", + "nativeSrc": "113708:66:10", + "nodeType": "YulLiteral", + "src": "113708:66:10", + "type": "", + "value": "0xb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "113687:6:10", + "nodeType": "YulIdentifier", + "src": "113687:6:10" + }, + "nativeSrc": "113687:88:10", + "nodeType": "YulFunctionCall", + "src": "113687:88:10" + }, + "nativeSrc": "113687:88:10", + "nodeType": "YulExpressionStatement", + "src": "113687:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "113799:1:10", + "nodeType": "YulIdentifier", + "src": "113799:1:10" + }, + { + "kind": "number", + "nativeSrc": "113802:4:10", + "nodeType": "YulLiteral", + "src": "113802:4:10", + "type": "", + "value": "0x4b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "113795:3:10", + "nodeType": "YulIdentifier", + "src": "113795:3:10" + }, + "nativeSrc": "113795:12:10", + "nodeType": "YulFunctionCall", + "src": "113795:12:10" + }, + { + "kind": "number", + "nativeSrc": "113809:66:10", + "nodeType": "YulLiteral", + "src": "113809:66:10", + "type": "", + "value": "0x1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "113788:6:10", + "nodeType": "YulIdentifier", + "src": "113788:6:10" + }, + "nativeSrc": "113788:88:10", + "nodeType": "YulFunctionCall", + "src": "113788:88:10" + }, + "nativeSrc": "113788:88:10", + "nodeType": "YulExpressionStatement", + "src": "113788:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "113900:1:10", + "nodeType": "YulIdentifier", + "src": "113900:1:10" + }, + { + "kind": "number", + "nativeSrc": "113903:4:10", + "nodeType": "YulLiteral", + "src": "113903:4:10", + "type": "", + "value": "0x2b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "113896:3:10", + "nodeType": "YulIdentifier", + "src": "113896:3:10" + }, + "nativeSrc": "113896:12:10", + "nodeType": "YulFunctionCall", + "src": "113896:12:10" + }, + { + "kind": "number", + "nativeSrc": "113910:48:10", + "nodeType": "YulLiteral", + "src": "113910:48:10", + "type": "", + "value": "0x60195155f3363d3d373d3d363d602036600436635c60da" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "113889:6:10", + "nodeType": "YulIdentifier", + "src": "113889:6:10" + }, + "nativeSrc": "113889:70:10", + "nodeType": "YulFunctionCall", + "src": "113889:70:10" + }, + "nativeSrc": "113889:70:10", + "nodeType": "YulExpressionStatement", + "src": "113889:70:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "113983:1:10", + "nodeType": "YulIdentifier", + "src": "113983:1:10" + }, + { + "kind": "number", + "nativeSrc": "113986:4:10", + "nodeType": "YulLiteral", + "src": "113986:4:10", + "type": "", + "value": "0x14" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "113979:3:10", + "nodeType": "YulIdentifier", + "src": "113979:3:10" + }, + "nativeSrc": "113979:12:10", + "nodeType": "YulFunctionCall", + "src": "113979:12:10" + }, + { + "name": "beacon", + "nativeSrc": "113993:6:10", + "nodeType": "YulIdentifier", + "src": "113993:6:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "113972:6:10", + "nodeType": "YulIdentifier", + "src": "113972:6:10" + }, + "nativeSrc": "113972:28:10", + "nodeType": "YulFunctionCall", + "src": "113972:28:10" + }, + "nativeSrc": "113972:28:10", + "nodeType": "YulExpressionStatement", + "src": "113972:28:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "114111:1:10", + "nodeType": "YulIdentifier", + "src": "114111:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "114117:1:10", + "nodeType": "YulIdentifier", + "src": "114117:1:10" + }, + { + "kind": "number", + "nativeSrc": "114120:6:10", + "nodeType": "YulLiteral", + "src": "114120:6:10", + "type": "", + "value": "0xffad" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "114114:2:10", + "nodeType": "YulIdentifier", + "src": "114114:2:10" + }, + "nativeSrc": "114114:13:10", + "nodeType": "YulFunctionCall", + "src": "114114:13:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "114107:3:10", + "nodeType": "YulIdentifier", + "src": "114107:3:10" + }, + "nativeSrc": "114107:21:10", + "nodeType": "YulFunctionCall", + "src": "114107:21:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "114134:24:10", + "nodeType": "YulLiteral", + "src": "114134:24:10", + "type": "", + "value": "0xfe6100523d8160233d3973" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "114164:2:10", + "nodeType": "YulLiteral", + "src": "114164:2:10", + "type": "", + "value": "56" + }, + { + "name": "n", + "nativeSrc": "114168:1:10", + "nodeType": "YulIdentifier", + "src": "114168:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "114160:3:10", + "nodeType": "YulIdentifier", + "src": "114160:3:10" + }, + "nativeSrc": "114160:10:10", + "nodeType": "YulFunctionCall", + "src": "114160:10:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "114130:3:10", + "nodeType": "YulIdentifier", + "src": "114130:3:10" + }, + "nativeSrc": "114130:41:10", + "nodeType": "YulFunctionCall", + "src": "114130:41:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "114100:6:10", + "nodeType": "YulIdentifier", + "src": "114100:6:10" + }, + "nativeSrc": "114100:72:10", + "nodeType": "YulFunctionCall", + "src": "114100:72:10" + }, + "nativeSrc": "114100:72:10", + "nodeType": "YulExpressionStatement", + "src": "114100:72:10" + }, + { + "nativeSrc": "114185:53:10", + "nodeType": "YulAssignment", + "src": "114185:53:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "114204:5:10", + "nodeType": "YulIdentifier", + "src": "114204:5:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "114215:1:10", + "nodeType": "YulIdentifier", + "src": "114215:1:10" + }, + { + "kind": "number", + "nativeSrc": "114218:4:10", + "nodeType": "YulLiteral", + "src": "114218:4:10", + "type": "", + "value": "0x16" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "114211:3:10", + "nodeType": "YulIdentifier", + "src": "114211:3:10" + }, + "nativeSrc": "114211:12:10", + "nodeType": "YulFunctionCall", + "src": "114211:12:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "114229:1:10", + "nodeType": "YulIdentifier", + "src": "114229:1:10" + }, + { + "kind": "number", + "nativeSrc": "114232:4:10", + "nodeType": "YulLiteral", + "src": "114232:4:10", + "type": "", + "value": "0x75" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "114225:3:10", + "nodeType": "YulIdentifier", + "src": "114225:3:10" + }, + "nativeSrc": "114225:12:10", + "nodeType": "YulFunctionCall", + "src": "114225:12:10" + } + ], + "functionName": { + "name": "create", + "nativeSrc": "114197:6:10", + "nodeType": "YulIdentifier", + "src": "114197:6:10" + }, + "nativeSrc": "114197:41:10", + "nodeType": "YulFunctionCall", + "src": "114197:41:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "114185:8:10", + "nodeType": "YulIdentifier", + "src": "114185:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "114271:116:10", + "nodeType": "YulBlock", + "src": "114271:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "114296:4:10", + "nodeType": "YulLiteral", + "src": "114296:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "114302:10:10", + "nodeType": "YulLiteral", + "src": "114302:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "114289:6:10", + "nodeType": "YulIdentifier", + "src": "114289:6:10" + }, + "nativeSrc": "114289:24:10", + "nodeType": "YulFunctionCall", + "src": "114289:24:10" + }, + "nativeSrc": "114289:24:10", + "nodeType": "YulExpressionStatement", + "src": "114289:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "114362:4:10", + "nodeType": "YulLiteral", + "src": "114362:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "114368:4:10", + "nodeType": "YulLiteral", + "src": "114368:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "114355:6:10", + "nodeType": "YulIdentifier", + "src": "114355:6:10" + }, + "nativeSrc": "114355:18:10", + "nodeType": "YulFunctionCall", + "src": "114355:18:10" + }, + "nativeSrc": "114355:18:10", + "nodeType": "YulExpressionStatement", + "src": "114355:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "114261:8:10", + "nodeType": "YulIdentifier", + "src": "114261:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "114254:6:10", + "nodeType": "YulIdentifier", + "src": "114254:6:10" + }, + "nativeSrc": "114254:16:10", + "nodeType": "YulFunctionCall", + "src": "114254:16:10" + }, + "nativeSrc": "114251:136:10", + "nodeType": "YulIf", + "src": "114251:136:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4538, + "isOffset": false, + "isSlot": false, + "src": "113594:4:10", + "valueSize": 1 + }, + { + "declaration": 4538, + "isOffset": false, + "isSlot": false, + "src": "113641:4:10", + "valueSize": 1 + }, + { + "declaration": 4536, + "isOffset": false, + "isSlot": false, + "src": "113993:6:10", + "valueSize": 1 + }, + { + "declaration": 4541, + "isOffset": false, + "isSlot": false, + "src": "114185:8:10", + "valueSize": 1 + }, + { + "declaration": 4541, + "isOffset": false, + "isSlot": false, + "src": "114261:8:10", + "valueSize": 1 + }, + { + "declaration": 4534, + "isOffset": false, + "isSlot": false, + "src": "114204:5:10", + "valueSize": 1 + } + ], + "id": 4543, + "nodeType": "InlineAssembly", + "src": "113523:874:10" + } + ] + }, + "documentation": { + "id": 4532, + "nodeType": "StructuredDocumentation", + "src": "113217:108:10", + "text": "@dev Deploys a minimal ERC1967 beacon proxy with `args`.\n Deposits `value` ETH during deployment." + }, + "id": 4545, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployERC1967BeaconProxy", + "nameLocation": "113339:24:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4539, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4534, + "mutability": "mutable", + "name": "value", + "nameLocation": "113372:5:10", + "nodeType": "VariableDeclaration", + "scope": 4545, + "src": "113364:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4533, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "113364:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4536, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "113387:6:10", + "nodeType": "VariableDeclaration", + "scope": 4545, + "src": "113379:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4535, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "113379:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4538, + "mutability": "mutable", + "name": "args", + "nameLocation": "113408:4:10", + "nodeType": "VariableDeclaration", + "scope": 4545, + "src": "113395:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4537, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "113395:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "113363:50:10" + }, + "returnParameters": { + "id": 4542, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4541, + "mutability": "mutable", + "name": "instance", + "nameLocation": "113456:8:10", + "nodeType": "VariableDeclaration", + "scope": 4545, + "src": "113448:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4540, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "113448:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "113447:18:10" + }, + "scope": 5104, + "src": "113330:1073:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4566, + "nodeType": "Block", + "src": "114651:88:10", + "statements": [ + { + "expression": { + "id": 4564, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4557, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4555, + "src": "114661:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 4559, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "114710:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 4560, + "name": "beacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4548, + "src": "114713:6:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4561, + "name": "args", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4550, + "src": "114721:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 4562, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4552, + "src": "114727:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4558, + "name": "deployDeterministicERC1967BeaconProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4416, + 4430, + 4567, + 4583 + ], + "referencedDeclaration": 4583, + "src": "114672:37:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (uint256,address,bytes memory,bytes32) returns (address)" + } + }, + "id": 4563, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "114672:60:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "114661:71:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4565, + "nodeType": "ExpressionStatement", + "src": "114661:71:10" + } + ] + }, + "documentation": { + "id": 4546, + "nodeType": "StructuredDocumentation", + "src": "114409:85:10", + "text": "@dev Deploys a deterministic minimal ERC1967 beacon proxy with `args` and `salt`." + }, + "id": 4567, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployDeterministicERC1967BeaconProxy", + "nameLocation": "114508:37:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4553, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4548, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "114554:6:10", + "nodeType": "VariableDeclaration", + "scope": 4567, + "src": "114546:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4547, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "114546:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4550, + "mutability": "mutable", + "name": "args", + "nameLocation": "114575:4:10", + "nodeType": "VariableDeclaration", + "scope": 4567, + "src": "114562:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4549, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "114562:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4552, + "mutability": "mutable", + "name": "salt", + "nameLocation": "114589:4:10", + "nodeType": "VariableDeclaration", + "scope": 4567, + "src": "114581:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4551, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "114581:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "114545:49:10" + }, + "returnParameters": { + "id": 4556, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4555, + "mutability": "mutable", + "name": "instance", + "nameLocation": "114637:8:10", + "nodeType": "VariableDeclaration", + "scope": 4567, + "src": "114629:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4554, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "114629:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "114628:18:10" + }, + "scope": 5104, + "src": "114499:240:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4582, + "nodeType": "Block", + "src": "115068:940:10", + "statements": [ + { + "AST": { + "nativeSrc": "115130:872:10", + "nodeType": "YulBlock", + "src": "115130:872:10", + "statements": [ + { + "nativeSrc": "115144:20:10", + "nodeType": "YulVariableDeclaration", + "src": "115144:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "115159:4:10", + "nodeType": "YulLiteral", + "src": "115159:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "115153:5:10", + "nodeType": "YulIdentifier", + "src": "115153:5:10" + }, + "nativeSrc": "115153:11:10", + "nodeType": "YulFunctionCall", + "src": "115153:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "115148:1:10", + "nodeType": "YulTypedName", + "src": "115148:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "115177:20:10", + "nodeType": "YulVariableDeclaration", + "src": "115177:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "115192:4:10", + "nodeType": "YulIdentifier", + "src": "115192:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "115186:5:10", + "nodeType": "YulIdentifier", + "src": "115186:5:10" + }, + "nativeSrc": "115186:11:10", + "nodeType": "YulFunctionCall", + "src": "115186:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "115181:1:10", + "nodeType": "YulTypedName", + "src": "115181:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "115225:3:10", + "nodeType": "YulIdentifier", + "src": "115225:3:10" + }, + "nativeSrc": "115225:5:10", + "nodeType": "YulFunctionCall", + "src": "115225:5:10" + }, + { + "kind": "number", + "nativeSrc": "115232:1:10", + "nodeType": "YulLiteral", + "src": "115232:1:10", + "type": "", + "value": "4" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "115239:4:10", + "nodeType": "YulIdentifier", + "src": "115239:4:10" + }, + { + "kind": "number", + "nativeSrc": "115245:4:10", + "nodeType": "YulLiteral", + "src": "115245:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "115235:3:10", + "nodeType": "YulIdentifier", + "src": "115235:3:10" + }, + "nativeSrc": "115235:15:10", + "nodeType": "YulFunctionCall", + "src": "115235:15:10" + }, + { + "name": "n", + "nativeSrc": "115252:1:10", + "nodeType": "YulIdentifier", + "src": "115252:1:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "115259:1:10", + "nodeType": "YulIdentifier", + "src": "115259:1:10" + }, + { + "kind": "number", + "nativeSrc": "115262:4:10", + "nodeType": "YulLiteral", + "src": "115262:4:10", + "type": "", + "value": "0x8b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "115255:3:10", + "nodeType": "YulIdentifier", + "src": "115255:3:10" + }, + "nativeSrc": "115255:12:10", + "nodeType": "YulFunctionCall", + "src": "115255:12:10" + }, + { + "name": "n", + "nativeSrc": "115269:1:10", + "nodeType": "YulIdentifier", + "src": "115269:1:10" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "115214:10:10", + "nodeType": "YulIdentifier", + "src": "115214:10:10" + }, + "nativeSrc": "115214:57:10", + "nodeType": "YulFunctionCall", + "src": "115214:57:10" + } + ], + "functionName": { + "name": "pop", + "nativeSrc": "115210:3:10", + "nodeType": "YulIdentifier", + "src": "115210:3:10" + }, + "nativeSrc": "115210:62:10", + "nodeType": "YulFunctionCall", + "src": "115210:62:10" + }, + "nativeSrc": "115210:62:10", + "nodeType": "YulExpressionStatement", + "src": "115210:62:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "115296:1:10", + "nodeType": "YulIdentifier", + "src": "115296:1:10" + }, + { + "kind": "number", + "nativeSrc": "115299:4:10", + "nodeType": "YulLiteral", + "src": "115299:4:10", + "type": "", + "value": "0x6b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "115292:3:10", + "nodeType": "YulIdentifier", + "src": "115292:3:10" + }, + "nativeSrc": "115292:12:10", + "nodeType": "YulFunctionCall", + "src": "115292:12:10" + }, + { + "kind": "number", + "nativeSrc": "115306:66:10", + "nodeType": "YulLiteral", + "src": "115306:66:10", + "type": "", + "value": "0xb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "115285:6:10", + "nodeType": "YulIdentifier", + "src": "115285:6:10" + }, + "nativeSrc": "115285:88:10", + "nodeType": "YulFunctionCall", + "src": "115285:88:10" + }, + "nativeSrc": "115285:88:10", + "nodeType": "YulExpressionStatement", + "src": "115285:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "115397:1:10", + "nodeType": "YulIdentifier", + "src": "115397:1:10" + }, + { + "kind": "number", + "nativeSrc": "115400:4:10", + "nodeType": "YulLiteral", + "src": "115400:4:10", + "type": "", + "value": "0x4b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "115393:3:10", + "nodeType": "YulIdentifier", + "src": "115393:3:10" + }, + "nativeSrc": "115393:12:10", + "nodeType": "YulFunctionCall", + "src": "115393:12:10" + }, + { + "kind": "number", + "nativeSrc": "115407:66:10", + "nodeType": "YulLiteral", + "src": "115407:66:10", + "type": "", + "value": "0x1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "115386:6:10", + "nodeType": "YulIdentifier", + "src": "115386:6:10" + }, + "nativeSrc": "115386:88:10", + "nodeType": "YulFunctionCall", + "src": "115386:88:10" + }, + "nativeSrc": "115386:88:10", + "nodeType": "YulExpressionStatement", + "src": "115386:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "115498:1:10", + "nodeType": "YulIdentifier", + "src": "115498:1:10" + }, + { + "kind": "number", + "nativeSrc": "115501:4:10", + "nodeType": "YulLiteral", + "src": "115501:4:10", + "type": "", + "value": "0x2b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "115494:3:10", + "nodeType": "YulIdentifier", + "src": "115494:3:10" + }, + "nativeSrc": "115494:12:10", + "nodeType": "YulFunctionCall", + "src": "115494:12:10" + }, + { + "kind": "number", + "nativeSrc": "115508:48:10", + "nodeType": "YulLiteral", + "src": "115508:48:10", + "type": "", + "value": "0x60195155f3363d3d373d3d363d602036600436635c60da" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "115487:6:10", + "nodeType": "YulIdentifier", + "src": "115487:6:10" + }, + "nativeSrc": "115487:70:10", + "nodeType": "YulFunctionCall", + "src": "115487:70:10" + }, + "nativeSrc": "115487:70:10", + "nodeType": "YulExpressionStatement", + "src": "115487:70:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "115581:1:10", + "nodeType": "YulIdentifier", + "src": "115581:1:10" + }, + { + "kind": "number", + "nativeSrc": "115584:4:10", + "nodeType": "YulLiteral", + "src": "115584:4:10", + "type": "", + "value": "0x14" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "115577:3:10", + "nodeType": "YulIdentifier", + "src": "115577:3:10" + }, + "nativeSrc": "115577:12:10", + "nodeType": "YulFunctionCall", + "src": "115577:12:10" + }, + { + "name": "beacon", + "nativeSrc": "115591:6:10", + "nodeType": "YulIdentifier", + "src": "115591:6:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "115570:6:10", + "nodeType": "YulIdentifier", + "src": "115570:6:10" + }, + "nativeSrc": "115570:28:10", + "nodeType": "YulFunctionCall", + "src": "115570:28:10" + }, + "nativeSrc": "115570:28:10", + "nodeType": "YulExpressionStatement", + "src": "115570:28:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "115709:1:10", + "nodeType": "YulIdentifier", + "src": "115709:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "115715:1:10", + "nodeType": "YulIdentifier", + "src": "115715:1:10" + }, + { + "kind": "number", + "nativeSrc": "115718:6:10", + "nodeType": "YulLiteral", + "src": "115718:6:10", + "type": "", + "value": "0xffad" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "115712:2:10", + "nodeType": "YulIdentifier", + "src": "115712:2:10" + }, + "nativeSrc": "115712:13:10", + "nodeType": "YulFunctionCall", + "src": "115712:13:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "115705:3:10", + "nodeType": "YulIdentifier", + "src": "115705:3:10" + }, + "nativeSrc": "115705:21:10", + "nodeType": "YulFunctionCall", + "src": "115705:21:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "115732:24:10", + "nodeType": "YulLiteral", + "src": "115732:24:10", + "type": "", + "value": "0xfe6100523d8160233d3973" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "115762:2:10", + "nodeType": "YulLiteral", + "src": "115762:2:10", + "type": "", + "value": "56" + }, + { + "name": "n", + "nativeSrc": "115766:1:10", + "nodeType": "YulIdentifier", + "src": "115766:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "115758:3:10", + "nodeType": "YulIdentifier", + "src": "115758:3:10" + }, + "nativeSrc": "115758:10:10", + "nodeType": "YulFunctionCall", + "src": "115758:10:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "115728:3:10", + "nodeType": "YulIdentifier", + "src": "115728:3:10" + }, + "nativeSrc": "115728:41:10", + "nodeType": "YulFunctionCall", + "src": "115728:41:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "115698:6:10", + "nodeType": "YulIdentifier", + "src": "115698:6:10" + }, + "nativeSrc": "115698:72:10", + "nodeType": "YulFunctionCall", + "src": "115698:72:10" + }, + "nativeSrc": "115698:72:10", + "nodeType": "YulExpressionStatement", + "src": "115698:72:10" + }, + { + "nativeSrc": "115783:60:10", + "nodeType": "YulAssignment", + "src": "115783:60:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "115803:5:10", + "nodeType": "YulIdentifier", + "src": "115803:5:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "115814:1:10", + "nodeType": "YulIdentifier", + "src": "115814:1:10" + }, + { + "kind": "number", + "nativeSrc": "115817:4:10", + "nodeType": "YulLiteral", + "src": "115817:4:10", + "type": "", + "value": "0x16" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "115810:3:10", + "nodeType": "YulIdentifier", + "src": "115810:3:10" + }, + "nativeSrc": "115810:12:10", + "nodeType": "YulFunctionCall", + "src": "115810:12:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "115828:1:10", + "nodeType": "YulIdentifier", + "src": "115828:1:10" + }, + { + "kind": "number", + "nativeSrc": "115831:4:10", + "nodeType": "YulLiteral", + "src": "115831:4:10", + "type": "", + "value": "0x75" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "115824:3:10", + "nodeType": "YulIdentifier", + "src": "115824:3:10" + }, + "nativeSrc": "115824:12:10", + "nodeType": "YulFunctionCall", + "src": "115824:12:10" + }, + { + "name": "salt", + "nativeSrc": "115838:4:10", + "nodeType": "YulIdentifier", + "src": "115838:4:10" + } + ], + "functionName": { + "name": "create2", + "nativeSrc": "115795:7:10", + "nodeType": "YulIdentifier", + "src": "115795:7:10" + }, + "nativeSrc": "115795:48:10", + "nodeType": "YulFunctionCall", + "src": "115795:48:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "115783:8:10", + "nodeType": "YulIdentifier", + "src": "115783:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "115876:116:10", + "nodeType": "YulBlock", + "src": "115876:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "115901:4:10", + "nodeType": "YulLiteral", + "src": "115901:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "115907:10:10", + "nodeType": "YulLiteral", + "src": "115907:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "115894:6:10", + "nodeType": "YulIdentifier", + "src": "115894:6:10" + }, + "nativeSrc": "115894:24:10", + "nodeType": "YulFunctionCall", + "src": "115894:24:10" + }, + "nativeSrc": "115894:24:10", + "nodeType": "YulExpressionStatement", + "src": "115894:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "115967:4:10", + "nodeType": "YulLiteral", + "src": "115967:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "115973:4:10", + "nodeType": "YulLiteral", + "src": "115973:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "115960:6:10", + "nodeType": "YulIdentifier", + "src": "115960:6:10" + }, + "nativeSrc": "115960:18:10", + "nodeType": "YulFunctionCall", + "src": "115960:18:10" + }, + "nativeSrc": "115960:18:10", + "nodeType": "YulExpressionStatement", + "src": "115960:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "115866:8:10", + "nodeType": "YulIdentifier", + "src": "115866:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "115859:6:10", + "nodeType": "YulIdentifier", + "src": "115859:6:10" + }, + "nativeSrc": "115859:16:10", + "nodeType": "YulFunctionCall", + "src": "115859:16:10" + }, + "nativeSrc": "115856:136:10", + "nodeType": "YulIf", + "src": "115856:136:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4574, + "isOffset": false, + "isSlot": false, + "src": "115192:4:10", + "valueSize": 1 + }, + { + "declaration": 4574, + "isOffset": false, + "isSlot": false, + "src": "115239:4:10", + "valueSize": 1 + }, + { + "declaration": 4572, + "isOffset": false, + "isSlot": false, + "src": "115591:6:10", + "valueSize": 1 + }, + { + "declaration": 4579, + "isOffset": false, + "isSlot": false, + "src": "115783:8:10", + "valueSize": 1 + }, + { + "declaration": 4579, + "isOffset": false, + "isSlot": false, + "src": "115866:8:10", + "valueSize": 1 + }, + { + "declaration": 4576, + "isOffset": false, + "isSlot": false, + "src": "115838:4:10", + "valueSize": 1 + }, + { + "declaration": 4570, + "isOffset": false, + "isSlot": false, + "src": "115803:5:10", + "valueSize": 1 + } + ], + "id": 4581, + "nodeType": "InlineAssembly", + "src": "115121:881:10" + } + ] + }, + "documentation": { + "id": 4568, + "nodeType": "StructuredDocumentation", + "src": "114745:133:10", + "text": "@dev Deploys a deterministic minimal ERC1967 beacon proxy with `args` and `salt`.\n Deposits `value` ETH during deployment." + }, + "id": 4583, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployDeterministicERC1967BeaconProxy", + "nameLocation": "114892:37:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4577, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4570, + "mutability": "mutable", + "name": "value", + "nameLocation": "114947:5:10", + "nodeType": "VariableDeclaration", + "scope": 4583, + "src": "114939:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4569, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "114939:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4572, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "114970:6:10", + "nodeType": "VariableDeclaration", + "scope": 4583, + "src": "114962:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4571, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "114962:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4574, + "mutability": "mutable", + "name": "args", + "nameLocation": "114999:4:10", + "nodeType": "VariableDeclaration", + "scope": 4583, + "src": "114986:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4573, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "114986:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4576, + "mutability": "mutable", + "name": "salt", + "nameLocation": "115021:4:10", + "nodeType": "VariableDeclaration", + "scope": 4583, + "src": "115013:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4575, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "115013:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "114929:102:10" + }, + "returnParameters": { + "id": 4580, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4579, + "mutability": "mutable", + "name": "instance", + "nameLocation": "115058:8:10", + "nodeType": "VariableDeclaration", + "scope": 4583, + "src": "115050:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4578, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "115050:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "115049:18:10" + }, + "scope": 5104, + "src": "114883:1125:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4604, + "nodeType": "Block", + "src": "116421:84:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "30", + "id": 4598, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "116476:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 4599, + "name": "beacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4586, + "src": "116479:6:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4600, + "name": "args", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4588, + "src": "116487:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 4601, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4590, + "src": "116493:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4597, + "name": "createDeterministicERC1967BeaconProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4449, + 4465, + 4605, + 4623 + ], + "referencedDeclaration": 4623, + "src": "116438:37:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$_t_bytes32_$returns$_t_bool_$_t_address_$", + "typeString": "function (uint256,address,bytes memory,bytes32) returns (bool,address)" + } + }, + "id": 4602, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "116438:60:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_address_$", + "typeString": "tuple(bool,address)" + } + }, + "functionReturnParameters": 4596, + "id": 4603, + "nodeType": "Return", + "src": "116431:67:10" + } + ] + }, + "documentation": { + "id": 4584, + "nodeType": "StructuredDocumentation", + "src": "116014:228:10", + "text": "@dev Creates a deterministic minimal ERC1967 beacon proxy with `args` and `salt`.\n Note: This method is intended for use in ERC4337 factories,\n which are expected to NOT revert if the proxy is already deployed." + }, + "id": 4605, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createDeterministicERC1967BeaconProxy", + "nameLocation": "116256:37:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4591, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4586, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "116302:6:10", + "nodeType": "VariableDeclaration", + "scope": 4605, + "src": "116294:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4585, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "116294:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4588, + "mutability": "mutable", + "name": "args", + "nameLocation": "116323:4:10", + "nodeType": "VariableDeclaration", + "scope": 4605, + "src": "116310:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4587, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "116310:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4590, + "mutability": "mutable", + "name": "salt", + "nameLocation": "116337:4:10", + "nodeType": "VariableDeclaration", + "scope": 4605, + "src": "116329:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4589, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "116329:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "116293:49:10" + }, + "returnParameters": { + "id": 4596, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4593, + "mutability": "mutable", + "name": "alreadyDeployed", + "nameLocation": "116382:15:10", + "nodeType": "VariableDeclaration", + "scope": 4605, + "src": "116377:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4592, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "116377:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4595, + "mutability": "mutable", + "name": "instance", + "nameLocation": "116407:8:10", + "nodeType": "VariableDeclaration", + "scope": 4605, + "src": "116399:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4594, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "116399:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "116376:40:10" + }, + "scope": 5104, + "src": "116247:258:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4622, + "nodeType": "Block", + "src": "116999:1818:10", + "statements": [ + { + "AST": { + "nativeSrc": "117061:1750:10", + "nodeType": "YulBlock", + "src": "117061:1750:10", + "statements": [ + { + "nativeSrc": "117075:20:10", + "nodeType": "YulVariableDeclaration", + "src": "117075:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "117090:4:10", + "nodeType": "YulLiteral", + "src": "117090:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "117084:5:10", + "nodeType": "YulIdentifier", + "src": "117084:5:10" + }, + "nativeSrc": "117084:11:10", + "nodeType": "YulFunctionCall", + "src": "117084:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "117079:1:10", + "nodeType": "YulTypedName", + "src": "117079:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "117108:20:10", + "nodeType": "YulVariableDeclaration", + "src": "117108:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "117123:4:10", + "nodeType": "YulIdentifier", + "src": "117123:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "117117:5:10", + "nodeType": "YulIdentifier", + "src": "117117:5:10" + }, + "nativeSrc": "117117:11:10", + "nodeType": "YulFunctionCall", + "src": "117117:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "117112:1:10", + "nodeType": "YulTypedName", + "src": "117112:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "117156:3:10", + "nodeType": "YulIdentifier", + "src": "117156:3:10" + }, + "nativeSrc": "117156:5:10", + "nodeType": "YulFunctionCall", + "src": "117156:5:10" + }, + { + "kind": "number", + "nativeSrc": "117163:1:10", + "nodeType": "YulLiteral", + "src": "117163:1:10", + "type": "", + "value": "4" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "117170:4:10", + "nodeType": "YulIdentifier", + "src": "117170:4:10" + }, + { + "kind": "number", + "nativeSrc": "117176:4:10", + "nodeType": "YulLiteral", + "src": "117176:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "117166:3:10", + "nodeType": "YulIdentifier", + "src": "117166:3:10" + }, + "nativeSrc": "117166:15:10", + "nodeType": "YulFunctionCall", + "src": "117166:15:10" + }, + { + "name": "n", + "nativeSrc": "117183:1:10", + "nodeType": "YulIdentifier", + "src": "117183:1:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "117190:1:10", + "nodeType": "YulIdentifier", + "src": "117190:1:10" + }, + { + "kind": "number", + "nativeSrc": "117193:4:10", + "nodeType": "YulLiteral", + "src": "117193:4:10", + "type": "", + "value": "0x8b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "117186:3:10", + "nodeType": "YulIdentifier", + "src": "117186:3:10" + }, + "nativeSrc": "117186:12:10", + "nodeType": "YulFunctionCall", + "src": "117186:12:10" + }, + { + "name": "n", + "nativeSrc": "117200:1:10", + "nodeType": "YulIdentifier", + "src": "117200:1:10" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "117145:10:10", + "nodeType": "YulIdentifier", + "src": "117145:10:10" + }, + "nativeSrc": "117145:57:10", + "nodeType": "YulFunctionCall", + "src": "117145:57:10" + } + ], + "functionName": { + "name": "pop", + "nativeSrc": "117141:3:10", + "nodeType": "YulIdentifier", + "src": "117141:3:10" + }, + "nativeSrc": "117141:62:10", + "nodeType": "YulFunctionCall", + "src": "117141:62:10" + }, + "nativeSrc": "117141:62:10", + "nodeType": "YulExpressionStatement", + "src": "117141:62:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "117227:1:10", + "nodeType": "YulIdentifier", + "src": "117227:1:10" + }, + { + "kind": "number", + "nativeSrc": "117230:4:10", + "nodeType": "YulLiteral", + "src": "117230:4:10", + "type": "", + "value": "0x6b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "117223:3:10", + "nodeType": "YulIdentifier", + "src": "117223:3:10" + }, + "nativeSrc": "117223:12:10", + "nodeType": "YulFunctionCall", + "src": "117223:12:10" + }, + { + "kind": "number", + "nativeSrc": "117237:66:10", + "nodeType": "YulLiteral", + "src": "117237:66:10", + "type": "", + "value": "0xb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "117216:6:10", + "nodeType": "YulIdentifier", + "src": "117216:6:10" + }, + "nativeSrc": "117216:88:10", + "nodeType": "YulFunctionCall", + "src": "117216:88:10" + }, + "nativeSrc": "117216:88:10", + "nodeType": "YulExpressionStatement", + "src": "117216:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "117328:1:10", + "nodeType": "YulIdentifier", + "src": "117328:1:10" + }, + { + "kind": "number", + "nativeSrc": "117331:4:10", + "nodeType": "YulLiteral", + "src": "117331:4:10", + "type": "", + "value": "0x4b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "117324:3:10", + "nodeType": "YulIdentifier", + "src": "117324:3:10" + }, + "nativeSrc": "117324:12:10", + "nodeType": "YulFunctionCall", + "src": "117324:12:10" + }, + { + "kind": "number", + "nativeSrc": "117338:66:10", + "nodeType": "YulLiteral", + "src": "117338:66:10", + "type": "", + "value": "0x1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "117317:6:10", + "nodeType": "YulIdentifier", + "src": "117317:6:10" + }, + "nativeSrc": "117317:88:10", + "nodeType": "YulFunctionCall", + "src": "117317:88:10" + }, + "nativeSrc": "117317:88:10", + "nodeType": "YulExpressionStatement", + "src": "117317:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "117429:1:10", + "nodeType": "YulIdentifier", + "src": "117429:1:10" + }, + { + "kind": "number", + "nativeSrc": "117432:4:10", + "nodeType": "YulLiteral", + "src": "117432:4:10", + "type": "", + "value": "0x2b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "117425:3:10", + "nodeType": "YulIdentifier", + "src": "117425:3:10" + }, + "nativeSrc": "117425:12:10", + "nodeType": "YulFunctionCall", + "src": "117425:12:10" + }, + { + "kind": "number", + "nativeSrc": "117439:48:10", + "nodeType": "YulLiteral", + "src": "117439:48:10", + "type": "", + "value": "0x60195155f3363d3d373d3d363d602036600436635c60da" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "117418:6:10", + "nodeType": "YulIdentifier", + "src": "117418:6:10" + }, + "nativeSrc": "117418:70:10", + "nodeType": "YulFunctionCall", + "src": "117418:70:10" + }, + "nativeSrc": "117418:70:10", + "nodeType": "YulExpressionStatement", + "src": "117418:70:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "117512:1:10", + "nodeType": "YulIdentifier", + "src": "117512:1:10" + }, + { + "kind": "number", + "nativeSrc": "117515:4:10", + "nodeType": "YulLiteral", + "src": "117515:4:10", + "type": "", + "value": "0x14" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "117508:3:10", + "nodeType": "YulIdentifier", + "src": "117508:3:10" + }, + "nativeSrc": "117508:12:10", + "nodeType": "YulFunctionCall", + "src": "117508:12:10" + }, + { + "name": "beacon", + "nativeSrc": "117522:6:10", + "nodeType": "YulIdentifier", + "src": "117522:6:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "117501:6:10", + "nodeType": "YulIdentifier", + "src": "117501:6:10" + }, + "nativeSrc": "117501:28:10", + "nodeType": "YulFunctionCall", + "src": "117501:28:10" + }, + "nativeSrc": "117501:28:10", + "nodeType": "YulExpressionStatement", + "src": "117501:28:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "117640:1:10", + "nodeType": "YulIdentifier", + "src": "117640:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "117646:1:10", + "nodeType": "YulIdentifier", + "src": "117646:1:10" + }, + { + "kind": "number", + "nativeSrc": "117649:6:10", + "nodeType": "YulLiteral", + "src": "117649:6:10", + "type": "", + "value": "0xffad" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "117643:2:10", + "nodeType": "YulIdentifier", + "src": "117643:2:10" + }, + "nativeSrc": "117643:13:10", + "nodeType": "YulFunctionCall", + "src": "117643:13:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "117636:3:10", + "nodeType": "YulIdentifier", + "src": "117636:3:10" + }, + "nativeSrc": "117636:21:10", + "nodeType": "YulFunctionCall", + "src": "117636:21:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "117663:24:10", + "nodeType": "YulLiteral", + "src": "117663:24:10", + "type": "", + "value": "0xfe6100523d8160233d3973" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "117693:2:10", + "nodeType": "YulLiteral", + "src": "117693:2:10", + "type": "", + "value": "56" + }, + { + "name": "n", + "nativeSrc": "117697:1:10", + "nodeType": "YulIdentifier", + "src": "117697:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "117689:3:10", + "nodeType": "YulIdentifier", + "src": "117689:3:10" + }, + "nativeSrc": "117689:10:10", + "nodeType": "YulFunctionCall", + "src": "117689:10:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "117659:3:10", + "nodeType": "YulIdentifier", + "src": "117659:3:10" + }, + "nativeSrc": "117659:41:10", + "nodeType": "YulFunctionCall", + "src": "117659:41:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "117629:6:10", + "nodeType": "YulIdentifier", + "src": "117629:6:10" + }, + "nativeSrc": "117629:72:10", + "nodeType": "YulFunctionCall", + "src": "117629:72:10" + }, + "nativeSrc": "117629:72:10", + "nodeType": "YulExpressionStatement", + "src": "117629:72:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "117774:4:10", + "nodeType": "YulLiteral", + "src": "117774:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "117780:4:10", + "nodeType": "YulLiteral", + "src": "117780:4:10", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "117766:7:10", + "nodeType": "YulIdentifier", + "src": "117766:7:10" + }, + "nativeSrc": "117766:19:10", + "nodeType": "YulFunctionCall", + "src": "117766:19:10" + }, + "nativeSrc": "117766:19:10", + "nodeType": "YulExpressionStatement", + "src": "117766:19:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "117826:4:10", + "nodeType": "YulLiteral", + "src": "117826:4:10", + "type": "", + "value": "0x35" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "117846:1:10", + "nodeType": "YulIdentifier", + "src": "117846:1:10" + }, + { + "kind": "number", + "nativeSrc": "117849:4:10", + "nodeType": "YulLiteral", + "src": "117849:4:10", + "type": "", + "value": "0x16" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "117842:3:10", + "nodeType": "YulIdentifier", + "src": "117842:3:10" + }, + "nativeSrc": "117842:12:10", + "nodeType": "YulFunctionCall", + "src": "117842:12:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "117860:1:10", + "nodeType": "YulIdentifier", + "src": "117860:1:10" + }, + { + "kind": "number", + "nativeSrc": "117863:4:10", + "nodeType": "YulLiteral", + "src": "117863:4:10", + "type": "", + "value": "0x75" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "117856:3:10", + "nodeType": "YulIdentifier", + "src": "117856:3:10" + }, + "nativeSrc": "117856:12:10", + "nodeType": "YulFunctionCall", + "src": "117856:12:10" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "117832:9:10", + "nodeType": "YulIdentifier", + "src": "117832:9:10" + }, + "nativeSrc": "117832:37:10", + "nodeType": "YulFunctionCall", + "src": "117832:37:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "117819:6:10", + "nodeType": "YulIdentifier", + "src": "117819:6:10" + }, + "nativeSrc": "117819:51:10", + "nodeType": "YulFunctionCall", + "src": "117819:51:10" + }, + "nativeSrc": "117819:51:10", + "nodeType": "YulExpressionStatement", + "src": "117819:51:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "117890:4:10", + "nodeType": "YulLiteral", + "src": "117890:4:10", + "type": "", + "value": "0x01" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "117900:2:10", + "nodeType": "YulLiteral", + "src": "117900:2:10", + "type": "", + "value": "96" + }, + { + "arguments": [], + "functionName": { + "name": "address", + "nativeSrc": "117904:7:10", + "nodeType": "YulIdentifier", + "src": "117904:7:10" + }, + "nativeSrc": "117904:9:10", + "nodeType": "YulFunctionCall", + "src": "117904:9:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "117896:3:10", + "nodeType": "YulIdentifier", + "src": "117896:3:10" + }, + "nativeSrc": "117896:18:10", + "nodeType": "YulFunctionCall", + "src": "117896:18:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "117883:6:10", + "nodeType": "YulIdentifier", + "src": "117883:6:10" + }, + "nativeSrc": "117883:32:10", + "nodeType": "YulFunctionCall", + "src": "117883:32:10" + }, + "nativeSrc": "117883:32:10", + "nodeType": "YulExpressionStatement", + "src": "117883:32:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "117935:4:10", + "nodeType": "YulLiteral", + "src": "117935:4:10", + "type": "", + "value": "0x15" + }, + { + "name": "salt", + "nativeSrc": "117941:4:10", + "nodeType": "YulIdentifier", + "src": "117941:4:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "117928:6:10", + "nodeType": "YulIdentifier", + "src": "117928:6:10" + }, + "nativeSrc": "117928:18:10", + "nodeType": "YulFunctionCall", + "src": "117928:18:10" + }, + "nativeSrc": "117928:18:10", + "nodeType": "YulExpressionStatement", + "src": "117928:18:10" + }, + { + "nativeSrc": "117959:33:10", + "nodeType": "YulAssignment", + "src": "117959:33:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "117981:4:10", + "nodeType": "YulLiteral", + "src": "117981:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "117987:4:10", + "nodeType": "YulLiteral", + "src": "117987:4:10", + "type": "", + "value": "0x55" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "117971:9:10", + "nodeType": "YulIdentifier", + "src": "117971:9:10" + }, + "nativeSrc": "117971:21:10", + "nodeType": "YulFunctionCall", + "src": "117971:21:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "117959:8:10", + "nodeType": "YulIdentifier", + "src": "117959:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "118017:696:10", + "nodeType": "YulBlock", + "src": "118017:696:10", + "statements": [ + { + "body": { + "nativeSrc": "118068:307:10", + "nodeType": "YulBlock", + "src": "118068:307:10", + "statements": [ + { + "nativeSrc": "118090:60:10", + "nodeType": "YulAssignment", + "src": "118090:60:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "118110:5:10", + "nodeType": "YulIdentifier", + "src": "118110:5:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "118121:1:10", + "nodeType": "YulIdentifier", + "src": "118121:1:10" + }, + { + "kind": "number", + "nativeSrc": "118124:4:10", + "nodeType": "YulLiteral", + "src": "118124:4:10", + "type": "", + "value": "0x16" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "118117:3:10", + "nodeType": "YulIdentifier", + "src": "118117:3:10" + }, + "nativeSrc": "118117:12:10", + "nodeType": "YulFunctionCall", + "src": "118117:12:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "118135:1:10", + "nodeType": "YulIdentifier", + "src": "118135:1:10" + }, + { + "kind": "number", + "nativeSrc": "118138:4:10", + "nodeType": "YulLiteral", + "src": "118138:4:10", + "type": "", + "value": "0x75" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "118131:3:10", + "nodeType": "YulIdentifier", + "src": "118131:3:10" + }, + "nativeSrc": "118131:12:10", + "nodeType": "YulFunctionCall", + "src": "118131:12:10" + }, + { + "name": "salt", + "nativeSrc": "118145:4:10", + "nodeType": "YulIdentifier", + "src": "118145:4:10" + } + ], + "functionName": { + "name": "create2", + "nativeSrc": "118102:7:10", + "nodeType": "YulIdentifier", + "src": "118102:7:10" + }, + "nativeSrc": "118102:48:10", + "nodeType": "YulFunctionCall", + "src": "118102:48:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "118090:8:10", + "nodeType": "YulIdentifier", + "src": "118090:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "118191:140:10", + "nodeType": "YulBlock", + "src": "118191:140:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "118224:4:10", + "nodeType": "YulLiteral", + "src": "118224:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "118230:10:10", + "nodeType": "YulLiteral", + "src": "118230:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "118217:6:10", + "nodeType": "YulIdentifier", + "src": "118217:6:10" + }, + "nativeSrc": "118217:24:10", + "nodeType": "YulFunctionCall", + "src": "118217:24:10" + }, + "nativeSrc": "118217:24:10", + "nodeType": "YulExpressionStatement", + "src": "118217:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "118298:4:10", + "nodeType": "YulLiteral", + "src": "118298:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "118304:4:10", + "nodeType": "YulLiteral", + "src": "118304:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "118291:6:10", + "nodeType": "YulIdentifier", + "src": "118291:6:10" + }, + "nativeSrc": "118291:18:10", + "nodeType": "YulFunctionCall", + "src": "118291:18:10" + }, + "nativeSrc": "118291:18:10", + "nodeType": "YulExpressionStatement", + "src": "118291:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "118181:8:10", + "nodeType": "YulIdentifier", + "src": "118181:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "118174:6:10", + "nodeType": "YulIdentifier", + "src": "118174:6:10" + }, + "nativeSrc": "118174:16:10", + "nodeType": "YulFunctionCall", + "src": "118174:16:10" + }, + "nativeSrc": "118171:160:10", + "nodeType": "YulIf", + "src": "118171:160:10" + }, + { + "nativeSrc": "118352:5:10", + "nodeType": "YulBreak", + "src": "118352:5:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "118057:8:10", + "nodeType": "YulIdentifier", + "src": "118057:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "118045:11:10", + "nodeType": "YulIdentifier", + "src": "118045:11:10" + }, + "nativeSrc": "118045:21:10", + "nodeType": "YulFunctionCall", + "src": "118045:21:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "118038:6:10", + "nodeType": "YulIdentifier", + "src": "118038:6:10" + }, + "nativeSrc": "118038:29:10", + "nodeType": "YulFunctionCall", + "src": "118038:29:10" + }, + "nativeSrc": "118035:340:10", + "nodeType": "YulIf", + "src": "118035:340:10" + }, + { + "nativeSrc": "118392:20:10", + "nodeType": "YulAssignment", + "src": "118392:20:10", + "value": { + "kind": "number", + "nativeSrc": "118411:1:10", + "nodeType": "YulLiteral", + "src": "118411:1:10", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "alreadyDeployed", + "nativeSrc": "118392:15:10", + "nodeType": "YulIdentifier", + "src": "118392:15:10" + } + ] + }, + { + "body": { + "nativeSrc": "118446:9:10", + "nodeType": "YulBlock", + "src": "118446:9:10", + "statements": [ + { + "nativeSrc": "118448:5:10", + "nodeType": "YulBreak", + "src": "118448:5:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nativeSrc": "118439:5:10", + "nodeType": "YulIdentifier", + "src": "118439:5:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "118432:6:10", + "nodeType": "YulIdentifier", + "src": "118432:6:10" + }, + "nativeSrc": "118432:13:10", + "nodeType": "YulFunctionCall", + "src": "118432:13:10" + }, + "nativeSrc": "118429:26:10", + "nodeType": "YulIf", + "src": "118429:26:10" + }, + { + "body": { + "nativeSrc": "118548:129:10", + "nodeType": "YulBlock", + "src": "118548:129:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "118577:4:10", + "nodeType": "YulLiteral", + "src": "118577:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "118583:10:10", + "nodeType": "YulLiteral", + "src": "118583:10:10", + "type": "", + "value": "0xb12d13eb" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "118570:6:10", + "nodeType": "YulIdentifier", + "src": "118570:6:10" + }, + "nativeSrc": "118570:24:10", + "nodeType": "YulFunctionCall", + "src": "118570:24:10" + }, + "nativeSrc": "118570:24:10", + "nodeType": "YulExpressionStatement", + "src": "118570:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "118648:4:10", + "nodeType": "YulLiteral", + "src": "118648:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "118654:4:10", + "nodeType": "YulLiteral", + "src": "118654:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "118641:6:10", + "nodeType": "YulIdentifier", + "src": "118641:6:10" + }, + "nativeSrc": "118641:18:10", + "nodeType": "YulFunctionCall", + "src": "118641:18:10" + }, + "nativeSrc": "118641:18:10", + "nodeType": "YulExpressionStatement", + "src": "118641:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "118487:3:10", + "nodeType": "YulIdentifier", + "src": "118487:3:10" + }, + "nativeSrc": "118487:5:10", + "nodeType": "YulFunctionCall", + "src": "118487:5:10" + }, + { + "name": "instance", + "nativeSrc": "118494:8:10", + "nodeType": "YulIdentifier", + "src": "118494:8:10" + }, + { + "name": "value", + "nativeSrc": "118504:5:10", + "nodeType": "YulIdentifier", + "src": "118504:5:10" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "118511:8:10", + "nodeType": "YulIdentifier", + "src": "118511:8:10" + }, + "nativeSrc": "118511:10:10", + "nodeType": "YulFunctionCall", + "src": "118511:10:10" + }, + { + "kind": "number", + "nativeSrc": "118523:4:10", + "nodeType": "YulLiteral", + "src": "118523:4:10", + "type": "", + "value": "0x00" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "118529:8:10", + "nodeType": "YulIdentifier", + "src": "118529:8:10" + }, + "nativeSrc": "118529:10:10", + "nodeType": "YulFunctionCall", + "src": "118529:10:10" + }, + { + "kind": "number", + "nativeSrc": "118541:4:10", + "nodeType": "YulLiteral", + "src": "118541:4:10", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "call", + "nativeSrc": "118482:4:10", + "nodeType": "YulIdentifier", + "src": "118482:4:10" + }, + "nativeSrc": "118482:64:10", + "nodeType": "YulFunctionCall", + "src": "118482:64:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "118475:6:10", + "nodeType": "YulIdentifier", + "src": "118475:6:10" + }, + "nativeSrc": "118475:72:10", + "nodeType": "YulFunctionCall", + "src": "118475:72:10" + }, + "nativeSrc": "118472:205:10", + "nodeType": "YulIf", + "src": "118472:205:10" + }, + { + "nativeSrc": "118694:5:10", + "nodeType": "YulBreak", + "src": "118694:5:10" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "118012:1:10", + "nodeType": "YulLiteral", + "src": "118012:1:10", + "type": "", + "value": "1" + }, + "nativeSrc": "118005:708:10", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "118014:2:10", + "nodeType": "YulBlock", + "src": "118014:2:10", + "statements": [] + }, + "pre": { + "nativeSrc": "118009:2:10", + "nodeType": "YulBlock", + "src": "118009:2:10", + "statements": [] + }, + "src": "118005:708:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "118733:4:10", + "nodeType": "YulLiteral", + "src": "118733:4:10", + "type": "", + "value": "0x35" + }, + { + "kind": "number", + "nativeSrc": "118739:1:10", + "nodeType": "YulLiteral", + "src": "118739:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "118726:6:10", + "nodeType": "YulIdentifier", + "src": "118726:6:10" + }, + "nativeSrc": "118726:15:10", + "nodeType": "YulFunctionCall", + "src": "118726:15:10" + }, + "nativeSrc": "118726:15:10", + "nodeType": "YulExpressionStatement", + "src": "118726:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4617, + "isOffset": false, + "isSlot": false, + "src": "118392:15:10", + "valueSize": 1 + }, + { + "declaration": 4612, + "isOffset": false, + "isSlot": false, + "src": "117123:4:10", + "valueSize": 1 + }, + { + "declaration": 4612, + "isOffset": false, + "isSlot": false, + "src": "117170:4:10", + "valueSize": 1 + }, + { + "declaration": 4610, + "isOffset": false, + "isSlot": false, + "src": "117522:6:10", + "valueSize": 1 + }, + { + "declaration": 4619, + "isOffset": false, + "isSlot": false, + "src": "117959:8:10", + "valueSize": 1 + }, + { + "declaration": 4619, + "isOffset": false, + "isSlot": false, + "src": "118057:8:10", + "valueSize": 1 + }, + { + "declaration": 4619, + "isOffset": false, + "isSlot": false, + "src": "118090:8:10", + "valueSize": 1 + }, + { + "declaration": 4619, + "isOffset": false, + "isSlot": false, + "src": "118181:8:10", + "valueSize": 1 + }, + { + "declaration": 4619, + "isOffset": false, + "isSlot": false, + "src": "118494:8:10", + "valueSize": 1 + }, + { + "declaration": 4614, + "isOffset": false, + "isSlot": false, + "src": "117941:4:10", + "valueSize": 1 + }, + { + "declaration": 4614, + "isOffset": false, + "isSlot": false, + "src": "118145:4:10", + "valueSize": 1 + }, + { + "declaration": 4608, + "isOffset": false, + "isSlot": false, + "src": "118110:5:10", + "valueSize": 1 + }, + { + "declaration": 4608, + "isOffset": false, + "isSlot": false, + "src": "118439:5:10", + "valueSize": 1 + }, + { + "declaration": 4608, + "isOffset": false, + "isSlot": false, + "src": "118504:5:10", + "valueSize": 1 + } + ], + "id": 4621, + "nodeType": "InlineAssembly", + "src": "117052:1759:10" + } + ] + }, + "documentation": { + "id": 4606, + "nodeType": "StructuredDocumentation", + "src": "116511:276:10", + "text": "@dev Creates a deterministic minimal ERC1967 beacon proxy with `args` and `salt`.\n Deposits `value` ETH during deployment.\n Note: This method is intended for use in ERC4337 factories,\n which are expected to NOT revert if the proxy is already deployed." + }, + "id": 4623, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createDeterministicERC1967BeaconProxy", + "nameLocation": "116801:37:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4615, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4608, + "mutability": "mutable", + "name": "value", + "nameLocation": "116856:5:10", + "nodeType": "VariableDeclaration", + "scope": 4623, + "src": "116848:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4607, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "116848:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4610, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "116879:6:10", + "nodeType": "VariableDeclaration", + "scope": 4623, + "src": "116871:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4609, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "116871:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4612, + "mutability": "mutable", + "name": "args", + "nameLocation": "116908:4:10", + "nodeType": "VariableDeclaration", + "scope": 4623, + "src": "116895:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4611, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "116895:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4614, + "mutability": "mutable", + "name": "salt", + "nameLocation": "116930:4:10", + "nodeType": "VariableDeclaration", + "scope": 4623, + "src": "116922:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4613, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "116922:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "116838:102:10" + }, + "returnParameters": { + "id": 4620, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4617, + "mutability": "mutable", + "name": "alreadyDeployed", + "nameLocation": "116964:15:10", + "nodeType": "VariableDeclaration", + "scope": 4623, + "src": "116959:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4616, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "116959:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4619, + "mutability": "mutable", + "name": "instance", + "nameLocation": "116989:8:10", + "nodeType": "VariableDeclaration", + "scope": 4623, + "src": "116981:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4618, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "116981:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "116958:40:10" + }, + "scope": 5104, + "src": "116792:2025:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4634, + "nodeType": "Block", + "src": "119043:1066:10", + "statements": [ + { + "AST": { + "nativeSrc": "119105:998:10", + "nodeType": "YulBlock", + "src": "119105:998:10", + "statements": [ + { + "nativeSrc": "119119:16:10", + "nodeType": "YulAssignment", + "src": "119119:16:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "119130:4:10", + "nodeType": "YulLiteral", + "src": "119130:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "119124:5:10", + "nodeType": "YulIdentifier", + "src": "119124:5:10" + }, + "nativeSrc": "119124:11:10", + "nodeType": "YulFunctionCall", + "src": "119124:11:10" + }, + "variableNames": [ + { + "name": "c", + "nativeSrc": "119119:1:10", + "nodeType": "YulIdentifier", + "src": "119119:1:10" + } + ] + }, + { + "nativeSrc": "119148:20:10", + "nodeType": "YulVariableDeclaration", + "src": "119148:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "119163:4:10", + "nodeType": "YulIdentifier", + "src": "119163:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "119157:5:10", + "nodeType": "YulIdentifier", + "src": "119157:5:10" + }, + "nativeSrc": "119157:11:10", + "nodeType": "YulFunctionCall", + "src": "119157:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "119152:1:10", + "nodeType": "YulTypedName", + "src": "119152:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "119283:14:10", + "nodeType": "YulIdentifier", + "src": "119283:14:10" + }, + "nativeSrc": "119283:16:10", + "nodeType": "YulFunctionCall", + "src": "119283:16:10" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "119301:14:10", + "nodeType": "YulIdentifier", + "src": "119301:14:10" + }, + "nativeSrc": "119301:16:10", + "nodeType": "YulFunctionCall", + "src": "119301:16:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "119322:1:10", + "nodeType": "YulIdentifier", + "src": "119322:1:10" + }, + { + "kind": "number", + "nativeSrc": "119325:6:10", + "nodeType": "YulLiteral", + "src": "119325:6:10", + "type": "", + "value": "0xffad" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "119319:2:10", + "nodeType": "YulIdentifier", + "src": "119319:2:10" + }, + "nativeSrc": "119319:13:10", + "nodeType": "YulFunctionCall", + "src": "119319:13:10" + } + ], + "functionName": { + "name": "returndatacopy", + "nativeSrc": "119268:14:10", + "nodeType": "YulIdentifier", + "src": "119268:14:10" + }, + "nativeSrc": "119268:65:10", + "nodeType": "YulFunctionCall", + "src": "119268:65:10" + }, + "nativeSrc": "119268:65:10", + "nodeType": "YulExpressionStatement", + "src": "119268:65:10" + }, + { + "body": { + "nativeSrc": "119396:92:10", + "nodeType": "YulBlock", + "src": "119396:92:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "119429:1:10", + "nodeType": "YulIdentifier", + "src": "119429:1:10" + }, + { + "kind": "number", + "nativeSrc": "119432:4:10", + "nodeType": "YulLiteral", + "src": "119432:4:10", + "type": "", + "value": "0x95" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "119425:3:10", + "nodeType": "YulIdentifier", + "src": "119425:3:10" + }, + "nativeSrc": "119425:12:10", + "nodeType": "YulFunctionCall", + "src": "119425:12:10" + }, + { + "name": "i", + "nativeSrc": "119439:1:10", + "nodeType": "YulIdentifier", + "src": "119439:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "119421:3:10", + "nodeType": "YulIdentifier", + "src": "119421:3:10" + }, + "nativeSrc": "119421:20:10", + "nodeType": "YulFunctionCall", + "src": "119421:20:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "119457:4:10", + "nodeType": "YulIdentifier", + "src": "119457:4:10" + }, + { + "kind": "number", + "nativeSrc": "119463:4:10", + "nodeType": "YulLiteral", + "src": "119463:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "119453:3:10", + "nodeType": "YulIdentifier", + "src": "119453:3:10" + }, + "nativeSrc": "119453:15:10", + "nodeType": "YulFunctionCall", + "src": "119453:15:10" + }, + { + "name": "i", + "nativeSrc": "119470:1:10", + "nodeType": "YulIdentifier", + "src": "119470:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "119449:3:10", + "nodeType": "YulIdentifier", + "src": "119449:3:10" + }, + "nativeSrc": "119449:23:10", + "nodeType": "YulFunctionCall", + "src": "119449:23:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "119443:5:10", + "nodeType": "YulIdentifier", + "src": "119443:5:10" + }, + "nativeSrc": "119443:30:10", + "nodeType": "YulFunctionCall", + "src": "119443:30:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "119414:6:10", + "nodeType": "YulIdentifier", + "src": "119414:6:10" + }, + "nativeSrc": "119414:60:10", + "nodeType": "YulFunctionCall", + "src": "119414:60:10" + }, + "nativeSrc": "119414:60:10", + "nodeType": "YulExpressionStatement", + "src": "119414:60:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "119368:1:10", + "nodeType": "YulIdentifier", + "src": "119368:1:10" + }, + { + "name": "n", + "nativeSrc": "119371:1:10", + "nodeType": "YulIdentifier", + "src": "119371:1:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "119365:2:10", + "nodeType": "YulIdentifier", + "src": "119365:2:10" + }, + "nativeSrc": "119365:8:10", + "nodeType": "YulFunctionCall", + "src": "119365:8:10" + }, + "nativeSrc": "119346:142:10", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "119374:21:10", + "nodeType": "YulBlock", + "src": "119374:21:10", + "statements": [ + { + "nativeSrc": "119376:17:10", + "nodeType": "YulAssignment", + "src": "119376:17:10", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "119385:1:10", + "nodeType": "YulIdentifier", + "src": "119385:1:10" + }, + { + "kind": "number", + "nativeSrc": "119388:4:10", + "nodeType": "YulLiteral", + "src": "119388:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "119381:3:10", + "nodeType": "YulIdentifier", + "src": "119381:3:10" + }, + "nativeSrc": "119381:12:10", + "nodeType": "YulFunctionCall", + "src": "119381:12:10" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "119376:1:10", + "nodeType": "YulIdentifier", + "src": "119376:1:10" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "119350:14:10", + "nodeType": "YulBlock", + "src": "119350:14:10", + "statements": [ + { + "nativeSrc": "119352:10:10", + "nodeType": "YulVariableDeclaration", + "src": "119352:10:10", + "value": { + "kind": "number", + "nativeSrc": "119361:1:10", + "nodeType": "YulLiteral", + "src": "119361:1:10", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "119356:1:10", + "nodeType": "YulTypedName", + "src": "119356:1:10", + "type": "" + } + ] + } + ] + }, + "src": "119346:142:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "119512:1:10", + "nodeType": "YulIdentifier", + "src": "119512:1:10" + }, + { + "kind": "number", + "nativeSrc": "119515:4:10", + "nodeType": "YulLiteral", + "src": "119515:4:10", + "type": "", + "value": "0x75" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "119508:3:10", + "nodeType": "YulIdentifier", + "src": "119508:3:10" + }, + "nativeSrc": "119508:12:10", + "nodeType": "YulFunctionCall", + "src": "119508:12:10" + }, + { + "kind": "number", + "nativeSrc": "119522:66:10", + "nodeType": "YulLiteral", + "src": "119522:66:10", + "type": "", + "value": "0xb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "119501:6:10", + "nodeType": "YulIdentifier", + "src": "119501:6:10" + }, + "nativeSrc": "119501:88:10", + "nodeType": "YulFunctionCall", + "src": "119501:88:10" + }, + "nativeSrc": "119501:88:10", + "nodeType": "YulExpressionStatement", + "src": "119501:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "119613:1:10", + "nodeType": "YulIdentifier", + "src": "119613:1:10" + }, + { + "kind": "number", + "nativeSrc": "119616:4:10", + "nodeType": "YulLiteral", + "src": "119616:4:10", + "type": "", + "value": "0x55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "119609:3:10", + "nodeType": "YulIdentifier", + "src": "119609:3:10" + }, + "nativeSrc": "119609:12:10", + "nodeType": "YulFunctionCall", + "src": "119609:12:10" + }, + { + "kind": "number", + "nativeSrc": "119623:66:10", + "nodeType": "YulLiteral", + "src": "119623:66:10", + "type": "", + "value": "0x1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "119602:6:10", + "nodeType": "YulIdentifier", + "src": "119602:6:10" + }, + "nativeSrc": "119602:88:10", + "nodeType": "YulFunctionCall", + "src": "119602:88:10" + }, + "nativeSrc": "119602:88:10", + "nodeType": "YulExpressionStatement", + "src": "119602:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "119714:1:10", + "nodeType": "YulIdentifier", + "src": "119714:1:10" + }, + { + "kind": "number", + "nativeSrc": "119717:4:10", + "nodeType": "YulLiteral", + "src": "119717:4:10", + "type": "", + "value": "0x35" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "119710:3:10", + "nodeType": "YulIdentifier", + "src": "119710:3:10" + }, + "nativeSrc": "119710:12:10", + "nodeType": "YulFunctionCall", + "src": "119710:12:10" + }, + { + "kind": "number", + "nativeSrc": "119724:48:10", + "nodeType": "YulLiteral", + "src": "119724:48:10", + "type": "", + "value": "0x60195155f3363d3d373d3d363d602036600436635c60da" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "119703:6:10", + "nodeType": "YulIdentifier", + "src": "119703:6:10" + }, + "nativeSrc": "119703:70:10", + "nodeType": "YulFunctionCall", + "src": "119703:70:10" + }, + "nativeSrc": "119703:70:10", + "nodeType": "YulExpressionStatement", + "src": "119703:70:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "119797:1:10", + "nodeType": "YulIdentifier", + "src": "119797:1:10" + }, + { + "kind": "number", + "nativeSrc": "119800:4:10", + "nodeType": "YulLiteral", + "src": "119800:4:10", + "type": "", + "value": "0x1e" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "119793:3:10", + "nodeType": "YulIdentifier", + "src": "119793:3:10" + }, + "nativeSrc": "119793:12:10", + "nodeType": "YulFunctionCall", + "src": "119793:12:10" + }, + { + "name": "beacon", + "nativeSrc": "119807:6:10", + "nodeType": "YulIdentifier", + "src": "119807:6:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "119786:6:10", + "nodeType": "YulIdentifier", + "src": "119786:6:10" + }, + "nativeSrc": "119786:28:10", + "nodeType": "YulFunctionCall", + "src": "119786:28:10" + }, + "nativeSrc": "119786:28:10", + "nodeType": "YulExpressionStatement", + "src": "119786:28:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "119838:1:10", + "nodeType": "YulIdentifier", + "src": "119838:1:10" + }, + { + "kind": "number", + "nativeSrc": "119841:4:10", + "nodeType": "YulLiteral", + "src": "119841:4:10", + "type": "", + "value": "0x0a" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "119834:3:10", + "nodeType": "YulIdentifier", + "src": "119834:3:10" + }, + "nativeSrc": "119834:12:10", + "nodeType": "YulFunctionCall", + "src": "119834:12:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "119852:22:10", + "nodeType": "YulLiteral", + "src": "119852:22:10", + "type": "", + "value": "0x6100523d8160233d3973" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "119880:2:10", + "nodeType": "YulLiteral", + "src": "119880:2:10", + "type": "", + "value": "56" + }, + { + "name": "n", + "nativeSrc": "119884:1:10", + "nodeType": "YulIdentifier", + "src": "119884:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "119876:3:10", + "nodeType": "YulIdentifier", + "src": "119876:3:10" + }, + "nativeSrc": "119876:10:10", + "nodeType": "YulFunctionCall", + "src": "119876:10:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "119848:3:10", + "nodeType": "YulIdentifier", + "src": "119848:3:10" + }, + "nativeSrc": "119848:39:10", + "nodeType": "YulFunctionCall", + "src": "119848:39:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "119827:6:10", + "nodeType": "YulIdentifier", + "src": "119827:6:10" + }, + "nativeSrc": "119827:61:10", + "nodeType": "YulFunctionCall", + "src": "119827:61:10" + }, + "nativeSrc": "119827:61:10", + "nodeType": "YulExpressionStatement", + "src": "119827:61:10" + }, + { + "expression": { + "arguments": [ + { + "name": "c", + "nativeSrc": "119908:1:10", + "nodeType": "YulIdentifier", + "src": "119908:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "119915:1:10", + "nodeType": "YulIdentifier", + "src": "119915:1:10" + }, + { + "kind": "number", + "nativeSrc": "119918:4:10", + "nodeType": "YulLiteral", + "src": "119918:4:10", + "type": "", + "value": "0x75" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "119911:3:10", + "nodeType": "YulIdentifier", + "src": "119911:3:10" + }, + "nativeSrc": "119911:12:10", + "nodeType": "YulFunctionCall", + "src": "119911:12:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "119901:6:10", + "nodeType": "YulIdentifier", + "src": "119901:6:10" + }, + "nativeSrc": "119901:23:10", + "nodeType": "YulFunctionCall", + "src": "119901:23:10" + }, + "nativeSrc": "119901:23:10", + "nodeType": "YulExpressionStatement", + "src": "119901:23:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "119969:1:10", + "nodeType": "YulIdentifier", + "src": "119969:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "119976:1:10", + "nodeType": "YulIdentifier", + "src": "119976:1:10" + }, + { + "kind": "number", + "nativeSrc": "119979:4:10", + "nodeType": "YulLiteral", + "src": "119979:4:10", + "type": "", + "value": "0x95" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "119972:3:10", + "nodeType": "YulIdentifier", + "src": "119972:3:10" + }, + "nativeSrc": "119972:12:10", + "nodeType": "YulFunctionCall", + "src": "119972:12:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "119965:3:10", + "nodeType": "YulIdentifier", + "src": "119965:3:10" + }, + "nativeSrc": "119965:20:10", + "nodeType": "YulFunctionCall", + "src": "119965:20:10" + }, + { + "kind": "number", + "nativeSrc": "119987:1:10", + "nodeType": "YulLiteral", + "src": "119987:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "119958:6:10", + "nodeType": "YulIdentifier", + "src": "119958:6:10" + }, + "nativeSrc": "119958:31:10", + "nodeType": "YulFunctionCall", + "src": "119958:31:10" + }, + "nativeSrc": "119958:31:10", + "nodeType": "YulExpressionStatement", + "src": "119958:31:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "120046:4:10", + "nodeType": "YulLiteral", + "src": "120046:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "c", + "nativeSrc": "120056:1:10", + "nodeType": "YulIdentifier", + "src": "120056:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "120063:1:10", + "nodeType": "YulIdentifier", + "src": "120063:1:10" + }, + { + "kind": "number", + "nativeSrc": "120066:4:10", + "nodeType": "YulLiteral", + "src": "120066:4:10", + "type": "", + "value": "0xb5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "120059:3:10", + "nodeType": "YulIdentifier", + "src": "120059:3:10" + }, + "nativeSrc": "120059:12:10", + "nodeType": "YulFunctionCall", + "src": "120059:12:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "120052:3:10", + "nodeType": "YulIdentifier", + "src": "120052:3:10" + }, + "nativeSrc": "120052:20:10", + "nodeType": "YulFunctionCall", + "src": "120052:20:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "120039:6:10", + "nodeType": "YulIdentifier", + "src": "120039:6:10" + }, + "nativeSrc": "120039:34:10", + "nodeType": "YulFunctionCall", + "src": "120039:34:10" + }, + "nativeSrc": "120039:34:10", + "nodeType": "YulExpressionStatement", + "src": "120039:34:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4628, + "isOffset": false, + "isSlot": false, + "src": "119163:4:10", + "valueSize": 1 + }, + { + "declaration": 4628, + "isOffset": false, + "isSlot": false, + "src": "119457:4:10", + "valueSize": 1 + }, + { + "declaration": 4626, + "isOffset": false, + "isSlot": false, + "src": "119807:6:10", + "valueSize": 1 + }, + { + "declaration": 4631, + "isOffset": false, + "isSlot": false, + "src": "119119:1:10", + "valueSize": 1 + }, + { + "declaration": 4631, + "isOffset": false, + "isSlot": false, + "src": "119429:1:10", + "valueSize": 1 + }, + { + "declaration": 4631, + "isOffset": false, + "isSlot": false, + "src": "119512:1:10", + "valueSize": 1 + }, + { + "declaration": 4631, + "isOffset": false, + "isSlot": false, + "src": "119613:1:10", + "valueSize": 1 + }, + { + "declaration": 4631, + "isOffset": false, + "isSlot": false, + "src": "119714:1:10", + "valueSize": 1 + }, + { + "declaration": 4631, + "isOffset": false, + "isSlot": false, + "src": "119797:1:10", + "valueSize": 1 + }, + { + "declaration": 4631, + "isOffset": false, + "isSlot": false, + "src": "119838:1:10", + "valueSize": 1 + }, + { + "declaration": 4631, + "isOffset": false, + "isSlot": false, + "src": "119908:1:10", + "valueSize": 1 + }, + { + "declaration": 4631, + "isOffset": false, + "isSlot": false, + "src": "119969:1:10", + "valueSize": 1 + }, + { + "declaration": 4631, + "isOffset": false, + "isSlot": false, + "src": "120056:1:10", + "valueSize": 1 + } + ], + "id": 4633, + "nodeType": "InlineAssembly", + "src": "119096:1007:10" + } + ] + }, + "documentation": { + "id": 4624, + "nodeType": "StructuredDocumentation", + "src": "118823:77:10", + "text": "@dev Returns the initialization code of the minimal ERC1967 beacon proxy." + }, + "id": 4635, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeERC1967BeaconProxy", + "nameLocation": "118914:26:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4629, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4626, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "118949:6:10", + "nodeType": "VariableDeclaration", + "scope": 4635, + "src": "118941:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4625, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "118941:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4628, + "mutability": "mutable", + "name": "args", + "nameLocation": "118970:4:10", + "nodeType": "VariableDeclaration", + "scope": 4635, + "src": "118957:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4627, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "118957:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "118940:35:10" + }, + "returnParameters": { + "id": 4632, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4631, + "mutability": "mutable", + "name": "c", + "nameLocation": "119036:1:10", + "nodeType": "VariableDeclaration", + "scope": 4635, + "src": "119023:14:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4630, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "119023:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "119022:16:10" + }, + "scope": 5104, + "src": "118905:1204:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4646, + "nodeType": "Block", + "src": "120354:912:10", + "statements": [ + { + "AST": { + "nativeSrc": "120416:844:10", + "nodeType": "YulBlock", + "src": "120416:844:10", + "statements": [ + { + "nativeSrc": "120430:20:10", + "nodeType": "YulVariableDeclaration", + "src": "120430:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "120445:4:10", + "nodeType": "YulLiteral", + "src": "120445:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "120439:5:10", + "nodeType": "YulIdentifier", + "src": "120439:5:10" + }, + "nativeSrc": "120439:11:10", + "nodeType": "YulFunctionCall", + "src": "120439:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "120434:1:10", + "nodeType": "YulTypedName", + "src": "120434:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "120463:20:10", + "nodeType": "YulVariableDeclaration", + "src": "120463:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "120478:4:10", + "nodeType": "YulIdentifier", + "src": "120478:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "120472:5:10", + "nodeType": "YulIdentifier", + "src": "120472:5:10" + }, + "nativeSrc": "120472:11:10", + "nodeType": "YulFunctionCall", + "src": "120472:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "120467:1:10", + "nodeType": "YulTypedName", + "src": "120467:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "120598:14:10", + "nodeType": "YulIdentifier", + "src": "120598:14:10" + }, + "nativeSrc": "120598:16:10", + "nodeType": "YulFunctionCall", + "src": "120598:16:10" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "120616:14:10", + "nodeType": "YulIdentifier", + "src": "120616:14:10" + }, + "nativeSrc": "120616:16:10", + "nodeType": "YulFunctionCall", + "src": "120616:16:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "120637:1:10", + "nodeType": "YulIdentifier", + "src": "120637:1:10" + }, + { + "kind": "number", + "nativeSrc": "120640:6:10", + "nodeType": "YulLiteral", + "src": "120640:6:10", + "type": "", + "value": "0xffad" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "120634:2:10", + "nodeType": "YulIdentifier", + "src": "120634:2:10" + }, + "nativeSrc": "120634:13:10", + "nodeType": "YulFunctionCall", + "src": "120634:13:10" + } + ], + "functionName": { + "name": "returndatacopy", + "nativeSrc": "120583:14:10", + "nodeType": "YulIdentifier", + "src": "120583:14:10" + }, + "nativeSrc": "120583:65:10", + "nodeType": "YulFunctionCall", + "src": "120583:65:10" + }, + "nativeSrc": "120583:65:10", + "nodeType": "YulExpressionStatement", + "src": "120583:65:10" + }, + { + "body": { + "nativeSrc": "120711:92:10", + "nodeType": "YulBlock", + "src": "120711:92:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "120744:1:10", + "nodeType": "YulIdentifier", + "src": "120744:1:10" + }, + { + "kind": "number", + "nativeSrc": "120747:4:10", + "nodeType": "YulLiteral", + "src": "120747:4:10", + "type": "", + "value": "0x8b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "120740:3:10", + "nodeType": "YulIdentifier", + "src": "120740:3:10" + }, + "nativeSrc": "120740:12:10", + "nodeType": "YulFunctionCall", + "src": "120740:12:10" + }, + { + "name": "i", + "nativeSrc": "120754:1:10", + "nodeType": "YulIdentifier", + "src": "120754:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "120736:3:10", + "nodeType": "YulIdentifier", + "src": "120736:3:10" + }, + "nativeSrc": "120736:20:10", + "nodeType": "YulFunctionCall", + "src": "120736:20:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "120772:4:10", + "nodeType": "YulIdentifier", + "src": "120772:4:10" + }, + { + "kind": "number", + "nativeSrc": "120778:4:10", + "nodeType": "YulLiteral", + "src": "120778:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "120768:3:10", + "nodeType": "YulIdentifier", + "src": "120768:3:10" + }, + "nativeSrc": "120768:15:10", + "nodeType": "YulFunctionCall", + "src": "120768:15:10" + }, + { + "name": "i", + "nativeSrc": "120785:1:10", + "nodeType": "YulIdentifier", + "src": "120785:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "120764:3:10", + "nodeType": "YulIdentifier", + "src": "120764:3:10" + }, + "nativeSrc": "120764:23:10", + "nodeType": "YulFunctionCall", + "src": "120764:23:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "120758:5:10", + "nodeType": "YulIdentifier", + "src": "120758:5:10" + }, + "nativeSrc": "120758:30:10", + "nodeType": "YulFunctionCall", + "src": "120758:30:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "120729:6:10", + "nodeType": "YulIdentifier", + "src": "120729:6:10" + }, + "nativeSrc": "120729:60:10", + "nodeType": "YulFunctionCall", + "src": "120729:60:10" + }, + "nativeSrc": "120729:60:10", + "nodeType": "YulExpressionStatement", + "src": "120729:60:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "120683:1:10", + "nodeType": "YulIdentifier", + "src": "120683:1:10" + }, + { + "name": "n", + "nativeSrc": "120686:1:10", + "nodeType": "YulIdentifier", + "src": "120686:1:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "120680:2:10", + "nodeType": "YulIdentifier", + "src": "120680:2:10" + }, + "nativeSrc": "120680:8:10", + "nodeType": "YulFunctionCall", + "src": "120680:8:10" + }, + "nativeSrc": "120661:142:10", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "120689:21:10", + "nodeType": "YulBlock", + "src": "120689:21:10", + "statements": [ + { + "nativeSrc": "120691:17:10", + "nodeType": "YulAssignment", + "src": "120691:17:10", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "120700:1:10", + "nodeType": "YulIdentifier", + "src": "120700:1:10" + }, + { + "kind": "number", + "nativeSrc": "120703:4:10", + "nodeType": "YulLiteral", + "src": "120703:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "120696:3:10", + "nodeType": "YulIdentifier", + "src": "120696:3:10" + }, + "nativeSrc": "120696:12:10", + "nodeType": "YulFunctionCall", + "src": "120696:12:10" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "120691:1:10", + "nodeType": "YulIdentifier", + "src": "120691:1:10" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "120665:14:10", + "nodeType": "YulBlock", + "src": "120665:14:10", + "statements": [ + { + "nativeSrc": "120667:10:10", + "nodeType": "YulVariableDeclaration", + "src": "120667:10:10", + "value": { + "kind": "number", + "nativeSrc": "120676:1:10", + "nodeType": "YulLiteral", + "src": "120676:1:10", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "120671:1:10", + "nodeType": "YulTypedName", + "src": "120671:1:10", + "type": "" + } + ] + } + ] + }, + "src": "120661:142:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "120827:1:10", + "nodeType": "YulIdentifier", + "src": "120827:1:10" + }, + { + "kind": "number", + "nativeSrc": "120830:4:10", + "nodeType": "YulLiteral", + "src": "120830:4:10", + "type": "", + "value": "0x6b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "120823:3:10", + "nodeType": "YulIdentifier", + "src": "120823:3:10" + }, + "nativeSrc": "120823:12:10", + "nodeType": "YulFunctionCall", + "src": "120823:12:10" + }, + { + "kind": "number", + "nativeSrc": "120837:66:10", + "nodeType": "YulLiteral", + "src": "120837:66:10", + "type": "", + "value": "0xb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "120816:6:10", + "nodeType": "YulIdentifier", + "src": "120816:6:10" + }, + "nativeSrc": "120816:88:10", + "nodeType": "YulFunctionCall", + "src": "120816:88:10" + }, + "nativeSrc": "120816:88:10", + "nodeType": "YulExpressionStatement", + "src": "120816:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "120928:1:10", + "nodeType": "YulIdentifier", + "src": "120928:1:10" + }, + { + "kind": "number", + "nativeSrc": "120931:4:10", + "nodeType": "YulLiteral", + "src": "120931:4:10", + "type": "", + "value": "0x4b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "120924:3:10", + "nodeType": "YulIdentifier", + "src": "120924:3:10" + }, + "nativeSrc": "120924:12:10", + "nodeType": "YulFunctionCall", + "src": "120924:12:10" + }, + { + "kind": "number", + "nativeSrc": "120938:66:10", + "nodeType": "YulLiteral", + "src": "120938:66:10", + "type": "", + "value": "0x1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "120917:6:10", + "nodeType": "YulIdentifier", + "src": "120917:6:10" + }, + "nativeSrc": "120917:88:10", + "nodeType": "YulFunctionCall", + "src": "120917:88:10" + }, + "nativeSrc": "120917:88:10", + "nodeType": "YulExpressionStatement", + "src": "120917:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "121029:1:10", + "nodeType": "YulIdentifier", + "src": "121029:1:10" + }, + { + "kind": "number", + "nativeSrc": "121032:4:10", + "nodeType": "YulLiteral", + "src": "121032:4:10", + "type": "", + "value": "0x2b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "121025:3:10", + "nodeType": "YulIdentifier", + "src": "121025:3:10" + }, + "nativeSrc": "121025:12:10", + "nodeType": "YulFunctionCall", + "src": "121025:12:10" + }, + { + "kind": "number", + "nativeSrc": "121039:48:10", + "nodeType": "YulLiteral", + "src": "121039:48:10", + "type": "", + "value": "0x60195155f3363d3d373d3d363d602036600436635c60da" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "121018:6:10", + "nodeType": "YulIdentifier", + "src": "121018:6:10" + }, + "nativeSrc": "121018:70:10", + "nodeType": "YulFunctionCall", + "src": "121018:70:10" + }, + "nativeSrc": "121018:70:10", + "nodeType": "YulExpressionStatement", + "src": "121018:70:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "121112:1:10", + "nodeType": "YulIdentifier", + "src": "121112:1:10" + }, + { + "kind": "number", + "nativeSrc": "121115:4:10", + "nodeType": "YulLiteral", + "src": "121115:4:10", + "type": "", + "value": "0x14" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "121108:3:10", + "nodeType": "YulIdentifier", + "src": "121108:3:10" + }, + "nativeSrc": "121108:12:10", + "nodeType": "YulFunctionCall", + "src": "121108:12:10" + }, + { + "name": "beacon", + "nativeSrc": "121122:6:10", + "nodeType": "YulIdentifier", + "src": "121122:6:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "121101:6:10", + "nodeType": "YulIdentifier", + "src": "121101:6:10" + }, + "nativeSrc": "121101:28:10", + "nodeType": "YulFunctionCall", + "src": "121101:28:10" + }, + "nativeSrc": "121101:28:10", + "nodeType": "YulExpressionStatement", + "src": "121101:28:10" + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "121149:1:10", + "nodeType": "YulIdentifier", + "src": "121149:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "121156:22:10", + "nodeType": "YulLiteral", + "src": "121156:22:10", + "type": "", + "value": "0x6100523d8160233d3973" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "121184:2:10", + "nodeType": "YulLiteral", + "src": "121184:2:10", + "type": "", + "value": "56" + }, + { + "name": "n", + "nativeSrc": "121188:1:10", + "nodeType": "YulIdentifier", + "src": "121188:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "121180:3:10", + "nodeType": "YulIdentifier", + "src": "121180:3:10" + }, + "nativeSrc": "121180:10:10", + "nodeType": "YulFunctionCall", + "src": "121180:10:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "121152:3:10", + "nodeType": "YulIdentifier", + "src": "121152:3:10" + }, + "nativeSrc": "121152:39:10", + "nodeType": "YulFunctionCall", + "src": "121152:39:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "121142:6:10", + "nodeType": "YulIdentifier", + "src": "121142:6:10" + }, + "nativeSrc": "121142:50:10", + "nodeType": "YulFunctionCall", + "src": "121142:50:10" + }, + "nativeSrc": "121142:50:10", + "nodeType": "YulExpressionStatement", + "src": "121142:50:10" + }, + { + "nativeSrc": "121205:45:10", + "nodeType": "YulAssignment", + "src": "121205:45:10", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "121227:1:10", + "nodeType": "YulIdentifier", + "src": "121227:1:10" + }, + { + "kind": "number", + "nativeSrc": "121230:4:10", + "nodeType": "YulLiteral", + "src": "121230:4:10", + "type": "", + "value": "0x16" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "121223:3:10", + "nodeType": "YulIdentifier", + "src": "121223:3:10" + }, + "nativeSrc": "121223:12:10", + "nodeType": "YulFunctionCall", + "src": "121223:12:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "121241:1:10", + "nodeType": "YulIdentifier", + "src": "121241:1:10" + }, + { + "kind": "number", + "nativeSrc": "121244:4:10", + "nodeType": "YulLiteral", + "src": "121244:4:10", + "type": "", + "value": "0x75" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "121237:3:10", + "nodeType": "YulIdentifier", + "src": "121237:3:10" + }, + "nativeSrc": "121237:12:10", + "nodeType": "YulFunctionCall", + "src": "121237:12:10" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "121213:9:10", + "nodeType": "YulIdentifier", + "src": "121213:9:10" + }, + "nativeSrc": "121213:37:10", + "nodeType": "YulFunctionCall", + "src": "121213:37:10" + }, + "variableNames": [ + { + "name": "hash", + "nativeSrc": "121205:4:10", + "nodeType": "YulIdentifier", + "src": "121205:4:10" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4640, + "isOffset": false, + "isSlot": false, + "src": "120478:4:10", + "valueSize": 1 + }, + { + "declaration": 4640, + "isOffset": false, + "isSlot": false, + "src": "120772:4:10", + "valueSize": 1 + }, + { + "declaration": 4638, + "isOffset": false, + "isSlot": false, + "src": "121122:6:10", + "valueSize": 1 + }, + { + "declaration": 4643, + "isOffset": false, + "isSlot": false, + "src": "121205:4:10", + "valueSize": 1 + } + ], + "id": 4645, + "nodeType": "InlineAssembly", + "src": "120407:853:10" + } + ] + }, + "documentation": { + "id": 4636, + "nodeType": "StructuredDocumentation", + "src": "120115:94:10", + "text": "@dev Returns the initialization code hash of the minimal ERC1967 beacon proxy with `args`." + }, + "id": 4647, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeHashERC1967BeaconProxy", + "nameLocation": "120223:30:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4641, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4638, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "120262:6:10", + "nodeType": "VariableDeclaration", + "scope": 4647, + "src": "120254:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4637, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "120254:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4640, + "mutability": "mutable", + "name": "args", + "nameLocation": "120283:4:10", + "nodeType": "VariableDeclaration", + "scope": 4647, + "src": "120270:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4639, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "120270:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "120253:35:10" + }, + "returnParameters": { + "id": 4644, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4643, + "mutability": "mutable", + "name": "hash", + "nameLocation": "120344:4:10", + "nodeType": "VariableDeclaration", + "scope": 4647, + "src": "120336:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4642, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "120336:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "120335:14:10" + }, + "scope": 5104, + "src": "120214:1052:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4676, + "nodeType": "Block", + "src": "121668:147:10", + "statements": [ + { + "assignments": [ + 4662 + ], + "declarations": [ + { + "constant": false, + "id": 4662, + "mutability": "mutable", + "name": "hash", + "nameLocation": "121686:4:10", + "nodeType": "VariableDeclaration", + "scope": 4676, + "src": "121678:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4661, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "121678:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 4667, + "initialValue": { + "arguments": [ + { + "id": 4664, + "name": "beacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4650, + "src": "121724:6:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4665, + "name": "args", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4652, + "src": "121732:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 4663, + "name": "initCodeHashERC1967BeaconProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4485, + 4647 + ], + "referencedDeclaration": 4647, + "src": "121693:30:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (address,bytes memory) pure returns (bytes32)" + } + }, + "id": 4666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "121693:44:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "121678:59:10" + }, + { + "expression": { + "id": 4674, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4668, + "name": "predicted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4659, + "src": "121747:9:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 4670, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4662, + "src": "121787:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 4671, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4654, + "src": "121793:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 4672, + "name": "deployer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4656, + "src": "121799:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4669, + "name": "predictDeterministicAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3237, + 3510, + 5081 + ], + "referencedDeclaration": 5081, + "src": "121759:27:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_address_$", + "typeString": "function (bytes32,bytes32,address) pure returns (address)" + } + }, + "id": 4673, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "121759:49:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "121747:61:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4675, + "nodeType": "ExpressionStatement", + "src": "121747:61:10" + } + ] + }, + "documentation": { + "id": 4648, + "nodeType": "StructuredDocumentation", + "src": "121272:189:10", + "text": "@dev Returns the address of the ERC1967 beacon proxy with `args`, with `salt` by `deployer`.\n Note: The returned result has dirty upper 96 bits. Please clean if used in assembly." + }, + "id": 4677, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "predictDeterministicAddressERC1967BeaconProxy", + "nameLocation": "121475:45:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4657, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4650, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "121538:6:10", + "nodeType": "VariableDeclaration", + "scope": 4677, + "src": "121530:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4649, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "121530:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4652, + "mutability": "mutable", + "name": "args", + "nameLocation": "121567:4:10", + "nodeType": "VariableDeclaration", + "scope": 4677, + "src": "121554:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4651, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "121554:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4654, + "mutability": "mutable", + "name": "salt", + "nameLocation": "121589:4:10", + "nodeType": "VariableDeclaration", + "scope": 4677, + "src": "121581:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4653, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "121581:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4656, + "mutability": "mutable", + "name": "deployer", + "nameLocation": "121611:8:10", + "nodeType": "VariableDeclaration", + "scope": 4677, + "src": "121603:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4655, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "121603:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "121520:105:10" + }, + "returnParameters": { + "id": 4660, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4659, + "mutability": "mutable", + "name": "predicted", + "nameLocation": "121657:9:10", + "nodeType": "VariableDeclaration", + "scope": 4677, + "src": "121649:17:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4658, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "121649:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "121648:19:10" + }, + "scope": 5104, + "src": "121466:349:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4686, + "nodeType": "Block", + "src": "122001:371:10", + "statements": [ + { + "AST": { + "nativeSrc": "122063:303:10", + "nodeType": "YulBlock", + "src": "122063:303:10", + "statements": [ + { + "nativeSrc": "122077:19:10", + "nodeType": "YulAssignment", + "src": "122077:19:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "122091:4:10", + "nodeType": "YulLiteral", + "src": "122091:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "122085:5:10", + "nodeType": "YulIdentifier", + "src": "122085:5:10" + }, + "nativeSrc": "122085:11:10", + "nodeType": "YulFunctionCall", + "src": "122085:11:10" + }, + "variableNames": [ + { + "name": "args", + "nativeSrc": "122077:4:10", + "nodeType": "YulIdentifier", + "src": "122077:4:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "args", + "nativeSrc": "122116:4:10", + "nodeType": "YulIdentifier", + "src": "122116:4:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "122126:12:10", + "nodeType": "YulLiteral", + "src": "122126:12:10", + "type": "", + "value": "0xffffffffff" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "122156:8:10", + "nodeType": "YulIdentifier", + "src": "122156:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "122144:11:10", + "nodeType": "YulIdentifier", + "src": "122144:11:10" + }, + "nativeSrc": "122144:21:10", + "nodeType": "YulFunctionCall", + "src": "122144:21:10" + }, + { + "kind": "number", + "nativeSrc": "122167:4:10", + "nodeType": "YulLiteral", + "src": "122167:4:10", + "type": "", + "value": "0x52" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "122140:3:10", + "nodeType": "YulIdentifier", + "src": "122140:3:10" + }, + "nativeSrc": "122140:32:10", + "nodeType": "YulFunctionCall", + "src": "122140:32:10" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "122122:3:10", + "nodeType": "YulIdentifier", + "src": "122122:3:10" + }, + "nativeSrc": "122122:51:10", + "nodeType": "YulFunctionCall", + "src": "122122:51:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "122109:6:10", + "nodeType": "YulIdentifier", + "src": "122109:6:10" + }, + "nativeSrc": "122109:65:10", + "nodeType": "YulFunctionCall", + "src": "122109:65:10" + }, + "nativeSrc": "122109:65:10", + "nodeType": "YulExpressionStatement", + "src": "122109:65:10" + }, + { + "expression": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "122220:8:10", + "nodeType": "YulIdentifier", + "src": "122220:8:10" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "122234:4:10", + "nodeType": "YulIdentifier", + "src": "122234:4:10" + }, + { + "kind": "number", + "nativeSrc": "122240:4:10", + "nodeType": "YulLiteral", + "src": "122240:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "122230:3:10", + "nodeType": "YulIdentifier", + "src": "122230:3:10" + }, + "nativeSrc": "122230:15:10", + "nodeType": "YulFunctionCall", + "src": "122230:15:10" + }, + { + "kind": "number", + "nativeSrc": "122247:4:10", + "nodeType": "YulLiteral", + "src": "122247:4:10", + "type": "", + "value": "0x52" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "122263:4:10", + "nodeType": "YulIdentifier", + "src": "122263:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "122257:5:10", + "nodeType": "YulIdentifier", + "src": "122257:5:10" + }, + "nativeSrc": "122257:11:10", + "nodeType": "YulFunctionCall", + "src": "122257:11:10" + }, + { + "kind": "number", + "nativeSrc": "122270:4:10", + "nodeType": "YulLiteral", + "src": "122270:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "122253:3:10", + "nodeType": "YulIdentifier", + "src": "122253:3:10" + }, + "nativeSrc": "122253:22:10", + "nodeType": "YulFunctionCall", + "src": "122253:22:10" + } + ], + "functionName": { + "name": "extcodecopy", + "nativeSrc": "122208:11:10", + "nodeType": "YulIdentifier", + "src": "122208:11:10" + }, + "nativeSrc": "122208:68:10", + "nodeType": "YulFunctionCall", + "src": "122208:68:10" + }, + "nativeSrc": "122208:68:10", + "nodeType": "YulExpressionStatement", + "src": "122208:68:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "122296:4:10", + "nodeType": "YulLiteral", + "src": "122296:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "122312:4:10", + "nodeType": "YulIdentifier", + "src": "122312:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "122306:5:10", + "nodeType": "YulIdentifier", + "src": "122306:5:10" + }, + "nativeSrc": "122306:11:10", + "nodeType": "YulFunctionCall", + "src": "122306:11:10" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "122323:4:10", + "nodeType": "YulIdentifier", + "src": "122323:4:10" + }, + { + "kind": "number", + "nativeSrc": "122329:4:10", + "nodeType": "YulLiteral", + "src": "122329:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "122319:3:10", + "nodeType": "YulIdentifier", + "src": "122319:3:10" + }, + "nativeSrc": "122319:15:10", + "nodeType": "YulFunctionCall", + "src": "122319:15:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "122302:3:10", + "nodeType": "YulIdentifier", + "src": "122302:3:10" + }, + "nativeSrc": "122302:33:10", + "nodeType": "YulFunctionCall", + "src": "122302:33:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "122289:6:10", + "nodeType": "YulIdentifier", + "src": "122289:6:10" + }, + "nativeSrc": "122289:47:10", + "nodeType": "YulFunctionCall", + "src": "122289:47:10" + }, + "nativeSrc": "122289:47:10", + "nodeType": "YulExpressionStatement", + "src": "122289:47:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4683, + "isOffset": false, + "isSlot": false, + "src": "122077:4:10", + "valueSize": 1 + }, + { + "declaration": 4683, + "isOffset": false, + "isSlot": false, + "src": "122116:4:10", + "valueSize": 1 + }, + { + "declaration": 4683, + "isOffset": false, + "isSlot": false, + "src": "122234:4:10", + "valueSize": 1 + }, + { + "declaration": 4683, + "isOffset": false, + "isSlot": false, + "src": "122263:4:10", + "valueSize": 1 + }, + { + "declaration": 4683, + "isOffset": false, + "isSlot": false, + "src": "122312:4:10", + "valueSize": 1 + }, + { + "declaration": 4683, + "isOffset": false, + "isSlot": false, + "src": "122323:4:10", + "valueSize": 1 + }, + { + "declaration": 4680, + "isOffset": false, + "isSlot": false, + "src": "122156:8:10", + "valueSize": 1 + }, + { + "declaration": 4680, + "isOffset": false, + "isSlot": false, + "src": "122220:8:10", + "valueSize": 1 + } + ], + "id": 4685, + "nodeType": "InlineAssembly", + "src": "122054:312:10" + } + ] + }, + "documentation": { + "id": 4678, + "nodeType": "StructuredDocumentation", + "src": "121821:81:10", + "text": "@dev Equivalent to `argsOnERC1967BeaconProxy(instance, start, 2 ** 256 - 1)`." + }, + "id": 4687, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "argsOnERC1967BeaconProxy", + "nameLocation": "121916:24:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4681, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4680, + "mutability": "mutable", + "name": "instance", + "nameLocation": "121949:8:10", + "nodeType": "VariableDeclaration", + "scope": 4687, + "src": "121941:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4679, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "121941:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "121940:18:10" + }, + "returnParameters": { + "id": 4684, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4683, + "mutability": "mutable", + "name": "args", + "nameLocation": "121995:4:10", + "nodeType": "VariableDeclaration", + "scope": 4687, + "src": "121982:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4682, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "121982:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "121981:19:10" + }, + "scope": 5104, + "src": "121907:465:10", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4698, + "nodeType": "Block", + "src": "122601:485:10", + "statements": [ + { + "AST": { + "nativeSrc": "122663:417:10", + "nodeType": "YulBlock", + "src": "122663:417:10", + "statements": [ + { + "nativeSrc": "122677:19:10", + "nodeType": "YulAssignment", + "src": "122677:19:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "122691:4:10", + "nodeType": "YulLiteral", + "src": "122691:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "122685:5:10", + "nodeType": "YulIdentifier", + "src": "122685:5:10" + }, + "nativeSrc": "122685:11:10", + "nodeType": "YulFunctionCall", + "src": "122685:11:10" + }, + "variableNames": [ + { + "name": "args", + "nativeSrc": "122677:4:10", + "nodeType": "YulIdentifier", + "src": "122677:4:10" + } + ] + }, + { + "nativeSrc": "122709:60:10", + "nodeType": "YulVariableDeclaration", + "src": "122709:60:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "122722:12:10", + "nodeType": "YulLiteral", + "src": "122722:12:10", + "type": "", + "value": "0xffffffffff" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "122752:8:10", + "nodeType": "YulIdentifier", + "src": "122752:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "122740:11:10", + "nodeType": "YulIdentifier", + "src": "122740:11:10" + }, + "nativeSrc": "122740:21:10", + "nodeType": "YulFunctionCall", + "src": "122740:21:10" + }, + { + "kind": "number", + "nativeSrc": "122763:4:10", + "nodeType": "YulLiteral", + "src": "122763:4:10", + "type": "", + "value": "0x52" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "122736:3:10", + "nodeType": "YulIdentifier", + "src": "122736:3:10" + }, + "nativeSrc": "122736:32:10", + "nodeType": "YulFunctionCall", + "src": "122736:32:10" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "122718:3:10", + "nodeType": "YulIdentifier", + "src": "122718:3:10" + }, + "nativeSrc": "122718:51:10", + "nodeType": "YulFunctionCall", + "src": "122718:51:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "122713:1:10", + "nodeType": "YulTypedName", + "src": "122713:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "122782:56:10", + "nodeType": "YulVariableDeclaration", + "src": "122782:56:10", + "value": { + "arguments": [ + { + "name": "n", + "nativeSrc": "122795:1:10", + "nodeType": "YulIdentifier", + "src": "122795:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "122802:8:10", + "nodeType": "YulLiteral", + "src": "122802:8:10", + "type": "", + "value": "0xffffff" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "start", + "nativeSrc": "122819:5:10", + "nodeType": "YulIdentifier", + "src": "122819:5:10" + }, + { + "name": "n", + "nativeSrc": "122826:1:10", + "nodeType": "YulIdentifier", + "src": "122826:1:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "122816:2:10", + "nodeType": "YulIdentifier", + "src": "122816:2:10" + }, + "nativeSrc": "122816:12:10", + "nodeType": "YulFunctionCall", + "src": "122816:12:10" + }, + { + "name": "start", + "nativeSrc": "122830:5:10", + "nodeType": "YulIdentifier", + "src": "122830:5:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "122812:3:10", + "nodeType": "YulIdentifier", + "src": "122812:3:10" + }, + "nativeSrc": "122812:24:10", + "nodeType": "YulFunctionCall", + "src": "122812:24:10" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "122798:3:10", + "nodeType": "YulIdentifier", + "src": "122798:3:10" + }, + "nativeSrc": "122798:39:10", + "nodeType": "YulFunctionCall", + "src": "122798:39:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "122791:3:10", + "nodeType": "YulIdentifier", + "src": "122791:3:10" + }, + "nativeSrc": "122791:47:10", + "nodeType": "YulFunctionCall", + "src": "122791:47:10" + }, + "variables": [ + { + "name": "l", + "nativeSrc": "122786:1:10", + "nodeType": "YulTypedName", + "src": "122786:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "122863:8:10", + "nodeType": "YulIdentifier", + "src": "122863:8:10" + }, + { + "name": "args", + "nativeSrc": "122873:4:10", + "nodeType": "YulIdentifier", + "src": "122873:4:10" + }, + { + "arguments": [ + { + "name": "start", + "nativeSrc": "122883:5:10", + "nodeType": "YulIdentifier", + "src": "122883:5:10" + }, + { + "kind": "number", + "nativeSrc": "122890:4:10", + "nodeType": "YulLiteral", + "src": "122890:4:10", + "type": "", + "value": "0x32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "122879:3:10", + "nodeType": "YulIdentifier", + "src": "122879:3:10" + }, + "nativeSrc": "122879:16:10", + "nodeType": "YulFunctionCall", + "src": "122879:16:10" + }, + { + "arguments": [ + { + "name": "l", + "nativeSrc": "122901:1:10", + "nodeType": "YulIdentifier", + "src": "122901:1:10" + }, + { + "kind": "number", + "nativeSrc": "122904:4:10", + "nodeType": "YulLiteral", + "src": "122904:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "122897:3:10", + "nodeType": "YulIdentifier", + "src": "122897:3:10" + }, + "nativeSrc": "122897:12:10", + "nodeType": "YulFunctionCall", + "src": "122897:12:10" + } + ], + "functionName": { + "name": "extcodecopy", + "nativeSrc": "122851:11:10", + "nodeType": "YulIdentifier", + "src": "122851:11:10" + }, + "nativeSrc": "122851:59:10", + "nodeType": "YulFunctionCall", + "src": "122851:59:10" + }, + "nativeSrc": "122851:59:10", + "nodeType": "YulExpressionStatement", + "src": "122851:59:10" + }, + { + "expression": { + "arguments": [ + { + "name": "args", + "nativeSrc": "122930:4:10", + "nodeType": "YulIdentifier", + "src": "122930:4:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "n", + "nativeSrc": "122944:1:10", + "nodeType": "YulIdentifier", + "src": "122944:1:10" + }, + { + "name": "start", + "nativeSrc": "122947:5:10", + "nodeType": "YulIdentifier", + "src": "122947:5:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "122940:3:10", + "nodeType": "YulIdentifier", + "src": "122940:3:10" + }, + "nativeSrc": "122940:13:10", + "nodeType": "YulFunctionCall", + "src": "122940:13:10" + }, + { + "arguments": [ + { + "name": "start", + "nativeSrc": "122958:5:10", + "nodeType": "YulIdentifier", + "src": "122958:5:10" + }, + { + "name": "n", + "nativeSrc": "122965:1:10", + "nodeType": "YulIdentifier", + "src": "122965:1:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "122955:2:10", + "nodeType": "YulIdentifier", + "src": "122955:2:10" + }, + "nativeSrc": "122955:12:10", + "nodeType": "YulFunctionCall", + "src": "122955:12:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "122936:3:10", + "nodeType": "YulIdentifier", + "src": "122936:3:10" + }, + "nativeSrc": "122936:32:10", + "nodeType": "YulFunctionCall", + "src": "122936:32:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "122923:6:10", + "nodeType": "YulIdentifier", + "src": "122923:6:10" + }, + "nativeSrc": "122923:46:10", + "nodeType": "YulFunctionCall", + "src": "122923:46:10" + }, + "nativeSrc": "122923:46:10", + "nodeType": "YulExpressionStatement", + "src": "122923:46:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "123010:4:10", + "nodeType": "YulLiteral", + "src": "123010:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "123020:4:10", + "nodeType": "YulIdentifier", + "src": "123020:4:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "123030:4:10", + "nodeType": "YulLiteral", + "src": "123030:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "123042:4:10", + "nodeType": "YulIdentifier", + "src": "123042:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "123036:5:10", + "nodeType": "YulIdentifier", + "src": "123036:5:10" + }, + "nativeSrc": "123036:11:10", + "nodeType": "YulFunctionCall", + "src": "123036:11:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "123026:3:10", + "nodeType": "YulIdentifier", + "src": "123026:3:10" + }, + "nativeSrc": "123026:22:10", + "nodeType": "YulFunctionCall", + "src": "123026:22:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "123016:3:10", + "nodeType": "YulIdentifier", + "src": "123016:3:10" + }, + "nativeSrc": "123016:33:10", + "nodeType": "YulFunctionCall", + "src": "123016:33:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "123003:6:10", + "nodeType": "YulIdentifier", + "src": "123003:6:10" + }, + "nativeSrc": "123003:47:10", + "nodeType": "YulFunctionCall", + "src": "123003:47:10" + }, + "nativeSrc": "123003:47:10", + "nodeType": "YulExpressionStatement", + "src": "123003:47:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4695, + "isOffset": false, + "isSlot": false, + "src": "122677:4:10", + "valueSize": 1 + }, + { + "declaration": 4695, + "isOffset": false, + "isSlot": false, + "src": "122873:4:10", + "valueSize": 1 + }, + { + "declaration": 4695, + "isOffset": false, + "isSlot": false, + "src": "122930:4:10", + "valueSize": 1 + }, + { + "declaration": 4695, + "isOffset": false, + "isSlot": false, + "src": "123020:4:10", + "valueSize": 1 + }, + { + "declaration": 4695, + "isOffset": false, + "isSlot": false, + "src": "123042:4:10", + "valueSize": 1 + }, + { + "declaration": 4690, + "isOffset": false, + "isSlot": false, + "src": "122752:8:10", + "valueSize": 1 + }, + { + "declaration": 4690, + "isOffset": false, + "isSlot": false, + "src": "122863:8:10", + "valueSize": 1 + }, + { + "declaration": 4692, + "isOffset": false, + "isSlot": false, + "src": "122819:5:10", + "valueSize": 1 + }, + { + "declaration": 4692, + "isOffset": false, + "isSlot": false, + "src": "122830:5:10", + "valueSize": 1 + }, + { + "declaration": 4692, + "isOffset": false, + "isSlot": false, + "src": "122883:5:10", + "valueSize": 1 + }, + { + "declaration": 4692, + "isOffset": false, + "isSlot": false, + "src": "122947:5:10", + "valueSize": 1 + }, + { + "declaration": 4692, + "isOffset": false, + "isSlot": false, + "src": "122958:5:10", + "valueSize": 1 + } + ], + "id": 4697, + "nodeType": "InlineAssembly", + "src": "122654:426:10" + } + ] + }, + "documentation": { + "id": 4688, + "nodeType": "StructuredDocumentation", + "src": "122378:81:10", + "text": "@dev Equivalent to `argsOnERC1967BeaconProxy(instance, start, 2 ** 256 - 1)`." + }, + "id": 4699, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "argsOnERC1967BeaconProxy", + "nameLocation": "122473:24:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4693, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4690, + "mutability": "mutable", + "name": "instance", + "nameLocation": "122506:8:10", + "nodeType": "VariableDeclaration", + "scope": 4699, + "src": "122498:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4689, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "122498:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4692, + "mutability": "mutable", + "name": "start", + "nameLocation": "122524:5:10", + "nodeType": "VariableDeclaration", + "scope": 4699, + "src": "122516:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4691, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "122516:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "122497:33:10" + }, + "returnParameters": { + "id": 4696, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4695, + "mutability": "mutable", + "name": "args", + "nameLocation": "122591:4:10", + "nodeType": "VariableDeclaration", + "scope": 4699, + "src": "122578:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4694, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "122578:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "122577:19:10" + }, + "scope": 5104, + "src": "122464:622:10", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4712, + "nodeType": "Block", + "src": "123621:785:10", + "statements": [ + { + "AST": { + "nativeSrc": "123683:717:10", + "nodeType": "YulBlock", + "src": "123683:717:10", + "statements": [ + { + "nativeSrc": "123697:19:10", + "nodeType": "YulAssignment", + "src": "123697:19:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "123711:4:10", + "nodeType": "YulLiteral", + "src": "123711:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "123705:5:10", + "nodeType": "YulIdentifier", + "src": "123705:5:10" + }, + "nativeSrc": "123705:11:10", + "nodeType": "YulFunctionCall", + "src": "123705:11:10" + }, + "variableNames": [ + { + "name": "args", + "nativeSrc": "123697:4:10", + "nodeType": "YulIdentifier", + "src": "123697:4:10" + } + ] + }, + { + "body": { + "nativeSrc": "123756:17:10", + "nodeType": "YulBlock", + "src": "123756:17:10", + "statements": [ + { + "nativeSrc": "123758:13:10", + "nodeType": "YulAssignment", + "src": "123758:13:10", + "value": { + "kind": "number", + "nativeSrc": "123765:6:10", + "nodeType": "YulLiteral", + "src": "123765:6:10", + "type": "", + "value": "0xffff" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "123758:3:10", + "nodeType": "YulIdentifier", + "src": "123758:3:10" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "end", + "nativeSrc": "123742:3:10", + "nodeType": "YulIdentifier", + "src": "123742:3:10" + }, + { + "kind": "number", + "nativeSrc": "123747:6:10", + "nodeType": "YulLiteral", + "src": "123747:6:10", + "type": "", + "value": "0xffff" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "123739:2:10", + "nodeType": "YulIdentifier", + "src": "123739:2:10" + }, + "nativeSrc": "123739:15:10", + "nodeType": "YulFunctionCall", + "src": "123739:15:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "123732:6:10", + "nodeType": "YulIdentifier", + "src": "123732:6:10" + }, + "nativeSrc": "123732:23:10", + "nodeType": "YulFunctionCall", + "src": "123732:23:10" + }, + "nativeSrc": "123729:44:10", + "nodeType": "YulIf", + "src": "123729:44:10" + }, + { + "nativeSrc": "123786:45:10", + "nodeType": "YulVariableDeclaration", + "src": "123786:45:10", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "end", + "nativeSrc": "123803:3:10", + "nodeType": "YulIdentifier", + "src": "123803:3:10" + }, + { + "name": "start", + "nativeSrc": "123808:5:10", + "nodeType": "YulIdentifier", + "src": "123808:5:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "123799:3:10", + "nodeType": "YulIdentifier", + "src": "123799:3:10" + }, + "nativeSrc": "123799:15:10", + "nodeType": "YulFunctionCall", + "src": "123799:15:10" + }, + { + "arguments": [ + { + "name": "start", + "nativeSrc": "123819:5:10", + "nodeType": "YulIdentifier", + "src": "123819:5:10" + }, + { + "name": "end", + "nativeSrc": "123826:3:10", + "nodeType": "YulIdentifier", + "src": "123826:3:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "123816:2:10", + "nodeType": "YulIdentifier", + "src": "123816:2:10" + }, + "nativeSrc": "123816:14:10", + "nodeType": "YulFunctionCall", + "src": "123816:14:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "123795:3:10", + "nodeType": "YulIdentifier", + "src": "123795:3:10" + }, + "nativeSrc": "123795:36:10", + "nodeType": "YulFunctionCall", + "src": "123795:36:10" + }, + "variables": [ + { + "name": "d", + "nativeSrc": "123790:1:10", + "nodeType": "YulTypedName", + "src": "123790:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "123856:8:10", + "nodeType": "YulIdentifier", + "src": "123856:8:10" + }, + { + "name": "args", + "nativeSrc": "123866:4:10", + "nodeType": "YulIdentifier", + "src": "123866:4:10" + }, + { + "arguments": [ + { + "name": "start", + "nativeSrc": "123876:5:10", + "nodeType": "YulIdentifier", + "src": "123876:5:10" + }, + { + "kind": "number", + "nativeSrc": "123883:4:10", + "nodeType": "YulLiteral", + "src": "123883:4:10", + "type": "", + "value": "0x32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "123872:3:10", + "nodeType": "YulIdentifier", + "src": "123872:3:10" + }, + "nativeSrc": "123872:16:10", + "nodeType": "YulFunctionCall", + "src": "123872:16:10" + }, + { + "arguments": [ + { + "name": "d", + "nativeSrc": "123894:1:10", + "nodeType": "YulIdentifier", + "src": "123894:1:10" + }, + { + "kind": "number", + "nativeSrc": "123897:4:10", + "nodeType": "YulLiteral", + "src": "123897:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "123890:3:10", + "nodeType": "YulIdentifier", + "src": "123890:3:10" + }, + "nativeSrc": "123890:12:10", + "nodeType": "YulFunctionCall", + "src": "123890:12:10" + } + ], + "functionName": { + "name": "extcodecopy", + "nativeSrc": "123844:11:10", + "nodeType": "YulIdentifier", + "src": "123844:11:10" + }, + "nativeSrc": "123844:59:10", + "nodeType": "YulFunctionCall", + "src": "123844:59:10" + }, + "nativeSrc": "123844:59:10", + "nodeType": "YulExpressionStatement", + "src": "123844:59:10" + }, + { + "body": { + "nativeSrc": "123958:229:10", + "nodeType": "YulBlock", + "src": "123958:229:10", + "statements": [ + { + "nativeSrc": "123976:41:10", + "nodeType": "YulVariableDeclaration", + "src": "123976:41:10", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "124001:8:10", + "nodeType": "YulIdentifier", + "src": "124001:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "123989:11:10", + "nodeType": "YulIdentifier", + "src": "123989:11:10" + }, + "nativeSrc": "123989:21:10", + "nodeType": "YulFunctionCall", + "src": "123989:21:10" + }, + { + "kind": "number", + "nativeSrc": "124012:4:10", + "nodeType": "YulLiteral", + "src": "124012:4:10", + "type": "", + "value": "0x52" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "123985:3:10", + "nodeType": "YulIdentifier", + "src": "123985:3:10" + }, + "nativeSrc": "123985:32:10", + "nodeType": "YulFunctionCall", + "src": "123985:32:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "123980:1:10", + "nodeType": "YulTypedName", + "src": "123980:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "124049:14:10", + "nodeType": "YulIdentifier", + "src": "124049:14:10" + }, + "nativeSrc": "124049:16:10", + "nodeType": "YulFunctionCall", + "src": "124049:16:10" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "124067:14:10", + "nodeType": "YulIdentifier", + "src": "124067:14:10" + }, + "nativeSrc": "124067:16:10", + "nodeType": "YulFunctionCall", + "src": "124067:16:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "124089:2:10", + "nodeType": "YulLiteral", + "src": "124089:2:10", + "type": "", + "value": "40" + }, + { + "name": "n", + "nativeSrc": "124093:1:10", + "nodeType": "YulIdentifier", + "src": "124093:1:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "124085:3:10", + "nodeType": "YulIdentifier", + "src": "124085:3:10" + }, + "nativeSrc": "124085:10:10", + "nodeType": "YulFunctionCall", + "src": "124085:10:10" + } + ], + "functionName": { + "name": "returndatacopy", + "nativeSrc": "124034:14:10", + "nodeType": "YulIdentifier", + "src": "124034:14:10" + }, + "nativeSrc": "124034:62:10", + "nodeType": "YulFunctionCall", + "src": "124034:62:10" + }, + "nativeSrc": "124034:62:10", + "nodeType": "YulExpressionStatement", + "src": "124034:62:10" + }, + { + "nativeSrc": "124113:60:10", + "nodeType": "YulAssignment", + "src": "124113:60:10", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "n", + "nativeSrc": "124125:1:10", + "nodeType": "YulIdentifier", + "src": "124125:1:10" + }, + { + "name": "start", + "nativeSrc": "124128:5:10", + "nodeType": "YulIdentifier", + "src": "124128:5:10" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "124122:2:10", + "nodeType": "YulIdentifier", + "src": "124122:2:10" + }, + "nativeSrc": "124122:12:10", + "nodeType": "YulFunctionCall", + "src": "124122:12:10" + }, + { + "arguments": [ + { + "name": "d", + "nativeSrc": "124140:1:10", + "nodeType": "YulIdentifier", + "src": "124140:1:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "end", + "nativeSrc": "124150:3:10", + "nodeType": "YulIdentifier", + "src": "124150:3:10" + }, + { + "name": "n", + "nativeSrc": "124155:1:10", + "nodeType": "YulIdentifier", + "src": "124155:1:10" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "124147:2:10", + "nodeType": "YulIdentifier", + "src": "124147:2:10" + }, + "nativeSrc": "124147:10:10", + "nodeType": "YulFunctionCall", + "src": "124147:10:10" + }, + { + "arguments": [ + { + "name": "end", + "nativeSrc": "124163:3:10", + "nodeType": "YulIdentifier", + "src": "124163:3:10" + }, + { + "name": "n", + "nativeSrc": "124168:1:10", + "nodeType": "YulIdentifier", + "src": "124168:1:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "124159:3:10", + "nodeType": "YulIdentifier", + "src": "124159:3:10" + }, + "nativeSrc": "124159:11:10", + "nodeType": "YulFunctionCall", + "src": "124159:11:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "124143:3:10", + "nodeType": "YulIdentifier", + "src": "124143:3:10" + }, + "nativeSrc": "124143:28:10", + "nodeType": "YulFunctionCall", + "src": "124143:28:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "124136:3:10", + "nodeType": "YulIdentifier", + "src": "124136:3:10" + }, + "nativeSrc": "124136:36:10", + "nodeType": "YulFunctionCall", + "src": "124136:36:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "124118:3:10", + "nodeType": "YulIdentifier", + "src": "124118:3:10" + }, + "nativeSrc": "124118:55:10", + "nodeType": "YulFunctionCall", + "src": "124118:55:10" + }, + "variableNames": [ + { + "name": "d", + "nativeSrc": "124113:1:10", + "nodeType": "YulIdentifier", + "src": "124113:1:10" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "123930:4:10", + "nodeType": "YulLiteral", + "src": "123930:4:10", + "type": "", + "value": "0xff" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "123946:4:10", + "nodeType": "YulIdentifier", + "src": "123946:4:10" + }, + { + "name": "d", + "nativeSrc": "123952:1:10", + "nodeType": "YulIdentifier", + "src": "123952:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "123942:3:10", + "nodeType": "YulIdentifier", + "src": "123942:3:10" + }, + "nativeSrc": "123942:12:10", + "nodeType": "YulFunctionCall", + "src": "123942:12:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "123936:5:10", + "nodeType": "YulIdentifier", + "src": "123936:5:10" + }, + "nativeSrc": "123936:19:10", + "nodeType": "YulFunctionCall", + "src": "123936:19:10" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "123926:3:10", + "nodeType": "YulIdentifier", + "src": "123926:3:10" + }, + "nativeSrc": "123926:30:10", + "nodeType": "YulFunctionCall", + "src": "123926:30:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "123919:6:10", + "nodeType": "YulIdentifier", + "src": "123919:6:10" + }, + "nativeSrc": "123919:38:10", + "nodeType": "YulFunctionCall", + "src": "123919:38:10" + }, + "nativeSrc": "123916:271:10", + "nodeType": "YulIf", + "src": "123916:271:10" + }, + { + "expression": { + "arguments": [ + { + "name": "args", + "nativeSrc": "124207:4:10", + "nodeType": "YulIdentifier", + "src": "124207:4:10" + }, + { + "name": "d", + "nativeSrc": "124213:1:10", + "nodeType": "YulIdentifier", + "src": "124213:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "124200:6:10", + "nodeType": "YulIdentifier", + "src": "124200:6:10" + }, + "nativeSrc": "124200:15:10", + "nodeType": "YulFunctionCall", + "src": "124200:15:10" + }, + "nativeSrc": "124200:15:10", + "nodeType": "YulExpressionStatement", + "src": "124200:15:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "124264:4:10", + "nodeType": "YulIdentifier", + "src": "124264:4:10" + }, + { + "kind": "number", + "nativeSrc": "124270:4:10", + "nodeType": "YulLiteral", + "src": "124270:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "124260:3:10", + "nodeType": "YulIdentifier", + "src": "124260:3:10" + }, + "nativeSrc": "124260:15:10", + "nodeType": "YulFunctionCall", + "src": "124260:15:10" + }, + { + "name": "d", + "nativeSrc": "124277:1:10", + "nodeType": "YulIdentifier", + "src": "124277:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "124256:3:10", + "nodeType": "YulIdentifier", + "src": "124256:3:10" + }, + "nativeSrc": "124256:23:10", + "nodeType": "YulFunctionCall", + "src": "124256:23:10" + }, + { + "kind": "number", + "nativeSrc": "124281:1:10", + "nodeType": "YulLiteral", + "src": "124281:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "124249:6:10", + "nodeType": "YulIdentifier", + "src": "124249:6:10" + }, + "nativeSrc": "124249:34:10", + "nodeType": "YulFunctionCall", + "src": "124249:34:10" + }, + "nativeSrc": "124249:34:10", + "nodeType": "YulExpressionStatement", + "src": "124249:34:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "124340:4:10", + "nodeType": "YulLiteral", + "src": "124340:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "124354:4:10", + "nodeType": "YulIdentifier", + "src": "124354:4:10" + }, + { + "kind": "number", + "nativeSrc": "124360:4:10", + "nodeType": "YulLiteral", + "src": "124360:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "124350:3:10", + "nodeType": "YulIdentifier", + "src": "124350:3:10" + }, + "nativeSrc": "124350:15:10", + "nodeType": "YulFunctionCall", + "src": "124350:15:10" + }, + { + "name": "d", + "nativeSrc": "124367:1:10", + "nodeType": "YulIdentifier", + "src": "124367:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "124346:3:10", + "nodeType": "YulIdentifier", + "src": "124346:3:10" + }, + "nativeSrc": "124346:23:10", + "nodeType": "YulFunctionCall", + "src": "124346:23:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "124333:6:10", + "nodeType": "YulIdentifier", + "src": "124333:6:10" + }, + "nativeSrc": "124333:37:10", + "nodeType": "YulFunctionCall", + "src": "124333:37:10" + }, + "nativeSrc": "124333:37:10", + "nodeType": "YulExpressionStatement", + "src": "124333:37:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4709, + "isOffset": false, + "isSlot": false, + "src": "123697:4:10", + "valueSize": 1 + }, + { + "declaration": 4709, + "isOffset": false, + "isSlot": false, + "src": "123866:4:10", + "valueSize": 1 + }, + { + "declaration": 4709, + "isOffset": false, + "isSlot": false, + "src": "123946:4:10", + "valueSize": 1 + }, + { + "declaration": 4709, + "isOffset": false, + "isSlot": false, + "src": "124207:4:10", + "valueSize": 1 + }, + { + "declaration": 4709, + "isOffset": false, + "isSlot": false, + "src": "124264:4:10", + "valueSize": 1 + }, + { + "declaration": 4709, + "isOffset": false, + "isSlot": false, + "src": "124354:4:10", + "valueSize": 1 + }, + { + "declaration": 4706, + "isOffset": false, + "isSlot": false, + "src": "123742:3:10", + "valueSize": 1 + }, + { + "declaration": 4706, + "isOffset": false, + "isSlot": false, + "src": "123758:3:10", + "valueSize": 1 + }, + { + "declaration": 4706, + "isOffset": false, + "isSlot": false, + "src": "123803:3:10", + "valueSize": 1 + }, + { + "declaration": 4706, + "isOffset": false, + "isSlot": false, + "src": "123826:3:10", + "valueSize": 1 + }, + { + "declaration": 4706, + "isOffset": false, + "isSlot": false, + "src": "124150:3:10", + "valueSize": 1 + }, + { + "declaration": 4706, + "isOffset": false, + "isSlot": false, + "src": "124163:3:10", + "valueSize": 1 + }, + { + "declaration": 4702, + "isOffset": false, + "isSlot": false, + "src": "123856:8:10", + "valueSize": 1 + }, + { + "declaration": 4702, + "isOffset": false, + "isSlot": false, + "src": "124001:8:10", + "valueSize": 1 + }, + { + "declaration": 4704, + "isOffset": false, + "isSlot": false, + "src": "123808:5:10", + "valueSize": 1 + }, + { + "declaration": 4704, + "isOffset": false, + "isSlot": false, + "src": "123819:5:10", + "valueSize": 1 + }, + { + "declaration": 4704, + "isOffset": false, + "isSlot": false, + "src": "123876:5:10", + "valueSize": 1 + }, + { + "declaration": 4704, + "isOffset": false, + "isSlot": false, + "src": "124128:5:10", + "valueSize": 1 + } + ], + "id": 4711, + "nodeType": "InlineAssembly", + "src": "123674:726:10" + } + ] + }, + "documentation": { + "id": 4700, + "nodeType": "StructuredDocumentation", + "src": "123092:374:10", + "text": "@dev Returns a slice of the immutable arguments on `instance` from `start` to `end`.\n `start` and `end` will be clamped to the range `[0, args.length]`.\n The `instance` MUST be deployed via the ERC1967 beacon proxy with immutable args functions.\n Otherwise, the behavior is undefined.\n Out-of-gas reverts if `instance` does not have any code." + }, + "id": 4713, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "argsOnERC1967BeaconProxy", + "nameLocation": "123480:24:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4707, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4702, + "mutability": "mutable", + "name": "instance", + "nameLocation": "123513:8:10", + "nodeType": "VariableDeclaration", + "scope": 4713, + "src": "123505:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4701, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "123505:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4704, + "mutability": "mutable", + "name": "start", + "nameLocation": "123531:5:10", + "nodeType": "VariableDeclaration", + "scope": 4713, + "src": "123523:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4703, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "123523:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4706, + "mutability": "mutable", + "name": "end", + "nameLocation": "123546:3:10", + "nodeType": "VariableDeclaration", + "scope": 4713, + "src": "123538:11:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4705, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "123538:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "123504:46:10" + }, + "returnParameters": { + "id": 4710, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4709, + "mutability": "mutable", + "name": "args", + "nameLocation": "123611:4:10", + "nodeType": "VariableDeclaration", + "scope": 4713, + "src": "123598:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4708, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "123598:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "123597:19:10" + }, + "scope": 5104, + "src": "123471:935:10", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4728, + "nodeType": "Block", + "src": "125540:64:10", + "statements": [ + { + "expression": { + "id": 4726, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4721, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4719, + "src": "125550:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 4723, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "125587:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 4724, + "name": "beacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4716, + "src": "125590:6:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4722, + "name": "deployERC1967IBeaconProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4729, + 4741, + 4875, + 4889 + ], + "referencedDeclaration": 4741, + "src": "125561:25:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$_t_address_$", + "typeString": "function (uint256,address) returns (address)" + } + }, + "id": 4725, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "125561:36:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "125550:47:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4727, + "nodeType": "ExpressionStatement", + "src": "125550:47:10" + } + ] + }, + "documentation": { + "id": 4714, + "nodeType": "StructuredDocumentation", + "src": "125407:41:10", + "text": "@dev Deploys a ERC1967I beacon proxy." + }, + "id": 4729, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployERC1967IBeaconProxy", + "nameLocation": "125462:25:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4717, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4716, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "125496:6:10", + "nodeType": "VariableDeclaration", + "scope": 4729, + "src": "125488:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4715, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "125488:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "125487:16:10" + }, + "returnParameters": { + "id": 4720, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4719, + "mutability": "mutable", + "name": "instance", + "nameLocation": "125530:8:10", + "nodeType": "VariableDeclaration", + "scope": 4729, + "src": "125522:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4718, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "125522:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "125521:18:10" + }, + "scope": 5104, + "src": "125453:151:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4740, + "nodeType": "Block", + "src": "125826:8791:10", + "statements": [ + { + "AST": { + "nativeSrc": "125888:8723:10", + "nodeType": "YulBlock", + "src": "125888:8723:10", + "statements": [ + { + "nativeSrc": "133872:20:10", + "nodeType": "YulVariableDeclaration", + "src": "133872:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "133887:4:10", + "nodeType": "YulLiteral", + "src": "133887:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "133881:5:10", + "nodeType": "YulIdentifier", + "src": "133881:5:10" + }, + "nativeSrc": "133881:11:10", + "nodeType": "YulFunctionCall", + "src": "133881:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "133876:1:10", + "nodeType": "YulTypedName", + "src": "133876:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "133946:4:10", + "nodeType": "YulLiteral", + "src": "133946:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "133952:66:10", + "nodeType": "YulLiteral", + "src": "133952:66:10", + "type": "", + "value": "0x3d50545afa361460525736515af43d600060013e6052573d6001fd5b3d6001f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "133939:6:10", + "nodeType": "YulIdentifier", + "src": "133939:6:10" + }, + "nativeSrc": "133939:80:10", + "nodeType": "YulFunctionCall", + "src": "133939:80:10" + }, + "nativeSrc": "133939:80:10", + "nodeType": "YulExpressionStatement", + "src": "133939:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "134039:4:10", + "nodeType": "YulLiteral", + "src": "134039:4:10", + "type": "", + "value": "0x40" + }, + { + "kind": "number", + "nativeSrc": "134045:66:10", + "nodeType": "YulLiteral", + "src": "134045:66:10", + "type": "", + "value": "0x527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b3513" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "134032:6:10", + "nodeType": "YulIdentifier", + "src": "134032:6:10" + }, + "nativeSrc": "134032:80:10", + "nodeType": "YulFunctionCall", + "src": "134032:80:10" + }, + "nativeSrc": "134032:80:10", + "nodeType": "YulExpressionStatement", + "src": "134032:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "134132:4:10", + "nodeType": "YulLiteral", + "src": "134132:4:10", + "type": "", + "value": "0x20" + }, + { + "kind": "number", + "nativeSrc": "134138:58:10", + "nodeType": "YulLiteral", + "src": "134138:58:10", + "type": "", + "value": "0x60195155f3363d3d373d3d363d602036600436635c60da1b60e01b36" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "134125:6:10", + "nodeType": "YulIdentifier", + "src": "134125:6:10" + }, + "nativeSrc": "134125:72:10", + "nodeType": "YulFunctionCall", + "src": "134125:72:10" + }, + "nativeSrc": "134125:72:10", + "nodeType": "YulExpressionStatement", + "src": "134125:72:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "134217:4:10", + "nodeType": "YulLiteral", + "src": "134217:4:10", + "type": "", + "value": "0x04" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "134230:3:10", + "nodeType": "YulLiteral", + "src": "134230:3:10", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "134235:20:10", + "nodeType": "YulLiteral", + "src": "134235:20:10", + "type": "", + "value": "0x60573d8160223d3973" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "134226:3:10", + "nodeType": "YulIdentifier", + "src": "134226:3:10" + }, + "nativeSrc": "134226:30:10", + "nodeType": "YulFunctionCall", + "src": "134226:30:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "134262:2:10", + "nodeType": "YulLiteral", + "src": "134262:2:10", + "type": "", + "value": "96" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "134270:2:10", + "nodeType": "YulLiteral", + "src": "134270:2:10", + "type": "", + "value": "96" + }, + { + "name": "beacon", + "nativeSrc": "134274:6:10", + "nodeType": "YulIdentifier", + "src": "134274:6:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "134266:3:10", + "nodeType": "YulIdentifier", + "src": "134266:3:10" + }, + "nativeSrc": "134266:15:10", + "nodeType": "YulFunctionCall", + "src": "134266:15:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "134258:3:10", + "nodeType": "YulIdentifier", + "src": "134258:3:10" + }, + "nativeSrc": "134258:24:10", + "nodeType": "YulFunctionCall", + "src": "134258:24:10" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "134223:2:10", + "nodeType": "YulIdentifier", + "src": "134223:2:10" + }, + "nativeSrc": "134223:60:10", + "nodeType": "YulFunctionCall", + "src": "134223:60:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "134210:6:10", + "nodeType": "YulIdentifier", + "src": "134210:6:10" + }, + "nativeSrc": "134210:74:10", + "nodeType": "YulFunctionCall", + "src": "134210:74:10" + }, + "nativeSrc": "134210:74:10", + "nodeType": "YulExpressionStatement", + "src": "134210:74:10" + }, + { + "nativeSrc": "134297:37:10", + "nodeType": "YulAssignment", + "src": "134297:37:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "134316:5:10", + "nodeType": "YulIdentifier", + "src": "134316:5:10" + }, + { + "kind": "number", + "nativeSrc": "134323:4:10", + "nodeType": "YulLiteral", + "src": "134323:4:10", + "type": "", + "value": "0x07" + }, + { + "kind": "number", + "nativeSrc": "134329:4:10", + "nodeType": "YulLiteral", + "src": "134329:4:10", + "type": "", + "value": "0x79" + } + ], + "functionName": { + "name": "create", + "nativeSrc": "134309:6:10", + "nodeType": "YulIdentifier", + "src": "134309:6:10" + }, + "nativeSrc": "134309:25:10", + "nodeType": "YulFunctionCall", + "src": "134309:25:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "134297:8:10", + "nodeType": "YulIdentifier", + "src": "134297:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "134367:116:10", + "nodeType": "YulBlock", + "src": "134367:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "134392:4:10", + "nodeType": "YulLiteral", + "src": "134392:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "134398:10:10", + "nodeType": "YulLiteral", + "src": "134398:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "134385:6:10", + "nodeType": "YulIdentifier", + "src": "134385:6:10" + }, + "nativeSrc": "134385:24:10", + "nodeType": "YulFunctionCall", + "src": "134385:24:10" + }, + "nativeSrc": "134385:24:10", + "nodeType": "YulExpressionStatement", + "src": "134385:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "134458:4:10", + "nodeType": "YulLiteral", + "src": "134458:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "134464:4:10", + "nodeType": "YulLiteral", + "src": "134464:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "134451:6:10", + "nodeType": "YulIdentifier", + "src": "134451:6:10" + }, + "nativeSrc": "134451:18:10", + "nodeType": "YulFunctionCall", + "src": "134451:18:10" + }, + "nativeSrc": "134451:18:10", + "nodeType": "YulExpressionStatement", + "src": "134451:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "134357:8:10", + "nodeType": "YulIdentifier", + "src": "134357:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "134350:6:10", + "nodeType": "YulIdentifier", + "src": "134350:6:10" + }, + "nativeSrc": "134350:16:10", + "nodeType": "YulFunctionCall", + "src": "134350:16:10" + }, + "nativeSrc": "134347:136:10", + "nodeType": "YulIf", + "src": "134347:136:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "134503:4:10", + "nodeType": "YulLiteral", + "src": "134503:4:10", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "134509:1:10", + "nodeType": "YulIdentifier", + "src": "134509:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "134496:6:10", + "nodeType": "YulIdentifier", + "src": "134496:6:10" + }, + "nativeSrc": "134496:15:10", + "nodeType": "YulFunctionCall", + "src": "134496:15:10" + }, + "nativeSrc": "134496:15:10", + "nodeType": "YulExpressionStatement", + "src": "134496:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "134567:4:10", + "nodeType": "YulLiteral", + "src": "134567:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "134573:1:10", + "nodeType": "YulLiteral", + "src": "134573:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "134560:6:10", + "nodeType": "YulIdentifier", + "src": "134560:6:10" + }, + "nativeSrc": "134560:15:10", + "nodeType": "YulFunctionCall", + "src": "134560:15:10" + }, + "nativeSrc": "134560:15:10", + "nodeType": "YulExpressionStatement", + "src": "134560:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4734, + "isOffset": false, + "isSlot": false, + "src": "134274:6:10", + "valueSize": 1 + }, + { + "declaration": 4737, + "isOffset": false, + "isSlot": false, + "src": "134297:8:10", + "valueSize": 1 + }, + { + "declaration": 4737, + "isOffset": false, + "isSlot": false, + "src": "134357:8:10", + "valueSize": 1 + }, + { + "declaration": 4732, + "isOffset": false, + "isSlot": false, + "src": "134316:5:10", + "valueSize": 1 + } + ], + "id": 4739, + "nodeType": "InlineAssembly", + "src": "125879:8732:10" + } + ] + }, + "documentation": { + "id": 4730, + "nodeType": "StructuredDocumentation", + "src": "125610:89:10", + "text": "@dev Deploys a ERC1967I beacon proxy.\n Deposits `value` ETH during deployment." + }, + "id": 4741, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployERC1967IBeaconProxy", + "nameLocation": "125713:25:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4735, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4732, + "mutability": "mutable", + "name": "value", + "nameLocation": "125747:5:10", + "nodeType": "VariableDeclaration", + "scope": 4741, + "src": "125739:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4731, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "125739:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4734, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "125762:6:10", + "nodeType": "VariableDeclaration", + "scope": 4741, + "src": "125754:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4733, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "125754:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "125738:31:10" + }, + "returnParameters": { + "id": 4738, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4737, + "mutability": "mutable", + "name": "instance", + "nameLocation": "125812:8:10", + "nodeType": "VariableDeclaration", + "scope": 4741, + "src": "125804:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4736, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "125804:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "125803:18:10" + }, + "scope": 5104, + "src": "125704:8913:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4759, + "nodeType": "Block", + "src": "134829:83:10", + "statements": [ + { + "expression": { + "id": 4757, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4751, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4749, + "src": "134839:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 4753, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "134889:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 4754, + "name": "beacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4744, + "src": "134892:6:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4755, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4746, + "src": "134900:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4752, + "name": "deployDeterministicERC1967IBeaconProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4760, + 4774, + 4911, + 4927 + ], + "referencedDeclaration": 4774, + "src": "134850:38:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (uint256,address,bytes32) returns (address)" + } + }, + "id": 4756, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "134850:55:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "134839:66:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4758, + "nodeType": "ExpressionStatement", + "src": "134839:66:10" + } + ] + }, + "documentation": { + "id": 4742, + "nodeType": "StructuredDocumentation", + "src": "134623:67:10", + "text": "@dev Deploys a deterministic ERC1967I beacon proxy with `salt`." + }, + "id": 4760, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployDeterministicERC1967IBeaconProxy", + "nameLocation": "134704:38:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4747, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4744, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "134751:6:10", + "nodeType": "VariableDeclaration", + "scope": 4760, + "src": "134743:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4743, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "134743:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4746, + "mutability": "mutable", + "name": "salt", + "nameLocation": "134767:4:10", + "nodeType": "VariableDeclaration", + "scope": 4760, + "src": "134759:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4745, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "134759:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "134742:30:10" + }, + "returnParameters": { + "id": 4750, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4749, + "mutability": "mutable", + "name": "instance", + "nameLocation": "134815:8:10", + "nodeType": "VariableDeclaration", + "scope": 4760, + "src": "134807:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4748, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "134807:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "134806:18:10" + }, + "scope": 5104, + "src": "134695:217:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4773, + "nodeType": "Block", + "src": "135187:828:10", + "statements": [ + { + "AST": { + "nativeSrc": "135249:760:10", + "nodeType": "YulBlock", + "src": "135249:760:10", + "statements": [ + { + "nativeSrc": "135263:20:10", + "nodeType": "YulVariableDeclaration", + "src": "135263:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "135278:4:10", + "nodeType": "YulLiteral", + "src": "135278:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "135272:5:10", + "nodeType": "YulIdentifier", + "src": "135272:5:10" + }, + "nativeSrc": "135272:11:10", + "nodeType": "YulFunctionCall", + "src": "135272:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "135267:1:10", + "nodeType": "YulTypedName", + "src": "135267:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "135337:4:10", + "nodeType": "YulLiteral", + "src": "135337:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "135343:66:10", + "nodeType": "YulLiteral", + "src": "135343:66:10", + "type": "", + "value": "0x3d50545afa361460525736515af43d600060013e6052573d6001fd5b3d6001f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "135330:6:10", + "nodeType": "YulIdentifier", + "src": "135330:6:10" + }, + "nativeSrc": "135330:80:10", + "nodeType": "YulFunctionCall", + "src": "135330:80:10" + }, + "nativeSrc": "135330:80:10", + "nodeType": "YulExpressionStatement", + "src": "135330:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "135430:4:10", + "nodeType": "YulLiteral", + "src": "135430:4:10", + "type": "", + "value": "0x40" + }, + { + "kind": "number", + "nativeSrc": "135436:66:10", + "nodeType": "YulLiteral", + "src": "135436:66:10", + "type": "", + "value": "0x527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b3513" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "135423:6:10", + "nodeType": "YulIdentifier", + "src": "135423:6:10" + }, + "nativeSrc": "135423:80:10", + "nodeType": "YulFunctionCall", + "src": "135423:80:10" + }, + "nativeSrc": "135423:80:10", + "nodeType": "YulExpressionStatement", + "src": "135423:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "135523:4:10", + "nodeType": "YulLiteral", + "src": "135523:4:10", + "type": "", + "value": "0x20" + }, + { + "kind": "number", + "nativeSrc": "135529:58:10", + "nodeType": "YulLiteral", + "src": "135529:58:10", + "type": "", + "value": "0x60195155f3363d3d373d3d363d602036600436635c60da1b60e01b36" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "135516:6:10", + "nodeType": "YulIdentifier", + "src": "135516:6:10" + }, + "nativeSrc": "135516:72:10", + "nodeType": "YulFunctionCall", + "src": "135516:72:10" + }, + "nativeSrc": "135516:72:10", + "nodeType": "YulExpressionStatement", + "src": "135516:72:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "135608:4:10", + "nodeType": "YulLiteral", + "src": "135608:4:10", + "type": "", + "value": "0x04" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "135621:3:10", + "nodeType": "YulLiteral", + "src": "135621:3:10", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "135626:20:10", + "nodeType": "YulLiteral", + "src": "135626:20:10", + "type": "", + "value": "0x60573d8160223d3973" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "135617:3:10", + "nodeType": "YulIdentifier", + "src": "135617:3:10" + }, + "nativeSrc": "135617:30:10", + "nodeType": "YulFunctionCall", + "src": "135617:30:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "135653:2:10", + "nodeType": "YulLiteral", + "src": "135653:2:10", + "type": "", + "value": "96" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "135661:2:10", + "nodeType": "YulLiteral", + "src": "135661:2:10", + "type": "", + "value": "96" + }, + { + "name": "beacon", + "nativeSrc": "135665:6:10", + "nodeType": "YulIdentifier", + "src": "135665:6:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "135657:3:10", + "nodeType": "YulIdentifier", + "src": "135657:3:10" + }, + "nativeSrc": "135657:15:10", + "nodeType": "YulFunctionCall", + "src": "135657:15:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "135649:3:10", + "nodeType": "YulIdentifier", + "src": "135649:3:10" + }, + "nativeSrc": "135649:24:10", + "nodeType": "YulFunctionCall", + "src": "135649:24:10" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "135614:2:10", + "nodeType": "YulIdentifier", + "src": "135614:2:10" + }, + "nativeSrc": "135614:60:10", + "nodeType": "YulFunctionCall", + "src": "135614:60:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "135601:6:10", + "nodeType": "YulIdentifier", + "src": "135601:6:10" + }, + "nativeSrc": "135601:74:10", + "nodeType": "YulFunctionCall", + "src": "135601:74:10" + }, + "nativeSrc": "135601:74:10", + "nodeType": "YulExpressionStatement", + "src": "135601:74:10" + }, + { + "nativeSrc": "135688:44:10", + "nodeType": "YulAssignment", + "src": "135688:44:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "135708:5:10", + "nodeType": "YulIdentifier", + "src": "135708:5:10" + }, + { + "kind": "number", + "nativeSrc": "135715:4:10", + "nodeType": "YulLiteral", + "src": "135715:4:10", + "type": "", + "value": "0x07" + }, + { + "kind": "number", + "nativeSrc": "135721:4:10", + "nodeType": "YulLiteral", + "src": "135721:4:10", + "type": "", + "value": "0x79" + }, + { + "name": "salt", + "nativeSrc": "135727:4:10", + "nodeType": "YulIdentifier", + "src": "135727:4:10" + } + ], + "functionName": { + "name": "create2", + "nativeSrc": "135700:7:10", + "nodeType": "YulIdentifier", + "src": "135700:7:10" + }, + "nativeSrc": "135700:32:10", + "nodeType": "YulFunctionCall", + "src": "135700:32:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "135688:8:10", + "nodeType": "YulIdentifier", + "src": "135688:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "135765:116:10", + "nodeType": "YulBlock", + "src": "135765:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "135790:4:10", + "nodeType": "YulLiteral", + "src": "135790:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "135796:10:10", + "nodeType": "YulLiteral", + "src": "135796:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "135783:6:10", + "nodeType": "YulIdentifier", + "src": "135783:6:10" + }, + "nativeSrc": "135783:24:10", + "nodeType": "YulFunctionCall", + "src": "135783:24:10" + }, + "nativeSrc": "135783:24:10", + "nodeType": "YulExpressionStatement", + "src": "135783:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "135856:4:10", + "nodeType": "YulLiteral", + "src": "135856:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "135862:4:10", + "nodeType": "YulLiteral", + "src": "135862:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "135849:6:10", + "nodeType": "YulIdentifier", + "src": "135849:6:10" + }, + "nativeSrc": "135849:18:10", + "nodeType": "YulFunctionCall", + "src": "135849:18:10" + }, + "nativeSrc": "135849:18:10", + "nodeType": "YulExpressionStatement", + "src": "135849:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "135755:8:10", + "nodeType": "YulIdentifier", + "src": "135755:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "135748:6:10", + "nodeType": "YulIdentifier", + "src": "135748:6:10" + }, + "nativeSrc": "135748:16:10", + "nodeType": "YulFunctionCall", + "src": "135748:16:10" + }, + "nativeSrc": "135745:136:10", + "nodeType": "YulIf", + "src": "135745:136:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "135901:4:10", + "nodeType": "YulLiteral", + "src": "135901:4:10", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "135907:1:10", + "nodeType": "YulIdentifier", + "src": "135907:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "135894:6:10", + "nodeType": "YulIdentifier", + "src": "135894:6:10" + }, + "nativeSrc": "135894:15:10", + "nodeType": "YulFunctionCall", + "src": "135894:15:10" + }, + "nativeSrc": "135894:15:10", + "nodeType": "YulExpressionStatement", + "src": "135894:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "135965:4:10", + "nodeType": "YulLiteral", + "src": "135965:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "135971:1:10", + "nodeType": "YulLiteral", + "src": "135971:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "135958:6:10", + "nodeType": "YulIdentifier", + "src": "135958:6:10" + }, + "nativeSrc": "135958:15:10", + "nodeType": "YulFunctionCall", + "src": "135958:15:10" + }, + "nativeSrc": "135958:15:10", + "nodeType": "YulExpressionStatement", + "src": "135958:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4765, + "isOffset": false, + "isSlot": false, + "src": "135665:6:10", + "valueSize": 1 + }, + { + "declaration": 4770, + "isOffset": false, + "isSlot": false, + "src": "135688:8:10", + "valueSize": 1 + }, + { + "declaration": 4770, + "isOffset": false, + "isSlot": false, + "src": "135755:8:10", + "valueSize": 1 + }, + { + "declaration": 4767, + "isOffset": false, + "isSlot": false, + "src": "135727:4:10", + "valueSize": 1 + }, + { + "declaration": 4763, + "isOffset": false, + "isSlot": false, + "src": "135708:5:10", + "valueSize": 1 + } + ], + "id": 4772, + "nodeType": "InlineAssembly", + "src": "135240:769:10" + } + ] + }, + "documentation": { + "id": 4761, + "nodeType": "StructuredDocumentation", + "src": "134918:115:10", + "text": "@dev Deploys a deterministic ERC1967I beacon proxy with `salt`.\n Deposits `value` ETH during deployment." + }, + "id": 4774, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployDeterministicERC1967IBeaconProxy", + "nameLocation": "135047:38:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4768, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4763, + "mutability": "mutable", + "name": "value", + "nameLocation": "135094:5:10", + "nodeType": "VariableDeclaration", + "scope": 4774, + "src": "135086:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4762, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "135086:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4765, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "135109:6:10", + "nodeType": "VariableDeclaration", + "scope": 4774, + "src": "135101:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4764, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "135101:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4767, + "mutability": "mutable", + "name": "salt", + "nameLocation": "135125:4:10", + "nodeType": "VariableDeclaration", + "scope": 4774, + "src": "135117:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4766, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "135117:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "135085:45:10" + }, + "returnParameters": { + "id": 4771, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4770, + "mutability": "mutable", + "name": "instance", + "nameLocation": "135173:8:10", + "nodeType": "VariableDeclaration", + "scope": 4774, + "src": "135165:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4769, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "135165:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "135164:18:10" + }, + "scope": 5104, + "src": "135038:977:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4792, + "nodeType": "Block", + "src": "136392:79:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "30", + "id": 4787, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "136448:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 4788, + "name": "beacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4777, + "src": "136451:6:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4789, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4779, + "src": "136459:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4786, + "name": "createDeterministicERC1967IBeaconProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4793, + 4809, + 4949, + 4967 + ], + "referencedDeclaration": 4809, + "src": "136409:38:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$_t_bool_$_t_address_$", + "typeString": "function (uint256,address,bytes32) returns (bool,address)" + } + }, + "id": 4790, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "136409:55:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_address_$", + "typeString": "tuple(bool,address)" + } + }, + "functionReturnParameters": 4785, + "id": 4791, + "nodeType": "Return", + "src": "136402:62:10" + } + ] + }, + "documentation": { + "id": 4775, + "nodeType": "StructuredDocumentation", + "src": "136021:210:10", + "text": "@dev Creates a deterministic ERC1967I beacon proxy with `salt`.\n Note: This method is intended for use in ERC4337 factories,\n which are expected to NOT revert if the proxy is already deployed." + }, + "id": 4793, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createDeterministicERC1967IBeaconProxy", + "nameLocation": "136245:38:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4780, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4777, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "136292:6:10", + "nodeType": "VariableDeclaration", + "scope": 4793, + "src": "136284:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4776, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "136284:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4779, + "mutability": "mutable", + "name": "salt", + "nameLocation": "136308:4:10", + "nodeType": "VariableDeclaration", + "scope": 4793, + "src": "136300:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4778, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "136300:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "136283:30:10" + }, + "returnParameters": { + "id": 4785, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4782, + "mutability": "mutable", + "name": "alreadyDeployed", + "nameLocation": "136353:15:10", + "nodeType": "VariableDeclaration", + "scope": 4793, + "src": "136348:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4781, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "136348:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4784, + "mutability": "mutable", + "name": "instance", + "nameLocation": "136378:8:10", + "nodeType": "VariableDeclaration", + "scope": 4793, + "src": "136370:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4783, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "136370:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "136347:40:10" + }, + "scope": 5104, + "src": "136236:235:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4808, + "nodeType": "Block", + "src": "136911:1609:10", + "statements": [ + { + "AST": { + "nativeSrc": "136973:1541:10", + "nodeType": "YulBlock", + "src": "136973:1541:10", + "statements": [ + { + "nativeSrc": "136987:20:10", + "nodeType": "YulVariableDeclaration", + "src": "136987:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "137002:4:10", + "nodeType": "YulLiteral", + "src": "137002:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "136996:5:10", + "nodeType": "YulIdentifier", + "src": "136996:5:10" + }, + "nativeSrc": "136996:11:10", + "nodeType": "YulFunctionCall", + "src": "136996:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "136991:1:10", + "nodeType": "YulTypedName", + "src": "136991:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "137061:4:10", + "nodeType": "YulLiteral", + "src": "137061:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "137067:66:10", + "nodeType": "YulLiteral", + "src": "137067:66:10", + "type": "", + "value": "0x3d50545afa361460525736515af43d600060013e6052573d6001fd5b3d6001f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "137054:6:10", + "nodeType": "YulIdentifier", + "src": "137054:6:10" + }, + "nativeSrc": "137054:80:10", + "nodeType": "YulFunctionCall", + "src": "137054:80:10" + }, + "nativeSrc": "137054:80:10", + "nodeType": "YulExpressionStatement", + "src": "137054:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "137154:4:10", + "nodeType": "YulLiteral", + "src": "137154:4:10", + "type": "", + "value": "0x40" + }, + { + "kind": "number", + "nativeSrc": "137160:66:10", + "nodeType": "YulLiteral", + "src": "137160:66:10", + "type": "", + "value": "0x527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b3513" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "137147:6:10", + "nodeType": "YulIdentifier", + "src": "137147:6:10" + }, + "nativeSrc": "137147:80:10", + "nodeType": "YulFunctionCall", + "src": "137147:80:10" + }, + "nativeSrc": "137147:80:10", + "nodeType": "YulExpressionStatement", + "src": "137147:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "137247:4:10", + "nodeType": "YulLiteral", + "src": "137247:4:10", + "type": "", + "value": "0x20" + }, + { + "kind": "number", + "nativeSrc": "137253:58:10", + "nodeType": "YulLiteral", + "src": "137253:58:10", + "type": "", + "value": "0x60195155f3363d3d373d3d363d602036600436635c60da1b60e01b36" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "137240:6:10", + "nodeType": "YulIdentifier", + "src": "137240:6:10" + }, + "nativeSrc": "137240:72:10", + "nodeType": "YulFunctionCall", + "src": "137240:72:10" + }, + "nativeSrc": "137240:72:10", + "nodeType": "YulExpressionStatement", + "src": "137240:72:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "137332:4:10", + "nodeType": "YulLiteral", + "src": "137332:4:10", + "type": "", + "value": "0x04" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "137345:3:10", + "nodeType": "YulLiteral", + "src": "137345:3:10", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "137350:20:10", + "nodeType": "YulLiteral", + "src": "137350:20:10", + "type": "", + "value": "0x60573d8160223d3973" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "137341:3:10", + "nodeType": "YulIdentifier", + "src": "137341:3:10" + }, + "nativeSrc": "137341:30:10", + "nodeType": "YulFunctionCall", + "src": "137341:30:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "137377:2:10", + "nodeType": "YulLiteral", + "src": "137377:2:10", + "type": "", + "value": "96" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "137385:2:10", + "nodeType": "YulLiteral", + "src": "137385:2:10", + "type": "", + "value": "96" + }, + { + "name": "beacon", + "nativeSrc": "137389:6:10", + "nodeType": "YulIdentifier", + "src": "137389:6:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "137381:3:10", + "nodeType": "YulIdentifier", + "src": "137381:3:10" + }, + "nativeSrc": "137381:15:10", + "nodeType": "YulFunctionCall", + "src": "137381:15:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "137373:3:10", + "nodeType": "YulIdentifier", + "src": "137373:3:10" + }, + "nativeSrc": "137373:24:10", + "nodeType": "YulFunctionCall", + "src": "137373:24:10" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "137338:2:10", + "nodeType": "YulIdentifier", + "src": "137338:2:10" + }, + "nativeSrc": "137338:60:10", + "nodeType": "YulFunctionCall", + "src": "137338:60:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "137325:6:10", + "nodeType": "YulIdentifier", + "src": "137325:6:10" + }, + "nativeSrc": "137325:74:10", + "nodeType": "YulFunctionCall", + "src": "137325:74:10" + }, + "nativeSrc": "137325:74:10", + "nodeType": "YulExpressionStatement", + "src": "137325:74:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "137475:1:10", + "nodeType": "YulIdentifier", + "src": "137475:1:10" + }, + { + "kind": "number", + "nativeSrc": "137478:4:10", + "nodeType": "YulLiteral", + "src": "137478:4:10", + "type": "", + "value": "0x35" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "137471:3:10", + "nodeType": "YulIdentifier", + "src": "137471:3:10" + }, + "nativeSrc": "137471:12:10", + "nodeType": "YulFunctionCall", + "src": "137471:12:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "137495:4:10", + "nodeType": "YulLiteral", + "src": "137495:4:10", + "type": "", + "value": "0x07" + }, + { + "kind": "number", + "nativeSrc": "137501:4:10", + "nodeType": "YulLiteral", + "src": "137501:4:10", + "type": "", + "value": "0x79" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "137485:9:10", + "nodeType": "YulIdentifier", + "src": "137485:9:10" + }, + "nativeSrc": "137485:21:10", + "nodeType": "YulFunctionCall", + "src": "137485:21:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "137464:6:10", + "nodeType": "YulIdentifier", + "src": "137464:6:10" + }, + "nativeSrc": "137464:43:10", + "nodeType": "YulFunctionCall", + "src": "137464:43:10" + }, + "nativeSrc": "137464:43:10", + "nodeType": "YulExpressionStatement", + "src": "137464:43:10" + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "137527:1:10", + "nodeType": "YulIdentifier", + "src": "137527:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "137534:2:10", + "nodeType": "YulLiteral", + "src": "137534:2:10", + "type": "", + "value": "88" + }, + { + "arguments": [], + "functionName": { + "name": "address", + "nativeSrc": "137538:7:10", + "nodeType": "YulIdentifier", + "src": "137538:7:10" + }, + "nativeSrc": "137538:9:10", + "nodeType": "YulFunctionCall", + "src": "137538:9:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "137530:3:10", + "nodeType": "YulIdentifier", + "src": "137530:3:10" + }, + "nativeSrc": "137530:18:10", + "nodeType": "YulFunctionCall", + "src": "137530:18:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "137520:6:10", + "nodeType": "YulIdentifier", + "src": "137520:6:10" + }, + "nativeSrc": "137520:29:10", + "nodeType": "YulFunctionCall", + "src": "137520:29:10" + }, + "nativeSrc": "137520:29:10", + "nodeType": "YulExpressionStatement", + "src": "137520:29:10" + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "137570:1:10", + "nodeType": "YulIdentifier", + "src": "137570:1:10" + }, + { + "kind": "number", + "nativeSrc": "137573:4:10", + "nodeType": "YulLiteral", + "src": "137573:4:10", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "137562:7:10", + "nodeType": "YulIdentifier", + "src": "137562:7:10" + }, + "nativeSrc": "137562:16:10", + "nodeType": "YulFunctionCall", + "src": "137562:16:10" + }, + "nativeSrc": "137562:16:10", + "nodeType": "YulExpressionStatement", + "src": "137562:16:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "137623:1:10", + "nodeType": "YulIdentifier", + "src": "137623:1:10" + }, + { + "kind": "number", + "nativeSrc": "137626:4:10", + "nodeType": "YulLiteral", + "src": "137626:4:10", + "type": "", + "value": "0x15" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "137619:3:10", + "nodeType": "YulIdentifier", + "src": "137619:3:10" + }, + "nativeSrc": "137619:12:10", + "nodeType": "YulFunctionCall", + "src": "137619:12:10" + }, + { + "name": "salt", + "nativeSrc": "137633:4:10", + "nodeType": "YulIdentifier", + "src": "137633:4:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "137612:6:10", + "nodeType": "YulIdentifier", + "src": "137612:6:10" + }, + "nativeSrc": "137612:26:10", + "nodeType": "YulFunctionCall", + "src": "137612:26:10" + }, + "nativeSrc": "137612:26:10", + "nodeType": "YulExpressionStatement", + "src": "137612:26:10" + }, + { + "nativeSrc": "137651:30:10", + "nodeType": "YulAssignment", + "src": "137651:30:10", + "value": { + "arguments": [ + { + "name": "m", + "nativeSrc": "137673:1:10", + "nodeType": "YulIdentifier", + "src": "137673:1:10" + }, + { + "kind": "number", + "nativeSrc": "137676:4:10", + "nodeType": "YulLiteral", + "src": "137676:4:10", + "type": "", + "value": "0x55" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "137663:9:10", + "nodeType": "YulIdentifier", + "src": "137663:9:10" + }, + "nativeSrc": "137663:18:10", + "nodeType": "YulFunctionCall", + "src": "137663:18:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "137651:8:10", + "nodeType": "YulIdentifier", + "src": "137651:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "137706:680:10", + "nodeType": "YulBlock", + "src": "137706:680:10", + "statements": [ + { + "body": { + "nativeSrc": "137757:291:10", + "nodeType": "YulBlock", + "src": "137757:291:10", + "statements": [ + { + "nativeSrc": "137779:44:10", + "nodeType": "YulAssignment", + "src": "137779:44:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "137799:5:10", + "nodeType": "YulIdentifier", + "src": "137799:5:10" + }, + { + "kind": "number", + "nativeSrc": "137806:4:10", + "nodeType": "YulLiteral", + "src": "137806:4:10", + "type": "", + "value": "0x07" + }, + { + "kind": "number", + "nativeSrc": "137812:4:10", + "nodeType": "YulLiteral", + "src": "137812:4:10", + "type": "", + "value": "0x79" + }, + { + "name": "salt", + "nativeSrc": "137818:4:10", + "nodeType": "YulIdentifier", + "src": "137818:4:10" + } + ], + "functionName": { + "name": "create2", + "nativeSrc": "137791:7:10", + "nodeType": "YulIdentifier", + "src": "137791:7:10" + }, + "nativeSrc": "137791:32:10", + "nodeType": "YulFunctionCall", + "src": "137791:32:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "137779:8:10", + "nodeType": "YulIdentifier", + "src": "137779:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "137864:140:10", + "nodeType": "YulBlock", + "src": "137864:140:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "137897:4:10", + "nodeType": "YulLiteral", + "src": "137897:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "137903:10:10", + "nodeType": "YulLiteral", + "src": "137903:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "137890:6:10", + "nodeType": "YulIdentifier", + "src": "137890:6:10" + }, + "nativeSrc": "137890:24:10", + "nodeType": "YulFunctionCall", + "src": "137890:24:10" + }, + "nativeSrc": "137890:24:10", + "nodeType": "YulExpressionStatement", + "src": "137890:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "137971:4:10", + "nodeType": "YulLiteral", + "src": "137971:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "137977:4:10", + "nodeType": "YulLiteral", + "src": "137977:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "137964:6:10", + "nodeType": "YulIdentifier", + "src": "137964:6:10" + }, + "nativeSrc": "137964:18:10", + "nodeType": "YulFunctionCall", + "src": "137964:18:10" + }, + "nativeSrc": "137964:18:10", + "nodeType": "YulExpressionStatement", + "src": "137964:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "137854:8:10", + "nodeType": "YulIdentifier", + "src": "137854:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "137847:6:10", + "nodeType": "YulIdentifier", + "src": "137847:6:10" + }, + "nativeSrc": "137847:16:10", + "nodeType": "YulFunctionCall", + "src": "137847:16:10" + }, + "nativeSrc": "137844:160:10", + "nodeType": "YulIf", + "src": "137844:160:10" + }, + { + "nativeSrc": "138025:5:10", + "nodeType": "YulBreak", + "src": "138025:5:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "137746:8:10", + "nodeType": "YulIdentifier", + "src": "137746:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "137734:11:10", + "nodeType": "YulIdentifier", + "src": "137734:11:10" + }, + "nativeSrc": "137734:21:10", + "nodeType": "YulFunctionCall", + "src": "137734:21:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "137727:6:10", + "nodeType": "YulIdentifier", + "src": "137727:6:10" + }, + "nativeSrc": "137727:29:10", + "nodeType": "YulFunctionCall", + "src": "137727:29:10" + }, + "nativeSrc": "137724:324:10", + "nodeType": "YulIf", + "src": "137724:324:10" + }, + { + "nativeSrc": "138065:20:10", + "nodeType": "YulAssignment", + "src": "138065:20:10", + "value": { + "kind": "number", + "nativeSrc": "138084:1:10", + "nodeType": "YulLiteral", + "src": "138084:1:10", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "alreadyDeployed", + "nativeSrc": "138065:15:10", + "nodeType": "YulIdentifier", + "src": "138065:15:10" + } + ] + }, + { + "body": { + "nativeSrc": "138119:9:10", + "nodeType": "YulBlock", + "src": "138119:9:10", + "statements": [ + { + "nativeSrc": "138121:5:10", + "nodeType": "YulBreak", + "src": "138121:5:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nativeSrc": "138112:5:10", + "nodeType": "YulIdentifier", + "src": "138112:5:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "138105:6:10", + "nodeType": "YulIdentifier", + "src": "138105:6:10" + }, + "nativeSrc": "138105:13:10", + "nodeType": "YulFunctionCall", + "src": "138105:13:10" + }, + "nativeSrc": "138102:26:10", + "nodeType": "YulIf", + "src": "138102:26:10" + }, + { + "body": { + "nativeSrc": "138221:129:10", + "nodeType": "YulBlock", + "src": "138221:129:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "138250:4:10", + "nodeType": "YulLiteral", + "src": "138250:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "138256:10:10", + "nodeType": "YulLiteral", + "src": "138256:10:10", + "type": "", + "value": "0xb12d13eb" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "138243:6:10", + "nodeType": "YulIdentifier", + "src": "138243:6:10" + }, + "nativeSrc": "138243:24:10", + "nodeType": "YulFunctionCall", + "src": "138243:24:10" + }, + "nativeSrc": "138243:24:10", + "nodeType": "YulExpressionStatement", + "src": "138243:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "138321:4:10", + "nodeType": "YulLiteral", + "src": "138321:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "138327:4:10", + "nodeType": "YulLiteral", + "src": "138327:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "138314:6:10", + "nodeType": "YulIdentifier", + "src": "138314:6:10" + }, + "nativeSrc": "138314:18:10", + "nodeType": "YulFunctionCall", + "src": "138314:18:10" + }, + "nativeSrc": "138314:18:10", + "nodeType": "YulExpressionStatement", + "src": "138314:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "138160:3:10", + "nodeType": "YulIdentifier", + "src": "138160:3:10" + }, + "nativeSrc": "138160:5:10", + "nodeType": "YulFunctionCall", + "src": "138160:5:10" + }, + { + "name": "instance", + "nativeSrc": "138167:8:10", + "nodeType": "YulIdentifier", + "src": "138167:8:10" + }, + { + "name": "value", + "nativeSrc": "138177:5:10", + "nodeType": "YulIdentifier", + "src": "138177:5:10" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "138184:8:10", + "nodeType": "YulIdentifier", + "src": "138184:8:10" + }, + "nativeSrc": "138184:10:10", + "nodeType": "YulFunctionCall", + "src": "138184:10:10" + }, + { + "kind": "number", + "nativeSrc": "138196:4:10", + "nodeType": "YulLiteral", + "src": "138196:4:10", + "type": "", + "value": "0x00" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "138202:8:10", + "nodeType": "YulIdentifier", + "src": "138202:8:10" + }, + "nativeSrc": "138202:10:10", + "nodeType": "YulFunctionCall", + "src": "138202:10:10" + }, + { + "kind": "number", + "nativeSrc": "138214:4:10", + "nodeType": "YulLiteral", + "src": "138214:4:10", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "call", + "nativeSrc": "138155:4:10", + "nodeType": "YulIdentifier", + "src": "138155:4:10" + }, + "nativeSrc": "138155:64:10", + "nodeType": "YulFunctionCall", + "src": "138155:64:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "138148:6:10", + "nodeType": "YulIdentifier", + "src": "138148:6:10" + }, + "nativeSrc": "138148:72:10", + "nodeType": "YulFunctionCall", + "src": "138148:72:10" + }, + "nativeSrc": "138145:205:10", + "nodeType": "YulIf", + "src": "138145:205:10" + }, + { + "nativeSrc": "138367:5:10", + "nodeType": "YulBreak", + "src": "138367:5:10" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "137701:1:10", + "nodeType": "YulLiteral", + "src": "137701:1:10", + "type": "", + "value": "1" + }, + "nativeSrc": "137694:692:10", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "137703:2:10", + "nodeType": "YulBlock", + "src": "137703:2:10", + "statements": [] + }, + "pre": { + "nativeSrc": "137698:2:10", + "nodeType": "YulBlock", + "src": "137698:2:10", + "statements": [] + }, + "src": "137694:692:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "138406:4:10", + "nodeType": "YulLiteral", + "src": "138406:4:10", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "138412:1:10", + "nodeType": "YulIdentifier", + "src": "138412:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "138399:6:10", + "nodeType": "YulIdentifier", + "src": "138399:6:10" + }, + "nativeSrc": "138399:15:10", + "nodeType": "YulFunctionCall", + "src": "138399:15:10" + }, + "nativeSrc": "138399:15:10", + "nodeType": "YulExpressionStatement", + "src": "138399:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "138470:4:10", + "nodeType": "YulLiteral", + "src": "138470:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "138476:1:10", + "nodeType": "YulLiteral", + "src": "138476:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "138463:6:10", + "nodeType": "YulIdentifier", + "src": "138463:6:10" + }, + "nativeSrc": "138463:15:10", + "nodeType": "YulFunctionCall", + "src": "138463:15:10" + }, + "nativeSrc": "138463:15:10", + "nodeType": "YulExpressionStatement", + "src": "138463:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4803, + "isOffset": false, + "isSlot": false, + "src": "138065:15:10", + "valueSize": 1 + }, + { + "declaration": 4798, + "isOffset": false, + "isSlot": false, + "src": "137389:6:10", + "valueSize": 1 + }, + { + "declaration": 4805, + "isOffset": false, + "isSlot": false, + "src": "137651:8:10", + "valueSize": 1 + }, + { + "declaration": 4805, + "isOffset": false, + "isSlot": false, + "src": "137746:8:10", + "valueSize": 1 + }, + { + "declaration": 4805, + "isOffset": false, + "isSlot": false, + "src": "137779:8:10", + "valueSize": 1 + }, + { + "declaration": 4805, + "isOffset": false, + "isSlot": false, + "src": "137854:8:10", + "valueSize": 1 + }, + { + "declaration": 4805, + "isOffset": false, + "isSlot": false, + "src": "138167:8:10", + "valueSize": 1 + }, + { + "declaration": 4800, + "isOffset": false, + "isSlot": false, + "src": "137633:4:10", + "valueSize": 1 + }, + { + "declaration": 4800, + "isOffset": false, + "isSlot": false, + "src": "137818:4:10", + "valueSize": 1 + }, + { + "declaration": 4796, + "isOffset": false, + "isSlot": false, + "src": "137799:5:10", + "valueSize": 1 + }, + { + "declaration": 4796, + "isOffset": false, + "isSlot": false, + "src": "138112:5:10", + "valueSize": 1 + }, + { + "declaration": 4796, + "isOffset": false, + "isSlot": false, + "src": "138177:5:10", + "valueSize": 1 + } + ], + "id": 4807, + "nodeType": "InlineAssembly", + "src": "136964:1550:10" + } + ] + }, + "documentation": { + "id": 4794, + "nodeType": "StructuredDocumentation", + "src": "136477:258:10", + "text": "@dev Creates a deterministic ERC1967I beacon proxy with `salt`.\n Deposits `value` ETH during deployment.\n Note: This method is intended for use in ERC4337 factories,\n which are expected to NOT revert if the proxy is already deployed." + }, + "id": 4809, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createDeterministicERC1967IBeaconProxy", + "nameLocation": "136749:38:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4801, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4796, + "mutability": "mutable", + "name": "value", + "nameLocation": "136796:5:10", + "nodeType": "VariableDeclaration", + "scope": 4809, + "src": "136788:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4795, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "136788:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4798, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "136811:6:10", + "nodeType": "VariableDeclaration", + "scope": 4809, + "src": "136803:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4797, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "136803:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4800, + "mutability": "mutable", + "name": "salt", + "nameLocation": "136827:4:10", + "nodeType": "VariableDeclaration", + "scope": 4809, + "src": "136819:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4799, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "136819:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "136787:45:10" + }, + "returnParameters": { + "id": 4806, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4803, + "mutability": "mutable", + "name": "alreadyDeployed", + "nameLocation": "136872:15:10", + "nodeType": "VariableDeclaration", + "scope": 4809, + "src": "136867:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4802, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "136867:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4805, + "mutability": "mutable", + "name": "instance", + "nameLocation": "136897:8:10", + "nodeType": "VariableDeclaration", + "scope": 4809, + "src": "136889:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4804, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "136889:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "136866:40:10" + }, + "scope": 5104, + "src": "136740:1780:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4818, + "nodeType": "Block", + "src": "138693:643:10", + "statements": [ + { + "AST": { + "nativeSrc": "138755:575:10", + "nodeType": "YulBlock", + "src": "138755:575:10", + "statements": [ + { + "nativeSrc": "138769:16:10", + "nodeType": "YulAssignment", + "src": "138769:16:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "138780:4:10", + "nodeType": "YulLiteral", + "src": "138780:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "138774:5:10", + "nodeType": "YulIdentifier", + "src": "138774:5:10" + }, + "nativeSrc": "138774:11:10", + "nodeType": "YulFunctionCall", + "src": "138774:11:10" + }, + "variableNames": [ + { + "name": "c", + "nativeSrc": "138769:1:10", + "nodeType": "YulIdentifier", + "src": "138769:1:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "138809:1:10", + "nodeType": "YulIdentifier", + "src": "138809:1:10" + }, + { + "kind": "number", + "nativeSrc": "138812:4:10", + "nodeType": "YulLiteral", + "src": "138812:4:10", + "type": "", + "value": "0x79" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "138805:3:10", + "nodeType": "YulIdentifier", + "src": "138805:3:10" + }, + "nativeSrc": "138805:12:10", + "nodeType": "YulFunctionCall", + "src": "138805:12:10" + }, + { + "kind": "number", + "nativeSrc": "138819:66:10", + "nodeType": "YulLiteral", + "src": "138819:66:10", + "type": "", + "value": "0x3d50545afa361460525736515af43d600060013e6052573d6001fd5b3d6001f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "138798:6:10", + "nodeType": "YulIdentifier", + "src": "138798:6:10" + }, + "nativeSrc": "138798:88:10", + "nodeType": "YulFunctionCall", + "src": "138798:88:10" + }, + "nativeSrc": "138798:88:10", + "nodeType": "YulExpressionStatement", + "src": "138798:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "138910:1:10", + "nodeType": "YulIdentifier", + "src": "138910:1:10" + }, + { + "kind": "number", + "nativeSrc": "138913:4:10", + "nodeType": "YulLiteral", + "src": "138913:4:10", + "type": "", + "value": "0x59" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "138906:3:10", + "nodeType": "YulIdentifier", + "src": "138906:3:10" + }, + "nativeSrc": "138906:12:10", + "nodeType": "YulFunctionCall", + "src": "138906:12:10" + }, + { + "kind": "number", + "nativeSrc": "138920:66:10", + "nodeType": "YulLiteral", + "src": "138920:66:10", + "type": "", + "value": "0x527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b3513" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "138899:6:10", + "nodeType": "YulIdentifier", + "src": "138899:6:10" + }, + "nativeSrc": "138899:88:10", + "nodeType": "YulFunctionCall", + "src": "138899:88:10" + }, + "nativeSrc": "138899:88:10", + "nodeType": "YulExpressionStatement", + "src": "138899:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "139011:1:10", + "nodeType": "YulIdentifier", + "src": "139011:1:10" + }, + { + "kind": "number", + "nativeSrc": "139014:4:10", + "nodeType": "YulLiteral", + "src": "139014:4:10", + "type": "", + "value": "0x39" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "139007:3:10", + "nodeType": "YulIdentifier", + "src": "139007:3:10" + }, + "nativeSrc": "139007:12:10", + "nodeType": "YulFunctionCall", + "src": "139007:12:10" + }, + { + "kind": "number", + "nativeSrc": "139021:58:10", + "nodeType": "YulLiteral", + "src": "139021:58:10", + "type": "", + "value": "0x60195155f3363d3d373d3d363d602036600436635c60da1b60e01b36" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "139000:6:10", + "nodeType": "YulIdentifier", + "src": "139000:6:10" + }, + "nativeSrc": "139000:80:10", + "nodeType": "YulFunctionCall", + "src": "139000:80:10" + }, + "nativeSrc": "139000:80:10", + "nodeType": "YulExpressionStatement", + "src": "139000:80:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "139104:1:10", + "nodeType": "YulIdentifier", + "src": "139104:1:10" + }, + { + "kind": "number", + "nativeSrc": "139107:4:10", + "nodeType": "YulLiteral", + "src": "139107:4:10", + "type": "", + "value": "0x1d" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "139100:3:10", + "nodeType": "YulIdentifier", + "src": "139100:3:10" + }, + "nativeSrc": "139100:12:10", + "nodeType": "YulFunctionCall", + "src": "139100:12:10" + }, + { + "name": "beacon", + "nativeSrc": "139114:6:10", + "nodeType": "YulIdentifier", + "src": "139114:6:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "139093:6:10", + "nodeType": "YulIdentifier", + "src": "139093:6:10" + }, + "nativeSrc": "139093:28:10", + "nodeType": "YulFunctionCall", + "src": "139093:28:10" + }, + "nativeSrc": "139093:28:10", + "nodeType": "YulExpressionStatement", + "src": "139093:28:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "139145:1:10", + "nodeType": "YulIdentifier", + "src": "139145:1:10" + }, + { + "kind": "number", + "nativeSrc": "139148:4:10", + "nodeType": "YulLiteral", + "src": "139148:4:10", + "type": "", + "value": "0x09" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "139141:3:10", + "nodeType": "YulIdentifier", + "src": "139141:3:10" + }, + "nativeSrc": "139141:12:10", + "nodeType": "YulFunctionCall", + "src": "139141:12:10" + }, + { + "kind": "number", + "nativeSrc": "139155:20:10", + "nodeType": "YulLiteral", + "src": "139155:20:10", + "type": "", + "value": "0x60573d8160223d3973" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "139134:6:10", + "nodeType": "YulIdentifier", + "src": "139134:6:10" + }, + "nativeSrc": "139134:42:10", + "nodeType": "YulFunctionCall", + "src": "139134:42:10" + }, + "nativeSrc": "139134:42:10", + "nodeType": "YulExpressionStatement", + "src": "139134:42:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "139200:1:10", + "nodeType": "YulIdentifier", + "src": "139200:1:10" + }, + { + "kind": "number", + "nativeSrc": "139203:4:10", + "nodeType": "YulLiteral", + "src": "139203:4:10", + "type": "", + "value": "0x99" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "139196:3:10", + "nodeType": "YulIdentifier", + "src": "139196:3:10" + }, + "nativeSrc": "139196:12:10", + "nodeType": "YulFunctionCall", + "src": "139196:12:10" + }, + { + "kind": "number", + "nativeSrc": "139210:1:10", + "nodeType": "YulLiteral", + "src": "139210:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "139189:6:10", + "nodeType": "YulIdentifier", + "src": "139189:6:10" + }, + "nativeSrc": "139189:23:10", + "nodeType": "YulFunctionCall", + "src": "139189:23:10" + }, + "nativeSrc": "139189:23:10", + "nodeType": "YulExpressionStatement", + "src": "139189:23:10" + }, + { + "expression": { + "arguments": [ + { + "name": "c", + "nativeSrc": "139232:1:10", + "nodeType": "YulIdentifier", + "src": "139232:1:10" + }, + { + "kind": "number", + "nativeSrc": "139235:4:10", + "nodeType": "YulLiteral", + "src": "139235:4:10", + "type": "", + "value": "0x79" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "139225:6:10", + "nodeType": "YulIdentifier", + "src": "139225:6:10" + }, + "nativeSrc": "139225:15:10", + "nodeType": "YulFunctionCall", + "src": "139225:15:10" + }, + "nativeSrc": "139225:15:10", + "nodeType": "YulExpressionStatement", + "src": "139225:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "139281:4:10", + "nodeType": "YulLiteral", + "src": "139281:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "c", + "nativeSrc": "139291:1:10", + "nodeType": "YulIdentifier", + "src": "139291:1:10" + }, + { + "kind": "number", + "nativeSrc": "139294:4:10", + "nodeType": "YulLiteral", + "src": "139294:4:10", + "type": "", + "value": "0xa0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "139287:3:10", + "nodeType": "YulIdentifier", + "src": "139287:3:10" + }, + "nativeSrc": "139287:12:10", + "nodeType": "YulFunctionCall", + "src": "139287:12:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "139274:6:10", + "nodeType": "YulIdentifier", + "src": "139274:6:10" + }, + "nativeSrc": "139274:26:10", + "nodeType": "YulFunctionCall", + "src": "139274:26:10" + }, + "nativeSrc": "139274:26:10", + "nodeType": "YulExpressionStatement", + "src": "139274:26:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4812, + "isOffset": false, + "isSlot": false, + "src": "139114:6:10", + "valueSize": 1 + }, + { + "declaration": 4815, + "isOffset": false, + "isSlot": false, + "src": "138769:1:10", + "valueSize": 1 + }, + { + "declaration": 4815, + "isOffset": false, + "isSlot": false, + "src": "138809:1:10", + "valueSize": 1 + }, + { + "declaration": 4815, + "isOffset": false, + "isSlot": false, + "src": "138910:1:10", + "valueSize": 1 + }, + { + "declaration": 4815, + "isOffset": false, + "isSlot": false, + "src": "139011:1:10", + "valueSize": 1 + }, + { + "declaration": 4815, + "isOffset": false, + "isSlot": false, + "src": "139104:1:10", + "valueSize": 1 + }, + { + "declaration": 4815, + "isOffset": false, + "isSlot": false, + "src": "139145:1:10", + "valueSize": 1 + }, + { + "declaration": 4815, + "isOffset": false, + "isSlot": false, + "src": "139200:1:10", + "valueSize": 1 + }, + { + "declaration": 4815, + "isOffset": false, + "isSlot": false, + "src": "139232:1:10", + "valueSize": 1 + }, + { + "declaration": 4815, + "isOffset": false, + "isSlot": false, + "src": "139291:1:10", + "valueSize": 1 + } + ], + "id": 4817, + "nodeType": "InlineAssembly", + "src": "138746:584:10" + } + ] + }, + "documentation": { + "id": 4810, + "nodeType": "StructuredDocumentation", + "src": "138526:70:10", + "text": "@dev Returns the initialization code of the ERC1967I beacon proxy." + }, + "id": 4819, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeERC1967IBeaconProxy", + "nameLocation": "138610:27:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4813, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4812, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "138646:6:10", + "nodeType": "VariableDeclaration", + "scope": 4819, + "src": "138638:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4811, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "138638:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "138637:16:10" + }, + "returnParameters": { + "id": 4816, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4815, + "mutability": "mutable", + "name": "c", + "nameLocation": "138690:1:10", + "nodeType": "VariableDeclaration", + "scope": 4819, + "src": "138677:14:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4814, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "138677:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "138676:16:10" + }, + "scope": 5104, + "src": "138601:735:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4828, + "nodeType": "Block", + "src": "139516:664:10", + "statements": [ + { + "AST": { + "nativeSrc": "139578:596:10", + "nodeType": "YulBlock", + "src": "139578:596:10", + "statements": [ + { + "nativeSrc": "139592:20:10", + "nodeType": "YulVariableDeclaration", + "src": "139592:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "139607:4:10", + "nodeType": "YulLiteral", + "src": "139607:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "139601:5:10", + "nodeType": "YulIdentifier", + "src": "139601:5:10" + }, + "nativeSrc": "139601:11:10", + "nodeType": "YulFunctionCall", + "src": "139601:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "139596:1:10", + "nodeType": "YulTypedName", + "src": "139596:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "139666:4:10", + "nodeType": "YulLiteral", + "src": "139666:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "139672:66:10", + "nodeType": "YulLiteral", + "src": "139672:66:10", + "type": "", + "value": "0x3d50545afa361460525736515af43d600060013e6052573d6001fd5b3d6001f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "139659:6:10", + "nodeType": "YulIdentifier", + "src": "139659:6:10" + }, + "nativeSrc": "139659:80:10", + "nodeType": "YulFunctionCall", + "src": "139659:80:10" + }, + "nativeSrc": "139659:80:10", + "nodeType": "YulExpressionStatement", + "src": "139659:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "139759:4:10", + "nodeType": "YulLiteral", + "src": "139759:4:10", + "type": "", + "value": "0x40" + }, + { + "kind": "number", + "nativeSrc": "139765:66:10", + "nodeType": "YulLiteral", + "src": "139765:66:10", + "type": "", + "value": "0x527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b3513" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "139752:6:10", + "nodeType": "YulIdentifier", + "src": "139752:6:10" + }, + "nativeSrc": "139752:80:10", + "nodeType": "YulFunctionCall", + "src": "139752:80:10" + }, + "nativeSrc": "139752:80:10", + "nodeType": "YulExpressionStatement", + "src": "139752:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "139852:4:10", + "nodeType": "YulLiteral", + "src": "139852:4:10", + "type": "", + "value": "0x20" + }, + { + "kind": "number", + "nativeSrc": "139858:58:10", + "nodeType": "YulLiteral", + "src": "139858:58:10", + "type": "", + "value": "0x60195155f3363d3d373d3d363d602036600436635c60da1b60e01b36" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "139845:6:10", + "nodeType": "YulIdentifier", + "src": "139845:6:10" + }, + "nativeSrc": "139845:72:10", + "nodeType": "YulFunctionCall", + "src": "139845:72:10" + }, + "nativeSrc": "139845:72:10", + "nodeType": "YulExpressionStatement", + "src": "139845:72:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "139937:4:10", + "nodeType": "YulLiteral", + "src": "139937:4:10", + "type": "", + "value": "0x04" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "139950:3:10", + "nodeType": "YulLiteral", + "src": "139950:3:10", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "139955:20:10", + "nodeType": "YulLiteral", + "src": "139955:20:10", + "type": "", + "value": "0x60573d8160223d3973" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "139946:3:10", + "nodeType": "YulIdentifier", + "src": "139946:3:10" + }, + "nativeSrc": "139946:30:10", + "nodeType": "YulFunctionCall", + "src": "139946:30:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "139982:2:10", + "nodeType": "YulLiteral", + "src": "139982:2:10", + "type": "", + "value": "96" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "139990:2:10", + "nodeType": "YulLiteral", + "src": "139990:2:10", + "type": "", + "value": "96" + }, + { + "name": "beacon", + "nativeSrc": "139994:6:10", + "nodeType": "YulIdentifier", + "src": "139994:6:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "139986:3:10", + "nodeType": "YulIdentifier", + "src": "139986:3:10" + }, + "nativeSrc": "139986:15:10", + "nodeType": "YulFunctionCall", + "src": "139986:15:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "139978:3:10", + "nodeType": "YulIdentifier", + "src": "139978:3:10" + }, + "nativeSrc": "139978:24:10", + "nodeType": "YulFunctionCall", + "src": "139978:24:10" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "139943:2:10", + "nodeType": "YulIdentifier", + "src": "139943:2:10" + }, + "nativeSrc": "139943:60:10", + "nodeType": "YulFunctionCall", + "src": "139943:60:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "139930:6:10", + "nodeType": "YulIdentifier", + "src": "139930:6:10" + }, + "nativeSrc": "139930:74:10", + "nodeType": "YulFunctionCall", + "src": "139930:74:10" + }, + "nativeSrc": "139930:74:10", + "nodeType": "YulExpressionStatement", + "src": "139930:74:10" + }, + { + "nativeSrc": "140017:29:10", + "nodeType": "YulAssignment", + "src": "140017:29:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "140035:4:10", + "nodeType": "YulLiteral", + "src": "140035:4:10", + "type": "", + "value": "0x07" + }, + { + "kind": "number", + "nativeSrc": "140041:4:10", + "nodeType": "YulLiteral", + "src": "140041:4:10", + "type": "", + "value": "0x79" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "140025:9:10", + "nodeType": "YulIdentifier", + "src": "140025:9:10" + }, + "nativeSrc": "140025:21:10", + "nodeType": "YulFunctionCall", + "src": "140025:21:10" + }, + "variableNames": [ + { + "name": "hash", + "nativeSrc": "140017:4:10", + "nodeType": "YulIdentifier", + "src": "140017:4:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "140066:4:10", + "nodeType": "YulLiteral", + "src": "140066:4:10", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "140072:1:10", + "nodeType": "YulIdentifier", + "src": "140072:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "140059:6:10", + "nodeType": "YulIdentifier", + "src": "140059:6:10" + }, + "nativeSrc": "140059:15:10", + "nodeType": "YulFunctionCall", + "src": "140059:15:10" + }, + "nativeSrc": "140059:15:10", + "nodeType": "YulExpressionStatement", + "src": "140059:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "140130:4:10", + "nodeType": "YulLiteral", + "src": "140130:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "140136:1:10", + "nodeType": "YulLiteral", + "src": "140136:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "140123:6:10", + "nodeType": "YulIdentifier", + "src": "140123:6:10" + }, + "nativeSrc": "140123:15:10", + "nodeType": "YulFunctionCall", + "src": "140123:15:10" + }, + "nativeSrc": "140123:15:10", + "nodeType": "YulExpressionStatement", + "src": "140123:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4822, + "isOffset": false, + "isSlot": false, + "src": "139994:6:10", + "valueSize": 1 + }, + { + "declaration": 4825, + "isOffset": false, + "isSlot": false, + "src": "140017:4:10", + "valueSize": 1 + } + ], + "id": 4827, + "nodeType": "InlineAssembly", + "src": "139569:605:10" + } + ] + }, + "documentation": { + "id": 4820, + "nodeType": "StructuredDocumentation", + "src": "139342:75:10", + "text": "@dev Returns the initialization code hash of the ERC1967I beacon proxy." + }, + "id": 4829, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeHashERC1967IBeaconProxy", + "nameLocation": "139431:31:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4823, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4822, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "139471:6:10", + "nodeType": "VariableDeclaration", + "scope": 4829, + "src": "139463:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4821, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "139463:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "139462:16:10" + }, + "returnParameters": { + "id": 4826, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4825, + "mutability": "mutable", + "name": "hash", + "nameLocation": "139510:4:10", + "nodeType": "VariableDeclaration", + "scope": 4829, + "src": "139502:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4824, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "139502:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "139501:14:10" + }, + "scope": 5104, + "src": "139422:758:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4855, + "nodeType": "Block", + "src": "140545:142:10", + "statements": [ + { + "assignments": [ + 4842 + ], + "declarations": [ + { + "constant": false, + "id": 4842, + "mutability": "mutable", + "name": "hash", + "nameLocation": "140563:4:10", + "nodeType": "VariableDeclaration", + "scope": 4855, + "src": "140555:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4841, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "140555:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 4846, + "initialValue": { + "arguments": [ + { + "id": 4844, + "name": "beacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4832, + "src": "140602:6:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4843, + "name": "initCodeHashERC1967IBeaconProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4829, + 4991 + ], + "referencedDeclaration": 4829, + "src": "140570:31:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_bytes32_$", + "typeString": "function (address) pure returns (bytes32)" + } + }, + "id": 4845, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "140570:39:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "140555:54:10" + }, + { + "expression": { + "id": 4853, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4847, + "name": "predicted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4839, + "src": "140619:9:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 4849, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4842, + "src": "140659:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 4850, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4834, + "src": "140665:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 4851, + "name": "deployer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4836, + "src": "140671:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4848, + "name": "predictDeterministicAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3237, + 3510, + 5081 + ], + "referencedDeclaration": 5081, + "src": "140631:27:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_address_$", + "typeString": "function (bytes32,bytes32,address) pure returns (address)" + } + }, + "id": 4852, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "140631:49:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "140619:61:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4854, + "nodeType": "ExpressionStatement", + "src": "140619:61:10" + } + ] + }, + "documentation": { + "id": 4830, + "nodeType": "StructuredDocumentation", + "src": "140186:178:10", + "text": "@dev Returns the address of the ERC1967I beacon proxy, with `salt` by `deployer`.\n Note: The returned result has dirty upper 96 bits. Please clean if used in assembly." + }, + "id": 4856, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "predictDeterministicAddressERC1967IBeaconProxy", + "nameLocation": "140378:46:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4837, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4832, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "140442:6:10", + "nodeType": "VariableDeclaration", + "scope": 4856, + "src": "140434:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4831, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "140434:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4834, + "mutability": "mutable", + "name": "salt", + "nameLocation": "140466:4:10", + "nodeType": "VariableDeclaration", + "scope": 4856, + "src": "140458:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4833, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "140458:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4836, + "mutability": "mutable", + "name": "deployer", + "nameLocation": "140488:8:10", + "nodeType": "VariableDeclaration", + "scope": 4856, + "src": "140480:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4835, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "140480:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "140424:78:10" + }, + "returnParameters": { + "id": 4840, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4839, + "mutability": "mutable", + "name": "predicted", + "nameLocation": "140534:9:10", + "nodeType": "VariableDeclaration", + "scope": 4856, + "src": "140526:17:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4838, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "140526:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "140525:19:10" + }, + "scope": 5104, + "src": "140369:318:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4874, + "nodeType": "Block", + "src": "141159:70:10", + "statements": [ + { + "expression": { + "id": 4872, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4866, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4864, + "src": "141169:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 4868, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "141206:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 4869, + "name": "beacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4859, + "src": "141209:6:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4870, + "name": "args", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4861, + "src": "141217:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 4867, + "name": "deployERC1967IBeaconProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4729, + 4741, + 4875, + 4889 + ], + "referencedDeclaration": 4889, + "src": "141180:25:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$", + "typeString": "function (uint256,address,bytes memory) returns (address)" + } + }, + "id": 4871, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "141180:42:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "141169:53:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4873, + "nodeType": "ExpressionStatement", + "src": "141169:53:10" + } + ] + }, + "documentation": { + "id": 4857, + "nodeType": "StructuredDocumentation", + "src": "140976:52:10", + "text": "@dev Deploys a ERC1967I beacon proxy with `args." + }, + "id": 4875, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployERC1967IBeaconProxy", + "nameLocation": "141042:25:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4862, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4859, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "141076:6:10", + "nodeType": "VariableDeclaration", + "scope": 4875, + "src": "141068:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4858, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "141068:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4861, + "mutability": "mutable", + "name": "args", + "nameLocation": "141097:4:10", + "nodeType": "VariableDeclaration", + "scope": 4875, + "src": "141084:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4860, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "141084:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "141067:35:10" + }, + "returnParameters": { + "id": 4865, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4864, + "mutability": "mutable", + "name": "instance", + "nameLocation": "141145:8:10", + "nodeType": "VariableDeclaration", + "scope": 4875, + "src": "141137:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4863, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "141137:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "141136:18:10" + }, + "scope": 5104, + "src": "141033:196:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4888, + "nodeType": "Block", + "src": "141481:977:10", + "statements": [ + { + "AST": { + "nativeSrc": "141543:909:10", + "nodeType": "YulBlock", + "src": "141543:909:10", + "statements": [ + { + "nativeSrc": "141557:20:10", + "nodeType": "YulVariableDeclaration", + "src": "141557:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "141572:4:10", + "nodeType": "YulLiteral", + "src": "141572:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "141566:5:10", + "nodeType": "YulIdentifier", + "src": "141566:5:10" + }, + "nativeSrc": "141566:11:10", + "nodeType": "YulFunctionCall", + "src": "141566:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "141561:1:10", + "nodeType": "YulTypedName", + "src": "141561:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "141624:20:10", + "nodeType": "YulVariableDeclaration", + "src": "141624:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "141639:4:10", + "nodeType": "YulIdentifier", + "src": "141639:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "141633:5:10", + "nodeType": "YulIdentifier", + "src": "141633:5:10" + }, + "nativeSrc": "141633:11:10", + "nodeType": "YulFunctionCall", + "src": "141633:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "141628:1:10", + "nodeType": "YulTypedName", + "src": "141628:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "141672:3:10", + "nodeType": "YulIdentifier", + "src": "141672:3:10" + }, + "nativeSrc": "141672:5:10", + "nodeType": "YulFunctionCall", + "src": "141672:5:10" + }, + { + "kind": "number", + "nativeSrc": "141679:1:10", + "nodeType": "YulLiteral", + "src": "141679:1:10", + "type": "", + "value": "4" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "141686:4:10", + "nodeType": "YulIdentifier", + "src": "141686:4:10" + }, + { + "kind": "number", + "nativeSrc": "141692:4:10", + "nodeType": "YulLiteral", + "src": "141692:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "141682:3:10", + "nodeType": "YulIdentifier", + "src": "141682:3:10" + }, + "nativeSrc": "141682:15:10", + "nodeType": "YulFunctionCall", + "src": "141682:15:10" + }, + { + "name": "n", + "nativeSrc": "141699:1:10", + "nodeType": "YulIdentifier", + "src": "141699:1:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "141706:1:10", + "nodeType": "YulIdentifier", + "src": "141706:1:10" + }, + { + "kind": "number", + "nativeSrc": "141709:4:10", + "nodeType": "YulLiteral", + "src": "141709:4:10", + "type": "", + "value": "0x90" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "141702:3:10", + "nodeType": "YulIdentifier", + "src": "141702:3:10" + }, + "nativeSrc": "141702:12:10", + "nodeType": "YulFunctionCall", + "src": "141702:12:10" + }, + { + "name": "n", + "nativeSrc": "141716:1:10", + "nodeType": "YulIdentifier", + "src": "141716:1:10" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "141661:10:10", + "nodeType": "YulIdentifier", + "src": "141661:10:10" + }, + "nativeSrc": "141661:57:10", + "nodeType": "YulFunctionCall", + "src": "141661:57:10" + } + ], + "functionName": { + "name": "pop", + "nativeSrc": "141657:3:10", + "nodeType": "YulIdentifier", + "src": "141657:3:10" + }, + "nativeSrc": "141657:62:10", + "nodeType": "YulFunctionCall", + "src": "141657:62:10" + }, + "nativeSrc": "141657:62:10", + "nodeType": "YulExpressionStatement", + "src": "141657:62:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "141743:1:10", + "nodeType": "YulIdentifier", + "src": "141743:1:10" + }, + { + "kind": "number", + "nativeSrc": "141746:4:10", + "nodeType": "YulLiteral", + "src": "141746:4:10", + "type": "", + "value": "0x70" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "141739:3:10", + "nodeType": "YulIdentifier", + "src": "141739:3:10" + }, + "nativeSrc": "141739:12:10", + "nodeType": "YulFunctionCall", + "src": "141739:12:10" + }, + { + "kind": "number", + "nativeSrc": "141753:66:10", + "nodeType": "YulLiteral", + "src": "141753:66:10", + "type": "", + "value": "0x3d50545afa361460525736515af43d600060013e6052573d6001fd5b3d6001f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "141732:6:10", + "nodeType": "YulIdentifier", + "src": "141732:6:10" + }, + "nativeSrc": "141732:88:10", + "nodeType": "YulFunctionCall", + "src": "141732:88:10" + }, + "nativeSrc": "141732:88:10", + "nodeType": "YulExpressionStatement", + "src": "141732:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "141844:1:10", + "nodeType": "YulIdentifier", + "src": "141844:1:10" + }, + { + "kind": "number", + "nativeSrc": "141847:4:10", + "nodeType": "YulLiteral", + "src": "141847:4:10", + "type": "", + "value": "0x50" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "141840:3:10", + "nodeType": "YulIdentifier", + "src": "141840:3:10" + }, + "nativeSrc": "141840:12:10", + "nodeType": "YulFunctionCall", + "src": "141840:12:10" + }, + { + "kind": "number", + "nativeSrc": "141854:66:10", + "nodeType": "YulLiteral", + "src": "141854:66:10", + "type": "", + "value": "0x527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b3513" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "141833:6:10", + "nodeType": "YulIdentifier", + "src": "141833:6:10" + }, + "nativeSrc": "141833:88:10", + "nodeType": "YulFunctionCall", + "src": "141833:88:10" + }, + "nativeSrc": "141833:88:10", + "nodeType": "YulExpressionStatement", + "src": "141833:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "141945:1:10", + "nodeType": "YulIdentifier", + "src": "141945:1:10" + }, + { + "kind": "number", + "nativeSrc": "141948:4:10", + "nodeType": "YulLiteral", + "src": "141948:4:10", + "type": "", + "value": "0x30" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "141941:3:10", + "nodeType": "YulIdentifier", + "src": "141941:3:10" + }, + "nativeSrc": "141941:12:10", + "nodeType": "YulFunctionCall", + "src": "141941:12:10" + }, + { + "kind": "number", + "nativeSrc": "141955:58:10", + "nodeType": "YulLiteral", + "src": "141955:58:10", + "type": "", + "value": "0x60195155f3363d3d373d3d363d602036600436635c60da1b60e01b36" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "141934:6:10", + "nodeType": "YulIdentifier", + "src": "141934:6:10" + }, + "nativeSrc": "141934:80:10", + "nodeType": "YulFunctionCall", + "src": "141934:80:10" + }, + "nativeSrc": "141934:80:10", + "nodeType": "YulExpressionStatement", + "src": "141934:80:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "142038:1:10", + "nodeType": "YulIdentifier", + "src": "142038:1:10" + }, + { + "kind": "number", + "nativeSrc": "142041:4:10", + "nodeType": "YulLiteral", + "src": "142041:4:10", + "type": "", + "value": "0x14" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "142034:3:10", + "nodeType": "YulIdentifier", + "src": "142034:3:10" + }, + "nativeSrc": "142034:12:10", + "nodeType": "YulFunctionCall", + "src": "142034:12:10" + }, + { + "name": "beacon", + "nativeSrc": "142048:6:10", + "nodeType": "YulIdentifier", + "src": "142048:6:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "142027:6:10", + "nodeType": "YulIdentifier", + "src": "142027:6:10" + }, + "nativeSrc": "142027:28:10", + "nodeType": "YulFunctionCall", + "src": "142027:28:10" + }, + "nativeSrc": "142027:28:10", + "nodeType": "YulExpressionStatement", + "src": "142027:28:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "142166:1:10", + "nodeType": "YulIdentifier", + "src": "142166:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "142172:1:10", + "nodeType": "YulIdentifier", + "src": "142172:1:10" + }, + { + "kind": "number", + "nativeSrc": "142175:6:10", + "nodeType": "YulLiteral", + "src": "142175:6:10", + "type": "", + "value": "0xffa8" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "142169:2:10", + "nodeType": "YulIdentifier", + "src": "142169:2:10" + }, + "nativeSrc": "142169:13:10", + "nodeType": "YulFunctionCall", + "src": "142169:13:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "142162:3:10", + "nodeType": "YulIdentifier", + "src": "142162:3:10" + }, + "nativeSrc": "142162:21:10", + "nodeType": "YulFunctionCall", + "src": "142162:21:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "142189:24:10", + "nodeType": "YulLiteral", + "src": "142189:24:10", + "type": "", + "value": "0xfe6100573d8160233d3973" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "142219:2:10", + "nodeType": "YulLiteral", + "src": "142219:2:10", + "type": "", + "value": "56" + }, + { + "name": "n", + "nativeSrc": "142223:1:10", + "nodeType": "YulIdentifier", + "src": "142223:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "142215:3:10", + "nodeType": "YulIdentifier", + "src": "142215:3:10" + }, + "nativeSrc": "142215:10:10", + "nodeType": "YulFunctionCall", + "src": "142215:10:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "142185:3:10", + "nodeType": "YulIdentifier", + "src": "142185:3:10" + }, + "nativeSrc": "142185:41:10", + "nodeType": "YulFunctionCall", + "src": "142185:41:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "142155:6:10", + "nodeType": "YulIdentifier", + "src": "142155:6:10" + }, + "nativeSrc": "142155:72:10", + "nodeType": "YulFunctionCall", + "src": "142155:72:10" + }, + "nativeSrc": "142155:72:10", + "nodeType": "YulExpressionStatement", + "src": "142155:72:10" + }, + { + "nativeSrc": "142240:53:10", + "nodeType": "YulAssignment", + "src": "142240:53:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "142259:5:10", + "nodeType": "YulIdentifier", + "src": "142259:5:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "142270:1:10", + "nodeType": "YulIdentifier", + "src": "142270:1:10" + }, + { + "kind": "number", + "nativeSrc": "142273:4:10", + "nodeType": "YulLiteral", + "src": "142273:4:10", + "type": "", + "value": "0x16" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "142266:3:10", + "nodeType": "YulIdentifier", + "src": "142266:3:10" + }, + "nativeSrc": "142266:12:10", + "nodeType": "YulFunctionCall", + "src": "142266:12:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "142284:1:10", + "nodeType": "YulIdentifier", + "src": "142284:1:10" + }, + { + "kind": "number", + "nativeSrc": "142287:4:10", + "nodeType": "YulLiteral", + "src": "142287:4:10", + "type": "", + "value": "0x7a" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "142280:3:10", + "nodeType": "YulIdentifier", + "src": "142280:3:10" + }, + "nativeSrc": "142280:12:10", + "nodeType": "YulFunctionCall", + "src": "142280:12:10" + } + ], + "functionName": { + "name": "create", + "nativeSrc": "142252:6:10", + "nodeType": "YulIdentifier", + "src": "142252:6:10" + }, + "nativeSrc": "142252:41:10", + "nodeType": "YulFunctionCall", + "src": "142252:41:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "142240:8:10", + "nodeType": "YulIdentifier", + "src": "142240:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "142326:116:10", + "nodeType": "YulBlock", + "src": "142326:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "142351:4:10", + "nodeType": "YulLiteral", + "src": "142351:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "142357:10:10", + "nodeType": "YulLiteral", + "src": "142357:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "142344:6:10", + "nodeType": "YulIdentifier", + "src": "142344:6:10" + }, + "nativeSrc": "142344:24:10", + "nodeType": "YulFunctionCall", + "src": "142344:24:10" + }, + "nativeSrc": "142344:24:10", + "nodeType": "YulExpressionStatement", + "src": "142344:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "142417:4:10", + "nodeType": "YulLiteral", + "src": "142417:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "142423:4:10", + "nodeType": "YulLiteral", + "src": "142423:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "142410:6:10", + "nodeType": "YulIdentifier", + "src": "142410:6:10" + }, + "nativeSrc": "142410:18:10", + "nodeType": "YulFunctionCall", + "src": "142410:18:10" + }, + "nativeSrc": "142410:18:10", + "nodeType": "YulExpressionStatement", + "src": "142410:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "142316:8:10", + "nodeType": "YulIdentifier", + "src": "142316:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "142309:6:10", + "nodeType": "YulIdentifier", + "src": "142309:6:10" + }, + "nativeSrc": "142309:16:10", + "nodeType": "YulFunctionCall", + "src": "142309:16:10" + }, + "nativeSrc": "142306:136:10", + "nodeType": "YulIf", + "src": "142306:136:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4882, + "isOffset": false, + "isSlot": false, + "src": "141639:4:10", + "valueSize": 1 + }, + { + "declaration": 4882, + "isOffset": false, + "isSlot": false, + "src": "141686:4:10", + "valueSize": 1 + }, + { + "declaration": 4880, + "isOffset": false, + "isSlot": false, + "src": "142048:6:10", + "valueSize": 1 + }, + { + "declaration": 4885, + "isOffset": false, + "isSlot": false, + "src": "142240:8:10", + "valueSize": 1 + }, + { + "declaration": 4885, + "isOffset": false, + "isSlot": false, + "src": "142316:8:10", + "valueSize": 1 + }, + { + "declaration": 4878, + "isOffset": false, + "isSlot": false, + "src": "142259:5:10", + "valueSize": 1 + } + ], + "id": 4887, + "nodeType": "InlineAssembly", + "src": "141534:918:10" + } + ] + }, + "documentation": { + "id": 4876, + "nodeType": "StructuredDocumentation", + "src": "141235:100:10", + "text": "@dev Deploys a ERC1967I beacon proxy with `args.\n Deposits `value` ETH during deployment." + }, + "id": 4889, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployERC1967IBeaconProxy", + "nameLocation": "141349:25:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4883, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4878, + "mutability": "mutable", + "name": "value", + "nameLocation": "141383:5:10", + "nodeType": "VariableDeclaration", + "scope": 4889, + "src": "141375:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4877, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "141375:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4880, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "141398:6:10", + "nodeType": "VariableDeclaration", + "scope": 4889, + "src": "141390:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4879, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "141390:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4882, + "mutability": "mutable", + "name": "args", + "nameLocation": "141419:4:10", + "nodeType": "VariableDeclaration", + "scope": 4889, + "src": "141406:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4881, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "141406:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "141374:50:10" + }, + "returnParameters": { + "id": 4886, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4885, + "mutability": "mutable", + "name": "instance", + "nameLocation": "141467:8:10", + "nodeType": "VariableDeclaration", + "scope": 4889, + "src": "141459:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4884, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "141459:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "141458:18:10" + }, + "scope": 5104, + "src": "141340:1118:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4910, + "nodeType": "Block", + "src": "142700:89:10", + "statements": [ + { + "expression": { + "id": 4908, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4901, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4899, + "src": "142710:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 4903, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "142760:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 4904, + "name": "beacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4892, + "src": "142763:6:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4905, + "name": "args", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4894, + "src": "142771:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 4906, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4896, + "src": "142777:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4902, + "name": "deployDeterministicERC1967IBeaconProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4760, + 4774, + 4911, + 4927 + ], + "referencedDeclaration": 4927, + "src": "142721:38:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (uint256,address,bytes memory,bytes32) returns (address)" + } + }, + "id": 4907, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "142721:61:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "142710:72:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4909, + "nodeType": "ExpressionStatement", + "src": "142710:72:10" + } + ] + }, + "documentation": { + "id": 4890, + "nodeType": "StructuredDocumentation", + "src": "142464:78:10", + "text": "@dev Deploys a deterministic ERC1967I beacon proxy with `args` and `salt`." + }, + "id": 4911, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployDeterministicERC1967IBeaconProxy", + "nameLocation": "142556:38:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4897, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4892, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "142603:6:10", + "nodeType": "VariableDeclaration", + "scope": 4911, + "src": "142595:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4891, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "142595:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4894, + "mutability": "mutable", + "name": "args", + "nameLocation": "142624:4:10", + "nodeType": "VariableDeclaration", + "scope": 4911, + "src": "142611:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4893, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "142611:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4896, + "mutability": "mutable", + "name": "salt", + "nameLocation": "142638:4:10", + "nodeType": "VariableDeclaration", + "scope": 4911, + "src": "142630:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4895, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "142630:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "142594:49:10" + }, + "returnParameters": { + "id": 4900, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4899, + "mutability": "mutable", + "name": "instance", + "nameLocation": "142686:8:10", + "nodeType": "VariableDeclaration", + "scope": 4911, + "src": "142678:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4898, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "142678:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "142677:18:10" + }, + "scope": 5104, + "src": "142547:242:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4926, + "nodeType": "Block", + "src": "143112:984:10", + "statements": [ + { + "AST": { + "nativeSrc": "143174:916:10", + "nodeType": "YulBlock", + "src": "143174:916:10", + "statements": [ + { + "nativeSrc": "143188:20:10", + "nodeType": "YulVariableDeclaration", + "src": "143188:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "143203:4:10", + "nodeType": "YulLiteral", + "src": "143203:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "143197:5:10", + "nodeType": "YulIdentifier", + "src": "143197:5:10" + }, + "nativeSrc": "143197:11:10", + "nodeType": "YulFunctionCall", + "src": "143197:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "143192:1:10", + "nodeType": "YulTypedName", + "src": "143192:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "143255:20:10", + "nodeType": "YulVariableDeclaration", + "src": "143255:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "143270:4:10", + "nodeType": "YulIdentifier", + "src": "143270:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "143264:5:10", + "nodeType": "YulIdentifier", + "src": "143264:5:10" + }, + "nativeSrc": "143264:11:10", + "nodeType": "YulFunctionCall", + "src": "143264:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "143259:1:10", + "nodeType": "YulTypedName", + "src": "143259:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "143303:3:10", + "nodeType": "YulIdentifier", + "src": "143303:3:10" + }, + "nativeSrc": "143303:5:10", + "nodeType": "YulFunctionCall", + "src": "143303:5:10" + }, + { + "kind": "number", + "nativeSrc": "143310:1:10", + "nodeType": "YulLiteral", + "src": "143310:1:10", + "type": "", + "value": "4" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "143317:4:10", + "nodeType": "YulIdentifier", + "src": "143317:4:10" + }, + { + "kind": "number", + "nativeSrc": "143323:4:10", + "nodeType": "YulLiteral", + "src": "143323:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "143313:3:10", + "nodeType": "YulIdentifier", + "src": "143313:3:10" + }, + "nativeSrc": "143313:15:10", + "nodeType": "YulFunctionCall", + "src": "143313:15:10" + }, + { + "name": "n", + "nativeSrc": "143330:1:10", + "nodeType": "YulIdentifier", + "src": "143330:1:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "143337:1:10", + "nodeType": "YulIdentifier", + "src": "143337:1:10" + }, + { + "kind": "number", + "nativeSrc": "143340:4:10", + "nodeType": "YulLiteral", + "src": "143340:4:10", + "type": "", + "value": "0x90" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "143333:3:10", + "nodeType": "YulIdentifier", + "src": "143333:3:10" + }, + "nativeSrc": "143333:12:10", + "nodeType": "YulFunctionCall", + "src": "143333:12:10" + }, + { + "name": "n", + "nativeSrc": "143347:1:10", + "nodeType": "YulIdentifier", + "src": "143347:1:10" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "143292:10:10", + "nodeType": "YulIdentifier", + "src": "143292:10:10" + }, + "nativeSrc": "143292:57:10", + "nodeType": "YulFunctionCall", + "src": "143292:57:10" + } + ], + "functionName": { + "name": "pop", + "nativeSrc": "143288:3:10", + "nodeType": "YulIdentifier", + "src": "143288:3:10" + }, + "nativeSrc": "143288:62:10", + "nodeType": "YulFunctionCall", + "src": "143288:62:10" + }, + "nativeSrc": "143288:62:10", + "nodeType": "YulExpressionStatement", + "src": "143288:62:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "143374:1:10", + "nodeType": "YulIdentifier", + "src": "143374:1:10" + }, + { + "kind": "number", + "nativeSrc": "143377:4:10", + "nodeType": "YulLiteral", + "src": "143377:4:10", + "type": "", + "value": "0x70" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "143370:3:10", + "nodeType": "YulIdentifier", + "src": "143370:3:10" + }, + "nativeSrc": "143370:12:10", + "nodeType": "YulFunctionCall", + "src": "143370:12:10" + }, + { + "kind": "number", + "nativeSrc": "143384:66:10", + "nodeType": "YulLiteral", + "src": "143384:66:10", + "type": "", + "value": "0x3d50545afa361460525736515af43d600060013e6052573d6001fd5b3d6001f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "143363:6:10", + "nodeType": "YulIdentifier", + "src": "143363:6:10" + }, + "nativeSrc": "143363:88:10", + "nodeType": "YulFunctionCall", + "src": "143363:88:10" + }, + "nativeSrc": "143363:88:10", + "nodeType": "YulExpressionStatement", + "src": "143363:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "143475:1:10", + "nodeType": "YulIdentifier", + "src": "143475:1:10" + }, + { + "kind": "number", + "nativeSrc": "143478:4:10", + "nodeType": "YulLiteral", + "src": "143478:4:10", + "type": "", + "value": "0x50" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "143471:3:10", + "nodeType": "YulIdentifier", + "src": "143471:3:10" + }, + "nativeSrc": "143471:12:10", + "nodeType": "YulFunctionCall", + "src": "143471:12:10" + }, + { + "kind": "number", + "nativeSrc": "143485:66:10", + "nodeType": "YulLiteral", + "src": "143485:66:10", + "type": "", + "value": "0x527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b3513" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "143464:6:10", + "nodeType": "YulIdentifier", + "src": "143464:6:10" + }, + "nativeSrc": "143464:88:10", + "nodeType": "YulFunctionCall", + "src": "143464:88:10" + }, + "nativeSrc": "143464:88:10", + "nodeType": "YulExpressionStatement", + "src": "143464:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "143576:1:10", + "nodeType": "YulIdentifier", + "src": "143576:1:10" + }, + { + "kind": "number", + "nativeSrc": "143579:4:10", + "nodeType": "YulLiteral", + "src": "143579:4:10", + "type": "", + "value": "0x30" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "143572:3:10", + "nodeType": "YulIdentifier", + "src": "143572:3:10" + }, + "nativeSrc": "143572:12:10", + "nodeType": "YulFunctionCall", + "src": "143572:12:10" + }, + { + "kind": "number", + "nativeSrc": "143586:58:10", + "nodeType": "YulLiteral", + "src": "143586:58:10", + "type": "", + "value": "0x60195155f3363d3d373d3d363d602036600436635c60da1b60e01b36" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "143565:6:10", + "nodeType": "YulIdentifier", + "src": "143565:6:10" + }, + "nativeSrc": "143565:80:10", + "nodeType": "YulFunctionCall", + "src": "143565:80:10" + }, + "nativeSrc": "143565:80:10", + "nodeType": "YulExpressionStatement", + "src": "143565:80:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "143669:1:10", + "nodeType": "YulIdentifier", + "src": "143669:1:10" + }, + { + "kind": "number", + "nativeSrc": "143672:4:10", + "nodeType": "YulLiteral", + "src": "143672:4:10", + "type": "", + "value": "0x14" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "143665:3:10", + "nodeType": "YulIdentifier", + "src": "143665:3:10" + }, + "nativeSrc": "143665:12:10", + "nodeType": "YulFunctionCall", + "src": "143665:12:10" + }, + { + "name": "beacon", + "nativeSrc": "143679:6:10", + "nodeType": "YulIdentifier", + "src": "143679:6:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "143658:6:10", + "nodeType": "YulIdentifier", + "src": "143658:6:10" + }, + "nativeSrc": "143658:28:10", + "nodeType": "YulFunctionCall", + "src": "143658:28:10" + }, + "nativeSrc": "143658:28:10", + "nodeType": "YulExpressionStatement", + "src": "143658:28:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "143797:1:10", + "nodeType": "YulIdentifier", + "src": "143797:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "143803:1:10", + "nodeType": "YulIdentifier", + "src": "143803:1:10" + }, + { + "kind": "number", + "nativeSrc": "143806:6:10", + "nodeType": "YulLiteral", + "src": "143806:6:10", + "type": "", + "value": "0xffa8" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "143800:2:10", + "nodeType": "YulIdentifier", + "src": "143800:2:10" + }, + "nativeSrc": "143800:13:10", + "nodeType": "YulFunctionCall", + "src": "143800:13:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "143793:3:10", + "nodeType": "YulIdentifier", + "src": "143793:3:10" + }, + "nativeSrc": "143793:21:10", + "nodeType": "YulFunctionCall", + "src": "143793:21:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "143820:24:10", + "nodeType": "YulLiteral", + "src": "143820:24:10", + "type": "", + "value": "0xfe6100573d8160233d3973" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "143850:2:10", + "nodeType": "YulLiteral", + "src": "143850:2:10", + "type": "", + "value": "56" + }, + { + "name": "n", + "nativeSrc": "143854:1:10", + "nodeType": "YulIdentifier", + "src": "143854:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "143846:3:10", + "nodeType": "YulIdentifier", + "src": "143846:3:10" + }, + "nativeSrc": "143846:10:10", + "nodeType": "YulFunctionCall", + "src": "143846:10:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "143816:3:10", + "nodeType": "YulIdentifier", + "src": "143816:3:10" + }, + "nativeSrc": "143816:41:10", + "nodeType": "YulFunctionCall", + "src": "143816:41:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "143786:6:10", + "nodeType": "YulIdentifier", + "src": "143786:6:10" + }, + "nativeSrc": "143786:72:10", + "nodeType": "YulFunctionCall", + "src": "143786:72:10" + }, + "nativeSrc": "143786:72:10", + "nodeType": "YulExpressionStatement", + "src": "143786:72:10" + }, + { + "nativeSrc": "143871:60:10", + "nodeType": "YulAssignment", + "src": "143871:60:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "143891:5:10", + "nodeType": "YulIdentifier", + "src": "143891:5:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "143902:1:10", + "nodeType": "YulIdentifier", + "src": "143902:1:10" + }, + { + "kind": "number", + "nativeSrc": "143905:4:10", + "nodeType": "YulLiteral", + "src": "143905:4:10", + "type": "", + "value": "0x16" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "143898:3:10", + "nodeType": "YulIdentifier", + "src": "143898:3:10" + }, + "nativeSrc": "143898:12:10", + "nodeType": "YulFunctionCall", + "src": "143898:12:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "143916:1:10", + "nodeType": "YulIdentifier", + "src": "143916:1:10" + }, + { + "kind": "number", + "nativeSrc": "143919:4:10", + "nodeType": "YulLiteral", + "src": "143919:4:10", + "type": "", + "value": "0x7a" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "143912:3:10", + "nodeType": "YulIdentifier", + "src": "143912:3:10" + }, + "nativeSrc": "143912:12:10", + "nodeType": "YulFunctionCall", + "src": "143912:12:10" + }, + { + "name": "salt", + "nativeSrc": "143926:4:10", + "nodeType": "YulIdentifier", + "src": "143926:4:10" + } + ], + "functionName": { + "name": "create2", + "nativeSrc": "143883:7:10", + "nodeType": "YulIdentifier", + "src": "143883:7:10" + }, + "nativeSrc": "143883:48:10", + "nodeType": "YulFunctionCall", + "src": "143883:48:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "143871:8:10", + "nodeType": "YulIdentifier", + "src": "143871:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "143964:116:10", + "nodeType": "YulBlock", + "src": "143964:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "143989:4:10", + "nodeType": "YulLiteral", + "src": "143989:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "143995:10:10", + "nodeType": "YulLiteral", + "src": "143995:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "143982:6:10", + "nodeType": "YulIdentifier", + "src": "143982:6:10" + }, + "nativeSrc": "143982:24:10", + "nodeType": "YulFunctionCall", + "src": "143982:24:10" + }, + "nativeSrc": "143982:24:10", + "nodeType": "YulExpressionStatement", + "src": "143982:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "144055:4:10", + "nodeType": "YulLiteral", + "src": "144055:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "144061:4:10", + "nodeType": "YulLiteral", + "src": "144061:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "144048:6:10", + "nodeType": "YulIdentifier", + "src": "144048:6:10" + }, + "nativeSrc": "144048:18:10", + "nodeType": "YulFunctionCall", + "src": "144048:18:10" + }, + "nativeSrc": "144048:18:10", + "nodeType": "YulExpressionStatement", + "src": "144048:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "143954:8:10", + "nodeType": "YulIdentifier", + "src": "143954:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "143947:6:10", + "nodeType": "YulIdentifier", + "src": "143947:6:10" + }, + "nativeSrc": "143947:16:10", + "nodeType": "YulFunctionCall", + "src": "143947:16:10" + }, + "nativeSrc": "143944:136:10", + "nodeType": "YulIf", + "src": "143944:136:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4918, + "isOffset": false, + "isSlot": false, + "src": "143270:4:10", + "valueSize": 1 + }, + { + "declaration": 4918, + "isOffset": false, + "isSlot": false, + "src": "143317:4:10", + "valueSize": 1 + }, + { + "declaration": 4916, + "isOffset": false, + "isSlot": false, + "src": "143679:6:10", + "valueSize": 1 + }, + { + "declaration": 4923, + "isOffset": false, + "isSlot": false, + "src": "143871:8:10", + "valueSize": 1 + }, + { + "declaration": 4923, + "isOffset": false, + "isSlot": false, + "src": "143954:8:10", + "valueSize": 1 + }, + { + "declaration": 4920, + "isOffset": false, + "isSlot": false, + "src": "143926:4:10", + "valueSize": 1 + }, + { + "declaration": 4914, + "isOffset": false, + "isSlot": false, + "src": "143891:5:10", + "valueSize": 1 + } + ], + "id": 4925, + "nodeType": "InlineAssembly", + "src": "143165:925:10" + } + ] + }, + "documentation": { + "id": 4912, + "nodeType": "StructuredDocumentation", + "src": "142795:126:10", + "text": "@dev Deploys a deterministic ERC1967I beacon proxy with `args` and `salt`.\n Deposits `value` ETH during deployment." + }, + "id": 4927, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployDeterministicERC1967IBeaconProxy", + "nameLocation": "142935:38:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4921, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4914, + "mutability": "mutable", + "name": "value", + "nameLocation": "142991:5:10", + "nodeType": "VariableDeclaration", + "scope": 4927, + "src": "142983:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4913, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "142983:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4916, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "143014:6:10", + "nodeType": "VariableDeclaration", + "scope": 4927, + "src": "143006:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4915, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "143006:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4918, + "mutability": "mutable", + "name": "args", + "nameLocation": "143043:4:10", + "nodeType": "VariableDeclaration", + "scope": 4927, + "src": "143030:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4917, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "143030:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4920, + "mutability": "mutable", + "name": "salt", + "nameLocation": "143065:4:10", + "nodeType": "VariableDeclaration", + "scope": 4927, + "src": "143057:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4919, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "143057:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "142973:102:10" + }, + "returnParameters": { + "id": 4924, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4923, + "mutability": "mutable", + "name": "instance", + "nameLocation": "143102:8:10", + "nodeType": "VariableDeclaration", + "scope": 4927, + "src": "143094:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4922, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "143094:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "143093:18:10" + }, + "scope": 5104, + "src": "142926:1170:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4948, + "nodeType": "Block", + "src": "144503:85:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "30", + "id": 4942, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "144559:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 4943, + "name": "beacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4930, + "src": "144562:6:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4944, + "name": "args", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4932, + "src": "144570:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 4945, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4934, + "src": "144576:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4941, + "name": "createDeterministicERC1967IBeaconProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4793, + 4809, + 4949, + 4967 + ], + "referencedDeclaration": 4967, + "src": "144520:38:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$_t_bytes32_$returns$_t_bool_$_t_address_$", + "typeString": "function (uint256,address,bytes memory,bytes32) returns (bool,address)" + } + }, + "id": 4946, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "144520:61:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_address_$", + "typeString": "tuple(bool,address)" + } + }, + "functionReturnParameters": 4940, + "id": 4947, + "nodeType": "Return", + "src": "144513:68:10" + } + ] + }, + "documentation": { + "id": 4928, + "nodeType": "StructuredDocumentation", + "src": "144102:221:10", + "text": "@dev Creates a deterministic ERC1967I beacon proxy with `args` and `salt`.\n Note: This method is intended for use in ERC4337 factories,\n which are expected to NOT revert if the proxy is already deployed." + }, + "id": 4949, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createDeterministicERC1967IBeaconProxy", + "nameLocation": "144337:38:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4935, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4930, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "144384:6:10", + "nodeType": "VariableDeclaration", + "scope": 4949, + "src": "144376:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4929, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "144376:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4932, + "mutability": "mutable", + "name": "args", + "nameLocation": "144405:4:10", + "nodeType": "VariableDeclaration", + "scope": 4949, + "src": "144392:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4931, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "144392:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4934, + "mutability": "mutable", + "name": "salt", + "nameLocation": "144419:4:10", + "nodeType": "VariableDeclaration", + "scope": 4949, + "src": "144411:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4933, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "144411:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "144375:49:10" + }, + "returnParameters": { + "id": 4940, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4937, + "mutability": "mutable", + "name": "alreadyDeployed", + "nameLocation": "144464:15:10", + "nodeType": "VariableDeclaration", + "scope": 4949, + "src": "144459:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4936, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "144459:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4939, + "mutability": "mutable", + "name": "instance", + "nameLocation": "144489:8:10", + "nodeType": "VariableDeclaration", + "scope": 4949, + "src": "144481:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4938, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "144481:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "144458:40:10" + }, + "scope": 5104, + "src": "144328:260:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4966, + "nodeType": "Block", + "src": "145076:1828:10", + "statements": [ + { + "AST": { + "nativeSrc": "145138:1760:10", + "nodeType": "YulBlock", + "src": "145138:1760:10", + "statements": [ + { + "nativeSrc": "145152:20:10", + "nodeType": "YulVariableDeclaration", + "src": "145152:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "145167:4:10", + "nodeType": "YulLiteral", + "src": "145167:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "145161:5:10", + "nodeType": "YulIdentifier", + "src": "145161:5:10" + }, + "nativeSrc": "145161:11:10", + "nodeType": "YulFunctionCall", + "src": "145161:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "145156:1:10", + "nodeType": "YulTypedName", + "src": "145156:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "145185:20:10", + "nodeType": "YulVariableDeclaration", + "src": "145185:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "145200:4:10", + "nodeType": "YulIdentifier", + "src": "145200:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "145194:5:10", + "nodeType": "YulIdentifier", + "src": "145194:5:10" + }, + "nativeSrc": "145194:11:10", + "nodeType": "YulFunctionCall", + "src": "145194:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "145189:1:10", + "nodeType": "YulTypedName", + "src": "145189:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "145233:3:10", + "nodeType": "YulIdentifier", + "src": "145233:3:10" + }, + "nativeSrc": "145233:5:10", + "nodeType": "YulFunctionCall", + "src": "145233:5:10" + }, + { + "kind": "number", + "nativeSrc": "145240:1:10", + "nodeType": "YulLiteral", + "src": "145240:1:10", + "type": "", + "value": "4" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "145247:4:10", + "nodeType": "YulIdentifier", + "src": "145247:4:10" + }, + { + "kind": "number", + "nativeSrc": "145253:4:10", + "nodeType": "YulLiteral", + "src": "145253:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "145243:3:10", + "nodeType": "YulIdentifier", + "src": "145243:3:10" + }, + "nativeSrc": "145243:15:10", + "nodeType": "YulFunctionCall", + "src": "145243:15:10" + }, + { + "name": "n", + "nativeSrc": "145260:1:10", + "nodeType": "YulIdentifier", + "src": "145260:1:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "145267:1:10", + "nodeType": "YulIdentifier", + "src": "145267:1:10" + }, + { + "kind": "number", + "nativeSrc": "145270:4:10", + "nodeType": "YulLiteral", + "src": "145270:4:10", + "type": "", + "value": "0x90" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "145263:3:10", + "nodeType": "YulIdentifier", + "src": "145263:3:10" + }, + "nativeSrc": "145263:12:10", + "nodeType": "YulFunctionCall", + "src": "145263:12:10" + }, + { + "name": "n", + "nativeSrc": "145277:1:10", + "nodeType": "YulIdentifier", + "src": "145277:1:10" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "145222:10:10", + "nodeType": "YulIdentifier", + "src": "145222:10:10" + }, + "nativeSrc": "145222:57:10", + "nodeType": "YulFunctionCall", + "src": "145222:57:10" + } + ], + "functionName": { + "name": "pop", + "nativeSrc": "145218:3:10", + "nodeType": "YulIdentifier", + "src": "145218:3:10" + }, + "nativeSrc": "145218:62:10", + "nodeType": "YulFunctionCall", + "src": "145218:62:10" + }, + "nativeSrc": "145218:62:10", + "nodeType": "YulExpressionStatement", + "src": "145218:62:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "145304:1:10", + "nodeType": "YulIdentifier", + "src": "145304:1:10" + }, + { + "kind": "number", + "nativeSrc": "145307:4:10", + "nodeType": "YulLiteral", + "src": "145307:4:10", + "type": "", + "value": "0x70" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "145300:3:10", + "nodeType": "YulIdentifier", + "src": "145300:3:10" + }, + "nativeSrc": "145300:12:10", + "nodeType": "YulFunctionCall", + "src": "145300:12:10" + }, + { + "kind": "number", + "nativeSrc": "145314:66:10", + "nodeType": "YulLiteral", + "src": "145314:66:10", + "type": "", + "value": "0x3d50545afa361460525736515af43d600060013e6052573d6001fd5b3d6001f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "145293:6:10", + "nodeType": "YulIdentifier", + "src": "145293:6:10" + }, + "nativeSrc": "145293:88:10", + "nodeType": "YulFunctionCall", + "src": "145293:88:10" + }, + "nativeSrc": "145293:88:10", + "nodeType": "YulExpressionStatement", + "src": "145293:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "145405:1:10", + "nodeType": "YulIdentifier", + "src": "145405:1:10" + }, + { + "kind": "number", + "nativeSrc": "145408:4:10", + "nodeType": "YulLiteral", + "src": "145408:4:10", + "type": "", + "value": "0x50" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "145401:3:10", + "nodeType": "YulIdentifier", + "src": "145401:3:10" + }, + "nativeSrc": "145401:12:10", + "nodeType": "YulFunctionCall", + "src": "145401:12:10" + }, + { + "kind": "number", + "nativeSrc": "145415:66:10", + "nodeType": "YulLiteral", + "src": "145415:66:10", + "type": "", + "value": "0x527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b3513" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "145394:6:10", + "nodeType": "YulIdentifier", + "src": "145394:6:10" + }, + "nativeSrc": "145394:88:10", + "nodeType": "YulFunctionCall", + "src": "145394:88:10" + }, + "nativeSrc": "145394:88:10", + "nodeType": "YulExpressionStatement", + "src": "145394:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "145506:1:10", + "nodeType": "YulIdentifier", + "src": "145506:1:10" + }, + { + "kind": "number", + "nativeSrc": "145509:4:10", + "nodeType": "YulLiteral", + "src": "145509:4:10", + "type": "", + "value": "0x30" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "145502:3:10", + "nodeType": "YulIdentifier", + "src": "145502:3:10" + }, + "nativeSrc": "145502:12:10", + "nodeType": "YulFunctionCall", + "src": "145502:12:10" + }, + { + "kind": "number", + "nativeSrc": "145516:58:10", + "nodeType": "YulLiteral", + "src": "145516:58:10", + "type": "", + "value": "0x60195155f3363d3d373d3d363d602036600436635c60da1b60e01b36" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "145495:6:10", + "nodeType": "YulIdentifier", + "src": "145495:6:10" + }, + "nativeSrc": "145495:80:10", + "nodeType": "YulFunctionCall", + "src": "145495:80:10" + }, + "nativeSrc": "145495:80:10", + "nodeType": "YulExpressionStatement", + "src": "145495:80:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "145599:1:10", + "nodeType": "YulIdentifier", + "src": "145599:1:10" + }, + { + "kind": "number", + "nativeSrc": "145602:4:10", + "nodeType": "YulLiteral", + "src": "145602:4:10", + "type": "", + "value": "0x14" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "145595:3:10", + "nodeType": "YulIdentifier", + "src": "145595:3:10" + }, + "nativeSrc": "145595:12:10", + "nodeType": "YulFunctionCall", + "src": "145595:12:10" + }, + { + "name": "beacon", + "nativeSrc": "145609:6:10", + "nodeType": "YulIdentifier", + "src": "145609:6:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "145588:6:10", + "nodeType": "YulIdentifier", + "src": "145588:6:10" + }, + "nativeSrc": "145588:28:10", + "nodeType": "YulFunctionCall", + "src": "145588:28:10" + }, + "nativeSrc": "145588:28:10", + "nodeType": "YulExpressionStatement", + "src": "145588:28:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "145727:1:10", + "nodeType": "YulIdentifier", + "src": "145727:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "145733:1:10", + "nodeType": "YulIdentifier", + "src": "145733:1:10" + }, + { + "kind": "number", + "nativeSrc": "145736:6:10", + "nodeType": "YulLiteral", + "src": "145736:6:10", + "type": "", + "value": "0xffa8" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "145730:2:10", + "nodeType": "YulIdentifier", + "src": "145730:2:10" + }, + "nativeSrc": "145730:13:10", + "nodeType": "YulFunctionCall", + "src": "145730:13:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "145723:3:10", + "nodeType": "YulIdentifier", + "src": "145723:3:10" + }, + "nativeSrc": "145723:21:10", + "nodeType": "YulFunctionCall", + "src": "145723:21:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "145750:24:10", + "nodeType": "YulLiteral", + "src": "145750:24:10", + "type": "", + "value": "0xfe6100573d8160233d3973" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "145780:2:10", + "nodeType": "YulLiteral", + "src": "145780:2:10", + "type": "", + "value": "56" + }, + { + "name": "n", + "nativeSrc": "145784:1:10", + "nodeType": "YulIdentifier", + "src": "145784:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "145776:3:10", + "nodeType": "YulIdentifier", + "src": "145776:3:10" + }, + "nativeSrc": "145776:10:10", + "nodeType": "YulFunctionCall", + "src": "145776:10:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "145746:3:10", + "nodeType": "YulIdentifier", + "src": "145746:3:10" + }, + "nativeSrc": "145746:41:10", + "nodeType": "YulFunctionCall", + "src": "145746:41:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "145716:6:10", + "nodeType": "YulIdentifier", + "src": "145716:6:10" + }, + "nativeSrc": "145716:72:10", + "nodeType": "YulFunctionCall", + "src": "145716:72:10" + }, + "nativeSrc": "145716:72:10", + "nodeType": "YulExpressionStatement", + "src": "145716:72:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "145861:4:10", + "nodeType": "YulLiteral", + "src": "145861:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "145867:4:10", + "nodeType": "YulLiteral", + "src": "145867:4:10", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "145853:7:10", + "nodeType": "YulIdentifier", + "src": "145853:7:10" + }, + "nativeSrc": "145853:19:10", + "nodeType": "YulFunctionCall", + "src": "145853:19:10" + }, + "nativeSrc": "145853:19:10", + "nodeType": "YulExpressionStatement", + "src": "145853:19:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "145913:4:10", + "nodeType": "YulLiteral", + "src": "145913:4:10", + "type": "", + "value": "0x35" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "145933:1:10", + "nodeType": "YulIdentifier", + "src": "145933:1:10" + }, + { + "kind": "number", + "nativeSrc": "145936:4:10", + "nodeType": "YulLiteral", + "src": "145936:4:10", + "type": "", + "value": "0x16" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "145929:3:10", + "nodeType": "YulIdentifier", + "src": "145929:3:10" + }, + "nativeSrc": "145929:12:10", + "nodeType": "YulFunctionCall", + "src": "145929:12:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "145947:1:10", + "nodeType": "YulIdentifier", + "src": "145947:1:10" + }, + { + "kind": "number", + "nativeSrc": "145950:4:10", + "nodeType": "YulLiteral", + "src": "145950:4:10", + "type": "", + "value": "0x7a" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "145943:3:10", + "nodeType": "YulIdentifier", + "src": "145943:3:10" + }, + "nativeSrc": "145943:12:10", + "nodeType": "YulFunctionCall", + "src": "145943:12:10" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "145919:9:10", + "nodeType": "YulIdentifier", + "src": "145919:9:10" + }, + "nativeSrc": "145919:37:10", + "nodeType": "YulFunctionCall", + "src": "145919:37:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "145906:6:10", + "nodeType": "YulIdentifier", + "src": "145906:6:10" + }, + "nativeSrc": "145906:51:10", + "nodeType": "YulFunctionCall", + "src": "145906:51:10" + }, + "nativeSrc": "145906:51:10", + "nodeType": "YulExpressionStatement", + "src": "145906:51:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "145977:4:10", + "nodeType": "YulLiteral", + "src": "145977:4:10", + "type": "", + "value": "0x01" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "145987:2:10", + "nodeType": "YulLiteral", + "src": "145987:2:10", + "type": "", + "value": "96" + }, + { + "arguments": [], + "functionName": { + "name": "address", + "nativeSrc": "145991:7:10", + "nodeType": "YulIdentifier", + "src": "145991:7:10" + }, + "nativeSrc": "145991:9:10", + "nodeType": "YulFunctionCall", + "src": "145991:9:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "145983:3:10", + "nodeType": "YulIdentifier", + "src": "145983:3:10" + }, + "nativeSrc": "145983:18:10", + "nodeType": "YulFunctionCall", + "src": "145983:18:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "145970:6:10", + "nodeType": "YulIdentifier", + "src": "145970:6:10" + }, + "nativeSrc": "145970:32:10", + "nodeType": "YulFunctionCall", + "src": "145970:32:10" + }, + "nativeSrc": "145970:32:10", + "nodeType": "YulExpressionStatement", + "src": "145970:32:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "146022:4:10", + "nodeType": "YulLiteral", + "src": "146022:4:10", + "type": "", + "value": "0x15" + }, + { + "name": "salt", + "nativeSrc": "146028:4:10", + "nodeType": "YulIdentifier", + "src": "146028:4:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "146015:6:10", + "nodeType": "YulIdentifier", + "src": "146015:6:10" + }, + "nativeSrc": "146015:18:10", + "nodeType": "YulFunctionCall", + "src": "146015:18:10" + }, + "nativeSrc": "146015:18:10", + "nodeType": "YulExpressionStatement", + "src": "146015:18:10" + }, + { + "nativeSrc": "146046:33:10", + "nodeType": "YulAssignment", + "src": "146046:33:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "146068:4:10", + "nodeType": "YulLiteral", + "src": "146068:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "146074:4:10", + "nodeType": "YulLiteral", + "src": "146074:4:10", + "type": "", + "value": "0x55" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "146058:9:10", + "nodeType": "YulIdentifier", + "src": "146058:9:10" + }, + "nativeSrc": "146058:21:10", + "nodeType": "YulFunctionCall", + "src": "146058:21:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "146046:8:10", + "nodeType": "YulIdentifier", + "src": "146046:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "146104:696:10", + "nodeType": "YulBlock", + "src": "146104:696:10", + "statements": [ + { + "body": { + "nativeSrc": "146155:307:10", + "nodeType": "YulBlock", + "src": "146155:307:10", + "statements": [ + { + "nativeSrc": "146177:60:10", + "nodeType": "YulAssignment", + "src": "146177:60:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "146197:5:10", + "nodeType": "YulIdentifier", + "src": "146197:5:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "146208:1:10", + "nodeType": "YulIdentifier", + "src": "146208:1:10" + }, + { + "kind": "number", + "nativeSrc": "146211:4:10", + "nodeType": "YulLiteral", + "src": "146211:4:10", + "type": "", + "value": "0x16" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "146204:3:10", + "nodeType": "YulIdentifier", + "src": "146204:3:10" + }, + "nativeSrc": "146204:12:10", + "nodeType": "YulFunctionCall", + "src": "146204:12:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "146222:1:10", + "nodeType": "YulIdentifier", + "src": "146222:1:10" + }, + { + "kind": "number", + "nativeSrc": "146225:4:10", + "nodeType": "YulLiteral", + "src": "146225:4:10", + "type": "", + "value": "0x7a" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "146218:3:10", + "nodeType": "YulIdentifier", + "src": "146218:3:10" + }, + "nativeSrc": "146218:12:10", + "nodeType": "YulFunctionCall", + "src": "146218:12:10" + }, + { + "name": "salt", + "nativeSrc": "146232:4:10", + "nodeType": "YulIdentifier", + "src": "146232:4:10" + } + ], + "functionName": { + "name": "create2", + "nativeSrc": "146189:7:10", + "nodeType": "YulIdentifier", + "src": "146189:7:10" + }, + "nativeSrc": "146189:48:10", + "nodeType": "YulFunctionCall", + "src": "146189:48:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "146177:8:10", + "nodeType": "YulIdentifier", + "src": "146177:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "146278:140:10", + "nodeType": "YulBlock", + "src": "146278:140:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "146311:4:10", + "nodeType": "YulLiteral", + "src": "146311:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "146317:10:10", + "nodeType": "YulLiteral", + "src": "146317:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "146304:6:10", + "nodeType": "YulIdentifier", + "src": "146304:6:10" + }, + "nativeSrc": "146304:24:10", + "nodeType": "YulFunctionCall", + "src": "146304:24:10" + }, + "nativeSrc": "146304:24:10", + "nodeType": "YulExpressionStatement", + "src": "146304:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "146385:4:10", + "nodeType": "YulLiteral", + "src": "146385:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "146391:4:10", + "nodeType": "YulLiteral", + "src": "146391:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "146378:6:10", + "nodeType": "YulIdentifier", + "src": "146378:6:10" + }, + "nativeSrc": "146378:18:10", + "nodeType": "YulFunctionCall", + "src": "146378:18:10" + }, + "nativeSrc": "146378:18:10", + "nodeType": "YulExpressionStatement", + "src": "146378:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "146268:8:10", + "nodeType": "YulIdentifier", + "src": "146268:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "146261:6:10", + "nodeType": "YulIdentifier", + "src": "146261:6:10" + }, + "nativeSrc": "146261:16:10", + "nodeType": "YulFunctionCall", + "src": "146261:16:10" + }, + "nativeSrc": "146258:160:10", + "nodeType": "YulIf", + "src": "146258:160:10" + }, + { + "nativeSrc": "146439:5:10", + "nodeType": "YulBreak", + "src": "146439:5:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "146144:8:10", + "nodeType": "YulIdentifier", + "src": "146144:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "146132:11:10", + "nodeType": "YulIdentifier", + "src": "146132:11:10" + }, + "nativeSrc": "146132:21:10", + "nodeType": "YulFunctionCall", + "src": "146132:21:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "146125:6:10", + "nodeType": "YulIdentifier", + "src": "146125:6:10" + }, + "nativeSrc": "146125:29:10", + "nodeType": "YulFunctionCall", + "src": "146125:29:10" + }, + "nativeSrc": "146122:340:10", + "nodeType": "YulIf", + "src": "146122:340:10" + }, + { + "nativeSrc": "146479:20:10", + "nodeType": "YulAssignment", + "src": "146479:20:10", + "value": { + "kind": "number", + "nativeSrc": "146498:1:10", + "nodeType": "YulLiteral", + "src": "146498:1:10", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "alreadyDeployed", + "nativeSrc": "146479:15:10", + "nodeType": "YulIdentifier", + "src": "146479:15:10" + } + ] + }, + { + "body": { + "nativeSrc": "146533:9:10", + "nodeType": "YulBlock", + "src": "146533:9:10", + "statements": [ + { + "nativeSrc": "146535:5:10", + "nodeType": "YulBreak", + "src": "146535:5:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nativeSrc": "146526:5:10", + "nodeType": "YulIdentifier", + "src": "146526:5:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "146519:6:10", + "nodeType": "YulIdentifier", + "src": "146519:6:10" + }, + "nativeSrc": "146519:13:10", + "nodeType": "YulFunctionCall", + "src": "146519:13:10" + }, + "nativeSrc": "146516:26:10", + "nodeType": "YulIf", + "src": "146516:26:10" + }, + { + "body": { + "nativeSrc": "146635:129:10", + "nodeType": "YulBlock", + "src": "146635:129:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "146664:4:10", + "nodeType": "YulLiteral", + "src": "146664:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "146670:10:10", + "nodeType": "YulLiteral", + "src": "146670:10:10", + "type": "", + "value": "0xb12d13eb" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "146657:6:10", + "nodeType": "YulIdentifier", + "src": "146657:6:10" + }, + "nativeSrc": "146657:24:10", + "nodeType": "YulFunctionCall", + "src": "146657:24:10" + }, + "nativeSrc": "146657:24:10", + "nodeType": "YulExpressionStatement", + "src": "146657:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "146735:4:10", + "nodeType": "YulLiteral", + "src": "146735:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "146741:4:10", + "nodeType": "YulLiteral", + "src": "146741:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "146728:6:10", + "nodeType": "YulIdentifier", + "src": "146728:6:10" + }, + "nativeSrc": "146728:18:10", + "nodeType": "YulFunctionCall", + "src": "146728:18:10" + }, + "nativeSrc": "146728:18:10", + "nodeType": "YulExpressionStatement", + "src": "146728:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "146574:3:10", + "nodeType": "YulIdentifier", + "src": "146574:3:10" + }, + "nativeSrc": "146574:5:10", + "nodeType": "YulFunctionCall", + "src": "146574:5:10" + }, + { + "name": "instance", + "nativeSrc": "146581:8:10", + "nodeType": "YulIdentifier", + "src": "146581:8:10" + }, + { + "name": "value", + "nativeSrc": "146591:5:10", + "nodeType": "YulIdentifier", + "src": "146591:5:10" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "146598:8:10", + "nodeType": "YulIdentifier", + "src": "146598:8:10" + }, + "nativeSrc": "146598:10:10", + "nodeType": "YulFunctionCall", + "src": "146598:10:10" + }, + { + "kind": "number", + "nativeSrc": "146610:4:10", + "nodeType": "YulLiteral", + "src": "146610:4:10", + "type": "", + "value": "0x00" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "146616:8:10", + "nodeType": "YulIdentifier", + "src": "146616:8:10" + }, + "nativeSrc": "146616:10:10", + "nodeType": "YulFunctionCall", + "src": "146616:10:10" + }, + { + "kind": "number", + "nativeSrc": "146628:4:10", + "nodeType": "YulLiteral", + "src": "146628:4:10", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "call", + "nativeSrc": "146569:4:10", + "nodeType": "YulIdentifier", + "src": "146569:4:10" + }, + "nativeSrc": "146569:64:10", + "nodeType": "YulFunctionCall", + "src": "146569:64:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "146562:6:10", + "nodeType": "YulIdentifier", + "src": "146562:6:10" + }, + "nativeSrc": "146562:72:10", + "nodeType": "YulFunctionCall", + "src": "146562:72:10" + }, + "nativeSrc": "146559:205:10", + "nodeType": "YulIf", + "src": "146559:205:10" + }, + { + "nativeSrc": "146781:5:10", + "nodeType": "YulBreak", + "src": "146781:5:10" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "146099:1:10", + "nodeType": "YulLiteral", + "src": "146099:1:10", + "type": "", + "value": "1" + }, + "nativeSrc": "146092:708:10", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "146101:2:10", + "nodeType": "YulBlock", + "src": "146101:2:10", + "statements": [] + }, + "pre": { + "nativeSrc": "146096:2:10", + "nodeType": "YulBlock", + "src": "146096:2:10", + "statements": [] + }, + "src": "146092:708:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "146820:4:10", + "nodeType": "YulLiteral", + "src": "146820:4:10", + "type": "", + "value": "0x35" + }, + { + "kind": "number", + "nativeSrc": "146826:1:10", + "nodeType": "YulLiteral", + "src": "146826:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "146813:6:10", + "nodeType": "YulIdentifier", + "src": "146813:6:10" + }, + "nativeSrc": "146813:15:10", + "nodeType": "YulFunctionCall", + "src": "146813:15:10" + }, + "nativeSrc": "146813:15:10", + "nodeType": "YulExpressionStatement", + "src": "146813:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4961, + "isOffset": false, + "isSlot": false, + "src": "146479:15:10", + "valueSize": 1 + }, + { + "declaration": 4956, + "isOffset": false, + "isSlot": false, + "src": "145200:4:10", + "valueSize": 1 + }, + { + "declaration": 4956, + "isOffset": false, + "isSlot": false, + "src": "145247:4:10", + "valueSize": 1 + }, + { + "declaration": 4954, + "isOffset": false, + "isSlot": false, + "src": "145609:6:10", + "valueSize": 1 + }, + { + "declaration": 4963, + "isOffset": false, + "isSlot": false, + "src": "146046:8:10", + "valueSize": 1 + }, + { + "declaration": 4963, + "isOffset": false, + "isSlot": false, + "src": "146144:8:10", + "valueSize": 1 + }, + { + "declaration": 4963, + "isOffset": false, + "isSlot": false, + "src": "146177:8:10", + "valueSize": 1 + }, + { + "declaration": 4963, + "isOffset": false, + "isSlot": false, + "src": "146268:8:10", + "valueSize": 1 + }, + { + "declaration": 4963, + "isOffset": false, + "isSlot": false, + "src": "146581:8:10", + "valueSize": 1 + }, + { + "declaration": 4958, + "isOffset": false, + "isSlot": false, + "src": "146028:4:10", + "valueSize": 1 + }, + { + "declaration": 4958, + "isOffset": false, + "isSlot": false, + "src": "146232:4:10", + "valueSize": 1 + }, + { + "declaration": 4952, + "isOffset": false, + "isSlot": false, + "src": "146197:5:10", + "valueSize": 1 + }, + { + "declaration": 4952, + "isOffset": false, + "isSlot": false, + "src": "146526:5:10", + "valueSize": 1 + }, + { + "declaration": 4952, + "isOffset": false, + "isSlot": false, + "src": "146591:5:10", + "valueSize": 1 + } + ], + "id": 4965, + "nodeType": "InlineAssembly", + "src": "145129:1769:10" + } + ] + }, + "documentation": { + "id": 4950, + "nodeType": "StructuredDocumentation", + "src": "144594:269:10", + "text": "@dev Creates a deterministic ERC1967I beacon proxy with `args` and `salt`.\n Deposits `value` ETH during deployment.\n Note: This method is intended for use in ERC4337 factories,\n which are expected to NOT revert if the proxy is already deployed." + }, + "id": 4967, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createDeterministicERC1967IBeaconProxy", + "nameLocation": "144877:38:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4959, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4952, + "mutability": "mutable", + "name": "value", + "nameLocation": "144933:5:10", + "nodeType": "VariableDeclaration", + "scope": 4967, + "src": "144925:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4951, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "144925:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4954, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "144956:6:10", + "nodeType": "VariableDeclaration", + "scope": 4967, + "src": "144948:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4953, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "144948:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4956, + "mutability": "mutable", + "name": "args", + "nameLocation": "144985:4:10", + "nodeType": "VariableDeclaration", + "scope": 4967, + "src": "144972:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4955, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "144972:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4958, + "mutability": "mutable", + "name": "salt", + "nameLocation": "145007:4:10", + "nodeType": "VariableDeclaration", + "scope": 4967, + "src": "144999:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4957, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "144999:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "144915:102:10" + }, + "returnParameters": { + "id": 4964, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4961, + "mutability": "mutable", + "name": "alreadyDeployed", + "nameLocation": "145041:15:10", + "nodeType": "VariableDeclaration", + "scope": 4967, + "src": "145036:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4960, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "145036:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4963, + "mutability": "mutable", + "name": "instance", + "nameLocation": "145066:8:10", + "nodeType": "VariableDeclaration", + "scope": 4967, + "src": "145058:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4962, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "145058:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "145035:40:10" + }, + "scope": 5104, + "src": "144868:2036:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4978, + "nodeType": "Block", + "src": "147136:1039:10", + "statements": [ + { + "AST": { + "nativeSrc": "147198:971:10", + "nodeType": "YulBlock", + "src": "147198:971:10", + "statements": [ + { + "nativeSrc": "147212:16:10", + "nodeType": "YulAssignment", + "src": "147212:16:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "147223:4:10", + "nodeType": "YulLiteral", + "src": "147223:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "147217:5:10", + "nodeType": "YulIdentifier", + "src": "147217:5:10" + }, + "nativeSrc": "147217:11:10", + "nodeType": "YulFunctionCall", + "src": "147217:11:10" + }, + "variableNames": [ + { + "name": "c", + "nativeSrc": "147212:1:10", + "nodeType": "YulIdentifier", + "src": "147212:1:10" + } + ] + }, + { + "nativeSrc": "147241:20:10", + "nodeType": "YulVariableDeclaration", + "src": "147241:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "147256:4:10", + "nodeType": "YulIdentifier", + "src": "147256:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "147250:5:10", + "nodeType": "YulIdentifier", + "src": "147250:5:10" + }, + "nativeSrc": "147250:11:10", + "nodeType": "YulFunctionCall", + "src": "147250:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "147245:1:10", + "nodeType": "YulTypedName", + "src": "147245:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "147376:14:10", + "nodeType": "YulIdentifier", + "src": "147376:14:10" + }, + "nativeSrc": "147376:16:10", + "nodeType": "YulFunctionCall", + "src": "147376:16:10" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "147394:14:10", + "nodeType": "YulIdentifier", + "src": "147394:14:10" + }, + "nativeSrc": "147394:16:10", + "nodeType": "YulFunctionCall", + "src": "147394:16:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "147415:1:10", + "nodeType": "YulIdentifier", + "src": "147415:1:10" + }, + { + "kind": "number", + "nativeSrc": "147418:6:10", + "nodeType": "YulLiteral", + "src": "147418:6:10", + "type": "", + "value": "0xffa8" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "147412:2:10", + "nodeType": "YulIdentifier", + "src": "147412:2:10" + }, + "nativeSrc": "147412:13:10", + "nodeType": "YulFunctionCall", + "src": "147412:13:10" + } + ], + "functionName": { + "name": "returndatacopy", + "nativeSrc": "147361:14:10", + "nodeType": "YulIdentifier", + "src": "147361:14:10" + }, + "nativeSrc": "147361:65:10", + "nodeType": "YulFunctionCall", + "src": "147361:65:10" + }, + "nativeSrc": "147361:65:10", + "nodeType": "YulExpressionStatement", + "src": "147361:65:10" + }, + { + "body": { + "nativeSrc": "147489:92:10", + "nodeType": "YulBlock", + "src": "147489:92:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "147522:1:10", + "nodeType": "YulIdentifier", + "src": "147522:1:10" + }, + { + "kind": "number", + "nativeSrc": "147525:4:10", + "nodeType": "YulLiteral", + "src": "147525:4:10", + "type": "", + "value": "0x9a" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "147518:3:10", + "nodeType": "YulIdentifier", + "src": "147518:3:10" + }, + "nativeSrc": "147518:12:10", + "nodeType": "YulFunctionCall", + "src": "147518:12:10" + }, + { + "name": "i", + "nativeSrc": "147532:1:10", + "nodeType": "YulIdentifier", + "src": "147532:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "147514:3:10", + "nodeType": "YulIdentifier", + "src": "147514:3:10" + }, + "nativeSrc": "147514:20:10", + "nodeType": "YulFunctionCall", + "src": "147514:20:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "147550:4:10", + "nodeType": "YulIdentifier", + "src": "147550:4:10" + }, + { + "kind": "number", + "nativeSrc": "147556:4:10", + "nodeType": "YulLiteral", + "src": "147556:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "147546:3:10", + "nodeType": "YulIdentifier", + "src": "147546:3:10" + }, + "nativeSrc": "147546:15:10", + "nodeType": "YulFunctionCall", + "src": "147546:15:10" + }, + { + "name": "i", + "nativeSrc": "147563:1:10", + "nodeType": "YulIdentifier", + "src": "147563:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "147542:3:10", + "nodeType": "YulIdentifier", + "src": "147542:3:10" + }, + "nativeSrc": "147542:23:10", + "nodeType": "YulFunctionCall", + "src": "147542:23:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "147536:5:10", + "nodeType": "YulIdentifier", + "src": "147536:5:10" + }, + "nativeSrc": "147536:30:10", + "nodeType": "YulFunctionCall", + "src": "147536:30:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "147507:6:10", + "nodeType": "YulIdentifier", + "src": "147507:6:10" + }, + "nativeSrc": "147507:60:10", + "nodeType": "YulFunctionCall", + "src": "147507:60:10" + }, + "nativeSrc": "147507:60:10", + "nodeType": "YulExpressionStatement", + "src": "147507:60:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "147461:1:10", + "nodeType": "YulIdentifier", + "src": "147461:1:10" + }, + { + "name": "n", + "nativeSrc": "147464:1:10", + "nodeType": "YulIdentifier", + "src": "147464:1:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "147458:2:10", + "nodeType": "YulIdentifier", + "src": "147458:2:10" + }, + "nativeSrc": "147458:8:10", + "nodeType": "YulFunctionCall", + "src": "147458:8:10" + }, + "nativeSrc": "147439:142:10", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "147467:21:10", + "nodeType": "YulBlock", + "src": "147467:21:10", + "statements": [ + { + "nativeSrc": "147469:17:10", + "nodeType": "YulAssignment", + "src": "147469:17:10", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "147478:1:10", + "nodeType": "YulIdentifier", + "src": "147478:1:10" + }, + { + "kind": "number", + "nativeSrc": "147481:4:10", + "nodeType": "YulLiteral", + "src": "147481:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "147474:3:10", + "nodeType": "YulIdentifier", + "src": "147474:3:10" + }, + "nativeSrc": "147474:12:10", + "nodeType": "YulFunctionCall", + "src": "147474:12:10" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "147469:1:10", + "nodeType": "YulIdentifier", + "src": "147469:1:10" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "147443:14:10", + "nodeType": "YulBlock", + "src": "147443:14:10", + "statements": [ + { + "nativeSrc": "147445:10:10", + "nodeType": "YulVariableDeclaration", + "src": "147445:10:10", + "value": { + "kind": "number", + "nativeSrc": "147454:1:10", + "nodeType": "YulLiteral", + "src": "147454:1:10", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "147449:1:10", + "nodeType": "YulTypedName", + "src": "147449:1:10", + "type": "" + } + ] + } + ] + }, + "src": "147439:142:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "147605:1:10", + "nodeType": "YulIdentifier", + "src": "147605:1:10" + }, + { + "kind": "number", + "nativeSrc": "147608:4:10", + "nodeType": "YulLiteral", + "src": "147608:4:10", + "type": "", + "value": "0x7a" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "147601:3:10", + "nodeType": "YulIdentifier", + "src": "147601:3:10" + }, + "nativeSrc": "147601:12:10", + "nodeType": "YulFunctionCall", + "src": "147601:12:10" + }, + { + "kind": "number", + "nativeSrc": "147615:66:10", + "nodeType": "YulLiteral", + "src": "147615:66:10", + "type": "", + "value": "0x3d50545afa361460525736515af43d600060013e6052573d6001fd5b3d6001f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "147594:6:10", + "nodeType": "YulIdentifier", + "src": "147594:6:10" + }, + "nativeSrc": "147594:88:10", + "nodeType": "YulFunctionCall", + "src": "147594:88:10" + }, + "nativeSrc": "147594:88:10", + "nodeType": "YulExpressionStatement", + "src": "147594:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "147706:1:10", + "nodeType": "YulIdentifier", + "src": "147706:1:10" + }, + { + "kind": "number", + "nativeSrc": "147709:4:10", + "nodeType": "YulLiteral", + "src": "147709:4:10", + "type": "", + "value": "0x5a" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "147702:3:10", + "nodeType": "YulIdentifier", + "src": "147702:3:10" + }, + "nativeSrc": "147702:12:10", + "nodeType": "YulFunctionCall", + "src": "147702:12:10" + }, + { + "kind": "number", + "nativeSrc": "147716:66:10", + "nodeType": "YulLiteral", + "src": "147716:66:10", + "type": "", + "value": "0x527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b3513" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "147695:6:10", + "nodeType": "YulIdentifier", + "src": "147695:6:10" + }, + "nativeSrc": "147695:88:10", + "nodeType": "YulFunctionCall", + "src": "147695:88:10" + }, + "nativeSrc": "147695:88:10", + "nodeType": "YulExpressionStatement", + "src": "147695:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "147807:1:10", + "nodeType": "YulIdentifier", + "src": "147807:1:10" + }, + { + "kind": "number", + "nativeSrc": "147810:4:10", + "nodeType": "YulLiteral", + "src": "147810:4:10", + "type": "", + "value": "0x3a" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "147803:3:10", + "nodeType": "YulIdentifier", + "src": "147803:3:10" + }, + "nativeSrc": "147803:12:10", + "nodeType": "YulFunctionCall", + "src": "147803:12:10" + }, + { + "kind": "number", + "nativeSrc": "147817:58:10", + "nodeType": "YulLiteral", + "src": "147817:58:10", + "type": "", + "value": "0x60195155f3363d3d373d3d363d602036600436635c60da1b60e01b36" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "147796:6:10", + "nodeType": "YulIdentifier", + "src": "147796:6:10" + }, + "nativeSrc": "147796:80:10", + "nodeType": "YulFunctionCall", + "src": "147796:80:10" + }, + "nativeSrc": "147796:80:10", + "nodeType": "YulExpressionStatement", + "src": "147796:80:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "147900:1:10", + "nodeType": "YulIdentifier", + "src": "147900:1:10" + }, + { + "kind": "number", + "nativeSrc": "147903:4:10", + "nodeType": "YulLiteral", + "src": "147903:4:10", + "type": "", + "value": "0x1e" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "147896:3:10", + "nodeType": "YulIdentifier", + "src": "147896:3:10" + }, + "nativeSrc": "147896:12:10", + "nodeType": "YulFunctionCall", + "src": "147896:12:10" + }, + { + "name": "beacon", + "nativeSrc": "147910:6:10", + "nodeType": "YulIdentifier", + "src": "147910:6:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "147889:6:10", + "nodeType": "YulIdentifier", + "src": "147889:6:10" + }, + "nativeSrc": "147889:28:10", + "nodeType": "YulFunctionCall", + "src": "147889:28:10" + }, + "nativeSrc": "147889:28:10", + "nodeType": "YulExpressionStatement", + "src": "147889:28:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "147941:1:10", + "nodeType": "YulIdentifier", + "src": "147941:1:10" + }, + { + "kind": "number", + "nativeSrc": "147944:4:10", + "nodeType": "YulLiteral", + "src": "147944:4:10", + "type": "", + "value": "0x0a" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "147937:3:10", + "nodeType": "YulIdentifier", + "src": "147937:3:10" + }, + "nativeSrc": "147937:12:10", + "nodeType": "YulFunctionCall", + "src": "147937:12:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "147955:22:10", + "nodeType": "YulLiteral", + "src": "147955:22:10", + "type": "", + "value": "0x6100573d8160233d3973" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "147983:2:10", + "nodeType": "YulLiteral", + "src": "147983:2:10", + "type": "", + "value": "56" + }, + { + "name": "n", + "nativeSrc": "147987:1:10", + "nodeType": "YulIdentifier", + "src": "147987:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "147979:3:10", + "nodeType": "YulIdentifier", + "src": "147979:3:10" + }, + "nativeSrc": "147979:10:10", + "nodeType": "YulFunctionCall", + "src": "147979:10:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "147951:3:10", + "nodeType": "YulIdentifier", + "src": "147951:3:10" + }, + "nativeSrc": "147951:39:10", + "nodeType": "YulFunctionCall", + "src": "147951:39:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "147930:6:10", + "nodeType": "YulIdentifier", + "src": "147930:6:10" + }, + "nativeSrc": "147930:61:10", + "nodeType": "YulFunctionCall", + "src": "147930:61:10" + }, + "nativeSrc": "147930:61:10", + "nodeType": "YulExpressionStatement", + "src": "147930:61:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "148015:1:10", + "nodeType": "YulIdentifier", + "src": "148015:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "148022:1:10", + "nodeType": "YulIdentifier", + "src": "148022:1:10" + }, + { + "kind": "number", + "nativeSrc": "148025:4:10", + "nodeType": "YulLiteral", + "src": "148025:4:10", + "type": "", + "value": "0x9a" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "148018:3:10", + "nodeType": "YulIdentifier", + "src": "148018:3:10" + }, + "nativeSrc": "148018:12:10", + "nodeType": "YulFunctionCall", + "src": "148018:12:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "148011:3:10", + "nodeType": "YulIdentifier", + "src": "148011:3:10" + }, + "nativeSrc": "148011:20:10", + "nodeType": "YulFunctionCall", + "src": "148011:20:10" + }, + { + "kind": "number", + "nativeSrc": "148033:1:10", + "nodeType": "YulLiteral", + "src": "148033:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "148004:6:10", + "nodeType": "YulIdentifier", + "src": "148004:6:10" + }, + "nativeSrc": "148004:31:10", + "nodeType": "YulFunctionCall", + "src": "148004:31:10" + }, + "nativeSrc": "148004:31:10", + "nodeType": "YulExpressionStatement", + "src": "148004:31:10" + }, + { + "expression": { + "arguments": [ + { + "name": "c", + "nativeSrc": "148055:1:10", + "nodeType": "YulIdentifier", + "src": "148055:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "148062:1:10", + "nodeType": "YulIdentifier", + "src": "148062:1:10" + }, + { + "kind": "number", + "nativeSrc": "148065:4:10", + "nodeType": "YulLiteral", + "src": "148065:4:10", + "type": "", + "value": "0x7a" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "148058:3:10", + "nodeType": "YulIdentifier", + "src": "148058:3:10" + }, + "nativeSrc": "148058:12:10", + "nodeType": "YulFunctionCall", + "src": "148058:12:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "148048:6:10", + "nodeType": "YulIdentifier", + "src": "148048:6:10" + }, + "nativeSrc": "148048:23:10", + "nodeType": "YulFunctionCall", + "src": "148048:23:10" + }, + "nativeSrc": "148048:23:10", + "nodeType": "YulExpressionStatement", + "src": "148048:23:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "148112:4:10", + "nodeType": "YulLiteral", + "src": "148112:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "c", + "nativeSrc": "148122:1:10", + "nodeType": "YulIdentifier", + "src": "148122:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "148129:1:10", + "nodeType": "YulIdentifier", + "src": "148129:1:10" + }, + { + "kind": "number", + "nativeSrc": "148132:4:10", + "nodeType": "YulLiteral", + "src": "148132:4:10", + "type": "", + "value": "0xba" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "148125:3:10", + "nodeType": "YulIdentifier", + "src": "148125:3:10" + }, + "nativeSrc": "148125:12:10", + "nodeType": "YulFunctionCall", + "src": "148125:12:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "148118:3:10", + "nodeType": "YulIdentifier", + "src": "148118:3:10" + }, + "nativeSrc": "148118:20:10", + "nodeType": "YulFunctionCall", + "src": "148118:20:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "148105:6:10", + "nodeType": "YulIdentifier", + "src": "148105:6:10" + }, + "nativeSrc": "148105:34:10", + "nodeType": "YulFunctionCall", + "src": "148105:34:10" + }, + "nativeSrc": "148105:34:10", + "nodeType": "YulExpressionStatement", + "src": "148105:34:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4972, + "isOffset": false, + "isSlot": false, + "src": "147256:4:10", + "valueSize": 1 + }, + { + "declaration": 4972, + "isOffset": false, + "isSlot": false, + "src": "147550:4:10", + "valueSize": 1 + }, + { + "declaration": 4970, + "isOffset": false, + "isSlot": false, + "src": "147910:6:10", + "valueSize": 1 + }, + { + "declaration": 4975, + "isOffset": false, + "isSlot": false, + "src": "147212:1:10", + "valueSize": 1 + }, + { + "declaration": 4975, + "isOffset": false, + "isSlot": false, + "src": "147522:1:10", + "valueSize": 1 + }, + { + "declaration": 4975, + "isOffset": false, + "isSlot": false, + "src": "147605:1:10", + "valueSize": 1 + }, + { + "declaration": 4975, + "isOffset": false, + "isSlot": false, + "src": "147706:1:10", + "valueSize": 1 + }, + { + "declaration": 4975, + "isOffset": false, + "isSlot": false, + "src": "147807:1:10", + "valueSize": 1 + }, + { + "declaration": 4975, + "isOffset": false, + "isSlot": false, + "src": "147900:1:10", + "valueSize": 1 + }, + { + "declaration": 4975, + "isOffset": false, + "isSlot": false, + "src": "147941:1:10", + "valueSize": 1 + }, + { + "declaration": 4975, + "isOffset": false, + "isSlot": false, + "src": "148015:1:10", + "valueSize": 1 + }, + { + "declaration": 4975, + "isOffset": false, + "isSlot": false, + "src": "148055:1:10", + "valueSize": 1 + }, + { + "declaration": 4975, + "isOffset": false, + "isSlot": false, + "src": "148122:1:10", + "valueSize": 1 + } + ], + "id": 4977, + "nodeType": "InlineAssembly", + "src": "147189:980:10" + } + ] + }, + "documentation": { + "id": 4968, + "nodeType": "StructuredDocumentation", + "src": "146910:82:10", + "text": "@dev Returns the initialization code of the ERC1967I beacon proxy with `args`." + }, + "id": 4979, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeERC1967IBeaconProxy", + "nameLocation": "147006:27:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4973, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4970, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "147042:6:10", + "nodeType": "VariableDeclaration", + "scope": 4979, + "src": "147034:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4969, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "147034:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4972, + "mutability": "mutable", + "name": "args", + "nameLocation": "147063:4:10", + "nodeType": "VariableDeclaration", + "scope": 4979, + "src": "147050:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4971, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "147050:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "147033:35:10" + }, + "returnParameters": { + "id": 4976, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4975, + "mutability": "mutable", + "name": "c", + "nameLocation": "147129:1:10", + "nodeType": "VariableDeclaration", + "scope": 4979, + "src": "147116:14:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4974, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "147116:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "147115:16:10" + }, + "scope": 5104, + "src": "146997:1178:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4990, + "nodeType": "Block", + "src": "148414:956:10", + "statements": [ + { + "AST": { + "nativeSrc": "148476:888:10", + "nodeType": "YulBlock", + "src": "148476:888:10", + "statements": [ + { + "nativeSrc": "148490:20:10", + "nodeType": "YulVariableDeclaration", + "src": "148490:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "148505:4:10", + "nodeType": "YulLiteral", + "src": "148505:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "148499:5:10", + "nodeType": "YulIdentifier", + "src": "148499:5:10" + }, + "nativeSrc": "148499:11:10", + "nodeType": "YulFunctionCall", + "src": "148499:11:10" + }, + "variables": [ + { + "name": "c", + "nativeSrc": "148494:1:10", + "nodeType": "YulTypedName", + "src": "148494:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "148557:20:10", + "nodeType": "YulVariableDeclaration", + "src": "148557:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "148572:4:10", + "nodeType": "YulIdentifier", + "src": "148572:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "148566:5:10", + "nodeType": "YulIdentifier", + "src": "148566:5:10" + }, + "nativeSrc": "148566:11:10", + "nodeType": "YulFunctionCall", + "src": "148566:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "148561:1:10", + "nodeType": "YulTypedName", + "src": "148561:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "148692:14:10", + "nodeType": "YulIdentifier", + "src": "148692:14:10" + }, + "nativeSrc": "148692:16:10", + "nodeType": "YulFunctionCall", + "src": "148692:16:10" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "148710:14:10", + "nodeType": "YulIdentifier", + "src": "148710:14:10" + }, + "nativeSrc": "148710:16:10", + "nodeType": "YulFunctionCall", + "src": "148710:16:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "148731:1:10", + "nodeType": "YulIdentifier", + "src": "148731:1:10" + }, + { + "kind": "number", + "nativeSrc": "148734:6:10", + "nodeType": "YulLiteral", + "src": "148734:6:10", + "type": "", + "value": "0xffa8" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "148728:2:10", + "nodeType": "YulIdentifier", + "src": "148728:2:10" + }, + "nativeSrc": "148728:13:10", + "nodeType": "YulFunctionCall", + "src": "148728:13:10" + } + ], + "functionName": { + "name": "returndatacopy", + "nativeSrc": "148677:14:10", + "nodeType": "YulIdentifier", + "src": "148677:14:10" + }, + "nativeSrc": "148677:65:10", + "nodeType": "YulFunctionCall", + "src": "148677:65:10" + }, + "nativeSrc": "148677:65:10", + "nodeType": "YulExpressionStatement", + "src": "148677:65:10" + }, + { + "body": { + "nativeSrc": "148805:92:10", + "nodeType": "YulBlock", + "src": "148805:92:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "148838:1:10", + "nodeType": "YulIdentifier", + "src": "148838:1:10" + }, + { + "kind": "number", + "nativeSrc": "148841:4:10", + "nodeType": "YulLiteral", + "src": "148841:4:10", + "type": "", + "value": "0x90" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "148834:3:10", + "nodeType": "YulIdentifier", + "src": "148834:3:10" + }, + "nativeSrc": "148834:12:10", + "nodeType": "YulFunctionCall", + "src": "148834:12:10" + }, + { + "name": "i", + "nativeSrc": "148848:1:10", + "nodeType": "YulIdentifier", + "src": "148848:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "148830:3:10", + "nodeType": "YulIdentifier", + "src": "148830:3:10" + }, + "nativeSrc": "148830:20:10", + "nodeType": "YulFunctionCall", + "src": "148830:20:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "148866:4:10", + "nodeType": "YulIdentifier", + "src": "148866:4:10" + }, + { + "kind": "number", + "nativeSrc": "148872:4:10", + "nodeType": "YulLiteral", + "src": "148872:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "148862:3:10", + "nodeType": "YulIdentifier", + "src": "148862:3:10" + }, + "nativeSrc": "148862:15:10", + "nodeType": "YulFunctionCall", + "src": "148862:15:10" + }, + { + "name": "i", + "nativeSrc": "148879:1:10", + "nodeType": "YulIdentifier", + "src": "148879:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "148858:3:10", + "nodeType": "YulIdentifier", + "src": "148858:3:10" + }, + "nativeSrc": "148858:23:10", + "nodeType": "YulFunctionCall", + "src": "148858:23:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "148852:5:10", + "nodeType": "YulIdentifier", + "src": "148852:5:10" + }, + "nativeSrc": "148852:30:10", + "nodeType": "YulFunctionCall", + "src": "148852:30:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "148823:6:10", + "nodeType": "YulIdentifier", + "src": "148823:6:10" + }, + "nativeSrc": "148823:60:10", + "nodeType": "YulFunctionCall", + "src": "148823:60:10" + }, + "nativeSrc": "148823:60:10", + "nodeType": "YulExpressionStatement", + "src": "148823:60:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "148777:1:10", + "nodeType": "YulIdentifier", + "src": "148777:1:10" + }, + { + "name": "n", + "nativeSrc": "148780:1:10", + "nodeType": "YulIdentifier", + "src": "148780:1:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "148774:2:10", + "nodeType": "YulIdentifier", + "src": "148774:2:10" + }, + "nativeSrc": "148774:8:10", + "nodeType": "YulFunctionCall", + "src": "148774:8:10" + }, + "nativeSrc": "148755:142:10", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "148783:21:10", + "nodeType": "YulBlock", + "src": "148783:21:10", + "statements": [ + { + "nativeSrc": "148785:17:10", + "nodeType": "YulAssignment", + "src": "148785:17:10", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "148794:1:10", + "nodeType": "YulIdentifier", + "src": "148794:1:10" + }, + { + "kind": "number", + "nativeSrc": "148797:4:10", + "nodeType": "YulLiteral", + "src": "148797:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "148790:3:10", + "nodeType": "YulIdentifier", + "src": "148790:3:10" + }, + "nativeSrc": "148790:12:10", + "nodeType": "YulFunctionCall", + "src": "148790:12:10" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "148785:1:10", + "nodeType": "YulIdentifier", + "src": "148785:1:10" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "148759:14:10", + "nodeType": "YulBlock", + "src": "148759:14:10", + "statements": [ + { + "nativeSrc": "148761:10:10", + "nodeType": "YulVariableDeclaration", + "src": "148761:10:10", + "value": { + "kind": "number", + "nativeSrc": "148770:1:10", + "nodeType": "YulLiteral", + "src": "148770:1:10", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "148765:1:10", + "nodeType": "YulTypedName", + "src": "148765:1:10", + "type": "" + } + ] + } + ] + }, + "src": "148755:142:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "148921:1:10", + "nodeType": "YulIdentifier", + "src": "148921:1:10" + }, + { + "kind": "number", + "nativeSrc": "148924:4:10", + "nodeType": "YulLiteral", + "src": "148924:4:10", + "type": "", + "value": "0x70" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "148917:3:10", + "nodeType": "YulIdentifier", + "src": "148917:3:10" + }, + "nativeSrc": "148917:12:10", + "nodeType": "YulFunctionCall", + "src": "148917:12:10" + }, + { + "kind": "number", + "nativeSrc": "148931:66:10", + "nodeType": "YulLiteral", + "src": "148931:66:10", + "type": "", + "value": "0x3d50545afa361460525736515af43d600060013e6052573d6001fd5b3d6001f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "148910:6:10", + "nodeType": "YulIdentifier", + "src": "148910:6:10" + }, + "nativeSrc": "148910:88:10", + "nodeType": "YulFunctionCall", + "src": "148910:88:10" + }, + "nativeSrc": "148910:88:10", + "nodeType": "YulExpressionStatement", + "src": "148910:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "149022:1:10", + "nodeType": "YulIdentifier", + "src": "149022:1:10" + }, + { + "kind": "number", + "nativeSrc": "149025:4:10", + "nodeType": "YulLiteral", + "src": "149025:4:10", + "type": "", + "value": "0x50" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "149018:3:10", + "nodeType": "YulIdentifier", + "src": "149018:3:10" + }, + "nativeSrc": "149018:12:10", + "nodeType": "YulFunctionCall", + "src": "149018:12:10" + }, + { + "kind": "number", + "nativeSrc": "149032:66:10", + "nodeType": "YulLiteral", + "src": "149032:66:10", + "type": "", + "value": "0x527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b3513" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "149011:6:10", + "nodeType": "YulIdentifier", + "src": "149011:6:10" + }, + "nativeSrc": "149011:88:10", + "nodeType": "YulFunctionCall", + "src": "149011:88:10" + }, + "nativeSrc": "149011:88:10", + "nodeType": "YulExpressionStatement", + "src": "149011:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "149123:1:10", + "nodeType": "YulIdentifier", + "src": "149123:1:10" + }, + { + "kind": "number", + "nativeSrc": "149126:4:10", + "nodeType": "YulLiteral", + "src": "149126:4:10", + "type": "", + "value": "0x30" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "149119:3:10", + "nodeType": "YulIdentifier", + "src": "149119:3:10" + }, + "nativeSrc": "149119:12:10", + "nodeType": "YulFunctionCall", + "src": "149119:12:10" + }, + { + "kind": "number", + "nativeSrc": "149133:58:10", + "nodeType": "YulLiteral", + "src": "149133:58:10", + "type": "", + "value": "0x60195155f3363d3d373d3d363d602036600436635c60da1b60e01b36" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "149112:6:10", + "nodeType": "YulIdentifier", + "src": "149112:6:10" + }, + "nativeSrc": "149112:80:10", + "nodeType": "YulFunctionCall", + "src": "149112:80:10" + }, + "nativeSrc": "149112:80:10", + "nodeType": "YulExpressionStatement", + "src": "149112:80:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "149216:1:10", + "nodeType": "YulIdentifier", + "src": "149216:1:10" + }, + { + "kind": "number", + "nativeSrc": "149219:4:10", + "nodeType": "YulLiteral", + "src": "149219:4:10", + "type": "", + "value": "0x14" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "149212:3:10", + "nodeType": "YulIdentifier", + "src": "149212:3:10" + }, + "nativeSrc": "149212:12:10", + "nodeType": "YulFunctionCall", + "src": "149212:12:10" + }, + { + "name": "beacon", + "nativeSrc": "149226:6:10", + "nodeType": "YulIdentifier", + "src": "149226:6:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "149205:6:10", + "nodeType": "YulIdentifier", + "src": "149205:6:10" + }, + "nativeSrc": "149205:28:10", + "nodeType": "YulFunctionCall", + "src": "149205:28:10" + }, + "nativeSrc": "149205:28:10", + "nodeType": "YulExpressionStatement", + "src": "149205:28:10" + }, + { + "expression": { + "arguments": [ + { + "name": "c", + "nativeSrc": "149253:1:10", + "nodeType": "YulIdentifier", + "src": "149253:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "149260:22:10", + "nodeType": "YulLiteral", + "src": "149260:22:10", + "type": "", + "value": "0x6100573d8160233d3973" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "149288:2:10", + "nodeType": "YulLiteral", + "src": "149288:2:10", + "type": "", + "value": "56" + }, + { + "name": "n", + "nativeSrc": "149292:1:10", + "nodeType": "YulIdentifier", + "src": "149292:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "149284:3:10", + "nodeType": "YulIdentifier", + "src": "149284:3:10" + }, + "nativeSrc": "149284:10:10", + "nodeType": "YulFunctionCall", + "src": "149284:10:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "149256:3:10", + "nodeType": "YulIdentifier", + "src": "149256:3:10" + }, + "nativeSrc": "149256:39:10", + "nodeType": "YulFunctionCall", + "src": "149256:39:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "149246:6:10", + "nodeType": "YulIdentifier", + "src": "149246:6:10" + }, + "nativeSrc": "149246:50:10", + "nodeType": "YulFunctionCall", + "src": "149246:50:10" + }, + "nativeSrc": "149246:50:10", + "nodeType": "YulExpressionStatement", + "src": "149246:50:10" + }, + { + "nativeSrc": "149309:45:10", + "nodeType": "YulAssignment", + "src": "149309:45:10", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "149331:1:10", + "nodeType": "YulIdentifier", + "src": "149331:1:10" + }, + { + "kind": "number", + "nativeSrc": "149334:4:10", + "nodeType": "YulLiteral", + "src": "149334:4:10", + "type": "", + "value": "0x16" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "149327:3:10", + "nodeType": "YulIdentifier", + "src": "149327:3:10" + }, + "nativeSrc": "149327:12:10", + "nodeType": "YulFunctionCall", + "src": "149327:12:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "149345:1:10", + "nodeType": "YulIdentifier", + "src": "149345:1:10" + }, + { + "kind": "number", + "nativeSrc": "149348:4:10", + "nodeType": "YulLiteral", + "src": "149348:4:10", + "type": "", + "value": "0x7a" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "149341:3:10", + "nodeType": "YulIdentifier", + "src": "149341:3:10" + }, + "nativeSrc": "149341:12:10", + "nodeType": "YulFunctionCall", + "src": "149341:12:10" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "149317:9:10", + "nodeType": "YulIdentifier", + "src": "149317:9:10" + }, + "nativeSrc": "149317:37:10", + "nodeType": "YulFunctionCall", + "src": "149317:37:10" + }, + "variableNames": [ + { + "name": "hash", + "nativeSrc": "149309:4:10", + "nodeType": "YulIdentifier", + "src": "149309:4:10" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4984, + "isOffset": false, + "isSlot": false, + "src": "148572:4:10", + "valueSize": 1 + }, + { + "declaration": 4984, + "isOffset": false, + "isSlot": false, + "src": "148866:4:10", + "valueSize": 1 + }, + { + "declaration": 4982, + "isOffset": false, + "isSlot": false, + "src": "149226:6:10", + "valueSize": 1 + }, + { + "declaration": 4987, + "isOffset": false, + "isSlot": false, + "src": "149309:4:10", + "valueSize": 1 + } + ], + "id": 4989, + "nodeType": "InlineAssembly", + "src": "148467:897:10" + } + ] + }, + "documentation": { + "id": 4980, + "nodeType": "StructuredDocumentation", + "src": "148181:87:10", + "text": "@dev Returns the initialization code hash of the ERC1967I beacon proxy with `args`." + }, + "id": 4991, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeHashERC1967IBeaconProxy", + "nameLocation": "148282:31:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4985, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4982, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "148322:6:10", + "nodeType": "VariableDeclaration", + "scope": 4991, + "src": "148314:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4981, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "148314:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4984, + "mutability": "mutable", + "name": "args", + "nameLocation": "148343:4:10", + "nodeType": "VariableDeclaration", + "scope": 4991, + "src": "148330:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4983, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "148330:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "148313:35:10" + }, + "returnParameters": { + "id": 4988, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4987, + "mutability": "mutable", + "name": "hash", + "nameLocation": "148404:4:10", + "nodeType": "VariableDeclaration", + "scope": 4991, + "src": "148396:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4986, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "148396:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "148395:14:10" + }, + "scope": 5104, + "src": "148273:1097:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5020, + "nodeType": "Block", + "src": "149773:148:10", + "statements": [ + { + "assignments": [ + 5006 + ], + "declarations": [ + { + "constant": false, + "id": 5006, + "mutability": "mutable", + "name": "hash", + "nameLocation": "149791:4:10", + "nodeType": "VariableDeclaration", + "scope": 5020, + "src": "149783:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5005, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "149783:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 5011, + "initialValue": { + "arguments": [ + { + "id": 5008, + "name": "beacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4994, + "src": "149830:6:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5009, + "name": "args", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4996, + "src": "149838:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5007, + "name": "initCodeHashERC1967IBeaconProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4829, + 4991 + ], + "referencedDeclaration": 4991, + "src": "149798:31:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (address,bytes memory) pure returns (bytes32)" + } + }, + "id": 5010, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "149798:45:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "149783:60:10" + }, + { + "expression": { + "id": 5018, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5012, + "name": "predicted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5003, + "src": "149853:9:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 5014, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5006, + "src": "149893:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 5015, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4998, + "src": "149899:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 5016, + "name": "deployer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5000, + "src": "149905:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5013, + "name": "predictDeterministicAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3237, + 3510, + 5081 + ], + "referencedDeclaration": 5081, + "src": "149865:27:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_address_$", + "typeString": "function (bytes32,bytes32,address) pure returns (address)" + } + }, + "id": 5017, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "149865:49:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "149853:61:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5019, + "nodeType": "ExpressionStatement", + "src": "149853:61:10" + } + ] + }, + "documentation": { + "id": 4992, + "nodeType": "StructuredDocumentation", + "src": "149376:189:10", + "text": "@dev Returns the address of the ERC1967I beacon proxy, with `args` and salt` by `deployer`.\n Note: The returned result has dirty upper 96 bits. Please clean if used in assembly." + }, + "id": 5021, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "predictDeterministicAddressERC1967IBeaconProxy", + "nameLocation": "149579:46:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5001, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4994, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "149643:6:10", + "nodeType": "VariableDeclaration", + "scope": 5021, + "src": "149635:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4993, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "149635:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4996, + "mutability": "mutable", + "name": "args", + "nameLocation": "149672:4:10", + "nodeType": "VariableDeclaration", + "scope": 5021, + "src": "149659:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4995, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "149659:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4998, + "mutability": "mutable", + "name": "salt", + "nameLocation": "149694:4:10", + "nodeType": "VariableDeclaration", + "scope": 5021, + "src": "149686:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4997, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "149686:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5000, + "mutability": "mutable", + "name": "deployer", + "nameLocation": "149716:8:10", + "nodeType": "VariableDeclaration", + "scope": 5021, + "src": "149708:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4999, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "149708:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "149625:105:10" + }, + "returnParameters": { + "id": 5004, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5003, + "mutability": "mutable", + "name": "predicted", + "nameLocation": "149762:9:10", + "nodeType": "VariableDeclaration", + "scope": 5021, + "src": "149754:17:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5002, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "149754:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "149753:19:10" + }, + "scope": 5104, + "src": "149570:351:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5030, + "nodeType": "Block", + "src": "150137:371:10", + "statements": [ + { + "AST": { + "nativeSrc": "150199:303:10", + "nodeType": "YulBlock", + "src": "150199:303:10", + "statements": [ + { + "nativeSrc": "150213:19:10", + "nodeType": "YulAssignment", + "src": "150213:19:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "150227:4:10", + "nodeType": "YulLiteral", + "src": "150227:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "150221:5:10", + "nodeType": "YulIdentifier", + "src": "150221:5:10" + }, + "nativeSrc": "150221:11:10", + "nodeType": "YulFunctionCall", + "src": "150221:11:10" + }, + "variableNames": [ + { + "name": "args", + "nativeSrc": "150213:4:10", + "nodeType": "YulIdentifier", + "src": "150213:4:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "args", + "nativeSrc": "150252:4:10", + "nodeType": "YulIdentifier", + "src": "150252:4:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "150262:12:10", + "nodeType": "YulLiteral", + "src": "150262:12:10", + "type": "", + "value": "0xffffffffff" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "150292:8:10", + "nodeType": "YulIdentifier", + "src": "150292:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "150280:11:10", + "nodeType": "YulIdentifier", + "src": "150280:11:10" + }, + "nativeSrc": "150280:21:10", + "nodeType": "YulFunctionCall", + "src": "150280:21:10" + }, + { + "kind": "number", + "nativeSrc": "150303:4:10", + "nodeType": "YulLiteral", + "src": "150303:4:10", + "type": "", + "value": "0x57" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "150276:3:10", + "nodeType": "YulIdentifier", + "src": "150276:3:10" + }, + "nativeSrc": "150276:32:10", + "nodeType": "YulFunctionCall", + "src": "150276:32:10" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "150258:3:10", + "nodeType": "YulIdentifier", + "src": "150258:3:10" + }, + "nativeSrc": "150258:51:10", + "nodeType": "YulFunctionCall", + "src": "150258:51:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "150245:6:10", + "nodeType": "YulIdentifier", + "src": "150245:6:10" + }, + "nativeSrc": "150245:65:10", + "nodeType": "YulFunctionCall", + "src": "150245:65:10" + }, + "nativeSrc": "150245:65:10", + "nodeType": "YulExpressionStatement", + "src": "150245:65:10" + }, + { + "expression": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "150356:8:10", + "nodeType": "YulIdentifier", + "src": "150356:8:10" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "150370:4:10", + "nodeType": "YulIdentifier", + "src": "150370:4:10" + }, + { + "kind": "number", + "nativeSrc": "150376:4:10", + "nodeType": "YulLiteral", + "src": "150376:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "150366:3:10", + "nodeType": "YulIdentifier", + "src": "150366:3:10" + }, + "nativeSrc": "150366:15:10", + "nodeType": "YulFunctionCall", + "src": "150366:15:10" + }, + { + "kind": "number", + "nativeSrc": "150383:4:10", + "nodeType": "YulLiteral", + "src": "150383:4:10", + "type": "", + "value": "0x57" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "150399:4:10", + "nodeType": "YulIdentifier", + "src": "150399:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "150393:5:10", + "nodeType": "YulIdentifier", + "src": "150393:5:10" + }, + "nativeSrc": "150393:11:10", + "nodeType": "YulFunctionCall", + "src": "150393:11:10" + }, + { + "kind": "number", + "nativeSrc": "150406:4:10", + "nodeType": "YulLiteral", + "src": "150406:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "150389:3:10", + "nodeType": "YulIdentifier", + "src": "150389:3:10" + }, + "nativeSrc": "150389:22:10", + "nodeType": "YulFunctionCall", + "src": "150389:22:10" + } + ], + "functionName": { + "name": "extcodecopy", + "nativeSrc": "150344:11:10", + "nodeType": "YulIdentifier", + "src": "150344:11:10" + }, + "nativeSrc": "150344:68:10", + "nodeType": "YulFunctionCall", + "src": "150344:68:10" + }, + "nativeSrc": "150344:68:10", + "nodeType": "YulExpressionStatement", + "src": "150344:68:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "150432:4:10", + "nodeType": "YulLiteral", + "src": "150432:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "150448:4:10", + "nodeType": "YulIdentifier", + "src": "150448:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "150442:5:10", + "nodeType": "YulIdentifier", + "src": "150442:5:10" + }, + "nativeSrc": "150442:11:10", + "nodeType": "YulFunctionCall", + "src": "150442:11:10" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "150459:4:10", + "nodeType": "YulIdentifier", + "src": "150459:4:10" + }, + { + "kind": "number", + "nativeSrc": "150465:4:10", + "nodeType": "YulLiteral", + "src": "150465:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "150455:3:10", + "nodeType": "YulIdentifier", + "src": "150455:3:10" + }, + "nativeSrc": "150455:15:10", + "nodeType": "YulFunctionCall", + "src": "150455:15:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "150438:3:10", + "nodeType": "YulIdentifier", + "src": "150438:3:10" + }, + "nativeSrc": "150438:33:10", + "nodeType": "YulFunctionCall", + "src": "150438:33:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "150425:6:10", + "nodeType": "YulIdentifier", + "src": "150425:6:10" + }, + "nativeSrc": "150425:47:10", + "nodeType": "YulFunctionCall", + "src": "150425:47:10" + }, + "nativeSrc": "150425:47:10", + "nodeType": "YulExpressionStatement", + "src": "150425:47:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5027, + "isOffset": false, + "isSlot": false, + "src": "150213:4:10", + "valueSize": 1 + }, + { + "declaration": 5027, + "isOffset": false, + "isSlot": false, + "src": "150252:4:10", + "valueSize": 1 + }, + { + "declaration": 5027, + "isOffset": false, + "isSlot": false, + "src": "150370:4:10", + "valueSize": 1 + }, + { + "declaration": 5027, + "isOffset": false, + "isSlot": false, + "src": "150399:4:10", + "valueSize": 1 + }, + { + "declaration": 5027, + "isOffset": false, + "isSlot": false, + "src": "150448:4:10", + "valueSize": 1 + }, + { + "declaration": 5027, + "isOffset": false, + "isSlot": false, + "src": "150459:4:10", + "valueSize": 1 + }, + { + "declaration": 5024, + "isOffset": false, + "isSlot": false, + "src": "150292:8:10", + "valueSize": 1 + }, + { + "declaration": 5024, + "isOffset": false, + "isSlot": false, + "src": "150356:8:10", + "valueSize": 1 + } + ], + "id": 5029, + "nodeType": "InlineAssembly", + "src": "150190:312:10" + } + ] + }, + "documentation": { + "id": 5022, + "nodeType": "StructuredDocumentation", + "src": "149927:82:10", + "text": "@dev Equivalent to `argsOnERC1967IBeaconProxy(instance, start, 2 ** 256 - 1)`." + }, + "id": 5031, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "argsOnERC1967IBeaconProxy", + "nameLocation": "150023:25:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5025, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5024, + "mutability": "mutable", + "name": "instance", + "nameLocation": "150057:8:10", + "nodeType": "VariableDeclaration", + "scope": 5031, + "src": "150049:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5023, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "150049:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "150048:18:10" + }, + "returnParameters": { + "id": 5028, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5027, + "mutability": "mutable", + "name": "args", + "nameLocation": "150127:4:10", + "nodeType": "VariableDeclaration", + "scope": 5031, + "src": "150114:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5026, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "150114:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "150113:19:10" + }, + "scope": 5104, + "src": "150014:494:10", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5042, + "nodeType": "Block", + "src": "150739:485:10", + "statements": [ + { + "AST": { + "nativeSrc": "150801:417:10", + "nodeType": "YulBlock", + "src": "150801:417:10", + "statements": [ + { + "nativeSrc": "150815:19:10", + "nodeType": "YulAssignment", + "src": "150815:19:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "150829:4:10", + "nodeType": "YulLiteral", + "src": "150829:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "150823:5:10", + "nodeType": "YulIdentifier", + "src": "150823:5:10" + }, + "nativeSrc": "150823:11:10", + "nodeType": "YulFunctionCall", + "src": "150823:11:10" + }, + "variableNames": [ + { + "name": "args", + "nativeSrc": "150815:4:10", + "nodeType": "YulIdentifier", + "src": "150815:4:10" + } + ] + }, + { + "nativeSrc": "150847:60:10", + "nodeType": "YulVariableDeclaration", + "src": "150847:60:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "150860:12:10", + "nodeType": "YulLiteral", + "src": "150860:12:10", + "type": "", + "value": "0xffffffffff" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "150890:8:10", + "nodeType": "YulIdentifier", + "src": "150890:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "150878:11:10", + "nodeType": "YulIdentifier", + "src": "150878:11:10" + }, + "nativeSrc": "150878:21:10", + "nodeType": "YulFunctionCall", + "src": "150878:21:10" + }, + { + "kind": "number", + "nativeSrc": "150901:4:10", + "nodeType": "YulLiteral", + "src": "150901:4:10", + "type": "", + "value": "0x57" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "150874:3:10", + "nodeType": "YulIdentifier", + "src": "150874:3:10" + }, + "nativeSrc": "150874:32:10", + "nodeType": "YulFunctionCall", + "src": "150874:32:10" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "150856:3:10", + "nodeType": "YulIdentifier", + "src": "150856:3:10" + }, + "nativeSrc": "150856:51:10", + "nodeType": "YulFunctionCall", + "src": "150856:51:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "150851:1:10", + "nodeType": "YulTypedName", + "src": "150851:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "150920:56:10", + "nodeType": "YulVariableDeclaration", + "src": "150920:56:10", + "value": { + "arguments": [ + { + "name": "n", + "nativeSrc": "150933:1:10", + "nodeType": "YulIdentifier", + "src": "150933:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "150940:8:10", + "nodeType": "YulLiteral", + "src": "150940:8:10", + "type": "", + "value": "0xffffff" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "start", + "nativeSrc": "150957:5:10", + "nodeType": "YulIdentifier", + "src": "150957:5:10" + }, + { + "name": "n", + "nativeSrc": "150964:1:10", + "nodeType": "YulIdentifier", + "src": "150964:1:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "150954:2:10", + "nodeType": "YulIdentifier", + "src": "150954:2:10" + }, + "nativeSrc": "150954:12:10", + "nodeType": "YulFunctionCall", + "src": "150954:12:10" + }, + { + "name": "start", + "nativeSrc": "150968:5:10", + "nodeType": "YulIdentifier", + "src": "150968:5:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "150950:3:10", + "nodeType": "YulIdentifier", + "src": "150950:3:10" + }, + "nativeSrc": "150950:24:10", + "nodeType": "YulFunctionCall", + "src": "150950:24:10" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "150936:3:10", + "nodeType": "YulIdentifier", + "src": "150936:3:10" + }, + "nativeSrc": "150936:39:10", + "nodeType": "YulFunctionCall", + "src": "150936:39:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "150929:3:10", + "nodeType": "YulIdentifier", + "src": "150929:3:10" + }, + "nativeSrc": "150929:47:10", + "nodeType": "YulFunctionCall", + "src": "150929:47:10" + }, + "variables": [ + { + "name": "l", + "nativeSrc": "150924:1:10", + "nodeType": "YulTypedName", + "src": "150924:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "151001:8:10", + "nodeType": "YulIdentifier", + "src": "151001:8:10" + }, + { + "name": "args", + "nativeSrc": "151011:4:10", + "nodeType": "YulIdentifier", + "src": "151011:4:10" + }, + { + "arguments": [ + { + "name": "start", + "nativeSrc": "151021:5:10", + "nodeType": "YulIdentifier", + "src": "151021:5:10" + }, + { + "kind": "number", + "nativeSrc": "151028:4:10", + "nodeType": "YulLiteral", + "src": "151028:4:10", + "type": "", + "value": "0x37" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "151017:3:10", + "nodeType": "YulIdentifier", + "src": "151017:3:10" + }, + "nativeSrc": "151017:16:10", + "nodeType": "YulFunctionCall", + "src": "151017:16:10" + }, + { + "arguments": [ + { + "name": "l", + "nativeSrc": "151039:1:10", + "nodeType": "YulIdentifier", + "src": "151039:1:10" + }, + { + "kind": "number", + "nativeSrc": "151042:4:10", + "nodeType": "YulLiteral", + "src": "151042:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "151035:3:10", + "nodeType": "YulIdentifier", + "src": "151035:3:10" + }, + "nativeSrc": "151035:12:10", + "nodeType": "YulFunctionCall", + "src": "151035:12:10" + } + ], + "functionName": { + "name": "extcodecopy", + "nativeSrc": "150989:11:10", + "nodeType": "YulIdentifier", + "src": "150989:11:10" + }, + "nativeSrc": "150989:59:10", + "nodeType": "YulFunctionCall", + "src": "150989:59:10" + }, + "nativeSrc": "150989:59:10", + "nodeType": "YulExpressionStatement", + "src": "150989:59:10" + }, + { + "expression": { + "arguments": [ + { + "name": "args", + "nativeSrc": "151068:4:10", + "nodeType": "YulIdentifier", + "src": "151068:4:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "n", + "nativeSrc": "151082:1:10", + "nodeType": "YulIdentifier", + "src": "151082:1:10" + }, + { + "name": "start", + "nativeSrc": "151085:5:10", + "nodeType": "YulIdentifier", + "src": "151085:5:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "151078:3:10", + "nodeType": "YulIdentifier", + "src": "151078:3:10" + }, + "nativeSrc": "151078:13:10", + "nodeType": "YulFunctionCall", + "src": "151078:13:10" + }, + { + "arguments": [ + { + "name": "start", + "nativeSrc": "151096:5:10", + "nodeType": "YulIdentifier", + "src": "151096:5:10" + }, + { + "name": "n", + "nativeSrc": "151103:1:10", + "nodeType": "YulIdentifier", + "src": "151103:1:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "151093:2:10", + "nodeType": "YulIdentifier", + "src": "151093:2:10" + }, + "nativeSrc": "151093:12:10", + "nodeType": "YulFunctionCall", + "src": "151093:12:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "151074:3:10", + "nodeType": "YulIdentifier", + "src": "151074:3:10" + }, + "nativeSrc": "151074:32:10", + "nodeType": "YulFunctionCall", + "src": "151074:32:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "151061:6:10", + "nodeType": "YulIdentifier", + "src": "151061:6:10" + }, + "nativeSrc": "151061:46:10", + "nodeType": "YulFunctionCall", + "src": "151061:46:10" + }, + "nativeSrc": "151061:46:10", + "nodeType": "YulExpressionStatement", + "src": "151061:46:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "151148:4:10", + "nodeType": "YulLiteral", + "src": "151148:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "151158:4:10", + "nodeType": "YulIdentifier", + "src": "151158:4:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "151168:4:10", + "nodeType": "YulLiteral", + "src": "151168:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "151180:4:10", + "nodeType": "YulIdentifier", + "src": "151180:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "151174:5:10", + "nodeType": "YulIdentifier", + "src": "151174:5:10" + }, + "nativeSrc": "151174:11:10", + "nodeType": "YulFunctionCall", + "src": "151174:11:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "151164:3:10", + "nodeType": "YulIdentifier", + "src": "151164:3:10" + }, + "nativeSrc": "151164:22:10", + "nodeType": "YulFunctionCall", + "src": "151164:22:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "151154:3:10", + "nodeType": "YulIdentifier", + "src": "151154:3:10" + }, + "nativeSrc": "151154:33:10", + "nodeType": "YulFunctionCall", + "src": "151154:33:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "151141:6:10", + "nodeType": "YulIdentifier", + "src": "151141:6:10" + }, + "nativeSrc": "151141:47:10", + "nodeType": "YulFunctionCall", + "src": "151141:47:10" + }, + "nativeSrc": "151141:47:10", + "nodeType": "YulExpressionStatement", + "src": "151141:47:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5039, + "isOffset": false, + "isSlot": false, + "src": "150815:4:10", + "valueSize": 1 + }, + { + "declaration": 5039, + "isOffset": false, + "isSlot": false, + "src": "151011:4:10", + "valueSize": 1 + }, + { + "declaration": 5039, + "isOffset": false, + "isSlot": false, + "src": "151068:4:10", + "valueSize": 1 + }, + { + "declaration": 5039, + "isOffset": false, + "isSlot": false, + "src": "151158:4:10", + "valueSize": 1 + }, + { + "declaration": 5039, + "isOffset": false, + "isSlot": false, + "src": "151180:4:10", + "valueSize": 1 + }, + { + "declaration": 5034, + "isOffset": false, + "isSlot": false, + "src": "150890:8:10", + "valueSize": 1 + }, + { + "declaration": 5034, + "isOffset": false, + "isSlot": false, + "src": "151001:8:10", + "valueSize": 1 + }, + { + "declaration": 5036, + "isOffset": false, + "isSlot": false, + "src": "150957:5:10", + "valueSize": 1 + }, + { + "declaration": 5036, + "isOffset": false, + "isSlot": false, + "src": "150968:5:10", + "valueSize": 1 + }, + { + "declaration": 5036, + "isOffset": false, + "isSlot": false, + "src": "151021:5:10", + "valueSize": 1 + }, + { + "declaration": 5036, + "isOffset": false, + "isSlot": false, + "src": "151085:5:10", + "valueSize": 1 + }, + { + "declaration": 5036, + "isOffset": false, + "isSlot": false, + "src": "151096:5:10", + "valueSize": 1 + } + ], + "id": 5041, + "nodeType": "InlineAssembly", + "src": "150792:426:10" + } + ] + }, + "documentation": { + "id": 5032, + "nodeType": "StructuredDocumentation", + "src": "150514:82:10", + "text": "@dev Equivalent to `argsOnERC1967IBeaconProxy(instance, start, 2 ** 256 - 1)`." + }, + "id": 5043, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "argsOnERC1967IBeaconProxy", + "nameLocation": "150610:25:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5037, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5034, + "mutability": "mutable", + "name": "instance", + "nameLocation": "150644:8:10", + "nodeType": "VariableDeclaration", + "scope": 5043, + "src": "150636:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5033, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "150636:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5036, + "mutability": "mutable", + "name": "start", + "nameLocation": "150662:5:10", + "nodeType": "VariableDeclaration", + "scope": 5043, + "src": "150654:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5035, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "150654:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "150635:33:10" + }, + "returnParameters": { + "id": 5040, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5039, + "mutability": "mutable", + "name": "args", + "nameLocation": "150729:4:10", + "nodeType": "VariableDeclaration", + "scope": 5043, + "src": "150716:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5038, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "150716:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "150715:19:10" + }, + "scope": 5104, + "src": "150601:623:10", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5056, + "nodeType": "Block", + "src": "151761:785:10", + "statements": [ + { + "AST": { + "nativeSrc": "151823:717:10", + "nodeType": "YulBlock", + "src": "151823:717:10", + "statements": [ + { + "nativeSrc": "151837:19:10", + "nodeType": "YulAssignment", + "src": "151837:19:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "151851:4:10", + "nodeType": "YulLiteral", + "src": "151851:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "151845:5:10", + "nodeType": "YulIdentifier", + "src": "151845:5:10" + }, + "nativeSrc": "151845:11:10", + "nodeType": "YulFunctionCall", + "src": "151845:11:10" + }, + "variableNames": [ + { + "name": "args", + "nativeSrc": "151837:4:10", + "nodeType": "YulIdentifier", + "src": "151837:4:10" + } + ] + }, + { + "body": { + "nativeSrc": "151896:17:10", + "nodeType": "YulBlock", + "src": "151896:17:10", + "statements": [ + { + "nativeSrc": "151898:13:10", + "nodeType": "YulAssignment", + "src": "151898:13:10", + "value": { + "kind": "number", + "nativeSrc": "151905:6:10", + "nodeType": "YulLiteral", + "src": "151905:6:10", + "type": "", + "value": "0xffff" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "151898:3:10", + "nodeType": "YulIdentifier", + "src": "151898:3:10" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "end", + "nativeSrc": "151882:3:10", + "nodeType": "YulIdentifier", + "src": "151882:3:10" + }, + { + "kind": "number", + "nativeSrc": "151887:6:10", + "nodeType": "YulLiteral", + "src": "151887:6:10", + "type": "", + "value": "0xffff" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "151879:2:10", + "nodeType": "YulIdentifier", + "src": "151879:2:10" + }, + "nativeSrc": "151879:15:10", + "nodeType": "YulFunctionCall", + "src": "151879:15:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "151872:6:10", + "nodeType": "YulIdentifier", + "src": "151872:6:10" + }, + "nativeSrc": "151872:23:10", + "nodeType": "YulFunctionCall", + "src": "151872:23:10" + }, + "nativeSrc": "151869:44:10", + "nodeType": "YulIf", + "src": "151869:44:10" + }, + { + "nativeSrc": "151926:45:10", + "nodeType": "YulVariableDeclaration", + "src": "151926:45:10", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "end", + "nativeSrc": "151943:3:10", + "nodeType": "YulIdentifier", + "src": "151943:3:10" + }, + { + "name": "start", + "nativeSrc": "151948:5:10", + "nodeType": "YulIdentifier", + "src": "151948:5:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "151939:3:10", + "nodeType": "YulIdentifier", + "src": "151939:3:10" + }, + "nativeSrc": "151939:15:10", + "nodeType": "YulFunctionCall", + "src": "151939:15:10" + }, + { + "arguments": [ + { + "name": "start", + "nativeSrc": "151959:5:10", + "nodeType": "YulIdentifier", + "src": "151959:5:10" + }, + { + "name": "end", + "nativeSrc": "151966:3:10", + "nodeType": "YulIdentifier", + "src": "151966:3:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "151956:2:10", + "nodeType": "YulIdentifier", + "src": "151956:2:10" + }, + "nativeSrc": "151956:14:10", + "nodeType": "YulFunctionCall", + "src": "151956:14:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "151935:3:10", + "nodeType": "YulIdentifier", + "src": "151935:3:10" + }, + "nativeSrc": "151935:36:10", + "nodeType": "YulFunctionCall", + "src": "151935:36:10" + }, + "variables": [ + { + "name": "d", + "nativeSrc": "151930:1:10", + "nodeType": "YulTypedName", + "src": "151930:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "151996:8:10", + "nodeType": "YulIdentifier", + "src": "151996:8:10" + }, + { + "name": "args", + "nativeSrc": "152006:4:10", + "nodeType": "YulIdentifier", + "src": "152006:4:10" + }, + { + "arguments": [ + { + "name": "start", + "nativeSrc": "152016:5:10", + "nodeType": "YulIdentifier", + "src": "152016:5:10" + }, + { + "kind": "number", + "nativeSrc": "152023:4:10", + "nodeType": "YulLiteral", + "src": "152023:4:10", + "type": "", + "value": "0x37" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "152012:3:10", + "nodeType": "YulIdentifier", + "src": "152012:3:10" + }, + "nativeSrc": "152012:16:10", + "nodeType": "YulFunctionCall", + "src": "152012:16:10" + }, + { + "arguments": [ + { + "name": "d", + "nativeSrc": "152034:1:10", + "nodeType": "YulIdentifier", + "src": "152034:1:10" + }, + { + "kind": "number", + "nativeSrc": "152037:4:10", + "nodeType": "YulLiteral", + "src": "152037:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "152030:3:10", + "nodeType": "YulIdentifier", + "src": "152030:3:10" + }, + "nativeSrc": "152030:12:10", + "nodeType": "YulFunctionCall", + "src": "152030:12:10" + } + ], + "functionName": { + "name": "extcodecopy", + "nativeSrc": "151984:11:10", + "nodeType": "YulIdentifier", + "src": "151984:11:10" + }, + "nativeSrc": "151984:59:10", + "nodeType": "YulFunctionCall", + "src": "151984:59:10" + }, + "nativeSrc": "151984:59:10", + "nodeType": "YulExpressionStatement", + "src": "151984:59:10" + }, + { + "body": { + "nativeSrc": "152098:229:10", + "nodeType": "YulBlock", + "src": "152098:229:10", + "statements": [ + { + "nativeSrc": "152116:41:10", + "nodeType": "YulVariableDeclaration", + "src": "152116:41:10", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "152141:8:10", + "nodeType": "YulIdentifier", + "src": "152141:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "152129:11:10", + "nodeType": "YulIdentifier", + "src": "152129:11:10" + }, + "nativeSrc": "152129:21:10", + "nodeType": "YulFunctionCall", + "src": "152129:21:10" + }, + { + "kind": "number", + "nativeSrc": "152152:4:10", + "nodeType": "YulLiteral", + "src": "152152:4:10", + "type": "", + "value": "0x57" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "152125:3:10", + "nodeType": "YulIdentifier", + "src": "152125:3:10" + }, + "nativeSrc": "152125:32:10", + "nodeType": "YulFunctionCall", + "src": "152125:32:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "152120:1:10", + "nodeType": "YulTypedName", + "src": "152120:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "152189:14:10", + "nodeType": "YulIdentifier", + "src": "152189:14:10" + }, + "nativeSrc": "152189:16:10", + "nodeType": "YulFunctionCall", + "src": "152189:16:10" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "152207:14:10", + "nodeType": "YulIdentifier", + "src": "152207:14:10" + }, + "nativeSrc": "152207:16:10", + "nodeType": "YulFunctionCall", + "src": "152207:16:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "152229:2:10", + "nodeType": "YulLiteral", + "src": "152229:2:10", + "type": "", + "value": "40" + }, + { + "name": "n", + "nativeSrc": "152233:1:10", + "nodeType": "YulIdentifier", + "src": "152233:1:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "152225:3:10", + "nodeType": "YulIdentifier", + "src": "152225:3:10" + }, + "nativeSrc": "152225:10:10", + "nodeType": "YulFunctionCall", + "src": "152225:10:10" + } + ], + "functionName": { + "name": "returndatacopy", + "nativeSrc": "152174:14:10", + "nodeType": "YulIdentifier", + "src": "152174:14:10" + }, + "nativeSrc": "152174:62:10", + "nodeType": "YulFunctionCall", + "src": "152174:62:10" + }, + "nativeSrc": "152174:62:10", + "nodeType": "YulExpressionStatement", + "src": "152174:62:10" + }, + { + "nativeSrc": "152253:60:10", + "nodeType": "YulAssignment", + "src": "152253:60:10", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "n", + "nativeSrc": "152265:1:10", + "nodeType": "YulIdentifier", + "src": "152265:1:10" + }, + { + "name": "start", + "nativeSrc": "152268:5:10", + "nodeType": "YulIdentifier", + "src": "152268:5:10" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "152262:2:10", + "nodeType": "YulIdentifier", + "src": "152262:2:10" + }, + "nativeSrc": "152262:12:10", + "nodeType": "YulFunctionCall", + "src": "152262:12:10" + }, + { + "arguments": [ + { + "name": "d", + "nativeSrc": "152280:1:10", + "nodeType": "YulIdentifier", + "src": "152280:1:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "end", + "nativeSrc": "152290:3:10", + "nodeType": "YulIdentifier", + "src": "152290:3:10" + }, + { + "name": "n", + "nativeSrc": "152295:1:10", + "nodeType": "YulIdentifier", + "src": "152295:1:10" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "152287:2:10", + "nodeType": "YulIdentifier", + "src": "152287:2:10" + }, + "nativeSrc": "152287:10:10", + "nodeType": "YulFunctionCall", + "src": "152287:10:10" + }, + { + "arguments": [ + { + "name": "end", + "nativeSrc": "152303:3:10", + "nodeType": "YulIdentifier", + "src": "152303:3:10" + }, + { + "name": "n", + "nativeSrc": "152308:1:10", + "nodeType": "YulIdentifier", + "src": "152308:1:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "152299:3:10", + "nodeType": "YulIdentifier", + "src": "152299:3:10" + }, + "nativeSrc": "152299:11:10", + "nodeType": "YulFunctionCall", + "src": "152299:11:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "152283:3:10", + "nodeType": "YulIdentifier", + "src": "152283:3:10" + }, + "nativeSrc": "152283:28:10", + "nodeType": "YulFunctionCall", + "src": "152283:28:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "152276:3:10", + "nodeType": "YulIdentifier", + "src": "152276:3:10" + }, + "nativeSrc": "152276:36:10", + "nodeType": "YulFunctionCall", + "src": "152276:36:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "152258:3:10", + "nodeType": "YulIdentifier", + "src": "152258:3:10" + }, + "nativeSrc": "152258:55:10", + "nodeType": "YulFunctionCall", + "src": "152258:55:10" + }, + "variableNames": [ + { + "name": "d", + "nativeSrc": "152253:1:10", + "nodeType": "YulIdentifier", + "src": "152253:1:10" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "152070:4:10", + "nodeType": "YulLiteral", + "src": "152070:4:10", + "type": "", + "value": "0xff" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "152086:4:10", + "nodeType": "YulIdentifier", + "src": "152086:4:10" + }, + { + "name": "d", + "nativeSrc": "152092:1:10", + "nodeType": "YulIdentifier", + "src": "152092:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "152082:3:10", + "nodeType": "YulIdentifier", + "src": "152082:3:10" + }, + "nativeSrc": "152082:12:10", + "nodeType": "YulFunctionCall", + "src": "152082:12:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "152076:5:10", + "nodeType": "YulIdentifier", + "src": "152076:5:10" + }, + "nativeSrc": "152076:19:10", + "nodeType": "YulFunctionCall", + "src": "152076:19:10" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "152066:3:10", + "nodeType": "YulIdentifier", + "src": "152066:3:10" + }, + "nativeSrc": "152066:30:10", + "nodeType": "YulFunctionCall", + "src": "152066:30:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "152059:6:10", + "nodeType": "YulIdentifier", + "src": "152059:6:10" + }, + "nativeSrc": "152059:38:10", + "nodeType": "YulFunctionCall", + "src": "152059:38:10" + }, + "nativeSrc": "152056:271:10", + "nodeType": "YulIf", + "src": "152056:271:10" + }, + { + "expression": { + "arguments": [ + { + "name": "args", + "nativeSrc": "152347:4:10", + "nodeType": "YulIdentifier", + "src": "152347:4:10" + }, + { + "name": "d", + "nativeSrc": "152353:1:10", + "nodeType": "YulIdentifier", + "src": "152353:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "152340:6:10", + "nodeType": "YulIdentifier", + "src": "152340:6:10" + }, + "nativeSrc": "152340:15:10", + "nodeType": "YulFunctionCall", + "src": "152340:15:10" + }, + "nativeSrc": "152340:15:10", + "nodeType": "YulExpressionStatement", + "src": "152340:15:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "152404:4:10", + "nodeType": "YulIdentifier", + "src": "152404:4:10" + }, + { + "kind": "number", + "nativeSrc": "152410:4:10", + "nodeType": "YulLiteral", + "src": "152410:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "152400:3:10", + "nodeType": "YulIdentifier", + "src": "152400:3:10" + }, + "nativeSrc": "152400:15:10", + "nodeType": "YulFunctionCall", + "src": "152400:15:10" + }, + { + "name": "d", + "nativeSrc": "152417:1:10", + "nodeType": "YulIdentifier", + "src": "152417:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "152396:3:10", + "nodeType": "YulIdentifier", + "src": "152396:3:10" + }, + "nativeSrc": "152396:23:10", + "nodeType": "YulFunctionCall", + "src": "152396:23:10" + }, + { + "kind": "number", + "nativeSrc": "152421:1:10", + "nodeType": "YulLiteral", + "src": "152421:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "152389:6:10", + "nodeType": "YulIdentifier", + "src": "152389:6:10" + }, + "nativeSrc": "152389:34:10", + "nodeType": "YulFunctionCall", + "src": "152389:34:10" + }, + "nativeSrc": "152389:34:10", + "nodeType": "YulExpressionStatement", + "src": "152389:34:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "152480:4:10", + "nodeType": "YulLiteral", + "src": "152480:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "152494:4:10", + "nodeType": "YulIdentifier", + "src": "152494:4:10" + }, + { + "kind": "number", + "nativeSrc": "152500:4:10", + "nodeType": "YulLiteral", + "src": "152500:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "152490:3:10", + "nodeType": "YulIdentifier", + "src": "152490:3:10" + }, + "nativeSrc": "152490:15:10", + "nodeType": "YulFunctionCall", + "src": "152490:15:10" + }, + { + "name": "d", + "nativeSrc": "152507:1:10", + "nodeType": "YulIdentifier", + "src": "152507:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "152486:3:10", + "nodeType": "YulIdentifier", + "src": "152486:3:10" + }, + "nativeSrc": "152486:23:10", + "nodeType": "YulFunctionCall", + "src": "152486:23:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "152473:6:10", + "nodeType": "YulIdentifier", + "src": "152473:6:10" + }, + "nativeSrc": "152473:37:10", + "nodeType": "YulFunctionCall", + "src": "152473:37:10" + }, + "nativeSrc": "152473:37:10", + "nodeType": "YulExpressionStatement", + "src": "152473:37:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5053, + "isOffset": false, + "isSlot": false, + "src": "151837:4:10", + "valueSize": 1 + }, + { + "declaration": 5053, + "isOffset": false, + "isSlot": false, + "src": "152006:4:10", + "valueSize": 1 + }, + { + "declaration": 5053, + "isOffset": false, + "isSlot": false, + "src": "152086:4:10", + "valueSize": 1 + }, + { + "declaration": 5053, + "isOffset": false, + "isSlot": false, + "src": "152347:4:10", + "valueSize": 1 + }, + { + "declaration": 5053, + "isOffset": false, + "isSlot": false, + "src": "152404:4:10", + "valueSize": 1 + }, + { + "declaration": 5053, + "isOffset": false, + "isSlot": false, + "src": "152494:4:10", + "valueSize": 1 + }, + { + "declaration": 5050, + "isOffset": false, + "isSlot": false, + "src": "151882:3:10", + "valueSize": 1 + }, + { + "declaration": 5050, + "isOffset": false, + "isSlot": false, + "src": "151898:3:10", + "valueSize": 1 + }, + { + "declaration": 5050, + "isOffset": false, + "isSlot": false, + "src": "151943:3:10", + "valueSize": 1 + }, + { + "declaration": 5050, + "isOffset": false, + "isSlot": false, + "src": "151966:3:10", + "valueSize": 1 + }, + { + "declaration": 5050, + "isOffset": false, + "isSlot": false, + "src": "152290:3:10", + "valueSize": 1 + }, + { + "declaration": 5050, + "isOffset": false, + "isSlot": false, + "src": "152303:3:10", + "valueSize": 1 + }, + { + "declaration": 5046, + "isOffset": false, + "isSlot": false, + "src": "151996:8:10", + "valueSize": 1 + }, + { + "declaration": 5046, + "isOffset": false, + "isSlot": false, + "src": "152141:8:10", + "valueSize": 1 + }, + { + "declaration": 5048, + "isOffset": false, + "isSlot": false, + "src": "151948:5:10", + "valueSize": 1 + }, + { + "declaration": 5048, + "isOffset": false, + "isSlot": false, + "src": "151959:5:10", + "valueSize": 1 + }, + { + "declaration": 5048, + "isOffset": false, + "isSlot": false, + "src": "152016:5:10", + "valueSize": 1 + }, + { + "declaration": 5048, + "isOffset": false, + "isSlot": false, + "src": "152268:5:10", + "valueSize": 1 + } + ], + "id": 5055, + "nodeType": "InlineAssembly", + "src": "151814:726:10" + } + ] + }, + "documentation": { + "id": 5044, + "nodeType": "StructuredDocumentation", + "src": "151230:375:10", + "text": "@dev Returns a slice of the immutable arguments on `instance` from `start` to `end`.\n `start` and `end` will be clamped to the range `[0, args.length]`.\n The `instance` MUST be deployed via the ERC1967I beacon proxy with immutable args functions.\n Otherwise, the behavior is undefined.\n Out-of-gas reverts if `instance` does not have any code." + }, + "id": 5057, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "argsOnERC1967IBeaconProxy", + "nameLocation": "151619:25:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5051, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5046, + "mutability": "mutable", + "name": "instance", + "nameLocation": "151653:8:10", + "nodeType": "VariableDeclaration", + "scope": 5057, + "src": "151645:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5045, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "151645:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5048, + "mutability": "mutable", + "name": "start", + "nameLocation": "151671:5:10", + "nodeType": "VariableDeclaration", + "scope": 5057, + "src": "151663:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5047, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "151663:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5050, + "mutability": "mutable", + "name": "end", + "nameLocation": "151686:3:10", + "nodeType": "VariableDeclaration", + "scope": 5057, + "src": "151678:11:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5049, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "151678:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "151644:46:10" + }, + "returnParameters": { + "id": 5054, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5053, + "mutability": "mutable", + "name": "args", + "nameLocation": "151751:4:10", + "nodeType": "VariableDeclaration", + "scope": 5057, + "src": "151738:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5052, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "151738:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "151737:19:10" + }, + "scope": 5104, + "src": "151610:936:10", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5066, + "nodeType": "Block", + "src": "153004:1700:10", + "statements": [ + { + "AST": { + "nativeSrc": "153066:1632:10", + "nodeType": "YulBlock", + "src": "153066:1632:10", + "statements": [ + { + "body": { + "nativeSrc": "153133:1429:10", + "nodeType": "YulBlock", + "src": "153133:1429:10", + "statements": [ + { + "body": { + "nativeSrc": "153166:470:10", + "nodeType": "YulBlock", + "src": "153166:470:10", + "statements": [ + { + "body": { + "nativeSrc": "153438:180:10", + "nodeType": "YulBlock", + "src": "153438:180:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "153479:3:10", + "nodeType": "YulIdentifier", + "src": "153479:3:10" + }, + "nativeSrc": "153479:5:10", + "nodeType": "YulFunctionCall", + "src": "153479:5:10" + }, + { + "name": "instance", + "nativeSrc": "153486:8:10", + "nodeType": "YulIdentifier", + "src": "153486:8:10" + }, + { + "kind": "number", + "nativeSrc": "153496:4:10", + "nodeType": "YulLiteral", + "src": "153496:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "153502:4:10", + "nodeType": "YulLiteral", + "src": "153502:4:10", + "type": "", + "value": "0x01" + }, + { + "kind": "number", + "nativeSrc": "153508:4:10", + "nodeType": "YulLiteral", + "src": "153508:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "153514:4:10", + "nodeType": "YulLiteral", + "src": "153514:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "153468:10:10", + "nodeType": "YulIdentifier", + "src": "153468:10:10" + }, + "nativeSrc": "153468:51:10", + "nodeType": "YulFunctionCall", + "src": "153468:51:10" + } + ], + "functionName": { + "name": "pop", + "nativeSrc": "153464:3:10", + "nodeType": "YulIdentifier", + "src": "153464:3:10" + }, + "nativeSrc": "153464:56:10", + "nodeType": "YulFunctionCall", + "src": "153464:56:10" + }, + "nativeSrc": "153464:56:10", + "nodeType": "YulExpressionStatement", + "src": "153464:56:10" + }, + { + "nativeSrc": "153545:21:10", + "nodeType": "YulAssignment", + "src": "153545:21:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "153561:4:10", + "nodeType": "YulLiteral", + "src": "153561:4:10", + "type": "", + "value": "0x0c" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "153555:5:10", + "nodeType": "YulIdentifier", + "src": "153555:5:10" + }, + "nativeSrc": "153555:11:10", + "nodeType": "YulFunctionCall", + "src": "153555:11:10" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "153545:6:10", + "nodeType": "YulIdentifier", + "src": "153545:6:10" + } + ] + }, + { + "nativeSrc": "153591:5:10", + "nodeType": "YulBreak", + "src": "153591:5:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "153299:4:10", + "nodeType": "YulLiteral", + "src": "153299:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "153305:4:10", + "nodeType": "YulLiteral", + "src": "153305:4:10", + "type": "", + "value": "0x52" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "153289:9:10", + "nodeType": "YulIdentifier", + "src": "153289:9:10" + }, + "nativeSrc": "153289:21:10", + "nodeType": "YulFunctionCall", + "src": "153289:21:10" + }, + { + "name": "ERC1967I_CODE_HASH", + "nativeSrc": "153312:18:10", + "nodeType": "YulIdentifier", + "src": "153312:18:10" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "153286:2:10", + "nodeType": "YulIdentifier", + "src": "153286:2:10" + }, + "nativeSrc": "153286:45:10", + "nodeType": "YulFunctionCall", + "src": "153286:45:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "153370:4:10", + "nodeType": "YulLiteral", + "src": "153370:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "153376:4:10", + "nodeType": "YulLiteral", + "src": "153376:4:10", + "type": "", + "value": "0x57" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "153360:9:10", + "nodeType": "YulIdentifier", + "src": "153360:9:10" + }, + "nativeSrc": "153360:21:10", + "nodeType": "YulFunctionCall", + "src": "153360:21:10" + }, + { + "name": "ERC1967I_BEACON_PROXY_CODE_HASH", + "nativeSrc": "153383:31:10", + "nodeType": "YulIdentifier", + "src": "153383:31:10" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "153357:2:10", + "nodeType": "YulIdentifier", + "src": "153357:2:10" + }, + "nativeSrc": "153357:58:10", + "nodeType": "YulFunctionCall", + "src": "153357:58:10" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "153258:2:10", + "nodeType": "YulIdentifier", + "src": "153258:2:10" + }, + "nativeSrc": "153258:179:10", + "nodeType": "YulFunctionCall", + "src": "153258:179:10" + }, + "nativeSrc": "153255:363:10", + "nodeType": "YulIf", + "src": "153255:363:10" + } + ] + }, + "condition": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "153160:4:10", + "nodeType": "YulLiteral", + "src": "153160:4:10", + "type": "", + "value": "0x2d" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "153154:5:10", + "nodeType": "YulIdentifier", + "src": "153154:5:10" + }, + "nativeSrc": "153154:11:10", + "nodeType": "YulFunctionCall", + "src": "153154:11:10" + }, + "nativeSrc": "153151:485:10", + "nodeType": "YulIf", + "src": "153151:485:10" + }, + { + "nativeSrc": "153694:21:10", + "nodeType": "YulAssignment", + "src": "153694:21:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "153710:4:10", + "nodeType": "YulLiteral", + "src": "153710:4:10", + "type": "", + "value": "0x0b" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "153704:5:10", + "nodeType": "YulIdentifier", + "src": "153704:5:10" + }, + "nativeSrc": "153704:11:10", + "nodeType": "YulFunctionCall", + "src": "153704:11:10" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "153694:6:10", + "nodeType": "YulIdentifier", + "src": "153694:6:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "153741:4:10", + "nodeType": "YulLiteral", + "src": "153741:4:10", + "type": "", + "value": "0x0b" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "153747:8:10", + "nodeType": "YulIdentifier", + "src": "153747:8:10" + }, + "nativeSrc": "153747:10:10", + "nodeType": "YulFunctionCall", + "src": "153747:10:10" + }, + { + "kind": "number", + "nativeSrc": "153759:4:10", + "nodeType": "YulLiteral", + "src": "153759:4:10", + "type": "", + "value": "0x14" + } + ], + "functionName": { + "name": "codecopy", + "nativeSrc": "153732:8:10", + "nodeType": "YulIdentifier", + "src": "153732:8:10" + }, + "nativeSrc": "153732:32:10", + "nodeType": "YulFunctionCall", + "src": "153732:32:10" + }, + "nativeSrc": "153732:32:10", + "nodeType": "YulExpressionStatement", + "src": "153732:32:10" + }, + { + "body": { + "nativeSrc": "153877:9:10", + "nodeType": "YulBlock", + "src": "153877:9:10", + "statements": [ + { + "nativeSrc": "153879:5:10", + "nodeType": "YulBreak", + "src": "153879:5:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "153846:4:10", + "nodeType": "YulLiteral", + "src": "153846:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "153852:4:10", + "nodeType": "YulLiteral", + "src": "153852:4:10", + "type": "", + "value": "0x2c" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "153836:9:10", + "nodeType": "YulIdentifier", + "src": "153836:9:10" + }, + "nativeSrc": "153836:21:10", + "nodeType": "YulFunctionCall", + "src": "153836:21:10" + }, + { + "name": "CLONE_CODE_HASH", + "nativeSrc": "153859:15:10", + "nodeType": "YulIdentifier", + "src": "153859:15:10" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "153832:3:10", + "nodeType": "YulIdentifier", + "src": "153832:3:10" + }, + "nativeSrc": "153832:43:10", + "nodeType": "YulFunctionCall", + "src": "153832:43:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "153825:6:10", + "nodeType": "YulIdentifier", + "src": "153825:6:10" + }, + "nativeSrc": "153825:51:10", + "nodeType": "YulFunctionCall", + "src": "153825:51:10" + }, + "nativeSrc": "153822:64:10", + "nodeType": "YulIf", + "src": "153822:64:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "153910:4:10", + "nodeType": "YulLiteral", + "src": "153910:4:10", + "type": "", + "value": "0x0b" + }, + { + "name": "result", + "nativeSrc": "153916:6:10", + "nodeType": "YulIdentifier", + "src": "153916:6:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "153903:6:10", + "nodeType": "YulIdentifier", + "src": "153903:6:10" + }, + "nativeSrc": "153903:20:10", + "nodeType": "YulFunctionCall", + "src": "153903:20:10" + }, + "nativeSrc": "153903:20:10", + "nodeType": "YulExpressionStatement", + "src": "153903:20:10" + }, + { + "nativeSrc": "154007:21:10", + "nodeType": "YulAssignment", + "src": "154007:21:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "154023:4:10", + "nodeType": "YulLiteral", + "src": "154023:4:10", + "type": "", + "value": "0x0a" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "154017:5:10", + "nodeType": "YulIdentifier", + "src": "154017:5:10" + }, + "nativeSrc": "154017:11:10", + "nodeType": "YulFunctionCall", + "src": "154017:11:10" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "154007:6:10", + "nodeType": "YulIdentifier", + "src": "154007:6:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "154054:4:10", + "nodeType": "YulLiteral", + "src": "154054:4:10", + "type": "", + "value": "0x0a" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "154060:8:10", + "nodeType": "YulIdentifier", + "src": "154060:8:10" + }, + "nativeSrc": "154060:10:10", + "nodeType": "YulFunctionCall", + "src": "154060:10:10" + }, + { + "kind": "number", + "nativeSrc": "154072:4:10", + "nodeType": "YulLiteral", + "src": "154072:4:10", + "type": "", + "value": "0x14" + } + ], + "functionName": { + "name": "codecopy", + "nativeSrc": "154045:8:10", + "nodeType": "YulIdentifier", + "src": "154045:8:10" + }, + "nativeSrc": "154045:32:10", + "nodeType": "YulFunctionCall", + "src": "154045:32:10" + }, + "nativeSrc": "154045:32:10", + "nodeType": "YulExpressionStatement", + "src": "154045:32:10" + }, + { + "body": { + "nativeSrc": "154189:9:10", + "nodeType": "YulBlock", + "src": "154189:9:10", + "statements": [ + { + "nativeSrc": "154191:5:10", + "nodeType": "YulBreak", + "src": "154191:5:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "154159:4:10", + "nodeType": "YulLiteral", + "src": "154159:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "154165:4:10", + "nodeType": "YulLiteral", + "src": "154165:4:10", + "type": "", + "value": "0x2d" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "154149:9:10", + "nodeType": "YulIdentifier", + "src": "154149:9:10" + }, + "nativeSrc": "154149:21:10", + "nodeType": "YulFunctionCall", + "src": "154149:21:10" + }, + { + "name": "CWIA_CODE_HASH", + "nativeSrc": "154172:14:10", + "nodeType": "YulIdentifier", + "src": "154172:14:10" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "154145:3:10", + "nodeType": "YulIdentifier", + "src": "154145:3:10" + }, + "nativeSrc": "154145:42:10", + "nodeType": "YulFunctionCall", + "src": "154145:42:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "154138:6:10", + "nodeType": "YulIdentifier", + "src": "154138:6:10" + }, + "nativeSrc": "154138:50:10", + "nodeType": "YulFunctionCall", + "src": "154138:50:10" + }, + "nativeSrc": "154135:63:10", + "nodeType": "YulIf", + "src": "154135:63:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "154222:4:10", + "nodeType": "YulLiteral", + "src": "154222:4:10", + "type": "", + "value": "0x0a" + }, + { + "name": "result", + "nativeSrc": "154228:6:10", + "nodeType": "YulIdentifier", + "src": "154228:6:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "154215:6:10", + "nodeType": "YulIdentifier", + "src": "154215:6:10" + }, + "nativeSrc": "154215:20:10", + "nodeType": "YulFunctionCall", + "src": "154215:20:10" + }, + "nativeSrc": "154215:20:10", + "nodeType": "YulExpressionStatement", + "src": "154215:20:10" + }, + { + "nativeSrc": "154326:21:10", + "nodeType": "YulAssignment", + "src": "154326:21:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "154342:4:10", + "nodeType": "YulLiteral", + "src": "154342:4:10", + "type": "", + "value": "0x09" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "154336:5:10", + "nodeType": "YulIdentifier", + "src": "154336:5:10" + }, + "nativeSrc": "154336:11:10", + "nodeType": "YulFunctionCall", + "src": "154336:11:10" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "154326:6:10", + "nodeType": "YulIdentifier", + "src": "154326:6:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "154373:4:10", + "nodeType": "YulLiteral", + "src": "154373:4:10", + "type": "", + "value": "0x09" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "154379:8:10", + "nodeType": "YulIdentifier", + "src": "154379:8:10" + }, + "nativeSrc": "154379:10:10", + "nodeType": "YulFunctionCall", + "src": "154379:10:10" + }, + { + "kind": "number", + "nativeSrc": "154391:4:10", + "nodeType": "YulLiteral", + "src": "154391:4:10", + "type": "", + "value": "0x14" + } + ], + "functionName": { + "name": "codecopy", + "nativeSrc": "154364:8:10", + "nodeType": "YulIdentifier", + "src": "154364:8:10" + }, + "nativeSrc": "154364:32:10", + "nodeType": "YulFunctionCall", + "src": "154364:32:10" + }, + "nativeSrc": "154364:32:10", + "nodeType": "YulExpressionStatement", + "src": "154364:32:10" + }, + { + "nativeSrc": "154454:72:10", + "nodeType": "YulAssignment", + "src": "154454:72:10", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "154482:4:10", + "nodeType": "YulLiteral", + "src": "154482:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "154488:4:10", + "nodeType": "YulLiteral", + "src": "154488:4:10", + "type": "", + "value": "0x2d" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "154472:9:10", + "nodeType": "YulIdentifier", + "src": "154472:9:10" + }, + "nativeSrc": "154472:21:10", + "nodeType": "YulFunctionCall", + "src": "154472:21:10" + }, + { + "name": "PUSH0_CLONE_CODE_HASH", + "nativeSrc": "154495:21:10", + "nodeType": "YulIdentifier", + "src": "154495:21:10" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "154468:3:10", + "nodeType": "YulIdentifier", + "src": "154468:3:10" + }, + "nativeSrc": "154468:49:10", + "nodeType": "YulFunctionCall", + "src": "154468:49:10" + }, + { + "name": "result", + "nativeSrc": "154519:6:10", + "nodeType": "YulIdentifier", + "src": "154519:6:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "154464:3:10", + "nodeType": "YulIdentifier", + "src": "154464:3:10" + }, + "nativeSrc": "154464:62:10", + "nodeType": "YulFunctionCall", + "src": "154464:62:10" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "154454:6:10", + "nodeType": "YulIdentifier", + "src": "154454:6:10" + } + ] + }, + { + "nativeSrc": "154543:5:10", + "nodeType": "YulBreak", + "src": "154543:5:10" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "153128:1:10", + "nodeType": "YulLiteral", + "src": "153128:1:10", + "type": "", + "value": "1" + }, + "nativeSrc": "153080:1482:10", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "153130:2:10", + "nodeType": "YulBlock", + "src": "153130:2:10", + "statements": [] + }, + "pre": { + "nativeSrc": "153084:43:10", + "nodeType": "YulBlock", + "src": "153084:43:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "153098:8:10", + "nodeType": "YulIdentifier", + "src": "153098:8:10" + }, + { + "kind": "number", + "nativeSrc": "153108:4:10", + "nodeType": "YulLiteral", + "src": "153108:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "153114:4:10", + "nodeType": "YulLiteral", + "src": "153114:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "153120:4:10", + "nodeType": "YulLiteral", + "src": "153120:4:10", + "type": "", + "value": "0x57" + } + ], + "functionName": { + "name": "extcodecopy", + "nativeSrc": "153086:11:10", + "nodeType": "YulIdentifier", + "src": "153086:11:10" + }, + "nativeSrc": "153086:39:10", + "nodeType": "YulFunctionCall", + "src": "153086:39:10" + }, + "nativeSrc": "153086:39:10", + "nodeType": "YulExpressionStatement", + "src": "153086:39:10" + } + ] + }, + "src": "153080:1482:10" + }, + { + "nativeSrc": "154575:25:10", + "nodeType": "YulAssignment", + "src": "154575:25:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "154589:2:10", + "nodeType": "YulLiteral", + "src": "154589:2:10", + "type": "", + "value": "96" + }, + { + "name": "result", + "nativeSrc": "154593:6:10", + "nodeType": "YulIdentifier", + "src": "154593:6:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "154585:3:10", + "nodeType": "YulIdentifier", + "src": "154585:3:10" + }, + "nativeSrc": "154585:15:10", + "nodeType": "YulFunctionCall", + "src": "154585:15:10" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "154575:6:10", + "nodeType": "YulIdentifier", + "src": "154575:6:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "154620:4:10", + "nodeType": "YulLiteral", + "src": "154620:4:10", + "type": "", + "value": "0x37" + }, + { + "kind": "number", + "nativeSrc": "154626:1:10", + "nodeType": "YulLiteral", + "src": "154626:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "154613:6:10", + "nodeType": "YulIdentifier", + "src": "154613:6:10" + }, + "nativeSrc": "154613:15:10", + "nodeType": "YulFunctionCall", + "src": "154613:15:10" + }, + "nativeSrc": "154613:15:10", + "nodeType": "YulExpressionStatement", + "src": "154613:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3096, + "isOffset": false, + "isSlot": false, + "src": "153859:15:10", + "valueSize": 1 + }, + { + "declaration": 3104, + "isOffset": false, + "isSlot": false, + "src": "154172:14:10", + "valueSize": 1 + }, + { + "declaration": 3120, + "isOffset": false, + "isSlot": false, + "src": "153383:31:10", + "valueSize": 1 + }, + { + "declaration": 3112, + "isOffset": false, + "isSlot": false, + "src": "153312:18:10", + "valueSize": 1 + }, + { + "declaration": 3100, + "isOffset": false, + "isSlot": false, + "src": "154495:21:10", + "valueSize": 1 + }, + { + "declaration": 5060, + "isOffset": false, + "isSlot": false, + "src": "153098:8:10", + "valueSize": 1 + }, + { + "declaration": 5060, + "isOffset": false, + "isSlot": false, + "src": "153486:8:10", + "valueSize": 1 + }, + { + "declaration": 5063, + "isOffset": false, + "isSlot": false, + "src": "153545:6:10", + "valueSize": 1 + }, + { + "declaration": 5063, + "isOffset": false, + "isSlot": false, + "src": "153694:6:10", + "valueSize": 1 + }, + { + "declaration": 5063, + "isOffset": false, + "isSlot": false, + "src": "153916:6:10", + "valueSize": 1 + }, + { + "declaration": 5063, + "isOffset": false, + "isSlot": false, + "src": "154007:6:10", + "valueSize": 1 + }, + { + "declaration": 5063, + "isOffset": false, + "isSlot": false, + "src": "154228:6:10", + "valueSize": 1 + }, + { + "declaration": 5063, + "isOffset": false, + "isSlot": false, + "src": "154326:6:10", + "valueSize": 1 + }, + { + "declaration": 5063, + "isOffset": false, + "isSlot": false, + "src": "154454:6:10", + "valueSize": 1 + }, + { + "declaration": 5063, + "isOffset": false, + "isSlot": false, + "src": "154519:6:10", + "valueSize": 1 + }, + { + "declaration": 5063, + "isOffset": false, + "isSlot": false, + "src": "154575:6:10", + "valueSize": 1 + }, + { + "declaration": 5063, + "isOffset": false, + "isSlot": false, + "src": "154593:6:10", + "valueSize": 1 + } + ], + "id": 5065, + "nodeType": "InlineAssembly", + "src": "153057:1641:10" + } + ] + }, + "documentation": { + "id": 5058, + "nodeType": "StructuredDocumentation", + "src": "152835:81:10", + "text": "@dev Returns `address(0)` if the implementation address cannot be determined." + }, + "id": 5067, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "implementationOf", + "nameLocation": "152930:16:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5061, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5060, + "mutability": "mutable", + "name": "instance", + "nameLocation": "152955:8:10", + "nodeType": "VariableDeclaration", + "scope": 5067, + "src": "152947:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5059, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "152947:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "152946:18:10" + }, + "returnParameters": { + "id": 5064, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5063, + "mutability": "mutable", + "name": "result", + "nameLocation": "152996:6:10", + "nodeType": "VariableDeclaration", + "scope": 5067, + "src": "152988:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5062, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "152988:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "152987:16:10" + }, + "scope": 5104, + "src": "152921:1783:10", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5080, + "nodeType": "Block", + "src": "155092:425:10", + "statements": [ + { + "AST": { + "nativeSrc": "155154:357:10", + "nodeType": "YulBlock", + "src": "155154:357:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "155228:4:10", + "nodeType": "YulLiteral", + "src": "155228:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "155234:4:10", + "nodeType": "YulLiteral", + "src": "155234:4:10", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "155220:7:10", + "nodeType": "YulIdentifier", + "src": "155220:7:10" + }, + "nativeSrc": "155220:19:10", + "nodeType": "YulFunctionCall", + "src": "155220:19:10" + }, + "nativeSrc": "155220:19:10", + "nodeType": "YulExpressionStatement", + "src": "155220:19:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "155280:4:10", + "nodeType": "YulLiteral", + "src": "155280:4:10", + "type": "", + "value": "0x35" + }, + { + "name": "hash", + "nativeSrc": "155286:4:10", + "nodeType": "YulIdentifier", + "src": "155286:4:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "155273:6:10", + "nodeType": "YulIdentifier", + "src": "155273:6:10" + }, + "nativeSrc": "155273:18:10", + "nodeType": "YulFunctionCall", + "src": "155273:18:10" + }, + "nativeSrc": "155273:18:10", + "nodeType": "YulExpressionStatement", + "src": "155273:18:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "155311:4:10", + "nodeType": "YulLiteral", + "src": "155311:4:10", + "type": "", + "value": "0x01" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "155321:2:10", + "nodeType": "YulLiteral", + "src": "155321:2:10", + "type": "", + "value": "96" + }, + { + "name": "deployer", + "nativeSrc": "155325:8:10", + "nodeType": "YulIdentifier", + "src": "155325:8:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "155317:3:10", + "nodeType": "YulIdentifier", + "src": "155317:3:10" + }, + "nativeSrc": "155317:17:10", + "nodeType": "YulFunctionCall", + "src": "155317:17:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "155304:6:10", + "nodeType": "YulIdentifier", + "src": "155304:6:10" + }, + "nativeSrc": "155304:31:10", + "nodeType": "YulFunctionCall", + "src": "155304:31:10" + }, + "nativeSrc": "155304:31:10", + "nodeType": "YulExpressionStatement", + "src": "155304:31:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "155355:4:10", + "nodeType": "YulLiteral", + "src": "155355:4:10", + "type": "", + "value": "0x15" + }, + { + "name": "salt", + "nativeSrc": "155361:4:10", + "nodeType": "YulIdentifier", + "src": "155361:4:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "155348:6:10", + "nodeType": "YulIdentifier", + "src": "155348:6:10" + }, + "nativeSrc": "155348:18:10", + "nodeType": "YulFunctionCall", + "src": "155348:18:10" + }, + "nativeSrc": "155348:18:10", + "nodeType": "YulExpressionStatement", + "src": "155348:18:10" + }, + { + "nativeSrc": "155379:34:10", + "nodeType": "YulAssignment", + "src": "155379:34:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "155402:4:10", + "nodeType": "YulLiteral", + "src": "155402:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "155408:4:10", + "nodeType": "YulLiteral", + "src": "155408:4:10", + "type": "", + "value": "0x55" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "155392:9:10", + "nodeType": "YulIdentifier", + "src": "155392:9:10" + }, + "nativeSrc": "155392:21:10", + "nodeType": "YulFunctionCall", + "src": "155392:21:10" + }, + "variableNames": [ + { + "name": "predicted", + "nativeSrc": "155379:9:10", + "nodeType": "YulIdentifier", + "src": "155379:9:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "155433:4:10", + "nodeType": "YulLiteral", + "src": "155433:4:10", + "type": "", + "value": "0x35" + }, + { + "kind": "number", + "nativeSrc": "155439:1:10", + "nodeType": "YulLiteral", + "src": "155439:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "155426:6:10", + "nodeType": "YulIdentifier", + "src": "155426:6:10" + }, + "nativeSrc": "155426:15:10", + "nodeType": "YulFunctionCall", + "src": "155426:15:10" + }, + "nativeSrc": "155426:15:10", + "nodeType": "YulExpressionStatement", + "src": "155426:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5074, + "isOffset": false, + "isSlot": false, + "src": "155325:8:10", + "valueSize": 1 + }, + { + "declaration": 5070, + "isOffset": false, + "isSlot": false, + "src": "155286:4:10", + "valueSize": 1 + }, + { + "declaration": 5077, + "isOffset": false, + "isSlot": false, + "src": "155379:9:10", + "valueSize": 1 + }, + { + "declaration": 5072, + "isOffset": false, + "isSlot": false, + "src": "155361:4:10", + "valueSize": 1 + } + ], + "id": 5079, + "nodeType": "InlineAssembly", + "src": "155145:366:10" + } + ] + }, + "documentation": { + "id": 5068, + "nodeType": "StructuredDocumentation", + "src": "154710:224:10", + "text": "@dev Returns the address when a contract with initialization code hash,\n `hash`, is deployed with `salt`, by `deployer`.\n Note: The returned result has dirty upper 96 bits. Please clean if used in assembly." + }, + "id": 5081, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "predictDeterministicAddress", + "nameLocation": "154948:27:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5075, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5070, + "mutability": "mutable", + "name": "hash", + "nameLocation": "154984:4:10", + "nodeType": "VariableDeclaration", + "scope": 5081, + "src": "154976:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5069, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "154976:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5072, + "mutability": "mutable", + "name": "salt", + "nameLocation": "154998:4:10", + "nodeType": "VariableDeclaration", + "scope": 5081, + "src": "154990:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5071, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "154990:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5074, + "mutability": "mutable", + "name": "deployer", + "nameLocation": "155012:8:10", + "nodeType": "VariableDeclaration", + "scope": 5081, + "src": "155004:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5073, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "155004:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "154975:46:10" + }, + "returnParameters": { + "id": 5078, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5077, + "mutability": "mutable", + "name": "predicted", + "nameLocation": "155077:9:10", + "nodeType": "VariableDeclaration", + "scope": 5081, + "src": "155069:17:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5076, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "155069:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "155068:19:10" + }, + "scope": 5104, + "src": "154939:578:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5090, + "nodeType": "Block", + "src": "155667:363:10", + "statements": [ + { + "AST": { + "nativeSrc": "155729:295:10", + "nodeType": "YulBlock", + "src": "155729:295:10", + "statements": [ + { + "body": { + "nativeSrc": "155894:120:10", + "nodeType": "YulBlock", + "src": "155894:120:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "155919:4:10", + "nodeType": "YulLiteral", + "src": "155919:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "155925:10:10", + "nodeType": "YulLiteral", + "src": "155925:10:10", + "type": "", + "value": "0x0c4549ef" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "155912:6:10", + "nodeType": "YulIdentifier", + "src": "155912:6:10" + }, + "nativeSrc": "155912:24:10", + "nodeType": "YulFunctionCall", + "src": "155912:24:10" + }, + "nativeSrc": "155912:24:10", + "nodeType": "YulExpressionStatement", + "src": "155912:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "155989:4:10", + "nodeType": "YulLiteral", + "src": "155989:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "155995:4:10", + "nodeType": "YulLiteral", + "src": "155995:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "155982:6:10", + "nodeType": "YulIdentifier", + "src": "155982:6:10" + }, + "nativeSrc": "155982:18:10", + "nodeType": "YulFunctionCall", + "src": "155982:18:10" + }, + "nativeSrc": "155982:18:10", + "nodeType": "YulExpressionStatement", + "src": "155982:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "155840:2:10", + "nodeType": "YulLiteral", + "src": "155840:2:10", + "type": "", + "value": "96" + }, + { + "name": "salt", + "nativeSrc": "155844:4:10", + "nodeType": "YulIdentifier", + "src": "155844:4:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "155836:3:10", + "nodeType": "YulIdentifier", + "src": "155836:3:10" + }, + "nativeSrc": "155836:13:10", + "nodeType": "YulFunctionCall", + "src": "155836:13:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "155829:6:10", + "nodeType": "YulIdentifier", + "src": "155829:6:10" + }, + "nativeSrc": "155829:21:10", + "nodeType": "YulFunctionCall", + "src": "155829:21:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "155859:2:10", + "nodeType": "YulLiteral", + "src": "155859:2:10", + "type": "", + "value": "96" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "155867:2:10", + "nodeType": "YulLiteral", + "src": "155867:2:10", + "type": "", + "value": "96" + }, + { + "name": "by", + "nativeSrc": "155871:2:10", + "nodeType": "YulIdentifier", + "src": "155871:2:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "155863:3:10", + "nodeType": "YulIdentifier", + "src": "155863:3:10" + }, + "nativeSrc": "155863:11:10", + "nodeType": "YulFunctionCall", + "src": "155863:11:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "155855:3:10", + "nodeType": "YulIdentifier", + "src": "155855:3:10" + }, + "nativeSrc": "155855:20:10", + "nodeType": "YulFunctionCall", + "src": "155855:20:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "155881:2:10", + "nodeType": "YulLiteral", + "src": "155881:2:10", + "type": "", + "value": "96" + }, + { + "name": "salt", + "nativeSrc": "155885:4:10", + "nodeType": "YulIdentifier", + "src": "155885:4:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "155877:3:10", + "nodeType": "YulIdentifier", + "src": "155877:3:10" + }, + "nativeSrc": "155877:13:10", + "nodeType": "YulFunctionCall", + "src": "155877:13:10" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "155852:2:10", + "nodeType": "YulIdentifier", + "src": "155852:2:10" + }, + "nativeSrc": "155852:39:10", + "nodeType": "YulFunctionCall", + "src": "155852:39:10" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "155826:2:10", + "nodeType": "YulIdentifier", + "src": "155826:2:10" + }, + "nativeSrc": "155826:66:10", + "nodeType": "YulFunctionCall", + "src": "155826:66:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "155819:6:10", + "nodeType": "YulIdentifier", + "src": "155819:6:10" + }, + "nativeSrc": "155819:74:10", + "nodeType": "YulFunctionCall", + "src": "155819:74:10" + }, + "nativeSrc": "155816:198:10", + "nodeType": "YulIf", + "src": "155816:198:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5086, + "isOffset": false, + "isSlot": false, + "src": "155871:2:10", + "valueSize": 1 + }, + { + "declaration": 5084, + "isOffset": false, + "isSlot": false, + "src": "155844:4:10", + "valueSize": 1 + }, + { + "declaration": 5084, + "isOffset": false, + "isSlot": false, + "src": "155885:4:10", + "valueSize": 1 + } + ], + "id": 5089, + "nodeType": "InlineAssembly", + "src": "155720:304:10" + } + ] + }, + "documentation": { + "id": 5082, + "nodeType": "StructuredDocumentation", + "src": "155523:74:10", + "text": "@dev Requires that `salt` starts with either the zero address or `by`." + }, + "id": 5091, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "checkStartsWith", + "nameLocation": "155611:15:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5087, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5084, + "mutability": "mutable", + "name": "salt", + "nameLocation": "155635:4:10", + "nodeType": "VariableDeclaration", + "scope": 5091, + "src": "155627:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5083, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "155627:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5086, + "mutability": "mutable", + "name": "by", + "nameLocation": "155649:2:10", + "nodeType": "VariableDeclaration", + "scope": 5091, + "src": "155641:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5085, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "155641:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "155626:26:10" + }, + "returnParameters": { + "id": 5088, + "nodeType": "ParameterList", + "parameters": [], + "src": "155667:0:10" + }, + "scope": 5104, + "src": "155602:428:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5102, + "nodeType": "Block", + "src": "156295:137:10", + "statements": [ + { + "AST": { + "nativeSrc": "156357:69:10", + "nodeType": "YulBlock", + "src": "156357:69:10", + "statements": [ + { + "nativeSrc": "156371:45:10", + "nodeType": "YulAssignment", + "src": "156371:45:10", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "156395:4:10", + "nodeType": "YulIdentifier", + "src": "156395:4:10" + }, + { + "kind": "number", + "nativeSrc": "156401:4:10", + "nodeType": "YulLiteral", + "src": "156401:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "156391:3:10", + "nodeType": "YulIdentifier", + "src": "156391:3:10" + }, + "nativeSrc": "156391:15:10", + "nodeType": "YulFunctionCall", + "src": "156391:15:10" + }, + { + "name": "offset", + "nativeSrc": "156408:6:10", + "nodeType": "YulIdentifier", + "src": "156408:6:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "156387:3:10", + "nodeType": "YulIdentifier", + "src": "156387:3:10" + }, + "nativeSrc": "156387:28:10", + "nodeType": "YulFunctionCall", + "src": "156387:28:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "156381:5:10", + "nodeType": "YulIdentifier", + "src": "156381:5:10" + }, + "nativeSrc": "156381:35:10", + "nodeType": "YulFunctionCall", + "src": "156381:35:10" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "156371:6:10", + "nodeType": "YulIdentifier", + "src": "156371:6:10" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5094, + "isOffset": false, + "isSlot": false, + "src": "156395:4:10", + "valueSize": 1 + }, + { + "declaration": 5096, + "isOffset": false, + "isSlot": false, + "src": "156408:6:10", + "valueSize": 1 + }, + { + "declaration": 5099, + "isOffset": false, + "isSlot": false, + "src": "156371:6:10", + "valueSize": 1 + } + ], + "id": 5101, + "nodeType": "InlineAssembly", + "src": "156348:78:10" + } + ] + }, + "documentation": { + "id": 5092, + "nodeType": "StructuredDocumentation", + "src": "156036:163:10", + "text": "@dev Returns the `bytes32` at `offset` in `args`, without any bounds checks.\n To load an address, you can use `address(bytes20(argLoad(args, offset)))`." + }, + "id": 5103, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "argLoad", + "nameLocation": "156213:7:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5097, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5094, + "mutability": "mutable", + "name": "args", + "nameLocation": "156234:4:10", + "nodeType": "VariableDeclaration", + "scope": 5103, + "src": "156221:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5093, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "156221:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5096, + "mutability": "mutable", + "name": "offset", + "nameLocation": "156248:6:10", + "nodeType": "VariableDeclaration", + "scope": 5103, + "src": "156240:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5095, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "156240:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "156220:35:10" + }, + "returnParameters": { + "id": 5100, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5099, + "mutability": "mutable", + "name": "result", + "nameLocation": "156287:6:10", + "nodeType": "VariableDeclaration", + "scope": 5103, + "src": "156279:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5098, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "156279:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "156278:16:10" + }, + "scope": 5104, + "src": "156204:228:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 5105, + "src": "3756:152678:10", + "usedErrors": [ + 3123, + 3126, + 3129 + ], + "usedEvents": [] + } + ], + "src": "32:156403:10" + }, + "id": 10 + }, + "solady/utils/LibString.sol": { + "ast": { + "absolutePath": "solady/utils/LibString.sol", + "exportedSymbols": { + "LibBytes": [ + 3089 + ], + "LibString": [ + 6145 + ] + }, + "id": 6146, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5106, + "literals": [ + "solidity", + "^", + "0.8", + ".4" + ], + "nodeType": "PragmaDirective", + "src": "32:23:11" + }, + { + "absolutePath": "solady/utils/LibBytes.sol", + "file": "./LibBytes.sol", + "id": 5108, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6146, + "sourceUnit": 3090, + "src": "57:40:11", + "symbolAliases": [ + { + "foreign": { + "id": 5107, + "name": "LibBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "65:8:11", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "LibString", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 5109, + "nodeType": "StructuredDocumentation", + "src": "99:591:11", + "text": "@notice Library for converting numbers into strings and other string operations.\n @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/LibString.sol)\n @author Modified from Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/LibString.sol)\n @dev Note:\n For performance and bytecode compactness, most of the string operations are restricted to\n byte strings (7-bit ASCII), except where otherwise specified.\n Usage of byte string operations on charsets with runes spanning two or more bytes\n can lead to undefined behavior." + }, + "fullyImplemented": true, + "id": 6145, + "linearizedBaseContracts": [ + 6145 + ], + "name": "LibString", + "nameLocation": "698:9:11", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "LibString.StringStorage", + "documentation": { + "id": 5110, + "nodeType": "StructuredDocumentation", + "src": "997:237:11", + "text": "@dev Goated string storage struct that totally MOGs, no cap, fr.\n Uses less gas and bytecode than Solidity's native string storage. It's meta af.\n Packs length with the first 31 bytes if <255 bytes, so it’s mad tight." + }, + "id": 5113, + "members": [ + { + "constant": false, + "id": 5112, + "mutability": "mutable", + "name": "_spacer", + "nameLocation": "1278:7:11", + "nodeType": "VariableDeclaration", + "scope": 5113, + "src": "1270:15:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5111, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1270:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "name": "StringStorage", + "nameLocation": "1246:13:11", + "nodeType": "StructDefinition", + "scope": 6145, + "src": "1239:53:11", + "visibility": "public" + }, + { + "documentation": { + "id": 5114, + "nodeType": "StructuredDocumentation", + "src": "1581:77:11", + "text": "@dev The length of the output is too small to contain all the hex digits." + }, + "errorSelector": "2194895a", + "id": 5116, + "name": "HexLengthInsufficient", + "nameLocation": "1669:21:11", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 5115, + "nodeType": "ParameterList", + "parameters": [], + "src": "1690:2:11" + }, + "src": "1663:30:11" + }, + { + "documentation": { + "id": 5117, + "nodeType": "StructuredDocumentation", + "src": "1699:56:11", + "text": "@dev The length of the string is more than 32 bytes." + }, + "errorSelector": "ec92f9a3", + "id": 5119, + "name": "TooBigForSmallString", + "nameLocation": "1766:20:11", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 5118, + "nodeType": "ParameterList", + "parameters": [], + "src": "1786:2:11" + }, + "src": "1760:29:11" + }, + { + "documentation": { + "id": 5120, + "nodeType": "StructuredDocumentation", + "src": "1795:48:11", + "text": "@dev The input string must be a 7-bit ASCII." + }, + "errorSelector": "c9807e0d", + "id": 5122, + "name": "StringNot7BitASCII", + "nameLocation": "1854:18:11", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 5121, + "nodeType": "ParameterList", + "parameters": [], + "src": "1872:2:11" + }, + "src": "1848:27:11" + }, + { + "constant": true, + "documentation": { + "id": 5123, + "nodeType": "StructuredDocumentation", + "src": "2164:76:11", + "text": "@dev The constant returned when the `search` is not found in the string." + }, + "id": 5130, + "mutability": "constant", + "name": "NOT_FOUND", + "nameLocation": "2271:9:11", + "nodeType": "VariableDeclaration", + "scope": 6145, + "src": "2245:55:11", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5124, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2245:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "expression": { + "arguments": [ + { + "id": 5127, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2288:7:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 5126, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2288:7:11", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 5125, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "2283:4:11", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 5128, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2283:13:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 5129, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2297:3:11", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "2283:17:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 5131, + "nodeType": "StructuredDocumentation", + "src": "2307:85:11", + "text": "@dev Lookup for '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'." + }, + "id": 5134, + "mutability": "constant", + "name": "ALPHANUMERIC_7_BIT_ASCII", + "nameLocation": "2423:24:11", + "nodeType": "VariableDeclaration", + "scope": 6145, + "src": "2397:86:11", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 5132, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "2397:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "value": { + "hexValue": "307837666666666665303766666666666530336666303030303030303030303030", + "id": 5133, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2450:33:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_10633823810298881996667002598709002240_by_1", + "typeString": "int_const 1063...(30 digits omitted)...2240" + }, + "value": "0x7fffffe07fffffe03ff000000000000" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 5135, + "nodeType": "StructuredDocumentation", + "src": "2490:75:11", + "text": "@dev Lookup for 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'." + }, + "id": 5138, + "mutability": "constant", + "name": "LETTERS_7_BIT_ASCII", + "nameLocation": "2596:19:11", + "nodeType": "VariableDeclaration", + "scope": 6145, + "src": "2570:81:11", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 5136, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "2570:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "value": { + "hexValue": "307837666666666665303766666666666530303030303030303030303030303030", + "id": 5137, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2618:33:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_10633823810298881996379053697534001152_by_1", + "typeString": "int_const 1063...(30 digits omitted)...1152" + }, + "value": "0x7fffffe07fffffe0000000000000000" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 5139, + "nodeType": "StructuredDocumentation", + "src": "2658:49:11", + "text": "@dev Lookup for 'abcdefghijklmnopqrstuvwxyz'." + }, + "id": 5142, + "mutability": "constant", + "name": "LOWERCASE_7_BIT_ASCII", + "nameLocation": "2738:21:11", + "nodeType": "VariableDeclaration", + "scope": 6145, + "src": "2712:83:11", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 5140, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "2712:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "value": { + "hexValue": "307837666666666665303030303030303030303030303030303030303030303030", + "id": 5141, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2762:33:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_10633823807823001954701781295154855936_by_1", + "typeString": "int_const 1063...(30 digits omitted)...5936" + }, + "value": "0x7fffffe000000000000000000000000" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 5143, + "nodeType": "StructuredDocumentation", + "src": "2802:49:11", + "text": "@dev Lookup for 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'." + }, + "id": 5146, + "mutability": "constant", + "name": "UPPERCASE_7_BIT_ASCII", + "nameLocation": "2882:21:11", + "nodeType": "VariableDeclaration", + "scope": 6145, + "src": "2856:75:11", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 5144, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "2856:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "value": { + "hexValue": "30783766666666666530303030303030303030303030303030", + "id": 5145, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2906:25:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_2475880041677272402379145216_by_1", + "typeString": "int_const 2475880041677272402379145216" + }, + "value": "0x7fffffe0000000000000000" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 5147, + "nodeType": "StructuredDocumentation", + "src": "2938:33:11", + "text": "@dev Lookup for '0123456789'." + }, + "id": 5150, + "mutability": "constant", + "name": "DIGITS_7_BIT_ASCII", + "nameLocation": "3002:18:11", + "nodeType": "VariableDeclaration", + "scope": 6145, + "src": "2976:64:11", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 5148, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "2976:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "value": { + "hexValue": "3078336666303030303030303030303030", + "id": 5149, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3023:17:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_287948901175001088_by_1", + "typeString": "int_const 287948901175001088" + }, + "value": "0x3ff000000000000" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 5151, + "nodeType": "StructuredDocumentation", + "src": "3047:45:11", + "text": "@dev Lookup for '0123456789abcdefABCDEF'." + }, + "id": 5154, + "mutability": "constant", + "name": "HEXDIGITS_7_BIT_ASCII", + "nameLocation": "3123:21:11", + "nodeType": "VariableDeclaration", + "scope": 6145, + "src": "3097:78:11", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 5152, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "3097:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "value": { + "hexValue": "30783765303030303030376530336666303030303030303030303030", + "id": 5153, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3147:28:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_9982748479121884238975116247040_by_1", + "typeString": "int_const 9982748479121884238975116247040" + }, + "value": "0x7e0000007e03ff000000000000" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 5155, + "nodeType": "StructuredDocumentation", + "src": "3182:31:11", + "text": "@dev Lookup for '01234567'." + }, + "id": 5158, + "mutability": "constant", + "name": "OCTDIGITS_7_BIT_ASCII", + "nameLocation": "3244:21:11", + "nodeType": "VariableDeclaration", + "scope": 6145, + "src": "3218:66:11", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 5156, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "3218:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "value": { + "hexValue": "30786666303030303030303030303030", + "id": 5157, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3268:16:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_71776119061217280_by_1", + "typeString": "int_const 71776119061217280" + }, + "value": "0xff000000000000" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 5159, + "nodeType": "StructuredDocumentation", + "src": "3291:134:11", + "text": "@dev Lookup for '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!\"#$%&\\'()*+,-./:;<=>?@[\\\\]^_`{|}~ \\t\\n\\r\\x0b\\x0c'." + }, + "id": 5162, + "mutability": "constant", + "name": "PRINTABLE_7_BIT_ASCII", + "nameLocation": "3456:21:11", + "nodeType": "VariableDeclaration", + "scope": 6145, + "src": "3430:84:11", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 5160, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "3430:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "value": { + "hexValue": "30783766666666666666666666666666666666666666666666663030303033653030", + "id": 5161, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3480:34:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_170141183460469231731687303711589154304_by_1", + "typeString": "int_const 1701...(31 digits omitted)...4304" + }, + "value": "0x7fffffffffffffffffffffff00003e00" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 5163, + "nodeType": "StructuredDocumentation", + "src": "3521:57:11", + "text": "@dev Lookup for '!\"#$%&\\'()*+,-./:;<=>?@[\\\\]^_`{|}~'." + }, + "id": 5166, + "mutability": "constant", + "name": "PUNCTUATION_7_BIT_ASCII", + "nameLocation": "3609:23:11", + "nodeType": "VariableDeclaration", + "scope": 6145, + "src": "3583:86:11", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 5164, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "3583:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "value": { + "hexValue": "30783738303030303031663830303030303166633030666666653030303030303030", + "id": 5165, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3635:34:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_159507359650170349735020301108585168896_by_1", + "typeString": "int_const 1595...(31 digits omitted)...8896" + }, + "value": "0x78000001f8000001fc00fffe00000000" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 5167, + "nodeType": "StructuredDocumentation", + "src": "3676:38:11", + "text": "@dev Lookup for ' \\t\\n\\r\\x0b\\x0c'." + }, + "id": 5170, + "mutability": "constant", + "name": "WHITESPACE_7_BIT_ASCII", + "nameLocation": "3745:22:11", + "nodeType": "VariableDeclaration", + "scope": 6145, + "src": "3719:62:11", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 5168, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "3719:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "value": { + "hexValue": "3078313030303033653030", + "id": 5169, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3770:11:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_4294983168_by_1", + "typeString": "int_const 4294983168" + }, + "value": "0x100003e00" + }, + "visibility": "internal" + }, + { + "body": { + "id": 5191, + "nodeType": "Block", + "src": "4197:56:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 5183, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5174, + "src": "4233:1:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage storage pointer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage storage pointer" + } + ], + "id": 5182, + "name": "bytesStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5318, + "src": "4220:12:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_StringStorage_$5113_storage_ptr_$returns$_t_struct$_BytesStorage_$2590_storage_ptr_$", + "typeString": "function (struct LibString.StringStorage storage pointer) pure returns (struct LibBytes.BytesStorage storage pointer)" + } + }, + "id": 5184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4220:15:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage storage pointer" + } + }, + { + "arguments": [ + { + "id": 5187, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5176, + "src": "4243:1:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5186, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4237:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5185, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4237:5:11", + "typeDescriptions": {} + } + }, + "id": 5188, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4237:8:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage storage pointer" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 5179, + "name": "LibBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "4207:8:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibBytes_$3089_$", + "typeString": "type(library LibBytes)" + } + }, + "id": 5181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4216:3:11", + "memberName": "set", + "nodeType": "MemberAccess", + "referencedDeclaration": 2609, + "src": "4207:12:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_BytesStorage_$2590_storage_ptr_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (struct LibBytes.BytesStorage storage pointer,bytes memory)" + } + }, + "id": 5189, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4207:39:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5190, + "nodeType": "ExpressionStatement", + "src": "4207:39:11" + } + ] + }, + "documentation": { + "id": 5171, + "nodeType": "StructuredDocumentation", + "src": "4071:57:11", + "text": "@dev Sets the value of the string storage `$` to `s`." + }, + "id": 5192, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "set", + "nameLocation": "4142:3:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5177, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5174, + "mutability": "mutable", + "name": "$", + "nameLocation": "4168:1:11", + "nodeType": "VariableDeclaration", + "scope": 5192, + "src": "4146:23:11", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage" + }, + "typeName": { + "id": 5173, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5172, + "name": "StringStorage", + "nameLocations": [ + "4146:13:11" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5113, + "src": "4146:13:11" + }, + "referencedDeclaration": 5113, + "src": "4146:13:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5176, + "mutability": "mutable", + "name": "s", + "nameLocation": "4185:1:11", + "nodeType": "VariableDeclaration", + "scope": 5192, + "src": "4171:15:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5175, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4171:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "4145:42:11" + }, + "returnParameters": { + "id": 5178, + "nodeType": "ParameterList", + "parameters": [], + "src": "4197:0:11" + }, + "scope": 6145, + "src": "4133:120:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5213, + "nodeType": "Block", + "src": "4395:64:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 5205, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5196, + "src": "4439:1:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage storage pointer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage storage pointer" + } + ], + "id": 5204, + "name": "bytesStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5318, + "src": "4426:12:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_StringStorage_$5113_storage_ptr_$returns$_t_struct$_BytesStorage_$2590_storage_ptr_$", + "typeString": "function (struct LibString.StringStorage storage pointer) pure returns (struct LibBytes.BytesStorage storage pointer)" + } + }, + "id": 5206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4426:15:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage storage pointer" + } + }, + { + "arguments": [ + { + "id": 5209, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5198, + "src": "4449:1:11", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + ], + "id": 5208, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4443:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5207, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4443:5:11", + "typeDescriptions": {} + } + }, + "id": 5210, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4443:8:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage storage pointer" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "expression": { + "id": 5201, + "name": "LibBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "4405:8:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibBytes_$3089_$", + "typeString": "type(library LibBytes)" + } + }, + "id": 5203, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4414:11:11", + "memberName": "setCalldata", + "nodeType": "MemberAccess", + "referencedDeclaration": 2620, + "src": "4405:20:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_BytesStorage_$2590_storage_ptr_$_t_bytes_calldata_ptr_$returns$__$", + "typeString": "function (struct LibBytes.BytesStorage storage pointer,bytes calldata)" + } + }, + "id": 5211, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4405:47:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5212, + "nodeType": "ExpressionStatement", + "src": "4405:47:11" + } + ] + }, + "documentation": { + "id": 5193, + "nodeType": "StructuredDocumentation", + "src": "4259:57:11", + "text": "@dev Sets the value of the string storage `$` to `s`." + }, + "id": 5214, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setCalldata", + "nameLocation": "4330:11:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5199, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5196, + "mutability": "mutable", + "name": "$", + "nameLocation": "4364:1:11", + "nodeType": "VariableDeclaration", + "scope": 5214, + "src": "4342:23:11", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage" + }, + "typeName": { + "id": 5195, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5194, + "name": "StringStorage", + "nameLocations": [ + "4342:13:11" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5113, + "src": "4342:13:11" + }, + "referencedDeclaration": 5113, + "src": "4342:13:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5198, + "mutability": "mutable", + "name": "s", + "nameLocation": "4383:1:11", + "nodeType": "VariableDeclaration", + "scope": 5214, + "src": "4367:17:11", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5197, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4367:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "4341:44:11" + }, + "returnParameters": { + "id": 5200, + "nodeType": "ParameterList", + "parameters": [], + "src": "4395:0:11" + }, + "scope": 6145, + "src": "4321:138:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5225, + "nodeType": "Block", + "src": "4589:33:11", + "statements": [ + { + "expression": { + "id": 5223, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "4599:16:11", + "subExpression": { + "expression": { + "id": 5221, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5218, + "src": "4606:1:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage storage pointer" + } + }, + "id": 5222, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "4608:7:11", + "memberName": "_spacer", + "nodeType": "MemberAccess", + "referencedDeclaration": 5112, + "src": "4606:9:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5224, + "nodeType": "ExpressionStatement", + "src": "4599:16:11" + } + ] + }, + "documentation": { + "id": 5215, + "nodeType": "StructuredDocumentation", + "src": "4465:70:11", + "text": "@dev Sets the value of the string storage `$` to the empty string." + }, + "id": 5226, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "clear", + "nameLocation": "4549:5:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5219, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5218, + "mutability": "mutable", + "name": "$", + "nameLocation": "4577:1:11", + "nodeType": "VariableDeclaration", + "scope": 5226, + "src": "4555:23:11", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage" + }, + "typeName": { + "id": 5217, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5216, + "name": "StringStorage", + "nameLocations": [ + "4555:13:11" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5113, + "src": "4555:13:11" + }, + "referencedDeclaration": 5113, + "src": "4555:13:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage" + } + }, + "visibility": "internal" + } + ], + "src": "4554:25:11" + }, + "returnParameters": { + "id": 5220, + "nodeType": "ParameterList", + "parameters": [], + "src": "4589:0:11" + }, + "scope": 6145, + "src": "4540:82:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5248, + "nodeType": "Block", + "src": "4776:63:11", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5246, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5241, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "expression": { + "id": 5237, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5230, + "src": "4801:1:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage storage pointer" + } + }, + "id": 5238, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4803:7:11", + "memberName": "_spacer", + "nodeType": "MemberAccess", + "referencedDeclaration": 5112, + "src": "4801:9:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 5236, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4793:7:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 5235, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4793:7:11", + "typeDescriptions": {} + } + }, + "id": 5239, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4793:18:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "30786666", + "id": 5240, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4814:4:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_255_by_1", + "typeString": "int_const 255" + }, + "value": "0xff" + }, + "src": "4793:25:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 5244, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4830:1:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5243, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4822:7:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 5242, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4822:7:11", + "typeDescriptions": {} + } + }, + "id": 5245, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4822:10:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4793:39:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 5234, + "id": 5247, + "nodeType": "Return", + "src": "4786:46:11" + } + ] + }, + "documentation": { + "id": 5227, + "nodeType": "StructuredDocumentation", + "src": "4628:72:11", + "text": "@dev Returns whether the value stored is `$` is the empty string \"\"." + }, + "id": 5249, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isEmpty", + "nameLocation": "4714:7:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5231, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5230, + "mutability": "mutable", + "name": "$", + "nameLocation": "4744:1:11", + "nodeType": "VariableDeclaration", + "scope": 5249, + "src": "4722:23:11", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage" + }, + "typeName": { + "id": 5229, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5228, + "name": "StringStorage", + "nameLocations": [ + "4722:13:11" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5113, + "src": "4722:13:11" + }, + "referencedDeclaration": 5113, + "src": "4722:13:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage" + } + }, + "visibility": "internal" + } + ], + "src": "4721:25:11" + }, + "returnParameters": { + "id": 5234, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5233, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5249, + "src": "4770:4:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5232, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4770:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4769:6:11" + }, + "scope": 6145, + "src": "4705:134:11", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5265, + "nodeType": "Block", + "src": "4978:56:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 5261, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5253, + "src": "5024:1:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage storage pointer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage storage pointer" + } + ], + "id": 5260, + "name": "bytesStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5318, + "src": "5011:12:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_StringStorage_$5113_storage_ptr_$returns$_t_struct$_BytesStorage_$2590_storage_ptr_$", + "typeString": "function (struct LibString.StringStorage storage pointer) pure returns (struct LibBytes.BytesStorage storage pointer)" + } + }, + "id": 5262, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5011:15:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage storage pointer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage storage pointer" + } + ], + "expression": { + "id": 5258, + "name": "LibBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "4995:8:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibBytes_$3089_$", + "typeString": "type(library LibBytes)" + } + }, + "id": 5259, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5004:6:11", + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": 2674, + "src": "4995:15:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_BytesStorage_$2590_storage_ptr_$returns$_t_uint256_$", + "typeString": "function (struct LibBytes.BytesStorage storage pointer) view returns (uint256)" + } + }, + "id": 5263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4995:32:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5257, + "id": 5264, + "nodeType": "Return", + "src": "4988:39:11" + } + ] + }, + "documentation": { + "id": 5250, + "nodeType": "StructuredDocumentation", + "src": "4845:55:11", + "text": "@dev Returns the length of the value stored in `$`." + }, + "id": 5266, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "length", + "nameLocation": "4914:6:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5254, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5253, + "mutability": "mutable", + "name": "$", + "nameLocation": "4943:1:11", + "nodeType": "VariableDeclaration", + "scope": 5266, + "src": "4921:23:11", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage" + }, + "typeName": { + "id": 5252, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5251, + "name": "StringStorage", + "nameLocations": [ + "4921:13:11" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5113, + "src": "4921:13:11" + }, + "referencedDeclaration": 5113, + "src": "4921:13:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage" + } + }, + "visibility": "internal" + } + ], + "src": "4920:25:11" + }, + "returnParameters": { + "id": 5257, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5256, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5266, + "src": "4969:7:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5255, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4969:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4968:9:11" + }, + "scope": 6145, + "src": "4905:129:11", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5285, + "nodeType": "Block", + "src": "5162:61:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 5280, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5270, + "src": "5212:1:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage storage pointer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage storage pointer" + } + ], + "id": 5279, + "name": "bytesStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5318, + "src": "5199:12:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_StringStorage_$5113_storage_ptr_$returns$_t_struct$_BytesStorage_$2590_storage_ptr_$", + "typeString": "function (struct LibString.StringStorage storage pointer) pure returns (struct LibBytes.BytesStorage storage pointer)" + } + }, + "id": 5281, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5199:15:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage storage pointer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage storage pointer" + } + ], + "expression": { + "id": 5277, + "name": "LibBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "5186:8:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibBytes_$3089_$", + "typeString": "type(library LibBytes)" + } + }, + "id": 5278, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5195:3:11", + "memberName": "get", + "nodeType": "MemberAccess", + "referencedDeclaration": 2685, + "src": "5186:12:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_BytesStorage_$2590_storage_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (struct LibBytes.BytesStorage storage pointer) view returns (bytes memory)" + } + }, + "id": 5282, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5186:29:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5276, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5179:6:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 5275, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "5179:6:11", + "typeDescriptions": {} + } + }, + "id": 5283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5179:37:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 5274, + "id": 5284, + "nodeType": "Return", + "src": "5172:44:11" + } + ] + }, + "documentation": { + "id": 5267, + "nodeType": "StructuredDocumentation", + "src": "5040:41:11", + "text": "@dev Returns the value stored in `$`." + }, + "id": 5286, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "get", + "nameLocation": "5095:3:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5271, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5270, + "mutability": "mutable", + "name": "$", + "nameLocation": "5121:1:11", + "nodeType": "VariableDeclaration", + "scope": 5286, + "src": "5099:23:11", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage" + }, + "typeName": { + "id": 5269, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5268, + "name": "StringStorage", + "nameLocations": [ + "5099:13:11" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5113, + "src": "5099:13:11" + }, + "referencedDeclaration": 5113, + "src": "5099:13:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage" + } + }, + "visibility": "internal" + } + ], + "src": "5098:25:11" + }, + "returnParameters": { + "id": 5274, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5273, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5286, + "src": "5147:13:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5272, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "5147:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "5146:15:11" + }, + "scope": 6145, + "src": "5086:137:11", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5305, + "nodeType": "Block", + "src": "5386:60:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 5300, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5290, + "src": "5433:1:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage storage pointer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage storage pointer" + } + ], + "id": 5299, + "name": "bytesStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5318, + "src": "5420:12:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_StringStorage_$5113_storage_ptr_$returns$_t_struct$_BytesStorage_$2590_storage_ptr_$", + "typeString": "function (struct LibString.StringStorage storage pointer) pure returns (struct LibBytes.BytesStorage storage pointer)" + } + }, + "id": 5301, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5420:15:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage storage pointer" + } + }, + { + "id": 5302, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5292, + "src": "5437:1:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage storage pointer" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 5297, + "name": "LibBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "5403:8:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibBytes_$3089_$", + "typeString": "type(library LibBytes)" + } + }, + "id": 5298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5412:7:11", + "memberName": "uint8At", + "nodeType": "MemberAccess", + "referencedDeclaration": 2698, + "src": "5403:16:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_BytesStorage_$2590_storage_ptr_$_t_uint256_$returns$_t_uint8_$", + "typeString": "function (struct LibBytes.BytesStorage storage pointer,uint256) view returns (uint8)" + } + }, + "id": 5303, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5403:36:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "functionReturnParameters": 5296, + "id": 5304, + "nodeType": "Return", + "src": "5396:43:11" + } + ] + }, + "documentation": { + "id": 5287, + "nodeType": "StructuredDocumentation", + "src": "5229:69:11", + "text": "@dev Returns the uint8 at index `i`. If out-of-bounds, returns 0." + }, + "id": 5306, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "uint8At", + "nameLocation": "5312:7:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5293, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5290, + "mutability": "mutable", + "name": "$", + "nameLocation": "5342:1:11", + "nodeType": "VariableDeclaration", + "scope": 5306, + "src": "5320:23:11", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage" + }, + "typeName": { + "id": 5289, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5288, + "name": "StringStorage", + "nameLocations": [ + "5320:13:11" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5113, + "src": "5320:13:11" + }, + "referencedDeclaration": 5113, + "src": "5320:13:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5292, + "mutability": "mutable", + "name": "i", + "nameLocation": "5353:1:11", + "nodeType": "VariableDeclaration", + "scope": 5306, + "src": "5345:9:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5291, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5345:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5319:36:11" + }, + "returnParameters": { + "id": 5296, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5295, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5306, + "src": "5379:5:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 5294, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "5379:5:11", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "5378:7:11" + }, + "scope": 6145, + "src": "5303:143:11", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5317, + "nodeType": "Block", + "src": "5641:113:11", + "statements": [ + { + "AST": { + "nativeSrc": "5703:45:11", + "nodeType": "YulBlock", + "src": "5703:45:11", + "statements": [ + { + "nativeSrc": "5717:21:11", + "nodeType": "YulAssignment", + "src": "5717:21:11", + "value": { + "name": "$.slot", + "nativeSrc": "5732:6:11", + "nodeType": "YulIdentifier", + "src": "5732:6:11" + }, + "variableNames": [ + { + "name": "casted.slot", + "nativeSrc": "5717:11:11", + "nodeType": "YulIdentifier", + "src": "5717:11:11" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5310, + "isOffset": false, + "isSlot": true, + "src": "5732:6:11", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 5314, + "isOffset": false, + "isSlot": true, + "src": "5717:11:11", + "suffix": "slot", + "valueSize": 1 + } + ], + "id": 5316, + "nodeType": "InlineAssembly", + "src": "5694:54:11" + } + ] + }, + "documentation": { + "id": 5307, + "nodeType": "StructuredDocumentation", + "src": "5452:48:11", + "text": "@dev Helper to cast `$` to a `BytesStorage`." + }, + "id": 5318, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "bytesStorage", + "nameLocation": "5514:12:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5311, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5310, + "mutability": "mutable", + "name": "$", + "nameLocation": "5549:1:11", + "nodeType": "VariableDeclaration", + "scope": 5318, + "src": "5527:23:11", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage" + }, + "typeName": { + "id": 5309, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5308, + "name": "StringStorage", + "nameLocations": [ + "5527:13:11" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5113, + "src": "5527:13:11" + }, + "referencedDeclaration": 5113, + "src": "5527:13:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage" + } + }, + "visibility": "internal" + } + ], + "src": "5526:25:11" + }, + "returnParameters": { + "id": 5315, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5314, + "mutability": "mutable", + "name": "casted", + "nameLocation": "5629:6:11", + "nodeType": "VariableDeclaration", + "scope": 5318, + "src": "5599:36:11", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage" + }, + "typeName": { + "id": 5313, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5312, + "name": "LibBytes.BytesStorage", + "nameLocations": [ + "5599:8:11", + "5608:12:11" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2590, + "src": "5599:21:11" + }, + "referencedDeclaration": 2590, + "src": "5599:21:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage" + } + }, + "visibility": "internal" + } + ], + "src": "5598:38:11" + }, + "scope": 6145, + "src": "5505:249:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5327, + "nodeType": "Block", + "src": "6189:1482:11", + "statements": [ + { + "AST": { + "nativeSrc": "6251:1414:11", + "nodeType": "YulBlock", + "src": "6251:1414:11", + "statements": [ + { + "nativeSrc": "6591:32:11", + "nodeType": "YulAssignment", + "src": "6591:32:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6611:4:11", + "nodeType": "YulLiteral", + "src": "6611:4:11", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "6605:5:11", + "nodeType": "YulIdentifier", + "src": "6605:5:11" + }, + "nativeSrc": "6605:11:11", + "nodeType": "YulFunctionCall", + "src": "6605:11:11" + }, + { + "kind": "number", + "nativeSrc": "6618:4:11", + "nodeType": "YulLiteral", + "src": "6618:4:11", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6601:3:11", + "nodeType": "YulIdentifier", + "src": "6601:3:11" + }, + "nativeSrc": "6601:22:11", + "nodeType": "YulFunctionCall", + "src": "6601:22:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "6591:6:11", + "nodeType": "YulIdentifier", + "src": "6591:6:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6643:4:11", + "nodeType": "YulLiteral", + "src": "6643:4:11", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "result", + "nativeSrc": "6653:6:11", + "nodeType": "YulIdentifier", + "src": "6653:6:11" + }, + { + "kind": "number", + "nativeSrc": "6661:4:11", + "nodeType": "YulLiteral", + "src": "6661:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6649:3:11", + "nodeType": "YulIdentifier", + "src": "6649:3:11" + }, + "nativeSrc": "6649:17:11", + "nodeType": "YulFunctionCall", + "src": "6649:17:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6636:6:11", + "nodeType": "YulIdentifier", + "src": "6636:6:11" + }, + "nativeSrc": "6636:31:11", + "nodeType": "YulFunctionCall", + "src": "6636:31:11" + }, + "nativeSrc": "6636:31:11", + "nodeType": "YulExpressionStatement", + "src": "6636:31:11" + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "6707:6:11", + "nodeType": "YulIdentifier", + "src": "6707:6:11" + }, + { + "kind": "number", + "nativeSrc": "6715:1:11", + "nodeType": "YulLiteral", + "src": "6715:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6700:6:11", + "nodeType": "YulIdentifier", + "src": "6700:6:11" + }, + "nativeSrc": "6700:17:11", + "nodeType": "YulFunctionCall", + "src": "6700:17:11" + }, + "nativeSrc": "6700:17:11", + "nodeType": "YulExpressionStatement", + "src": "6700:17:11" + }, + { + "nativeSrc": "6769:17:11", + "nodeType": "YulVariableDeclaration", + "src": "6769:17:11", + "value": { + "name": "result", + "nativeSrc": "6780:6:11", + "nodeType": "YulIdentifier", + "src": "6780:6:11" + }, + "variables": [ + { + "name": "end", + "nativeSrc": "6773:3:11", + "nodeType": "YulTypedName", + "src": "6773:3:11", + "type": "" + } + ] + }, + { + "nativeSrc": "6861:15:11", + "nodeType": "YulVariableDeclaration", + "src": "6861:15:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6874:1:11", + "nodeType": "YulLiteral", + "src": "6874:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "6870:3:11", + "nodeType": "YulIdentifier", + "src": "6870:3:11" + }, + "nativeSrc": "6870:6:11", + "nodeType": "YulFunctionCall", + "src": "6870:6:11" + }, + "variables": [ + { + "name": "w", + "nativeSrc": "6865:1:11", + "nodeType": "YulTypedName", + "src": "6865:1:11", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "7096:367:11", + "nodeType": "YulBlock", + "src": "7096:367:11", + "statements": [ + { + "nativeSrc": "7114:24:11", + "nodeType": "YulAssignment", + "src": "7114:24:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "7128:6:11", + "nodeType": "YulIdentifier", + "src": "7128:6:11" + }, + { + "name": "w", + "nativeSrc": "7136:1:11", + "nodeType": "YulIdentifier", + "src": "7136:1:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7124:3:11", + "nodeType": "YulIdentifier", + "src": "7124:3:11" + }, + "nativeSrc": "7124:14:11", + "nodeType": "YulFunctionCall", + "src": "7124:14:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "7114:6:11", + "nodeType": "YulIdentifier", + "src": "7114:6:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "7302:6:11", + "nodeType": "YulIdentifier", + "src": "7302:6:11" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7314:2:11", + "nodeType": "YulLiteral", + "src": "7314:2:11", + "type": "", + "value": "48" + }, + { + "arguments": [ + { + "name": "temp", + "nativeSrc": "7322:4:11", + "nodeType": "YulIdentifier", + "src": "7322:4:11" + }, + { + "kind": "number", + "nativeSrc": "7328:2:11", + "nodeType": "YulLiteral", + "src": "7328:2:11", + "type": "", + "value": "10" + } + ], + "functionName": { + "name": "mod", + "nativeSrc": "7318:3:11", + "nodeType": "YulIdentifier", + "src": "7318:3:11" + }, + "nativeSrc": "7318:13:11", + "nodeType": "YulFunctionCall", + "src": "7318:13:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7310:3:11", + "nodeType": "YulIdentifier", + "src": "7310:3:11" + }, + "nativeSrc": "7310:22:11", + "nodeType": "YulFunctionCall", + "src": "7310:22:11" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "7294:7:11", + "nodeType": "YulIdentifier", + "src": "7294:7:11" + }, + "nativeSrc": "7294:39:11", + "nodeType": "YulFunctionCall", + "src": "7294:39:11" + }, + "nativeSrc": "7294:39:11", + "nodeType": "YulExpressionStatement", + "src": "7294:39:11" + }, + { + "nativeSrc": "7350:21:11", + "nodeType": "YulAssignment", + "src": "7350:21:11", + "value": { + "arguments": [ + { + "name": "temp", + "nativeSrc": "7362:4:11", + "nodeType": "YulIdentifier", + "src": "7362:4:11" + }, + { + "kind": "number", + "nativeSrc": "7368:2:11", + "nodeType": "YulLiteral", + "src": "7368:2:11", + "type": "", + "value": "10" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "7358:3:11", + "nodeType": "YulIdentifier", + "src": "7358:3:11" + }, + "nativeSrc": "7358:13:11", + "nodeType": "YulFunctionCall", + "src": "7358:13:11" + }, + "variableNames": [ + { + "name": "temp", + "nativeSrc": "7350:4:11", + "nodeType": "YulIdentifier", + "src": "7350:4:11" + } + ] + }, + { + "body": { + "nativeSrc": "7440:9:11", + "nodeType": "YulBlock", + "src": "7440:9:11", + "statements": [ + { + "nativeSrc": "7442:5:11", + "nodeType": "YulBreak", + "src": "7442:5:11" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "temp", + "nativeSrc": "7434:4:11", + "nodeType": "YulIdentifier", + "src": "7434:4:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "7427:6:11", + "nodeType": "YulIdentifier", + "src": "7427:6:11" + }, + "nativeSrc": "7427:12:11", + "nodeType": "YulFunctionCall", + "src": "7427:12:11" + }, + "nativeSrc": "7424:25:11", + "nodeType": "YulIf", + "src": "7424:25:11" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "7091:1:11", + "nodeType": "YulLiteral", + "src": "7091:1:11", + "type": "", + "value": "1" + }, + "nativeSrc": "7065:398:11", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "7093:2:11", + "nodeType": "YulBlock", + "src": "7093:2:11", + "statements": [] + }, + "pre": { + "nativeSrc": "7069:21:11", + "nodeType": "YulBlock", + "src": "7069:21:11", + "statements": [ + { + "nativeSrc": "7071:17:11", + "nodeType": "YulVariableDeclaration", + "src": "7071:17:11", + "value": { + "name": "value", + "nativeSrc": "7083:5:11", + "nodeType": "YulIdentifier", + "src": "7083:5:11" + }, + "variables": [ + { + "name": "temp", + "nativeSrc": "7075:4:11", + "nodeType": "YulTypedName", + "src": "7075:4:11", + "type": "" + } + ] + } + ] + }, + "src": "7065:398:11" + }, + { + "nativeSrc": "7476:25:11", + "nodeType": "YulVariableDeclaration", + "src": "7476:25:11", + "value": { + "arguments": [ + { + "name": "end", + "nativeSrc": "7489:3:11", + "nodeType": "YulIdentifier", + "src": "7489:3:11" + }, + { + "name": "result", + "nativeSrc": "7494:6:11", + "nodeType": "YulIdentifier", + "src": "7494:6:11" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "7485:3:11", + "nodeType": "YulIdentifier", + "src": "7485:3:11" + }, + "nativeSrc": "7485:16:11", + "nodeType": "YulFunctionCall", + "src": "7485:16:11" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "7480:1:11", + "nodeType": "YulTypedName", + "src": "7480:1:11", + "type": "" + } + ] + }, + { + "nativeSrc": "7514:27:11", + "nodeType": "YulAssignment", + "src": "7514:27:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "7528:6:11", + "nodeType": "YulIdentifier", + "src": "7528:6:11" + }, + { + "kind": "number", + "nativeSrc": "7536:4:11", + "nodeType": "YulLiteral", + "src": "7536:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "7524:3:11", + "nodeType": "YulIdentifier", + "src": "7524:3:11" + }, + "nativeSrc": "7524:17:11", + "nodeType": "YulFunctionCall", + "src": "7524:17:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "7514:6:11", + "nodeType": "YulIdentifier", + "src": "7514:6:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "7624:6:11", + "nodeType": "YulIdentifier", + "src": "7624:6:11" + }, + { + "name": "n", + "nativeSrc": "7632:1:11", + "nodeType": "YulIdentifier", + "src": "7632:1:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7617:6:11", + "nodeType": "YulIdentifier", + "src": "7617:6:11" + }, + "nativeSrc": "7617:17:11", + "nodeType": "YulFunctionCall", + "src": "7617:17:11" + }, + "nativeSrc": "7617:17:11", + "nodeType": "YulExpressionStatement", + "src": "7617:17:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5324, + "isOffset": false, + "isSlot": false, + "src": "6591:6:11", + "valueSize": 1 + }, + { + "declaration": 5324, + "isOffset": false, + "isSlot": false, + "src": "6653:6:11", + "valueSize": 1 + }, + { + "declaration": 5324, + "isOffset": false, + "isSlot": false, + "src": "6707:6:11", + "valueSize": 1 + }, + { + "declaration": 5324, + "isOffset": false, + "isSlot": false, + "src": "6780:6:11", + "valueSize": 1 + }, + { + "declaration": 5324, + "isOffset": false, + "isSlot": false, + "src": "7114:6:11", + "valueSize": 1 + }, + { + "declaration": 5324, + "isOffset": false, + "isSlot": false, + "src": "7128:6:11", + "valueSize": 1 + }, + { + "declaration": 5324, + "isOffset": false, + "isSlot": false, + "src": "7302:6:11", + "valueSize": 1 + }, + { + "declaration": 5324, + "isOffset": false, + "isSlot": false, + "src": "7494:6:11", + "valueSize": 1 + }, + { + "declaration": 5324, + "isOffset": false, + "isSlot": false, + "src": "7514:6:11", + "valueSize": 1 + }, + { + "declaration": 5324, + "isOffset": false, + "isSlot": false, + "src": "7528:6:11", + "valueSize": 1 + }, + { + "declaration": 5324, + "isOffset": false, + "isSlot": false, + "src": "7624:6:11", + "valueSize": 1 + }, + { + "declaration": 5321, + "isOffset": false, + "isSlot": false, + "src": "7083:5:11", + "valueSize": 1 + } + ], + "id": 5326, + "nodeType": "InlineAssembly", + "src": "6242:1423:11" + } + ] + }, + "documentation": { + "id": 5319, + "nodeType": "StructuredDocumentation", + "src": "6043:63:11", + "text": "@dev Returns the base 10 decimal representation of `value`." + }, + "id": 5328, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toString", + "nameLocation": "6120:8:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5322, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5321, + "mutability": "mutable", + "name": "value", + "nameLocation": "6137:5:11", + "nodeType": "VariableDeclaration", + "scope": 5328, + "src": "6129:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5320, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6129:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6128:15:11" + }, + "returnParameters": { + "id": 5325, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5324, + "mutability": "mutable", + "name": "result", + "nameLocation": "6181:6:11", + "nodeType": "VariableDeclaration", + "scope": 5328, + "src": "6167:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5323, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "6167:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "6166:22:11" + }, + "scope": 6145, + "src": "6111:1560:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5361, + "nodeType": "Block", + "src": "7822:630:11", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 5338, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5336, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5331, + "src": "7836:5:11", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "hexValue": "30", + "id": 5337, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7845:1:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "7836:10:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5346, + "nodeType": "IfStatement", + "src": "7832:47:11", + "trueBody": { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 5342, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5331, + "src": "7872:5:11", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 5341, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7864:7:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 5340, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7864:7:11", + "typeDescriptions": {} + } + }, + "id": 5343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7864:14:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5339, + "name": "toString", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5328, + 5362 + ], + "referencedDeclaration": 5328, + "src": "7855:8:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$", + "typeString": "function (uint256) pure returns (string memory)" + } + }, + "id": 5344, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7855:24:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 5335, + "id": 5345, + "nodeType": "Return", + "src": "7848:31:11" + } + }, + { + "id": 5359, + "nodeType": "UncheckedBlock", + "src": "7889:73:11", + "statements": [ + { + "expression": { + "id": 5357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5347, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5334, + "src": "7913:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5355, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5353, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "~", + "prefix": true, + "src": "7931:15:11", + "subExpression": { + "arguments": [ + { + "id": 5351, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5331, + "src": "7940:5:11", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 5350, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7932:7:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 5349, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7932:7:11", + "typeDescriptions": {} + } + }, + "id": 5352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7932:14:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31", + "id": 5354, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7949:1:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "7931:19:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5348, + "name": "toString", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5328, + 5362 + ], + "referencedDeclaration": 5328, + "src": "7922:8:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$", + "typeString": "function (uint256) pure returns (string memory)" + } + }, + "id": 5356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7922:29:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "7913:38:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "id": 5358, + "nodeType": "ExpressionStatement", + "src": "7913:38:11" + } + ] + }, + { + "AST": { + "nativeSrc": "8023:423:11", + "nodeType": "YulBlock", + "src": "8023:423:11", + "statements": [ + { + "nativeSrc": "8179:22:11", + "nodeType": "YulVariableDeclaration", + "src": "8179:22:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "8194:6:11", + "nodeType": "YulIdentifier", + "src": "8194:6:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "8188:5:11", + "nodeType": "YulIdentifier", + "src": "8188:5:11" + }, + "nativeSrc": "8188:13:11", + "nodeType": "YulFunctionCall", + "src": "8188:13:11" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "8183:1:11", + "nodeType": "YulTypedName", + "src": "8183:1:11", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "8248:6:11", + "nodeType": "YulIdentifier", + "src": "8248:6:11" + }, + { + "kind": "number", + "nativeSrc": "8256:4:11", + "nodeType": "YulLiteral", + "src": "8256:4:11", + "type": "", + "value": "0x2d" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8241:6:11", + "nodeType": "YulIdentifier", + "src": "8241:6:11" + }, + "nativeSrc": "8241:20:11", + "nodeType": "YulFunctionCall", + "src": "8241:20:11" + }, + "nativeSrc": "8241:20:11", + "nodeType": "YulExpressionStatement", + "src": "8241:20:11" + }, + { + "nativeSrc": "8302:24:11", + "nodeType": "YulAssignment", + "src": "8302:24:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "8316:6:11", + "nodeType": "YulIdentifier", + "src": "8316:6:11" + }, + { + "kind": "number", + "nativeSrc": "8324:1:11", + "nodeType": "YulLiteral", + "src": "8324:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "8312:3:11", + "nodeType": "YulIdentifier", + "src": "8312:3:11" + }, + "nativeSrc": "8312:14:11", + "nodeType": "YulFunctionCall", + "src": "8312:14:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "8302:6:11", + "nodeType": "YulIdentifier", + "src": "8302:6:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "8389:6:11", + "nodeType": "YulIdentifier", + "src": "8389:6:11" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "8401:1:11", + "nodeType": "YulIdentifier", + "src": "8401:1:11" + }, + { + "kind": "number", + "nativeSrc": "8404:1:11", + "nodeType": "YulLiteral", + "src": "8404:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8397:3:11", + "nodeType": "YulIdentifier", + "src": "8397:3:11" + }, + "nativeSrc": "8397:9:11", + "nodeType": "YulFunctionCall", + "src": "8397:9:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8382:6:11", + "nodeType": "YulIdentifier", + "src": "8382:6:11" + }, + "nativeSrc": "8382:25:11", + "nodeType": "YulFunctionCall", + "src": "8382:25:11" + }, + "nativeSrc": "8382:25:11", + "nodeType": "YulExpressionStatement", + "src": "8382:25:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5334, + "isOffset": false, + "isSlot": false, + "src": "8194:6:11", + "valueSize": 1 + }, + { + "declaration": 5334, + "isOffset": false, + "isSlot": false, + "src": "8248:6:11", + "valueSize": 1 + }, + { + "declaration": 5334, + "isOffset": false, + "isSlot": false, + "src": "8302:6:11", + "valueSize": 1 + }, + { + "declaration": 5334, + "isOffset": false, + "isSlot": false, + "src": "8316:6:11", + "valueSize": 1 + }, + { + "declaration": 5334, + "isOffset": false, + "isSlot": false, + "src": "8389:6:11", + "valueSize": 1 + } + ], + "id": 5360, + "nodeType": "InlineAssembly", + "src": "8014:432:11" + } + ] + }, + "documentation": { + "id": 5329, + "nodeType": "StructuredDocumentation", + "src": "7677:63:11", + "text": "@dev Returns the base 10 decimal representation of `value`." + }, + "id": 5362, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toString", + "nameLocation": "7754:8:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5332, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5331, + "mutability": "mutable", + "name": "value", + "nameLocation": "7770:5:11", + "nodeType": "VariableDeclaration", + "scope": 5362, + "src": "7763:12:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 5330, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "7763:6:11", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "7762:14:11" + }, + "returnParameters": { + "id": 5335, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5334, + "mutability": "mutable", + "name": "result", + "nameLocation": "7814:6:11", + "nodeType": "VariableDeclaration", + "scope": 5362, + "src": "7800:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5333, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "7800:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "7799:22:11" + }, + "scope": 6145, + "src": "7745:707:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5380, + "nodeType": "Block", + "src": "9226:371:11", + "statements": [ + { + "expression": { + "id": 5377, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5372, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5370, + "src": "9236:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 5374, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5365, + "src": "9265:5:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5375, + "name": "byteCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5367, + "src": "9272:9:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5373, + "name": "toHexStringNoPrefix", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5393, + 5451, + 5493, + 5519 + ], + "referencedDeclaration": 5393, + "src": "9245:19:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$", + "typeString": "function (uint256,uint256) pure returns (string memory)" + } + }, + "id": 5376, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9245:37:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "9236:46:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "id": 5378, + "nodeType": "ExpressionStatement", + "src": "9236:46:11" + }, + { + "AST": { + "nativeSrc": "9344:247:11", + "nodeType": "YulBlock", + "src": "9344:247:11", + "statements": [ + { + "nativeSrc": "9358:30:11", + "nodeType": "YulVariableDeclaration", + "src": "9358:30:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "9377:6:11", + "nodeType": "YulIdentifier", + "src": "9377:6:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "9371:5:11", + "nodeType": "YulIdentifier", + "src": "9371:5:11" + }, + "nativeSrc": "9371:13:11", + "nodeType": "YulFunctionCall", + "src": "9371:13:11" + }, + { + "kind": "number", + "nativeSrc": "9386:1:11", + "nodeType": "YulLiteral", + "src": "9386:1:11", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9367:3:11", + "nodeType": "YulIdentifier", + "src": "9367:3:11" + }, + "nativeSrc": "9367:21:11", + "nodeType": "YulFunctionCall", + "src": "9367:21:11" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "9362:1:11", + "nodeType": "YulTypedName", + "src": "9362:1:11", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "9431:6:11", + "nodeType": "YulIdentifier", + "src": "9431:6:11" + }, + { + "kind": "number", + "nativeSrc": "9439:6:11", + "nodeType": "YulLiteral", + "src": "9439:6:11", + "type": "", + "value": "0x3078" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9424:6:11", + "nodeType": "YulIdentifier", + "src": "9424:6:11" + }, + "nativeSrc": "9424:22:11", + "nodeType": "YulFunctionCall", + "src": "9424:22:11" + }, + "nativeSrc": "9424:22:11", + "nodeType": "YulExpressionStatement", + "src": "9424:22:11" + }, + { + "nativeSrc": "9485:24:11", + "nodeType": "YulAssignment", + "src": "9485:24:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "9499:6:11", + "nodeType": "YulIdentifier", + "src": "9499:6:11" + }, + { + "kind": "number", + "nativeSrc": "9507:1:11", + "nodeType": "YulLiteral", + "src": "9507:1:11", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "9495:3:11", + "nodeType": "YulIdentifier", + "src": "9495:3:11" + }, + "nativeSrc": "9495:14:11", + "nodeType": "YulFunctionCall", + "src": "9495:14:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "9485:6:11", + "nodeType": "YulIdentifier", + "src": "9485:6:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "9550:6:11", + "nodeType": "YulIdentifier", + "src": "9550:6:11" + }, + { + "name": "n", + "nativeSrc": "9558:1:11", + "nodeType": "YulIdentifier", + "src": "9558:1:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9543:6:11", + "nodeType": "YulIdentifier", + "src": "9543:6:11" + }, + "nativeSrc": "9543:17:11", + "nodeType": "YulFunctionCall", + "src": "9543:17:11" + }, + "nativeSrc": "9543:17:11", + "nodeType": "YulExpressionStatement", + "src": "9543:17:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5370, + "isOffset": false, + "isSlot": false, + "src": "9377:6:11", + "valueSize": 1 + }, + { + "declaration": 5370, + "isOffset": false, + "isSlot": false, + "src": "9431:6:11", + "valueSize": 1 + }, + { + "declaration": 5370, + "isOffset": false, + "isSlot": false, + "src": "9485:6:11", + "valueSize": 1 + }, + { + "declaration": 5370, + "isOffset": false, + "isSlot": false, + "src": "9499:6:11", + "valueSize": 1 + }, + { + "declaration": 5370, + "isOffset": false, + "isSlot": false, + "src": "9550:6:11", + "valueSize": 1 + } + ], + "id": 5379, + "nodeType": "InlineAssembly", + "src": "9335:256:11" + } + ] + }, + "documentation": { + "id": 5363, + "nodeType": "StructuredDocumentation", + "src": "8741:352:11", + "text": "@dev Returns the hexadecimal representation of `value`,\n left-padded to an input length of `byteCount` bytes.\n The output is prefixed with \"0x\" encoded using 2 hexadecimal digits per byte,\n giving a total length of `byteCount * 2 + 2` bytes.\n Reverts if `byteCount` is too small for the output to contain all the digits." + }, + "id": 5381, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toHexString", + "nameLocation": "9107:11:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5368, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5365, + "mutability": "mutable", + "name": "value", + "nameLocation": "9127:5:11", + "nodeType": "VariableDeclaration", + "scope": 5381, + "src": "9119:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5364, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9119:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5367, + "mutability": "mutable", + "name": "byteCount", + "nameLocation": "9142:9:11", + "nodeType": "VariableDeclaration", + "scope": 5381, + "src": "9134:17:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5366, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9134:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9118:34:11" + }, + "returnParameters": { + "id": 5371, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5370, + "mutability": "mutable", + "name": "result", + "nameLocation": "9214:6:11", + "nodeType": "VariableDeclaration", + "scope": 5381, + "src": "9200:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5369, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "9200:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "9199:22:11" + }, + "scope": 6145, + "src": "9098:499:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5392, + "nodeType": "Block", + "src": "10103:1689:11", + "statements": [ + { + "AST": { + "nativeSrc": "10165:1621:11", + "nodeType": "YulBlock", + "src": "10165:1621:11", + "statements": [ + { + "nativeSrc": "10485:72:11", + "nodeType": "YulAssignment", + "src": "10485:72:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10505:4:11", + "nodeType": "YulLiteral", + "src": "10505:4:11", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "10499:5:11", + "nodeType": "YulIdentifier", + "src": "10499:5:11" + }, + "nativeSrc": "10499:11:11", + "nodeType": "YulFunctionCall", + "src": "10499:11:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10524:1:11", + "nodeType": "YulLiteral", + "src": "10524:1:11", + "type": "", + "value": "1" + }, + { + "name": "byteCount", + "nativeSrc": "10527:9:11", + "nodeType": "YulIdentifier", + "src": "10527:9:11" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "10520:3:11", + "nodeType": "YulIdentifier", + "src": "10520:3:11" + }, + "nativeSrc": "10520:17:11", + "nodeType": "YulFunctionCall", + "src": "10520:17:11" + }, + { + "kind": "number", + "nativeSrc": "10539:4:11", + "nodeType": "YulLiteral", + "src": "10539:4:11", + "type": "", + "value": "0x42" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10516:3:11", + "nodeType": "YulIdentifier", + "src": "10516:3:11" + }, + "nativeSrc": "10516:28:11", + "nodeType": "YulFunctionCall", + "src": "10516:28:11" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10550:4:11", + "nodeType": "YulLiteral", + "src": "10550:4:11", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "10546:3:11", + "nodeType": "YulIdentifier", + "src": "10546:3:11" + }, + "nativeSrc": "10546:9:11", + "nodeType": "YulFunctionCall", + "src": "10546:9:11" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "10512:3:11", + "nodeType": "YulIdentifier", + "src": "10512:3:11" + }, + "nativeSrc": "10512:44:11", + "nodeType": "YulFunctionCall", + "src": "10512:44:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10495:3:11", + "nodeType": "YulIdentifier", + "src": "10495:3:11" + }, + "nativeSrc": "10495:62:11", + "nodeType": "YulFunctionCall", + "src": "10495:62:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "10485:6:11", + "nodeType": "YulIdentifier", + "src": "10485:6:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10577:4:11", + "nodeType": "YulLiteral", + "src": "10577:4:11", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "result", + "nativeSrc": "10587:6:11", + "nodeType": "YulIdentifier", + "src": "10587:6:11" + }, + { + "kind": "number", + "nativeSrc": "10595:4:11", + "nodeType": "YulLiteral", + "src": "10595:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10583:3:11", + "nodeType": "YulIdentifier", + "src": "10583:3:11" + }, + "nativeSrc": "10583:17:11", + "nodeType": "YulFunctionCall", + "src": "10583:17:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "10570:6:11", + "nodeType": "YulIdentifier", + "src": "10570:6:11" + }, + "nativeSrc": "10570:31:11", + "nodeType": "YulFunctionCall", + "src": "10570:31:11" + }, + "nativeSrc": "10570:31:11", + "nodeType": "YulExpressionStatement", + "src": "10570:31:11" + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "10641:6:11", + "nodeType": "YulIdentifier", + "src": "10641:6:11" + }, + { + "kind": "number", + "nativeSrc": "10649:1:11", + "nodeType": "YulLiteral", + "src": "10649:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "10634:6:11", + "nodeType": "YulIdentifier", + "src": "10634:6:11" + }, + "nativeSrc": "10634:17:11", + "nodeType": "YulFunctionCall", + "src": "10634:17:11" + }, + "nativeSrc": "10634:17:11", + "nodeType": "YulExpressionStatement", + "src": "10634:17:11" + }, + { + "nativeSrc": "10703:17:11", + "nodeType": "YulVariableDeclaration", + "src": "10703:17:11", + "value": { + "name": "result", + "nativeSrc": "10714:6:11", + "nodeType": "YulIdentifier", + "src": "10714:6:11" + }, + "variables": [ + { + "name": "end", + "nativeSrc": "10707:3:11", + "nodeType": "YulTypedName", + "src": "10707:3:11", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10846:4:11", + "nodeType": "YulLiteral", + "src": "10846:4:11", + "type": "", + "value": "0x0f" + }, + { + "kind": "number", + "nativeSrc": "10852:34:11", + "nodeType": "YulLiteral", + "src": "10852:34:11", + "type": "", + "value": "0x30313233343536373839616263646566" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "10839:6:11", + "nodeType": "YulIdentifier", + "src": "10839:6:11" + }, + "nativeSrc": "10839:48:11", + "nodeType": "YulFunctionCall", + "src": "10839:48:11" + }, + "nativeSrc": "10839:48:11", + "nodeType": "YulExpressionStatement", + "src": "10839:48:11" + }, + { + "nativeSrc": "10901:51:11", + "nodeType": "YulVariableDeclaration", + "src": "10901:51:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "10918:6:11", + "nodeType": "YulIdentifier", + "src": "10918:6:11" + }, + { + "arguments": [ + { + "name": "byteCount", + "nativeSrc": "10930:9:11", + "nodeType": "YulIdentifier", + "src": "10930:9:11" + }, + { + "name": "byteCount", + "nativeSrc": "10941:9:11", + "nodeType": "YulIdentifier", + "src": "10941:9:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10926:3:11", + "nodeType": "YulIdentifier", + "src": "10926:3:11" + }, + "nativeSrc": "10926:25:11", + "nodeType": "YulFunctionCall", + "src": "10926:25:11" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "10914:3:11", + "nodeType": "YulIdentifier", + "src": "10914:3:11" + }, + "nativeSrc": "10914:38:11", + "nodeType": "YulFunctionCall", + "src": "10914:38:11" + }, + "variables": [ + { + "name": "start", + "nativeSrc": "10905:5:11", + "nodeType": "YulTypedName", + "src": "10905:5:11", + "type": "" + } + ] + }, + { + "nativeSrc": "10965:15:11", + "nodeType": "YulVariableDeclaration", + "src": "10965:15:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10978:1:11", + "nodeType": "YulLiteral", + "src": "10978:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "10974:3:11", + "nodeType": "YulIdentifier", + "src": "10974:3:11" + }, + "nativeSrc": "10974:6:11", + "nodeType": "YulFunctionCall", + "src": "10974:6:11" + }, + "variables": [ + { + "name": "w", + "nativeSrc": "10969:1:11", + "nodeType": "YulTypedName", + "src": "10969:1:11", + "type": "" + } + ] + }, + { + "nativeSrc": "11001:17:11", + "nodeType": "YulVariableDeclaration", + "src": "11001:17:11", + "value": { + "name": "value", + "nativeSrc": "11013:5:11", + "nodeType": "YulIdentifier", + "src": "11013:5:11" + }, + "variables": [ + { + "name": "temp", + "nativeSrc": "11005:4:11", + "nodeType": "YulTypedName", + "src": "11005:4:11", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "11211:294:11", + "nodeType": "YulBlock", + "src": "11211:294:11", + "statements": [ + { + "nativeSrc": "11229:24:11", + "nodeType": "YulAssignment", + "src": "11229:24:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "11243:6:11", + "nodeType": "YulIdentifier", + "src": "11243:6:11" + }, + { + "name": "w", + "nativeSrc": "11251:1:11", + "nodeType": "YulIdentifier", + "src": "11251:1:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11239:3:11", + "nodeType": "YulIdentifier", + "src": "11239:3:11" + }, + "nativeSrc": "11239:14:11", + "nodeType": "YulFunctionCall", + "src": "11239:14:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "11229:6:11", + "nodeType": "YulIdentifier", + "src": "11229:6:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "11303:6:11", + "nodeType": "YulIdentifier", + "src": "11303:6:11" + }, + { + "kind": "number", + "nativeSrc": "11311:1:11", + "nodeType": "YulLiteral", + "src": "11311:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11299:3:11", + "nodeType": "YulIdentifier", + "src": "11299:3:11" + }, + "nativeSrc": "11299:14:11", + "nodeType": "YulFunctionCall", + "src": "11299:14:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "temp", + "nativeSrc": "11325:4:11", + "nodeType": "YulIdentifier", + "src": "11325:4:11" + }, + { + "kind": "number", + "nativeSrc": "11331:2:11", + "nodeType": "YulLiteral", + "src": "11331:2:11", + "type": "", + "value": "15" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "11321:3:11", + "nodeType": "YulIdentifier", + "src": "11321:3:11" + }, + "nativeSrc": "11321:13:11", + "nodeType": "YulFunctionCall", + "src": "11321:13:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "11315:5:11", + "nodeType": "YulIdentifier", + "src": "11315:5:11" + }, + "nativeSrc": "11315:20:11", + "nodeType": "YulFunctionCall", + "src": "11315:20:11" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "11291:7:11", + "nodeType": "YulIdentifier", + "src": "11291:7:11" + }, + "nativeSrc": "11291:45:11", + "nodeType": "YulFunctionCall", + "src": "11291:45:11" + }, + "nativeSrc": "11291:45:11", + "nodeType": "YulExpressionStatement", + "src": "11291:45:11" + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "11361:6:11", + "nodeType": "YulIdentifier", + "src": "11361:6:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "11383:1:11", + "nodeType": "YulLiteral", + "src": "11383:1:11", + "type": "", + "value": "4" + }, + { + "name": "temp", + "nativeSrc": "11386:4:11", + "nodeType": "YulIdentifier", + "src": "11386:4:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "11379:3:11", + "nodeType": "YulIdentifier", + "src": "11379:3:11" + }, + "nativeSrc": "11379:12:11", + "nodeType": "YulFunctionCall", + "src": "11379:12:11" + }, + { + "kind": "number", + "nativeSrc": "11393:2:11", + "nodeType": "YulLiteral", + "src": "11393:2:11", + "type": "", + "value": "15" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "11375:3:11", + "nodeType": "YulIdentifier", + "src": "11375:3:11" + }, + "nativeSrc": "11375:21:11", + "nodeType": "YulFunctionCall", + "src": "11375:21:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "11369:5:11", + "nodeType": "YulIdentifier", + "src": "11369:5:11" + }, + "nativeSrc": "11369:28:11", + "nodeType": "YulFunctionCall", + "src": "11369:28:11" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "11353:7:11", + "nodeType": "YulIdentifier", + "src": "11353:7:11" + }, + "nativeSrc": "11353:45:11", + "nodeType": "YulFunctionCall", + "src": "11353:45:11" + }, + "nativeSrc": "11353:45:11", + "nodeType": "YulExpressionStatement", + "src": "11353:45:11" + }, + { + "nativeSrc": "11415:20:11", + "nodeType": "YulAssignment", + "src": "11415:20:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "11427:1:11", + "nodeType": "YulLiteral", + "src": "11427:1:11", + "type": "", + "value": "8" + }, + { + "name": "temp", + "nativeSrc": "11430:4:11", + "nodeType": "YulIdentifier", + "src": "11430:4:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "11423:3:11", + "nodeType": "YulIdentifier", + "src": "11423:3:11" + }, + "nativeSrc": "11423:12:11", + "nodeType": "YulFunctionCall", + "src": "11423:12:11" + }, + "variableNames": [ + { + "name": "temp", + "nativeSrc": "11415:4:11", + "nodeType": "YulIdentifier", + "src": "11415:4:11" + } + ] + }, + { + "body": { + "nativeSrc": "11482:9:11", + "nodeType": "YulBlock", + "src": "11482:9:11", + "statements": [ + { + "nativeSrc": "11484:5:11", + "nodeType": "YulBreak", + "src": "11484:5:11" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "11466:6:11", + "nodeType": "YulIdentifier", + "src": "11466:6:11" + }, + { + "name": "start", + "nativeSrc": "11474:5:11", + "nodeType": "YulIdentifier", + "src": "11474:5:11" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "11462:3:11", + "nodeType": "YulIdentifier", + "src": "11462:3:11" + }, + "nativeSrc": "11462:18:11", + "nodeType": "YulFunctionCall", + "src": "11462:18:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "11455:6:11", + "nodeType": "YulIdentifier", + "src": "11455:6:11" + }, + "nativeSrc": "11455:26:11", + "nodeType": "YulFunctionCall", + "src": "11455:26:11" + }, + "nativeSrc": "11452:39:11", + "nodeType": "YulIf", + "src": "11452:39:11" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "11206:1:11", + "nodeType": "YulLiteral", + "src": "11206:1:11", + "type": "", + "value": "1" + }, + "nativeSrc": "11199:306:11", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "11208:2:11", + "nodeType": "YulBlock", + "src": "11208:2:11", + "statements": [] + }, + "pre": { + "nativeSrc": "11203:2:11", + "nodeType": "YulBlock", + "src": "11203:2:11", + "statements": [] + }, + "src": "11199:306:11" + }, + { + "body": { + "nativeSrc": "11526:121:11", + "nodeType": "YulBlock", + "src": "11526:121:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "11551:4:11", + "nodeType": "YulLiteral", + "src": "11551:4:11", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "11557:10:11", + "nodeType": "YulLiteral", + "src": "11557:10:11", + "type": "", + "value": "0x2194895a" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11544:6:11", + "nodeType": "YulIdentifier", + "src": "11544:6:11" + }, + "nativeSrc": "11544:24:11", + "nodeType": "YulFunctionCall", + "src": "11544:24:11" + }, + "nativeSrc": "11544:24:11", + "nodeType": "YulExpressionStatement", + "src": "11544:24:11" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "11622:4:11", + "nodeType": "YulLiteral", + "src": "11622:4:11", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "11628:4:11", + "nodeType": "YulLiteral", + "src": "11628:4:11", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "11615:6:11", + "nodeType": "YulIdentifier", + "src": "11615:6:11" + }, + "nativeSrc": "11615:18:11", + "nodeType": "YulFunctionCall", + "src": "11615:18:11" + }, + "nativeSrc": "11615:18:11", + "nodeType": "YulExpressionStatement", + "src": "11615:18:11" + } + ] + }, + "condition": { + "name": "temp", + "nativeSrc": "11521:4:11", + "nodeType": "YulIdentifier", + "src": "11521:4:11" + }, + "nativeSrc": "11518:129:11", + "nodeType": "YulIf", + "src": "11518:129:11" + }, + { + "nativeSrc": "11660:25:11", + "nodeType": "YulVariableDeclaration", + "src": "11660:25:11", + "value": { + "arguments": [ + { + "name": "end", + "nativeSrc": "11673:3:11", + "nodeType": "YulIdentifier", + "src": "11673:3:11" + }, + { + "name": "result", + "nativeSrc": "11678:6:11", + "nodeType": "YulIdentifier", + "src": "11678:6:11" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "11669:3:11", + "nodeType": "YulIdentifier", + "src": "11669:3:11" + }, + "nativeSrc": "11669:16:11", + "nodeType": "YulFunctionCall", + "src": "11669:16:11" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "11664:1:11", + "nodeType": "YulTypedName", + "src": "11664:1:11", + "type": "" + } + ] + }, + { + "nativeSrc": "11698:27:11", + "nodeType": "YulAssignment", + "src": "11698:27:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "11712:6:11", + "nodeType": "YulIdentifier", + "src": "11712:6:11" + }, + { + "kind": "number", + "nativeSrc": "11720:4:11", + "nodeType": "YulLiteral", + "src": "11720:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "11708:3:11", + "nodeType": "YulIdentifier", + "src": "11708:3:11" + }, + "nativeSrc": "11708:17:11", + "nodeType": "YulFunctionCall", + "src": "11708:17:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "11698:6:11", + "nodeType": "YulIdentifier", + "src": "11698:6:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "11745:6:11", + "nodeType": "YulIdentifier", + "src": "11745:6:11" + }, + { + "name": "n", + "nativeSrc": "11753:1:11", + "nodeType": "YulIdentifier", + "src": "11753:1:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11738:6:11", + "nodeType": "YulIdentifier", + "src": "11738:6:11" + }, + "nativeSrc": "11738:17:11", + "nodeType": "YulFunctionCall", + "src": "11738:17:11" + }, + "nativeSrc": "11738:17:11", + "nodeType": "YulExpressionStatement", + "src": "11738:17:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5386, + "isOffset": false, + "isSlot": false, + "src": "10527:9:11", + "valueSize": 1 + }, + { + "declaration": 5386, + "isOffset": false, + "isSlot": false, + "src": "10930:9:11", + "valueSize": 1 + }, + { + "declaration": 5386, + "isOffset": false, + "isSlot": false, + "src": "10941:9:11", + "valueSize": 1 + }, + { + "declaration": 5389, + "isOffset": false, + "isSlot": false, + "src": "10485:6:11", + "valueSize": 1 + }, + { + "declaration": 5389, + "isOffset": false, + "isSlot": false, + "src": "10587:6:11", + "valueSize": 1 + }, + { + "declaration": 5389, + "isOffset": false, + "isSlot": false, + "src": "10641:6:11", + "valueSize": 1 + }, + { + "declaration": 5389, + "isOffset": false, + "isSlot": false, + "src": "10714:6:11", + "valueSize": 1 + }, + { + "declaration": 5389, + "isOffset": false, + "isSlot": false, + "src": "10918:6:11", + "valueSize": 1 + }, + { + "declaration": 5389, + "isOffset": false, + "isSlot": false, + "src": "11229:6:11", + "valueSize": 1 + }, + { + "declaration": 5389, + "isOffset": false, + "isSlot": false, + "src": "11243:6:11", + "valueSize": 1 + }, + { + "declaration": 5389, + "isOffset": false, + "isSlot": false, + "src": "11303:6:11", + "valueSize": 1 + }, + { + "declaration": 5389, + "isOffset": false, + "isSlot": false, + "src": "11361:6:11", + "valueSize": 1 + }, + { + "declaration": 5389, + "isOffset": false, + "isSlot": false, + "src": "11466:6:11", + "valueSize": 1 + }, + { + "declaration": 5389, + "isOffset": false, + "isSlot": false, + "src": "11678:6:11", + "valueSize": 1 + }, + { + "declaration": 5389, + "isOffset": false, + "isSlot": false, + "src": "11698:6:11", + "valueSize": 1 + }, + { + "declaration": 5389, + "isOffset": false, + "isSlot": false, + "src": "11712:6:11", + "valueSize": 1 + }, + { + "declaration": 5389, + "isOffset": false, + "isSlot": false, + "src": "11745:6:11", + "valueSize": 1 + }, + { + "declaration": 5384, + "isOffset": false, + "isSlot": false, + "src": "11013:5:11", + "valueSize": 1 + } + ], + "id": 5391, + "nodeType": "InlineAssembly", + "src": "10156:1630:11" + } + ] + }, + "documentation": { + "id": 5382, + "nodeType": "StructuredDocumentation", + "src": "9603:359:11", + "text": "@dev Returns the hexadecimal representation of `value`,\n left-padded to an input length of `byteCount` bytes.\n The output is not prefixed with \"0x\" and is encoded using 2 hexadecimal digits per byte,\n giving a total length of `byteCount * 2` bytes.\n Reverts if `byteCount` is too small for the output to contain all the digits." + }, + "id": 5393, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toHexStringNoPrefix", + "nameLocation": "9976:19:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5387, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5384, + "mutability": "mutable", + "name": "value", + "nameLocation": "10004:5:11", + "nodeType": "VariableDeclaration", + "scope": 5393, + "src": "9996:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5383, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9996:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5386, + "mutability": "mutable", + "name": "byteCount", + "nameLocation": "10019:9:11", + "nodeType": "VariableDeclaration", + "scope": 5393, + "src": "10011:17:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5385, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10011:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9995:34:11" + }, + "returnParameters": { + "id": 5390, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5389, + "mutability": "mutable", + "name": "result", + "nameLocation": "10091:6:11", + "nodeType": "VariableDeclaration", + "scope": 5393, + "src": "10077:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5388, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "10077:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "10076:22:11" + }, + "scope": 6145, + "src": "9967:1825:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5408, + "nodeType": "Block", + "src": "12147:360:11", + "statements": [ + { + "expression": { + "id": 5405, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5401, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5399, + "src": "12157:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 5403, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5396, + "src": "12186:5:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5402, + "name": "toHexStringNoPrefix", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5393, + 5451, + 5493, + 5519 + ], + "referencedDeclaration": 5451, + "src": "12166:19:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$", + "typeString": "function (uint256) pure returns (string memory)" + } + }, + "id": 5404, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12166:26:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "12157:35:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "id": 5406, + "nodeType": "ExpressionStatement", + "src": "12157:35:11" + }, + { + "AST": { + "nativeSrc": "12254:247:11", + "nodeType": "YulBlock", + "src": "12254:247:11", + "statements": [ + { + "nativeSrc": "12268:30:11", + "nodeType": "YulVariableDeclaration", + "src": "12268:30:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "12287:6:11", + "nodeType": "YulIdentifier", + "src": "12287:6:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "12281:5:11", + "nodeType": "YulIdentifier", + "src": "12281:5:11" + }, + "nativeSrc": "12281:13:11", + "nodeType": "YulFunctionCall", + "src": "12281:13:11" + }, + { + "kind": "number", + "nativeSrc": "12296:1:11", + "nodeType": "YulLiteral", + "src": "12296:1:11", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12277:3:11", + "nodeType": "YulIdentifier", + "src": "12277:3:11" + }, + "nativeSrc": "12277:21:11", + "nodeType": "YulFunctionCall", + "src": "12277:21:11" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "12272:1:11", + "nodeType": "YulTypedName", + "src": "12272:1:11", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "12341:6:11", + "nodeType": "YulIdentifier", + "src": "12341:6:11" + }, + { + "kind": "number", + "nativeSrc": "12349:6:11", + "nodeType": "YulLiteral", + "src": "12349:6:11", + "type": "", + "value": "0x3078" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12334:6:11", + "nodeType": "YulIdentifier", + "src": "12334:6:11" + }, + "nativeSrc": "12334:22:11", + "nodeType": "YulFunctionCall", + "src": "12334:22:11" + }, + "nativeSrc": "12334:22:11", + "nodeType": "YulExpressionStatement", + "src": "12334:22:11" + }, + { + "nativeSrc": "12395:24:11", + "nodeType": "YulAssignment", + "src": "12395:24:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "12409:6:11", + "nodeType": "YulIdentifier", + "src": "12409:6:11" + }, + { + "kind": "number", + "nativeSrc": "12417:1:11", + "nodeType": "YulLiteral", + "src": "12417:1:11", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "12405:3:11", + "nodeType": "YulIdentifier", + "src": "12405:3:11" + }, + "nativeSrc": "12405:14:11", + "nodeType": "YulFunctionCall", + "src": "12405:14:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "12395:6:11", + "nodeType": "YulIdentifier", + "src": "12395:6:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "12460:6:11", + "nodeType": "YulIdentifier", + "src": "12460:6:11" + }, + { + "name": "n", + "nativeSrc": "12468:1:11", + "nodeType": "YulIdentifier", + "src": "12468:1:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12453:6:11", + "nodeType": "YulIdentifier", + "src": "12453:6:11" + }, + "nativeSrc": "12453:17:11", + "nodeType": "YulFunctionCall", + "src": "12453:17:11" + }, + "nativeSrc": "12453:17:11", + "nodeType": "YulExpressionStatement", + "src": "12453:17:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5399, + "isOffset": false, + "isSlot": false, + "src": "12287:6:11", + "valueSize": 1 + }, + { + "declaration": 5399, + "isOffset": false, + "isSlot": false, + "src": "12341:6:11", + "valueSize": 1 + }, + { + "declaration": 5399, + "isOffset": false, + "isSlot": false, + "src": "12395:6:11", + "valueSize": 1 + }, + { + "declaration": 5399, + "isOffset": false, + "isSlot": false, + "src": "12409:6:11", + "valueSize": 1 + }, + { + "declaration": 5399, + "isOffset": false, + "isSlot": false, + "src": "12460:6:11", + "valueSize": 1 + } + ], + "id": 5407, + "nodeType": "InlineAssembly", + "src": "12245:256:11" + } + ] + }, + "documentation": { + "id": 5394, + "nodeType": "StructuredDocumentation", + "src": "11798:263:11", + "text": "@dev Returns the hexadecimal representation of `value`.\n The output is prefixed with \"0x\" and encoded using 2 hexadecimal digits per byte.\n As address are 20 bytes long, the output will left-padded to have\n a length of `20 * 2 + 2` bytes." + }, + "id": 5409, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toHexString", + "nameLocation": "12075:11:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5397, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5396, + "mutability": "mutable", + "name": "value", + "nameLocation": "12095:5:11", + "nodeType": "VariableDeclaration", + "scope": 5409, + "src": "12087:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5395, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12087:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12086:15:11" + }, + "returnParameters": { + "id": 5400, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5399, + "mutability": "mutable", + "name": "result", + "nameLocation": "12139:6:11", + "nodeType": "VariableDeclaration", + "scope": 5409, + "src": "12125:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5398, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "12125:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "12124:22:11" + }, + "scope": 6145, + "src": "12066:441:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5424, + "nodeType": "Block", + "src": "12844:572:11", + "statements": [ + { + "expression": { + "id": 5421, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5417, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5415, + "src": "12854:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 5419, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5412, + "src": "12883:5:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5418, + "name": "toHexStringNoPrefix", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5393, + 5451, + 5493, + 5519 + ], + "referencedDeclaration": 5451, + "src": "12863:19:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$", + "typeString": "function (uint256) pure returns (string memory)" + } + }, + "id": 5420, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12863:26:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "12854:35:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "id": 5422, + "nodeType": "ExpressionStatement", + "src": "12854:35:11" + }, + { + "AST": { + "nativeSrc": "12951:459:11", + "nodeType": "YulBlock", + "src": "12951:459:11", + "statements": [ + { + "nativeSrc": "12965:52:11", + "nodeType": "YulVariableDeclaration", + "src": "12965:52:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12982:1:11", + "nodeType": "YulLiteral", + "src": "12982:1:11", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "12995:6:11", + "nodeType": "YulIdentifier", + "src": "12995:6:11" + }, + { + "kind": "number", + "nativeSrc": "13003:4:11", + "nodeType": "YulLiteral", + "src": "13003:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12991:3:11", + "nodeType": "YulIdentifier", + "src": "12991:3:11" + }, + "nativeSrc": "12991:17:11", + "nodeType": "YulFunctionCall", + "src": "12991:17:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "12985:5:11", + "nodeType": "YulIdentifier", + "src": "12985:5:11" + }, + "nativeSrc": "12985:24:11", + "nodeType": "YulFunctionCall", + "src": "12985:24:11" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "12977:4:11", + "nodeType": "YulIdentifier", + "src": "12977:4:11" + }, + "nativeSrc": "12977:33:11", + "nodeType": "YulFunctionCall", + "src": "12977:33:11" + }, + { + "kind": "number", + "nativeSrc": "13012:4:11", + "nodeType": "YulLiteral", + "src": "13012:4:11", + "type": "", + "value": "0x30" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "12974:2:11", + "nodeType": "YulIdentifier", + "src": "12974:2:11" + }, + "nativeSrc": "12974:43:11", + "nodeType": "YulFunctionCall", + "src": "12974:43:11" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "12969:1:11", + "nodeType": "YulTypedName", + "src": "12969:1:11", + "type": "" + } + ] + }, + { + "nativeSrc": "13066:30:11", + "nodeType": "YulVariableDeclaration", + "src": "13066:30:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "13085:6:11", + "nodeType": "YulIdentifier", + "src": "13085:6:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "13079:5:11", + "nodeType": "YulIdentifier", + "src": "13079:5:11" + }, + "nativeSrc": "13079:13:11", + "nodeType": "YulFunctionCall", + "src": "13079:13:11" + }, + { + "kind": "number", + "nativeSrc": "13094:1:11", + "nodeType": "YulLiteral", + "src": "13094:1:11", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13075:3:11", + "nodeType": "YulIdentifier", + "src": "13075:3:11" + }, + "nativeSrc": "13075:21:11", + "nodeType": "YulFunctionCall", + "src": "13075:21:11" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "13070:1:11", + "nodeType": "YulTypedName", + "src": "13070:1:11", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "13143:6:11", + "nodeType": "YulIdentifier", + "src": "13143:6:11" + }, + { + "name": "o", + "nativeSrc": "13151:1:11", + "nodeType": "YulIdentifier", + "src": "13151:1:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13139:3:11", + "nodeType": "YulIdentifier", + "src": "13139:3:11" + }, + "nativeSrc": "13139:14:11", + "nodeType": "YulFunctionCall", + "src": "13139:14:11" + }, + { + "kind": "number", + "nativeSrc": "13155:6:11", + "nodeType": "YulLiteral", + "src": "13155:6:11", + "type": "", + "value": "0x3078" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13132:6:11", + "nodeType": "YulIdentifier", + "src": "13132:6:11" + }, + "nativeSrc": "13132:30:11", + "nodeType": "YulFunctionCall", + "src": "13132:30:11" + }, + "nativeSrc": "13132:30:11", + "nodeType": "YulExpressionStatement", + "src": "13132:30:11" + }, + { + "nativeSrc": "13230:32:11", + "nodeType": "YulAssignment", + "src": "13230:32:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "13248:6:11", + "nodeType": "YulIdentifier", + "src": "13248:6:11" + }, + { + "name": "o", + "nativeSrc": "13256:1:11", + "nodeType": "YulIdentifier", + "src": "13256:1:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13244:3:11", + "nodeType": "YulIdentifier", + "src": "13244:3:11" + }, + "nativeSrc": "13244:14:11", + "nodeType": "YulFunctionCall", + "src": "13244:14:11" + }, + { + "kind": "number", + "nativeSrc": "13260:1:11", + "nodeType": "YulLiteral", + "src": "13260:1:11", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "13240:3:11", + "nodeType": "YulIdentifier", + "src": "13240:3:11" + }, + "nativeSrc": "13240:22:11", + "nodeType": "YulFunctionCall", + "src": "13240:22:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "13230:6:11", + "nodeType": "YulIdentifier", + "src": "13230:6:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "13332:6:11", + "nodeType": "YulIdentifier", + "src": "13332:6:11" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "13344:1:11", + "nodeType": "YulIdentifier", + "src": "13344:1:11" + }, + { + "name": "o", + "nativeSrc": "13347:1:11", + "nodeType": "YulIdentifier", + "src": "13347:1:11" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "13340:3:11", + "nodeType": "YulIdentifier", + "src": "13340:3:11" + }, + "nativeSrc": "13340:9:11", + "nodeType": "YulFunctionCall", + "src": "13340:9:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13325:6:11", + "nodeType": "YulIdentifier", + "src": "13325:6:11" + }, + "nativeSrc": "13325:25:11", + "nodeType": "YulFunctionCall", + "src": "13325:25:11" + }, + "nativeSrc": "13325:25:11", + "nodeType": "YulExpressionStatement", + "src": "13325:25:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5415, + "isOffset": false, + "isSlot": false, + "src": "12995:6:11", + "valueSize": 1 + }, + { + "declaration": 5415, + "isOffset": false, + "isSlot": false, + "src": "13085:6:11", + "valueSize": 1 + }, + { + "declaration": 5415, + "isOffset": false, + "isSlot": false, + "src": "13143:6:11", + "valueSize": 1 + }, + { + "declaration": 5415, + "isOffset": false, + "isSlot": false, + "src": "13230:6:11", + "valueSize": 1 + }, + { + "declaration": 5415, + "isOffset": false, + "isSlot": false, + "src": "13248:6:11", + "valueSize": 1 + }, + { + "declaration": 5415, + "isOffset": false, + "isSlot": false, + "src": "13332:6:11", + "valueSize": 1 + } + ], + "id": 5423, + "nodeType": "InlineAssembly", + "src": "12942:468:11" + } + ] + }, + "documentation": { + "id": 5410, + "nodeType": "StructuredDocumentation", + "src": "12513:238:11", + "text": "@dev Returns the hexadecimal representation of `value`.\n The output is prefixed with \"0x\".\n The output excludes leading \"0\" from the `toHexString` output.\n `0x00: \"0x0\", 0x01: \"0x1\", 0x12: \"0x12\", 0x123: \"0x123\"`." + }, + "id": 5425, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toMinimalHexString", + "nameLocation": "12765:18:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5413, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5412, + "mutability": "mutable", + "name": "value", + "nameLocation": "12792:5:11", + "nodeType": "VariableDeclaration", + "scope": 5425, + "src": "12784:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5411, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12784:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12783:15:11" + }, + "returnParameters": { + "id": 5416, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5415, + "mutability": "mutable", + "name": "result", + "nameLocation": "12836:6:11", + "nodeType": "VariableDeclaration", + "scope": 5425, + "src": "12822:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5414, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "12822:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "12821:22:11" + }, + "scope": 6145, + "src": "12756:660:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5440, + "nodeType": "Block", + "src": "13747:454:11", + "statements": [ + { + "expression": { + "id": 5437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5433, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5431, + "src": "13757:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 5435, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5428, + "src": "13786:5:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5434, + "name": "toHexStringNoPrefix", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5393, + 5451, + 5493, + 5519 + ], + "referencedDeclaration": 5451, + "src": "13766:19:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$", + "typeString": "function (uint256) pure returns (string memory)" + } + }, + "id": 5436, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13766:26:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "13757:35:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "id": 5438, + "nodeType": "ExpressionStatement", + "src": "13757:35:11" + }, + { + "AST": { + "nativeSrc": "13854:341:11", + "nodeType": "YulBlock", + "src": "13854:341:11", + "statements": [ + { + "nativeSrc": "13868:52:11", + "nodeType": "YulVariableDeclaration", + "src": "13868:52:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13885:1:11", + "nodeType": "YulLiteral", + "src": "13885:1:11", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "13898:6:11", + "nodeType": "YulIdentifier", + "src": "13898:6:11" + }, + { + "kind": "number", + "nativeSrc": "13906:4:11", + "nodeType": "YulLiteral", + "src": "13906:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13894:3:11", + "nodeType": "YulIdentifier", + "src": "13894:3:11" + }, + "nativeSrc": "13894:17:11", + "nodeType": "YulFunctionCall", + "src": "13894:17:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "13888:5:11", + "nodeType": "YulIdentifier", + "src": "13888:5:11" + }, + "nativeSrc": "13888:24:11", + "nodeType": "YulFunctionCall", + "src": "13888:24:11" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "13880:4:11", + "nodeType": "YulIdentifier", + "src": "13880:4:11" + }, + "nativeSrc": "13880:33:11", + "nodeType": "YulFunctionCall", + "src": "13880:33:11" + }, + { + "kind": "number", + "nativeSrc": "13915:4:11", + "nodeType": "YulLiteral", + "src": "13915:4:11", + "type": "", + "value": "0x30" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "13877:2:11", + "nodeType": "YulIdentifier", + "src": "13877:2:11" + }, + "nativeSrc": "13877:43:11", + "nodeType": "YulFunctionCall", + "src": "13877:43:11" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "13872:1:11", + "nodeType": "YulTypedName", + "src": "13872:1:11", + "type": "" + } + ] + }, + { + "nativeSrc": "13969:22:11", + "nodeType": "YulVariableDeclaration", + "src": "13969:22:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "13984:6:11", + "nodeType": "YulIdentifier", + "src": "13984:6:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "13978:5:11", + "nodeType": "YulIdentifier", + "src": "13978:5:11" + }, + "nativeSrc": "13978:13:11", + "nodeType": "YulFunctionCall", + "src": "13978:13:11" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "13973:1:11", + "nodeType": "YulTypedName", + "src": "13973:1:11", + "type": "" + } + ] + }, + { + "nativeSrc": "14023:24:11", + "nodeType": "YulAssignment", + "src": "14023:24:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "14037:6:11", + "nodeType": "YulIdentifier", + "src": "14037:6:11" + }, + { + "name": "o", + "nativeSrc": "14045:1:11", + "nodeType": "YulIdentifier", + "src": "14045:1:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14033:3:11", + "nodeType": "YulIdentifier", + "src": "14033:3:11" + }, + "nativeSrc": "14033:14:11", + "nodeType": "YulFunctionCall", + "src": "14033:14:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "14023:6:11", + "nodeType": "YulIdentifier", + "src": "14023:6:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "14117:6:11", + "nodeType": "YulIdentifier", + "src": "14117:6:11" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "14129:1:11", + "nodeType": "YulIdentifier", + "src": "14129:1:11" + }, + { + "name": "o", + "nativeSrc": "14132:1:11", + "nodeType": "YulIdentifier", + "src": "14132:1:11" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "14125:3:11", + "nodeType": "YulIdentifier", + "src": "14125:3:11" + }, + "nativeSrc": "14125:9:11", + "nodeType": "YulFunctionCall", + "src": "14125:9:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "14110:6:11", + "nodeType": "YulIdentifier", + "src": "14110:6:11" + }, + "nativeSrc": "14110:25:11", + "nodeType": "YulFunctionCall", + "src": "14110:25:11" + }, + "nativeSrc": "14110:25:11", + "nodeType": "YulExpressionStatement", + "src": "14110:25:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5431, + "isOffset": false, + "isSlot": false, + "src": "13898:6:11", + "valueSize": 1 + }, + { + "declaration": 5431, + "isOffset": false, + "isSlot": false, + "src": "13984:6:11", + "valueSize": 1 + }, + { + "declaration": 5431, + "isOffset": false, + "isSlot": false, + "src": "14023:6:11", + "valueSize": 1 + }, + { + "declaration": 5431, + "isOffset": false, + "isSlot": false, + "src": "14037:6:11", + "valueSize": 1 + }, + { + "declaration": 5431, + "isOffset": false, + "isSlot": false, + "src": "14117:6:11", + "valueSize": 1 + } + ], + "id": 5439, + "nodeType": "InlineAssembly", + "src": "13845:350:11" + } + ] + }, + "documentation": { + "id": 5426, + "nodeType": "StructuredDocumentation", + "src": "13422:196:11", + "text": "@dev Returns the hexadecimal representation of `value`.\n The output excludes leading \"0\" from the `toHexStringNoPrefix` output.\n `0x00: \"0\", 0x01: \"1\", 0x12: \"12\", 0x123: \"123\"`." + }, + "id": 5441, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toMinimalHexStringNoPrefix", + "nameLocation": "13632:26:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5429, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5428, + "mutability": "mutable", + "name": "value", + "nameLocation": "13667:5:11", + "nodeType": "VariableDeclaration", + "scope": 5441, + "src": "13659:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5427, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13659:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "13658:15:11" + }, + "returnParameters": { + "id": 5432, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5431, + "mutability": "mutable", + "name": "result", + "nameLocation": "13735:6:11", + "nodeType": "VariableDeclaration", + "scope": 5441, + "src": "13721:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5430, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "13721:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "13720:22:11" + }, + "scope": 6145, + "src": "13623:578:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5450, + "nodeType": "Block", + "src": "14537:1344:11", + "statements": [ + { + "AST": { + "nativeSrc": "14599:1276:11", + "nodeType": "YulBlock", + "src": "14599:1276:11", + "statements": [ + { + "nativeSrc": "14863:32:11", + "nodeType": "YulAssignment", + "src": "14863:32:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14883:4:11", + "nodeType": "YulLiteral", + "src": "14883:4:11", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "14877:5:11", + "nodeType": "YulIdentifier", + "src": "14877:5:11" + }, + "nativeSrc": "14877:11:11", + "nodeType": "YulFunctionCall", + "src": "14877:11:11" + }, + { + "kind": "number", + "nativeSrc": "14890:4:11", + "nodeType": "YulLiteral", + "src": "14890:4:11", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14873:3:11", + "nodeType": "YulIdentifier", + "src": "14873:3:11" + }, + "nativeSrc": "14873:22:11", + "nodeType": "YulFunctionCall", + "src": "14873:22:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "14863:6:11", + "nodeType": "YulIdentifier", + "src": "14863:6:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14915:4:11", + "nodeType": "YulLiteral", + "src": "14915:4:11", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "result", + "nativeSrc": "14925:6:11", + "nodeType": "YulIdentifier", + "src": "14925:6:11" + }, + { + "kind": "number", + "nativeSrc": "14933:4:11", + "nodeType": "YulLiteral", + "src": "14933:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14921:3:11", + "nodeType": "YulIdentifier", + "src": "14921:3:11" + }, + "nativeSrc": "14921:17:11", + "nodeType": "YulFunctionCall", + "src": "14921:17:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "14908:6:11", + "nodeType": "YulIdentifier", + "src": "14908:6:11" + }, + "nativeSrc": "14908:31:11", + "nodeType": "YulFunctionCall", + "src": "14908:31:11" + }, + "nativeSrc": "14908:31:11", + "nodeType": "YulExpressionStatement", + "src": "14908:31:11" + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "14979:6:11", + "nodeType": "YulIdentifier", + "src": "14979:6:11" + }, + { + "kind": "number", + "nativeSrc": "14987:1:11", + "nodeType": "YulLiteral", + "src": "14987:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "14972:6:11", + "nodeType": "YulIdentifier", + "src": "14972:6:11" + }, + "nativeSrc": "14972:17:11", + "nodeType": "YulFunctionCall", + "src": "14972:17:11" + }, + "nativeSrc": "14972:17:11", + "nodeType": "YulExpressionStatement", + "src": "14972:17:11" + }, + { + "nativeSrc": "15041:17:11", + "nodeType": "YulVariableDeclaration", + "src": "15041:17:11", + "value": { + "name": "result", + "nativeSrc": "15052:6:11", + "nodeType": "YulIdentifier", + "src": "15052:6:11" + }, + "variables": [ + { + "name": "end", + "nativeSrc": "15045:3:11", + "nodeType": "YulTypedName", + "src": "15045:3:11", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "15126:4:11", + "nodeType": "YulLiteral", + "src": "15126:4:11", + "type": "", + "value": "0x0f" + }, + { + "kind": "number", + "nativeSrc": "15132:34:11", + "nodeType": "YulLiteral", + "src": "15132:34:11", + "type": "", + "value": "0x30313233343536373839616263646566" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "15119:6:11", + "nodeType": "YulIdentifier", + "src": "15119:6:11" + }, + "nativeSrc": "15119:48:11", + "nodeType": "YulFunctionCall", + "src": "15119:48:11" + }, + "nativeSrc": "15119:48:11", + "nodeType": "YulExpressionStatement", + "src": "15119:48:11" + }, + { + "nativeSrc": "15221:15:11", + "nodeType": "YulVariableDeclaration", + "src": "15221:15:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "15234:1:11", + "nodeType": "YulLiteral", + "src": "15234:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "15230:3:11", + "nodeType": "YulIdentifier", + "src": "15230:3:11" + }, + "nativeSrc": "15230:6:11", + "nodeType": "YulFunctionCall", + "src": "15230:6:11" + }, + "variables": [ + { + "name": "w", + "nativeSrc": "15225:1:11", + "nodeType": "YulTypedName", + "src": "15225:1:11", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "15456:280:11", + "nodeType": "YulBlock", + "src": "15456:280:11", + "statements": [ + { + "nativeSrc": "15474:24:11", + "nodeType": "YulAssignment", + "src": "15474:24:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "15488:6:11", + "nodeType": "YulIdentifier", + "src": "15488:6:11" + }, + { + "name": "w", + "nativeSrc": "15496:1:11", + "nodeType": "YulIdentifier", + "src": "15496:1:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15484:3:11", + "nodeType": "YulIdentifier", + "src": "15484:3:11" + }, + "nativeSrc": "15484:14:11", + "nodeType": "YulFunctionCall", + "src": "15484:14:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "15474:6:11", + "nodeType": "YulIdentifier", + "src": "15474:6:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "15548:6:11", + "nodeType": "YulIdentifier", + "src": "15548:6:11" + }, + { + "kind": "number", + "nativeSrc": "15556:1:11", + "nodeType": "YulLiteral", + "src": "15556:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15544:3:11", + "nodeType": "YulIdentifier", + "src": "15544:3:11" + }, + "nativeSrc": "15544:14:11", + "nodeType": "YulFunctionCall", + "src": "15544:14:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "temp", + "nativeSrc": "15570:4:11", + "nodeType": "YulIdentifier", + "src": "15570:4:11" + }, + { + "kind": "number", + "nativeSrc": "15576:2:11", + "nodeType": "YulLiteral", + "src": "15576:2:11", + "type": "", + "value": "15" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "15566:3:11", + "nodeType": "YulIdentifier", + "src": "15566:3:11" + }, + "nativeSrc": "15566:13:11", + "nodeType": "YulFunctionCall", + "src": "15566:13:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "15560:5:11", + "nodeType": "YulIdentifier", + "src": "15560:5:11" + }, + "nativeSrc": "15560:20:11", + "nodeType": "YulFunctionCall", + "src": "15560:20:11" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "15536:7:11", + "nodeType": "YulIdentifier", + "src": "15536:7:11" + }, + "nativeSrc": "15536:45:11", + "nodeType": "YulFunctionCall", + "src": "15536:45:11" + }, + "nativeSrc": "15536:45:11", + "nodeType": "YulExpressionStatement", + "src": "15536:45:11" + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "15606:6:11", + "nodeType": "YulIdentifier", + "src": "15606:6:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "15628:1:11", + "nodeType": "YulLiteral", + "src": "15628:1:11", + "type": "", + "value": "4" + }, + { + "name": "temp", + "nativeSrc": "15631:4:11", + "nodeType": "YulIdentifier", + "src": "15631:4:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "15624:3:11", + "nodeType": "YulIdentifier", + "src": "15624:3:11" + }, + "nativeSrc": "15624:12:11", + "nodeType": "YulFunctionCall", + "src": "15624:12:11" + }, + { + "kind": "number", + "nativeSrc": "15638:2:11", + "nodeType": "YulLiteral", + "src": "15638:2:11", + "type": "", + "value": "15" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "15620:3:11", + "nodeType": "YulIdentifier", + "src": "15620:3:11" + }, + "nativeSrc": "15620:21:11", + "nodeType": "YulFunctionCall", + "src": "15620:21:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "15614:5:11", + "nodeType": "YulIdentifier", + "src": "15614:5:11" + }, + "nativeSrc": "15614:28:11", + "nodeType": "YulFunctionCall", + "src": "15614:28:11" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "15598:7:11", + "nodeType": "YulIdentifier", + "src": "15598:7:11" + }, + "nativeSrc": "15598:45:11", + "nodeType": "YulFunctionCall", + "src": "15598:45:11" + }, + "nativeSrc": "15598:45:11", + "nodeType": "YulExpressionStatement", + "src": "15598:45:11" + }, + { + "nativeSrc": "15660:20:11", + "nodeType": "YulAssignment", + "src": "15660:20:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "15672:1:11", + "nodeType": "YulLiteral", + "src": "15672:1:11", + "type": "", + "value": "8" + }, + { + "name": "temp", + "nativeSrc": "15675:4:11", + "nodeType": "YulIdentifier", + "src": "15675:4:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "15668:3:11", + "nodeType": "YulIdentifier", + "src": "15668:3:11" + }, + "nativeSrc": "15668:12:11", + "nodeType": "YulFunctionCall", + "src": "15668:12:11" + }, + "variableNames": [ + { + "name": "temp", + "nativeSrc": "15660:4:11", + "nodeType": "YulIdentifier", + "src": "15660:4:11" + } + ] + }, + { + "body": { + "nativeSrc": "15713:9:11", + "nodeType": "YulBlock", + "src": "15713:9:11", + "statements": [ + { + "nativeSrc": "15715:5:11", + "nodeType": "YulBreak", + "src": "15715:5:11" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "temp", + "nativeSrc": "15707:4:11", + "nodeType": "YulIdentifier", + "src": "15707:4:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "15700:6:11", + "nodeType": "YulIdentifier", + "src": "15700:6:11" + }, + "nativeSrc": "15700:12:11", + "nodeType": "YulFunctionCall", + "src": "15700:12:11" + }, + "nativeSrc": "15697:25:11", + "nodeType": "YulIf", + "src": "15697:25:11" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "15451:1:11", + "nodeType": "YulLiteral", + "src": "15451:1:11", + "type": "", + "value": "1" + }, + "nativeSrc": "15425:311:11", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "15453:2:11", + "nodeType": "YulBlock", + "src": "15453:2:11", + "statements": [] + }, + "pre": { + "nativeSrc": "15429:21:11", + "nodeType": "YulBlock", + "src": "15429:21:11", + "statements": [ + { + "nativeSrc": "15431:17:11", + "nodeType": "YulVariableDeclaration", + "src": "15431:17:11", + "value": { + "name": "value", + "nativeSrc": "15443:5:11", + "nodeType": "YulIdentifier", + "src": "15443:5:11" + }, + "variables": [ + { + "name": "temp", + "nativeSrc": "15435:4:11", + "nodeType": "YulTypedName", + "src": "15435:4:11", + "type": "" + } + ] + } + ] + }, + "src": "15425:311:11" + }, + { + "nativeSrc": "15749:25:11", + "nodeType": "YulVariableDeclaration", + "src": "15749:25:11", + "value": { + "arguments": [ + { + "name": "end", + "nativeSrc": "15762:3:11", + "nodeType": "YulIdentifier", + "src": "15762:3:11" + }, + { + "name": "result", + "nativeSrc": "15767:6:11", + "nodeType": "YulIdentifier", + "src": "15767:6:11" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "15758:3:11", + "nodeType": "YulIdentifier", + "src": "15758:3:11" + }, + "nativeSrc": "15758:16:11", + "nodeType": "YulFunctionCall", + "src": "15758:16:11" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "15753:1:11", + "nodeType": "YulTypedName", + "src": "15753:1:11", + "type": "" + } + ] + }, + { + "nativeSrc": "15787:27:11", + "nodeType": "YulAssignment", + "src": "15787:27:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "15801:6:11", + "nodeType": "YulIdentifier", + "src": "15801:6:11" + }, + { + "kind": "number", + "nativeSrc": "15809:4:11", + "nodeType": "YulLiteral", + "src": "15809:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "15797:3:11", + "nodeType": "YulIdentifier", + "src": "15797:3:11" + }, + "nativeSrc": "15797:17:11", + "nodeType": "YulFunctionCall", + "src": "15797:17:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "15787:6:11", + "nodeType": "YulIdentifier", + "src": "15787:6:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "15834:6:11", + "nodeType": "YulIdentifier", + "src": "15834:6:11" + }, + { + "name": "n", + "nativeSrc": "15842:1:11", + "nodeType": "YulIdentifier", + "src": "15842:1:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "15827:6:11", + "nodeType": "YulIdentifier", + "src": "15827:6:11" + }, + "nativeSrc": "15827:17:11", + "nodeType": "YulFunctionCall", + "src": "15827:17:11" + }, + "nativeSrc": "15827:17:11", + "nodeType": "YulExpressionStatement", + "src": "15827:17:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5447, + "isOffset": false, + "isSlot": false, + "src": "14863:6:11", + "valueSize": 1 + }, + { + "declaration": 5447, + "isOffset": false, + "isSlot": false, + "src": "14925:6:11", + "valueSize": 1 + }, + { + "declaration": 5447, + "isOffset": false, + "isSlot": false, + "src": "14979:6:11", + "valueSize": 1 + }, + { + "declaration": 5447, + "isOffset": false, + "isSlot": false, + "src": "15052:6:11", + "valueSize": 1 + }, + { + "declaration": 5447, + "isOffset": false, + "isSlot": false, + "src": "15474:6:11", + "valueSize": 1 + }, + { + "declaration": 5447, + "isOffset": false, + "isSlot": false, + "src": "15488:6:11", + "valueSize": 1 + }, + { + "declaration": 5447, + "isOffset": false, + "isSlot": false, + "src": "15548:6:11", + "valueSize": 1 + }, + { + "declaration": 5447, + "isOffset": false, + "isSlot": false, + "src": "15606:6:11", + "valueSize": 1 + }, + { + "declaration": 5447, + "isOffset": false, + "isSlot": false, + "src": "15767:6:11", + "valueSize": 1 + }, + { + "declaration": 5447, + "isOffset": false, + "isSlot": false, + "src": "15787:6:11", + "valueSize": 1 + }, + { + "declaration": 5447, + "isOffset": false, + "isSlot": false, + "src": "15801:6:11", + "valueSize": 1 + }, + { + "declaration": 5447, + "isOffset": false, + "isSlot": false, + "src": "15834:6:11", + "valueSize": 1 + }, + { + "declaration": 5444, + "isOffset": false, + "isSlot": false, + "src": "15443:5:11", + "valueSize": 1 + } + ], + "id": 5449, + "nodeType": "InlineAssembly", + "src": "14590:1285:11" + } + ] + }, + "documentation": { + "id": 5442, + "nodeType": "StructuredDocumentation", + "src": "14207:236:11", + "text": "@dev Returns the hexadecimal representation of `value`.\n The output is encoded using 2 hexadecimal digits per byte.\n As address are 20 bytes long, the output will left-padded to have\n a length of `20 * 2` bytes." + }, + "id": 5451, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toHexStringNoPrefix", + "nameLocation": "14457:19:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5445, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5444, + "mutability": "mutable", + "name": "value", + "nameLocation": "14485:5:11", + "nodeType": "VariableDeclaration", + "scope": 5451, + "src": "14477:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5443, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14477:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "14476:15:11" + }, + "returnParameters": { + "id": 5448, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5447, + "mutability": "mutable", + "name": "result", + "nameLocation": "14529:6:11", + "nodeType": "VariableDeclaration", + "scope": 5451, + "src": "14515:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5446, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "14515:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "14514:22:11" + }, + "scope": 6145, + "src": "14448:1433:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5466, + "nodeType": "Block", + "src": "16245:755:11", + "statements": [ + { + "expression": { + "id": 5463, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5459, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5457, + "src": "16255:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 5461, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5454, + "src": "16276:5:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5460, + "name": "toHexString", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5381, + 5409, + 5483, + 5509 + ], + "referencedDeclaration": 5483, + "src": "16264:11:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_string_memory_ptr_$", + "typeString": "function (address) pure returns (string memory)" + } + }, + "id": 5462, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16264:18:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "16255:27:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "id": 5464, + "nodeType": "ExpressionStatement", + "src": "16255:27:11" + }, + { + "AST": { + "nativeSrc": "16344:650:11", + "nodeType": "YulBlock", + "src": "16344:650:11", + "statements": [ + { + "nativeSrc": "16358:36:11", + "nodeType": "YulVariableDeclaration", + "src": "16358:36:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "16374:1:11", + "nodeType": "YulLiteral", + "src": "16374:1:11", + "type": "", + "value": "6" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "16385:1:11", + "nodeType": "YulLiteral", + "src": "16385:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "16381:3:11", + "nodeType": "YulIdentifier", + "src": "16381:3:11" + }, + "nativeSrc": "16381:6:11", + "nodeType": "YulFunctionCall", + "src": "16381:6:11" + }, + { + "kind": "number", + "nativeSrc": "16389:3:11", + "nodeType": "YulLiteral", + "src": "16389:3:11", + "type": "", + "value": "255" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "16377:3:11", + "nodeType": "YulIdentifier", + "src": "16377:3:11" + }, + "nativeSrc": "16377:16:11", + "nodeType": "YulFunctionCall", + "src": "16377:16:11" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "16370:3:11", + "nodeType": "YulIdentifier", + "src": "16370:3:11" + }, + "nativeSrc": "16370:24:11", + "nodeType": "YulFunctionCall", + "src": "16370:24:11" + }, + "variables": [ + { + "name": "mask", + "nativeSrc": "16362:4:11", + "nodeType": "YulTypedName", + "src": "16362:4:11", + "type": "" + } + ] + }, + { + "nativeSrc": "16437:26:11", + "nodeType": "YulVariableDeclaration", + "src": "16437:26:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "16450:6:11", + "nodeType": "YulIdentifier", + "src": "16450:6:11" + }, + { + "kind": "number", + "nativeSrc": "16458:4:11", + "nodeType": "YulLiteral", + "src": "16458:4:11", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16446:3:11", + "nodeType": "YulIdentifier", + "src": "16446:3:11" + }, + "nativeSrc": "16446:17:11", + "nodeType": "YulFunctionCall", + "src": "16446:17:11" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "16441:1:11", + "nodeType": "YulTypedName", + "src": "16441:1:11", + "type": "" + } + ] + }, + { + "nativeSrc": "16476:50:11", + "nodeType": "YulVariableDeclaration", + "src": "16476:50:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "16504:1:11", + "nodeType": "YulIdentifier", + "src": "16504:1:11" + }, + { + "kind": "number", + "nativeSrc": "16507:2:11", + "nodeType": "YulLiteral", + "src": "16507:2:11", + "type": "", + "value": "40" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "16494:9:11", + "nodeType": "YulIdentifier", + "src": "16494:9:11" + }, + "nativeSrc": "16494:16:11", + "nodeType": "YulFunctionCall", + "src": "16494:16:11" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "16516:2:11", + "nodeType": "YulLiteral", + "src": "16516:2:11", + "type": "", + "value": "34" + }, + { + "name": "mask", + "nativeSrc": "16520:4:11", + "nodeType": "YulIdentifier", + "src": "16520:4:11" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "16512:3:11", + "nodeType": "YulIdentifier", + "src": "16512:3:11" + }, + "nativeSrc": "16512:13:11", + "nodeType": "YulFunctionCall", + "src": "16512:13:11" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "16490:3:11", + "nodeType": "YulIdentifier", + "src": "16490:3:11" + }, + "nativeSrc": "16490:36:11", + "nodeType": "YulFunctionCall", + "src": "16490:36:11" + }, + "variables": [ + { + "name": "hashed", + "nativeSrc": "16480:6:11", + "nodeType": "YulTypedName", + "src": "16480:6:11", + "type": "" + } + ] + }, + { + "nativeSrc": "16560:22:11", + "nodeType": "YulVariableDeclaration", + "src": "16560:22:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "16573:3:11", + "nodeType": "YulLiteral", + "src": "16573:3:11", + "type": "", + "value": "240" + }, + { + "kind": "number", + "nativeSrc": "16578:3:11", + "nodeType": "YulLiteral", + "src": "16578:3:11", + "type": "", + "value": "136" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "16569:3:11", + "nodeType": "YulIdentifier", + "src": "16569:3:11" + }, + "nativeSrc": "16569:13:11", + "nodeType": "YulFunctionCall", + "src": "16569:13:11" + }, + "variables": [ + { + "name": "t", + "nativeSrc": "16564:1:11", + "nodeType": "YulTypedName", + "src": "16564:1:11", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "16642:144:11", + "nodeType": "YulBlock", + "src": "16642:144:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "16671:1:11", + "nodeType": "YulIdentifier", + "src": "16671:1:11" + }, + { + "name": "i", + "nativeSrc": "16674:1:11", + "nodeType": "YulIdentifier", + "src": "16674:1:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16667:3:11", + "nodeType": "YulIdentifier", + "src": "16667:3:11" + }, + "nativeSrc": "16667:9:11", + "nodeType": "YulFunctionCall", + "src": "16667:9:11" + }, + { + "arguments": [ + { + "name": "t", + "nativeSrc": "16682:1:11", + "nodeType": "YulIdentifier", + "src": "16682:1:11" + }, + { + "arguments": [ + { + "name": "i", + "nativeSrc": "16690:1:11", + "nodeType": "YulIdentifier", + "src": "16690:1:11" + }, + { + "name": "hashed", + "nativeSrc": "16693:6:11", + "nodeType": "YulIdentifier", + "src": "16693:6:11" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "16685:4:11", + "nodeType": "YulIdentifier", + "src": "16685:4:11" + }, + "nativeSrc": "16685:15:11", + "nodeType": "YulFunctionCall", + "src": "16685:15:11" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "16678:3:11", + "nodeType": "YulIdentifier", + "src": "16678:3:11" + }, + "nativeSrc": "16678:23:11", + "nodeType": "YulFunctionCall", + "src": "16678:23:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "16660:6:11", + "nodeType": "YulIdentifier", + "src": "16660:6:11" + }, + "nativeSrc": "16660:42:11", + "nodeType": "YulFunctionCall", + "src": "16660:42:11" + }, + "nativeSrc": "16660:42:11", + "nodeType": "YulExpressionStatement", + "src": "16660:42:11" + }, + { + "nativeSrc": "16719:14:11", + "nodeType": "YulAssignment", + "src": "16719:14:11", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "16728:1:11", + "nodeType": "YulIdentifier", + "src": "16728:1:11" + }, + { + "kind": "number", + "nativeSrc": "16731:1:11", + "nodeType": "YulLiteral", + "src": "16731:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16724:3:11", + "nodeType": "YulIdentifier", + "src": "16724:3:11" + }, + "nativeSrc": "16724:9:11", + "nodeType": "YulFunctionCall", + "src": "16724:9:11" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "16719:1:11", + "nodeType": "YulIdentifier", + "src": "16719:1:11" + } + ] + }, + { + "body": { + "nativeSrc": "16763:9:11", + "nodeType": "YulBlock", + "src": "16763:9:11", + "statements": [ + { + "nativeSrc": "16765:5:11", + "nodeType": "YulBreak", + "src": "16765:5:11" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "16756:1:11", + "nodeType": "YulIdentifier", + "src": "16756:1:11" + }, + { + "kind": "number", + "nativeSrc": "16759:2:11", + "nodeType": "YulLiteral", + "src": "16759:2:11", + "type": "", + "value": "20" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "16753:2:11", + "nodeType": "YulIdentifier", + "src": "16753:2:11" + }, + "nativeSrc": "16753:9:11", + "nodeType": "YulFunctionCall", + "src": "16753:9:11" + }, + "nativeSrc": "16750:22:11", + "nodeType": "YulIf", + "src": "16750:22:11" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "16637:1:11", + "nodeType": "YulLiteral", + "src": "16637:1:11", + "type": "", + "value": "1" + }, + "nativeSrc": "16618:168:11", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "16639:2:11", + "nodeType": "YulBlock", + "src": "16639:2:11", + "statements": [] + }, + "pre": { + "nativeSrc": "16622:14:11", + "nodeType": "YulBlock", + "src": "16622:14:11", + "statements": [ + { + "nativeSrc": "16624:10:11", + "nodeType": "YulVariableDeclaration", + "src": "16624:10:11", + "value": { + "kind": "number", + "nativeSrc": "16633:1:11", + "nodeType": "YulLiteral", + "src": "16633:1:11", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "16628:1:11", + "nodeType": "YulTypedName", + "src": "16628:1:11", + "type": "" + } + ] + } + ] + }, + "src": "16618:168:11" + }, + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "16806:1:11", + "nodeType": "YulIdentifier", + "src": "16806:1:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "16819:1:11", + "nodeType": "YulIdentifier", + "src": "16819:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "16813:5:11", + "nodeType": "YulIdentifier", + "src": "16813:5:11" + }, + "nativeSrc": "16813:8:11", + "nodeType": "YulFunctionCall", + "src": "16813:8:11" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "16827:1:11", + "nodeType": "YulLiteral", + "src": "16827:1:11", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "16840:4:11", + "nodeType": "YulLiteral", + "src": "16840:4:11", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "16834:5:11", + "nodeType": "YulIdentifier", + "src": "16834:5:11" + }, + "nativeSrc": "16834:11:11", + "nodeType": "YulFunctionCall", + "src": "16834:11:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "16857:1:11", + "nodeType": "YulIdentifier", + "src": "16857:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "16851:5:11", + "nodeType": "YulIdentifier", + "src": "16851:5:11" + }, + "nativeSrc": "16851:8:11", + "nodeType": "YulFunctionCall", + "src": "16851:8:11" + }, + { + "name": "mask", + "nativeSrc": "16861:4:11", + "nodeType": "YulIdentifier", + "src": "16861:4:11" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "16847:3:11", + "nodeType": "YulIdentifier", + "src": "16847:3:11" + }, + "nativeSrc": "16847:19:11", + "nodeType": "YulFunctionCall", + "src": "16847:19:11" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "16830:3:11", + "nodeType": "YulIdentifier", + "src": "16830:3:11" + }, + "nativeSrc": "16830:37:11", + "nodeType": "YulFunctionCall", + "src": "16830:37:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "16823:3:11", + "nodeType": "YulIdentifier", + "src": "16823:3:11" + }, + "nativeSrc": "16823:45:11", + "nodeType": "YulFunctionCall", + "src": "16823:45:11" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "16809:3:11", + "nodeType": "YulIdentifier", + "src": "16809:3:11" + }, + "nativeSrc": "16809:60:11", + "nodeType": "YulFunctionCall", + "src": "16809:60:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "16799:6:11", + "nodeType": "YulIdentifier", + "src": "16799:6:11" + }, + "nativeSrc": "16799:71:11", + "nodeType": "YulFunctionCall", + "src": "16799:71:11" + }, + "nativeSrc": "16799:71:11", + "nodeType": "YulExpressionStatement", + "src": "16799:71:11" + }, + { + "nativeSrc": "16883:17:11", + "nodeType": "YulAssignment", + "src": "16883:17:11", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "16892:1:11", + "nodeType": "YulIdentifier", + "src": "16892:1:11" + }, + { + "kind": "number", + "nativeSrc": "16895:4:11", + "nodeType": "YulLiteral", + "src": "16895:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16888:3:11", + "nodeType": "YulIdentifier", + "src": "16888:3:11" + }, + "nativeSrc": "16888:12:11", + "nodeType": "YulFunctionCall", + "src": "16888:12:11" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "16883:1:11", + "nodeType": "YulIdentifier", + "src": "16883:1:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "16920:1:11", + "nodeType": "YulIdentifier", + "src": "16920:1:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "16933:1:11", + "nodeType": "YulIdentifier", + "src": "16933:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "16927:5:11", + "nodeType": "YulIdentifier", + "src": "16927:5:11" + }, + "nativeSrc": "16927:8:11", + "nodeType": "YulFunctionCall", + "src": "16927:8:11" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "16941:1:11", + "nodeType": "YulLiteral", + "src": "16941:1:11", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "16954:4:11", + "nodeType": "YulLiteral", + "src": "16954:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "16948:5:11", + "nodeType": "YulIdentifier", + "src": "16948:5:11" + }, + "nativeSrc": "16948:11:11", + "nodeType": "YulFunctionCall", + "src": "16948:11:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "16971:1:11", + "nodeType": "YulIdentifier", + "src": "16971:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "16965:5:11", + "nodeType": "YulIdentifier", + "src": "16965:5:11" + }, + "nativeSrc": "16965:8:11", + "nodeType": "YulFunctionCall", + "src": "16965:8:11" + }, + { + "name": "mask", + "nativeSrc": "16975:4:11", + "nodeType": "YulIdentifier", + "src": "16975:4:11" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "16961:3:11", + "nodeType": "YulIdentifier", + "src": "16961:3:11" + }, + "nativeSrc": "16961:19:11", + "nodeType": "YulFunctionCall", + "src": "16961:19:11" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "16944:3:11", + "nodeType": "YulIdentifier", + "src": "16944:3:11" + }, + "nativeSrc": "16944:37:11", + "nodeType": "YulFunctionCall", + "src": "16944:37:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "16937:3:11", + "nodeType": "YulIdentifier", + "src": "16937:3:11" + }, + "nativeSrc": "16937:45:11", + "nodeType": "YulFunctionCall", + "src": "16937:45:11" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "16923:3:11", + "nodeType": "YulIdentifier", + "src": "16923:3:11" + }, + "nativeSrc": "16923:60:11", + "nodeType": "YulFunctionCall", + "src": "16923:60:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "16913:6:11", + "nodeType": "YulIdentifier", + "src": "16913:6:11" + }, + "nativeSrc": "16913:71:11", + "nodeType": "YulFunctionCall", + "src": "16913:71:11" + }, + "nativeSrc": "16913:71:11", + "nodeType": "YulExpressionStatement", + "src": "16913:71:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5457, + "isOffset": false, + "isSlot": false, + "src": "16450:6:11", + "valueSize": 1 + } + ], + "id": 5465, + "nodeType": "InlineAssembly", + "src": "16335:659:11" + } + ] + }, + "documentation": { + "id": 5452, + "nodeType": "StructuredDocumentation", + "src": "15887:261:11", + "text": "@dev Returns the hexadecimal representation of `value`.\n The output is prefixed with \"0x\", encoded using 2 hexadecimal digits per byte,\n and the alphabets are capitalized conditionally according to\n https://eips.ethereum.org/EIPS/eip-55" + }, + "id": 5467, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toHexStringChecksummed", + "nameLocation": "16162:22:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5455, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5454, + "mutability": "mutable", + "name": "value", + "nameLocation": "16193:5:11", + "nodeType": "VariableDeclaration", + "scope": 5467, + "src": "16185:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5453, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16185:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "16184:15:11" + }, + "returnParameters": { + "id": 5458, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5457, + "mutability": "mutable", + "name": "result", + "nameLocation": "16237:6:11", + "nodeType": "VariableDeclaration", + "scope": 5467, + "src": "16223:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5456, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "16223:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "16222:22:11" + }, + "scope": 6145, + "src": "16153:847:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5482, + "nodeType": "Block", + "src": "17241:360:11", + "statements": [ + { + "expression": { + "id": 5479, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5475, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5473, + "src": "17251:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 5477, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5470, + "src": "17280:5:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5476, + "name": "toHexStringNoPrefix", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5393, + 5451, + 5493, + 5519 + ], + "referencedDeclaration": 5493, + "src": "17260:19:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_string_memory_ptr_$", + "typeString": "function (address) pure returns (string memory)" + } + }, + "id": 5478, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17260:26:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "17251:35:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "id": 5480, + "nodeType": "ExpressionStatement", + "src": "17251:35:11" + }, + { + "AST": { + "nativeSrc": "17348:247:11", + "nodeType": "YulBlock", + "src": "17348:247:11", + "statements": [ + { + "nativeSrc": "17362:30:11", + "nodeType": "YulVariableDeclaration", + "src": "17362:30:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "17381:6:11", + "nodeType": "YulIdentifier", + "src": "17381:6:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "17375:5:11", + "nodeType": "YulIdentifier", + "src": "17375:5:11" + }, + "nativeSrc": "17375:13:11", + "nodeType": "YulFunctionCall", + "src": "17375:13:11" + }, + { + "kind": "number", + "nativeSrc": "17390:1:11", + "nodeType": "YulLiteral", + "src": "17390:1:11", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17371:3:11", + "nodeType": "YulIdentifier", + "src": "17371:3:11" + }, + "nativeSrc": "17371:21:11", + "nodeType": "YulFunctionCall", + "src": "17371:21:11" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "17366:1:11", + "nodeType": "YulTypedName", + "src": "17366:1:11", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "17435:6:11", + "nodeType": "YulIdentifier", + "src": "17435:6:11" + }, + { + "kind": "number", + "nativeSrc": "17443:6:11", + "nodeType": "YulLiteral", + "src": "17443:6:11", + "type": "", + "value": "0x3078" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "17428:6:11", + "nodeType": "YulIdentifier", + "src": "17428:6:11" + }, + "nativeSrc": "17428:22:11", + "nodeType": "YulFunctionCall", + "src": "17428:22:11" + }, + "nativeSrc": "17428:22:11", + "nodeType": "YulExpressionStatement", + "src": "17428:22:11" + }, + { + "nativeSrc": "17489:24:11", + "nodeType": "YulAssignment", + "src": "17489:24:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "17503:6:11", + "nodeType": "YulIdentifier", + "src": "17503:6:11" + }, + { + "kind": "number", + "nativeSrc": "17511:1:11", + "nodeType": "YulLiteral", + "src": "17511:1:11", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "17499:3:11", + "nodeType": "YulIdentifier", + "src": "17499:3:11" + }, + "nativeSrc": "17499:14:11", + "nodeType": "YulFunctionCall", + "src": "17499:14:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "17489:6:11", + "nodeType": "YulIdentifier", + "src": "17489:6:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "17554:6:11", + "nodeType": "YulIdentifier", + "src": "17554:6:11" + }, + { + "name": "n", + "nativeSrc": "17562:1:11", + "nodeType": "YulIdentifier", + "src": "17562:1:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "17547:6:11", + "nodeType": "YulIdentifier", + "src": "17547:6:11" + }, + "nativeSrc": "17547:17:11", + "nodeType": "YulFunctionCall", + "src": "17547:17:11" + }, + "nativeSrc": "17547:17:11", + "nodeType": "YulExpressionStatement", + "src": "17547:17:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5473, + "isOffset": false, + "isSlot": false, + "src": "17381:6:11", + "valueSize": 1 + }, + { + "declaration": 5473, + "isOffset": false, + "isSlot": false, + "src": "17435:6:11", + "valueSize": 1 + }, + { + "declaration": 5473, + "isOffset": false, + "isSlot": false, + "src": "17489:6:11", + "valueSize": 1 + }, + { + "declaration": 5473, + "isOffset": false, + "isSlot": false, + "src": "17503:6:11", + "valueSize": 1 + }, + { + "declaration": 5473, + "isOffset": false, + "isSlot": false, + "src": "17554:6:11", + "valueSize": 1 + } + ], + "id": 5481, + "nodeType": "InlineAssembly", + "src": "17339:256:11" + } + ] + }, + "documentation": { + "id": 5468, + "nodeType": "StructuredDocumentation", + "src": "17006:149:11", + "text": "@dev Returns the hexadecimal representation of `value`.\n The output is prefixed with \"0x\" and encoded using 2 hexadecimal digits per byte." + }, + "id": 5483, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toHexString", + "nameLocation": "17169:11:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5471, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5470, + "mutability": "mutable", + "name": "value", + "nameLocation": "17189:5:11", + "nodeType": "VariableDeclaration", + "scope": 5483, + "src": "17181:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5469, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17181:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "17180:15:11" + }, + "returnParameters": { + "id": 5474, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5473, + "mutability": "mutable", + "name": "result", + "nameLocation": "17233:6:11", + "nodeType": "VariableDeclaration", + "scope": 5483, + "src": "17219:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5472, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "17219:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "17218:22:11" + }, + "scope": 6145, + "src": "17160:441:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5492, + "nodeType": "Block", + "src": "17827:1258:11", + "statements": [ + { + "AST": { + "nativeSrc": "17889:1190:11", + "nodeType": "YulBlock", + "src": "17889:1190:11", + "statements": [ + { + "nativeSrc": "17903:21:11", + "nodeType": "YulAssignment", + "src": "17903:21:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "17919:4:11", + "nodeType": "YulLiteral", + "src": "17919:4:11", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "17913:5:11", + "nodeType": "YulIdentifier", + "src": "17913:5:11" + }, + "nativeSrc": "17913:11:11", + "nodeType": "YulFunctionCall", + "src": "17913:11:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "17903:6:11", + "nodeType": "YulIdentifier", + "src": "17903:6:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18226:4:11", + "nodeType": "YulLiteral", + "src": "18226:4:11", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "result", + "nativeSrc": "18236:6:11", + "nodeType": "YulIdentifier", + "src": "18236:6:11" + }, + { + "kind": "number", + "nativeSrc": "18244:4:11", + "nodeType": "YulLiteral", + "src": "18244:4:11", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18232:3:11", + "nodeType": "YulIdentifier", + "src": "18232:3:11" + }, + "nativeSrc": "18232:17:11", + "nodeType": "YulFunctionCall", + "src": "18232:17:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18219:6:11", + "nodeType": "YulIdentifier", + "src": "18219:6:11" + }, + "nativeSrc": "18219:31:11", + "nodeType": "YulFunctionCall", + "src": "18219:31:11" + }, + "nativeSrc": "18219:31:11", + "nodeType": "YulExpressionStatement", + "src": "18219:31:11" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18270:4:11", + "nodeType": "YulLiteral", + "src": "18270:4:11", + "type": "", + "value": "0x0f" + }, + { + "kind": "number", + "nativeSrc": "18276:34:11", + "nodeType": "YulLiteral", + "src": "18276:34:11", + "type": "", + "value": "0x30313233343536373839616263646566" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18263:6:11", + "nodeType": "YulIdentifier", + "src": "18263:6:11" + }, + "nativeSrc": "18263:48:11", + "nodeType": "YulFunctionCall", + "src": "18263:48:11" + }, + "nativeSrc": "18263:48:11", + "nodeType": "YulExpressionStatement", + "src": "18263:48:11" + }, + { + "nativeSrc": "18365:24:11", + "nodeType": "YulAssignment", + "src": "18365:24:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "18379:6:11", + "nodeType": "YulIdentifier", + "src": "18379:6:11" + }, + { + "kind": "number", + "nativeSrc": "18387:1:11", + "nodeType": "YulLiteral", + "src": "18387:1:11", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18375:3:11", + "nodeType": "YulIdentifier", + "src": "18375:3:11" + }, + "nativeSrc": "18375:14:11", + "nodeType": "YulFunctionCall", + "src": "18375:14:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "18365:6:11", + "nodeType": "YulIdentifier", + "src": "18365:6:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "18409:6:11", + "nodeType": "YulIdentifier", + "src": "18409:6:11" + }, + { + "kind": "number", + "nativeSrc": "18417:2:11", + "nodeType": "YulLiteral", + "src": "18417:2:11", + "type": "", + "value": "40" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18402:6:11", + "nodeType": "YulIdentifier", + "src": "18402:6:11" + }, + "nativeSrc": "18402:18:11", + "nodeType": "YulFunctionCall", + "src": "18402:18:11" + }, + "nativeSrc": "18402:18:11", + "nodeType": "YulExpressionStatement", + "src": "18402:18:11" + }, + { + "nativeSrc": "18454:26:11", + "nodeType": "YulVariableDeclaration", + "src": "18454:26:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "18467:6:11", + "nodeType": "YulIdentifier", + "src": "18467:6:11" + }, + { + "kind": "number", + "nativeSrc": "18475:4:11", + "nodeType": "YulLiteral", + "src": "18475:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18463:3:11", + "nodeType": "YulIdentifier", + "src": "18463:3:11" + }, + "nativeSrc": "18463:17:11", + "nodeType": "YulFunctionCall", + "src": "18463:17:11" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "18458:1:11", + "nodeType": "YulTypedName", + "src": "18458:1:11", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "18504:1:11", + "nodeType": "YulIdentifier", + "src": "18504:1:11" + }, + { + "kind": "number", + "nativeSrc": "18507:2:11", + "nodeType": "YulLiteral", + "src": "18507:2:11", + "type": "", + "value": "40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18500:3:11", + "nodeType": "YulIdentifier", + "src": "18500:3:11" + }, + "nativeSrc": "18500:10:11", + "nodeType": "YulFunctionCall", + "src": "18500:10:11" + }, + { + "kind": "number", + "nativeSrc": "18512:1:11", + "nodeType": "YulLiteral", + "src": "18512:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18493:6:11", + "nodeType": "YulIdentifier", + "src": "18493:6:11" + }, + "nativeSrc": "18493:21:11", + "nodeType": "YulFunctionCall", + "src": "18493:21:11" + }, + "nativeSrc": "18493:21:11", + "nodeType": "YulExpressionStatement", + "src": "18493:21:11" + }, + { + "nativeSrc": "18565:23:11", + "nodeType": "YulAssignment", + "src": "18565:23:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18578:2:11", + "nodeType": "YulLiteral", + "src": "18578:2:11", + "type": "", + "value": "96" + }, + { + "name": "value", + "nativeSrc": "18582:5:11", + "nodeType": "YulIdentifier", + "src": "18582:5:11" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "18574:3:11", + "nodeType": "YulIdentifier", + "src": "18574:3:11" + }, + "nativeSrc": "18574:14:11", + "nodeType": "YulFunctionCall", + "src": "18574:14:11" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "18565:5:11", + "nodeType": "YulIdentifier", + "src": "18565:5:11" + } + ] + }, + { + "body": { + "nativeSrc": "18793:276:11", + "nodeType": "YulBlock", + "src": "18793:276:11", + "statements": [ + { + "nativeSrc": "18811:26:11", + "nodeType": "YulVariableDeclaration", + "src": "18811:26:11", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "18824:1:11", + "nodeType": "YulIdentifier", + "src": "18824:1:11" + }, + { + "arguments": [ + { + "name": "i", + "nativeSrc": "18831:1:11", + "nodeType": "YulIdentifier", + "src": "18831:1:11" + }, + { + "name": "i", + "nativeSrc": "18834:1:11", + "nodeType": "YulIdentifier", + "src": "18834:1:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18827:3:11", + "nodeType": "YulIdentifier", + "src": "18827:3:11" + }, + "nativeSrc": "18827:9:11", + "nodeType": "YulFunctionCall", + "src": "18827:9:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18820:3:11", + "nodeType": "YulIdentifier", + "src": "18820:3:11" + }, + "nativeSrc": "18820:17:11", + "nodeType": "YulFunctionCall", + "src": "18820:17:11" + }, + "variables": [ + { + "name": "p", + "nativeSrc": "18815:1:11", + "nodeType": "YulTypedName", + "src": "18815:1:11", + "type": "" + } + ] + }, + { + "nativeSrc": "18854:26:11", + "nodeType": "YulVariableDeclaration", + "src": "18854:26:11", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "18871:1:11", + "nodeType": "YulIdentifier", + "src": "18871:1:11" + }, + { + "name": "value", + "nativeSrc": "18874:5:11", + "nodeType": "YulIdentifier", + "src": "18874:5:11" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "18866:4:11", + "nodeType": "YulIdentifier", + "src": "18866:4:11" + }, + "nativeSrc": "18866:14:11", + "nodeType": "YulFunctionCall", + "src": "18866:14:11" + }, + "variables": [ + { + "name": "temp", + "nativeSrc": "18858:4:11", + "nodeType": "YulTypedName", + "src": "18858:4:11", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "p", + "nativeSrc": "18909:1:11", + "nodeType": "YulIdentifier", + "src": "18909:1:11" + }, + { + "kind": "number", + "nativeSrc": "18912:1:11", + "nodeType": "YulLiteral", + "src": "18912:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18905:3:11", + "nodeType": "YulIdentifier", + "src": "18905:3:11" + }, + "nativeSrc": "18905:9:11", + "nodeType": "YulFunctionCall", + "src": "18905:9:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "temp", + "nativeSrc": "18926:4:11", + "nodeType": "YulIdentifier", + "src": "18926:4:11" + }, + { + "kind": "number", + "nativeSrc": "18932:2:11", + "nodeType": "YulLiteral", + "src": "18932:2:11", + "type": "", + "value": "15" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "18922:3:11", + "nodeType": "YulIdentifier", + "src": "18922:3:11" + }, + "nativeSrc": "18922:13:11", + "nodeType": "YulFunctionCall", + "src": "18922:13:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "18916:5:11", + "nodeType": "YulIdentifier", + "src": "18916:5:11" + }, + "nativeSrc": "18916:20:11", + "nodeType": "YulFunctionCall", + "src": "18916:20:11" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "18897:7:11", + "nodeType": "YulIdentifier", + "src": "18897:7:11" + }, + "nativeSrc": "18897:40:11", + "nodeType": "YulFunctionCall", + "src": "18897:40:11" + }, + "nativeSrc": "18897:40:11", + "nodeType": "YulExpressionStatement", + "src": "18897:40:11" + }, + { + "expression": { + "arguments": [ + { + "name": "p", + "nativeSrc": "18962:1:11", + "nodeType": "YulIdentifier", + "src": "18962:1:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18975:1:11", + "nodeType": "YulLiteral", + "src": "18975:1:11", + "type": "", + "value": "4" + }, + { + "name": "temp", + "nativeSrc": "18978:4:11", + "nodeType": "YulIdentifier", + "src": "18978:4:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "18971:3:11", + "nodeType": "YulIdentifier", + "src": "18971:3:11" + }, + "nativeSrc": "18971:12:11", + "nodeType": "YulFunctionCall", + "src": "18971:12:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "18965:5:11", + "nodeType": "YulIdentifier", + "src": "18965:5:11" + }, + "nativeSrc": "18965:19:11", + "nodeType": "YulFunctionCall", + "src": "18965:19:11" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "18954:7:11", + "nodeType": "YulIdentifier", + "src": "18954:7:11" + }, + "nativeSrc": "18954:31:11", + "nodeType": "YulFunctionCall", + "src": "18954:31:11" + }, + "nativeSrc": "18954:31:11", + "nodeType": "YulExpressionStatement", + "src": "18954:31:11" + }, + { + "nativeSrc": "19002:14:11", + "nodeType": "YulAssignment", + "src": "19002:14:11", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "19011:1:11", + "nodeType": "YulIdentifier", + "src": "19011:1:11" + }, + { + "kind": "number", + "nativeSrc": "19014:1:11", + "nodeType": "YulLiteral", + "src": "19014:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19007:3:11", + "nodeType": "YulIdentifier", + "src": "19007:3:11" + }, + "nativeSrc": "19007:9:11", + "nodeType": "YulFunctionCall", + "src": "19007:9:11" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "19002:1:11", + "nodeType": "YulIdentifier", + "src": "19002:1:11" + } + ] + }, + { + "body": { + "nativeSrc": "19046:9:11", + "nodeType": "YulBlock", + "src": "19046:9:11", + "statements": [ + { + "nativeSrc": "19048:5:11", + "nodeType": "YulBreak", + "src": "19048:5:11" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "19039:1:11", + "nodeType": "YulIdentifier", + "src": "19039:1:11" + }, + { + "kind": "number", + "nativeSrc": "19042:2:11", + "nodeType": "YulLiteral", + "src": "19042:2:11", + "type": "", + "value": "20" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "19036:2:11", + "nodeType": "YulIdentifier", + "src": "19036:2:11" + }, + "nativeSrc": "19036:9:11", + "nodeType": "YulFunctionCall", + "src": "19036:9:11" + }, + "nativeSrc": "19033:22:11", + "nodeType": "YulIf", + "src": "19033:22:11" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "18788:1:11", + "nodeType": "YulLiteral", + "src": "18788:1:11", + "type": "", + "value": "1" + }, + "nativeSrc": "18769:300:11", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "18790:2:11", + "nodeType": "YulBlock", + "src": "18790:2:11", + "statements": [] + }, + "pre": { + "nativeSrc": "18773:14:11", + "nodeType": "YulBlock", + "src": "18773:14:11", + "statements": [ + { + "nativeSrc": "18775:10:11", + "nodeType": "YulVariableDeclaration", + "src": "18775:10:11", + "value": { + "kind": "number", + "nativeSrc": "18784:1:11", + "nodeType": "YulLiteral", + "src": "18784:1:11", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "18779:1:11", + "nodeType": "YulTypedName", + "src": "18779:1:11", + "type": "" + } + ] + } + ] + }, + "src": "18769:300:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5489, + "isOffset": false, + "isSlot": false, + "src": "17903:6:11", + "valueSize": 1 + }, + { + "declaration": 5489, + "isOffset": false, + "isSlot": false, + "src": "18236:6:11", + "valueSize": 1 + }, + { + "declaration": 5489, + "isOffset": false, + "isSlot": false, + "src": "18365:6:11", + "valueSize": 1 + }, + { + "declaration": 5489, + "isOffset": false, + "isSlot": false, + "src": "18379:6:11", + "valueSize": 1 + }, + { + "declaration": 5489, + "isOffset": false, + "isSlot": false, + "src": "18409:6:11", + "valueSize": 1 + }, + { + "declaration": 5489, + "isOffset": false, + "isSlot": false, + "src": "18467:6:11", + "valueSize": 1 + }, + { + "declaration": 5486, + "isOffset": false, + "isSlot": false, + "src": "18565:5:11", + "valueSize": 1 + }, + { + "declaration": 5486, + "isOffset": false, + "isSlot": false, + "src": "18582:5:11", + "valueSize": 1 + }, + { + "declaration": 5486, + "isOffset": false, + "isSlot": false, + "src": "18874:5:11", + "valueSize": 1 + } + ], + "id": 5491, + "nodeType": "InlineAssembly", + "src": "17880:1199:11" + } + ] + }, + "documentation": { + "id": 5484, + "nodeType": "StructuredDocumentation", + "src": "17607:126:11", + "text": "@dev Returns the hexadecimal representation of `value`.\n The output is encoded using 2 hexadecimal digits per byte." + }, + "id": 5493, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toHexStringNoPrefix", + "nameLocation": "17747:19:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5487, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5486, + "mutability": "mutable", + "name": "value", + "nameLocation": "17775:5:11", + "nodeType": "VariableDeclaration", + "scope": 5493, + "src": "17767:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5485, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17767:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "17766:15:11" + }, + "returnParameters": { + "id": 5490, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5489, + "mutability": "mutable", + "name": "result", + "nameLocation": "17819:6:11", + "nodeType": "VariableDeclaration", + "scope": 5493, + "src": "17805:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5488, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "17805:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "17804:22:11" + }, + "scope": 6145, + "src": "17738:1347:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5508, + "nodeType": "Block", + "src": "19306:358:11", + "statements": [ + { + "expression": { + "id": 5505, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5501, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5499, + "src": "19316:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 5503, + "name": "raw", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5496, + "src": "19345:3:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5502, + "name": "toHexStringNoPrefix", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5393, + 5451, + 5493, + 5519 + ], + "referencedDeclaration": 5519, + "src": "19325:19:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_string_memory_ptr_$", + "typeString": "function (bytes memory) pure returns (string memory)" + } + }, + "id": 5504, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19325:24:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "19316:33:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "id": 5506, + "nodeType": "ExpressionStatement", + "src": "19316:33:11" + }, + { + "AST": { + "nativeSrc": "19411:247:11", + "nodeType": "YulBlock", + "src": "19411:247:11", + "statements": [ + { + "nativeSrc": "19425:30:11", + "nodeType": "YulVariableDeclaration", + "src": "19425:30:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "19444:6:11", + "nodeType": "YulIdentifier", + "src": "19444:6:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "19438:5:11", + "nodeType": "YulIdentifier", + "src": "19438:5:11" + }, + "nativeSrc": "19438:13:11", + "nodeType": "YulFunctionCall", + "src": "19438:13:11" + }, + { + "kind": "number", + "nativeSrc": "19453:1:11", + "nodeType": "YulLiteral", + "src": "19453:1:11", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19434:3:11", + "nodeType": "YulIdentifier", + "src": "19434:3:11" + }, + "nativeSrc": "19434:21:11", + "nodeType": "YulFunctionCall", + "src": "19434:21:11" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "19429:1:11", + "nodeType": "YulTypedName", + "src": "19429:1:11", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "19498:6:11", + "nodeType": "YulIdentifier", + "src": "19498:6:11" + }, + { + "kind": "number", + "nativeSrc": "19506:6:11", + "nodeType": "YulLiteral", + "src": "19506:6:11", + "type": "", + "value": "0x3078" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "19491:6:11", + "nodeType": "YulIdentifier", + "src": "19491:6:11" + }, + "nativeSrc": "19491:22:11", + "nodeType": "YulFunctionCall", + "src": "19491:22:11" + }, + "nativeSrc": "19491:22:11", + "nodeType": "YulExpressionStatement", + "src": "19491:22:11" + }, + { + "nativeSrc": "19552:24:11", + "nodeType": "YulAssignment", + "src": "19552:24:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "19566:6:11", + "nodeType": "YulIdentifier", + "src": "19566:6:11" + }, + { + "kind": "number", + "nativeSrc": "19574:1:11", + "nodeType": "YulLiteral", + "src": "19574:1:11", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "19562:3:11", + "nodeType": "YulIdentifier", + "src": "19562:3:11" + }, + "nativeSrc": "19562:14:11", + "nodeType": "YulFunctionCall", + "src": "19562:14:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "19552:6:11", + "nodeType": "YulIdentifier", + "src": "19552:6:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "19617:6:11", + "nodeType": "YulIdentifier", + "src": "19617:6:11" + }, + { + "name": "n", + "nativeSrc": "19625:1:11", + "nodeType": "YulIdentifier", + "src": "19625:1:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "19610:6:11", + "nodeType": "YulIdentifier", + "src": "19610:6:11" + }, + "nativeSrc": "19610:17:11", + "nodeType": "YulFunctionCall", + "src": "19610:17:11" + }, + "nativeSrc": "19610:17:11", + "nodeType": "YulExpressionStatement", + "src": "19610:17:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5499, + "isOffset": false, + "isSlot": false, + "src": "19444:6:11", + "valueSize": 1 + }, + { + "declaration": 5499, + "isOffset": false, + "isSlot": false, + "src": "19498:6:11", + "valueSize": 1 + }, + { + "declaration": 5499, + "isOffset": false, + "isSlot": false, + "src": "19552:6:11", + "valueSize": 1 + }, + { + "declaration": 5499, + "isOffset": false, + "isSlot": false, + "src": "19566:6:11", + "valueSize": 1 + }, + { + "declaration": 5499, + "isOffset": false, + "isSlot": false, + "src": "19617:6:11", + "valueSize": 1 + } + ], + "id": 5507, + "nodeType": "InlineAssembly", + "src": "19402:256:11" + } + ] + }, + "documentation": { + "id": 5494, + "nodeType": "StructuredDocumentation", + "src": "19091:126:11", + "text": "@dev Returns the hex encoded string from the raw bytes.\n The output is encoded using 2 hexadecimal digits per byte." + }, + "id": 5509, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toHexString", + "nameLocation": "19231:11:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5497, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5496, + "mutability": "mutable", + "name": "raw", + "nameLocation": "19256:3:11", + "nodeType": "VariableDeclaration", + "scope": 5509, + "src": "19243:16:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5495, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "19243:5:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "19242:18:11" + }, + "returnParameters": { + "id": 5500, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5499, + "mutability": "mutable", + "name": "result", + "nameLocation": "19298:6:11", + "nodeType": "VariableDeclaration", + "scope": 5509, + "src": "19284:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5498, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "19284:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "19283:22:11" + }, + "scope": 6145, + "src": "19222:442:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5518, + "nodeType": "Block", + "src": "19893:816:11", + "statements": [ + { + "AST": { + "nativeSrc": "19955:748:11", + "nodeType": "YulBlock", + "src": "19955:748:11", + "statements": [ + { + "nativeSrc": "19969:19:11", + "nodeType": "YulVariableDeclaration", + "src": "19969:19:11", + "value": { + "arguments": [ + { + "name": "raw", + "nativeSrc": "19984:3:11", + "nodeType": "YulIdentifier", + "src": "19984:3:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "19978:5:11", + "nodeType": "YulIdentifier", + "src": "19978:5:11" + }, + "nativeSrc": "19978:10:11", + "nodeType": "YulFunctionCall", + "src": "19978:10:11" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "19973:1:11", + "nodeType": "YulTypedName", + "src": "19973:1:11", + "type": "" + } + ] + }, + { + "nativeSrc": "20001:29:11", + "nodeType": "YulAssignment", + "src": "20001:29:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20021:4:11", + "nodeType": "YulLiteral", + "src": "20021:4:11", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "20015:5:11", + "nodeType": "YulIdentifier", + "src": "20015:5:11" + }, + "nativeSrc": "20015:11:11", + "nodeType": "YulFunctionCall", + "src": "20015:11:11" + }, + { + "kind": "number", + "nativeSrc": "20028:1:11", + "nodeType": "YulLiteral", + "src": "20028:1:11", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20011:3:11", + "nodeType": "YulIdentifier", + "src": "20011:3:11" + }, + "nativeSrc": "20011:19:11", + "nodeType": "YulFunctionCall", + "src": "20011:19:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "20001:6:11", + "nodeType": "YulIdentifier", + "src": "20001:6:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "20091:6:11", + "nodeType": "YulIdentifier", + "src": "20091:6:11" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "20103:1:11", + "nodeType": "YulIdentifier", + "src": "20103:1:11" + }, + { + "name": "n", + "nativeSrc": "20106:1:11", + "nodeType": "YulIdentifier", + "src": "20106:1:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20099:3:11", + "nodeType": "YulIdentifier", + "src": "20099:3:11" + }, + "nativeSrc": "20099:9:11", + "nodeType": "YulFunctionCall", + "src": "20099:9:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "20084:6:11", + "nodeType": "YulIdentifier", + "src": "20084:6:11" + }, + "nativeSrc": "20084:25:11", + "nodeType": "YulFunctionCall", + "src": "20084:25:11" + }, + "nativeSrc": "20084:25:11", + "nodeType": "YulExpressionStatement", + "src": "20084:25:11" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20165:4:11", + "nodeType": "YulLiteral", + "src": "20165:4:11", + "type": "", + "value": "0x0f" + }, + { + "kind": "number", + "nativeSrc": "20171:34:11", + "nodeType": "YulLiteral", + "src": "20171:34:11", + "type": "", + "value": "0x30313233343536373839616263646566" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "20158:6:11", + "nodeType": "YulIdentifier", + "src": "20158:6:11" + }, + "nativeSrc": "20158:48:11", + "nodeType": "YulFunctionCall", + "src": "20158:48:11" + }, + "nativeSrc": "20158:48:11", + "nodeType": "YulExpressionStatement", + "src": "20158:48:11" + }, + { + "nativeSrc": "20259:26:11", + "nodeType": "YulVariableDeclaration", + "src": "20259:26:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "20272:6:11", + "nodeType": "YulIdentifier", + "src": "20272:6:11" + }, + { + "kind": "number", + "nativeSrc": "20280:4:11", + "nodeType": "YulLiteral", + "src": "20280:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20268:3:11", + "nodeType": "YulIdentifier", + "src": "20268:3:11" + }, + "nativeSrc": "20268:17:11", + "nodeType": "YulFunctionCall", + "src": "20268:17:11" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "20263:1:11", + "nodeType": "YulTypedName", + "src": "20263:1:11", + "type": "" + } + ] + }, + { + "nativeSrc": "20298:22:11", + "nodeType": "YulVariableDeclaration", + "src": "20298:22:11", + "value": { + "arguments": [ + { + "name": "raw", + "nativeSrc": "20313:3:11", + "nodeType": "YulIdentifier", + "src": "20313:3:11" + }, + { + "name": "n", + "nativeSrc": "20318:1:11", + "nodeType": "YulIdentifier", + "src": "20318:1:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20309:3:11", + "nodeType": "YulIdentifier", + "src": "20309:3:11" + }, + "nativeSrc": "20309:11:11", + "nodeType": "YulFunctionCall", + "src": "20309:11:11" + }, + "variables": [ + { + "name": "end", + "nativeSrc": "20302:3:11", + "nodeType": "YulTypedName", + "src": "20302:3:11", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "20364:207:11", + "nodeType": "YulBlock", + "src": "20364:207:11", + "statements": [ + { + "nativeSrc": "20382:18:11", + "nodeType": "YulAssignment", + "src": "20382:18:11", + "value": { + "arguments": [ + { + "name": "raw", + "nativeSrc": "20393:3:11", + "nodeType": "YulIdentifier", + "src": "20393:3:11" + }, + { + "kind": "number", + "nativeSrc": "20398:1:11", + "nodeType": "YulLiteral", + "src": "20398:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20389:3:11", + "nodeType": "YulIdentifier", + "src": "20389:3:11" + }, + "nativeSrc": "20389:11:11", + "nodeType": "YulFunctionCall", + "src": "20389:11:11" + }, + "variableNames": [ + { + "name": "raw", + "nativeSrc": "20382:3:11", + "nodeType": "YulIdentifier", + "src": "20382:3:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "20429:1:11", + "nodeType": "YulIdentifier", + "src": "20429:1:11" + }, + { + "kind": "number", + "nativeSrc": "20432:1:11", + "nodeType": "YulLiteral", + "src": "20432:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20425:3:11", + "nodeType": "YulIdentifier", + "src": "20425:3:11" + }, + "nativeSrc": "20425:9:11", + "nodeType": "YulFunctionCall", + "src": "20425:9:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "raw", + "nativeSrc": "20452:3:11", + "nodeType": "YulIdentifier", + "src": "20452:3:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "20446:5:11", + "nodeType": "YulIdentifier", + "src": "20446:5:11" + }, + "nativeSrc": "20446:10:11", + "nodeType": "YulFunctionCall", + "src": "20446:10:11" + }, + { + "kind": "number", + "nativeSrc": "20458:2:11", + "nodeType": "YulLiteral", + "src": "20458:2:11", + "type": "", + "value": "15" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "20442:3:11", + "nodeType": "YulIdentifier", + "src": "20442:3:11" + }, + "nativeSrc": "20442:19:11", + "nodeType": "YulFunctionCall", + "src": "20442:19:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "20436:5:11", + "nodeType": "YulIdentifier", + "src": "20436:5:11" + }, + "nativeSrc": "20436:26:11", + "nodeType": "YulFunctionCall", + "src": "20436:26:11" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "20417:7:11", + "nodeType": "YulIdentifier", + "src": "20417:7:11" + }, + "nativeSrc": "20417:46:11", + "nodeType": "YulFunctionCall", + "src": "20417:46:11" + }, + "nativeSrc": "20417:46:11", + "nodeType": "YulExpressionStatement", + "src": "20417:46:11" + }, + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "20488:1:11", + "nodeType": "YulIdentifier", + "src": "20488:1:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20505:1:11", + "nodeType": "YulLiteral", + "src": "20505:1:11", + "type": "", + "value": "4" + }, + { + "arguments": [ + { + "name": "raw", + "nativeSrc": "20514:3:11", + "nodeType": "YulIdentifier", + "src": "20514:3:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "20508:5:11", + "nodeType": "YulIdentifier", + "src": "20508:5:11" + }, + "nativeSrc": "20508:10:11", + "nodeType": "YulFunctionCall", + "src": "20508:10:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "20501:3:11", + "nodeType": "YulIdentifier", + "src": "20501:3:11" + }, + "nativeSrc": "20501:18:11", + "nodeType": "YulFunctionCall", + "src": "20501:18:11" + }, + { + "kind": "number", + "nativeSrc": "20521:2:11", + "nodeType": "YulLiteral", + "src": "20521:2:11", + "type": "", + "value": "15" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "20497:3:11", + "nodeType": "YulIdentifier", + "src": "20497:3:11" + }, + "nativeSrc": "20497:27:11", + "nodeType": "YulFunctionCall", + "src": "20497:27:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "20491:5:11", + "nodeType": "YulIdentifier", + "src": "20491:5:11" + }, + "nativeSrc": "20491:34:11", + "nodeType": "YulFunctionCall", + "src": "20491:34:11" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "20480:7:11", + "nodeType": "YulIdentifier", + "src": "20480:7:11" + }, + "nativeSrc": "20480:46:11", + "nodeType": "YulFunctionCall", + "src": "20480:46:11" + }, + "nativeSrc": "20480:46:11", + "nodeType": "YulExpressionStatement", + "src": "20480:46:11" + }, + { + "nativeSrc": "20543:14:11", + "nodeType": "YulAssignment", + "src": "20543:14:11", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "20552:1:11", + "nodeType": "YulIdentifier", + "src": "20552:1:11" + }, + { + "kind": "number", + "nativeSrc": "20555:1:11", + "nodeType": "YulLiteral", + "src": "20555:1:11", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20548:3:11", + "nodeType": "YulIdentifier", + "src": "20548:3:11" + }, + "nativeSrc": "20548:9:11", + "nodeType": "YulFunctionCall", + "src": "20548:9:11" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "20543:1:11", + "nodeType": "YulIdentifier", + "src": "20543:1:11" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "raw", + "nativeSrc": "20350:3:11", + "nodeType": "YulIdentifier", + "src": "20350:3:11" + }, + { + "name": "end", + "nativeSrc": "20355:3:11", + "nodeType": "YulIdentifier", + "src": "20355:3:11" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "20347:2:11", + "nodeType": "YulIdentifier", + "src": "20347:2:11" + }, + "nativeSrc": "20347:12:11", + "nodeType": "YulFunctionCall", + "src": "20347:12:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "20340:6:11", + "nodeType": "YulIdentifier", + "src": "20340:6:11" + }, + "nativeSrc": "20340:20:11", + "nodeType": "YulFunctionCall", + "src": "20340:20:11" + }, + "nativeSrc": "20333:238:11", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "20361:2:11", + "nodeType": "YulBlock", + "src": "20361:2:11", + "statements": [] + }, + "pre": { + "nativeSrc": "20337:2:11", + "nodeType": "YulBlock", + "src": "20337:2:11", + "statements": [] + }, + "src": "20333:238:11" + }, + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "20591:1:11", + "nodeType": "YulIdentifier", + "src": "20591:1:11" + }, + { + "kind": "number", + "nativeSrc": "20594:1:11", + "nodeType": "YulLiteral", + "src": "20594:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "20584:6:11", + "nodeType": "YulIdentifier", + "src": "20584:6:11" + }, + "nativeSrc": "20584:12:11", + "nodeType": "YulFunctionCall", + "src": "20584:12:11" + }, + "nativeSrc": "20584:12:11", + "nodeType": "YulExpressionStatement", + "src": "20584:12:11" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20654:4:11", + "nodeType": "YulLiteral", + "src": "20654:4:11", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "o", + "nativeSrc": "20664:1:11", + "nodeType": "YulIdentifier", + "src": "20664:1:11" + }, + { + "kind": "number", + "nativeSrc": "20667:4:11", + "nodeType": "YulLiteral", + "src": "20667:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20660:3:11", + "nodeType": "YulIdentifier", + "src": "20660:3:11" + }, + "nativeSrc": "20660:12:11", + "nodeType": "YulFunctionCall", + "src": "20660:12:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "20647:6:11", + "nodeType": "YulIdentifier", + "src": "20647:6:11" + }, + "nativeSrc": "20647:26:11", + "nodeType": "YulFunctionCall", + "src": "20647:26:11" + }, + "nativeSrc": "20647:26:11", + "nodeType": "YulExpressionStatement", + "src": "20647:26:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5512, + "isOffset": false, + "isSlot": false, + "src": "19984:3:11", + "valueSize": 1 + }, + { + "declaration": 5512, + "isOffset": false, + "isSlot": false, + "src": "20313:3:11", + "valueSize": 1 + }, + { + "declaration": 5512, + "isOffset": false, + "isSlot": false, + "src": "20350:3:11", + "valueSize": 1 + }, + { + "declaration": 5512, + "isOffset": false, + "isSlot": false, + "src": "20382:3:11", + "valueSize": 1 + }, + { + "declaration": 5512, + "isOffset": false, + "isSlot": false, + "src": "20393:3:11", + "valueSize": 1 + }, + { + "declaration": 5512, + "isOffset": false, + "isSlot": false, + "src": "20452:3:11", + "valueSize": 1 + }, + { + "declaration": 5512, + "isOffset": false, + "isSlot": false, + "src": "20514:3:11", + "valueSize": 1 + }, + { + "declaration": 5515, + "isOffset": false, + "isSlot": false, + "src": "20001:6:11", + "valueSize": 1 + }, + { + "declaration": 5515, + "isOffset": false, + "isSlot": false, + "src": "20091:6:11", + "valueSize": 1 + }, + { + "declaration": 5515, + "isOffset": false, + "isSlot": false, + "src": "20272:6:11", + "valueSize": 1 + } + ], + "id": 5517, + "nodeType": "InlineAssembly", + "src": "19946:757:11" + } + ] + }, + "documentation": { + "id": 5510, + "nodeType": "StructuredDocumentation", + "src": "19670:126:11", + "text": "@dev Returns the hex encoded string from the raw bytes.\n The output is encoded using 2 hexadecimal digits per byte." + }, + "id": 5519, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toHexStringNoPrefix", + "nameLocation": "19810:19:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5513, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5512, + "mutability": "mutable", + "name": "raw", + "nameLocation": "19843:3:11", + "nodeType": "VariableDeclaration", + "scope": 5519, + "src": "19830:16:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5511, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "19830:5:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "19829:18:11" + }, + "returnParameters": { + "id": 5516, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5515, + "mutability": "mutable", + "name": "result", + "nameLocation": "19885:6:11", + "nodeType": "VariableDeclaration", + "scope": 5519, + "src": "19871:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5514, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "19871:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "19870:22:11" + }, + "scope": 6145, + "src": "19801:908:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5528, + "nodeType": "Block", + "src": "21138:552:11", + "statements": [ + { + "AST": { + "nativeSrc": "21200:484:11", + "nodeType": "YulBlock", + "src": "21200:484:11", + "statements": [ + { + "body": { + "nativeSrc": "21226:448:11", + "nodeType": "YulBlock", + "src": "21226:448:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21251:4:11", + "nodeType": "YulLiteral", + "src": "21251:4:11", + "type": "", + "value": "0x00" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21265:1:11", + "nodeType": "YulLiteral", + "src": "21265:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "21261:3:11", + "nodeType": "YulIdentifier", + "src": "21261:3:11" + }, + "nativeSrc": "21261:6:11", + "nodeType": "YulFunctionCall", + "src": "21261:6:11" + }, + { + "kind": "number", + "nativeSrc": "21269:3:11", + "nodeType": "YulLiteral", + "src": "21269:3:11", + "type": "", + "value": "255" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "21257:3:11", + "nodeType": "YulIdentifier", + "src": "21257:3:11" + }, + "nativeSrc": "21257:16:11", + "nodeType": "YulFunctionCall", + "src": "21257:16:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "21244:6:11", + "nodeType": "YulIdentifier", + "src": "21244:6:11" + }, + "nativeSrc": "21244:30:11", + "nodeType": "YulFunctionCall", + "src": "21244:30:11" + }, + "nativeSrc": "21244:30:11", + "nodeType": "YulExpressionStatement", + "src": "21244:30:11" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21298:4:11", + "nodeType": "YulLiteral", + "src": "21298:4:11", + "type": "", + "value": "0x20" + }, + { + "kind": "number", + "nativeSrc": "21304:66:11", + "nodeType": "YulLiteral", + "src": "21304:66:11", + "type": "", + "value": "0x0202020202020202020202020202020202020202020202020303030304040506" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "21291:6:11", + "nodeType": "YulIdentifier", + "src": "21291:6:11" + }, + "nativeSrc": "21291:80:11", + "nodeType": "YulFunctionCall", + "src": "21291:80:11" + }, + "nativeSrc": "21291:80:11", + "nodeType": "YulExpressionStatement", + "src": "21291:80:11" + }, + { + "nativeSrc": "21388:21:11", + "nodeType": "YulVariableDeclaration", + "src": "21388:21:11", + "value": { + "arguments": [ + { + "name": "s", + "nativeSrc": "21401:1:11", + "nodeType": "YulIdentifier", + "src": "21401:1:11" + }, + { + "kind": "number", + "nativeSrc": "21404:4:11", + "nodeType": "YulLiteral", + "src": "21404:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21397:3:11", + "nodeType": "YulIdentifier", + "src": "21397:3:11" + }, + "nativeSrc": "21397:12:11", + "nodeType": "YulFunctionCall", + "src": "21397:12:11" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "21392:1:11", + "nodeType": "YulTypedName", + "src": "21392:1:11", + "type": "" + } + ] + }, + { + "nativeSrc": "21426:27:11", + "nodeType": "YulVariableDeclaration", + "src": "21426:27:11", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "21441:1:11", + "nodeType": "YulIdentifier", + "src": "21441:1:11" + }, + { + "arguments": [ + { + "name": "s", + "nativeSrc": "21450:1:11", + "nodeType": "YulIdentifier", + "src": "21450:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "21444:5:11", + "nodeType": "YulIdentifier", + "src": "21444:5:11" + }, + "nativeSrc": "21444:8:11", + "nodeType": "YulFunctionCall", + "src": "21444:8:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21437:3:11", + "nodeType": "YulIdentifier", + "src": "21437:3:11" + }, + "nativeSrc": "21437:16:11", + "nodeType": "YulFunctionCall", + "src": "21437:16:11" + }, + "variables": [ + { + "name": "end", + "nativeSrc": "21430:3:11", + "nodeType": "YulTypedName", + "src": "21430:3:11", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "21521:139:11", + "nodeType": "YulBlock", + "src": "21521:139:11", + "statements": [ + { + "nativeSrc": "21543:47:11", + "nodeType": "YulAssignment", + "src": "21543:47:11", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "21552:1:11", + "nodeType": "YulIdentifier", + "src": "21552:1:11" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21560:1:11", + "nodeType": "YulLiteral", + "src": "21560:1:11", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21573:3:11", + "nodeType": "YulLiteral", + "src": "21573:3:11", + "type": "", + "value": "250" + }, + { + "arguments": [ + { + "name": "o", + "nativeSrc": "21584:1:11", + "nodeType": "YulIdentifier", + "src": "21584:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "21578:5:11", + "nodeType": "YulIdentifier", + "src": "21578:5:11" + }, + "nativeSrc": "21578:8:11", + "nodeType": "YulFunctionCall", + "src": "21578:8:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "21569:3:11", + "nodeType": "YulIdentifier", + "src": "21569:3:11" + }, + "nativeSrc": "21569:18:11", + "nodeType": "YulFunctionCall", + "src": "21569:18:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "21563:5:11", + "nodeType": "YulIdentifier", + "src": "21563:5:11" + }, + "nativeSrc": "21563:25:11", + "nodeType": "YulFunctionCall", + "src": "21563:25:11" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "21555:4:11", + "nodeType": "YulIdentifier", + "src": "21555:4:11" + }, + "nativeSrc": "21555:34:11", + "nodeType": "YulFunctionCall", + "src": "21555:34:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21548:3:11", + "nodeType": "YulIdentifier", + "src": "21548:3:11" + }, + "nativeSrc": "21548:42:11", + "nodeType": "YulFunctionCall", + "src": "21548:42:11" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "21543:1:11", + "nodeType": "YulIdentifier", + "src": "21543:1:11" + } + ] + }, + { + "body": { + "nativeSrc": "21633:9:11", + "nodeType": "YulBlock", + "src": "21633:9:11", + "statements": [ + { + "nativeSrc": "21635:5:11", + "nodeType": "YulBreak", + "src": "21635:5:11" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "21624:1:11", + "nodeType": "YulIdentifier", + "src": "21624:1:11" + }, + { + "name": "end", + "nativeSrc": "21627:3:11", + "nodeType": "YulIdentifier", + "src": "21627:3:11" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "21621:2:11", + "nodeType": "YulIdentifier", + "src": "21621:2:11" + }, + "nativeSrc": "21621:10:11", + "nodeType": "YulFunctionCall", + "src": "21621:10:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "21614:6:11", + "nodeType": "YulIdentifier", + "src": "21614:6:11" + }, + "nativeSrc": "21614:18:11", + "nodeType": "YulFunctionCall", + "src": "21614:18:11" + }, + "nativeSrc": "21611:31:11", + "nodeType": "YulIf", + "src": "21611:31:11" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "21490:1:11", + "nodeType": "YulLiteral", + "src": "21490:1:11", + "type": "", + "value": "1" + }, + "nativeSrc": "21470:190:11", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "21492:28:11", + "nodeType": "YulBlock", + "src": "21492:28:11", + "statements": [ + { + "nativeSrc": "21494:24:11", + "nodeType": "YulAssignment", + "src": "21494:24:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "21508:6:11", + "nodeType": "YulIdentifier", + "src": "21508:6:11" + }, + { + "kind": "number", + "nativeSrc": "21516:1:11", + "nodeType": "YulLiteral", + "src": "21516:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21504:3:11", + "nodeType": "YulIdentifier", + "src": "21504:3:11" + }, + "nativeSrc": "21504:14:11", + "nodeType": "YulFunctionCall", + "src": "21504:14:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "21494:6:11", + "nodeType": "YulIdentifier", + "src": "21494:6:11" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "21474:15:11", + "nodeType": "YulBlock", + "src": "21474:15:11", + "statements": [ + { + "nativeSrc": "21476:11:11", + "nodeType": "YulAssignment", + "src": "21476:11:11", + "value": { + "kind": "number", + "nativeSrc": "21486:1:11", + "nodeType": "YulLiteral", + "src": "21486:1:11", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "21476:6:11", + "nodeType": "YulIdentifier", + "src": "21476:6:11" + } + ] + } + ] + }, + "src": "21470:190:11" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "s", + "nativeSrc": "21223:1:11", + "nodeType": "YulIdentifier", + "src": "21223:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "21217:5:11", + "nodeType": "YulIdentifier", + "src": "21217:5:11" + }, + "nativeSrc": "21217:8:11", + "nodeType": "YulFunctionCall", + "src": "21217:8:11" + }, + "nativeSrc": "21214:460:11", + "nodeType": "YulIf", + "src": "21214:460:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5525, + "isOffset": false, + "isSlot": false, + "src": "21476:6:11", + "valueSize": 1 + }, + { + "declaration": 5525, + "isOffset": false, + "isSlot": false, + "src": "21494:6:11", + "valueSize": 1 + }, + { + "declaration": 5525, + "isOffset": false, + "isSlot": false, + "src": "21508:6:11", + "valueSize": 1 + }, + { + "declaration": 5522, + "isOffset": false, + "isSlot": false, + "src": "21223:1:11", + "valueSize": 1 + }, + { + "declaration": 5522, + "isOffset": false, + "isSlot": false, + "src": "21401:1:11", + "valueSize": 1 + }, + { + "declaration": 5522, + "isOffset": false, + "isSlot": false, + "src": "21450:1:11", + "valueSize": 1 + } + ], + "id": 5527, + "nodeType": "InlineAssembly", + "src": "21191:493:11" + } + ] + }, + "documentation": { + "id": 5520, + "nodeType": "StructuredDocumentation", + "src": "20998:60:11", + "text": "@dev Returns the number of UTF characters in the string." + }, + "id": 5529, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "runeCount", + "nameLocation": "21072:9:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5523, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5522, + "mutability": "mutable", + "name": "s", + "nameLocation": "21096:1:11", + "nodeType": "VariableDeclaration", + "scope": 5529, + "src": "21082:15:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5521, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "21082:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "21081:17:11" + }, + "returnParameters": { + "id": 5526, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5525, + "mutability": "mutable", + "name": "result", + "nameLocation": "21130:6:11", + "nodeType": "VariableDeclaration", + "scope": 5529, + "src": "21122:14:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5524, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21122:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "21121:16:11" + }, + "scope": 6145, + "src": "21063:627:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5538, + "nodeType": "Block", + "src": "21883:665:11", + "statements": [ + { + "AST": { + "nativeSrc": "21945:597:11", + "nodeType": "YulBlock", + "src": "21945:597:11", + "statements": [ + { + "nativeSrc": "21959:11:11", + "nodeType": "YulAssignment", + "src": "21959:11:11", + "value": { + "kind": "number", + "nativeSrc": "21969:1:11", + "nodeType": "YulLiteral", + "src": "21969:1:11", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "21959:6:11", + "nodeType": "YulIdentifier", + "src": "21959:6:11" + } + ] + }, + { + "nativeSrc": "21983:36:11", + "nodeType": "YulVariableDeclaration", + "src": "21983:36:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21999:1:11", + "nodeType": "YulLiteral", + "src": "21999:1:11", + "type": "", + "value": "7" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22010:1:11", + "nodeType": "YulLiteral", + "src": "22010:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "22006:3:11", + "nodeType": "YulIdentifier", + "src": "22006:3:11" + }, + "nativeSrc": "22006:6:11", + "nodeType": "YulFunctionCall", + "src": "22006:6:11" + }, + { + "kind": "number", + "nativeSrc": "22014:3:11", + "nodeType": "YulLiteral", + "src": "22014:3:11", + "type": "", + "value": "255" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "22002:3:11", + "nodeType": "YulIdentifier", + "src": "22002:3:11" + }, + "nativeSrc": "22002:16:11", + "nodeType": "YulFunctionCall", + "src": "22002:16:11" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "21995:3:11", + "nodeType": "YulIdentifier", + "src": "21995:3:11" + }, + "nativeSrc": "21995:24:11", + "nodeType": "YulFunctionCall", + "src": "21995:24:11" + }, + "variables": [ + { + "name": "mask", + "nativeSrc": "21987:4:11", + "nodeType": "YulTypedName", + "src": "21987:4:11", + "type": "" + } + ] + }, + { + "nativeSrc": "22032:17:11", + "nodeType": "YulVariableDeclaration", + "src": "22032:17:11", + "value": { + "arguments": [ + { + "name": "s", + "nativeSrc": "22047:1:11", + "nodeType": "YulIdentifier", + "src": "22047:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "22041:5:11", + "nodeType": "YulIdentifier", + "src": "22041:5:11" + }, + "nativeSrc": "22041:8:11", + "nodeType": "YulFunctionCall", + "src": "22041:8:11" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "22036:1:11", + "nodeType": "YulTypedName", + "src": "22036:1:11", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "22067:465:11", + "nodeType": "YulBlock", + "src": "22067:465:11", + "statements": [ + { + "nativeSrc": "22085:21:11", + "nodeType": "YulVariableDeclaration", + "src": "22085:21:11", + "value": { + "arguments": [ + { + "name": "s", + "nativeSrc": "22098:1:11", + "nodeType": "YulIdentifier", + "src": "22098:1:11" + }, + { + "kind": "number", + "nativeSrc": "22101:4:11", + "nodeType": "YulLiteral", + "src": "22101:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22094:3:11", + "nodeType": "YulIdentifier", + "src": "22094:3:11" + }, + "nativeSrc": "22094:12:11", + "nodeType": "YulFunctionCall", + "src": "22094:12:11" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "22089:1:11", + "nodeType": "YulTypedName", + "src": "22089:1:11", + "type": "" + } + ] + }, + { + "nativeSrc": "22123:20:11", + "nodeType": "YulVariableDeclaration", + "src": "22123:20:11", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "22138:1:11", + "nodeType": "YulIdentifier", + "src": "22138:1:11" + }, + { + "name": "n", + "nativeSrc": "22141:1:11", + "nodeType": "YulIdentifier", + "src": "22141:1:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22134:3:11", + "nodeType": "YulIdentifier", + "src": "22134:3:11" + }, + "nativeSrc": "22134:9:11", + "nodeType": "YulFunctionCall", + "src": "22134:9:11" + }, + "variables": [ + { + "name": "end", + "nativeSrc": "22127:3:11", + "nodeType": "YulTypedName", + "src": "22127:3:11", + "type": "" + } + ] + }, + { + "nativeSrc": "22160:22:11", + "nodeType": "YulVariableDeclaration", + "src": "22160:22:11", + "value": { + "arguments": [ + { + "name": "end", + "nativeSrc": "22178:3:11", + "nodeType": "YulIdentifier", + "src": "22178:3:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "22172:5:11", + "nodeType": "YulIdentifier", + "src": "22172:5:11" + }, + "nativeSrc": "22172:10:11", + "nodeType": "YulFunctionCall", + "src": "22172:10:11" + }, + "variables": [ + { + "name": "last", + "nativeSrc": "22164:4:11", + "nodeType": "YulTypedName", + "src": "22164:4:11", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "end", + "nativeSrc": "22206:3:11", + "nodeType": "YulIdentifier", + "src": "22206:3:11" + }, + { + "kind": "number", + "nativeSrc": "22211:1:11", + "nodeType": "YulLiteral", + "src": "22211:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22199:6:11", + "nodeType": "YulIdentifier", + "src": "22199:6:11" + }, + "nativeSrc": "22199:14:11", + "nodeType": "YulFunctionCall", + "src": "22199:14:11" + }, + "nativeSrc": "22199:14:11", + "nodeType": "YulExpressionStatement", + "src": "22199:14:11" + }, + { + "body": { + "nativeSrc": "22242:242:11", + "nodeType": "YulBlock", + "src": "22242:242:11", + "statements": [ + { + "body": { + "nativeSrc": "22287:89:11", + "nodeType": "YulBlock", + "src": "22287:89:11", + "statements": [ + { + "nativeSrc": "22313:11:11", + "nodeType": "YulAssignment", + "src": "22313:11:11", + "value": { + "kind": "number", + "nativeSrc": "22323:1:11", + "nodeType": "YulLiteral", + "src": "22323:1:11", + "type": "", + "value": "0" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "22313:6:11", + "nodeType": "YulIdentifier", + "src": "22313:6:11" + } + ] + }, + { + "nativeSrc": "22349:5:11", + "nodeType": "YulBreak", + "src": "22349:5:11" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "mask", + "nativeSrc": "22271:4:11", + "nodeType": "YulIdentifier", + "src": "22271:4:11" + }, + { + "arguments": [ + { + "name": "o", + "nativeSrc": "22283:1:11", + "nodeType": "YulIdentifier", + "src": "22283:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "22277:5:11", + "nodeType": "YulIdentifier", + "src": "22277:5:11" + }, + "nativeSrc": "22277:8:11", + "nodeType": "YulFunctionCall", + "src": "22277:8:11" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "22267:3:11", + "nodeType": "YulIdentifier", + "src": "22267:3:11" + }, + "nativeSrc": "22267:19:11", + "nodeType": "YulFunctionCall", + "src": "22267:19:11" + }, + "nativeSrc": "22264:112:11", + "nodeType": "YulIf", + "src": "22264:112:11" + }, + { + "nativeSrc": "22397:17:11", + "nodeType": "YulAssignment", + "src": "22397:17:11", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "22406:1:11", + "nodeType": "YulIdentifier", + "src": "22406:1:11" + }, + { + "kind": "number", + "nativeSrc": "22409:4:11", + "nodeType": "YulLiteral", + "src": "22409:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22402:3:11", + "nodeType": "YulIdentifier", + "src": "22402:3:11" + }, + "nativeSrc": "22402:12:11", + "nodeType": "YulFunctionCall", + "src": "22402:12:11" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "22397:1:11", + "nodeType": "YulIdentifier", + "src": "22397:1:11" + } + ] + }, + { + "body": { + "nativeSrc": "22457:9:11", + "nodeType": "YulBlock", + "src": "22457:9:11", + "statements": [ + { + "nativeSrc": "22459:5:11", + "nodeType": "YulBreak", + "src": "22459:5:11" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "22448:1:11", + "nodeType": "YulIdentifier", + "src": "22448:1:11" + }, + { + "name": "end", + "nativeSrc": "22451:3:11", + "nodeType": "YulIdentifier", + "src": "22451:3:11" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "22445:2:11", + "nodeType": "YulIdentifier", + "src": "22445:2:11" + }, + "nativeSrc": "22445:10:11", + "nodeType": "YulFunctionCall", + "src": "22445:10:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "22438:6:11", + "nodeType": "YulIdentifier", + "src": "22438:6:11" + }, + "nativeSrc": "22438:18:11", + "nodeType": "YulFunctionCall", + "src": "22438:18:11" + }, + "nativeSrc": "22435:31:11", + "nodeType": "YulIf", + "src": "22435:31:11" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "22237:1:11", + "nodeType": "YulLiteral", + "src": "22237:1:11", + "type": "", + "value": "1" + }, + "nativeSrc": "22230:254:11", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "22239:2:11", + "nodeType": "YulBlock", + "src": "22239:2:11", + "statements": [] + }, + "pre": { + "nativeSrc": "22234:2:11", + "nodeType": "YulBlock", + "src": "22234:2:11", + "statements": [] + }, + "src": "22230:254:11" + }, + { + "expression": { + "arguments": [ + { + "name": "end", + "nativeSrc": "22508:3:11", + "nodeType": "YulIdentifier", + "src": "22508:3:11" + }, + { + "name": "last", + "nativeSrc": "22513:4:11", + "nodeType": "YulIdentifier", + "src": "22513:4:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22501:6:11", + "nodeType": "YulIdentifier", + "src": "22501:6:11" + }, + "nativeSrc": "22501:17:11", + "nodeType": "YulFunctionCall", + "src": "22501:17:11" + }, + "nativeSrc": "22501:17:11", + "nodeType": "YulExpressionStatement", + "src": "22501:17:11" + } + ] + }, + "condition": { + "name": "n", + "nativeSrc": "22065:1:11", + "nodeType": "YulIdentifier", + "src": "22065:1:11" + }, + "nativeSrc": "22062:470:11", + "nodeType": "YulIf", + "src": "22062:470:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5535, + "isOffset": false, + "isSlot": false, + "src": "21959:6:11", + "valueSize": 1 + }, + { + "declaration": 5535, + "isOffset": false, + "isSlot": false, + "src": "22313:6:11", + "valueSize": 1 + }, + { + "declaration": 5532, + "isOffset": false, + "isSlot": false, + "src": "22047:1:11", + "valueSize": 1 + }, + { + "declaration": 5532, + "isOffset": false, + "isSlot": false, + "src": "22098:1:11", + "valueSize": 1 + } + ], + "id": 5537, + "nodeType": "InlineAssembly", + "src": "21936:606:11" + } + ] + }, + "documentation": { + "id": 5530, + "nodeType": "StructuredDocumentation", + "src": "21696:108:11", + "text": "@dev Returns if this string is a 7-bit ASCII string.\n (i.e. all characters codes are in [0..127])" + }, + "id": 5539, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "is7BitASCII", + "nameLocation": "21818:11:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5533, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5532, + "mutability": "mutable", + "name": "s", + "nameLocation": "21844:1:11", + "nodeType": "VariableDeclaration", + "scope": 5539, + "src": "21830:15:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5531, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "21830:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "21829:17:11" + }, + "returnParameters": { + "id": 5536, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5535, + "mutability": "mutable", + "name": "result", + "nameLocation": "21875:6:11", + "nodeType": "VariableDeclaration", + "scope": 5539, + "src": "21870:11:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5534, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "21870:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "21869:13:11" + }, + "scope": 6145, + "src": "21809:739:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5550, + "nodeType": "Block", + "src": "22831:494:11", + "statements": [ + { + "AST": { + "nativeSrc": "22893:426:11", + "nodeType": "YulBlock", + "src": "22893:426:11", + "statements": [ + { + "nativeSrc": "22907:11:11", + "nodeType": "YulAssignment", + "src": "22907:11:11", + "value": { + "kind": "number", + "nativeSrc": "22917:1:11", + "nodeType": "YulLiteral", + "src": "22917:1:11", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "22907:6:11", + "nodeType": "YulIdentifier", + "src": "22907:6:11" + } + ] + }, + { + "body": { + "nativeSrc": "22943:366:11", + "nodeType": "YulBlock", + "src": "22943:366:11", + "statements": [ + { + "nativeSrc": "22961:43:11", + "nodeType": "YulVariableDeclaration", + "src": "22961:43:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22981:3:11", + "nodeType": "YulLiteral", + "src": "22981:3:11", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22990:3:11", + "nodeType": "YulLiteral", + "src": "22990:3:11", + "type": "", + "value": "128" + }, + { + "name": "allowed", + "nativeSrc": "22995:7:11", + "nodeType": "YulIdentifier", + "src": "22995:7:11" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "22986:3:11", + "nodeType": "YulIdentifier", + "src": "22986:3:11" + }, + "nativeSrc": "22986:17:11", + "nodeType": "YulFunctionCall", + "src": "22986:17:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "22977:3:11", + "nodeType": "YulIdentifier", + "src": "22977:3:11" + }, + "nativeSrc": "22977:27:11", + "nodeType": "YulFunctionCall", + "src": "22977:27:11" + }, + "variables": [ + { + "name": "allowed_", + "nativeSrc": "22965:8:11", + "nodeType": "YulTypedName", + "src": "22965:8:11", + "type": "" + } + ] + }, + { + "nativeSrc": "23021:21:11", + "nodeType": "YulVariableDeclaration", + "src": "23021:21:11", + "value": { + "arguments": [ + { + "name": "s", + "nativeSrc": "23034:1:11", + "nodeType": "YulIdentifier", + "src": "23034:1:11" + }, + { + "kind": "number", + "nativeSrc": "23037:4:11", + "nodeType": "YulLiteral", + "src": "23037:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23030:3:11", + "nodeType": "YulIdentifier", + "src": "23030:3:11" + }, + "nativeSrc": "23030:12:11", + "nodeType": "YulFunctionCall", + "src": "23030:12:11" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "23025:1:11", + "nodeType": "YulTypedName", + "src": "23025:1:11", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "23100:195:11", + "nodeType": "YulBlock", + "src": "23100:195:11", + "statements": [ + { + "nativeSrc": "23122:55:11", + "nodeType": "YulAssignment", + "src": "23122:55:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "23136:6:11", + "nodeType": "YulIdentifier", + "src": "23136:6:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23153:1:11", + "nodeType": "YulLiteral", + "src": "23153:1:11", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "name": "o", + "nativeSrc": "23162:1:11", + "nodeType": "YulIdentifier", + "src": "23162:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "23156:5:11", + "nodeType": "YulIdentifier", + "src": "23156:5:11" + }, + "nativeSrc": "23156:8:11", + "nodeType": "YulFunctionCall", + "src": "23156:8:11" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "23148:4:11", + "nodeType": "YulIdentifier", + "src": "23148:4:11" + }, + "nativeSrc": "23148:17:11", + "nodeType": "YulFunctionCall", + "src": "23148:17:11" + }, + { + "name": "allowed_", + "nativeSrc": "23167:8:11", + "nodeType": "YulIdentifier", + "src": "23167:8:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "23144:3:11", + "nodeType": "YulIdentifier", + "src": "23144:3:11" + }, + "nativeSrc": "23144:32:11", + "nodeType": "YulFunctionCall", + "src": "23144:32:11" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "23132:3:11", + "nodeType": "YulIdentifier", + "src": "23132:3:11" + }, + "nativeSrc": "23132:45:11", + "nodeType": "YulFunctionCall", + "src": "23132:45:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "23122:6:11", + "nodeType": "YulIdentifier", + "src": "23122:6:11" + } + ] + }, + { + "nativeSrc": "23198:14:11", + "nodeType": "YulAssignment", + "src": "23198:14:11", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "23207:1:11", + "nodeType": "YulIdentifier", + "src": "23207:1:11" + }, + { + "kind": "number", + "nativeSrc": "23210:1:11", + "nodeType": "YulLiteral", + "src": "23210:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23203:3:11", + "nodeType": "YulIdentifier", + "src": "23203:3:11" + }, + "nativeSrc": "23203:9:11", + "nodeType": "YulFunctionCall", + "src": "23203:9:11" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "23198:1:11", + "nodeType": "YulIdentifier", + "src": "23198:1:11" + } + ] + }, + { + "body": { + "nativeSrc": "23268:9:11", + "nodeType": "YulBlock", + "src": "23268:9:11", + "statements": [ + { + "nativeSrc": "23270:5:11", + "nodeType": "YulBreak", + "src": "23270:5:11" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "23247:6:11", + "nodeType": "YulIdentifier", + "src": "23247:6:11" + }, + { + "arguments": [ + { + "name": "o", + "nativeSrc": "23258:1:11", + "nodeType": "YulIdentifier", + "src": "23258:1:11" + }, + { + "name": "end", + "nativeSrc": "23261:3:11", + "nodeType": "YulIdentifier", + "src": "23261:3:11" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "23255:2:11", + "nodeType": "YulIdentifier", + "src": "23255:2:11" + }, + "nativeSrc": "23255:10:11", + "nodeType": "YulFunctionCall", + "src": "23255:10:11" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "23243:3:11", + "nodeType": "YulIdentifier", + "src": "23243:3:11" + }, + "nativeSrc": "23243:23:11", + "nodeType": "YulFunctionCall", + "src": "23243:23:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "23236:6:11", + "nodeType": "YulIdentifier", + "src": "23236:6:11" + }, + "nativeSrc": "23236:31:11", + "nodeType": "YulFunctionCall", + "src": "23236:31:11" + }, + "nativeSrc": "23233:44:11", + "nodeType": "YulIf", + "src": "23233:44:11" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "23095:1:11", + "nodeType": "YulLiteral", + "src": "23095:1:11", + "type": "", + "value": "1" + }, + "nativeSrc": "23059:236:11", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "23097:2:11", + "nodeType": "YulBlock", + "src": "23097:2:11", + "statements": [] + }, + "pre": { + "nativeSrc": "23063:31:11", + "nodeType": "YulBlock", + "src": "23063:31:11", + "statements": [ + { + "nativeSrc": "23065:27:11", + "nodeType": "YulVariableDeclaration", + "src": "23065:27:11", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "23080:1:11", + "nodeType": "YulIdentifier", + "src": "23080:1:11" + }, + { + "arguments": [ + { + "name": "s", + "nativeSrc": "23089:1:11", + "nodeType": "YulIdentifier", + "src": "23089:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "23083:5:11", + "nodeType": "YulIdentifier", + "src": "23083:5:11" + }, + "nativeSrc": "23083:8:11", + "nodeType": "YulFunctionCall", + "src": "23083:8:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23076:3:11", + "nodeType": "YulIdentifier", + "src": "23076:3:11" + }, + "nativeSrc": "23076:16:11", + "nodeType": "YulFunctionCall", + "src": "23076:16:11" + }, + "variables": [ + { + "name": "end", + "nativeSrc": "23069:3:11", + "nodeType": "YulTypedName", + "src": "23069:3:11", + "type": "" + } + ] + } + ] + }, + "src": "23059:236:11" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "s", + "nativeSrc": "22940:1:11", + "nodeType": "YulIdentifier", + "src": "22940:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "22934:5:11", + "nodeType": "YulIdentifier", + "src": "22934:5:11" + }, + "nativeSrc": "22934:8:11", + "nodeType": "YulFunctionCall", + "src": "22934:8:11" + }, + "nativeSrc": "22931:378:11", + "nodeType": "YulIf", + "src": "22931:378:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5544, + "isOffset": false, + "isSlot": false, + "src": "22995:7:11", + "valueSize": 1 + }, + { + "declaration": 5547, + "isOffset": false, + "isSlot": false, + "src": "22907:6:11", + "valueSize": 1 + }, + { + "declaration": 5547, + "isOffset": false, + "isSlot": false, + "src": "23122:6:11", + "valueSize": 1 + }, + { + "declaration": 5547, + "isOffset": false, + "isSlot": false, + "src": "23136:6:11", + "valueSize": 1 + }, + { + "declaration": 5547, + "isOffset": false, + "isSlot": false, + "src": "23247:6:11", + "valueSize": 1 + }, + { + "declaration": 5542, + "isOffset": false, + "isSlot": false, + "src": "22940:1:11", + "valueSize": 1 + }, + { + "declaration": 5542, + "isOffset": false, + "isSlot": false, + "src": "23034:1:11", + "valueSize": 1 + }, + { + "declaration": 5542, + "isOffset": false, + "isSlot": false, + "src": "23089:1:11", + "valueSize": 1 + } + ], + "id": 5549, + "nodeType": "InlineAssembly", + "src": "22884:435:11" + } + ] + }, + "documentation": { + "id": 5540, + "nodeType": "StructuredDocumentation", + "src": "22554:181:11", + "text": "@dev Returns if this string is a 7-bit ASCII string,\n AND all characters are in the `allowed` lookup.\n Note: If `s` is empty, returns true regardless of `allowed`." + }, + "id": 5551, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "is7BitASCII", + "nameLocation": "22749:11:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5545, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5542, + "mutability": "mutable", + "name": "s", + "nameLocation": "22775:1:11", + "nodeType": "VariableDeclaration", + "scope": 5551, + "src": "22761:15:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5541, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "22761:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5544, + "mutability": "mutable", + "name": "allowed", + "nameLocation": "22786:7:11", + "nodeType": "VariableDeclaration", + "scope": 5551, + "src": "22778:15:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 5543, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "22778:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "22760:34:11" + }, + "returnParameters": { + "id": 5548, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5547, + "mutability": "mutable", + "name": "result", + "nameLocation": "22823:6:11", + "nodeType": "VariableDeclaration", + "scope": 5551, + "src": "22818:11:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5546, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "22818:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "22817:13:11" + }, + "scope": 6145, + "src": "22740:585:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5560, + "nodeType": "Block", + "src": "23630:556:11", + "statements": [ + { + "AST": { + "nativeSrc": "23692:488:11", + "nodeType": "YulBlock", + "src": "23692:488:11", + "statements": [ + { + "body": { + "nativeSrc": "23718:452:11", + "nodeType": "YulBlock", + "src": "23718:452:11", + "statements": [ + { + "nativeSrc": "23736:21:11", + "nodeType": "YulVariableDeclaration", + "src": "23736:21:11", + "value": { + "arguments": [ + { + "name": "s", + "nativeSrc": "23749:1:11", + "nodeType": "YulIdentifier", + "src": "23749:1:11" + }, + { + "kind": "number", + "nativeSrc": "23752:4:11", + "nodeType": "YulLiteral", + "src": "23752:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23745:3:11", + "nodeType": "YulIdentifier", + "src": "23745:3:11" + }, + "nativeSrc": "23745:12:11", + "nodeType": "YulFunctionCall", + "src": "23745:12:11" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "23740:1:11", + "nodeType": "YulTypedName", + "src": "23740:1:11", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "23815:174:11", + "nodeType": "YulBlock", + "src": "23815:174:11", + "statements": [ + { + "nativeSrc": "23837:47:11", + "nodeType": "YulAssignment", + "src": "23837:47:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "23850:6:11", + "nodeType": "YulIdentifier", + "src": "23850:6:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23867:1:11", + "nodeType": "YulLiteral", + "src": "23867:1:11", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "name": "o", + "nativeSrc": "23876:1:11", + "nodeType": "YulIdentifier", + "src": "23876:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "23870:5:11", + "nodeType": "YulIdentifier", + "src": "23870:5:11" + }, + "nativeSrc": "23870:8:11", + "nodeType": "YulFunctionCall", + "src": "23870:8:11" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "23862:4:11", + "nodeType": "YulIdentifier", + "src": "23862:4:11" + }, + "nativeSrc": "23862:17:11", + "nodeType": "YulFunctionCall", + "src": "23862:17:11" + }, + { + "kind": "number", + "nativeSrc": "23881:1:11", + "nodeType": "YulLiteral", + "src": "23881:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "23858:3:11", + "nodeType": "YulIdentifier", + "src": "23858:3:11" + }, + "nativeSrc": "23858:25:11", + "nodeType": "YulFunctionCall", + "src": "23858:25:11" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "23847:2:11", + "nodeType": "YulIdentifier", + "src": "23847:2:11" + }, + "nativeSrc": "23847:37:11", + "nodeType": "YulFunctionCall", + "src": "23847:37:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "23837:6:11", + "nodeType": "YulIdentifier", + "src": "23837:6:11" + } + ] + }, + { + "nativeSrc": "23905:14:11", + "nodeType": "YulAssignment", + "src": "23905:14:11", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "23914:1:11", + "nodeType": "YulIdentifier", + "src": "23914:1:11" + }, + { + "kind": "number", + "nativeSrc": "23917:1:11", + "nodeType": "YulLiteral", + "src": "23917:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23910:3:11", + "nodeType": "YulIdentifier", + "src": "23910:3:11" + }, + "nativeSrc": "23910:9:11", + "nodeType": "YulFunctionCall", + "src": "23910:9:11" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "23905:1:11", + "nodeType": "YulIdentifier", + "src": "23905:1:11" + } + ] + }, + { + "body": { + "nativeSrc": "23962:9:11", + "nodeType": "YulBlock", + "src": "23962:9:11", + "statements": [ + { + "nativeSrc": "23964:5:11", + "nodeType": "YulBreak", + "src": "23964:5:11" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "23953:1:11", + "nodeType": "YulIdentifier", + "src": "23953:1:11" + }, + { + "name": "end", + "nativeSrc": "23956:3:11", + "nodeType": "YulIdentifier", + "src": "23956:3:11" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "23950:2:11", + "nodeType": "YulIdentifier", + "src": "23950:2:11" + }, + "nativeSrc": "23950:10:11", + "nodeType": "YulFunctionCall", + "src": "23950:10:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "23943:6:11", + "nodeType": "YulIdentifier", + "src": "23943:6:11" + }, + "nativeSrc": "23943:18:11", + "nodeType": "YulFunctionCall", + "src": "23943:18:11" + }, + "nativeSrc": "23940:31:11", + "nodeType": "YulIf", + "src": "23940:31:11" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "23810:1:11", + "nodeType": "YulLiteral", + "src": "23810:1:11", + "type": "", + "value": "1" + }, + "nativeSrc": "23774:215:11", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "23812:2:11", + "nodeType": "YulBlock", + "src": "23812:2:11", + "statements": [] + }, + "pre": { + "nativeSrc": "23778:31:11", + "nodeType": "YulBlock", + "src": "23778:31:11", + "statements": [ + { + "nativeSrc": "23780:27:11", + "nodeType": "YulVariableDeclaration", + "src": "23780:27:11", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "23795:1:11", + "nodeType": "YulIdentifier", + "src": "23795:1:11" + }, + { + "arguments": [ + { + "name": "s", + "nativeSrc": "23804:1:11", + "nodeType": "YulIdentifier", + "src": "23804:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "23798:5:11", + "nodeType": "YulIdentifier", + "src": "23798:5:11" + }, + "nativeSrc": "23798:8:11", + "nodeType": "YulFunctionCall", + "src": "23798:8:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23791:3:11", + "nodeType": "YulIdentifier", + "src": "23791:3:11" + }, + "nativeSrc": "23791:16:11", + "nodeType": "YulFunctionCall", + "src": "23791:16:11" + }, + "variables": [ + { + "name": "end", + "nativeSrc": "23784:3:11", + "nodeType": "YulTypedName", + "src": "23784:3:11", + "type": "" + } + ] + } + ] + }, + "src": "23774:215:11" + }, + { + "body": { + "nativeSrc": "24026:130:11", + "nodeType": "YulBlock", + "src": "24026:130:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "24055:4:11", + "nodeType": "YulLiteral", + "src": "24055:4:11", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "24061:10:11", + "nodeType": "YulLiteral", + "src": "24061:10:11", + "type": "", + "value": "0xc9807e0d" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "24048:6:11", + "nodeType": "YulIdentifier", + "src": "24048:6:11" + }, + "nativeSrc": "24048:24:11", + "nodeType": "YulFunctionCall", + "src": "24048:24:11" + }, + "nativeSrc": "24048:24:11", + "nodeType": "YulExpressionStatement", + "src": "24048:24:11" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "24127:4:11", + "nodeType": "YulLiteral", + "src": "24127:4:11", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "24133:4:11", + "nodeType": "YulLiteral", + "src": "24133:4:11", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "24120:6:11", + "nodeType": "YulIdentifier", + "src": "24120:6:11" + }, + "nativeSrc": "24120:18:11", + "nodeType": "YulFunctionCall", + "src": "24120:18:11" + }, + "nativeSrc": "24120:18:11", + "nodeType": "YulExpressionStatement", + "src": "24120:18:11" + } + ] + }, + "condition": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "24013:3:11", + "nodeType": "YulLiteral", + "src": "24013:3:11", + "type": "", + "value": "128" + }, + { + "name": "result", + "nativeSrc": "24018:6:11", + "nodeType": "YulIdentifier", + "src": "24018:6:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "24009:3:11", + "nodeType": "YulIdentifier", + "src": "24009:3:11" + }, + "nativeSrc": "24009:16:11", + "nodeType": "YulFunctionCall", + "src": "24009:16:11" + }, + "nativeSrc": "24006:150:11", + "nodeType": "YulIf", + "src": "24006:150:11" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "s", + "nativeSrc": "23715:1:11", + "nodeType": "YulIdentifier", + "src": "23715:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "23709:5:11", + "nodeType": "YulIdentifier", + "src": "23709:5:11" + }, + "nativeSrc": "23709:8:11", + "nodeType": "YulFunctionCall", + "src": "23709:8:11" + }, + "nativeSrc": "23706:464:11", + "nodeType": "YulIf", + "src": "23706:464:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5557, + "isOffset": false, + "isSlot": false, + "src": "23837:6:11", + "valueSize": 1 + }, + { + "declaration": 5557, + "isOffset": false, + "isSlot": false, + "src": "23850:6:11", + "valueSize": 1 + }, + { + "declaration": 5557, + "isOffset": false, + "isSlot": false, + "src": "24018:6:11", + "valueSize": 1 + }, + { + "declaration": 5554, + "isOffset": false, + "isSlot": false, + "src": "23715:1:11", + "valueSize": 1 + }, + { + "declaration": 5554, + "isOffset": false, + "isSlot": false, + "src": "23749:1:11", + "valueSize": 1 + }, + { + "declaration": 5554, + "isOffset": false, + "isSlot": false, + "src": "23804:1:11", + "valueSize": 1 + } + ], + "id": 5559, + "nodeType": "InlineAssembly", + "src": "23683:497:11" + } + ] + }, + "documentation": { + "id": 5552, + "nodeType": "StructuredDocumentation", + "src": "23331:204:11", + "text": "@dev Converts the bytes in the 7-bit ASCII string `s` to\n an allowed lookup for use in `is7BitASCII(s, allowed)`.\n To save runtime gas, you can cache the result in an immutable variable." + }, + "id": 5561, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "to7BitASCIIAllowedLookup", + "nameLocation": "23549:24:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5555, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5554, + "mutability": "mutable", + "name": "s", + "nameLocation": "23588:1:11", + "nodeType": "VariableDeclaration", + "scope": 5561, + "src": "23574:15:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5553, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "23574:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "23573:17:11" + }, + "returnParameters": { + "id": 5558, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5557, + "mutability": "mutable", + "name": "result", + "nameLocation": "23622:6:11", + "nodeType": "VariableDeclaration", + "scope": 5561, + "src": "23614:14:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 5556, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "23614:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "23613:16:11" + }, + "scope": 6145, + "src": "23540:646:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5592, + "nodeType": "Block", + "src": "25022:99:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 5579, + "name": "subject", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5564, + "src": "25069:7:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5578, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "25063:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5577, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "25063:5:11", + "typeDescriptions": {} + } + }, + "id": 5580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25063:14:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "arguments": [ + { + "id": 5583, + "name": "needle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5566, + "src": "25085:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5582, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "25079:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5581, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "25079:5:11", + "typeDescriptions": {} + } + }, + "id": 5584, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25079:13:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "arguments": [ + { + "id": 5587, + "name": "replacement", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5568, + "src": "25100:11:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5586, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "25094:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5585, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "25094:5:11", + "typeDescriptions": {} + } + }, + "id": 5588, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25094:18:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 5575, + "name": "LibBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "25046:8:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibBytes_$3089_$", + "typeString": "type(library LibBytes)" + } + }, + "id": 5576, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "25055:7:11", + "memberName": "replace", + "nodeType": "MemberAccess", + "referencedDeclaration": 2712, + "src": "25046:16:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,bytes memory,bytes memory) pure returns (bytes memory)" + } + }, + "id": 5589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25046:67:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5574, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "25039:6:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 5573, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "25039:6:11", + "typeDescriptions": {} + } + }, + "id": 5590, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25039:75:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 5572, + "id": 5591, + "nodeType": "Return", + "src": "25032:82:11" + } + ] + }, + "documentation": { + "id": 5562, + "nodeType": "StructuredDocumentation", + "src": "24779:83:11", + "text": "@dev Returns `subject` all occurrences of `needle` replaced with `replacement`." + }, + "id": 5593, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "replace", + "nameLocation": "24876:7:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5569, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5564, + "mutability": "mutable", + "name": "subject", + "nameLocation": "24898:7:11", + "nodeType": "VariableDeclaration", + "scope": 5593, + "src": "24884:21:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5563, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "24884:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5566, + "mutability": "mutable", + "name": "needle", + "nameLocation": "24921:6:11", + "nodeType": "VariableDeclaration", + "scope": 5593, + "src": "24907:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5565, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "24907:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5568, + "mutability": "mutable", + "name": "replacement", + "nameLocation": "24943:11:11", + "nodeType": "VariableDeclaration", + "scope": 5593, + "src": "24929:25:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5567, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "24929:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "24883:72:11" + }, + "returnParameters": { + "id": 5572, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5571, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5593, + "src": "25003:13:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5570, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "25003:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "25002:15:11" + }, + "scope": 6145, + "src": "24867:254:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5618, + "nodeType": "Block", + "src": "25492:77:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 5609, + "name": "subject", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5596, + "src": "25532:7:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5608, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "25526:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5607, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "25526:5:11", + "typeDescriptions": {} + } + }, + "id": 5610, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25526:14:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "arguments": [ + { + "id": 5613, + "name": "needle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5598, + "src": "25548:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5612, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "25542:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5611, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "25542:5:11", + "typeDescriptions": {} + } + }, + "id": 5614, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25542:13:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 5615, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5600, + "src": "25557:4:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 5605, + "name": "LibBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "25509:8:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibBytes_$3089_$", + "typeString": "type(library LibBytes)" + } + }, + "id": 5606, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "25518:7:11", + "memberName": "indexOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 2726, + "src": "25509:16:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (bytes memory,bytes memory,uint256) pure returns (uint256)" + } + }, + "id": 5616, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25509:53:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5604, + "id": 5617, + "nodeType": "Return", + "src": "25502:60:11" + } + ] + }, + "documentation": { + "id": 5594, + "nodeType": "StructuredDocumentation", + "src": "25127:224:11", + "text": "@dev Returns the byte index of the first location of `needle` in `subject`,\n needleing from left to right, starting from `from`.\n Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `needle` is not found." + }, + "id": 5619, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "indexOf", + "nameLocation": "25365:7:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5601, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5596, + "mutability": "mutable", + "name": "subject", + "nameLocation": "25387:7:11", + "nodeType": "VariableDeclaration", + "scope": 5619, + "src": "25373:21:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5595, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "25373:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5598, + "mutability": "mutable", + "name": "needle", + "nameLocation": "25410:6:11", + "nodeType": "VariableDeclaration", + "scope": 5619, + "src": "25396:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5597, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "25396:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5600, + "mutability": "mutable", + "name": "from", + "nameLocation": "25426:4:11", + "nodeType": "VariableDeclaration", + "scope": 5619, + "src": "25418:12:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5599, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "25418:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "25372:59:11" + }, + "returnParameters": { + "id": 5604, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5603, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5619, + "src": "25479:7:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5602, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "25479:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "25478:9:11" + }, + "scope": 6145, + "src": "25356:213:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5642, + "nodeType": "Block", + "src": "25876:74:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 5633, + "name": "subject", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5622, + "src": "25916:7:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5632, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "25910:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5631, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "25910:5:11", + "typeDescriptions": {} + } + }, + "id": 5634, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25910:14:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "arguments": [ + { + "id": 5637, + "name": "needle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5624, + "src": "25932:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5636, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "25926:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5635, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "25926:5:11", + "typeDescriptions": {} + } + }, + "id": 5638, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25926:13:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "hexValue": "30", + "id": 5639, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25941:1:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "expression": { + "id": 5629, + "name": "LibBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "25893:8:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibBytes_$3089_$", + "typeString": "type(library LibBytes)" + } + }, + "id": 5630, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "25902:7:11", + "memberName": "indexOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 2726, + "src": "25893:16:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (bytes memory,bytes memory,uint256) pure returns (uint256)" + } + }, + "id": 5640, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25893:50:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5628, + "id": 5641, + "nodeType": "Return", + "src": "25886:57:11" + } + ] + }, + "documentation": { + "id": 5620, + "nodeType": "StructuredDocumentation", + "src": "25575:202:11", + "text": "@dev Returns the byte index of the first location of `needle` in `subject`,\n needleing from left to right.\n Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `needle` is not found." + }, + "id": 5643, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "indexOf", + "nameLocation": "25791:7:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5625, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5622, + "mutability": "mutable", + "name": "subject", + "nameLocation": "25813:7:11", + "nodeType": "VariableDeclaration", + "scope": 5643, + "src": "25799:21:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5621, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "25799:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5624, + "mutability": "mutable", + "name": "needle", + "nameLocation": "25836:6:11", + "nodeType": "VariableDeclaration", + "scope": 5643, + "src": "25822:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5623, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "25822:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "25798:45:11" + }, + "returnParameters": { + "id": 5628, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5627, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5643, + "src": "25867:7:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5626, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "25867:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "25866:9:11" + }, + "scope": 6145, + "src": "25782:168:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5668, + "nodeType": "Block", + "src": "26325:81:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 5659, + "name": "subject", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5646, + "src": "26369:7:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5658, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "26363:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5657, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "26363:5:11", + "typeDescriptions": {} + } + }, + "id": 5660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26363:14:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "arguments": [ + { + "id": 5663, + "name": "needle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5648, + "src": "26385:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5662, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "26379:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5661, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "26379:5:11", + "typeDescriptions": {} + } + }, + "id": 5664, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26379:13:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 5665, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5650, + "src": "26394:4:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 5655, + "name": "LibBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "26342:8:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibBytes_$3089_$", + "typeString": "type(library LibBytes)" + } + }, + "id": 5656, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "26351:11:11", + "memberName": "lastIndexOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 2757, + "src": "26342:20:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (bytes memory,bytes memory,uint256) pure returns (uint256)" + } + }, + "id": 5666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26342:57:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5654, + "id": 5667, + "nodeType": "Return", + "src": "26335:64:11" + } + ] + }, + "documentation": { + "id": 5644, + "nodeType": "StructuredDocumentation", + "src": "25956:224:11", + "text": "@dev Returns the byte index of the first location of `needle` in `subject`,\n needleing from right to left, starting from `from`.\n Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `needle` is not found." + }, + "id": 5669, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "lastIndexOf", + "nameLocation": "26194:11:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5651, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5646, + "mutability": "mutable", + "name": "subject", + "nameLocation": "26220:7:11", + "nodeType": "VariableDeclaration", + "scope": 5669, + "src": "26206:21:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5645, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "26206:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5648, + "mutability": "mutable", + "name": "needle", + "nameLocation": "26243:6:11", + "nodeType": "VariableDeclaration", + "scope": 5669, + "src": "26229:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5647, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "26229:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5650, + "mutability": "mutable", + "name": "from", + "nameLocation": "26259:4:11", + "nodeType": "VariableDeclaration", + "scope": 5669, + "src": "26251:12:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5649, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26251:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "26205:59:11" + }, + "returnParameters": { + "id": 5654, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5653, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5669, + "src": "26312:7:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5652, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26312:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "26311:9:11" + }, + "scope": 6145, + "src": "26185:221:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5696, + "nodeType": "Block", + "src": "26745:94:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 5683, + "name": "subject", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5672, + "src": "26789:7:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5682, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "26783:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5681, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "26783:5:11", + "typeDescriptions": {} + } + }, + "id": 5684, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26783:14:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "arguments": [ + { + "id": 5687, + "name": "needle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5674, + "src": "26805:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5686, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "26799:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5685, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "26799:5:11", + "typeDescriptions": {} + } + }, + "id": 5688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26799:13:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "expression": { + "arguments": [ + { + "id": 5691, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "26819:7:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 5690, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26819:7:11", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 5689, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "26814:4:11", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 5692, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26814:13:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 5693, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "26828:3:11", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "26814:17:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 5679, + "name": "LibBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "26762:8:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibBytes_$3089_$", + "typeString": "type(library LibBytes)" + } + }, + "id": 5680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "26771:11:11", + "memberName": "lastIndexOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 2757, + "src": "26762:20:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (bytes memory,bytes memory,uint256) pure returns (uint256)" + } + }, + "id": 5694, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26762:70:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5678, + "id": 5695, + "nodeType": "Return", + "src": "26755:77:11" + } + ] + }, + "documentation": { + "id": 5670, + "nodeType": "StructuredDocumentation", + "src": "26412:202:11", + "text": "@dev Returns the byte index of the first location of `needle` in `subject`,\n needleing from right to left.\n Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `needle` is not found." + }, + "id": 5697, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "lastIndexOf", + "nameLocation": "26628:11:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5675, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5672, + "mutability": "mutable", + "name": "subject", + "nameLocation": "26654:7:11", + "nodeType": "VariableDeclaration", + "scope": 5697, + "src": "26640:21:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5671, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "26640:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5674, + "mutability": "mutable", + "name": "needle", + "nameLocation": "26677:6:11", + "nodeType": "VariableDeclaration", + "scope": 5697, + "src": "26663:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5673, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "26663:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "26639:45:11" + }, + "returnParameters": { + "id": 5678, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5677, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5697, + "src": "26732:7:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5676, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26732:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "26731:9:11" + }, + "scope": 6145, + "src": "26619:220:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5719, + "nodeType": "Block", + "src": "27015:72:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 5711, + "name": "subject", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5700, + "src": "27056:7:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5710, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "27050:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5709, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "27050:5:11", + "typeDescriptions": {} + } + }, + "id": 5712, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27050:14:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "arguments": [ + { + "id": 5715, + "name": "needle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5702, + "src": "27072:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5714, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "27066:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5713, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "27066:5:11", + "typeDescriptions": {} + } + }, + "id": 5716, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27066:13:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 5707, + "name": "LibBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "27032:8:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibBytes_$3089_$", + "typeString": "type(library LibBytes)" + } + }, + "id": 5708, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "27041:8:11", + "memberName": "contains", + "nodeType": "MemberAccess", + "referencedDeclaration": 2796, + "src": "27032:17:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (bytes memory,bytes memory) pure returns (bool)" + } + }, + "id": 5717, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27032:48:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 5706, + "id": 5718, + "nodeType": "Return", + "src": "27025:55:11" + } + ] + }, + "documentation": { + "id": 5698, + "nodeType": "StructuredDocumentation", + "src": "26845:73:11", + "text": "@dev Returns true if `needle` is found in `subject`, false otherwise." + }, + "id": 5720, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "contains", + "nameLocation": "26932:8:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5703, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5700, + "mutability": "mutable", + "name": "subject", + "nameLocation": "26955:7:11", + "nodeType": "VariableDeclaration", + "scope": 5720, + "src": "26941:21:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5699, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "26941:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5702, + "mutability": "mutable", + "name": "needle", + "nameLocation": "26978:6:11", + "nodeType": "VariableDeclaration", + "scope": 5720, + "src": "26964:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5701, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "26964:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "26940:45:11" + }, + "returnParameters": { + "id": 5706, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5705, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5720, + "src": "27009:4:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5704, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "27009:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "27008:6:11" + }, + "scope": 6145, + "src": "26923:164:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5742, + "nodeType": "Block", + "src": "27248:74:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 5734, + "name": "subject", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5723, + "src": "27291:7:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5733, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "27285:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5732, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "27285:5:11", + "typeDescriptions": {} + } + }, + "id": 5735, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27285:14:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "arguments": [ + { + "id": 5738, + "name": "needle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5725, + "src": "27307:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5737, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "27301:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5736, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "27301:5:11", + "typeDescriptions": {} + } + }, + "id": 5739, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27301:13:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 5730, + "name": "LibBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "27265:8:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibBytes_$3089_$", + "typeString": "type(library LibBytes)" + } + }, + "id": 5731, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "27274:10:11", + "memberName": "startsWith", + "nodeType": "MemberAccess", + "referencedDeclaration": 2808, + "src": "27265:19:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (bytes memory,bytes memory) pure returns (bool)" + } + }, + "id": 5740, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27265:50:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 5729, + "id": 5741, + "nodeType": "Return", + "src": "27258:57:11" + } + ] + }, + "documentation": { + "id": 5721, + "nodeType": "StructuredDocumentation", + "src": "27093:56:11", + "text": "@dev Returns whether `subject` starts with `needle`." + }, + "id": 5743, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "startsWith", + "nameLocation": "27163:10:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5726, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5723, + "mutability": "mutable", + "name": "subject", + "nameLocation": "27188:7:11", + "nodeType": "VariableDeclaration", + "scope": 5743, + "src": "27174:21:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5722, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "27174:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5725, + "mutability": "mutable", + "name": "needle", + "nameLocation": "27211:6:11", + "nodeType": "VariableDeclaration", + "scope": 5743, + "src": "27197:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5724, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "27197:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "27173:45:11" + }, + "returnParameters": { + "id": 5729, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5728, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5743, + "src": "27242:4:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5727, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "27242:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "27241:6:11" + }, + "scope": 6145, + "src": "27154:168:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5765, + "nodeType": "Block", + "src": "27479:72:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 5757, + "name": "subject", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5746, + "src": "27520:7:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5756, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "27514:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5755, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "27514:5:11", + "typeDescriptions": {} + } + }, + "id": 5758, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27514:14:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "arguments": [ + { + "id": 5761, + "name": "needle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5748, + "src": "27536:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5760, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "27530:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5759, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "27530:5:11", + "typeDescriptions": {} + } + }, + "id": 5762, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27530:13:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 5753, + "name": "LibBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "27496:8:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibBytes_$3089_$", + "typeString": "type(library LibBytes)" + } + }, + "id": 5754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "27505:8:11", + "memberName": "endsWith", + "nodeType": "MemberAccess", + "referencedDeclaration": 2820, + "src": "27496:17:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (bytes memory,bytes memory) pure returns (bool)" + } + }, + "id": 5763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27496:48:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 5752, + "id": 5764, + "nodeType": "Return", + "src": "27489:55:11" + } + ] + }, + "documentation": { + "id": 5744, + "nodeType": "StructuredDocumentation", + "src": "27328:54:11", + "text": "@dev Returns whether `subject` ends with `needle`." + }, + "id": 5766, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "endsWith", + "nameLocation": "27396:8:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5749, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5746, + "mutability": "mutable", + "name": "subject", + "nameLocation": "27419:7:11", + "nodeType": "VariableDeclaration", + "scope": 5766, + "src": "27405:21:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5745, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "27405:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5748, + "mutability": "mutable", + "name": "needle", + "nameLocation": "27442:6:11", + "nodeType": "VariableDeclaration", + "scope": 5766, + "src": "27428:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5747, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "27428:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "27404:45:11" + }, + "returnParameters": { + "id": 5752, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5751, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5766, + "src": "27473:4:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5750, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "27473:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "27472:6:11" + }, + "scope": 6145, + "src": "27387:164:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5788, + "nodeType": "Block", + "src": "27698:70:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 5782, + "name": "subject", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5769, + "src": "27744:7:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5781, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "27738:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5780, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "27738:5:11", + "typeDescriptions": {} + } + }, + "id": 5783, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27738:14:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 5784, + "name": "times", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5771, + "src": "27754:5:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 5778, + "name": "LibBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "27722:8:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibBytes_$3089_$", + "typeString": "type(library LibBytes)" + } + }, + "id": 5779, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "27731:6:11", + "memberName": "repeat", + "nodeType": "MemberAccess", + "referencedDeclaration": 2832, + "src": "27722:15:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256) pure returns (bytes memory)" + } + }, + "id": 5785, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27722:38:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5777, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "27715:6:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 5776, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "27715:6:11", + "typeDescriptions": {} + } + }, + "id": 5786, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27715:46:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 5775, + "id": 5787, + "nodeType": "Return", + "src": "27708:53:11" + } + ] + }, + "documentation": { + "id": 5767, + "nodeType": "StructuredDocumentation", + "src": "27557:44:11", + "text": "@dev Returns `subject` repeated `times`." + }, + "id": 5789, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "repeat", + "nameLocation": "27615:6:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5772, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5769, + "mutability": "mutable", + "name": "subject", + "nameLocation": "27636:7:11", + "nodeType": "VariableDeclaration", + "scope": 5789, + "src": "27622:21:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5768, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "27622:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5771, + "mutability": "mutable", + "name": "times", + "nameLocation": "27653:5:11", + "nodeType": "VariableDeclaration", + "scope": 5789, + "src": "27645:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5770, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27645:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "27621:38:11" + }, + "returnParameters": { + "id": 5775, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5774, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5789, + "src": "27683:13:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5773, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "27683:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "27682:15:11" + }, + "scope": 6145, + "src": "27606:162:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5814, + "nodeType": "Block", + "src": "28033:74:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 5807, + "name": "subject", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5792, + "src": "28078:7:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5806, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "28072:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5805, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "28072:5:11", + "typeDescriptions": {} + } + }, + "id": 5808, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28072:14:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 5809, + "name": "start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5794, + "src": "28088:5:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5810, + "name": "end", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5796, + "src": "28095:3:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 5803, + "name": "LibBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "28057:8:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibBytes_$3089_$", + "typeString": "type(library LibBytes)" + } + }, + "id": 5804, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "28066:5:11", + "memberName": "slice", + "nodeType": "MemberAccess", + "referencedDeclaration": 2846, + "src": "28057:14:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)" + } + }, + "id": 5811, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28057:42:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5802, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "28050:6:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 5801, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "28050:6:11", + "typeDescriptions": {} + } + }, + "id": 5812, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28050:50:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 5800, + "id": 5813, + "nodeType": "Return", + "src": "28043:57:11" + } + ] + }, + "documentation": { + "id": 5790, + "nodeType": "StructuredDocumentation", + "src": "27774:122:11", + "text": "@dev Returns a copy of `subject` sliced from `start` to `end` (exclusive).\n `start` and `end` are byte offsets." + }, + "id": 5815, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "slice", + "nameLocation": "27910:5:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5797, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5792, + "mutability": "mutable", + "name": "subject", + "nameLocation": "27930:7:11", + "nodeType": "VariableDeclaration", + "scope": 5815, + "src": "27916:21:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5791, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "27916:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5794, + "mutability": "mutable", + "name": "start", + "nameLocation": "27947:5:11", + "nodeType": "VariableDeclaration", + "scope": 5815, + "src": "27939:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5793, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27939:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5796, + "mutability": "mutable", + "name": "end", + "nameLocation": "27962:3:11", + "nodeType": "VariableDeclaration", + "scope": 5815, + "src": "27954:11:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5795, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27954:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "27915:51:11" + }, + "returnParameters": { + "id": 5800, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5799, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5815, + "src": "28014:13:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5798, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "28014:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "28013:15:11" + }, + "scope": 6145, + "src": "27901:206:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5842, + "nodeType": "Block", + "src": "28325:88:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 5831, + "name": "subject", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5818, + "src": "28370:7:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5830, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "28364:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5829, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "28364:5:11", + "typeDescriptions": {} + } + }, + "id": 5832, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28364:14:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 5833, + "name": "start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5820, + "src": "28380:5:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "arguments": [ + { + "id": 5836, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "28392:7:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 5835, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28392:7:11", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 5834, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "28387:4:11", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 5837, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28387:13:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 5838, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "28401:3:11", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "28387:17:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 5827, + "name": "LibBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "28349:8:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibBytes_$3089_$", + "typeString": "type(library LibBytes)" + } + }, + "id": 5828, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "28358:5:11", + "memberName": "slice", + "nodeType": "MemberAccess", + "referencedDeclaration": 2846, + "src": "28349:14:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)" + } + }, + "id": 5839, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28349:56:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5826, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "28342:6:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 5825, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "28342:6:11", + "typeDescriptions": {} + } + }, + "id": 5840, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28342:64:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 5824, + "id": 5841, + "nodeType": "Return", + "src": "28335:71:11" + } + ] + }, + "documentation": { + "id": 5816, + "nodeType": "StructuredDocumentation", + "src": "28113:116:11", + "text": "@dev Returns a copy of `subject` sliced from `start` to the end of the string.\n `start` is a byte offset." + }, + "id": 5843, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "slice", + "nameLocation": "28243:5:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5821, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5818, + "mutability": "mutable", + "name": "subject", + "nameLocation": "28263:7:11", + "nodeType": "VariableDeclaration", + "scope": 5843, + "src": "28249:21:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5817, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "28249:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5820, + "mutability": "mutable", + "name": "start", + "nameLocation": "28280:5:11", + "nodeType": "VariableDeclaration", + "scope": 5843, + "src": "28272:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5819, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28272:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "28248:38:11" + }, + "returnParameters": { + "id": 5824, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5823, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5843, + "src": "28310:13:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5822, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "28310:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "28309:15:11" + }, + "scope": 6145, + "src": "28234:179:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5866, + "nodeType": "Block", + "src": "28653:73:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 5858, + "name": "subject", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5846, + "src": "28695:7:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5857, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "28689:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5856, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "28689:5:11", + "typeDescriptions": {} + } + }, + "id": 5859, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28689:14:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "arguments": [ + { + "id": 5862, + "name": "needle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5848, + "src": "28711:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5861, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "28705:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5860, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "28705:5:11", + "typeDescriptions": {} + } + }, + "id": 5863, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28705:13:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 5854, + "name": "LibBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "28670:8:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibBytes_$3089_$", + "typeString": "type(library LibBytes)" + } + }, + "id": 5855, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "28679:9:11", + "memberName": "indicesOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 2932, + "src": "28670:18:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (bytes memory,bytes memory) pure returns (uint256[] memory)" + } + }, + "id": 5864, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28670:49:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "functionReturnParameters": 5853, + "id": 5865, + "nodeType": "Return", + "src": "28663:56:11" + } + ] + }, + "documentation": { + "id": 5844, + "nodeType": "StructuredDocumentation", + "src": "28419:96:11", + "text": "@dev Returns all the indices of `needle` in `subject`.\n The indices are byte offsets." + }, + "id": 5867, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "indicesOf", + "nameLocation": "28529:9:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5849, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5846, + "mutability": "mutable", + "name": "subject", + "nameLocation": "28553:7:11", + "nodeType": "VariableDeclaration", + "scope": 5867, + "src": "28539:21:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5845, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "28539:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5848, + "mutability": "mutable", + "name": "needle", + "nameLocation": "28576:6:11", + "nodeType": "VariableDeclaration", + "scope": 5867, + "src": "28562:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5847, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "28562:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "28538:45:11" + }, + "returnParameters": { + "id": 5853, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5852, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5867, + "src": "28631:16:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5850, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28631:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5851, + "nodeType": "ArrayTypeName", + "src": "28631:9:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "28630:18:11" + }, + "scope": 6145, + "src": "28520:206:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5896, + "nodeType": "Block", + "src": "28969:180:11", + "statements": [ + { + "assignments": [ + 5882 + ], + "declarations": [ + { + "constant": false, + "id": 5882, + "mutability": "mutable", + "name": "a", + "nameLocation": "28994:1:11", + "nodeType": "VariableDeclaration", + "scope": 5896, + "src": "28979:16:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 5880, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "28979:5:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 5881, + "nodeType": "ArrayTypeName", + "src": "28979:7:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + } + ], + "id": 5894, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 5887, + "name": "subject", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5870, + "src": "29019:7:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5886, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "29013:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5885, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "29013:5:11", + "typeDescriptions": {} + } + }, + "id": 5888, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29013:14:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "arguments": [ + { + "id": 5891, + "name": "delimiter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5872, + "src": "29035:9:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5890, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "29029:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5889, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "29029:5:11", + "typeDescriptions": {} + } + }, + "id": 5892, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29029:16:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 5883, + "name": "LibBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "28998:8:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibBytes_$3089_$", + "typeString": "type(library LibBytes)" + } + }, + "id": 5884, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "29007:5:11", + "memberName": "split", + "nodeType": "MemberAccess", + "referencedDeclaration": 2955, + "src": "28998:14:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$", + "typeString": "function (bytes memory,bytes memory) pure returns (bytes memory[] memory)" + } + }, + "id": 5893, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28998:48:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "28979:67:11" + }, + { + "AST": { + "nativeSrc": "29108:35:11", + "nodeType": "YulBlock", + "src": "29108:35:11", + "statements": [ + { + "nativeSrc": "29122:11:11", + "nodeType": "YulAssignment", + "src": "29122:11:11", + "value": { + "name": "a", + "nativeSrc": "29132:1:11", + "nodeType": "YulIdentifier", + "src": "29132:1:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "29122:6:11", + "nodeType": "YulIdentifier", + "src": "29122:6:11" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5882, + "isOffset": false, + "isSlot": false, + "src": "29132:1:11", + "valueSize": 1 + }, + { + "declaration": 5876, + "isOffset": false, + "isSlot": false, + "src": "29122:6:11", + "valueSize": 1 + } + ], + "id": 5895, + "nodeType": "InlineAssembly", + "src": "29099:44:11" + } + ] + }, + "documentation": { + "id": 5868, + "nodeType": "StructuredDocumentation", + "src": "28732:94:11", + "text": "@dev Returns an arrays of strings based on the `delimiter` inside of the `subject` string." + }, + "id": 5897, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "split", + "nameLocation": "28840:5:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5873, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5870, + "mutability": "mutable", + "name": "subject", + "nameLocation": "28860:7:11", + "nodeType": "VariableDeclaration", + "scope": 5897, + "src": "28846:21:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5869, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "28846:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5872, + "mutability": "mutable", + "name": "delimiter", + "nameLocation": "28883:9:11", + "nodeType": "VariableDeclaration", + "scope": 5897, + "src": "28869:23:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5871, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "28869:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "28845:48:11" + }, + "returnParameters": { + "id": 5877, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5876, + "mutability": "mutable", + "name": "result", + "nameLocation": "28957:6:11", + "nodeType": "VariableDeclaration", + "scope": 5897, + "src": "28941:22:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 5874, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "28941:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 5875, + "nodeType": "ArrayTypeName", + "src": "28941:8:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + } + ], + "src": "28940:24:11" + }, + "scope": 6145, + "src": "28831:318:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5922, + "nodeType": "Block", + "src": "29388:67:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 5913, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5900, + "src": "29434:1:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5912, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "29428:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5911, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "29428:5:11", + "typeDescriptions": {} + } + }, + "id": 5914, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29428:8:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "arguments": [ + { + "id": 5917, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5902, + "src": "29444:1:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5916, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "29438:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5915, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "29438:5:11", + "typeDescriptions": {} + } + }, + "id": 5918, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29438:8:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 5909, + "name": "LibBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "29412:8:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibBytes_$3089_$", + "typeString": "type(library LibBytes)" + } + }, + "id": 5910, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "29421:6:11", + "memberName": "concat", + "nodeType": "MemberAccess", + "referencedDeclaration": 2967, + "src": "29412:15:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,bytes memory) pure returns (bytes memory)" + } + }, + "id": 5919, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29412:35:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5908, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "29405:6:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 5907, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "29405:6:11", + "typeDescriptions": {} + } + }, + "id": 5920, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29405:43:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 5906, + "id": 5921, + "nodeType": "Return", + "src": "29398:50:11" + } + ] + }, + "documentation": { + "id": 5898, + "nodeType": "StructuredDocumentation", + "src": "29155:140:11", + "text": "@dev Returns a concatenated string of `a` and `b`.\n Cheaper than `string.concat()` and does not de-align the free memory pointer." + }, + "id": 5923, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "concat", + "nameLocation": "29309:6:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5903, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5900, + "mutability": "mutable", + "name": "a", + "nameLocation": "29330:1:11", + "nodeType": "VariableDeclaration", + "scope": 5923, + "src": "29316:15:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5899, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "29316:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5902, + "mutability": "mutable", + "name": "b", + "nameLocation": "29347:1:11", + "nodeType": "VariableDeclaration", + "scope": 5923, + "src": "29333:15:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5901, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "29333:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "29315:34:11" + }, + "returnParameters": { + "id": 5906, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5905, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5923, + "src": "29373:13:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5904, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "29373:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "29372:15:11" + }, + "scope": 6145, + "src": "29300:155:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5934, + "nodeType": "Block", + "src": "29739:799:11", + "statements": [ + { + "AST": { + "nativeSrc": "29801:731:11", + "nodeType": "YulBlock", + "src": "29801:731:11", + "statements": [ + { + "nativeSrc": "29815:23:11", + "nodeType": "YulVariableDeclaration", + "src": "29815:23:11", + "value": { + "arguments": [ + { + "name": "subject", + "nativeSrc": "29830:7:11", + "nodeType": "YulIdentifier", + "src": "29830:7:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "29824:5:11", + "nodeType": "YulIdentifier", + "src": "29824:5:11" + }, + "nativeSrc": "29824:14:11", + "nodeType": "YulFunctionCall", + "src": "29824:14:11" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "29819:1:11", + "nodeType": "YulTypedName", + "src": "29819:1:11", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "29856:666:11", + "nodeType": "YulBlock", + "src": "29856:666:11", + "statements": [ + { + "nativeSrc": "29874:21:11", + "nodeType": "YulAssignment", + "src": "29874:21:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "29890:4:11", + "nodeType": "YulLiteral", + "src": "29890:4:11", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "29884:5:11", + "nodeType": "YulIdentifier", + "src": "29884:5:11" + }, + "nativeSrc": "29884:11:11", + "nodeType": "YulFunctionCall", + "src": "29884:11:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "29874:6:11", + "nodeType": "YulIdentifier", + "src": "29874:6:11" + } + ] + }, + { + "nativeSrc": "29912:26:11", + "nodeType": "YulVariableDeclaration", + "src": "29912:26:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "29925:6:11", + "nodeType": "YulIdentifier", + "src": "29925:6:11" + }, + { + "kind": "number", + "nativeSrc": "29933:4:11", + "nodeType": "YulLiteral", + "src": "29933:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "29921:3:11", + "nodeType": "YulIdentifier", + "src": "29921:3:11" + }, + "nativeSrc": "29921:17:11", + "nodeType": "YulFunctionCall", + "src": "29921:17:11" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "29916:1:11", + "nodeType": "YulTypedName", + "src": "29916:1:11", + "type": "" + } + ] + }, + { + "nativeSrc": "29955:29:11", + "nodeType": "YulVariableDeclaration", + "src": "29955:29:11", + "value": { + "arguments": [ + { + "name": "subject", + "nativeSrc": "29968:7:11", + "nodeType": "YulIdentifier", + "src": "29968:7:11" + }, + { + "name": "result", + "nativeSrc": "29977:6:11", + "nodeType": "YulIdentifier", + "src": "29977:6:11" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "29964:3:11", + "nodeType": "YulIdentifier", + "src": "29964:3:11" + }, + "nativeSrc": "29964:20:11", + "nodeType": "YulFunctionCall", + "src": "29964:20:11" + }, + "variables": [ + { + "name": "d", + "nativeSrc": "29959:1:11", + "nodeType": "YulTypedName", + "src": "29959:1:11", + "type": "" + } + ] + }, + { + "nativeSrc": "30001:53:11", + "nodeType": "YulVariableDeclaration", + "src": "30001:53:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30022:2:11", + "nodeType": "YulLiteral", + "src": "30022:2:11", + "type": "", + "value": "70" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30030:1:11", + "nodeType": "YulLiteral", + "src": "30030:1:11", + "type": "", + "value": "5" + }, + { + "name": "toUpper", + "nativeSrc": "30033:7:11", + "nodeType": "YulIdentifier", + "src": "30033:7:11" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "30026:3:11", + "nodeType": "YulIdentifier", + "src": "30026:3:11" + }, + "nativeSrc": "30026:15:11", + "nodeType": "YulFunctionCall", + "src": "30026:15:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30018:3:11", + "nodeType": "YulIdentifier", + "src": "30018:3:11" + }, + "nativeSrc": "30018:24:11", + "nodeType": "YulFunctionCall", + "src": "30018:24:11" + }, + { + "kind": "number", + "nativeSrc": "30044:9:11", + "nodeType": "YulLiteral", + "src": "30044:9:11", + "type": "", + "value": "0x3ffffff" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "30014:3:11", + "nodeType": "YulIdentifier", + "src": "30014:3:11" + }, + "nativeSrc": "30014:40:11", + "nodeType": "YulFunctionCall", + "src": "30014:40:11" + }, + "variables": [ + { + "name": "flags", + "nativeSrc": "30005:5:11", + "nodeType": "YulTypedName", + "src": "30005:5:11", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "30105:218:11", + "nodeType": "YulBlock", + "src": "30105:218:11", + "statements": [ + { + "nativeSrc": "30127:34:11", + "nodeType": "YulVariableDeclaration", + "src": "30127:34:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30141:1:11", + "nodeType": "YulLiteral", + "src": "30141:1:11", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "d", + "nativeSrc": "30154:1:11", + "nodeType": "YulIdentifier", + "src": "30154:1:11" + }, + { + "name": "o", + "nativeSrc": "30157:1:11", + "nodeType": "YulIdentifier", + "src": "30157:1:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30150:3:11", + "nodeType": "YulIdentifier", + "src": "30150:3:11" + }, + "nativeSrc": "30150:9:11", + "nodeType": "YulFunctionCall", + "src": "30150:9:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "30144:5:11", + "nodeType": "YulIdentifier", + "src": "30144:5:11" + }, + "nativeSrc": "30144:16:11", + "nodeType": "YulFunctionCall", + "src": "30144:16:11" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "30136:4:11", + "nodeType": "YulIdentifier", + "src": "30136:4:11" + }, + "nativeSrc": "30136:25:11", + "nodeType": "YulFunctionCall", + "src": "30136:25:11" + }, + "variables": [ + { + "name": "b", + "nativeSrc": "30131:1:11", + "nodeType": "YulTypedName", + "src": "30131:1:11", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "30190:1:11", + "nodeType": "YulIdentifier", + "src": "30190:1:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "b", + "nativeSrc": "30205:1:11", + "nodeType": "YulIdentifier", + "src": "30205:1:11" + }, + { + "name": "flags", + "nativeSrc": "30208:5:11", + "nodeType": "YulIdentifier", + "src": "30208:5:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "30201:3:11", + "nodeType": "YulIdentifier", + "src": "30201:3:11" + }, + "nativeSrc": "30201:13:11", + "nodeType": "YulFunctionCall", + "src": "30201:13:11" + }, + { + "kind": "number", + "nativeSrc": "30216:4:11", + "nodeType": "YulLiteral", + "src": "30216:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "30197:3:11", + "nodeType": "YulIdentifier", + "src": "30197:3:11" + }, + "nativeSrc": "30197:24:11", + "nodeType": "YulFunctionCall", + "src": "30197:24:11" + }, + { + "name": "b", + "nativeSrc": "30223:1:11", + "nodeType": "YulIdentifier", + "src": "30223:1:11" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "30193:3:11", + "nodeType": "YulIdentifier", + "src": "30193:3:11" + }, + "nativeSrc": "30193:32:11", + "nodeType": "YulFunctionCall", + "src": "30193:32:11" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "30182:7:11", + "nodeType": "YulIdentifier", + "src": "30182:7:11" + }, + "nativeSrc": "30182:44:11", + "nodeType": "YulFunctionCall", + "src": "30182:44:11" + }, + "nativeSrc": "30182:44:11", + "nodeType": "YulExpressionStatement", + "src": "30182:44:11" + }, + { + "nativeSrc": "30247:14:11", + "nodeType": "YulAssignment", + "src": "30247:14:11", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "30256:1:11", + "nodeType": "YulIdentifier", + "src": "30256:1:11" + }, + { + "kind": "number", + "nativeSrc": "30259:1:11", + "nodeType": "YulLiteral", + "src": "30259:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30252:3:11", + "nodeType": "YulIdentifier", + "src": "30252:3:11" + }, + "nativeSrc": "30252:9:11", + "nodeType": "YulFunctionCall", + "src": "30252:9:11" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "30247:1:11", + "nodeType": "YulIdentifier", + "src": "30247:1:11" + } + ] + }, + { + "body": { + "nativeSrc": "30296:9:11", + "nodeType": "YulBlock", + "src": "30296:9:11", + "statements": [ + { + "nativeSrc": "30298:5:11", + "nodeType": "YulBreak", + "src": "30298:5:11" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "o", + "nativeSrc": "30288:1:11", + "nodeType": "YulIdentifier", + "src": "30288:1:11" + }, + { + "name": "end", + "nativeSrc": "30291:3:11", + "nodeType": "YulIdentifier", + "src": "30291:3:11" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "30285:2:11", + "nodeType": "YulIdentifier", + "src": "30285:2:11" + }, + "nativeSrc": "30285:10:11", + "nodeType": "YulFunctionCall", + "src": "30285:10:11" + }, + "nativeSrc": "30282:23:11", + "nodeType": "YulIf", + "src": "30282:23:11" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "30100:1:11", + "nodeType": "YulLiteral", + "src": "30100:1:11", + "type": "", + "value": "1" + }, + "nativeSrc": "30071:252:11", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "30102:2:11", + "nodeType": "YulBlock", + "src": "30102:2:11", + "statements": [] + }, + "pre": { + "nativeSrc": "30075:24:11", + "nodeType": "YulBlock", + "src": "30075:24:11", + "statements": [ + { + "nativeSrc": "30077:20:11", + "nodeType": "YulVariableDeclaration", + "src": "30077:20:11", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "30092:1:11", + "nodeType": "YulIdentifier", + "src": "30092:1:11" + }, + { + "name": "n", + "nativeSrc": "30095:1:11", + "nodeType": "YulIdentifier", + "src": "30095:1:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30088:3:11", + "nodeType": "YulIdentifier", + "src": "30088:3:11" + }, + "nativeSrc": "30088:9:11", + "nodeType": "YulFunctionCall", + "src": "30088:9:11" + }, + "variables": [ + { + "name": "end", + "nativeSrc": "30081:3:11", + "nodeType": "YulTypedName", + "src": "30081:3:11", + "type": "" + } + ] + } + ] + }, + "src": "30071:252:11" + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "30347:6:11", + "nodeType": "YulIdentifier", + "src": "30347:6:11" + }, + { + "name": "n", + "nativeSrc": "30355:1:11", + "nodeType": "YulIdentifier", + "src": "30355:1:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "30340:6:11", + "nodeType": "YulIdentifier", + "src": "30340:6:11" + }, + "nativeSrc": "30340:17:11", + "nodeType": "YulFunctionCall", + "src": "30340:17:11" + }, + "nativeSrc": "30340:17:11", + "nodeType": "YulExpressionStatement", + "src": "30340:17:11" + }, + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "30402:1:11", + "nodeType": "YulIdentifier", + "src": "30402:1:11" + }, + { + "kind": "number", + "nativeSrc": "30405:1:11", + "nodeType": "YulLiteral", + "src": "30405:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "30395:6:11", + "nodeType": "YulIdentifier", + "src": "30395:6:11" + }, + "nativeSrc": "30395:12:11", + "nodeType": "YulFunctionCall", + "src": "30395:12:11" + }, + "nativeSrc": "30395:12:11", + "nodeType": "YulExpressionStatement", + "src": "30395:12:11" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30469:4:11", + "nodeType": "YulLiteral", + "src": "30469:4:11", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "o", + "nativeSrc": "30479:1:11", + "nodeType": "YulIdentifier", + "src": "30479:1:11" + }, + { + "kind": "number", + "nativeSrc": "30482:4:11", + "nodeType": "YulLiteral", + "src": "30482:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30475:3:11", + "nodeType": "YulIdentifier", + "src": "30475:3:11" + }, + "nativeSrc": "30475:12:11", + "nodeType": "YulFunctionCall", + "src": "30475:12:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "30462:6:11", + "nodeType": "YulIdentifier", + "src": "30462:6:11" + }, + "nativeSrc": "30462:26:11", + "nodeType": "YulFunctionCall", + "src": "30462:26:11" + }, + "nativeSrc": "30462:26:11", + "nodeType": "YulExpressionStatement", + "src": "30462:26:11" + } + ] + }, + "condition": { + "name": "n", + "nativeSrc": "29854:1:11", + "nodeType": "YulIdentifier", + "src": "29854:1:11" + }, + "nativeSrc": "29851:671:11", + "nodeType": "YulIf", + "src": "29851:671:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5931, + "isOffset": false, + "isSlot": false, + "src": "29874:6:11", + "valueSize": 1 + }, + { + "declaration": 5931, + "isOffset": false, + "isSlot": false, + "src": "29925:6:11", + "valueSize": 1 + }, + { + "declaration": 5931, + "isOffset": false, + "isSlot": false, + "src": "29977:6:11", + "valueSize": 1 + }, + { + "declaration": 5931, + "isOffset": false, + "isSlot": false, + "src": "30347:6:11", + "valueSize": 1 + }, + { + "declaration": 5926, + "isOffset": false, + "isSlot": false, + "src": "29830:7:11", + "valueSize": 1 + }, + { + "declaration": 5926, + "isOffset": false, + "isSlot": false, + "src": "29968:7:11", + "valueSize": 1 + }, + { + "declaration": 5928, + "isOffset": false, + "isSlot": false, + "src": "30033:7:11", + "valueSize": 1 + } + ], + "id": 5933, + "nodeType": "InlineAssembly", + "src": "29792:740:11" + } + ] + }, + "documentation": { + "id": 5924, + "nodeType": "StructuredDocumentation", + "src": "29461:147:11", + "text": "@dev Returns a copy of the string in either lowercase or UPPERCASE.\n WARNING! This function is only compatible with 7-bit ASCII strings." + }, + "id": 5935, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toCase", + "nameLocation": "29622:6:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5929, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5926, + "mutability": "mutable", + "name": "subject", + "nameLocation": "29643:7:11", + "nodeType": "VariableDeclaration", + "scope": 5935, + "src": "29629:21:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5925, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "29629:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5928, + "mutability": "mutable", + "name": "toUpper", + "nameLocation": "29657:7:11", + "nodeType": "VariableDeclaration", + "scope": 5935, + "src": "29652:12:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5927, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "29652:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "29628:37:11" + }, + "returnParameters": { + "id": 5932, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5931, + "mutability": "mutable", + "name": "result", + "nameLocation": "29727:6:11", + "nodeType": "VariableDeclaration", + "scope": 5935, + "src": "29713:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5930, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "29713:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "29712:22:11" + }, + "scope": 6145, + "src": "29613:925:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5944, + "nodeType": "Block", + "src": "30752:490:11", + "statements": [ + { + "AST": { + "nativeSrc": "30814:422:11", + "nodeType": "YulBlock", + "src": "30814:422:11", + "statements": [ + { + "nativeSrc": "30828:21:11", + "nodeType": "YulAssignment", + "src": "30828:21:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30844:4:11", + "nodeType": "YulLiteral", + "src": "30844:4:11", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "30838:5:11", + "nodeType": "YulIdentifier", + "src": "30838:5:11" + }, + "nativeSrc": "30838:11:11", + "nodeType": "YulFunctionCall", + "src": "30838:11:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "30828:6:11", + "nodeType": "YulIdentifier", + "src": "30828:6:11" + } + ] + }, + { + "nativeSrc": "30862:10:11", + "nodeType": "YulVariableDeclaration", + "src": "30862:10:11", + "value": { + "kind": "number", + "nativeSrc": "30871:1:11", + "nodeType": "YulLiteral", + "src": "30871:1:11", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "30866:1:11", + "nodeType": "YulTypedName", + "src": "30866:1:11", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "30922:2:11", + "nodeType": "YulBlock", + "src": "30922:2:11", + "statements": [] + }, + "condition": { + "arguments": [ + { + "name": "n", + "nativeSrc": "30897:1:11", + "nodeType": "YulIdentifier", + "src": "30897:1:11" + }, + { + "name": "s", + "nativeSrc": "30900:1:11", + "nodeType": "YulIdentifier", + "src": "30900:1:11" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "30892:4:11", + "nodeType": "YulIdentifier", + "src": "30892:4:11" + }, + "nativeSrc": "30892:10:11", + "nodeType": "YulFunctionCall", + "src": "30892:10:11" + }, + "nativeSrc": "30885:39:11", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "30903:18:11", + "nodeType": "YulBlock", + "src": "30903:18:11", + "statements": [ + { + "nativeSrc": "30905:14:11", + "nodeType": "YulAssignment", + "src": "30905:14:11", + "value": { + "arguments": [ + { + "name": "n", + "nativeSrc": "30914:1:11", + "nodeType": "YulIdentifier", + "src": "30914:1:11" + }, + { + "kind": "number", + "nativeSrc": "30917:1:11", + "nodeType": "YulLiteral", + "src": "30917:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30910:3:11", + "nodeType": "YulIdentifier", + "src": "30910:3:11" + }, + "nativeSrc": "30910:9:11", + "nodeType": "YulFunctionCall", + "src": "30910:9:11" + }, + "variableNames": [ + { + "name": "n", + "nativeSrc": "30905:1:11", + "nodeType": "YulIdentifier", + "src": "30905:1:11" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "30889:2:11", + "nodeType": "YulBlock", + "src": "30889:2:11", + "statements": [] + }, + "src": "30885:39:11" + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "30962:6:11", + "nodeType": "YulIdentifier", + "src": "30962:6:11" + }, + { + "name": "n", + "nativeSrc": "30970:1:11", + "nodeType": "YulIdentifier", + "src": "30970:1:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "30955:6:11", + "nodeType": "YulIdentifier", + "src": "30955:6:11" + }, + "nativeSrc": "30955:17:11", + "nodeType": "YulFunctionCall", + "src": "30955:17:11" + }, + "nativeSrc": "30955:17:11", + "nodeType": "YulExpressionStatement", + "src": "30955:17:11" + }, + { + "nativeSrc": "31006:26:11", + "nodeType": "YulVariableDeclaration", + "src": "31006:26:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "31019:6:11", + "nodeType": "YulIdentifier", + "src": "31019:6:11" + }, + { + "kind": "number", + "nativeSrc": "31027:4:11", + "nodeType": "YulLiteral", + "src": "31027:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31015:3:11", + "nodeType": "YulIdentifier", + "src": "31015:3:11" + }, + "nativeSrc": "31015:17:11", + "nodeType": "YulFunctionCall", + "src": "31015:17:11" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "31010:1:11", + "nodeType": "YulTypedName", + "src": "31010:1:11", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "31052:1:11", + "nodeType": "YulIdentifier", + "src": "31052:1:11" + }, + { + "name": "s", + "nativeSrc": "31055:1:11", + "nodeType": "YulIdentifier", + "src": "31055:1:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "31045:6:11", + "nodeType": "YulIdentifier", + "src": "31045:6:11" + }, + "nativeSrc": "31045:12:11", + "nodeType": "YulFunctionCall", + "src": "31045:12:11" + }, + "nativeSrc": "31045:12:11", + "nodeType": "YulExpressionStatement", + "src": "31045:12:11" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "31115:1:11", + "nodeType": "YulIdentifier", + "src": "31115:1:11" + }, + { + "name": "n", + "nativeSrc": "31118:1:11", + "nodeType": "YulIdentifier", + "src": "31118:1:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31111:3:11", + "nodeType": "YulIdentifier", + "src": "31111:3:11" + }, + "nativeSrc": "31111:9:11", + "nodeType": "YulFunctionCall", + "src": "31111:9:11" + }, + { + "kind": "number", + "nativeSrc": "31122:1:11", + "nodeType": "YulLiteral", + "src": "31122:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "31104:6:11", + "nodeType": "YulIdentifier", + "src": "31104:6:11" + }, + "nativeSrc": "31104:20:11", + "nodeType": "YulFunctionCall", + "src": "31104:20:11" + }, + "nativeSrc": "31104:20:11", + "nodeType": "YulExpressionStatement", + "src": "31104:20:11" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "31182:4:11", + "nodeType": "YulLiteral", + "src": "31182:4:11", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "result", + "nativeSrc": "31192:6:11", + "nodeType": "YulIdentifier", + "src": "31192:6:11" + }, + { + "kind": "number", + "nativeSrc": "31200:4:11", + "nodeType": "YulLiteral", + "src": "31200:4:11", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31188:3:11", + "nodeType": "YulIdentifier", + "src": "31188:3:11" + }, + "nativeSrc": "31188:17:11", + "nodeType": "YulFunctionCall", + "src": "31188:17:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "31175:6:11", + "nodeType": "YulIdentifier", + "src": "31175:6:11" + }, + "nativeSrc": "31175:31:11", + "nodeType": "YulFunctionCall", + "src": "31175:31:11" + }, + "nativeSrc": "31175:31:11", + "nodeType": "YulExpressionStatement", + "src": "31175:31:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5941, + "isOffset": false, + "isSlot": false, + "src": "30828:6:11", + "valueSize": 1 + }, + { + "declaration": 5941, + "isOffset": false, + "isSlot": false, + "src": "30962:6:11", + "valueSize": 1 + }, + { + "declaration": 5941, + "isOffset": false, + "isSlot": false, + "src": "31019:6:11", + "valueSize": 1 + }, + { + "declaration": 5941, + "isOffset": false, + "isSlot": false, + "src": "31192:6:11", + "valueSize": 1 + }, + { + "declaration": 5938, + "isOffset": false, + "isSlot": false, + "src": "30900:1:11", + "valueSize": 1 + }, + { + "declaration": 5938, + "isOffset": false, + "isSlot": false, + "src": "31055:1:11", + "valueSize": 1 + } + ], + "id": 5943, + "nodeType": "InlineAssembly", + "src": "30805:431:11" + } + ] + }, + "documentation": { + "id": 5936, + "nodeType": "StructuredDocumentation", + "src": "30544:122:11", + "text": "@dev Returns a string from a small bytes32 string.\n `s` must be null-terminated, or behavior will be undefined." + }, + "id": 5945, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "fromSmallString", + "nameLocation": "30680:15:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5939, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5938, + "mutability": "mutable", + "name": "s", + "nameLocation": "30704:1:11", + "nodeType": "VariableDeclaration", + "scope": 5945, + "src": "30696:9:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5937, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "30696:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "30695:11:11" + }, + "returnParameters": { + "id": 5942, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5941, + "mutability": "mutable", + "name": "result", + "nameLocation": "30744:6:11", + "nodeType": "VariableDeclaration", + "scope": 5945, + "src": "30730:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5940, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "30730:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "30729:22:11" + }, + "scope": 6145, + "src": "30671:571:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5954, + "nodeType": "Block", + "src": "31418:259:11", + "statements": [ + { + "AST": { + "nativeSrc": "31480:191:11", + "nodeType": "YulBlock", + "src": "31480:191:11", + "statements": [ + { + "body": { + "nativeSrc": "31546:2:11", + "nodeType": "YulBlock", + "src": "31546:2:11", + "statements": [] + }, + "condition": { + "arguments": [ + { + "name": "result", + "nativeSrc": "31506:6:11", + "nodeType": "YulIdentifier", + "src": "31506:6:11" + }, + { + "name": "s", + "nativeSrc": "31514:1:11", + "nodeType": "YulIdentifier", + "src": "31514:1:11" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "31501:4:11", + "nodeType": "YulIdentifier", + "src": "31501:4:11" + }, + "nativeSrc": "31501:15:11", + "nodeType": "YulFunctionCall", + "src": "31501:15:11" + }, + "nativeSrc": "31494:54:11", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "31517:28:11", + "nodeType": "YulBlock", + "src": "31517:28:11", + "statements": [ + { + "nativeSrc": "31519:24:11", + "nodeType": "YulAssignment", + "src": "31519:24:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "31533:6:11", + "nodeType": "YulIdentifier", + "src": "31533:6:11" + }, + { + "kind": "number", + "nativeSrc": "31541:1:11", + "nodeType": "YulLiteral", + "src": "31541:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31529:3:11", + "nodeType": "YulIdentifier", + "src": "31529:3:11" + }, + "nativeSrc": "31529:14:11", + "nodeType": "YulFunctionCall", + "src": "31529:14:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "31519:6:11", + "nodeType": "YulIdentifier", + "src": "31519:6:11" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "31498:2:11", + "nodeType": "YulBlock", + "src": "31498:2:11", + "statements": [] + }, + "src": "31494:54:11" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "31586:4:11", + "nodeType": "YulLiteral", + "src": "31586:4:11", + "type": "", + "value": "0x00" + }, + { + "name": "s", + "nativeSrc": "31592:1:11", + "nodeType": "YulIdentifier", + "src": "31592:1:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "31579:6:11", + "nodeType": "YulIdentifier", + "src": "31579:6:11" + }, + "nativeSrc": "31579:15:11", + "nodeType": "YulFunctionCall", + "src": "31579:15:11" + }, + "nativeSrc": "31579:15:11", + "nodeType": "YulExpressionStatement", + "src": "31579:15:11" + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "31614:6:11", + "nodeType": "YulIdentifier", + "src": "31614:6:11" + }, + { + "kind": "number", + "nativeSrc": "31622:4:11", + "nodeType": "YulLiteral", + "src": "31622:4:11", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "31607:6:11", + "nodeType": "YulIdentifier", + "src": "31607:6:11" + }, + "nativeSrc": "31607:20:11", + "nodeType": "YulFunctionCall", + "src": "31607:20:11" + }, + "nativeSrc": "31607:20:11", + "nodeType": "YulExpressionStatement", + "src": "31607:20:11" + }, + { + "nativeSrc": "31640:21:11", + "nodeType": "YulAssignment", + "src": "31640:21:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "31656:4:11", + "nodeType": "YulLiteral", + "src": "31656:4:11", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "31650:5:11", + "nodeType": "YulIdentifier", + "src": "31650:5:11" + }, + "nativeSrc": "31650:11:11", + "nodeType": "YulFunctionCall", + "src": "31650:11:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "31640:6:11", + "nodeType": "YulIdentifier", + "src": "31640:6:11" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5951, + "isOffset": false, + "isSlot": false, + "src": "31506:6:11", + "valueSize": 1 + }, + { + "declaration": 5951, + "isOffset": false, + "isSlot": false, + "src": "31519:6:11", + "valueSize": 1 + }, + { + "declaration": 5951, + "isOffset": false, + "isSlot": false, + "src": "31533:6:11", + "valueSize": 1 + }, + { + "declaration": 5951, + "isOffset": false, + "isSlot": false, + "src": "31614:6:11", + "valueSize": 1 + }, + { + "declaration": 5951, + "isOffset": false, + "isSlot": false, + "src": "31640:6:11", + "valueSize": 1 + }, + { + "declaration": 5948, + "isOffset": false, + "isSlot": false, + "src": "31514:1:11", + "valueSize": 1 + }, + { + "declaration": 5948, + "isOffset": false, + "isSlot": false, + "src": "31592:1:11", + "valueSize": 1 + } + ], + "id": 5953, + "nodeType": "InlineAssembly", + "src": "31471:200:11" + } + ] + }, + "documentation": { + "id": 5946, + "nodeType": "StructuredDocumentation", + "src": "31248:85:11", + "text": "@dev Returns the small string, with all bytes after the first null byte zeroized." + }, + "id": 5955, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "normalizeSmallString", + "nameLocation": "31347:20:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5949, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5948, + "mutability": "mutable", + "name": "s", + "nameLocation": "31376:1:11", + "nodeType": "VariableDeclaration", + "scope": 5955, + "src": "31368:9:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5947, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "31368:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "31367:11:11" + }, + "returnParameters": { + "id": 5952, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5951, + "mutability": "mutable", + "name": "result", + "nameLocation": "31410:6:11", + "nodeType": "VariableDeclaration", + "scope": 5955, + "src": "31402:14:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5950, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "31402:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "31401:16:11" + }, + "scope": 6145, + "src": "31338:339:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5964, + "nodeType": "Block", + "src": "31840:343:11", + "statements": [ + { + "AST": { + "nativeSrc": "31902:275:11", + "nodeType": "YulBlock", + "src": "31902:275:11", + "statements": [ + { + "nativeSrc": "31916:18:11", + "nodeType": "YulAssignment", + "src": "31916:18:11", + "value": { + "arguments": [ + { + "name": "s", + "nativeSrc": "31932:1:11", + "nodeType": "YulIdentifier", + "src": "31932:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "31926:5:11", + "nodeType": "YulIdentifier", + "src": "31926:5:11" + }, + "nativeSrc": "31926:8:11", + "nodeType": "YulFunctionCall", + "src": "31926:8:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "31916:6:11", + "nodeType": "YulIdentifier", + "src": "31916:6:11" + } + ] + }, + { + "body": { + "nativeSrc": "31973:120:11", + "nodeType": "YulBlock", + "src": "31973:120:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "31998:4:11", + "nodeType": "YulLiteral", + "src": "31998:4:11", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "32004:10:11", + "nodeType": "YulLiteral", + "src": "32004:10:11", + "type": "", + "value": "0xec92f9a3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "31991:6:11", + "nodeType": "YulIdentifier", + "src": "31991:6:11" + }, + "nativeSrc": "31991:24:11", + "nodeType": "YulFunctionCall", + "src": "31991:24:11" + }, + "nativeSrc": "31991:24:11", + "nodeType": "YulExpressionStatement", + "src": "31991:24:11" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "32068:4:11", + "nodeType": "YulLiteral", + "src": "32068:4:11", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "32074:4:11", + "nodeType": "YulLiteral", + "src": "32074:4:11", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "32061:6:11", + "nodeType": "YulIdentifier", + "src": "32061:6:11" + }, + "nativeSrc": "32061:18:11", + "nodeType": "YulFunctionCall", + "src": "32061:18:11" + }, + "nativeSrc": "32061:18:11", + "nodeType": "YulExpressionStatement", + "src": "32061:18:11" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "31960:6:11", + "nodeType": "YulIdentifier", + "src": "31960:6:11" + }, + { + "kind": "number", + "nativeSrc": "31968:2:11", + "nodeType": "YulLiteral", + "src": "31968:2:11", + "type": "", + "value": "33" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "31957:2:11", + "nodeType": "YulIdentifier", + "src": "31957:2:11" + }, + "nativeSrc": "31957:14:11", + "nodeType": "YulFunctionCall", + "src": "31957:14:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "31950:6:11", + "nodeType": "YulIdentifier", + "src": "31950:6:11" + }, + "nativeSrc": "31950:22:11", + "nodeType": "YulFunctionCall", + "src": "31950:22:11" + }, + "nativeSrc": "31947:146:11", + "nodeType": "YulIf", + "src": "31947:146:11" + }, + { + "nativeSrc": "32106:61:11", + "nodeType": "YulAssignment", + "src": "32106:61:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "32124:1:11", + "nodeType": "YulLiteral", + "src": "32124:1:11", + "type": "", + "value": "3" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "32131:2:11", + "nodeType": "YulLiteral", + "src": "32131:2:11", + "type": "", + "value": "32" + }, + { + "name": "result", + "nativeSrc": "32135:6:11", + "nodeType": "YulIdentifier", + "src": "32135:6:11" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "32127:3:11", + "nodeType": "YulIdentifier", + "src": "32127:3:11" + }, + "nativeSrc": "32127:15:11", + "nodeType": "YulFunctionCall", + "src": "32127:15:11" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "32120:3:11", + "nodeType": "YulIdentifier", + "src": "32120:3:11" + }, + "nativeSrc": "32120:23:11", + "nodeType": "YulFunctionCall", + "src": "32120:23:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "s", + "nativeSrc": "32155:1:11", + "nodeType": "YulIdentifier", + "src": "32155:1:11" + }, + { + "name": "result", + "nativeSrc": "32158:6:11", + "nodeType": "YulIdentifier", + "src": "32158:6:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "32151:3:11", + "nodeType": "YulIdentifier", + "src": "32151:3:11" + }, + "nativeSrc": "32151:14:11", + "nodeType": "YulFunctionCall", + "src": "32151:14:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "32145:5:11", + "nodeType": "YulIdentifier", + "src": "32145:5:11" + }, + "nativeSrc": "32145:21:11", + "nodeType": "YulFunctionCall", + "src": "32145:21:11" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "32116:3:11", + "nodeType": "YulIdentifier", + "src": "32116:3:11" + }, + "nativeSrc": "32116:51:11", + "nodeType": "YulFunctionCall", + "src": "32116:51:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "32106:6:11", + "nodeType": "YulIdentifier", + "src": "32106:6:11" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5961, + "isOffset": false, + "isSlot": false, + "src": "31916:6:11", + "valueSize": 1 + }, + { + "declaration": 5961, + "isOffset": false, + "isSlot": false, + "src": "31960:6:11", + "valueSize": 1 + }, + { + "declaration": 5961, + "isOffset": false, + "isSlot": false, + "src": "32106:6:11", + "valueSize": 1 + }, + { + "declaration": 5961, + "isOffset": false, + "isSlot": false, + "src": "32135:6:11", + "valueSize": 1 + }, + { + "declaration": 5961, + "isOffset": false, + "isSlot": false, + "src": "32158:6:11", + "valueSize": 1 + }, + { + "declaration": 5958, + "isOffset": false, + "isSlot": false, + "src": "31932:1:11", + "valueSize": 1 + }, + { + "declaration": 5958, + "isOffset": false, + "isSlot": false, + "src": "32155:1:11", + "valueSize": 1 + } + ], + "id": 5963, + "nodeType": "InlineAssembly", + "src": "31893:284:11" + } + ] + }, + "documentation": { + "id": 5956, + "nodeType": "StructuredDocumentation", + "src": "31683:73:11", + "text": "@dev Returns the string as a normalized null-terminated small string." + }, + "id": 5965, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toSmallString", + "nameLocation": "31770:13:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5959, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5958, + "mutability": "mutable", + "name": "s", + "nameLocation": "31798:1:11", + "nodeType": "VariableDeclaration", + "scope": 5965, + "src": "31784:15:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5957, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "31784:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "31783:17:11" + }, + "returnParameters": { + "id": 5962, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5961, + "mutability": "mutable", + "name": "result", + "nameLocation": "31832:6:11", + "nodeType": "VariableDeclaration", + "scope": 5965, + "src": "31824:14:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5960, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "31824:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "31823:16:11" + }, + "scope": 6145, + "src": "31761:422:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5980, + "nodeType": "Block", + "src": "32402:48:11", + "statements": [ + { + "expression": { + "id": 5978, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5973, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5971, + "src": "32412:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 5975, + "name": "subject", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5968, + "src": "32428:7:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "hexValue": "66616c7365", + "id": 5976, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32437:5:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5974, + "name": "toCase", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5935, + "src": "32421:6:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_bool_$returns$_t_string_memory_ptr_$", + "typeString": "function (string memory,bool) pure returns (string memory)" + } + }, + "id": 5977, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "32421:22:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "32412:31:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "id": 5979, + "nodeType": "ExpressionStatement", + "src": "32412:31:11" + } + ] + }, + "documentation": { + "id": 5966, + "nodeType": "StructuredDocumentation", + "src": "32189:125:11", + "text": "@dev Returns a lowercased copy of the string.\n WARNING! This function is only compatible with 7-bit ASCII strings." + }, + "id": 5981, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "lower", + "nameLocation": "32328:5:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5969, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5968, + "mutability": "mutable", + "name": "subject", + "nameLocation": "32348:7:11", + "nodeType": "VariableDeclaration", + "scope": 5981, + "src": "32334:21:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5967, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "32334:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "32333:23:11" + }, + "returnParameters": { + "id": 5972, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5971, + "mutability": "mutable", + "name": "result", + "nameLocation": "32394:6:11", + "nodeType": "VariableDeclaration", + "scope": 5981, + "src": "32380:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5970, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "32380:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "32379:22:11" + }, + "scope": 6145, + "src": "32319:131:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5996, + "nodeType": "Block", + "src": "32670:47:11", + "statements": [ + { + "expression": { + "id": 5994, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5989, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5987, + "src": "32680:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 5991, + "name": "subject", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5984, + "src": "32696:7:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "hexValue": "74727565", + "id": 5992, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32705:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5990, + "name": "toCase", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5935, + "src": "32689:6:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_bool_$returns$_t_string_memory_ptr_$", + "typeString": "function (string memory,bool) pure returns (string memory)" + } + }, + "id": 5993, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "32689:21:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "32680:30:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "id": 5995, + "nodeType": "ExpressionStatement", + "src": "32680:30:11" + } + ] + }, + "documentation": { + "id": 5982, + "nodeType": "StructuredDocumentation", + "src": "32456:126:11", + "text": "@dev Returns an UPPERCASED copy of the string.\n WARNING! This function is only compatible with 7-bit ASCII strings." + }, + "id": 5997, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "upper", + "nameLocation": "32596:5:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5985, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5984, + "mutability": "mutable", + "name": "subject", + "nameLocation": "32616:7:11", + "nodeType": "VariableDeclaration", + "scope": 5997, + "src": "32602:21:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5983, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "32602:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "32601:23:11" + }, + "returnParameters": { + "id": 5988, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5987, + "mutability": "mutable", + "name": "result", + "nameLocation": "32662:6:11", + "nodeType": "VariableDeclaration", + "scope": 5997, + "src": "32648:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5986, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "32648:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "32647:22:11" + }, + "scope": 6145, + "src": "32587:130:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6006, + "nodeType": "Block", + "src": "32866:1292:11", + "statements": [ + { + "AST": { + "nativeSrc": "32928:1224:11", + "nodeType": "YulBlock", + "src": "32928:1224:11", + "statements": [ + { + "nativeSrc": "32942:21:11", + "nodeType": "YulAssignment", + "src": "32942:21:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "32958:4:11", + "nodeType": "YulLiteral", + "src": "32958:4:11", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "32952:5:11", + "nodeType": "YulIdentifier", + "src": "32952:5:11" + }, + "nativeSrc": "32952:11:11", + "nodeType": "YulFunctionCall", + "src": "32952:11:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "32942:6:11", + "nodeType": "YulIdentifier", + "src": "32942:6:11" + } + ] + }, + { + "nativeSrc": "32976:27:11", + "nodeType": "YulVariableDeclaration", + "src": "32976:27:11", + "value": { + "arguments": [ + { + "name": "s", + "nativeSrc": "32991:1:11", + "nodeType": "YulIdentifier", + "src": "32991:1:11" + }, + { + "arguments": [ + { + "name": "s", + "nativeSrc": "33000:1:11", + "nodeType": "YulIdentifier", + "src": "33000:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "32994:5:11", + "nodeType": "YulIdentifier", + "src": "32994:5:11" + }, + "nativeSrc": "32994:8:11", + "nodeType": "YulFunctionCall", + "src": "32994:8:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "32987:3:11", + "nodeType": "YulIdentifier", + "src": "32987:3:11" + }, + "nativeSrc": "32987:16:11", + "nodeType": "YulFunctionCall", + "src": "32987:16:11" + }, + "variables": [ + { + "name": "end", + "nativeSrc": "32980:3:11", + "nodeType": "YulTypedName", + "src": "32980:3:11", + "type": "" + } + ] + }, + { + "nativeSrc": "33016:26:11", + "nodeType": "YulVariableDeclaration", + "src": "33016:26:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "33029:6:11", + "nodeType": "YulIdentifier", + "src": "33029:6:11" + }, + { + "kind": "number", + "nativeSrc": "33037:4:11", + "nodeType": "YulLiteral", + "src": "33037:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33025:3:11", + "nodeType": "YulIdentifier", + "src": "33025:3:11" + }, + "nativeSrc": "33025:17:11", + "nodeType": "YulFunctionCall", + "src": "33025:17:11" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "33020:1:11", + "nodeType": "YulTypedName", + "src": "33020:1:11", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33236:4:11", + "nodeType": "YulLiteral", + "src": "33236:4:11", + "type": "", + "value": "0x1f" + }, + { + "kind": "number", + "nativeSrc": "33242:8:11", + "nodeType": "YulLiteral", + "src": "33242:8:11", + "type": "", + "value": "0x900094" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "33229:6:11", + "nodeType": "YulIdentifier", + "src": "33229:6:11" + }, + "nativeSrc": "33229:22:11", + "nodeType": "YulFunctionCall", + "src": "33229:22:11" + }, + "nativeSrc": "33229:22:11", + "nodeType": "YulExpressionStatement", + "src": "33229:22:11" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33271:4:11", + "nodeType": "YulLiteral", + "src": "33271:4:11", + "type": "", + "value": "0x08" + }, + { + "kind": "number", + "nativeSrc": "33277:14:11", + "nodeType": "YulLiteral", + "src": "33277:14:11", + "type": "", + "value": "0xc0000000a6ab" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "33264:6:11", + "nodeType": "YulIdentifier", + "src": "33264:6:11" + }, + "nativeSrc": "33264:28:11", + "nodeType": "YulFunctionCall", + "src": "33264:28:11" + }, + "nativeSrc": "33264:28:11", + "nodeType": "YulExpressionStatement", + "src": "33264:28:11" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33384:4:11", + "nodeType": "YulLiteral", + "src": "33384:4:11", + "type": "", + "value": "0x00" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33394:2:11", + "nodeType": "YulLiteral", + "src": "33394:2:11", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "33398:50:11", + "nodeType": "YulLiteral", + "src": "33398:50:11", + "type": "", + "value": "0x2671756f743b26616d703b262333393b266c743b2667743b" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "33390:3:11", + "nodeType": "YulIdentifier", + "src": "33390:3:11" + }, + "nativeSrc": "33390:59:11", + "nodeType": "YulFunctionCall", + "src": "33390:59:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "33377:6:11", + "nodeType": "YulIdentifier", + "src": "33377:6:11" + }, + "nativeSrc": "33377:73:11", + "nodeType": "YulFunctionCall", + "src": "33377:73:11" + }, + "nativeSrc": "33377:73:11", + "nodeType": "YulExpressionStatement", + "src": "33377:73:11" + }, + { + "body": { + "nativeSrc": "33492:453:11", + "nodeType": "YulBlock", + "src": "33492:453:11", + "statements": [ + { + "nativeSrc": "33510:14:11", + "nodeType": "YulAssignment", + "src": "33510:14:11", + "value": { + "arguments": [ + { + "name": "s", + "nativeSrc": "33519:1:11", + "nodeType": "YulIdentifier", + "src": "33519:1:11" + }, + { + "kind": "number", + "nativeSrc": "33522:1:11", + "nodeType": "YulLiteral", + "src": "33522:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33515:3:11", + "nodeType": "YulIdentifier", + "src": "33515:3:11" + }, + "nativeSrc": "33515:9:11", + "nodeType": "YulFunctionCall", + "src": "33515:9:11" + }, + "variableNames": [ + { + "name": "s", + "nativeSrc": "33510:1:11", + "nodeType": "YulIdentifier", + "src": "33510:1:11" + } + ] + }, + { + "nativeSrc": "33541:28:11", + "nodeType": "YulVariableDeclaration", + "src": "33541:28:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "s", + "nativeSrc": "33560:1:11", + "nodeType": "YulIdentifier", + "src": "33560:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "33554:5:11", + "nodeType": "YulIdentifier", + "src": "33554:5:11" + }, + "nativeSrc": "33554:8:11", + "nodeType": "YulFunctionCall", + "src": "33554:8:11" + }, + { + "kind": "number", + "nativeSrc": "33564:4:11", + "nodeType": "YulLiteral", + "src": "33564:4:11", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "33550:3:11", + "nodeType": "YulIdentifier", + "src": "33550:3:11" + }, + "nativeSrc": "33550:19:11", + "nodeType": "YulFunctionCall", + "src": "33550:19:11" + }, + "variables": [ + { + "name": "c", + "nativeSrc": "33545:1:11", + "nodeType": "YulTypedName", + "src": "33545:1:11", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "33684:117:11", + "nodeType": "YulBlock", + "src": "33684:117:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "33714:1:11", + "nodeType": "YulIdentifier", + "src": "33714:1:11" + }, + { + "name": "c", + "nativeSrc": "33717:1:11", + "nodeType": "YulIdentifier", + "src": "33717:1:11" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "33706:7:11", + "nodeType": "YulIdentifier", + "src": "33706:7:11" + }, + "nativeSrc": "33706:13:11", + "nodeType": "YulFunctionCall", + "src": "33706:13:11" + }, + "nativeSrc": "33706:13:11", + "nodeType": "YulExpressionStatement", + "src": "33706:13:11" + }, + { + "nativeSrc": "33740:14:11", + "nodeType": "YulAssignment", + "src": "33740:14:11", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "33749:1:11", + "nodeType": "YulIdentifier", + "src": "33749:1:11" + }, + { + "kind": "number", + "nativeSrc": "33752:1:11", + "nodeType": "YulLiteral", + "src": "33752:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33745:3:11", + "nodeType": "YulIdentifier", + "src": "33745:3:11" + }, + "nativeSrc": "33745:9:11", + "nodeType": "YulFunctionCall", + "src": "33745:9:11" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "33740:1:11", + "nodeType": "YulIdentifier", + "src": "33740:1:11" + } + ] + }, + { + "nativeSrc": "33775:8:11", + "nodeType": "YulContinue", + "src": "33775:8:11" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "33656:1:11", + "nodeType": "YulIdentifier", + "src": "33656:1:11" + }, + { + "kind": "number", + "nativeSrc": "33659:1:11", + "nodeType": "YulLiteral", + "src": "33659:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "33652:3:11", + "nodeType": "YulIdentifier", + "src": "33652:3:11" + }, + "nativeSrc": "33652:9:11", + "nodeType": "YulFunctionCall", + "src": "33652:9:11" + }, + { + "kind": "number", + "nativeSrc": "33663:18:11", + "nodeType": "YulLiteral", + "src": "33663:18:11", + "type": "", + "value": "0x500000c400000000" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "33648:3:11", + "nodeType": "YulIdentifier", + "src": "33648:3:11" + }, + "nativeSrc": "33648:34:11", + "nodeType": "YulFunctionCall", + "src": "33648:34:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "33641:6:11", + "nodeType": "YulIdentifier", + "src": "33641:6:11" + }, + "nativeSrc": "33641:42:11", + "nodeType": "YulFunctionCall", + "src": "33641:42:11" + }, + "nativeSrc": "33638:163:11", + "nodeType": "YulIf", + "src": "33638:163:11" + }, + { + "nativeSrc": "33818:27:11", + "nodeType": "YulVariableDeclaration", + "src": "33818:27:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33831:3:11", + "nodeType": "YulLiteral", + "src": "33831:3:11", + "type": "", + "value": "248" + }, + { + "arguments": [ + { + "name": "c", + "nativeSrc": "33842:1:11", + "nodeType": "YulIdentifier", + "src": "33842:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "33836:5:11", + "nodeType": "YulIdentifier", + "src": "33836:5:11" + }, + "nativeSrc": "33836:8:11", + "nodeType": "YulFunctionCall", + "src": "33836:8:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "33827:3:11", + "nodeType": "YulIdentifier", + "src": "33827:3:11" + }, + "nativeSrc": "33827:18:11", + "nodeType": "YulFunctionCall", + "src": "33827:18:11" + }, + "variables": [ + { + "name": "t", + "nativeSrc": "33822:1:11", + "nodeType": "YulTypedName", + "src": "33822:1:11", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "33869:1:11", + "nodeType": "YulIdentifier", + "src": "33869:1:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "t", + "nativeSrc": "33882:1:11", + "nodeType": "YulIdentifier", + "src": "33882:1:11" + }, + { + "kind": "number", + "nativeSrc": "33885:4:11", + "nodeType": "YulLiteral", + "src": "33885:4:11", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "33878:3:11", + "nodeType": "YulIdentifier", + "src": "33878:3:11" + }, + "nativeSrc": "33878:12:11", + "nodeType": "YulFunctionCall", + "src": "33878:12:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "33872:5:11", + "nodeType": "YulIdentifier", + "src": "33872:5:11" + }, + "nativeSrc": "33872:19:11", + "nodeType": "YulFunctionCall", + "src": "33872:19:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "33862:6:11", + "nodeType": "YulIdentifier", + "src": "33862:6:11" + }, + "nativeSrc": "33862:30:11", + "nodeType": "YulFunctionCall", + "src": "33862:30:11" + }, + "nativeSrc": "33862:30:11", + "nodeType": "YulExpressionStatement", + "src": "33862:30:11" + }, + { + "nativeSrc": "33909:22:11", + "nodeType": "YulAssignment", + "src": "33909:22:11", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "33918:1:11", + "nodeType": "YulIdentifier", + "src": "33918:1:11" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33925:1:11", + "nodeType": "YulLiteral", + "src": "33925:1:11", + "type": "", + "value": "5" + }, + { + "name": "t", + "nativeSrc": "33928:1:11", + "nodeType": "YulIdentifier", + "src": "33928:1:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "33921:3:11", + "nodeType": "YulIdentifier", + "src": "33921:3:11" + }, + "nativeSrc": "33921:9:11", + "nodeType": "YulFunctionCall", + "src": "33921:9:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33914:3:11", + "nodeType": "YulIdentifier", + "src": "33914:3:11" + }, + "nativeSrc": "33914:17:11", + "nodeType": "YulFunctionCall", + "src": "33914:17:11" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "33909:1:11", + "nodeType": "YulIdentifier", + "src": "33909:1:11" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "s", + "nativeSrc": "33480:1:11", + "nodeType": "YulIdentifier", + "src": "33480:1:11" + }, + { + "name": "end", + "nativeSrc": "33483:3:11", + "nodeType": "YulIdentifier", + "src": "33483:3:11" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "33477:2:11", + "nodeType": "YulIdentifier", + "src": "33477:2:11" + }, + "nativeSrc": "33477:10:11", + "nodeType": "YulFunctionCall", + "src": "33477:10:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "33470:6:11", + "nodeType": "YulIdentifier", + "src": "33470:6:11" + }, + "nativeSrc": "33470:18:11", + "nodeType": "YulFunctionCall", + "src": "33470:18:11" + }, + "nativeSrc": "33463:482:11", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "33489:2:11", + "nodeType": "YulBlock", + "src": "33489:2:11", + "statements": [] + }, + "pre": { + "nativeSrc": "33467:2:11", + "nodeType": "YulBlock", + "src": "33467:2:11", + "statements": [] + }, + "src": "33463:482:11" + }, + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "33965:1:11", + "nodeType": "YulIdentifier", + "src": "33965:1:11" + }, + { + "kind": "number", + "nativeSrc": "33968:1:11", + "nodeType": "YulLiteral", + "src": "33968:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "33958:6:11", + "nodeType": "YulIdentifier", + "src": "33958:6:11" + }, + "nativeSrc": "33958:12:11", + "nodeType": "YulFunctionCall", + "src": "33958:12:11" + }, + "nativeSrc": "33958:12:11", + "nodeType": "YulExpressionStatement", + "src": "33958:12:11" + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "34028:6:11", + "nodeType": "YulIdentifier", + "src": "34028:6:11" + }, + { + "arguments": [ + { + "name": "o", + "nativeSrc": "34040:1:11", + "nodeType": "YulIdentifier", + "src": "34040:1:11" + }, + { + "arguments": [ + { + "name": "result", + "nativeSrc": "34047:6:11", + "nodeType": "YulIdentifier", + "src": "34047:6:11" + }, + { + "kind": "number", + "nativeSrc": "34055:4:11", + "nodeType": "YulLiteral", + "src": "34055:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "34043:3:11", + "nodeType": "YulIdentifier", + "src": "34043:3:11" + }, + "nativeSrc": "34043:17:11", + "nodeType": "YulFunctionCall", + "src": "34043:17:11" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "34036:3:11", + "nodeType": "YulIdentifier", + "src": "34036:3:11" + }, + "nativeSrc": "34036:25:11", + "nodeType": "YulFunctionCall", + "src": "34036:25:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "34021:6:11", + "nodeType": "YulIdentifier", + "src": "34021:6:11" + }, + "nativeSrc": "34021:41:11", + "nodeType": "YulFunctionCall", + "src": "34021:41:11" + }, + "nativeSrc": "34021:41:11", + "nodeType": "YulExpressionStatement", + "src": "34021:41:11" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "34103:4:11", + "nodeType": "YulLiteral", + "src": "34103:4:11", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "o", + "nativeSrc": "34113:1:11", + "nodeType": "YulIdentifier", + "src": "34113:1:11" + }, + { + "kind": "number", + "nativeSrc": "34116:4:11", + "nodeType": "YulLiteral", + "src": "34116:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "34109:3:11", + "nodeType": "YulIdentifier", + "src": "34109:3:11" + }, + "nativeSrc": "34109:12:11", + "nodeType": "YulFunctionCall", + "src": "34109:12:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "34096:6:11", + "nodeType": "YulIdentifier", + "src": "34096:6:11" + }, + "nativeSrc": "34096:26:11", + "nodeType": "YulFunctionCall", + "src": "34096:26:11" + }, + "nativeSrc": "34096:26:11", + "nodeType": "YulExpressionStatement", + "src": "34096:26:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6003, + "isOffset": false, + "isSlot": false, + "src": "32942:6:11", + "valueSize": 1 + }, + { + "declaration": 6003, + "isOffset": false, + "isSlot": false, + "src": "33029:6:11", + "valueSize": 1 + }, + { + "declaration": 6003, + "isOffset": false, + "isSlot": false, + "src": "34028:6:11", + "valueSize": 1 + }, + { + "declaration": 6003, + "isOffset": false, + "isSlot": false, + "src": "34047:6:11", + "valueSize": 1 + }, + { + "declaration": 6000, + "isOffset": false, + "isSlot": false, + "src": "32991:1:11", + "valueSize": 1 + }, + { + "declaration": 6000, + "isOffset": false, + "isSlot": false, + "src": "33000:1:11", + "valueSize": 1 + }, + { + "declaration": 6000, + "isOffset": false, + "isSlot": false, + "src": "33480:1:11", + "valueSize": 1 + }, + { + "declaration": 6000, + "isOffset": false, + "isSlot": false, + "src": "33510:1:11", + "valueSize": 1 + }, + { + "declaration": 6000, + "isOffset": false, + "isSlot": false, + "src": "33519:1:11", + "valueSize": 1 + }, + { + "declaration": 6000, + "isOffset": false, + "isSlot": false, + "src": "33560:1:11", + "valueSize": 1 + } + ], + "id": 6005, + "nodeType": "InlineAssembly", + "src": "32919:1233:11" + } + ] + }, + "documentation": { + "id": 5998, + "nodeType": "StructuredDocumentation", + "src": "32723:56:11", + "text": "@dev Escapes the string to be used within HTML tags." + }, + "id": 6007, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "escapeHTML", + "nameLocation": "32793:10:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6001, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6000, + "mutability": "mutable", + "name": "s", + "nameLocation": "32818:1:11", + "nodeType": "VariableDeclaration", + "scope": 6007, + "src": "32804:15:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5999, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "32804:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "32803:17:11" + }, + "returnParameters": { + "id": 6004, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6003, + "mutability": "mutable", + "name": "result", + "nameLocation": "32858:6:11", + "nodeType": "VariableDeclaration", + "scope": 6007, + "src": "32844:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6002, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "32844:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "32843:22:11" + }, + "scope": 6145, + "src": "32784:1374:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6018, + "nodeType": "Block", + "src": "34455:2098:11", + "statements": [ + { + "AST": { + "nativeSrc": "34517:2030:11", + "nodeType": "YulBlock", + "src": "34517:2030:11", + "statements": [ + { + "nativeSrc": "34531:21:11", + "nodeType": "YulAssignment", + "src": "34531:21:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "34547:4:11", + "nodeType": "YulLiteral", + "src": "34547:4:11", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "34541:5:11", + "nodeType": "YulIdentifier", + "src": "34541:5:11" + }, + "nativeSrc": "34541:11:11", + "nodeType": "YulFunctionCall", + "src": "34541:11:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "34531:6:11", + "nodeType": "YulIdentifier", + "src": "34531:6:11" + } + ] + }, + { + "nativeSrc": "34565:26:11", + "nodeType": "YulVariableDeclaration", + "src": "34565:26:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "34578:6:11", + "nodeType": "YulIdentifier", + "src": "34578:6:11" + }, + { + "kind": "number", + "nativeSrc": "34586:4:11", + "nodeType": "YulLiteral", + "src": "34586:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "34574:3:11", + "nodeType": "YulIdentifier", + "src": "34574:3:11" + }, + "nativeSrc": "34574:17:11", + "nodeType": "YulFunctionCall", + "src": "34574:17:11" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "34569:1:11", + "nodeType": "YulTypedName", + "src": "34569:1:11", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "34623:77:11", + "nodeType": "YulBlock", + "src": "34623:77:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "34649:1:11", + "nodeType": "YulIdentifier", + "src": "34649:1:11" + }, + { + "kind": "number", + "nativeSrc": "34652:2:11", + "nodeType": "YulLiteral", + "src": "34652:2:11", + "type": "", + "value": "34" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "34641:7:11", + "nodeType": "YulIdentifier", + "src": "34641:7:11" + }, + "nativeSrc": "34641:14:11", + "nodeType": "YulFunctionCall", + "src": "34641:14:11" + }, + "nativeSrc": "34641:14:11", + "nodeType": "YulExpressionStatement", + "src": "34641:14:11" + }, + { + "nativeSrc": "34672:14:11", + "nodeType": "YulAssignment", + "src": "34672:14:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "34681:1:11", + "nodeType": "YulLiteral", + "src": "34681:1:11", + "type": "", + "value": "1" + }, + { + "name": "o", + "nativeSrc": "34684:1:11", + "nodeType": "YulIdentifier", + "src": "34684:1:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "34677:3:11", + "nodeType": "YulIdentifier", + "src": "34677:3:11" + }, + "nativeSrc": "34677:9:11", + "nodeType": "YulFunctionCall", + "src": "34677:9:11" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "34672:1:11", + "nodeType": "YulIdentifier", + "src": "34672:1:11" + } + ] + } + ] + }, + "condition": { + "name": "addDoubleQuotes", + "nativeSrc": "34607:15:11", + "nodeType": "YulIdentifier", + "src": "34607:15:11" + }, + "nativeSrc": "34604:96:11", + "nodeType": "YulIf", + "src": "34604:96:11" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "34947:4:11", + "nodeType": "YulLiteral", + "src": "34947:4:11", + "type": "", + "value": "0x15" + }, + { + "kind": "number", + "nativeSrc": "34953:58:11", + "nodeType": "YulLiteral", + "src": "34953:58:11", + "type": "", + "value": "0x5c75303030303031323334353637383961626364656662746e006672" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "34940:6:11", + "nodeType": "YulIdentifier", + "src": "34940:6:11" + }, + "nativeSrc": "34940:72:11", + "nodeType": "YulFunctionCall", + "src": "34940:72:11" + }, + "nativeSrc": "34940:72:11", + "nodeType": "YulExpressionStatement", + "src": "34940:72:11" + }, + { + "nativeSrc": "35077:39:11", + "nodeType": "YulVariableDeclaration", + "src": "35077:39:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "35093:4:11", + "nodeType": "YulLiteral", + "src": "35093:4:11", + "type": "", + "value": "0x22" + }, + { + "kind": "number", + "nativeSrc": "35099:1:11", + "nodeType": "YulLiteral", + "src": "35099:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "35089:3:11", + "nodeType": "YulIdentifier", + "src": "35089:3:11" + }, + "nativeSrc": "35089:12:11", + "nodeType": "YulFunctionCall", + "src": "35089:12:11" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "35107:4:11", + "nodeType": "YulLiteral", + "src": "35107:4:11", + "type": "", + "value": "0x5c" + }, + { + "kind": "number", + "nativeSrc": "35113:1:11", + "nodeType": "YulLiteral", + "src": "35113:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "35103:3:11", + "nodeType": "YulIdentifier", + "src": "35103:3:11" + }, + "nativeSrc": "35103:12:11", + "nodeType": "YulFunctionCall", + "src": "35103:12:11" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "35086:2:11", + "nodeType": "YulIdentifier", + "src": "35086:2:11" + }, + "nativeSrc": "35086:30:11", + "nodeType": "YulFunctionCall", + "src": "35086:30:11" + }, + "variables": [ + { + "name": "e", + "nativeSrc": "35081:1:11", + "nodeType": "YulTypedName", + "src": "35081:1:11", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "35187:1044:11", + "nodeType": "YulBlock", + "src": "35187:1044:11", + "statements": [ + { + "nativeSrc": "35205:14:11", + "nodeType": "YulAssignment", + "src": "35205:14:11", + "value": { + "arguments": [ + { + "name": "s", + "nativeSrc": "35214:1:11", + "nodeType": "YulIdentifier", + "src": "35214:1:11" + }, + { + "kind": "number", + "nativeSrc": "35217:1:11", + "nodeType": "YulLiteral", + "src": "35217:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35210:3:11", + "nodeType": "YulIdentifier", + "src": "35210:3:11" + }, + "nativeSrc": "35210:9:11", + "nodeType": "YulFunctionCall", + "src": "35210:9:11" + }, + "variableNames": [ + { + "name": "s", + "nativeSrc": "35205:1:11", + "nodeType": "YulIdentifier", + "src": "35205:1:11" + } + ] + }, + { + "nativeSrc": "35236:28:11", + "nodeType": "YulVariableDeclaration", + "src": "35236:28:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "s", + "nativeSrc": "35255:1:11", + "nodeType": "YulIdentifier", + "src": "35255:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "35249:5:11", + "nodeType": "YulIdentifier", + "src": "35249:5:11" + }, + "nativeSrc": "35249:8:11", + "nodeType": "YulFunctionCall", + "src": "35249:8:11" + }, + { + "kind": "number", + "nativeSrc": "35259:4:11", + "nodeType": "YulLiteral", + "src": "35259:4:11", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "35245:3:11", + "nodeType": "YulIdentifier", + "src": "35245:3:11" + }, + "nativeSrc": "35245:19:11", + "nodeType": "YulFunctionCall", + "src": "35245:19:11" + }, + "variables": [ + { + "name": "c", + "nativeSrc": "35240:1:11", + "nodeType": "YulTypedName", + "src": "35240:1:11", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "35304:403:11", + "nodeType": "YulBlock", + "src": "35304:403:11", + "statements": [ + { + "body": { + "nativeSrc": "35355:182:11", + "nodeType": "YulBlock", + "src": "35355:182:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "35438:1:11", + "nodeType": "YulIdentifier", + "src": "35438:1:11" + }, + { + "name": "c", + "nativeSrc": "35441:1:11", + "nodeType": "YulIdentifier", + "src": "35441:1:11" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "35430:7:11", + "nodeType": "YulIdentifier", + "src": "35430:7:11" + }, + "nativeSrc": "35430:13:11", + "nodeType": "YulFunctionCall", + "src": "35430:13:11" + }, + "nativeSrc": "35430:13:11", + "nodeType": "YulExpressionStatement", + "src": "35430:13:11" + }, + { + "nativeSrc": "35468:14:11", + "nodeType": "YulAssignment", + "src": "35468:14:11", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "35477:1:11", + "nodeType": "YulIdentifier", + "src": "35477:1:11" + }, + { + "kind": "number", + "nativeSrc": "35480:1:11", + "nodeType": "YulLiteral", + "src": "35480:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35473:3:11", + "nodeType": "YulIdentifier", + "src": "35473:3:11" + }, + "nativeSrc": "35473:9:11", + "nodeType": "YulFunctionCall", + "src": "35473:9:11" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "35468:1:11", + "nodeType": "YulIdentifier", + "src": "35468:1:11" + } + ] + }, + { + "nativeSrc": "35507:8:11", + "nodeType": "YulContinue", + "src": "35507:8:11" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "35344:1:11", + "nodeType": "YulIdentifier", + "src": "35344:1:11" + }, + { + "kind": "number", + "nativeSrc": "35347:1:11", + "nodeType": "YulLiteral", + "src": "35347:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "35340:3:11", + "nodeType": "YulIdentifier", + "src": "35340:3:11" + }, + "nativeSrc": "35340:9:11", + "nodeType": "YulFunctionCall", + "src": "35340:9:11" + }, + { + "name": "e", + "nativeSrc": "35351:1:11", + "nodeType": "YulIdentifier", + "src": "35351:1:11" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "35336:3:11", + "nodeType": "YulIdentifier", + "src": "35336:3:11" + }, + "nativeSrc": "35336:17:11", + "nodeType": "YulFunctionCall", + "src": "35336:17:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "35329:6:11", + "nodeType": "YulIdentifier", + "src": "35329:6:11" + }, + "nativeSrc": "35329:25:11", + "nodeType": "YulFunctionCall", + "src": "35329:25:11" + }, + "nativeSrc": "35326:211:11", + "nodeType": "YulIf", + "src": "35326:211:11" + }, + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "35566:1:11", + "nodeType": "YulIdentifier", + "src": "35566:1:11" + }, + { + "kind": "number", + "nativeSrc": "35569:4:11", + "nodeType": "YulLiteral", + "src": "35569:4:11", + "type": "", + "value": "0x5c" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "35558:7:11", + "nodeType": "YulIdentifier", + "src": "35558:7:11" + }, + "nativeSrc": "35558:16:11", + "nodeType": "YulFunctionCall", + "src": "35558:16:11" + }, + "nativeSrc": "35558:16:11", + "nodeType": "YulExpressionStatement", + "src": "35558:16:11" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "35616:1:11", + "nodeType": "YulIdentifier", + "src": "35616:1:11" + }, + { + "kind": "number", + "nativeSrc": "35619:1:11", + "nodeType": "YulLiteral", + "src": "35619:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35612:3:11", + "nodeType": "YulIdentifier", + "src": "35612:3:11" + }, + "nativeSrc": "35612:9:11", + "nodeType": "YulFunctionCall", + "src": "35612:9:11" + }, + { + "name": "c", + "nativeSrc": "35623:1:11", + "nodeType": "YulIdentifier", + "src": "35623:1:11" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "35604:7:11", + "nodeType": "YulIdentifier", + "src": "35604:7:11" + }, + "nativeSrc": "35604:21:11", + "nodeType": "YulFunctionCall", + "src": "35604:21:11" + }, + "nativeSrc": "35604:21:11", + "nodeType": "YulExpressionStatement", + "src": "35604:21:11" + }, + { + "nativeSrc": "35646:14:11", + "nodeType": "YulAssignment", + "src": "35646:14:11", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "35655:1:11", + "nodeType": "YulIdentifier", + "src": "35655:1:11" + }, + { + "kind": "number", + "nativeSrc": "35658:1:11", + "nodeType": "YulLiteral", + "src": "35658:1:11", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35651:3:11", + "nodeType": "YulIdentifier", + "src": "35651:3:11" + }, + "nativeSrc": "35651:9:11", + "nodeType": "YulFunctionCall", + "src": "35651:9:11" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "35646:1:11", + "nodeType": "YulIdentifier", + "src": "35646:1:11" + } + ] + }, + { + "nativeSrc": "35681:8:11", + "nodeType": "YulContinue", + "src": "35681:8:11" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "35294:1:11", + "nodeType": "YulIdentifier", + "src": "35294:1:11" + }, + { + "kind": "number", + "nativeSrc": "35297:4:11", + "nodeType": "YulLiteral", + "src": "35297:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "35291:2:11", + "nodeType": "YulIdentifier", + "src": "35291:2:11" + }, + "nativeSrc": "35291:11:11", + "nodeType": "YulFunctionCall", + "src": "35291:11:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "35284:6:11", + "nodeType": "YulIdentifier", + "src": "35284:6:11" + }, + "nativeSrc": "35284:19:11", + "nodeType": "YulFunctionCall", + "src": "35284:19:11" + }, + "nativeSrc": "35281:426:11", + "nodeType": "YulIf", + "src": "35281:426:11" + }, + { + "body": { + "nativeSrc": "35758:333:11", + "nodeType": "YulBlock", + "src": "35758:333:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "35848:4:11", + "nodeType": "YulLiteral", + "src": "35848:4:11", + "type": "", + "value": "0x1d" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "35864:1:11", + "nodeType": "YulLiteral", + "src": "35864:1:11", + "type": "", + "value": "4" + }, + { + "name": "c", + "nativeSrc": "35867:1:11", + "nodeType": "YulIdentifier", + "src": "35867:1:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "35860:3:11", + "nodeType": "YulIdentifier", + "src": "35860:3:11" + }, + "nativeSrc": "35860:9:11", + "nodeType": "YulFunctionCall", + "src": "35860:9:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "35854:5:11", + "nodeType": "YulIdentifier", + "src": "35854:5:11" + }, + "nativeSrc": "35854:16:11", + "nodeType": "YulFunctionCall", + "src": "35854:16:11" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "35840:7:11", + "nodeType": "YulIdentifier", + "src": "35840:7:11" + }, + "nativeSrc": "35840:31:11", + "nodeType": "YulFunctionCall", + "src": "35840:31:11" + }, + "nativeSrc": "35840:31:11", + "nodeType": "YulExpressionStatement", + "src": "35840:31:11" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "35914:4:11", + "nodeType": "YulLiteral", + "src": "35914:4:11", + "type": "", + "value": "0x1e" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "35930:1:11", + "nodeType": "YulIdentifier", + "src": "35930:1:11" + }, + { + "kind": "number", + "nativeSrc": "35933:2:11", + "nodeType": "YulLiteral", + "src": "35933:2:11", + "type": "", + "value": "15" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "35926:3:11", + "nodeType": "YulIdentifier", + "src": "35926:3:11" + }, + "nativeSrc": "35926:10:11", + "nodeType": "YulFunctionCall", + "src": "35926:10:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "35920:5:11", + "nodeType": "YulIdentifier", + "src": "35920:5:11" + }, + "nativeSrc": "35920:17:11", + "nodeType": "YulFunctionCall", + "src": "35920:17:11" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "35906:7:11", + "nodeType": "YulIdentifier", + "src": "35906:7:11" + }, + "nativeSrc": "35906:32:11", + "nodeType": "YulFunctionCall", + "src": "35906:32:11" + }, + "nativeSrc": "35906:32:11", + "nodeType": "YulExpressionStatement", + "src": "35906:32:11" + }, + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "35980:1:11", + "nodeType": "YulIdentifier", + "src": "35980:1:11" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "35989:4:11", + "nodeType": "YulLiteral", + "src": "35989:4:11", + "type": "", + "value": "0x19" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "35983:5:11", + "nodeType": "YulIdentifier", + "src": "35983:5:11" + }, + "nativeSrc": "35983:11:11", + "nodeType": "YulFunctionCall", + "src": "35983:11:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "35973:6:11", + "nodeType": "YulIdentifier", + "src": "35973:6:11" + }, + "nativeSrc": "35973:22:11", + "nodeType": "YulFunctionCall", + "src": "35973:22:11" + }, + "nativeSrc": "35973:22:11", + "nodeType": "YulExpressionStatement", + "src": "35973:22:11" + }, + { + "nativeSrc": "36030:14:11", + "nodeType": "YulAssignment", + "src": "36030:14:11", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "36039:1:11", + "nodeType": "YulIdentifier", + "src": "36039:1:11" + }, + { + "kind": "number", + "nativeSrc": "36042:1:11", + "nodeType": "YulLiteral", + "src": "36042:1:11", + "type": "", + "value": "6" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36035:3:11", + "nodeType": "YulIdentifier", + "src": "36035:3:11" + }, + "nativeSrc": "36035:9:11", + "nodeType": "YulFunctionCall", + "src": "36035:9:11" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "36030:1:11", + "nodeType": "YulIdentifier", + "src": "36030:1:11" + } + ] + }, + { + "nativeSrc": "36065:8:11", + "nodeType": "YulContinue", + "src": "36065:8:11" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "35742:1:11", + "nodeType": "YulIdentifier", + "src": "35742:1:11" + }, + { + "kind": "number", + "nativeSrc": "35745:1:11", + "nodeType": "YulLiteral", + "src": "35745:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "35738:3:11", + "nodeType": "YulIdentifier", + "src": "35738:3:11" + }, + "nativeSrc": "35738:9:11", + "nodeType": "YulFunctionCall", + "src": "35738:9:11" + }, + { + "kind": "number", + "nativeSrc": "35749:6:11", + "nodeType": "YulLiteral", + "src": "35749:6:11", + "type": "", + "value": "0x3700" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "35734:3:11", + "nodeType": "YulIdentifier", + "src": "35734:3:11" + }, + "nativeSrc": "35734:22:11", + "nodeType": "YulFunctionCall", + "src": "35734:22:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "35727:6:11", + "nodeType": "YulIdentifier", + "src": "35727:6:11" + }, + "nativeSrc": "35727:30:11", + "nodeType": "YulFunctionCall", + "src": "35727:30:11" + }, + "nativeSrc": "35724:367:11", + "nodeType": "YulIf", + "src": "35724:367:11" + }, + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "36116:1:11", + "nodeType": "YulIdentifier", + "src": "36116:1:11" + }, + { + "kind": "number", + "nativeSrc": "36119:4:11", + "nodeType": "YulLiteral", + "src": "36119:4:11", + "type": "", + "value": "0x5c" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "36108:7:11", + "nodeType": "YulIdentifier", + "src": "36108:7:11" + }, + "nativeSrc": "36108:16:11", + "nodeType": "YulFunctionCall", + "src": "36108:16:11" + }, + "nativeSrc": "36108:16:11", + "nodeType": "YulExpressionStatement", + "src": "36108:16:11" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "36162:1:11", + "nodeType": "YulIdentifier", + "src": "36162:1:11" + }, + { + "kind": "number", + "nativeSrc": "36165:1:11", + "nodeType": "YulLiteral", + "src": "36165:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36158:3:11", + "nodeType": "YulIdentifier", + "src": "36158:3:11" + }, + "nativeSrc": "36158:9:11", + "nodeType": "YulFunctionCall", + "src": "36158:9:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "36179:1:11", + "nodeType": "YulIdentifier", + "src": "36179:1:11" + }, + { + "kind": "number", + "nativeSrc": "36182:1:11", + "nodeType": "YulLiteral", + "src": "36182:1:11", + "type": "", + "value": "8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36175:3:11", + "nodeType": "YulIdentifier", + "src": "36175:3:11" + }, + "nativeSrc": "36175:9:11", + "nodeType": "YulFunctionCall", + "src": "36175:9:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "36169:5:11", + "nodeType": "YulIdentifier", + "src": "36169:5:11" + }, + "nativeSrc": "36169:16:11", + "nodeType": "YulFunctionCall", + "src": "36169:16:11" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "36150:7:11", + "nodeType": "YulIdentifier", + "src": "36150:7:11" + }, + "nativeSrc": "36150:36:11", + "nodeType": "YulFunctionCall", + "src": "36150:36:11" + }, + "nativeSrc": "36150:36:11", + "nodeType": "YulExpressionStatement", + "src": "36150:36:11" + }, + { + "nativeSrc": "36203:14:11", + "nodeType": "YulAssignment", + "src": "36203:14:11", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "36212:1:11", + "nodeType": "YulIdentifier", + "src": "36212:1:11" + }, + { + "kind": "number", + "nativeSrc": "36215:1:11", + "nodeType": "YulLiteral", + "src": "36215:1:11", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36208:3:11", + "nodeType": "YulIdentifier", + "src": "36208:3:11" + }, + "nativeSrc": "36208:9:11", + "nodeType": "YulFunctionCall", + "src": "36208:9:11" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "36203:1:11", + "nodeType": "YulIdentifier", + "src": "36203:1:11" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "s", + "nativeSrc": "35175:1:11", + "nodeType": "YulIdentifier", + "src": "35175:1:11" + }, + { + "name": "end", + "nativeSrc": "35178:3:11", + "nodeType": "YulIdentifier", + "src": "35178:3:11" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "35172:2:11", + "nodeType": "YulIdentifier", + "src": "35172:2:11" + }, + "nativeSrc": "35172:10:11", + "nodeType": "YulFunctionCall", + "src": "35172:10:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "35165:6:11", + "nodeType": "YulIdentifier", + "src": "35165:6:11" + }, + "nativeSrc": "35165:18:11", + "nodeType": "YulFunctionCall", + "src": "35165:18:11" + }, + "nativeSrc": "35129:1102:11", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "35184:2:11", + "nodeType": "YulBlock", + "src": "35184:2:11", + "statements": [] + }, + "pre": { + "nativeSrc": "35133:31:11", + "nodeType": "YulBlock", + "src": "35133:31:11", + "statements": [ + { + "nativeSrc": "35135:27:11", + "nodeType": "YulVariableDeclaration", + "src": "35135:27:11", + "value": { + "arguments": [ + { + "name": "s", + "nativeSrc": "35150:1:11", + "nodeType": "YulIdentifier", + "src": "35150:1:11" + }, + { + "arguments": [ + { + "name": "s", + "nativeSrc": "35159:1:11", + "nodeType": "YulIdentifier", + "src": "35159:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "35153:5:11", + "nodeType": "YulIdentifier", + "src": "35153:5:11" + }, + "nativeSrc": "35153:8:11", + "nodeType": "YulFunctionCall", + "src": "35153:8:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35146:3:11", + "nodeType": "YulIdentifier", + "src": "35146:3:11" + }, + "nativeSrc": "35146:16:11", + "nodeType": "YulFunctionCall", + "src": "35146:16:11" + }, + "variables": [ + { + "name": "end", + "nativeSrc": "35139:3:11", + "nodeType": "YulTypedName", + "src": "35139:3:11", + "type": "" + } + ] + } + ] + }, + "src": "35129:1102:11" + }, + { + "body": { + "nativeSrc": "36263:77:11", + "nodeType": "YulBlock", + "src": "36263:77:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "36289:1:11", + "nodeType": "YulIdentifier", + "src": "36289:1:11" + }, + { + "kind": "number", + "nativeSrc": "36292:2:11", + "nodeType": "YulLiteral", + "src": "36292:2:11", + "type": "", + "value": "34" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "36281:7:11", + "nodeType": "YulIdentifier", + "src": "36281:7:11" + }, + "nativeSrc": "36281:14:11", + "nodeType": "YulFunctionCall", + "src": "36281:14:11" + }, + "nativeSrc": "36281:14:11", + "nodeType": "YulExpressionStatement", + "src": "36281:14:11" + }, + { + "nativeSrc": "36312:14:11", + "nodeType": "YulAssignment", + "src": "36312:14:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "36321:1:11", + "nodeType": "YulLiteral", + "src": "36321:1:11", + "type": "", + "value": "1" + }, + { + "name": "o", + "nativeSrc": "36324:1:11", + "nodeType": "YulIdentifier", + "src": "36324:1:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36317:3:11", + "nodeType": "YulIdentifier", + "src": "36317:3:11" + }, + "nativeSrc": "36317:9:11", + "nodeType": "YulFunctionCall", + "src": "36317:9:11" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "36312:1:11", + "nodeType": "YulIdentifier", + "src": "36312:1:11" + } + ] + } + ] + }, + "condition": { + "name": "addDoubleQuotes", + "nativeSrc": "36247:15:11", + "nodeType": "YulIdentifier", + "src": "36247:15:11" + }, + "nativeSrc": "36244:96:11", + "nodeType": "YulIf", + "src": "36244:96:11" + }, + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "36360:1:11", + "nodeType": "YulIdentifier", + "src": "36360:1:11" + }, + { + "kind": "number", + "nativeSrc": "36363:1:11", + "nodeType": "YulLiteral", + "src": "36363:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "36353:6:11", + "nodeType": "YulIdentifier", + "src": "36353:6:11" + }, + "nativeSrc": "36353:12:11", + "nodeType": "YulFunctionCall", + "src": "36353:12:11" + }, + "nativeSrc": "36353:12:11", + "nodeType": "YulExpressionStatement", + "src": "36353:12:11" + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "36423:6:11", + "nodeType": "YulIdentifier", + "src": "36423:6:11" + }, + { + "arguments": [ + { + "name": "o", + "nativeSrc": "36435:1:11", + "nodeType": "YulIdentifier", + "src": "36435:1:11" + }, + { + "arguments": [ + { + "name": "result", + "nativeSrc": "36442:6:11", + "nodeType": "YulIdentifier", + "src": "36442:6:11" + }, + { + "kind": "number", + "nativeSrc": "36450:4:11", + "nodeType": "YulLiteral", + "src": "36450:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36438:3:11", + "nodeType": "YulIdentifier", + "src": "36438:3:11" + }, + "nativeSrc": "36438:17:11", + "nodeType": "YulFunctionCall", + "src": "36438:17:11" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "36431:3:11", + "nodeType": "YulIdentifier", + "src": "36431:3:11" + }, + "nativeSrc": "36431:25:11", + "nodeType": "YulFunctionCall", + "src": "36431:25:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "36416:6:11", + "nodeType": "YulIdentifier", + "src": "36416:6:11" + }, + "nativeSrc": "36416:41:11", + "nodeType": "YulFunctionCall", + "src": "36416:41:11" + }, + "nativeSrc": "36416:41:11", + "nodeType": "YulExpressionStatement", + "src": "36416:41:11" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "36498:4:11", + "nodeType": "YulLiteral", + "src": "36498:4:11", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "o", + "nativeSrc": "36508:1:11", + "nodeType": "YulIdentifier", + "src": "36508:1:11" + }, + { + "kind": "number", + "nativeSrc": "36511:4:11", + "nodeType": "YulLiteral", + "src": "36511:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36504:3:11", + "nodeType": "YulIdentifier", + "src": "36504:3:11" + }, + "nativeSrc": "36504:12:11", + "nodeType": "YulFunctionCall", + "src": "36504:12:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "36491:6:11", + "nodeType": "YulIdentifier", + "src": "36491:6:11" + }, + "nativeSrc": "36491:26:11", + "nodeType": "YulFunctionCall", + "src": "36491:26:11" + }, + "nativeSrc": "36491:26:11", + "nodeType": "YulExpressionStatement", + "src": "36491:26:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6012, + "isOffset": false, + "isSlot": false, + "src": "34607:15:11", + "valueSize": 1 + }, + { + "declaration": 6012, + "isOffset": false, + "isSlot": false, + "src": "36247:15:11", + "valueSize": 1 + }, + { + "declaration": 6015, + "isOffset": false, + "isSlot": false, + "src": "34531:6:11", + "valueSize": 1 + }, + { + "declaration": 6015, + "isOffset": false, + "isSlot": false, + "src": "34578:6:11", + "valueSize": 1 + }, + { + "declaration": 6015, + "isOffset": false, + "isSlot": false, + "src": "36423:6:11", + "valueSize": 1 + }, + { + "declaration": 6015, + "isOffset": false, + "isSlot": false, + "src": "36442:6:11", + "valueSize": 1 + }, + { + "declaration": 6010, + "isOffset": false, + "isSlot": false, + "src": "35150:1:11", + "valueSize": 1 + }, + { + "declaration": 6010, + "isOffset": false, + "isSlot": false, + "src": "35159:1:11", + "valueSize": 1 + }, + { + "declaration": 6010, + "isOffset": false, + "isSlot": false, + "src": "35175:1:11", + "valueSize": 1 + }, + { + "declaration": 6010, + "isOffset": false, + "isSlot": false, + "src": "35205:1:11", + "valueSize": 1 + }, + { + "declaration": 6010, + "isOffset": false, + "isSlot": false, + "src": "35214:1:11", + "valueSize": 1 + }, + { + "declaration": 6010, + "isOffset": false, + "isSlot": false, + "src": "35255:1:11", + "valueSize": 1 + } + ], + "id": 6017, + "nodeType": "InlineAssembly", + "src": "34508:2039:11" + } + ] + }, + "documentation": { + "id": 6008, + "nodeType": "StructuredDocumentation", + "src": "34164:154:11", + "text": "@dev Escapes the string to be used within double-quotes in a JSON.\n If `addDoubleQuotes` is true, the result will be enclosed in double-quotes." + }, + "id": 6019, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "escapeJSON", + "nameLocation": "34332:10:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6013, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6010, + "mutability": "mutable", + "name": "s", + "nameLocation": "34357:1:11", + "nodeType": "VariableDeclaration", + "scope": 6019, + "src": "34343:15:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6009, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "34343:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6012, + "mutability": "mutable", + "name": "addDoubleQuotes", + "nameLocation": "34365:15:11", + "nodeType": "VariableDeclaration", + "scope": 6019, + "src": "34360:20:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6011, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "34360:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "34342:39:11" + }, + "returnParameters": { + "id": 6016, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6015, + "mutability": "mutable", + "name": "result", + "nameLocation": "34443:6:11", + "nodeType": "VariableDeclaration", + "scope": 6019, + "src": "34429:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6014, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "34429:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "34428:22:11" + }, + "scope": 6145, + "src": "34323:2230:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6034, + "nodeType": "Block", + "src": "36716:46:11", + "statements": [ + { + "expression": { + "id": 6032, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6027, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6025, + "src": "36726:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 6029, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6022, + "src": "36746:1:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "hexValue": "66616c7365", + "id": 6030, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "36749:5:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 6028, + "name": "escapeJSON", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6019, + 6035 + ], + "referencedDeclaration": 6019, + "src": "36735:10:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_bool_$returns$_t_string_memory_ptr_$", + "typeString": "function (string memory,bool) pure returns (string memory)" + } + }, + "id": 6031, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "36735:20:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "36726:29:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "id": 6033, + "nodeType": "ExpressionStatement", + "src": "36726:29:11" + } + ] + }, + "documentation": { + "id": 6020, + "nodeType": "StructuredDocumentation", + "src": "36559:70:11", + "text": "@dev Escapes the string to be used within double-quotes in a JSON." + }, + "id": 6035, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "escapeJSON", + "nameLocation": "36643:10:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6023, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6022, + "mutability": "mutable", + "name": "s", + "nameLocation": "36668:1:11", + "nodeType": "VariableDeclaration", + "scope": 6035, + "src": "36654:15:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6021, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "36654:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "36653:17:11" + }, + "returnParameters": { + "id": 6026, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6025, + "mutability": "mutable", + "name": "result", + "nameLocation": "36708:6:11", + "nodeType": "VariableDeclaration", + "scope": 6035, + "src": "36694:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6024, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "36694:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "36693:22:11" + }, + "scope": 6145, + "src": "36634:128:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6044, + "nodeType": "Block", + "src": "37208:1153:11", + "statements": [ + { + "AST": { + "nativeSrc": "37270:1085:11", + "nodeType": "YulBlock", + "src": "37270:1085:11", + "statements": [ + { + "nativeSrc": "37284:21:11", + "nodeType": "YulAssignment", + "src": "37284:21:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "37300:4:11", + "nodeType": "YulLiteral", + "src": "37300:4:11", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "37294:5:11", + "nodeType": "YulIdentifier", + "src": "37294:5:11" + }, + "nativeSrc": "37294:11:11", + "nodeType": "YulFunctionCall", + "src": "37294:11:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "37284:6:11", + "nodeType": "YulIdentifier", + "src": "37284:6:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "37460:4:11", + "nodeType": "YulLiteral", + "src": "37460:4:11", + "type": "", + "value": "0x0f" + }, + { + "kind": "number", + "nativeSrc": "37466:34:11", + "nodeType": "YulLiteral", + "src": "37466:34:11", + "type": "", + "value": "0x30313233343536373839414243444546" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "37453:6:11", + "nodeType": "YulIdentifier", + "src": "37453:6:11" + }, + "nativeSrc": "37453:48:11", + "nodeType": "YulFunctionCall", + "src": "37453:48:11" + }, + "nativeSrc": "37453:48:11", + "nodeType": "YulExpressionStatement", + "src": "37453:48:11" + }, + { + "nativeSrc": "37514:26:11", + "nodeType": "YulVariableDeclaration", + "src": "37514:26:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "37527:6:11", + "nodeType": "YulIdentifier", + "src": "37527:6:11" + }, + { + "kind": "number", + "nativeSrc": "37535:4:11", + "nodeType": "YulLiteral", + "src": "37535:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "37523:3:11", + "nodeType": "YulIdentifier", + "src": "37523:3:11" + }, + "nativeSrc": "37523:17:11", + "nodeType": "YulFunctionCall", + "src": "37523:17:11" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "37518:1:11", + "nodeType": "YulTypedName", + "src": "37518:1:11", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "37611:537:11", + "nodeType": "YulBlock", + "src": "37611:537:11", + "statements": [ + { + "nativeSrc": "37629:14:11", + "nodeType": "YulAssignment", + "src": "37629:14:11", + "value": { + "arguments": [ + { + "name": "s", + "nativeSrc": "37638:1:11", + "nodeType": "YulIdentifier", + "src": "37638:1:11" + }, + { + "kind": "number", + "nativeSrc": "37641:1:11", + "nodeType": "YulLiteral", + "src": "37641:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "37634:3:11", + "nodeType": "YulIdentifier", + "src": "37634:3:11" + }, + "nativeSrc": "37634:9:11", + "nodeType": "YulFunctionCall", + "src": "37634:9:11" + }, + "variableNames": [ + { + "name": "s", + "nativeSrc": "37629:1:11", + "nodeType": "YulIdentifier", + "src": "37629:1:11" + } + ] + }, + { + "nativeSrc": "37660:28:11", + "nodeType": "YulVariableDeclaration", + "src": "37660:28:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "s", + "nativeSrc": "37679:1:11", + "nodeType": "YulIdentifier", + "src": "37679:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "37673:5:11", + "nodeType": "YulIdentifier", + "src": "37673:5:11" + }, + "nativeSrc": "37673:8:11", + "nodeType": "YulFunctionCall", + "src": "37673:8:11" + }, + { + "kind": "number", + "nativeSrc": "37683:4:11", + "nodeType": "YulLiteral", + "src": "37683:4:11", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "37669:3:11", + "nodeType": "YulIdentifier", + "src": "37669:3:11" + }, + "nativeSrc": "37669:19:11", + "nodeType": "YulFunctionCall", + "src": "37669:19:11" + }, + "variables": [ + { + "name": "c", + "nativeSrc": "37664:1:11", + "nodeType": "YulTypedName", + "src": "37664:1:11", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "37821:252:11", + "nodeType": "YulBlock", + "src": "37821:252:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "37851:1:11", + "nodeType": "YulIdentifier", + "src": "37851:1:11" + }, + { + "kind": "number", + "nativeSrc": "37854:4:11", + "nodeType": "YulLiteral", + "src": "37854:4:11", + "type": "", + "value": "0x25" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "37843:7:11", + "nodeType": "YulIdentifier", + "src": "37843:7:11" + }, + "nativeSrc": "37843:16:11", + "nodeType": "YulFunctionCall", + "src": "37843:16:11" + }, + "nativeSrc": "37843:16:11", + "nodeType": "YulExpressionStatement", + "src": "37843:16:11" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "37900:1:11", + "nodeType": "YulIdentifier", + "src": "37900:1:11" + }, + { + "kind": "number", + "nativeSrc": "37903:1:11", + "nodeType": "YulLiteral", + "src": "37903:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "37896:3:11", + "nodeType": "YulIdentifier", + "src": "37896:3:11" + }, + "nativeSrc": "37896:9:11", + "nodeType": "YulFunctionCall", + "src": "37896:9:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "37921:1:11", + "nodeType": "YulLiteral", + "src": "37921:1:11", + "type": "", + "value": "4" + }, + { + "name": "c", + "nativeSrc": "37924:1:11", + "nodeType": "YulIdentifier", + "src": "37924:1:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "37917:3:11", + "nodeType": "YulIdentifier", + "src": "37917:3:11" + }, + "nativeSrc": "37917:9:11", + "nodeType": "YulFunctionCall", + "src": "37917:9:11" + }, + { + "kind": "number", + "nativeSrc": "37928:2:11", + "nodeType": "YulLiteral", + "src": "37928:2:11", + "type": "", + "value": "15" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "37913:3:11", + "nodeType": "YulIdentifier", + "src": "37913:3:11" + }, + "nativeSrc": "37913:18:11", + "nodeType": "YulFunctionCall", + "src": "37913:18:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "37907:5:11", + "nodeType": "YulIdentifier", + "src": "37907:5:11" + }, + "nativeSrc": "37907:25:11", + "nodeType": "YulFunctionCall", + "src": "37907:25:11" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "37888:7:11", + "nodeType": "YulIdentifier", + "src": "37888:7:11" + }, + "nativeSrc": "37888:45:11", + "nodeType": "YulFunctionCall", + "src": "37888:45:11" + }, + "nativeSrc": "37888:45:11", + "nodeType": "YulExpressionStatement", + "src": "37888:45:11" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "37966:1:11", + "nodeType": "YulIdentifier", + "src": "37966:1:11" + }, + { + "kind": "number", + "nativeSrc": "37969:1:11", + "nodeType": "YulLiteral", + "src": "37969:1:11", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "37962:3:11", + "nodeType": "YulIdentifier", + "src": "37962:3:11" + }, + "nativeSrc": "37962:9:11", + "nodeType": "YulFunctionCall", + "src": "37962:9:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "37983:1:11", + "nodeType": "YulIdentifier", + "src": "37983:1:11" + }, + { + "kind": "number", + "nativeSrc": "37986:2:11", + "nodeType": "YulLiteral", + "src": "37986:2:11", + "type": "", + "value": "15" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "37979:3:11", + "nodeType": "YulIdentifier", + "src": "37979:3:11" + }, + "nativeSrc": "37979:10:11", + "nodeType": "YulFunctionCall", + "src": "37979:10:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "37973:5:11", + "nodeType": "YulIdentifier", + "src": "37973:5:11" + }, + "nativeSrc": "37973:17:11", + "nodeType": "YulFunctionCall", + "src": "37973:17:11" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "37954:7:11", + "nodeType": "YulIdentifier", + "src": "37954:7:11" + }, + "nativeSrc": "37954:37:11", + "nodeType": "YulFunctionCall", + "src": "37954:37:11" + }, + "nativeSrc": "37954:37:11", + "nodeType": "YulExpressionStatement", + "src": "37954:37:11" + }, + { + "nativeSrc": "38012:14:11", + "nodeType": "YulAssignment", + "src": "38012:14:11", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "38021:1:11", + "nodeType": "YulIdentifier", + "src": "38021:1:11" + }, + { + "kind": "number", + "nativeSrc": "38024:1:11", + "nodeType": "YulLiteral", + "src": "38024:1:11", + "type": "", + "value": "3" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "38017:3:11", + "nodeType": "YulIdentifier", + "src": "38017:3:11" + }, + "nativeSrc": "38017:9:11", + "nodeType": "YulFunctionCall", + "src": "38017:9:11" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "38012:1:11", + "nodeType": "YulIdentifier", + "src": "38012:1:11" + } + ] + }, + { + "nativeSrc": "38047:8:11", + "nodeType": "YulContinue", + "src": "38047:8:11" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "37773:1:11", + "nodeType": "YulLiteral", + "src": "37773:1:11", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "name": "c", + "nativeSrc": "37780:1:11", + "nodeType": "YulIdentifier", + "src": "37780:1:11" + }, + { + "kind": "number", + "nativeSrc": "37783:34:11", + "nodeType": "YulLiteral", + "src": "37783:34:11", + "type": "", + "value": "0x47fffffe87fffffe03ff678200000000" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "37776:3:11", + "nodeType": "YulIdentifier", + "src": "37776:3:11" + }, + "nativeSrc": "37776:42:11", + "nodeType": "YulFunctionCall", + "src": "37776:42:11" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "37769:3:11", + "nodeType": "YulIdentifier", + "src": "37769:3:11" + }, + "nativeSrc": "37769:50:11", + "nodeType": "YulFunctionCall", + "src": "37769:50:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "37762:6:11", + "nodeType": "YulIdentifier", + "src": "37762:6:11" + }, + "nativeSrc": "37762:58:11", + "nodeType": "YulFunctionCall", + "src": "37762:58:11" + }, + "nativeSrc": "37759:314:11", + "nodeType": "YulIf", + "src": "37759:314:11" + }, + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "38098:1:11", + "nodeType": "YulIdentifier", + "src": "38098:1:11" + }, + { + "name": "c", + "nativeSrc": "38101:1:11", + "nodeType": "YulIdentifier", + "src": "38101:1:11" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "38090:7:11", + "nodeType": "YulIdentifier", + "src": "38090:7:11" + }, + "nativeSrc": "38090:13:11", + "nodeType": "YulFunctionCall", + "src": "38090:13:11" + }, + "nativeSrc": "38090:13:11", + "nodeType": "YulExpressionStatement", + "src": "38090:13:11" + }, + { + "nativeSrc": "38120:14:11", + "nodeType": "YulAssignment", + "src": "38120:14:11", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "38129:1:11", + "nodeType": "YulIdentifier", + "src": "38129:1:11" + }, + { + "kind": "number", + "nativeSrc": "38132:1:11", + "nodeType": "YulLiteral", + "src": "38132:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "38125:3:11", + "nodeType": "YulIdentifier", + "src": "38125:3:11" + }, + "nativeSrc": "38125:9:11", + "nodeType": "YulFunctionCall", + "src": "38125:9:11" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "38120:1:11", + "nodeType": "YulIdentifier", + "src": "38120:1:11" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "s", + "nativeSrc": "37599:1:11", + "nodeType": "YulIdentifier", + "src": "37599:1:11" + }, + { + "name": "end", + "nativeSrc": "37602:3:11", + "nodeType": "YulIdentifier", + "src": "37602:3:11" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "37596:2:11", + "nodeType": "YulIdentifier", + "src": "37596:2:11" + }, + "nativeSrc": "37596:10:11", + "nodeType": "YulFunctionCall", + "src": "37596:10:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "37589:6:11", + "nodeType": "YulIdentifier", + "src": "37589:6:11" + }, + "nativeSrc": "37589:18:11", + "nodeType": "YulFunctionCall", + "src": "37589:18:11" + }, + "nativeSrc": "37553:595:11", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "37608:2:11", + "nodeType": "YulBlock", + "src": "37608:2:11", + "statements": [] + }, + "pre": { + "nativeSrc": "37557:31:11", + "nodeType": "YulBlock", + "src": "37557:31:11", + "statements": [ + { + "nativeSrc": "37559:27:11", + "nodeType": "YulVariableDeclaration", + "src": "37559:27:11", + "value": { + "arguments": [ + { + "name": "s", + "nativeSrc": "37574:1:11", + "nodeType": "YulIdentifier", + "src": "37574:1:11" + }, + { + "arguments": [ + { + "name": "s", + "nativeSrc": "37583:1:11", + "nodeType": "YulIdentifier", + "src": "37583:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "37577:5:11", + "nodeType": "YulIdentifier", + "src": "37577:5:11" + }, + "nativeSrc": "37577:8:11", + "nodeType": "YulFunctionCall", + "src": "37577:8:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "37570:3:11", + "nodeType": "YulIdentifier", + "src": "37570:3:11" + }, + "nativeSrc": "37570:16:11", + "nodeType": "YulFunctionCall", + "src": "37570:16:11" + }, + "variables": [ + { + "name": "end", + "nativeSrc": "37563:3:11", + "nodeType": "YulTypedName", + "src": "37563:3:11", + "type": "" + } + ] + } + ] + }, + "src": "37553:595:11" + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "38168:6:11", + "nodeType": "YulIdentifier", + "src": "38168:6:11" + }, + { + "arguments": [ + { + "name": "o", + "nativeSrc": "38180:1:11", + "nodeType": "YulIdentifier", + "src": "38180:1:11" + }, + { + "arguments": [ + { + "name": "result", + "nativeSrc": "38187:6:11", + "nodeType": "YulIdentifier", + "src": "38187:6:11" + }, + { + "kind": "number", + "nativeSrc": "38195:4:11", + "nodeType": "YulLiteral", + "src": "38195:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "38183:3:11", + "nodeType": "YulIdentifier", + "src": "38183:3:11" + }, + "nativeSrc": "38183:17:11", + "nodeType": "YulFunctionCall", + "src": "38183:17:11" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "38176:3:11", + "nodeType": "YulIdentifier", + "src": "38176:3:11" + }, + "nativeSrc": "38176:25:11", + "nodeType": "YulFunctionCall", + "src": "38176:25:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "38161:6:11", + "nodeType": "YulIdentifier", + "src": "38161:6:11" + }, + "nativeSrc": "38161:41:11", + "nodeType": "YulFunctionCall", + "src": "38161:41:11" + }, + "nativeSrc": "38161:41:11", + "nodeType": "YulExpressionStatement", + "src": "38161:41:11" + }, + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "38243:1:11", + "nodeType": "YulIdentifier", + "src": "38243:1:11" + }, + { + "kind": "number", + "nativeSrc": "38246:1:11", + "nodeType": "YulLiteral", + "src": "38246:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "38236:6:11", + "nodeType": "YulIdentifier", + "src": "38236:6:11" + }, + "nativeSrc": "38236:12:11", + "nodeType": "YulFunctionCall", + "src": "38236:12:11" + }, + "nativeSrc": "38236:12:11", + "nodeType": "YulExpressionStatement", + "src": "38236:12:11" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "38306:4:11", + "nodeType": "YulLiteral", + "src": "38306:4:11", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "o", + "nativeSrc": "38316:1:11", + "nodeType": "YulIdentifier", + "src": "38316:1:11" + }, + { + "kind": "number", + "nativeSrc": "38319:4:11", + "nodeType": "YulLiteral", + "src": "38319:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "38312:3:11", + "nodeType": "YulIdentifier", + "src": "38312:3:11" + }, + "nativeSrc": "38312:12:11", + "nodeType": "YulFunctionCall", + "src": "38312:12:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "38299:6:11", + "nodeType": "YulIdentifier", + "src": "38299:6:11" + }, + "nativeSrc": "38299:26:11", + "nodeType": "YulFunctionCall", + "src": "38299:26:11" + }, + "nativeSrc": "38299:26:11", + "nodeType": "YulExpressionStatement", + "src": "38299:26:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6041, + "isOffset": false, + "isSlot": false, + "src": "37284:6:11", + "valueSize": 1 + }, + { + "declaration": 6041, + "isOffset": false, + "isSlot": false, + "src": "37527:6:11", + "valueSize": 1 + }, + { + "declaration": 6041, + "isOffset": false, + "isSlot": false, + "src": "38168:6:11", + "valueSize": 1 + }, + { + "declaration": 6041, + "isOffset": false, + "isSlot": false, + "src": "38187:6:11", + "valueSize": 1 + }, + { + "declaration": 6038, + "isOffset": false, + "isSlot": false, + "src": "37574:1:11", + "valueSize": 1 + }, + { + "declaration": 6038, + "isOffset": false, + "isSlot": false, + "src": "37583:1:11", + "valueSize": 1 + }, + { + "declaration": 6038, + "isOffset": false, + "isSlot": false, + "src": "37599:1:11", + "valueSize": 1 + }, + { + "declaration": 6038, + "isOffset": false, + "isSlot": false, + "src": "37629:1:11", + "valueSize": 1 + }, + { + "declaration": 6038, + "isOffset": false, + "isSlot": false, + "src": "37638:1:11", + "valueSize": 1 + }, + { + "declaration": 6038, + "isOffset": false, + "isSlot": false, + "src": "37679:1:11", + "valueSize": 1 + } + ], + "id": 6043, + "nodeType": "InlineAssembly", + "src": "37261:1094:11" + } + ] + }, + "documentation": { + "id": 6036, + "nodeType": "StructuredDocumentation", + "src": "36768:345:11", + "text": "@dev Encodes `s` so that it can be safely used in a URI,\n just like `encodeURIComponent` in JavaScript.\n See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent\n See: https://datatracker.ietf.org/doc/html/rfc2396\n See: https://datatracker.ietf.org/doc/html/rfc3986" + }, + "id": 6045, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "encodeURIComponent", + "nameLocation": "37127:18:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6039, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6038, + "mutability": "mutable", + "name": "s", + "nameLocation": "37160:1:11", + "nodeType": "VariableDeclaration", + "scope": 6045, + "src": "37146:15:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6037, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "37146:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "37145:17:11" + }, + "returnParameters": { + "id": 6042, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6041, + "mutability": "mutable", + "name": "result", + "nameLocation": "37200:6:11", + "nodeType": "VariableDeclaration", + "scope": 6045, + "src": "37186:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6040, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "37186:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "37185:22:11" + }, + "scope": 6145, + "src": "37118:1243:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6056, + "nodeType": "Block", + "src": "38494:174:11", + "statements": [ + { + "AST": { + "nativeSrc": "38556:106:11", + "nodeType": "YulBlock", + "src": "38556:106:11", + "statements": [ + { + "nativeSrc": "38570:82:11", + "nodeType": "YulAssignment", + "src": "38570:82:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "a", + "nativeSrc": "38597:1:11", + "nodeType": "YulIdentifier", + "src": "38597:1:11" + }, + { + "kind": "number", + "nativeSrc": "38600:4:11", + "nodeType": "YulLiteral", + "src": "38600:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "38593:3:11", + "nodeType": "YulIdentifier", + "src": "38593:3:11" + }, + "nativeSrc": "38593:12:11", + "nodeType": "YulFunctionCall", + "src": "38593:12:11" + }, + { + "arguments": [ + { + "name": "a", + "nativeSrc": "38613:1:11", + "nodeType": "YulIdentifier", + "src": "38613:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "38607:5:11", + "nodeType": "YulIdentifier", + "src": "38607:5:11" + }, + "nativeSrc": "38607:8:11", + "nodeType": "YulFunctionCall", + "src": "38607:8:11" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "38583:9:11", + "nodeType": "YulIdentifier", + "src": "38583:9:11" + }, + "nativeSrc": "38583:33:11", + "nodeType": "YulFunctionCall", + "src": "38583:33:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "b", + "nativeSrc": "38632:1:11", + "nodeType": "YulIdentifier", + "src": "38632:1:11" + }, + { + "kind": "number", + "nativeSrc": "38635:4:11", + "nodeType": "YulLiteral", + "src": "38635:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "38628:3:11", + "nodeType": "YulIdentifier", + "src": "38628:3:11" + }, + "nativeSrc": "38628:12:11", + "nodeType": "YulFunctionCall", + "src": "38628:12:11" + }, + { + "arguments": [ + { + "name": "b", + "nativeSrc": "38648:1:11", + "nodeType": "YulIdentifier", + "src": "38648:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "38642:5:11", + "nodeType": "YulIdentifier", + "src": "38642:5:11" + }, + "nativeSrc": "38642:8:11", + "nodeType": "YulFunctionCall", + "src": "38642:8:11" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "38618:9:11", + "nodeType": "YulIdentifier", + "src": "38618:9:11" + }, + "nativeSrc": "38618:33:11", + "nodeType": "YulFunctionCall", + "src": "38618:33:11" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "38580:2:11", + "nodeType": "YulIdentifier", + "src": "38580:2:11" + }, + "nativeSrc": "38580:72:11", + "nodeType": "YulFunctionCall", + "src": "38580:72:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "38570:6:11", + "nodeType": "YulIdentifier", + "src": "38570:6:11" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6048, + "isOffset": false, + "isSlot": false, + "src": "38597:1:11", + "valueSize": 1 + }, + { + "declaration": 6048, + "isOffset": false, + "isSlot": false, + "src": "38613:1:11", + "valueSize": 1 + }, + { + "declaration": 6050, + "isOffset": false, + "isSlot": false, + "src": "38632:1:11", + "valueSize": 1 + }, + { + "declaration": 6050, + "isOffset": false, + "isSlot": false, + "src": "38648:1:11", + "valueSize": 1 + }, + { + "declaration": 6053, + "isOffset": false, + "isSlot": false, + "src": "38570:6:11", + "valueSize": 1 + } + ], + "id": 6055, + "nodeType": "InlineAssembly", + "src": "38547:115:11" + } + ] + }, + "documentation": { + "id": 6046, + "nodeType": "StructuredDocumentation", + "src": "38367:40:11", + "text": "@dev Returns whether `a` equals `b`." + }, + "id": 6057, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "eq", + "nameLocation": "38421:2:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6051, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6048, + "mutability": "mutable", + "name": "a", + "nameLocation": "38438:1:11", + "nodeType": "VariableDeclaration", + "scope": 6057, + "src": "38424:15:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6047, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "38424:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6050, + "mutability": "mutable", + "name": "b", + "nameLocation": "38455:1:11", + "nodeType": "VariableDeclaration", + "scope": 6057, + "src": "38441:15:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6049, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "38441:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "38423:34:11" + }, + "returnParameters": { + "id": 6054, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6053, + "mutability": "mutable", + "name": "result", + "nameLocation": "38486:6:11", + "nodeType": "VariableDeclaration", + "scope": 6057, + "src": "38481:11:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6052, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "38481:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "38480:13:11" + }, + "scope": 6145, + "src": "38412:256:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6068, + "nodeType": "Block", + "src": "38841:774:11", + "statements": [ + { + "AST": { + "nativeSrc": "38903:706:11", + "nodeType": "YulBlock", + "src": "38903:706:11", + "statements": [ + { + "nativeSrc": "38995:46:11", + "nodeType": "YulVariableDeclaration", + "src": "38995:46:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "39012:1:11", + "nodeType": "YulLiteral", + "src": "39012:1:11", + "type": "", + "value": "7" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "b", + "nativeSrc": "39030:1:11", + "nodeType": "YulIdentifier", + "src": "39030:1:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "39023:6:11", + "nodeType": "YulIdentifier", + "src": "39023:6:11" + }, + "nativeSrc": "39023:9:11", + "nodeType": "YulFunctionCall", + "src": "39023:9:11" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "39019:3:11", + "nodeType": "YulIdentifier", + "src": "39019:3:11" + }, + "nativeSrc": "39019:14:11", + "nodeType": "YulFunctionCall", + "src": "39019:14:11" + }, + { + "kind": "number", + "nativeSrc": "39035:3:11", + "nodeType": "YulLiteral", + "src": "39035:3:11", + "type": "", + "value": "255" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "39015:3:11", + "nodeType": "YulIdentifier", + "src": "39015:3:11" + }, + "nativeSrc": "39015:24:11", + "nodeType": "YulFunctionCall", + "src": "39015:24:11" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "39008:3:11", + "nodeType": "YulIdentifier", + "src": "39008:3:11" + }, + "nativeSrc": "39008:32:11", + "nodeType": "YulFunctionCall", + "src": "39008:32:11" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "39004:3:11", + "nodeType": "YulIdentifier", + "src": "39004:3:11" + }, + "nativeSrc": "39004:37:11", + "nodeType": "YulFunctionCall", + "src": "39004:37:11" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "38999:1:11", + "nodeType": "YulTypedName", + "src": "38999:1:11", + "type": "" + } + ] + }, + { + "nativeSrc": "39071:45:11", + "nodeType": "YulVariableDeclaration", + "src": "39071:45:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "39087:1:11", + "nodeType": "YulIdentifier", + "src": "39087:1:11" + }, + { + "arguments": [ + { + "name": "b", + "nativeSrc": "39093:1:11", + "nodeType": "YulIdentifier", + "src": "39093:1:11" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "39100:1:11", + "nodeType": "YulIdentifier", + "src": "39100:1:11" + }, + { + "arguments": [ + { + "name": "b", + "nativeSrc": "39107:1:11", + "nodeType": "YulIdentifier", + "src": "39107:1:11" + }, + { + "name": "m", + "nativeSrc": "39110:1:11", + "nodeType": "YulIdentifier", + "src": "39110:1:11" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "39103:3:11", + "nodeType": "YulIdentifier", + "src": "39103:3:11" + }, + "nativeSrc": "39103:9:11", + "nodeType": "YulFunctionCall", + "src": "39103:9:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "39096:3:11", + "nodeType": "YulIdentifier", + "src": "39096:3:11" + }, + "nativeSrc": "39096:17:11", + "nodeType": "YulFunctionCall", + "src": "39096:17:11" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "39090:2:11", + "nodeType": "YulIdentifier", + "src": "39090:2:11" + }, + "nativeSrc": "39090:24:11", + "nodeType": "YulFunctionCall", + "src": "39090:24:11" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "39084:2:11", + "nodeType": "YulIdentifier", + "src": "39084:2:11" + }, + "nativeSrc": "39084:31:11", + "nodeType": "YulFunctionCall", + "src": "39084:31:11" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "39080:3:11", + "nodeType": "YulIdentifier", + "src": "39080:3:11" + }, + "nativeSrc": "39080:36:11", + "nodeType": "YulFunctionCall", + "src": "39080:36:11" + }, + "variables": [ + { + "name": "x", + "nativeSrc": "39075:1:11", + "nodeType": "YulTypedName", + "src": "39075:1:11", + "type": "" + } + ] + }, + { + "nativeSrc": "39129:44:11", + "nodeType": "YulVariableDeclaration", + "src": "39129:44:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "39142:1:11", + "nodeType": "YulLiteral", + "src": "39142:1:11", + "type": "", + "value": "7" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "39163:3:11", + "nodeType": "YulLiteral", + "src": "39163:3:11", + "type": "", + "value": "128" + }, + { + "name": "x", + "nativeSrc": "39168:1:11", + "nodeType": "YulIdentifier", + "src": "39168:1:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "39159:3:11", + "nodeType": "YulIdentifier", + "src": "39159:3:11" + }, + "nativeSrc": "39159:11:11", + "nodeType": "YulFunctionCall", + "src": "39159:11:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "39152:6:11", + "nodeType": "YulIdentifier", + "src": "39152:6:11" + }, + "nativeSrc": "39152:19:11", + "nodeType": "YulFunctionCall", + "src": "39152:19:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "39145:6:11", + "nodeType": "YulIdentifier", + "src": "39145:6:11" + }, + "nativeSrc": "39145:27:11", + "nodeType": "YulFunctionCall", + "src": "39145:27:11" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "39138:3:11", + "nodeType": "YulIdentifier", + "src": "39138:3:11" + }, + "nativeSrc": "39138:35:11", + "nodeType": "YulFunctionCall", + "src": "39138:35:11" + }, + "variables": [ + { + "name": "r", + "nativeSrc": "39133:1:11", + "nodeType": "YulTypedName", + "src": "39133:1:11", + "type": "" + } + ] + }, + { + "nativeSrc": "39186:54:11", + "nodeType": "YulAssignment", + "src": "39186:54:11", + "value": { + "arguments": [ + { + "name": "r", + "nativeSrc": "39194:1:11", + "nodeType": "YulIdentifier", + "src": "39194:1:11" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "39201:1:11", + "nodeType": "YulLiteral", + "src": "39201:1:11", + "type": "", + "value": "6" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "39222:2:11", + "nodeType": "YulLiteral", + "src": "39222:2:11", + "type": "", + "value": "64" + }, + { + "arguments": [ + { + "name": "r", + "nativeSrc": "39230:1:11", + "nodeType": "YulIdentifier", + "src": "39230:1:11" + }, + { + "name": "x", + "nativeSrc": "39233:1:11", + "nodeType": "YulIdentifier", + "src": "39233:1:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "39226:3:11", + "nodeType": "YulIdentifier", + "src": "39226:3:11" + }, + "nativeSrc": "39226:9:11", + "nodeType": "YulFunctionCall", + "src": "39226:9:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "39218:3:11", + "nodeType": "YulIdentifier", + "src": "39218:3:11" + }, + "nativeSrc": "39218:18:11", + "nodeType": "YulFunctionCall", + "src": "39218:18:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "39211:6:11", + "nodeType": "YulIdentifier", + "src": "39211:6:11" + }, + "nativeSrc": "39211:26:11", + "nodeType": "YulFunctionCall", + "src": "39211:26:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "39204:6:11", + "nodeType": "YulIdentifier", + "src": "39204:6:11" + }, + "nativeSrc": "39204:34:11", + "nodeType": "YulFunctionCall", + "src": "39204:34:11" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "39197:3:11", + "nodeType": "YulIdentifier", + "src": "39197:3:11" + }, + "nativeSrc": "39197:42:11", + "nodeType": "YulFunctionCall", + "src": "39197:42:11" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "39191:2:11", + "nodeType": "YulIdentifier", + "src": "39191:2:11" + }, + "nativeSrc": "39191:49:11", + "nodeType": "YulFunctionCall", + "src": "39191:49:11" + }, + "variableNames": [ + { + "name": "r", + "nativeSrc": "39186:1:11", + "nodeType": "YulIdentifier", + "src": "39186:1:11" + } + ] + }, + { + "nativeSrc": "39253:45:11", + "nodeType": "YulAssignment", + "src": "39253:45:11", + "value": { + "arguments": [ + { + "name": "r", + "nativeSrc": "39261:1:11", + "nodeType": "YulIdentifier", + "src": "39261:1:11" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "39268:1:11", + "nodeType": "YulLiteral", + "src": "39268:1:11", + "type": "", + "value": "5" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "39274:10:11", + "nodeType": "YulLiteral", + "src": "39274:10:11", + "type": "", + "value": "0xffffffff" + }, + { + "arguments": [ + { + "name": "r", + "nativeSrc": "39290:1:11", + "nodeType": "YulIdentifier", + "src": "39290:1:11" + }, + { + "name": "x", + "nativeSrc": "39293:1:11", + "nodeType": "YulIdentifier", + "src": "39293:1:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "39286:3:11", + "nodeType": "YulIdentifier", + "src": "39286:3:11" + }, + "nativeSrc": "39286:9:11", + "nodeType": "YulFunctionCall", + "src": "39286:9:11" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "39271:2:11", + "nodeType": "YulIdentifier", + "src": "39271:2:11" + }, + "nativeSrc": "39271:25:11", + "nodeType": "YulFunctionCall", + "src": "39271:25:11" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "39264:3:11", + "nodeType": "YulIdentifier", + "src": "39264:3:11" + }, + "nativeSrc": "39264:33:11", + "nodeType": "YulFunctionCall", + "src": "39264:33:11" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "39258:2:11", + "nodeType": "YulIdentifier", + "src": "39258:2:11" + }, + "nativeSrc": "39258:40:11", + "nodeType": "YulFunctionCall", + "src": "39258:40:11" + }, + "variableNames": [ + { + "name": "r", + "nativeSrc": "39253:1:11", + "nodeType": "YulIdentifier", + "src": "39253:1:11" + } + ] + }, + { + "nativeSrc": "39311:41:11", + "nodeType": "YulAssignment", + "src": "39311:41:11", + "value": { + "arguments": [ + { + "name": "r", + "nativeSrc": "39319:1:11", + "nodeType": "YulIdentifier", + "src": "39319:1:11" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "39326:1:11", + "nodeType": "YulLiteral", + "src": "39326:1:11", + "type": "", + "value": "4" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "39332:6:11", + "nodeType": "YulLiteral", + "src": "39332:6:11", + "type": "", + "value": "0xffff" + }, + { + "arguments": [ + { + "name": "r", + "nativeSrc": "39344:1:11", + "nodeType": "YulIdentifier", + "src": "39344:1:11" + }, + { + "name": "x", + "nativeSrc": "39347:1:11", + "nodeType": "YulIdentifier", + "src": "39347:1:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "39340:3:11", + "nodeType": "YulIdentifier", + "src": "39340:3:11" + }, + "nativeSrc": "39340:9:11", + "nodeType": "YulFunctionCall", + "src": "39340:9:11" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "39329:2:11", + "nodeType": "YulIdentifier", + "src": "39329:2:11" + }, + "nativeSrc": "39329:21:11", + "nodeType": "YulFunctionCall", + "src": "39329:21:11" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "39322:3:11", + "nodeType": "YulIdentifier", + "src": "39322:3:11" + }, + "nativeSrc": "39322:29:11", + "nodeType": "YulFunctionCall", + "src": "39322:29:11" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "39316:2:11", + "nodeType": "YulIdentifier", + "src": "39316:2:11" + }, + "nativeSrc": "39316:36:11", + "nodeType": "YulFunctionCall", + "src": "39316:36:11" + }, + "variableNames": [ + { + "name": "r", + "nativeSrc": "39311:1:11", + "nodeType": "YulIdentifier", + "src": "39311:1:11" + } + ] + }, + { + "nativeSrc": "39365:39:11", + "nodeType": "YulAssignment", + "src": "39365:39:11", + "value": { + "arguments": [ + { + "name": "r", + "nativeSrc": "39373:1:11", + "nodeType": "YulIdentifier", + "src": "39373:1:11" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "39380:1:11", + "nodeType": "YulLiteral", + "src": "39380:1:11", + "type": "", + "value": "3" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "39386:4:11", + "nodeType": "YulLiteral", + "src": "39386:4:11", + "type": "", + "value": "0xff" + }, + { + "arguments": [ + { + "name": "r", + "nativeSrc": "39396:1:11", + "nodeType": "YulIdentifier", + "src": "39396:1:11" + }, + { + "name": "x", + "nativeSrc": "39399:1:11", + "nodeType": "YulIdentifier", + "src": "39399:1:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "39392:3:11", + "nodeType": "YulIdentifier", + "src": "39392:3:11" + }, + "nativeSrc": "39392:9:11", + "nodeType": "YulFunctionCall", + "src": "39392:9:11" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "39383:2:11", + "nodeType": "YulIdentifier", + "src": "39383:2:11" + }, + "nativeSrc": "39383:19:11", + "nodeType": "YulFunctionCall", + "src": "39383:19:11" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "39376:3:11", + "nodeType": "YulIdentifier", + "src": "39376:3:11" + }, + "nativeSrc": "39376:27:11", + "nodeType": "YulFunctionCall", + "src": "39376:27:11" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "39370:2:11", + "nodeType": "YulIdentifier", + "src": "39370:2:11" + }, + "nativeSrc": "39370:34:11", + "nodeType": "YulFunctionCall", + "src": "39370:34:11" + }, + "variableNames": [ + { + "name": "r", + "nativeSrc": "39365:1:11", + "nodeType": "YulIdentifier", + "src": "39365:1:11" + } + ] + }, + { + "nativeSrc": "39460:139:11", + "nodeType": "YulAssignment", + "src": "39460:139:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "a", + "nativeSrc": "39482:1:11", + "nodeType": "YulIdentifier", + "src": "39482:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "39476:5:11", + "nodeType": "YulIdentifier", + "src": "39476:5:11" + }, + "nativeSrc": "39476:8:11", + "nodeType": "YulFunctionCall", + "src": "39476:8:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "x", + "nativeSrc": "39497:1:11", + "nodeType": "YulIdentifier", + "src": "39497:1:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "39490:6:11", + "nodeType": "YulIdentifier", + "src": "39490:6:11" + }, + "nativeSrc": "39490:9:11", + "nodeType": "YulFunctionCall", + "src": "39490:9:11" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "39505:2:11", + "nodeType": "YulLiteral", + "src": "39505:2:11", + "type": "", + "value": "31" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "39513:1:11", + "nodeType": "YulLiteral", + "src": "39513:1:11", + "type": "", + "value": "3" + }, + { + "name": "r", + "nativeSrc": "39516:1:11", + "nodeType": "YulIdentifier", + "src": "39516:1:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "39509:3:11", + "nodeType": "YulIdentifier", + "src": "39509:3:11" + }, + "nativeSrc": "39509:9:11", + "nodeType": "YulFunctionCall", + "src": "39509:9:11" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "39501:3:11", + "nodeType": "YulIdentifier", + "src": "39501:3:11" + }, + "nativeSrc": "39501:18:11", + "nodeType": "YulFunctionCall", + "src": "39501:18:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "39486:3:11", + "nodeType": "YulIdentifier", + "src": "39486:3:11" + }, + "nativeSrc": "39486:34:11", + "nodeType": "YulFunctionCall", + "src": "39486:34:11" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "39473:2:11", + "nodeType": "YulIdentifier", + "src": "39473:2:11" + }, + "nativeSrc": "39473:48:11", + "nodeType": "YulFunctionCall", + "src": "39473:48:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "39551:1:11", + "nodeType": "YulLiteral", + "src": "39551:1:11", + "type": "", + "value": "8" + }, + { + "name": "r", + "nativeSrc": "39554:1:11", + "nodeType": "YulIdentifier", + "src": "39554:1:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "39547:3:11", + "nodeType": "YulIdentifier", + "src": "39547:3:11" + }, + "nativeSrc": "39547:9:11", + "nodeType": "YulFunctionCall", + "src": "39547:9:11" + }, + { + "name": "b", + "nativeSrc": "39558:1:11", + "nodeType": "YulIdentifier", + "src": "39558:1:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "39543:3:11", + "nodeType": "YulIdentifier", + "src": "39543:3:11" + }, + "nativeSrc": "39543:17:11", + "nodeType": "YulFunctionCall", + "src": "39543:17:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "39570:1:11", + "nodeType": "YulLiteral", + "src": "39570:1:11", + "type": "", + "value": "8" + }, + { + "name": "r", + "nativeSrc": "39573:1:11", + "nodeType": "YulIdentifier", + "src": "39573:1:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "39566:3:11", + "nodeType": "YulIdentifier", + "src": "39566:3:11" + }, + "nativeSrc": "39566:9:11", + "nodeType": "YulFunctionCall", + "src": "39566:9:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "a", + "nativeSrc": "39587:1:11", + "nodeType": "YulIdentifier", + "src": "39587:1:11" + }, + { + "kind": "number", + "nativeSrc": "39590:4:11", + "nodeType": "YulLiteral", + "src": "39590:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "39583:3:11", + "nodeType": "YulIdentifier", + "src": "39583:3:11" + }, + "nativeSrc": "39583:12:11", + "nodeType": "YulFunctionCall", + "src": "39583:12:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "39577:5:11", + "nodeType": "YulIdentifier", + "src": "39577:5:11" + }, + "nativeSrc": "39577:19:11", + "nodeType": "YulFunctionCall", + "src": "39577:19:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "39562:3:11", + "nodeType": "YulIdentifier", + "src": "39562:3:11" + }, + "nativeSrc": "39562:35:11", + "nodeType": "YulFunctionCall", + "src": "39562:35:11" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "39539:3:11", + "nodeType": "YulIdentifier", + "src": "39539:3:11" + }, + "nativeSrc": "39539:59:11", + "nodeType": "YulFunctionCall", + "src": "39539:59:11" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "39470:2:11", + "nodeType": "YulIdentifier", + "src": "39470:2:11" + }, + "nativeSrc": "39470:129:11", + "nodeType": "YulFunctionCall", + "src": "39470:129:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "39460:6:11", + "nodeType": "YulIdentifier", + "src": "39460:6:11" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6060, + "isOffset": false, + "isSlot": false, + "src": "39482:1:11", + "valueSize": 1 + }, + { + "declaration": 6060, + "isOffset": false, + "isSlot": false, + "src": "39587:1:11", + "valueSize": 1 + }, + { + "declaration": 6062, + "isOffset": false, + "isSlot": false, + "src": "39030:1:11", + "valueSize": 1 + }, + { + "declaration": 6062, + "isOffset": false, + "isSlot": false, + "src": "39093:1:11", + "valueSize": 1 + }, + { + "declaration": 6062, + "isOffset": false, + "isSlot": false, + "src": "39107:1:11", + "valueSize": 1 + }, + { + "declaration": 6062, + "isOffset": false, + "isSlot": false, + "src": "39558:1:11", + "valueSize": 1 + }, + { + "declaration": 6065, + "isOffset": false, + "isSlot": false, + "src": "39460:6:11", + "valueSize": 1 + } + ], + "id": 6067, + "nodeType": "InlineAssembly", + "src": "38894:715:11" + } + ] + }, + "documentation": { + "id": 6058, + "nodeType": "StructuredDocumentation", + "src": "38674:85:11", + "text": "@dev Returns whether `a` equals `b`, where `b` is a null-terminated small string." + }, + "id": 6069, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "eqs", + "nameLocation": "38773:3:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6063, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6060, + "mutability": "mutable", + "name": "a", + "nameLocation": "38791:1:11", + "nodeType": "VariableDeclaration", + "scope": 6069, + "src": "38777:15:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6059, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "38777:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6062, + "mutability": "mutable", + "name": "b", + "nameLocation": "38802:1:11", + "nodeType": "VariableDeclaration", + "scope": 6069, + "src": "38794:9:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6061, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "38794:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "38776:28:11" + }, + "returnParameters": { + "id": 6066, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6065, + "mutability": "mutable", + "name": "result", + "nameLocation": "38833:6:11", + "nodeType": "VariableDeclaration", + "scope": 6069, + "src": "38828:11:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6064, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "38828:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "38827:13:11" + }, + "scope": 6145, + "src": "38764:851:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6091, + "nodeType": "Block", + "src": "39837:56:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 6083, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6072, + "src": "39873:1:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 6082, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "39867:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 6081, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "39867:5:11", + "typeDescriptions": {} + } + }, + "id": 6084, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "39867:8:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "arguments": [ + { + "id": 6087, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6074, + "src": "39883:1:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 6086, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "39877:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 6085, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "39877:5:11", + "typeDescriptions": {} + } + }, + "id": 6088, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "39877:8:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 6079, + "name": "LibBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "39854:8:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibBytes_$3089_$", + "typeString": "type(library LibBytes)" + } + }, + "id": 6080, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "39863:3:11", + "memberName": "cmp", + "nodeType": "MemberAccess", + "referencedDeclaration": 3003, + "src": "39854:12:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_int256_$", + "typeString": "function (bytes memory,bytes memory) pure returns (int256)" + } + }, + "id": 6089, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "39854:32:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "functionReturnParameters": 6078, + "id": 6090, + "nodeType": "Return", + "src": "39847:39:11" + } + ] + }, + "documentation": { + "id": 6070, + "nodeType": "StructuredDocumentation", + "src": "39621:133:11", + "text": "@dev Returns 0 if `a == b`, -1 if `a < b`, +1 if `a > b`.\n If `a` == b[:a.length]`, and `a.length < b.length`, returns -1." + }, + "id": 6092, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "cmp", + "nameLocation": "39768:3:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6075, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6072, + "mutability": "mutable", + "name": "a", + "nameLocation": "39786:1:11", + "nodeType": "VariableDeclaration", + "scope": 6092, + "src": "39772:15:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6071, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "39772:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6074, + "mutability": "mutable", + "name": "b", + "nameLocation": "39803:1:11", + "nodeType": "VariableDeclaration", + "scope": 6092, + "src": "39789:15:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6073, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "39789:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "39771:34:11" + }, + "returnParameters": { + "id": 6078, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6077, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6092, + "src": "39829:6:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 6076, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "39829:6:11", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "39828:8:11" + }, + "scope": 6145, + "src": "39759:134:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6101, + "nodeType": "Block", + "src": "40114:573:11", + "statements": [ + { + "AST": { + "nativeSrc": "40176:505:11", + "nodeType": "YulBlock", + "src": "40176:505:11", + "statements": [ + { + "nativeSrc": "40322:349:11", + "nodeType": "YulAssignment", + "src": "40322:349:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "a", + "nativeSrc": "40437:1:11", + "nodeType": "YulIdentifier", + "src": "40437:1:11" + }, + { + "kind": "number", + "nativeSrc": "40440:4:11", + "nodeType": "YulLiteral", + "src": "40440:4:11", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "40433:3:11", + "nodeType": "YulIdentifier", + "src": "40433:3:11" + }, + "nativeSrc": "40433:12:11", + "nodeType": "YulFunctionCall", + "src": "40433:12:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "40427:5:11", + "nodeType": "YulIdentifier", + "src": "40427:5:11" + }, + "nativeSrc": "40427:19:11", + "nodeType": "YulFunctionCall", + "src": "40427:19:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "a", + "nativeSrc": "40640:1:11", + "nodeType": "YulIdentifier", + "src": "40640:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "40634:5:11", + "nodeType": "YulIdentifier", + "src": "40634:5:11" + }, + "nativeSrc": "40634:8:11", + "nodeType": "YulFunctionCall", + "src": "40634:8:11" + }, + { + "kind": "number", + "nativeSrc": "40644:1:11", + "nodeType": "YulLiteral", + "src": "40644:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "40630:3:11", + "nodeType": "YulIdentifier", + "src": "40630:3:11" + }, + "nativeSrc": "40630:16:11", + "nodeType": "YulFunctionCall", + "src": "40630:16:11" + }, + { + "kind": "number", + "nativeSrc": "40648:4:11", + "nodeType": "YulLiteral", + "src": "40648:4:11", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "40627:2:11", + "nodeType": "YulIdentifier", + "src": "40627:2:11" + }, + "nativeSrc": "40627:26:11", + "nodeType": "YulFunctionCall", + "src": "40627:26:11" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "40348:3:11", + "nodeType": "YulIdentifier", + "src": "40348:3:11" + }, + "nativeSrc": "40348:323:11", + "nodeType": "YulFunctionCall", + "src": "40348:323:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "40322:6:11", + "nodeType": "YulIdentifier", + "src": "40322:6:11" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6095, + "isOffset": false, + "isSlot": false, + "src": "40437:1:11", + "valueSize": 1 + }, + { + "declaration": 6095, + "isOffset": false, + "isSlot": false, + "src": "40640:1:11", + "valueSize": 1 + }, + { + "declaration": 6098, + "isOffset": false, + "isSlot": false, + "src": "40322:6:11", + "valueSize": 1 + } + ], + "id": 6100, + "nodeType": "InlineAssembly", + "src": "40167:514:11" + } + ] + }, + "documentation": { + "id": 6093, + "nodeType": "StructuredDocumentation", + "src": "39899:137:11", + "text": "@dev Packs a single string with its length into a single word.\n Returns `bytes32(0)` if the length is zero or greater than 31." + }, + "id": 6102, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "packOne", + "nameLocation": "40050:7:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6096, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6095, + "mutability": "mutable", + "name": "a", + "nameLocation": "40072:1:11", + "nodeType": "VariableDeclaration", + "scope": 6102, + "src": "40058:15:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6094, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "40058:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "40057:17:11" + }, + "returnParameters": { + "id": 6099, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6098, + "mutability": "mutable", + "name": "result", + "nameLocation": "40106:6:11", + "nodeType": "VariableDeclaration", + "scope": 6102, + "src": "40098:14:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6097, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "40098:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "40097:16:11" + }, + "scope": 6145, + "src": "40041:646:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6111, + "nodeType": "Block", + "src": "40974:469:11", + "statements": [ + { + "AST": { + "nativeSrc": "41036:401:11", + "nodeType": "YulBlock", + "src": "41036:401:11", + "statements": [ + { + "nativeSrc": "41050:21:11", + "nodeType": "YulAssignment", + "src": "41050:21:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "41066:4:11", + "nodeType": "YulLiteral", + "src": "41066:4:11", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "41060:5:11", + "nodeType": "YulIdentifier", + "src": "41060:5:11" + }, + "nativeSrc": "41060:11:11", + "nodeType": "YulFunctionCall", + "src": "41060:11:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "41050:6:11", + "nodeType": "YulIdentifier", + "src": "41050:6:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "41124:4:11", + "nodeType": "YulLiteral", + "src": "41124:4:11", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "result", + "nativeSrc": "41134:6:11", + "nodeType": "YulIdentifier", + "src": "41134:6:11" + }, + { + "kind": "number", + "nativeSrc": "41142:4:11", + "nodeType": "YulLiteral", + "src": "41142:4:11", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "41130:3:11", + "nodeType": "YulIdentifier", + "src": "41130:3:11" + }, + "nativeSrc": "41130:17:11", + "nodeType": "YulFunctionCall", + "src": "41130:17:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "41117:6:11", + "nodeType": "YulIdentifier", + "src": "41117:6:11" + }, + "nativeSrc": "41117:31:11", + "nodeType": "YulFunctionCall", + "src": "41117:31:11" + }, + "nativeSrc": "41117:31:11", + "nodeType": "YulExpressionStatement", + "src": "41117:31:11" + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "41225:6:11", + "nodeType": "YulIdentifier", + "src": "41225:6:11" + }, + { + "kind": "number", + "nativeSrc": "41233:1:11", + "nodeType": "YulLiteral", + "src": "41233:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "41218:6:11", + "nodeType": "YulIdentifier", + "src": "41218:6:11" + }, + "nativeSrc": "41218:17:11", + "nodeType": "YulFunctionCall", + "src": "41218:17:11" + }, + "nativeSrc": "41218:17:11", + "nodeType": "YulExpressionStatement", + "src": "41218:17:11" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "41287:6:11", + "nodeType": "YulIdentifier", + "src": "41287:6:11" + }, + { + "kind": "number", + "nativeSrc": "41295:4:11", + "nodeType": "YulLiteral", + "src": "41295:4:11", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "41283:3:11", + "nodeType": "YulIdentifier", + "src": "41283:3:11" + }, + "nativeSrc": "41283:17:11", + "nodeType": "YulFunctionCall", + "src": "41283:17:11" + }, + { + "name": "packed", + "nativeSrc": "41302:6:11", + "nodeType": "YulIdentifier", + "src": "41302:6:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "41276:6:11", + "nodeType": "YulIdentifier", + "src": "41276:6:11" + }, + "nativeSrc": "41276:33:11", + "nodeType": "YulFunctionCall", + "src": "41276:33:11" + }, + "nativeSrc": "41276:33:11", + "nodeType": "YulExpressionStatement", + "src": "41276:33:11" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "41368:6:11", + "nodeType": "YulIdentifier", + "src": "41368:6:11" + }, + { + "kind": "number", + "nativeSrc": "41376:4:11", + "nodeType": "YulLiteral", + "src": "41376:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "41364:3:11", + "nodeType": "YulIdentifier", + "src": "41364:3:11" + }, + "nativeSrc": "41364:17:11", + "nodeType": "YulFunctionCall", + "src": "41364:17:11" + }, + { + "arguments": [ + { + "name": "result", + "nativeSrc": "41389:6:11", + "nodeType": "YulIdentifier", + "src": "41389:6:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "41383:5:11", + "nodeType": "YulIdentifier", + "src": "41383:5:11" + }, + "nativeSrc": "41383:13:11", + "nodeType": "YulFunctionCall", + "src": "41383:13:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "41360:3:11", + "nodeType": "YulIdentifier", + "src": "41360:3:11" + }, + "nativeSrc": "41360:37:11", + "nodeType": "YulFunctionCall", + "src": "41360:37:11" + }, + { + "kind": "number", + "nativeSrc": "41399:1:11", + "nodeType": "YulLiteral", + "src": "41399:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "41353:6:11", + "nodeType": "YulIdentifier", + "src": "41353:6:11" + }, + "nativeSrc": "41353:48:11", + "nodeType": "YulFunctionCall", + "src": "41353:48:11" + }, + "nativeSrc": "41353:48:11", + "nodeType": "YulExpressionStatement", + "src": "41353:48:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6105, + "isOffset": false, + "isSlot": false, + "src": "41302:6:11", + "valueSize": 1 + }, + { + "declaration": 6108, + "isOffset": false, + "isSlot": false, + "src": "41050:6:11", + "valueSize": 1 + }, + { + "declaration": 6108, + "isOffset": false, + "isSlot": false, + "src": "41134:6:11", + "valueSize": 1 + }, + { + "declaration": 6108, + "isOffset": false, + "isSlot": false, + "src": "41225:6:11", + "valueSize": 1 + }, + { + "declaration": 6108, + "isOffset": false, + "isSlot": false, + "src": "41287:6:11", + "valueSize": 1 + }, + { + "declaration": 6108, + "isOffset": false, + "isSlot": false, + "src": "41368:6:11", + "valueSize": 1 + }, + { + "declaration": 6108, + "isOffset": false, + "isSlot": false, + "src": "41389:6:11", + "valueSize": 1 + } + ], + "id": 6110, + "nodeType": "InlineAssembly", + "src": "41027:410:11" + } + ] + }, + "documentation": { + "id": 6103, + "nodeType": "StructuredDocumentation", + "src": "40693:196:11", + "text": "@dev Unpacks a string packed using {packOne}.\n Returns the empty string if `packed` is `bytes32(0)`.\n If `packed` is not an output of {packOne}, the output behavior is undefined." + }, + "id": 6112, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "unpackOne", + "nameLocation": "40903:9:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6106, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6105, + "mutability": "mutable", + "name": "packed", + "nameLocation": "40921:6:11", + "nodeType": "VariableDeclaration", + "scope": 6112, + "src": "40913:14:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6104, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "40913:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "40912:16:11" + }, + "returnParameters": { + "id": 6109, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6108, + "mutability": "mutable", + "name": "result", + "nameLocation": "40966:6:11", + "nodeType": "VariableDeclaration", + "scope": 6112, + "src": "40952:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6107, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "40952:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "40951:22:11" + }, + "scope": 6145, + "src": "40894:549:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6123, + "nodeType": "Block", + "src": "41685:706:11", + "statements": [ + { + "AST": { + "nativeSrc": "41747:638:11", + "nodeType": "YulBlock", + "src": "41747:638:11", + "statements": [ + { + "nativeSrc": "41761:20:11", + "nodeType": "YulVariableDeclaration", + "src": "41761:20:11", + "value": { + "arguments": [ + { + "name": "a", + "nativeSrc": "41779:1:11", + "nodeType": "YulIdentifier", + "src": "41779:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "41773:5:11", + "nodeType": "YulIdentifier", + "src": "41773:5:11" + }, + "nativeSrc": "41773:8:11", + "nodeType": "YulFunctionCall", + "src": "41773:8:11" + }, + "variables": [ + { + "name": "aLen", + "nativeSrc": "41765:4:11", + "nodeType": "YulTypedName", + "src": "41765:4:11", + "type": "" + } + ] + }, + { + "nativeSrc": "41927:448:11", + "nodeType": "YulAssignment", + "src": "41927:448:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "42059:1:11", + "nodeType": "YulLiteral", + "src": "42059:1:11", + "type": "", + "value": "3" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "42066:4:11", + "nodeType": "YulLiteral", + "src": "42066:4:11", + "type": "", + "value": "0x1f" + }, + { + "name": "aLen", + "nativeSrc": "42072:4:11", + "nodeType": "YulIdentifier", + "src": "42072:4:11" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "42062:3:11", + "nodeType": "YulIdentifier", + "src": "42062:3:11" + }, + "nativeSrc": "42062:15:11", + "nodeType": "YulFunctionCall", + "src": "42062:15:11" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "42055:3:11", + "nodeType": "YulIdentifier", + "src": "42055:3:11" + }, + "nativeSrc": "42055:23:11", + "nodeType": "YulFunctionCall", + "src": "42055:23:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "a", + "nativeSrc": "42090:1:11", + "nodeType": "YulIdentifier", + "src": "42090:1:11" + }, + { + "name": "aLen", + "nativeSrc": "42093:4:11", + "nodeType": "YulIdentifier", + "src": "42093:4:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "42086:3:11", + "nodeType": "YulIdentifier", + "src": "42086:3:11" + }, + "nativeSrc": "42086:12:11", + "nodeType": "YulFunctionCall", + "src": "42086:12:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "42080:5:11", + "nodeType": "YulIdentifier", + "src": "42080:5:11" + }, + "nativeSrc": "42080:19:11", + "nodeType": "YulFunctionCall", + "src": "42080:19:11" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "42051:3:11", + "nodeType": "YulIdentifier", + "src": "42051:3:11" + }, + "nativeSrc": "42051:49:11", + "nodeType": "YulFunctionCall", + "src": "42051:49:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "b", + "nativeSrc": "42116:1:11", + "nodeType": "YulIdentifier", + "src": "42116:1:11" + }, + { + "kind": "number", + "nativeSrc": "42119:4:11", + "nodeType": "YulLiteral", + "src": "42119:4:11", + "type": "", + "value": "0x1e" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "42112:3:11", + "nodeType": "YulIdentifier", + "src": "42112:3:11" + }, + "nativeSrc": "42112:12:11", + "nodeType": "YulFunctionCall", + "src": "42112:12:11" + }, + { + "name": "aLen", + "nativeSrc": "42126:4:11", + "nodeType": "YulIdentifier", + "src": "42126:4:11" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "42108:3:11", + "nodeType": "YulIdentifier", + "src": "42108:3:11" + }, + "nativeSrc": "42108:23:11", + "nodeType": "YulFunctionCall", + "src": "42108:23:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "42102:5:11", + "nodeType": "YulIdentifier", + "src": "42102:5:11" + }, + "nativeSrc": "42102:30:11", + "nodeType": "YulFunctionCall", + "src": "42102:30:11" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "41978:2:11", + "nodeType": "YulIdentifier", + "src": "41978:2:11" + }, + "nativeSrc": "41978:155:11", + "nodeType": "YulFunctionCall", + "src": "41978:155:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "aLen", + "nativeSrc": "42331:4:11", + "nodeType": "YulIdentifier", + "src": "42331:4:11" + }, + { + "arguments": [ + { + "name": "b", + "nativeSrc": "42343:1:11", + "nodeType": "YulIdentifier", + "src": "42343:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "42337:5:11", + "nodeType": "YulIdentifier", + "src": "42337:5:11" + }, + "nativeSrc": "42337:8:11", + "nodeType": "YulFunctionCall", + "src": "42337:8:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "42327:3:11", + "nodeType": "YulIdentifier", + "src": "42327:3:11" + }, + "nativeSrc": "42327:19:11", + "nodeType": "YulFunctionCall", + "src": "42327:19:11" + }, + { + "kind": "number", + "nativeSrc": "42348:1:11", + "nodeType": "YulLiteral", + "src": "42348:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "42323:3:11", + "nodeType": "YulIdentifier", + "src": "42323:3:11" + }, + "nativeSrc": "42323:27:11", + "nodeType": "YulFunctionCall", + "src": "42323:27:11" + }, + { + "kind": "number", + "nativeSrc": "42352:4:11", + "nodeType": "YulLiteral", + "src": "42352:4:11", + "type": "", + "value": "0x1e" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "42320:2:11", + "nodeType": "YulIdentifier", + "src": "42320:2:11" + }, + "nativeSrc": "42320:37:11", + "nodeType": "YulFunctionCall", + "src": "42320:37:11" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "41953:3:11", + "nodeType": "YulIdentifier", + "src": "41953:3:11" + }, + "nativeSrc": "41953:422:11", + "nodeType": "YulFunctionCall", + "src": "41953:422:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "41927:6:11", + "nodeType": "YulIdentifier", + "src": "41927:6:11" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6115, + "isOffset": false, + "isSlot": false, + "src": "41779:1:11", + "valueSize": 1 + }, + { + "declaration": 6115, + "isOffset": false, + "isSlot": false, + "src": "42090:1:11", + "valueSize": 1 + }, + { + "declaration": 6117, + "isOffset": false, + "isSlot": false, + "src": "42116:1:11", + "valueSize": 1 + }, + { + "declaration": 6117, + "isOffset": false, + "isSlot": false, + "src": "42343:1:11", + "valueSize": 1 + }, + { + "declaration": 6120, + "isOffset": false, + "isSlot": false, + "src": "41927:6:11", + "valueSize": 1 + } + ], + "id": 6122, + "nodeType": "InlineAssembly", + "src": "41738:647:11" + } + ] + }, + "documentation": { + "id": 6113, + "nodeType": "StructuredDocumentation", + "src": "41449:141:11", + "text": "@dev Packs two strings with their lengths into a single word.\n Returns `bytes32(0)` if combined length is zero or greater than 30." + }, + "id": 6124, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "packTwo", + "nameLocation": "41604:7:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6118, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6115, + "mutability": "mutable", + "name": "a", + "nameLocation": "41626:1:11", + "nodeType": "VariableDeclaration", + "scope": 6124, + "src": "41612:15:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6114, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "41612:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6117, + "mutability": "mutable", + "name": "b", + "nameLocation": "41643:1:11", + "nodeType": "VariableDeclaration", + "scope": 6124, + "src": "41629:15:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6116, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "41629:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "41611:34:11" + }, + "returnParameters": { + "id": 6121, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6120, + "mutability": "mutable", + "name": "result", + "nameLocation": "41677:6:11", + "nodeType": "VariableDeclaration", + "scope": 6124, + "src": "41669:14:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6119, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "41669:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "41668:16:11" + }, + "scope": 6145, + "src": "41595:796:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6135, + "nodeType": "Block", + "src": "42730:778:11", + "statements": [ + { + "AST": { + "nativeSrc": "42792:710:11", + "nodeType": "YulBlock", + "src": "42792:710:11", + "statements": [ + { + "nativeSrc": "42806:22:11", + "nodeType": "YulAssignment", + "src": "42806:22:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "42823:4:11", + "nodeType": "YulLiteral", + "src": "42823:4:11", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "42817:5:11", + "nodeType": "YulIdentifier", + "src": "42817:5:11" + }, + "nativeSrc": "42817:11:11", + "nodeType": "YulFunctionCall", + "src": "42817:11:11" + }, + "variableNames": [ + { + "name": "resultA", + "nativeSrc": "42806:7:11", + "nodeType": "YulIdentifier", + "src": "42806:7:11" + } + ] + }, + { + "nativeSrc": "42874:29:11", + "nodeType": "YulAssignment", + "src": "42874:29:11", + "value": { + "arguments": [ + { + "name": "resultA", + "nativeSrc": "42889:7:11", + "nodeType": "YulIdentifier", + "src": "42889:7:11" + }, + { + "kind": "number", + "nativeSrc": "42898:4:11", + "nodeType": "YulLiteral", + "src": "42898:4:11", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "42885:3:11", + "nodeType": "YulIdentifier", + "src": "42885:3:11" + }, + "nativeSrc": "42885:18:11", + "nodeType": "YulFunctionCall", + "src": "42885:18:11" + }, + "variableNames": [ + { + "name": "resultB", + "nativeSrc": "42874:7:11", + "nodeType": "YulIdentifier", + "src": "42874:7:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "43022:4:11", + "nodeType": "YulLiteral", + "src": "43022:4:11", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "resultB", + "nativeSrc": "43032:7:11", + "nodeType": "YulIdentifier", + "src": "43032:7:11" + }, + { + "kind": "number", + "nativeSrc": "43041:4:11", + "nodeType": "YulLiteral", + "src": "43041:4:11", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "43028:3:11", + "nodeType": "YulIdentifier", + "src": "43028:3:11" + }, + "nativeSrc": "43028:18:11", + "nodeType": "YulFunctionCall", + "src": "43028:18:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "43015:6:11", + "nodeType": "YulIdentifier", + "src": "43015:6:11" + }, + "nativeSrc": "43015:32:11", + "nodeType": "YulFunctionCall", + "src": "43015:32:11" + }, + "nativeSrc": "43015:32:11", + "nodeType": "YulExpressionStatement", + "src": "43015:32:11" + }, + { + "expression": { + "arguments": [ + { + "name": "resultA", + "nativeSrc": "43108:7:11", + "nodeType": "YulIdentifier", + "src": "43108:7:11" + }, + { + "kind": "number", + "nativeSrc": "43117:1:11", + "nodeType": "YulLiteral", + "src": "43117:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "43101:6:11", + "nodeType": "YulIdentifier", + "src": "43101:6:11" + }, + "nativeSrc": "43101:18:11", + "nodeType": "YulFunctionCall", + "src": "43101:18:11" + }, + "nativeSrc": "43101:18:11", + "nodeType": "YulExpressionStatement", + "src": "43101:18:11" + }, + { + "expression": { + "arguments": [ + { + "name": "resultB", + "nativeSrc": "43139:7:11", + "nodeType": "YulIdentifier", + "src": "43139:7:11" + }, + { + "kind": "number", + "nativeSrc": "43148:1:11", + "nodeType": "YulLiteral", + "src": "43148:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "43132:6:11", + "nodeType": "YulIdentifier", + "src": "43132:6:11" + }, + "nativeSrc": "43132:18:11", + "nodeType": "YulFunctionCall", + "src": "43132:18:11" + }, + "nativeSrc": "43132:18:11", + "nodeType": "YulExpressionStatement", + "src": "43132:18:11" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "resultA", + "nativeSrc": "43218:7:11", + "nodeType": "YulIdentifier", + "src": "43218:7:11" + }, + { + "kind": "number", + "nativeSrc": "43227:4:11", + "nodeType": "YulLiteral", + "src": "43227:4:11", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "43214:3:11", + "nodeType": "YulIdentifier", + "src": "43214:3:11" + }, + "nativeSrc": "43214:18:11", + "nodeType": "YulFunctionCall", + "src": "43214:18:11" + }, + { + "name": "packed", + "nativeSrc": "43234:6:11", + "nodeType": "YulIdentifier", + "src": "43234:6:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "43207:6:11", + "nodeType": "YulIdentifier", + "src": "43207:6:11" + }, + "nativeSrc": "43207:34:11", + "nodeType": "YulFunctionCall", + "src": "43207:34:11" + }, + "nativeSrc": "43207:34:11", + "nodeType": "YulExpressionStatement", + "src": "43207:34:11" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "resultB", + "nativeSrc": "43265:7:11", + "nodeType": "YulIdentifier", + "src": "43265:7:11" + }, + { + "kind": "number", + "nativeSrc": "43274:4:11", + "nodeType": "YulLiteral", + "src": "43274:4:11", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "43261:3:11", + "nodeType": "YulIdentifier", + "src": "43261:3:11" + }, + "nativeSrc": "43261:18:11", + "nodeType": "YulFunctionCall", + "src": "43261:18:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "resultA", + "nativeSrc": "43295:7:11", + "nodeType": "YulIdentifier", + "src": "43295:7:11" + }, + { + "kind": "number", + "nativeSrc": "43304:4:11", + "nodeType": "YulLiteral", + "src": "43304:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "43291:3:11", + "nodeType": "YulIdentifier", + "src": "43291:3:11" + }, + "nativeSrc": "43291:18:11", + "nodeType": "YulFunctionCall", + "src": "43291:18:11" + }, + { + "arguments": [ + { + "name": "resultA", + "nativeSrc": "43317:7:11", + "nodeType": "YulIdentifier", + "src": "43317:7:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "43311:5:11", + "nodeType": "YulIdentifier", + "src": "43311:5:11" + }, + "nativeSrc": "43311:14:11", + "nodeType": "YulFunctionCall", + "src": "43311:14:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "43287:3:11", + "nodeType": "YulIdentifier", + "src": "43287:3:11" + }, + "nativeSrc": "43287:39:11", + "nodeType": "YulFunctionCall", + "src": "43287:39:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "43281:5:11", + "nodeType": "YulIdentifier", + "src": "43281:5:11" + }, + "nativeSrc": "43281:46:11", + "nodeType": "YulFunctionCall", + "src": "43281:46:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "43254:6:11", + "nodeType": "YulIdentifier", + "src": "43254:6:11" + }, + "nativeSrc": "43254:74:11", + "nodeType": "YulFunctionCall", + "src": "43254:74:11" + }, + "nativeSrc": "43254:74:11", + "nodeType": "YulExpressionStatement", + "src": "43254:74:11" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "resultA", + "nativeSrc": "43394:7:11", + "nodeType": "YulIdentifier", + "src": "43394:7:11" + }, + { + "kind": "number", + "nativeSrc": "43403:4:11", + "nodeType": "YulLiteral", + "src": "43403:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "43390:3:11", + "nodeType": "YulIdentifier", + "src": "43390:3:11" + }, + "nativeSrc": "43390:18:11", + "nodeType": "YulFunctionCall", + "src": "43390:18:11" + }, + { + "arguments": [ + { + "name": "resultA", + "nativeSrc": "43416:7:11", + "nodeType": "YulIdentifier", + "src": "43416:7:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "43410:5:11", + "nodeType": "YulIdentifier", + "src": "43410:5:11" + }, + "nativeSrc": "43410:14:11", + "nodeType": "YulFunctionCall", + "src": "43410:14:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "43386:3:11", + "nodeType": "YulIdentifier", + "src": "43386:3:11" + }, + "nativeSrc": "43386:39:11", + "nodeType": "YulFunctionCall", + "src": "43386:39:11" + }, + { + "kind": "number", + "nativeSrc": "43427:1:11", + "nodeType": "YulLiteral", + "src": "43427:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "43379:6:11", + "nodeType": "YulIdentifier", + "src": "43379:6:11" + }, + "nativeSrc": "43379:50:11", + "nodeType": "YulFunctionCall", + "src": "43379:50:11" + }, + "nativeSrc": "43379:50:11", + "nodeType": "YulExpressionStatement", + "src": "43379:50:11" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "resultB", + "nativeSrc": "43457:7:11", + "nodeType": "YulIdentifier", + "src": "43457:7:11" + }, + { + "kind": "number", + "nativeSrc": "43466:4:11", + "nodeType": "YulLiteral", + "src": "43466:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "43453:3:11", + "nodeType": "YulIdentifier", + "src": "43453:3:11" + }, + "nativeSrc": "43453:18:11", + "nodeType": "YulFunctionCall", + "src": "43453:18:11" + }, + { + "arguments": [ + { + "name": "resultB", + "nativeSrc": "43479:7:11", + "nodeType": "YulIdentifier", + "src": "43479:7:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "43473:5:11", + "nodeType": "YulIdentifier", + "src": "43473:5:11" + }, + "nativeSrc": "43473:14:11", + "nodeType": "YulFunctionCall", + "src": "43473:14:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "43449:3:11", + "nodeType": "YulIdentifier", + "src": "43449:3:11" + }, + "nativeSrc": "43449:39:11", + "nodeType": "YulFunctionCall", + "src": "43449:39:11" + }, + { + "kind": "number", + "nativeSrc": "43490:1:11", + "nodeType": "YulLiteral", + "src": "43490:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "43442:6:11", + "nodeType": "YulIdentifier", + "src": "43442:6:11" + }, + "nativeSrc": "43442:50:11", + "nodeType": "YulFunctionCall", + "src": "43442:50:11" + }, + "nativeSrc": "43442:50:11", + "nodeType": "YulExpressionStatement", + "src": "43442:50:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6127, + "isOffset": false, + "isSlot": false, + "src": "43234:6:11", + "valueSize": 1 + }, + { + "declaration": 6130, + "isOffset": false, + "isSlot": false, + "src": "42806:7:11", + "valueSize": 1 + }, + { + "declaration": 6130, + "isOffset": false, + "isSlot": false, + "src": "42889:7:11", + "valueSize": 1 + }, + { + "declaration": 6130, + "isOffset": false, + "isSlot": false, + "src": "43108:7:11", + "valueSize": 1 + }, + { + "declaration": 6130, + "isOffset": false, + "isSlot": false, + "src": "43218:7:11", + "valueSize": 1 + }, + { + "declaration": 6130, + "isOffset": false, + "isSlot": false, + "src": "43295:7:11", + "valueSize": 1 + }, + { + "declaration": 6130, + "isOffset": false, + "isSlot": false, + "src": "43317:7:11", + "valueSize": 1 + }, + { + "declaration": 6130, + "isOffset": false, + "isSlot": false, + "src": "43394:7:11", + "valueSize": 1 + }, + { + "declaration": 6130, + "isOffset": false, + "isSlot": false, + "src": "43416:7:11", + "valueSize": 1 + }, + { + "declaration": 6132, + "isOffset": false, + "isSlot": false, + "src": "42874:7:11", + "valueSize": 1 + }, + { + "declaration": 6132, + "isOffset": false, + "isSlot": false, + "src": "43032:7:11", + "valueSize": 1 + }, + { + "declaration": 6132, + "isOffset": false, + "isSlot": false, + "src": "43139:7:11", + "valueSize": 1 + }, + { + "declaration": 6132, + "isOffset": false, + "isSlot": false, + "src": "43265:7:11", + "valueSize": 1 + }, + { + "declaration": 6132, + "isOffset": false, + "isSlot": false, + "src": "43457:7:11", + "valueSize": 1 + }, + { + "declaration": 6132, + "isOffset": false, + "isSlot": false, + "src": "43479:7:11", + "valueSize": 1 + } + ], + "id": 6134, + "nodeType": "InlineAssembly", + "src": "42783:719:11" + } + ] + }, + "documentation": { + "id": 6125, + "nodeType": "StructuredDocumentation", + "src": "42397:196:11", + "text": "@dev Unpacks strings packed using {packTwo}.\n Returns the empty strings if `packed` is `bytes32(0)`.\n If `packed` is not an output of {packTwo}, the output behavior is undefined." + }, + "id": 6136, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "unpackTwo", + "nameLocation": "42607:9:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6128, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6127, + "mutability": "mutable", + "name": "packed", + "nameLocation": "42625:6:11", + "nodeType": "VariableDeclaration", + "scope": 6136, + "src": "42617:14:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6126, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "42617:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "42616:16:11" + }, + "returnParameters": { + "id": 6133, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6130, + "mutability": "mutable", + "name": "resultA", + "nameLocation": "42694:7:11", + "nodeType": "VariableDeclaration", + "scope": 6136, + "src": "42680:21:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6129, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "42680:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6132, + "mutability": "mutable", + "name": "resultB", + "nameLocation": "42717:7:11", + "nodeType": "VariableDeclaration", + "scope": 6136, + "src": "42703:21:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6131, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "42703:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "42679:46:11" + }, + "scope": 6145, + "src": "42598:910:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6143, + "nodeType": "Block", + "src": "43618:631:11", + "statements": [ + { + "AST": { + "nativeSrc": "43680:563:11", + "nodeType": "YulBlock", + "src": "43680:563:11", + "statements": [ + { + "nativeSrc": "43772:28:11", + "nodeType": "YulVariableDeclaration", + "src": "43772:28:11", + "value": { + "arguments": [ + { + "name": "a", + "nativeSrc": "43792:1:11", + "nodeType": "YulIdentifier", + "src": "43792:1:11" + }, + { + "kind": "number", + "nativeSrc": "43795:4:11", + "nodeType": "YulLiteral", + "src": "43795:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "43788:3:11", + "nodeType": "YulIdentifier", + "src": "43788:3:11" + }, + "nativeSrc": "43788:12:11", + "nodeType": "YulFunctionCall", + "src": "43788:12:11" + }, + "variables": [ + { + "name": "retStart", + "nativeSrc": "43776:8:11", + "nodeType": "YulTypedName", + "src": "43776:8:11", + "type": "" + } + ] + }, + { + "nativeSrc": "43813:42:11", + "nodeType": "YulVariableDeclaration", + "src": "43813:42:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "a", + "nativeSrc": "43846:1:11", + "nodeType": "YulIdentifier", + "src": "43846:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "43840:5:11", + "nodeType": "YulIdentifier", + "src": "43840:5:11" + }, + "nativeSrc": "43840:8:11", + "nodeType": "YulFunctionCall", + "src": "43840:8:11" + }, + { + "kind": "number", + "nativeSrc": "43850:4:11", + "nodeType": "YulLiteral", + "src": "43850:4:11", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "43836:3:11", + "nodeType": "YulIdentifier", + "src": "43836:3:11" + }, + "nativeSrc": "43836:19:11", + "nodeType": "YulFunctionCall", + "src": "43836:19:11" + }, + "variables": [ + { + "name": "retUnpaddedSize", + "nativeSrc": "43817:15:11", + "nodeType": "YulTypedName", + "src": "43817:15:11", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "retStart", + "nativeSrc": "44009:8:11", + "nodeType": "YulIdentifier", + "src": "44009:8:11" + }, + { + "name": "retUnpaddedSize", + "nativeSrc": "44019:15:11", + "nodeType": "YulIdentifier", + "src": "44019:15:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "44005:3:11", + "nodeType": "YulIdentifier", + "src": "44005:3:11" + }, + "nativeSrc": "44005:30:11", + "nodeType": "YulFunctionCall", + "src": "44005:30:11" + }, + { + "kind": "number", + "nativeSrc": "44037:1:11", + "nodeType": "YulLiteral", + "src": "44037:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "43998:6:11", + "nodeType": "YulIdentifier", + "src": "43998:6:11" + }, + "nativeSrc": "43998:41:11", + "nodeType": "YulFunctionCall", + "src": "43998:41:11" + }, + "nativeSrc": "43998:41:11", + "nodeType": "YulExpressionStatement", + "src": "43998:41:11" + }, + { + "expression": { + "arguments": [ + { + "name": "retStart", + "nativeSrc": "44059:8:11", + "nodeType": "YulIdentifier", + "src": "44059:8:11" + }, + { + "kind": "number", + "nativeSrc": "44069:4:11", + "nodeType": "YulLiteral", + "src": "44069:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "44052:6:11", + "nodeType": "YulIdentifier", + "src": "44052:6:11" + }, + "nativeSrc": "44052:22:11", + "nodeType": "YulFunctionCall", + "src": "44052:22:11" + }, + "nativeSrc": "44052:22:11", + "nodeType": "YulExpressionStatement", + "src": "44052:22:11" + }, + { + "expression": { + "arguments": [ + { + "name": "retStart", + "nativeSrc": "44180:8:11", + "nodeType": "YulIdentifier", + "src": "44180:8:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "44198:4:11", + "nodeType": "YulLiteral", + "src": "44198:4:11", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "44194:3:11", + "nodeType": "YulIdentifier", + "src": "44194:3:11" + }, + "nativeSrc": "44194:9:11", + "nodeType": "YulFunctionCall", + "src": "44194:9:11" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "44209:4:11", + "nodeType": "YulLiteral", + "src": "44209:4:11", + "type": "", + "value": "0x1f" + }, + { + "name": "retUnpaddedSize", + "nativeSrc": "44215:15:11", + "nodeType": "YulIdentifier", + "src": "44215:15:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "44205:3:11", + "nodeType": "YulIdentifier", + "src": "44205:3:11" + }, + "nativeSrc": "44205:26:11", + "nodeType": "YulFunctionCall", + "src": "44205:26:11" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "44190:3:11", + "nodeType": "YulIdentifier", + "src": "44190:3:11" + }, + "nativeSrc": "44190:42:11", + "nodeType": "YulFunctionCall", + "src": "44190:42:11" + } + ], + "functionName": { + "name": "return", + "nativeSrc": "44173:6:11", + "nodeType": "YulIdentifier", + "src": "44173:6:11" + }, + "nativeSrc": "44173:60:11", + "nodeType": "YulFunctionCall", + "src": "44173:60:11" + }, + "nativeSrc": "44173:60:11", + "nodeType": "YulExpressionStatement", + "src": "44173:60:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6139, + "isOffset": false, + "isSlot": false, + "src": "43792:1:11", + "valueSize": 1 + }, + { + "declaration": 6139, + "isOffset": false, + "isSlot": false, + "src": "43846:1:11", + "valueSize": 1 + } + ], + "id": 6142, + "nodeType": "InlineAssembly", + "src": "43671:572:11" + } + ] + }, + "documentation": { + "id": 6137, + "nodeType": "StructuredDocumentation", + "src": "43514:46:11", + "text": "@dev Directly returns `a` without copying." + }, + "id": 6144, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "directReturn", + "nameLocation": "43574:12:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6140, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6139, + "mutability": "mutable", + "name": "a", + "nameLocation": "43601:1:11", + "nodeType": "VariableDeclaration", + "scope": 6144, + "src": "43587:15:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6138, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "43587:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "43586:17:11" + }, + "returnParameters": { + "id": 6141, + "nodeType": "ParameterList", + "parameters": [], + "src": "43618:0:11" + }, + "scope": 6145, + "src": "43565:684:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 6146, + "src": "690:43561:11", + "usedErrors": [ + 5116, + 5119, + 5122 + ], + "usedEvents": [] + } + ], + "src": "32:44220:11" + }, + "id": 11 + }, + "solady/utils/SignatureCheckerLib.sol": { + "ast": { + "absolutePath": "solady/utils/SignatureCheckerLib.sol", + "exportedSymbols": { + "SignatureCheckerLib": [ + 6365 + ] + }, + "id": 6366, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6147, + "literals": [ + "solidity", + "^", + "0.8", + ".4" + ], + "nodeType": "PragmaDirective", + "src": "32:23:12" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "SignatureCheckerLib", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 6148, + "nodeType": "StructuredDocumentation", + "src": "57:1381:12", + "text": "@notice Signature verification helper that supports both ECDSA signatures from EOAs\n and ERC1271 signatures from smart contract wallets like Argent and Gnosis safe.\n @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/SignatureCheckerLib.sol)\n @author Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/SignatureChecker.sol)\n @dev Note:\n - The signature checking functions use the ecrecover precompile (0x1).\n - The `bytes memory signature` variants use the identity precompile (0x4)\n to copy memory internally.\n - Unlike ECDSA signatures, contract signatures are revocable.\n - As of Solady version 0.0.134, all `bytes signature` variants accept both\n regular 65-byte `(r, s, v)` and EIP-2098 `(r, vs)` short form signatures.\n See: https://eips.ethereum.org/EIPS/eip-2098\n This is for calldata efficiency on smart accounts prevalent on L2s.\n WARNING! Do NOT use signatures as unique identifiers:\n - Use a nonce in the digest to prevent replay attacks on the same contract.\n - Use EIP-712 for the digest to prevent replay attacks across different chains and contracts.\n EIP-712 also enables readable signing of typed data for better user safety.\n This implementation does NOT check if a signature is non-malleable." + }, + "fullyImplemented": true, + "id": 6365, + "linearizedBaseContracts": [ + 6365 + ], + "name": "SignatureCheckerLib", + "nameLocation": "1446:19:12", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 6170, + "nodeType": "Block", + "src": "2104:1914:12", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 6165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6160, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6151, + "src": "2118:6:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 6163, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2136:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 6162, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2128:7:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 6161, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2128:7:12", + "typeDescriptions": {} + } + }, + "id": 6164, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2128:10:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2118:20:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6168, + "nodeType": "IfStatement", + "src": "2114:40:12", + "trueBody": { + "expression": { + "id": 6166, + "name": "isValid", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6158, + "src": "2147:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 6159, + "id": 6167, + "nodeType": "Return", + "src": "2140:14:12" + } + }, + { + "AST": { + "nativeSrc": "2216:1796:12", + "nodeType": "YulBlock", + "src": "2216:1796:12", + "statements": [ + { + "nativeSrc": "2230:20:12", + "nodeType": "YulVariableDeclaration", + "src": "2230:20:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2245:4:12", + "nodeType": "YulLiteral", + "src": "2245:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2239:5:12", + "nodeType": "YulIdentifier", + "src": "2239:5:12" + }, + "nativeSrc": "2239:11:12", + "nodeType": "YulFunctionCall", + "src": "2239:11:12" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "2234:1:12", + "nodeType": "YulTypedName", + "src": "2234:1:12", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "2275:1727:12", + "nodeType": "YulBlock", + "src": "2275:1727:12", + "statements": [ + { + "body": { + "nativeSrc": "2324:1000:12", + "nodeType": "YulBlock", + "src": "2324:1000:12", + "statements": [ + { + "cases": [ + { + "body": { + "nativeSrc": "2398:218:12", + "nodeType": "YulBlock", + "src": "2398:218:12", + "statements": [ + { + "nativeSrc": "2424:37:12", + "nodeType": "YulVariableDeclaration", + "src": "2424:37:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "2444:9:12", + "nodeType": "YulIdentifier", + "src": "2444:9:12" + }, + { + "kind": "number", + "nativeSrc": "2455:4:12", + "nodeType": "YulLiteral", + "src": "2455:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2440:3:12", + "nodeType": "YulIdentifier", + "src": "2440:3:12" + }, + "nativeSrc": "2440:20:12", + "nodeType": "YulFunctionCall", + "src": "2440:20:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2434:5:12", + "nodeType": "YulIdentifier", + "src": "2434:5:12" + }, + "nativeSrc": "2434:27:12", + "nodeType": "YulFunctionCall", + "src": "2434:27:12" + }, + "variables": [ + { + "name": "vs", + "nativeSrc": "2428:2:12", + "nodeType": "YulTypedName", + "src": "2428:2:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2493:4:12", + "nodeType": "YulLiteral", + "src": "2493:4:12", + "type": "", + "value": "0x20" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2507:3:12", + "nodeType": "YulLiteral", + "src": "2507:3:12", + "type": "", + "value": "255" + }, + { + "name": "vs", + "nativeSrc": "2512:2:12", + "nodeType": "YulIdentifier", + "src": "2512:2:12" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "2503:3:12", + "nodeType": "YulIdentifier", + "src": "2503:3:12" + }, + "nativeSrc": "2503:12:12", + "nodeType": "YulFunctionCall", + "src": "2503:12:12" + }, + { + "kind": "number", + "nativeSrc": "2517:2:12", + "nodeType": "YulLiteral", + "src": "2517:2:12", + "type": "", + "value": "27" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2499:3:12", + "nodeType": "YulIdentifier", + "src": "2499:3:12" + }, + "nativeSrc": "2499:21:12", + "nodeType": "YulFunctionCall", + "src": "2499:21:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2486:6:12", + "nodeType": "YulIdentifier", + "src": "2486:6:12" + }, + "nativeSrc": "2486:35:12", + "nodeType": "YulFunctionCall", + "src": "2486:35:12" + }, + "nativeSrc": "2486:35:12", + "nodeType": "YulExpressionStatement", + "src": "2486:35:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2561:4:12", + "nodeType": "YulLiteral", + "src": "2561:4:12", + "type": "", + "value": "0x60" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2571:1:12", + "nodeType": "YulLiteral", + "src": "2571:1:12", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2578:1:12", + "nodeType": "YulLiteral", + "src": "2578:1:12", + "type": "", + "value": "1" + }, + { + "name": "vs", + "nativeSrc": "2581:2:12", + "nodeType": "YulIdentifier", + "src": "2581:2:12" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "2574:3:12", + "nodeType": "YulIdentifier", + "src": "2574:3:12" + }, + "nativeSrc": "2574:10:12", + "nodeType": "YulFunctionCall", + "src": "2574:10:12" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "2567:3:12", + "nodeType": "YulIdentifier", + "src": "2567:3:12" + }, + "nativeSrc": "2567:18:12", + "nodeType": "YulFunctionCall", + "src": "2567:18:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2554:6:12", + "nodeType": "YulIdentifier", + "src": "2554:6:12" + }, + "nativeSrc": "2554:32:12", + "nodeType": "YulFunctionCall", + "src": "2554:32:12" + }, + "nativeSrc": "2554:32:12", + "nodeType": "YulExpressionStatement", + "src": "2554:32:12" + } + ] + }, + "nativeSrc": "2390:226:12", + "nodeType": "YulCase", + "src": "2390:226:12", + "value": { + "kind": "number", + "nativeSrc": "2395:2:12", + "nodeType": "YulLiteral", + "src": "2395:2:12", + "type": "", + "value": "64" + } + }, + { + "body": { + "nativeSrc": "2645:180:12", + "nodeType": "YulBlock", + "src": "2645:180:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2678:4:12", + "nodeType": "YulLiteral", + "src": "2678:4:12", + "type": "", + "value": "0x20" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2689:1:12", + "nodeType": "YulLiteral", + "src": "2689:1:12", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "2702:9:12", + "nodeType": "YulIdentifier", + "src": "2702:9:12" + }, + { + "kind": "number", + "nativeSrc": "2713:4:12", + "nodeType": "YulLiteral", + "src": "2713:4:12", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2698:3:12", + "nodeType": "YulIdentifier", + "src": "2698:3:12" + }, + "nativeSrc": "2698:20:12", + "nodeType": "YulFunctionCall", + "src": "2698:20:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2692:5:12", + "nodeType": "YulIdentifier", + "src": "2692:5:12" + }, + "nativeSrc": "2692:27:12", + "nodeType": "YulFunctionCall", + "src": "2692:27:12" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "2684:4:12", + "nodeType": "YulIdentifier", + "src": "2684:4:12" + }, + "nativeSrc": "2684:36:12", + "nodeType": "YulFunctionCall", + "src": "2684:36:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2671:6:12", + "nodeType": "YulIdentifier", + "src": "2671:6:12" + }, + "nativeSrc": "2671:50:12", + "nodeType": "YulFunctionCall", + "src": "2671:50:12" + }, + "nativeSrc": "2671:50:12", + "nodeType": "YulExpressionStatement", + "src": "2671:50:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2761:4:12", + "nodeType": "YulLiteral", + "src": "2761:4:12", + "type": "", + "value": "0x60" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "2777:9:12", + "nodeType": "YulIdentifier", + "src": "2777:9:12" + }, + { + "kind": "number", + "nativeSrc": "2788:4:12", + "nodeType": "YulLiteral", + "src": "2788:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2773:3:12", + "nodeType": "YulIdentifier", + "src": "2773:3:12" + }, + "nativeSrc": "2773:20:12", + "nodeType": "YulFunctionCall", + "src": "2773:20:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2767:5:12", + "nodeType": "YulIdentifier", + "src": "2767:5:12" + }, + "nativeSrc": "2767:27:12", + "nodeType": "YulFunctionCall", + "src": "2767:27:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2754:6:12", + "nodeType": "YulIdentifier", + "src": "2754:6:12" + }, + "nativeSrc": "2754:41:12", + "nodeType": "YulFunctionCall", + "src": "2754:41:12" + }, + "nativeSrc": "2754:41:12", + "nodeType": "YulExpressionStatement", + "src": "2754:41:12" + } + ] + }, + "nativeSrc": "2637:188:12", + "nodeType": "YulCase", + "src": "2637:188:12", + "value": { + "kind": "number", + "nativeSrc": "2642:2:12", + "nodeType": "YulLiteral", + "src": "2642:2:12", + "type": "", + "value": "65" + } + }, + { + "body": { + "nativeSrc": "2854:9:12", + "nodeType": "YulBlock", + "src": "2854:9:12", + "statements": [ + { + "nativeSrc": "2856:5:12", + "nodeType": "YulBreak", + "src": "2856:5:12" + } + ] + }, + "nativeSrc": "2846:17:12", + "nodeType": "YulCase", + "src": "2846:17:12", + "value": "default" + } + ], + "expression": { + "arguments": [ + { + "name": "signature", + "nativeSrc": "2359:9:12", + "nodeType": "YulIdentifier", + "src": "2359:9:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2353:5:12", + "nodeType": "YulIdentifier", + "src": "2353:5:12" + }, + "nativeSrc": "2353:16:12", + "nodeType": "YulFunctionCall", + "src": "2353:16:12" + }, + "nativeSrc": "2346:517:12", + "nodeType": "YulSwitch", + "src": "2346:517:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2891:4:12", + "nodeType": "YulLiteral", + "src": "2891:4:12", + "type": "", + "value": "0x00" + }, + { + "name": "hash", + "nativeSrc": "2897:4:12", + "nodeType": "YulIdentifier", + "src": "2897:4:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2884:6:12", + "nodeType": "YulIdentifier", + "src": "2884:6:12" + }, + "nativeSrc": "2884:18:12", + "nodeType": "YulFunctionCall", + "src": "2884:18:12" + }, + "nativeSrc": "2884:18:12", + "nodeType": "YulExpressionStatement", + "src": "2884:18:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2930:4:12", + "nodeType": "YulLiteral", + "src": "2930:4:12", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "2946:9:12", + "nodeType": "YulIdentifier", + "src": "2946:9:12" + }, + { + "kind": "number", + "nativeSrc": "2957:4:12", + "nodeType": "YulLiteral", + "src": "2957:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2942:3:12", + "nodeType": "YulIdentifier", + "src": "2942:3:12" + }, + "nativeSrc": "2942:20:12", + "nodeType": "YulFunctionCall", + "src": "2942:20:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2936:5:12", + "nodeType": "YulIdentifier", + "src": "2936:5:12" + }, + "nativeSrc": "2936:27:12", + "nodeType": "YulFunctionCall", + "src": "2936:27:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2923:6:12", + "nodeType": "YulIdentifier", + "src": "2923:6:12" + }, + "nativeSrc": "2923:41:12", + "nodeType": "YulFunctionCall", + "src": "2923:41:12" + }, + "nativeSrc": "2923:41:12", + "nodeType": "YulExpressionStatement", + "src": "2923:41:12" + }, + { + "nativeSrc": "2993:68:12", + "nodeType": "YulVariableDeclaration", + "src": "2993:68:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "3027:3:12", + "nodeType": "YulIdentifier", + "src": "3027:3:12" + }, + "nativeSrc": "3027:5:12", + "nodeType": "YulFunctionCall", + "src": "3027:5:12" + }, + { + "kind": "number", + "nativeSrc": "3034:1:12", + "nodeType": "YulLiteral", + "src": "3034:1:12", + "type": "", + "value": "1" + }, + { + "kind": "number", + "nativeSrc": "3037:4:12", + "nodeType": "YulLiteral", + "src": "3037:4:12", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "3043:4:12", + "nodeType": "YulLiteral", + "src": "3043:4:12", + "type": "", + "value": "0x80" + }, + { + "kind": "number", + "nativeSrc": "3049:4:12", + "nodeType": "YulLiteral", + "src": "3049:4:12", + "type": "", + "value": "0x01" + }, + { + "kind": "number", + "nativeSrc": "3055:4:12", + "nodeType": "YulLiteral", + "src": "3055:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "3016:10:12", + "nodeType": "YulIdentifier", + "src": "3016:10:12" + }, + "nativeSrc": "3016:44:12", + "nodeType": "YulFunctionCall", + "src": "3016:44:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "3010:5:12", + "nodeType": "YulIdentifier", + "src": "3010:5:12" + }, + "nativeSrc": "3010:51:12", + "nodeType": "YulFunctionCall", + "src": "3010:51:12" + }, + "variables": [ + { + "name": "recovered", + "nativeSrc": "2997:9:12", + "nodeType": "YulTypedName", + "src": "2997:9:12", + "type": "" + } + ] + }, + { + "nativeSrc": "3082:64:12", + "nodeType": "YulAssignment", + "src": "3082:64:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "3096:14:12", + "nodeType": "YulIdentifier", + "src": "3096:14:12" + }, + "nativeSrc": "3096:16:12", + "nodeType": "YulFunctionCall", + "src": "3096:16:12" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3118:2:12", + "nodeType": "YulLiteral", + "src": "3118:2:12", + "type": "", + "value": "96" + }, + { + "arguments": [ + { + "name": "signer", + "nativeSrc": "3126:6:12", + "nodeType": "YulIdentifier", + "src": "3126:6:12" + }, + { + "name": "recovered", + "nativeSrc": "3134:9:12", + "nodeType": "YulIdentifier", + "src": "3134:9:12" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "3122:3:12", + "nodeType": "YulIdentifier", + "src": "3122:3:12" + }, + "nativeSrc": "3122:22:12", + "nodeType": "YulFunctionCall", + "src": "3122:22:12" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "3114:3:12", + "nodeType": "YulIdentifier", + "src": "3114:3:12" + }, + "nativeSrc": "3114:31:12", + "nodeType": "YulFunctionCall", + "src": "3114:31:12" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "3093:2:12", + "nodeType": "YulIdentifier", + "src": "3093:2:12" + }, + "nativeSrc": "3093:53:12", + "nodeType": "YulFunctionCall", + "src": "3093:53:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "3082:7:12", + "nodeType": "YulIdentifier", + "src": "3082:7:12" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3174:4:12", + "nodeType": "YulLiteral", + "src": "3174:4:12", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "3180:1:12", + "nodeType": "YulLiteral", + "src": "3180:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3167:6:12", + "nodeType": "YulIdentifier", + "src": "3167:6:12" + }, + "nativeSrc": "3167:15:12", + "nodeType": "YulFunctionCall", + "src": "3167:15:12" + }, + "nativeSrc": "3167:15:12", + "nodeType": "YulExpressionStatement", + "src": "3167:15:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3236:4:12", + "nodeType": "YulLiteral", + "src": "3236:4:12", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "3242:1:12", + "nodeType": "YulIdentifier", + "src": "3242:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3229:6:12", + "nodeType": "YulIdentifier", + "src": "3229:6:12" + }, + "nativeSrc": "3229:15:12", + "nodeType": "YulFunctionCall", + "src": "3229:15:12" + }, + "nativeSrc": "3229:15:12", + "nodeType": "YulExpressionStatement", + "src": "3229:15:12" + }, + { + "nativeSrc": "3301:5:12", + "nodeType": "YulBreak", + "src": "3301:5:12" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "signer", + "nativeSrc": "2315:6:12", + "nodeType": "YulIdentifier", + "src": "2315:6:12" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "2303:11:12", + "nodeType": "YulIdentifier", + "src": "2303:11:12" + }, + "nativeSrc": "2303:19:12", + "nodeType": "YulFunctionCall", + "src": "2303:19:12" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "2296:6:12", + "nodeType": "YulIdentifier", + "src": "2296:6:12" + }, + "nativeSrc": "2296:27:12", + "nodeType": "YulFunctionCall", + "src": "2296:27:12" + }, + "nativeSrc": "2293:1031:12", + "nodeType": "YulIf", + "src": "2293:1031:12" + }, + { + "nativeSrc": "3341:29:12", + "nodeType": "YulVariableDeclaration", + "src": "3341:29:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3354:3:12", + "nodeType": "YulLiteral", + "src": "3354:3:12", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "3359:10:12", + "nodeType": "YulLiteral", + "src": "3359:10:12", + "type": "", + "value": "0x1626ba7e" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "3350:3:12", + "nodeType": "YulIdentifier", + "src": "3350:3:12" + }, + "nativeSrc": "3350:20:12", + "nodeType": "YulFunctionCall", + "src": "3350:20:12" + }, + "variables": [ + { + "name": "f", + "nativeSrc": "3345:1:12", + "nodeType": "YulTypedName", + "src": "3345:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "3394:1:12", + "nodeType": "YulIdentifier", + "src": "3394:1:12" + }, + { + "name": "f", + "nativeSrc": "3397:1:12", + "nodeType": "YulIdentifier", + "src": "3397:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3387:6:12", + "nodeType": "YulIdentifier", + "src": "3387:6:12" + }, + "nativeSrc": "3387:12:12", + "nodeType": "YulFunctionCall", + "src": "3387:12:12" + }, + "nativeSrc": "3387:12:12", + "nodeType": "YulExpressionStatement", + "src": "3387:12:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "3486:1:12", + "nodeType": "YulIdentifier", + "src": "3486:1:12" + }, + { + "kind": "number", + "nativeSrc": "3489:4:12", + "nodeType": "YulLiteral", + "src": "3489:4:12", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3482:3:12", + "nodeType": "YulIdentifier", + "src": "3482:3:12" + }, + "nativeSrc": "3482:12:12", + "nodeType": "YulFunctionCall", + "src": "3482:12:12" + }, + { + "name": "hash", + "nativeSrc": "3496:4:12", + "nodeType": "YulIdentifier", + "src": "3496:4:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3475:6:12", + "nodeType": "YulIdentifier", + "src": "3475:6:12" + }, + "nativeSrc": "3475:26:12", + "nodeType": "YulFunctionCall", + "src": "3475:26:12" + }, + "nativeSrc": "3475:26:12", + "nodeType": "YulExpressionStatement", + "src": "3475:26:12" + }, + { + "nativeSrc": "3518:21:12", + "nodeType": "YulVariableDeclaration", + "src": "3518:21:12", + "value": { + "arguments": [ + { + "name": "m", + "nativeSrc": "3531:1:12", + "nodeType": "YulIdentifier", + "src": "3531:1:12" + }, + { + "kind": "number", + "nativeSrc": "3534:4:12", + "nodeType": "YulLiteral", + "src": "3534:4:12", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3527:3:12", + "nodeType": "YulIdentifier", + "src": "3527:3:12" + }, + "nativeSrc": "3527:12:12", + "nodeType": "YulFunctionCall", + "src": "3527:12:12" + }, + "variables": [ + { + "name": "d", + "nativeSrc": "3522:1:12", + "nodeType": "YulTypedName", + "src": "3522:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "d", + "nativeSrc": "3563:1:12", + "nodeType": "YulIdentifier", + "src": "3563:1:12" + }, + { + "kind": "number", + "nativeSrc": "3566:4:12", + "nodeType": "YulLiteral", + "src": "3566:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3556:6:12", + "nodeType": "YulIdentifier", + "src": "3556:6:12" + }, + "nativeSrc": "3556:15:12", + "nodeType": "YulFunctionCall", + "src": "3556:15:12" + }, + "nativeSrc": "3556:15:12", + "nodeType": "YulExpressionStatement", + "src": "3556:15:12" + }, + { + "nativeSrc": "3684:36:12", + "nodeType": "YulVariableDeclaration", + "src": "3684:36:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3697:4:12", + "nodeType": "YulLiteral", + "src": "3697:4:12", + "type": "", + "value": "0x20" + }, + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "3709:9:12", + "nodeType": "YulIdentifier", + "src": "3709:9:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "3703:5:12", + "nodeType": "YulIdentifier", + "src": "3703:5:12" + }, + "nativeSrc": "3703:16:12", + "nodeType": "YulFunctionCall", + "src": "3703:16:12" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3693:3:12", + "nodeType": "YulIdentifier", + "src": "3693:3:12" + }, + "nativeSrc": "3693:27:12", + "nodeType": "YulFunctionCall", + "src": "3693:27:12" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "3688:1:12", + "nodeType": "YulTypedName", + "src": "3688:1:12", + "type": "" + } + ] + }, + { + "nativeSrc": "3737:65:12", + "nodeType": "YulVariableDeclaration", + "src": "3737:65:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "3762:3:12", + "nodeType": "YulIdentifier", + "src": "3762:3:12" + }, + "nativeSrc": "3762:5:12", + "nodeType": "YulFunctionCall", + "src": "3762:5:12" + }, + { + "kind": "number", + "nativeSrc": "3769:1:12", + "nodeType": "YulLiteral", + "src": "3769:1:12", + "type": "", + "value": "4" + }, + { + "name": "signature", + "nativeSrc": "3772:9:12", + "nodeType": "YulIdentifier", + "src": "3772:9:12" + }, + { + "name": "n", + "nativeSrc": "3783:1:12", + "nodeType": "YulIdentifier", + "src": "3783:1:12" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "3790:1:12", + "nodeType": "YulIdentifier", + "src": "3790:1:12" + }, + { + "kind": "number", + "nativeSrc": "3793:4:12", + "nodeType": "YulLiteral", + "src": "3793:4:12", + "type": "", + "value": "0x44" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3786:3:12", + "nodeType": "YulIdentifier", + "src": "3786:3:12" + }, + "nativeSrc": "3786:12:12", + "nodeType": "YulFunctionCall", + "src": "3786:12:12" + }, + { + "name": "n", + "nativeSrc": "3800:1:12", + "nodeType": "YulIdentifier", + "src": "3800:1:12" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "3751:10:12", + "nodeType": "YulIdentifier", + "src": "3751:10:12" + }, + "nativeSrc": "3751:51:12", + "nodeType": "YulFunctionCall", + "src": "3751:51:12" + }, + "variables": [ + { + "name": "copied", + "nativeSrc": "3741:6:12", + "nodeType": "YulTypedName", + "src": "3741:6:12", + "type": "" + } + ] + }, + { + "nativeSrc": "3819:77:12", + "nodeType": "YulAssignment", + "src": "3819:77:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "3841:3:12", + "nodeType": "YulIdentifier", + "src": "3841:3:12" + }, + "nativeSrc": "3841:5:12", + "nodeType": "YulFunctionCall", + "src": "3841:5:12" + }, + { + "name": "signer", + "nativeSrc": "3848:6:12", + "nodeType": "YulIdentifier", + "src": "3848:6:12" + }, + { + "name": "m", + "nativeSrc": "3856:1:12", + "nodeType": "YulIdentifier", + "src": "3856:1:12" + }, + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "3863:14:12", + "nodeType": "YulIdentifier", + "src": "3863:14:12" + }, + "nativeSrc": "3863:16:12", + "nodeType": "YulFunctionCall", + "src": "3863:16:12" + }, + { + "kind": "number", + "nativeSrc": "3881:4:12", + "nodeType": "YulLiteral", + "src": "3881:4:12", + "type": "", + "value": "0x44" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3859:3:12", + "nodeType": "YulIdentifier", + "src": "3859:3:12" + }, + "nativeSrc": "3859:27:12", + "nodeType": "YulFunctionCall", + "src": "3859:27:12" + }, + { + "name": "d", + "nativeSrc": "3888:1:12", + "nodeType": "YulIdentifier", + "src": "3888:1:12" + }, + { + "kind": "number", + "nativeSrc": "3891:4:12", + "nodeType": "YulLiteral", + "src": "3891:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "3830:10:12", + "nodeType": "YulIdentifier", + "src": "3830:10:12" + }, + "nativeSrc": "3830:66:12", + "nodeType": "YulFunctionCall", + "src": "3830:66:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "3819:7:12", + "nodeType": "YulIdentifier", + "src": "3819:7:12" + } + ] + }, + { + "nativeSrc": "3913:53:12", + "nodeType": "YulAssignment", + "src": "3913:53:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "d", + "nativeSrc": "3937:1:12", + "nodeType": "YulIdentifier", + "src": "3937:1:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "3931:5:12", + "nodeType": "YulIdentifier", + "src": "3931:5:12" + }, + "nativeSrc": "3931:8:12", + "nodeType": "YulFunctionCall", + "src": "3931:8:12" + }, + { + "name": "f", + "nativeSrc": "3941:1:12", + "nodeType": "YulIdentifier", + "src": "3941:1:12" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "3928:2:12", + "nodeType": "YulIdentifier", + "src": "3928:2:12" + }, + "nativeSrc": "3928:15:12", + "nodeType": "YulFunctionCall", + "src": "3928:15:12" + }, + { + "arguments": [ + { + "name": "isValid", + "nativeSrc": "3949:7:12", + "nodeType": "YulIdentifier", + "src": "3949:7:12" + }, + { + "name": "copied", + "nativeSrc": "3958:6:12", + "nodeType": "YulIdentifier", + "src": "3958:6:12" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "3945:3:12", + "nodeType": "YulIdentifier", + "src": "3945:3:12" + }, + "nativeSrc": "3945:20:12", + "nodeType": "YulFunctionCall", + "src": "3945:20:12" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "3924:3:12", + "nodeType": "YulIdentifier", + "src": "3924:3:12" + }, + "nativeSrc": "3924:42:12", + "nodeType": "YulFunctionCall", + "src": "3924:42:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "3913:7:12", + "nodeType": "YulIdentifier", + "src": "3913:7:12" + } + ] + }, + { + "nativeSrc": "3983:5:12", + "nodeType": "YulBreak", + "src": "3983:5:12" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "2270:1:12", + "nodeType": "YulLiteral", + "src": "2270:1:12", + "type": "", + "value": "1" + }, + "nativeSrc": "2263:1739:12", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "2272:2:12", + "nodeType": "YulBlock", + "src": "2272:2:12", + "statements": [] + }, + "pre": { + "nativeSrc": "2267:2:12", + "nodeType": "YulBlock", + "src": "2267:2:12", + "statements": [] + }, + "src": "2263:1739:12" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6153, + "isOffset": false, + "isSlot": false, + "src": "2897:4:12", + "valueSize": 1 + }, + { + "declaration": 6153, + "isOffset": false, + "isSlot": false, + "src": "3496:4:12", + "valueSize": 1 + }, + { + "declaration": 6158, + "isOffset": false, + "isSlot": false, + "src": "3082:7:12", + "valueSize": 1 + }, + { + "declaration": 6158, + "isOffset": false, + "isSlot": false, + "src": "3819:7:12", + "valueSize": 1 + }, + { + "declaration": 6158, + "isOffset": false, + "isSlot": false, + "src": "3913:7:12", + "valueSize": 1 + }, + { + "declaration": 6158, + "isOffset": false, + "isSlot": false, + "src": "3949:7:12", + "valueSize": 1 + }, + { + "declaration": 6155, + "isOffset": false, + "isSlot": false, + "src": "2359:9:12", + "valueSize": 1 + }, + { + "declaration": 6155, + "isOffset": false, + "isSlot": false, + "src": "2444:9:12", + "valueSize": 1 + }, + { + "declaration": 6155, + "isOffset": false, + "isSlot": false, + "src": "2702:9:12", + "valueSize": 1 + }, + { + "declaration": 6155, + "isOffset": false, + "isSlot": false, + "src": "2777:9:12", + "valueSize": 1 + }, + { + "declaration": 6155, + "isOffset": false, + "isSlot": false, + "src": "2946:9:12", + "valueSize": 1 + }, + { + "declaration": 6155, + "isOffset": false, + "isSlot": false, + "src": "3709:9:12", + "valueSize": 1 + }, + { + "declaration": 6155, + "isOffset": false, + "isSlot": false, + "src": "3772:9:12", + "valueSize": 1 + }, + { + "declaration": 6151, + "isOffset": false, + "isSlot": false, + "src": "2315:6:12", + "valueSize": 1 + }, + { + "declaration": 6151, + "isOffset": false, + "isSlot": false, + "src": "3126:6:12", + "valueSize": 1 + }, + { + "declaration": 6151, + "isOffset": false, + "isSlot": false, + "src": "3848:6:12", + "valueSize": 1 + } + ], + "id": 6169, + "nodeType": "InlineAssembly", + "src": "2207:1805:12" + } + ] + }, + "documentation": { + "id": 6149, + "nodeType": "StructuredDocumentation", + "src": "1755:196:12", + "text": "@dev Returns whether `signature` is valid for `signer` and `hash`.\n If `signer.code.length == 0`, then validate with `ecrecover`, else\n it will validate with ERC1271 on `signer`." + }, + "id": 6171, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isValidSignatureNow", + "nameLocation": "1965:19:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6156, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6151, + "mutability": "mutable", + "name": "signer", + "nameLocation": "1993:6:12", + "nodeType": "VariableDeclaration", + "scope": 6171, + "src": "1985:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6150, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1985:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6153, + "mutability": "mutable", + "name": "hash", + "nameLocation": "2009:4:12", + "nodeType": "VariableDeclaration", + "scope": 6171, + "src": "2001:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6152, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2001:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6155, + "mutability": "mutable", + "name": "signature", + "nameLocation": "2028:9:12", + "nodeType": "VariableDeclaration", + "scope": 6171, + "src": "2015:22:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6154, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2015:5:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "1984:54:12" + }, + "returnParameters": { + "id": 6159, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6158, + "mutability": "mutable", + "name": "isValid", + "nameLocation": "2091:7:12", + "nodeType": "VariableDeclaration", + "scope": 6171, + "src": "2086:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6157, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2086:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2085:14:12" + }, + "scope": 6365, + "src": "1956:2062:12", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6193, + "nodeType": "Block", + "src": "4383:1941:12", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 6188, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6183, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6174, + "src": "4397:6:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 6186, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4415:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 6185, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4407:7:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 6184, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4407:7:12", + "typeDescriptions": {} + } + }, + "id": 6187, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4407:10:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4397:20:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6191, + "nodeType": "IfStatement", + "src": "4393:40:12", + "trueBody": { + "expression": { + "id": 6189, + "name": "isValid", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6181, + "src": "4426:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 6182, + "id": 6190, + "nodeType": "Return", + "src": "4419:14:12" + } + }, + { + "AST": { + "nativeSrc": "4495:1823:12", + "nodeType": "YulBlock", + "src": "4495:1823:12", + "statements": [ + { + "nativeSrc": "4509:20:12", + "nodeType": "YulVariableDeclaration", + "src": "4509:20:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4524:4:12", + "nodeType": "YulLiteral", + "src": "4524:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "4518:5:12", + "nodeType": "YulIdentifier", + "src": "4518:5:12" + }, + "nativeSrc": "4518:11:12", + "nodeType": "YulFunctionCall", + "src": "4518:11:12" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "4513:1:12", + "nodeType": "YulTypedName", + "src": "4513:1:12", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "4554:1754:12", + "nodeType": "YulBlock", + "src": "4554:1754:12", + "statements": [ + { + "body": { + "nativeSrc": "4603:1041:12", + "nodeType": "YulBlock", + "src": "4603:1041:12", + "statements": [ + { + "cases": [ + { + "body": { + "nativeSrc": "4677:309:12", + "nodeType": "YulBlock", + "src": "4677:309:12", + "statements": [ + { + "nativeSrc": "4703:51:12", + "nodeType": "YulVariableDeclaration", + "src": "4703:51:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "signature.offset", + "nativeSrc": "4730:16:12", + "nodeType": "YulIdentifier", + "src": "4730:16:12" + }, + { + "kind": "number", + "nativeSrc": "4748:4:12", + "nodeType": "YulLiteral", + "src": "4748:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4726:3:12", + "nodeType": "YulIdentifier", + "src": "4726:3:12" + }, + "nativeSrc": "4726:27:12", + "nodeType": "YulFunctionCall", + "src": "4726:27:12" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "4713:12:12", + "nodeType": "YulIdentifier", + "src": "4713:12:12" + }, + "nativeSrc": "4713:41:12", + "nodeType": "YulFunctionCall", + "src": "4713:41:12" + }, + "variables": [ + { + "name": "vs", + "nativeSrc": "4707:2:12", + "nodeType": "YulTypedName", + "src": "4707:2:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4786:4:12", + "nodeType": "YulLiteral", + "src": "4786:4:12", + "type": "", + "value": "0x20" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4800:3:12", + "nodeType": "YulLiteral", + "src": "4800:3:12", + "type": "", + "value": "255" + }, + { + "name": "vs", + "nativeSrc": "4805:2:12", + "nodeType": "YulIdentifier", + "src": "4805:2:12" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "4796:3:12", + "nodeType": "YulIdentifier", + "src": "4796:3:12" + }, + "nativeSrc": "4796:12:12", + "nodeType": "YulFunctionCall", + "src": "4796:12:12" + }, + { + "kind": "number", + "nativeSrc": "4810:2:12", + "nodeType": "YulLiteral", + "src": "4810:2:12", + "type": "", + "value": "27" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4792:3:12", + "nodeType": "YulIdentifier", + "src": "4792:3:12" + }, + "nativeSrc": "4792:21:12", + "nodeType": "YulFunctionCall", + "src": "4792:21:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4779:6:12", + "nodeType": "YulIdentifier", + "src": "4779:6:12" + }, + "nativeSrc": "4779:35:12", + "nodeType": "YulFunctionCall", + "src": "4779:35:12" + }, + "nativeSrc": "4779:35:12", + "nodeType": "YulExpressionStatement", + "src": "4779:35:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4854:4:12", + "nodeType": "YulLiteral", + "src": "4854:4:12", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "signature.offset", + "nativeSrc": "4873:16:12", + "nodeType": "YulIdentifier", + "src": "4873:16:12" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "4860:12:12", + "nodeType": "YulIdentifier", + "src": "4860:12:12" + }, + "nativeSrc": "4860:30:12", + "nodeType": "YulFunctionCall", + "src": "4860:30:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4847:6:12", + "nodeType": "YulIdentifier", + "src": "4847:6:12" + }, + "nativeSrc": "4847:44:12", + "nodeType": "YulFunctionCall", + "src": "4847:44:12" + }, + "nativeSrc": "4847:44:12", + "nodeType": "YulExpressionStatement", + "src": "4847:44:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4931:4:12", + "nodeType": "YulLiteral", + "src": "4931:4:12", + "type": "", + "value": "0x60" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4941:1:12", + "nodeType": "YulLiteral", + "src": "4941:1:12", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4948:1:12", + "nodeType": "YulLiteral", + "src": "4948:1:12", + "type": "", + "value": "1" + }, + { + "name": "vs", + "nativeSrc": "4951:2:12", + "nodeType": "YulIdentifier", + "src": "4951:2:12" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "4944:3:12", + "nodeType": "YulIdentifier", + "src": "4944:3:12" + }, + "nativeSrc": "4944:10:12", + "nodeType": "YulFunctionCall", + "src": "4944:10:12" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "4937:3:12", + "nodeType": "YulIdentifier", + "src": "4937:3:12" + }, + "nativeSrc": "4937:18:12", + "nodeType": "YulFunctionCall", + "src": "4937:18:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4924:6:12", + "nodeType": "YulIdentifier", + "src": "4924:6:12" + }, + "nativeSrc": "4924:32:12", + "nodeType": "YulFunctionCall", + "src": "4924:32:12" + }, + "nativeSrc": "4924:32:12", + "nodeType": "YulExpressionStatement", + "src": "4924:32:12" + } + ] + }, + "nativeSrc": "4669:317:12", + "nodeType": "YulCase", + "src": "4669:317:12", + "value": { + "kind": "number", + "nativeSrc": "4674:2:12", + "nodeType": "YulLiteral", + "src": "4674:2:12", + "type": "", + "value": "64" + } + }, + { + "body": { + "nativeSrc": "5015:200:12", + "nodeType": "YulBlock", + "src": "5015:200:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5048:4:12", + "nodeType": "YulLiteral", + "src": "5048:4:12", + "type": "", + "value": "0x20" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5059:1:12", + "nodeType": "YulLiteral", + "src": "5059:1:12", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "signature.offset", + "nativeSrc": "5079:16:12", + "nodeType": "YulIdentifier", + "src": "5079:16:12" + }, + { + "kind": "number", + "nativeSrc": "5097:4:12", + "nodeType": "YulLiteral", + "src": "5097:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5075:3:12", + "nodeType": "YulIdentifier", + "src": "5075:3:12" + }, + "nativeSrc": "5075:27:12", + "nodeType": "YulFunctionCall", + "src": "5075:27:12" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "5062:12:12", + "nodeType": "YulIdentifier", + "src": "5062:12:12" + }, + "nativeSrc": "5062:41:12", + "nodeType": "YulFunctionCall", + "src": "5062:41:12" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "5054:4:12", + "nodeType": "YulIdentifier", + "src": "5054:4:12" + }, + "nativeSrc": "5054:50:12", + "nodeType": "YulFunctionCall", + "src": "5054:50:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5041:6:12", + "nodeType": "YulIdentifier", + "src": "5041:6:12" + }, + "nativeSrc": "5041:64:12", + "nodeType": "YulFunctionCall", + "src": "5041:64:12" + }, + "nativeSrc": "5041:64:12", + "nodeType": "YulExpressionStatement", + "src": "5041:64:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5151:4:12", + "nodeType": "YulLiteral", + "src": "5151:4:12", + "type": "", + "value": "0x40" + }, + { + "name": "signature.offset", + "nativeSrc": "5157:16:12", + "nodeType": "YulIdentifier", + "src": "5157:16:12" + }, + { + "kind": "number", + "nativeSrc": "5175:4:12", + "nodeType": "YulLiteral", + "src": "5175:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "calldatacopy", + "nativeSrc": "5138:12:12", + "nodeType": "YulIdentifier", + "src": "5138:12:12" + }, + "nativeSrc": "5138:42:12", + "nodeType": "YulFunctionCall", + "src": "5138:42:12" + }, + "nativeSrc": "5138:42:12", + "nodeType": "YulExpressionStatement", + "src": "5138:42:12" + } + ] + }, + "nativeSrc": "5007:208:12", + "nodeType": "YulCase", + "src": "5007:208:12", + "value": { + "kind": "number", + "nativeSrc": "5012:2:12", + "nodeType": "YulLiteral", + "src": "5012:2:12", + "type": "", + "value": "65" + } + }, + { + "body": { + "nativeSrc": "5244:9:12", + "nodeType": "YulBlock", + "src": "5244:9:12", + "statements": [ + { + "nativeSrc": "5246:5:12", + "nodeType": "YulBreak", + "src": "5246:5:12" + } + ] + }, + "nativeSrc": "5236:17:12", + "nodeType": "YulCase", + "src": "5236:17:12", + "value": "default" + } + ], + "expression": { + "name": "signature.length", + "nativeSrc": "4632:16:12", + "nodeType": "YulIdentifier", + "src": "4632:16:12" + }, + "nativeSrc": "4625:628:12", + "nodeType": "YulSwitch", + "src": "4625:628:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5281:4:12", + "nodeType": "YulLiteral", + "src": "5281:4:12", + "type": "", + "value": "0x00" + }, + { + "name": "hash", + "nativeSrc": "5287:4:12", + "nodeType": "YulIdentifier", + "src": "5287:4:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5274:6:12", + "nodeType": "YulIdentifier", + "src": "5274:6:12" + }, + "nativeSrc": "5274:18:12", + "nodeType": "YulFunctionCall", + "src": "5274:18:12" + }, + "nativeSrc": "5274:18:12", + "nodeType": "YulExpressionStatement", + "src": "5274:18:12" + }, + { + "nativeSrc": "5313:68:12", + "nodeType": "YulVariableDeclaration", + "src": "5313:68:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "5347:3:12", + "nodeType": "YulIdentifier", + "src": "5347:3:12" + }, + "nativeSrc": "5347:5:12", + "nodeType": "YulFunctionCall", + "src": "5347:5:12" + }, + { + "kind": "number", + "nativeSrc": "5354:1:12", + "nodeType": "YulLiteral", + "src": "5354:1:12", + "type": "", + "value": "1" + }, + { + "kind": "number", + "nativeSrc": "5357:4:12", + "nodeType": "YulLiteral", + "src": "5357:4:12", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "5363:4:12", + "nodeType": "YulLiteral", + "src": "5363:4:12", + "type": "", + "value": "0x80" + }, + { + "kind": "number", + "nativeSrc": "5369:4:12", + "nodeType": "YulLiteral", + "src": "5369:4:12", + "type": "", + "value": "0x01" + }, + { + "kind": "number", + "nativeSrc": "5375:4:12", + "nodeType": "YulLiteral", + "src": "5375:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "5336:10:12", + "nodeType": "YulIdentifier", + "src": "5336:10:12" + }, + "nativeSrc": "5336:44:12", + "nodeType": "YulFunctionCall", + "src": "5336:44:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "5330:5:12", + "nodeType": "YulIdentifier", + "src": "5330:5:12" + }, + "nativeSrc": "5330:51:12", + "nodeType": "YulFunctionCall", + "src": "5330:51:12" + }, + "variables": [ + { + "name": "recovered", + "nativeSrc": "5317:9:12", + "nodeType": "YulTypedName", + "src": "5317:9:12", + "type": "" + } + ] + }, + { + "nativeSrc": "5402:64:12", + "nodeType": "YulAssignment", + "src": "5402:64:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "5416:14:12", + "nodeType": "YulIdentifier", + "src": "5416:14:12" + }, + "nativeSrc": "5416:16:12", + "nodeType": "YulFunctionCall", + "src": "5416:16:12" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5438:2:12", + "nodeType": "YulLiteral", + "src": "5438:2:12", + "type": "", + "value": "96" + }, + { + "arguments": [ + { + "name": "signer", + "nativeSrc": "5446:6:12", + "nodeType": "YulIdentifier", + "src": "5446:6:12" + }, + { + "name": "recovered", + "nativeSrc": "5454:9:12", + "nodeType": "YulIdentifier", + "src": "5454:9:12" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "5442:3:12", + "nodeType": "YulIdentifier", + "src": "5442:3:12" + }, + "nativeSrc": "5442:22:12", + "nodeType": "YulFunctionCall", + "src": "5442:22:12" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "5434:3:12", + "nodeType": "YulIdentifier", + "src": "5434:3:12" + }, + "nativeSrc": "5434:31:12", + "nodeType": "YulFunctionCall", + "src": "5434:31:12" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "5413:2:12", + "nodeType": "YulIdentifier", + "src": "5413:2:12" + }, + "nativeSrc": "5413:53:12", + "nodeType": "YulFunctionCall", + "src": "5413:53:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "5402:7:12", + "nodeType": "YulIdentifier", + "src": "5402:7:12" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5494:4:12", + "nodeType": "YulLiteral", + "src": "5494:4:12", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "5500:1:12", + "nodeType": "YulLiteral", + "src": "5500:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5487:6:12", + "nodeType": "YulIdentifier", + "src": "5487:6:12" + }, + "nativeSrc": "5487:15:12", + "nodeType": "YulFunctionCall", + "src": "5487:15:12" + }, + "nativeSrc": "5487:15:12", + "nodeType": "YulExpressionStatement", + "src": "5487:15:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5556:4:12", + "nodeType": "YulLiteral", + "src": "5556:4:12", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "5562:1:12", + "nodeType": "YulIdentifier", + "src": "5562:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5549:6:12", + "nodeType": "YulIdentifier", + "src": "5549:6:12" + }, + "nativeSrc": "5549:15:12", + "nodeType": "YulFunctionCall", + "src": "5549:15:12" + }, + "nativeSrc": "5549:15:12", + "nodeType": "YulExpressionStatement", + "src": "5549:15:12" + }, + { + "nativeSrc": "5621:5:12", + "nodeType": "YulBreak", + "src": "5621:5:12" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "signer", + "nativeSrc": "4594:6:12", + "nodeType": "YulIdentifier", + "src": "4594:6:12" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "4582:11:12", + "nodeType": "YulIdentifier", + "src": "4582:11:12" + }, + "nativeSrc": "4582:19:12", + "nodeType": "YulFunctionCall", + "src": "4582:19:12" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "4575:6:12", + "nodeType": "YulIdentifier", + "src": "4575:6:12" + }, + "nativeSrc": "4575:27:12", + "nodeType": "YulFunctionCall", + "src": "4575:27:12" + }, + "nativeSrc": "4572:1072:12", + "nodeType": "YulIf", + "src": "4572:1072:12" + }, + { + "nativeSrc": "5661:29:12", + "nodeType": "YulVariableDeclaration", + "src": "5661:29:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5674:3:12", + "nodeType": "YulLiteral", + "src": "5674:3:12", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "5679:10:12", + "nodeType": "YulLiteral", + "src": "5679:10:12", + "type": "", + "value": "0x1626ba7e" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "5670:3:12", + "nodeType": "YulIdentifier", + "src": "5670:3:12" + }, + "nativeSrc": "5670:20:12", + "nodeType": "YulFunctionCall", + "src": "5670:20:12" + }, + "variables": [ + { + "name": "f", + "nativeSrc": "5665:1:12", + "nodeType": "YulTypedName", + "src": "5665:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "5714:1:12", + "nodeType": "YulIdentifier", + "src": "5714:1:12" + }, + { + "name": "f", + "nativeSrc": "5717:1:12", + "nodeType": "YulIdentifier", + "src": "5717:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5707:6:12", + "nodeType": "YulIdentifier", + "src": "5707:6:12" + }, + "nativeSrc": "5707:12:12", + "nodeType": "YulFunctionCall", + "src": "5707:12:12" + }, + "nativeSrc": "5707:12:12", + "nodeType": "YulExpressionStatement", + "src": "5707:12:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "5806:1:12", + "nodeType": "YulIdentifier", + "src": "5806:1:12" + }, + { + "kind": "number", + "nativeSrc": "5809:4:12", + "nodeType": "YulLiteral", + "src": "5809:4:12", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5802:3:12", + "nodeType": "YulIdentifier", + "src": "5802:3:12" + }, + "nativeSrc": "5802:12:12", + "nodeType": "YulFunctionCall", + "src": "5802:12:12" + }, + { + "name": "hash", + "nativeSrc": "5816:4:12", + "nodeType": "YulIdentifier", + "src": "5816:4:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5795:6:12", + "nodeType": "YulIdentifier", + "src": "5795:6:12" + }, + "nativeSrc": "5795:26:12", + "nodeType": "YulFunctionCall", + "src": "5795:26:12" + }, + "nativeSrc": "5795:26:12", + "nodeType": "YulExpressionStatement", + "src": "5795:26:12" + }, + { + "nativeSrc": "5838:21:12", + "nodeType": "YulVariableDeclaration", + "src": "5838:21:12", + "value": { + "arguments": [ + { + "name": "m", + "nativeSrc": "5851:1:12", + "nodeType": "YulIdentifier", + "src": "5851:1:12" + }, + { + "kind": "number", + "nativeSrc": "5854:4:12", + "nodeType": "YulLiteral", + "src": "5854:4:12", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5847:3:12", + "nodeType": "YulIdentifier", + "src": "5847:3:12" + }, + "nativeSrc": "5847:12:12", + "nodeType": "YulFunctionCall", + "src": "5847:12:12" + }, + "variables": [ + { + "name": "d", + "nativeSrc": "5842:1:12", + "nodeType": "YulTypedName", + "src": "5842:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "d", + "nativeSrc": "5883:1:12", + "nodeType": "YulIdentifier", + "src": "5883:1:12" + }, + { + "kind": "number", + "nativeSrc": "5886:4:12", + "nodeType": "YulLiteral", + "src": "5886:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5876:6:12", + "nodeType": "YulIdentifier", + "src": "5876:6:12" + }, + "nativeSrc": "5876:15:12", + "nodeType": "YulFunctionCall", + "src": "5876:15:12" + }, + "nativeSrc": "5876:15:12", + "nodeType": "YulExpressionStatement", + "src": "5876:15:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "5969:1:12", + "nodeType": "YulIdentifier", + "src": "5969:1:12" + }, + { + "kind": "number", + "nativeSrc": "5972:4:12", + "nodeType": "YulLiteral", + "src": "5972:4:12", + "type": "", + "value": "0x44" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5965:3:12", + "nodeType": "YulIdentifier", + "src": "5965:3:12" + }, + "nativeSrc": "5965:12:12", + "nodeType": "YulFunctionCall", + "src": "5965:12:12" + }, + { + "name": "signature.length", + "nativeSrc": "5979:16:12", + "nodeType": "YulIdentifier", + "src": "5979:16:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5958:6:12", + "nodeType": "YulIdentifier", + "src": "5958:6:12" + }, + "nativeSrc": "5958:38:12", + "nodeType": "YulFunctionCall", + "src": "5958:38:12" + }, + "nativeSrc": "5958:38:12", + "nodeType": "YulExpressionStatement", + "src": "5958:38:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "6076:1:12", + "nodeType": "YulIdentifier", + "src": "6076:1:12" + }, + { + "kind": "number", + "nativeSrc": "6079:4:12", + "nodeType": "YulLiteral", + "src": "6079:4:12", + "type": "", + "value": "0x64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6072:3:12", + "nodeType": "YulIdentifier", + "src": "6072:3:12" + }, + "nativeSrc": "6072:12:12", + "nodeType": "YulFunctionCall", + "src": "6072:12:12" + }, + { + "name": "signature.offset", + "nativeSrc": "6086:16:12", + "nodeType": "YulIdentifier", + "src": "6086:16:12" + }, + { + "name": "signature.length", + "nativeSrc": "6104:16:12", + "nodeType": "YulIdentifier", + "src": "6104:16:12" + } + ], + "functionName": { + "name": "calldatacopy", + "nativeSrc": "6059:12:12", + "nodeType": "YulIdentifier", + "src": "6059:12:12" + }, + "nativeSrc": "6059:62:12", + "nodeType": "YulFunctionCall", + "src": "6059:62:12" + }, + "nativeSrc": "6059:62:12", + "nodeType": "YulExpressionStatement", + "src": "6059:62:12" + }, + { + "nativeSrc": "6138:77:12", + "nodeType": "YulAssignment", + "src": "6138:77:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "6160:3:12", + "nodeType": "YulIdentifier", + "src": "6160:3:12" + }, + "nativeSrc": "6160:5:12", + "nodeType": "YulFunctionCall", + "src": "6160:5:12" + }, + { + "name": "signer", + "nativeSrc": "6167:6:12", + "nodeType": "YulIdentifier", + "src": "6167:6:12" + }, + { + "name": "m", + "nativeSrc": "6175:1:12", + "nodeType": "YulIdentifier", + "src": "6175:1:12" + }, + { + "arguments": [ + { + "name": "signature.length", + "nativeSrc": "6182:16:12", + "nodeType": "YulIdentifier", + "src": "6182:16:12" + }, + { + "kind": "number", + "nativeSrc": "6200:4:12", + "nodeType": "YulLiteral", + "src": "6200:4:12", + "type": "", + "value": "0x64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6178:3:12", + "nodeType": "YulIdentifier", + "src": "6178:3:12" + }, + "nativeSrc": "6178:27:12", + "nodeType": "YulFunctionCall", + "src": "6178:27:12" + }, + { + "name": "d", + "nativeSrc": "6207:1:12", + "nodeType": "YulIdentifier", + "src": "6207:1:12" + }, + { + "kind": "number", + "nativeSrc": "6210:4:12", + "nodeType": "YulLiteral", + "src": "6210:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "6149:10:12", + "nodeType": "YulIdentifier", + "src": "6149:10:12" + }, + "nativeSrc": "6149:66:12", + "nodeType": "YulFunctionCall", + "src": "6149:66:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "6138:7:12", + "nodeType": "YulIdentifier", + "src": "6138:7:12" + } + ] + }, + { + "nativeSrc": "6232:40:12", + "nodeType": "YulAssignment", + "src": "6232:40:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "d", + "nativeSrc": "6256:1:12", + "nodeType": "YulIdentifier", + "src": "6256:1:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "6250:5:12", + "nodeType": "YulIdentifier", + "src": "6250:5:12" + }, + "nativeSrc": "6250:8:12", + "nodeType": "YulFunctionCall", + "src": "6250:8:12" + }, + { + "name": "f", + "nativeSrc": "6260:1:12", + "nodeType": "YulIdentifier", + "src": "6260:1:12" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "6247:2:12", + "nodeType": "YulIdentifier", + "src": "6247:2:12" + }, + "nativeSrc": "6247:15:12", + "nodeType": "YulFunctionCall", + "src": "6247:15:12" + }, + { + "name": "isValid", + "nativeSrc": "6264:7:12", + "nodeType": "YulIdentifier", + "src": "6264:7:12" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "6243:3:12", + "nodeType": "YulIdentifier", + "src": "6243:3:12" + }, + "nativeSrc": "6243:29:12", + "nodeType": "YulFunctionCall", + "src": "6243:29:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "6232:7:12", + "nodeType": "YulIdentifier", + "src": "6232:7:12" + } + ] + }, + { + "nativeSrc": "6289:5:12", + "nodeType": "YulBreak", + "src": "6289:5:12" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "4549:1:12", + "nodeType": "YulLiteral", + "src": "4549:1:12", + "type": "", + "value": "1" + }, + "nativeSrc": "4542:1766:12", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "4551:2:12", + "nodeType": "YulBlock", + "src": "4551:2:12", + "statements": [] + }, + "pre": { + "nativeSrc": "4546:2:12", + "nodeType": "YulBlock", + "src": "4546:2:12", + "statements": [] + }, + "src": "4542:1766:12" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6176, + "isOffset": false, + "isSlot": false, + "src": "5287:4:12", + "valueSize": 1 + }, + { + "declaration": 6176, + "isOffset": false, + "isSlot": false, + "src": "5816:4:12", + "valueSize": 1 + }, + { + "declaration": 6181, + "isOffset": false, + "isSlot": false, + "src": "5402:7:12", + "valueSize": 1 + }, + { + "declaration": 6181, + "isOffset": false, + "isSlot": false, + "src": "6138:7:12", + "valueSize": 1 + }, + { + "declaration": 6181, + "isOffset": false, + "isSlot": false, + "src": "6232:7:12", + "valueSize": 1 + }, + { + "declaration": 6181, + "isOffset": false, + "isSlot": false, + "src": "6264:7:12", + "valueSize": 1 + }, + { + "declaration": 6178, + "isOffset": false, + "isSlot": false, + "src": "4632:16:12", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 6178, + "isOffset": false, + "isSlot": false, + "src": "5979:16:12", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 6178, + "isOffset": false, + "isSlot": false, + "src": "6104:16:12", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 6178, + "isOffset": false, + "isSlot": false, + "src": "6182:16:12", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 6178, + "isOffset": true, + "isSlot": false, + "src": "4730:16:12", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 6178, + "isOffset": true, + "isSlot": false, + "src": "4873:16:12", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 6178, + "isOffset": true, + "isSlot": false, + "src": "5079:16:12", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 6178, + "isOffset": true, + "isSlot": false, + "src": "5157:16:12", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 6178, + "isOffset": true, + "isSlot": false, + "src": "6086:16:12", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 6174, + "isOffset": false, + "isSlot": false, + "src": "4594:6:12", + "valueSize": 1 + }, + { + "declaration": 6174, + "isOffset": false, + "isSlot": false, + "src": "5446:6:12", + "valueSize": 1 + }, + { + "declaration": 6174, + "isOffset": false, + "isSlot": false, + "src": "6167:6:12", + "valueSize": 1 + } + ], + "id": 6192, + "nodeType": "InlineAssembly", + "src": "4486:1832:12" + } + ] + }, + "documentation": { + "id": 6172, + "nodeType": "StructuredDocumentation", + "src": "4024:196:12", + "text": "@dev Returns whether `signature` is valid for `signer` and `hash`.\n If `signer.code.length == 0`, then validate with `ecrecover`, else\n it will validate with ERC1271 on `signer`." + }, + "id": 6194, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isValidSignatureNowCalldata", + "nameLocation": "4234:27:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6179, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6174, + "mutability": "mutable", + "name": "signer", + "nameLocation": "4270:6:12", + "nodeType": "VariableDeclaration", + "scope": 6194, + "src": "4262:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6173, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4262:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6176, + "mutability": "mutable", + "name": "hash", + "nameLocation": "4286:4:12", + "nodeType": "VariableDeclaration", + "scope": 6194, + "src": "4278:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6175, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4278:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6178, + "mutability": "mutable", + "name": "signature", + "nameLocation": "4307:9:12", + "nodeType": "VariableDeclaration", + "scope": 6194, + "src": "4292:24:12", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6177, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4292:5:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4261:56:12" + }, + "returnParameters": { + "id": 6182, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6181, + "mutability": "mutable", + "name": "isValid", + "nameLocation": "4370:7:12", + "nodeType": "VariableDeclaration", + "scope": 6194, + "src": "4365:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6180, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4365:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4364:14:12" + }, + "scope": 6365, + "src": "4225:2099:12", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6218, + "nodeType": "Block", + "src": "6692:1509:12", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 6213, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6208, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6197, + "src": "6706:6:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 6211, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6724:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 6210, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6716:7:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 6209, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6716:7:12", + "typeDescriptions": {} + } + }, + "id": 6212, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6716:10:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "6706:20:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6216, + "nodeType": "IfStatement", + "src": "6702:40:12", + "trueBody": { + "expression": { + "id": 6214, + "name": "isValid", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6206, + "src": "6735:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 6207, + "id": 6215, + "nodeType": "Return", + "src": "6728:14:12" + } + }, + { + "AST": { + "nativeSrc": "6804:1391:12", + "nodeType": "YulBlock", + "src": "6804:1391:12", + "statements": [ + { + "nativeSrc": "6818:20:12", + "nodeType": "YulVariableDeclaration", + "src": "6818:20:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6833:4:12", + "nodeType": "YulLiteral", + "src": "6833:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "6827:5:12", + "nodeType": "YulIdentifier", + "src": "6827:5:12" + }, + "nativeSrc": "6827:11:12", + "nodeType": "YulFunctionCall", + "src": "6827:11:12" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "6822:1:12", + "nodeType": "YulTypedName", + "src": "6822:1:12", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "6863:1322:12", + "nodeType": "YulBlock", + "src": "6863:1322:12", + "statements": [ + { + "body": { + "nativeSrc": "6912:561:12", + "nodeType": "YulBlock", + "src": "6912:561:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6941:4:12", + "nodeType": "YulLiteral", + "src": "6941:4:12", + "type": "", + "value": "0x00" + }, + { + "name": "hash", + "nativeSrc": "6947:4:12", + "nodeType": "YulIdentifier", + "src": "6947:4:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6934:6:12", + "nodeType": "YulIdentifier", + "src": "6934:6:12" + }, + "nativeSrc": "6934:18:12", + "nodeType": "YulFunctionCall", + "src": "6934:18:12" + }, + "nativeSrc": "6934:18:12", + "nodeType": "YulExpressionStatement", + "src": "6934:18:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6980:4:12", + "nodeType": "YulLiteral", + "src": "6980:4:12", + "type": "", + "value": "0x20" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6994:3:12", + "nodeType": "YulLiteral", + "src": "6994:3:12", + "type": "", + "value": "255" + }, + { + "name": "vs", + "nativeSrc": "6999:2:12", + "nodeType": "YulIdentifier", + "src": "6999:2:12" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "6990:3:12", + "nodeType": "YulIdentifier", + "src": "6990:3:12" + }, + "nativeSrc": "6990:12:12", + "nodeType": "YulFunctionCall", + "src": "6990:12:12" + }, + { + "kind": "number", + "nativeSrc": "7004:2:12", + "nodeType": "YulLiteral", + "src": "7004:2:12", + "type": "", + "value": "27" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6986:3:12", + "nodeType": "YulIdentifier", + "src": "6986:3:12" + }, + "nativeSrc": "6986:21:12", + "nodeType": "YulFunctionCall", + "src": "6986:21:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6973:6:12", + "nodeType": "YulIdentifier", + "src": "6973:6:12" + }, + "nativeSrc": "6973:35:12", + "nodeType": "YulFunctionCall", + "src": "6973:35:12" + }, + "nativeSrc": "6973:35:12", + "nodeType": "YulExpressionStatement", + "src": "6973:35:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7044:4:12", + "nodeType": "YulLiteral", + "src": "7044:4:12", + "type": "", + "value": "0x40" + }, + { + "name": "r", + "nativeSrc": "7050:1:12", + "nodeType": "YulIdentifier", + "src": "7050:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7037:6:12", + "nodeType": "YulIdentifier", + "src": "7037:6:12" + }, + "nativeSrc": "7037:15:12", + "nodeType": "YulFunctionCall", + "src": "7037:15:12" + }, + "nativeSrc": "7037:15:12", + "nodeType": "YulExpressionStatement", + "src": "7037:15:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7088:4:12", + "nodeType": "YulLiteral", + "src": "7088:4:12", + "type": "", + "value": "0x60" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7098:1:12", + "nodeType": "YulLiteral", + "src": "7098:1:12", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7105:1:12", + "nodeType": "YulLiteral", + "src": "7105:1:12", + "type": "", + "value": "1" + }, + { + "name": "vs", + "nativeSrc": "7108:2:12", + "nodeType": "YulIdentifier", + "src": "7108:2:12" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "7101:3:12", + "nodeType": "YulIdentifier", + "src": "7101:3:12" + }, + "nativeSrc": "7101:10:12", + "nodeType": "YulFunctionCall", + "src": "7101:10:12" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "7094:3:12", + "nodeType": "YulIdentifier", + "src": "7094:3:12" + }, + "nativeSrc": "7094:18:12", + "nodeType": "YulFunctionCall", + "src": "7094:18:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7081:6:12", + "nodeType": "YulIdentifier", + "src": "7081:6:12" + }, + "nativeSrc": "7081:32:12", + "nodeType": "YulFunctionCall", + "src": "7081:32:12" + }, + "nativeSrc": "7081:32:12", + "nodeType": "YulExpressionStatement", + "src": "7081:32:12" + }, + { + "nativeSrc": "7142:68:12", + "nodeType": "YulVariableDeclaration", + "src": "7142:68:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "7176:3:12", + "nodeType": "YulIdentifier", + "src": "7176:3:12" + }, + "nativeSrc": "7176:5:12", + "nodeType": "YulFunctionCall", + "src": "7176:5:12" + }, + { + "kind": "number", + "nativeSrc": "7183:1:12", + "nodeType": "YulLiteral", + "src": "7183:1:12", + "type": "", + "value": "1" + }, + { + "kind": "number", + "nativeSrc": "7186:4:12", + "nodeType": "YulLiteral", + "src": "7186:4:12", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "7192:4:12", + "nodeType": "YulLiteral", + "src": "7192:4:12", + "type": "", + "value": "0x80" + }, + { + "kind": "number", + "nativeSrc": "7198:4:12", + "nodeType": "YulLiteral", + "src": "7198:4:12", + "type": "", + "value": "0x01" + }, + { + "kind": "number", + "nativeSrc": "7204:4:12", + "nodeType": "YulLiteral", + "src": "7204:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "7165:10:12", + "nodeType": "YulIdentifier", + "src": "7165:10:12" + }, + "nativeSrc": "7165:44:12", + "nodeType": "YulFunctionCall", + "src": "7165:44:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "7159:5:12", + "nodeType": "YulIdentifier", + "src": "7159:5:12" + }, + "nativeSrc": "7159:51:12", + "nodeType": "YulFunctionCall", + "src": "7159:51:12" + }, + "variables": [ + { + "name": "recovered", + "nativeSrc": "7146:9:12", + "nodeType": "YulTypedName", + "src": "7146:9:12", + "type": "" + } + ] + }, + { + "nativeSrc": "7231:64:12", + "nodeType": "YulAssignment", + "src": "7231:64:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "7245:14:12", + "nodeType": "YulIdentifier", + "src": "7245:14:12" + }, + "nativeSrc": "7245:16:12", + "nodeType": "YulFunctionCall", + "src": "7245:16:12" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7267:2:12", + "nodeType": "YulLiteral", + "src": "7267:2:12", + "type": "", + "value": "96" + }, + { + "arguments": [ + { + "name": "signer", + "nativeSrc": "7275:6:12", + "nodeType": "YulIdentifier", + "src": "7275:6:12" + }, + { + "name": "recovered", + "nativeSrc": "7283:9:12", + "nodeType": "YulIdentifier", + "src": "7283:9:12" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "7271:3:12", + "nodeType": "YulIdentifier", + "src": "7271:3:12" + }, + "nativeSrc": "7271:22:12", + "nodeType": "YulFunctionCall", + "src": "7271:22:12" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "7263:3:12", + "nodeType": "YulIdentifier", + "src": "7263:3:12" + }, + "nativeSrc": "7263:31:12", + "nodeType": "YulFunctionCall", + "src": "7263:31:12" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "7242:2:12", + "nodeType": "YulIdentifier", + "src": "7242:2:12" + }, + "nativeSrc": "7242:53:12", + "nodeType": "YulFunctionCall", + "src": "7242:53:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "7231:7:12", + "nodeType": "YulIdentifier", + "src": "7231:7:12" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7323:4:12", + "nodeType": "YulLiteral", + "src": "7323:4:12", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "7329:1:12", + "nodeType": "YulLiteral", + "src": "7329:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7316:6:12", + "nodeType": "YulIdentifier", + "src": "7316:6:12" + }, + "nativeSrc": "7316:15:12", + "nodeType": "YulFunctionCall", + "src": "7316:15:12" + }, + "nativeSrc": "7316:15:12", + "nodeType": "YulExpressionStatement", + "src": "7316:15:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7385:4:12", + "nodeType": "YulLiteral", + "src": "7385:4:12", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "7391:1:12", + "nodeType": "YulIdentifier", + "src": "7391:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7378:6:12", + "nodeType": "YulIdentifier", + "src": "7378:6:12" + }, + "nativeSrc": "7378:15:12", + "nodeType": "YulFunctionCall", + "src": "7378:15:12" + }, + "nativeSrc": "7378:15:12", + "nodeType": "YulExpressionStatement", + "src": "7378:15:12" + }, + { + "nativeSrc": "7450:5:12", + "nodeType": "YulBreak", + "src": "7450:5:12" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "signer", + "nativeSrc": "6903:6:12", + "nodeType": "YulIdentifier", + "src": "6903:6:12" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "6891:11:12", + "nodeType": "YulIdentifier", + "src": "6891:11:12" + }, + "nativeSrc": "6891:19:12", + "nodeType": "YulFunctionCall", + "src": "6891:19:12" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "6884:6:12", + "nodeType": "YulIdentifier", + "src": "6884:6:12" + }, + "nativeSrc": "6884:27:12", + "nodeType": "YulFunctionCall", + "src": "6884:27:12" + }, + "nativeSrc": "6881:592:12", + "nodeType": "YulIf", + "src": "6881:592:12" + }, + { + "nativeSrc": "7490:29:12", + "nodeType": "YulVariableDeclaration", + "src": "7490:29:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7503:3:12", + "nodeType": "YulLiteral", + "src": "7503:3:12", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "7508:10:12", + "nodeType": "YulLiteral", + "src": "7508:10:12", + "type": "", + "value": "0x1626ba7e" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "7499:3:12", + "nodeType": "YulIdentifier", + "src": "7499:3:12" + }, + "nativeSrc": "7499:20:12", + "nodeType": "YulFunctionCall", + "src": "7499:20:12" + }, + "variables": [ + { + "name": "f", + "nativeSrc": "7494:1:12", + "nodeType": "YulTypedName", + "src": "7494:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "7543:1:12", + "nodeType": "YulIdentifier", + "src": "7543:1:12" + }, + { + "name": "f", + "nativeSrc": "7546:1:12", + "nodeType": "YulIdentifier", + "src": "7546:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7536:6:12", + "nodeType": "YulIdentifier", + "src": "7536:6:12" + }, + "nativeSrc": "7536:12:12", + "nodeType": "YulFunctionCall", + "src": "7536:12:12" + }, + "nativeSrc": "7536:12:12", + "nodeType": "YulExpressionStatement", + "src": "7536:12:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "7635:1:12", + "nodeType": "YulIdentifier", + "src": "7635:1:12" + }, + { + "kind": "number", + "nativeSrc": "7638:4:12", + "nodeType": "YulLiteral", + "src": "7638:4:12", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7631:3:12", + "nodeType": "YulIdentifier", + "src": "7631:3:12" + }, + "nativeSrc": "7631:12:12", + "nodeType": "YulFunctionCall", + "src": "7631:12:12" + }, + { + "name": "hash", + "nativeSrc": "7645:4:12", + "nodeType": "YulIdentifier", + "src": "7645:4:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7624:6:12", + "nodeType": "YulIdentifier", + "src": "7624:6:12" + }, + "nativeSrc": "7624:26:12", + "nodeType": "YulFunctionCall", + "src": "7624:26:12" + }, + "nativeSrc": "7624:26:12", + "nodeType": "YulExpressionStatement", + "src": "7624:26:12" + }, + { + "nativeSrc": "7667:21:12", + "nodeType": "YulVariableDeclaration", + "src": "7667:21:12", + "value": { + "arguments": [ + { + "name": "m", + "nativeSrc": "7680:1:12", + "nodeType": "YulIdentifier", + "src": "7680:1:12" + }, + { + "kind": "number", + "nativeSrc": "7683:4:12", + "nodeType": "YulLiteral", + "src": "7683:4:12", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7676:3:12", + "nodeType": "YulIdentifier", + "src": "7676:3:12" + }, + "nativeSrc": "7676:12:12", + "nodeType": "YulFunctionCall", + "src": "7676:12:12" + }, + "variables": [ + { + "name": "d", + "nativeSrc": "7671:1:12", + "nodeType": "YulTypedName", + "src": "7671:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "d", + "nativeSrc": "7712:1:12", + "nodeType": "YulIdentifier", + "src": "7712:1:12" + }, + { + "kind": "number", + "nativeSrc": "7715:4:12", + "nodeType": "YulLiteral", + "src": "7715:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7705:6:12", + "nodeType": "YulIdentifier", + "src": "7705:6:12" + }, + "nativeSrc": "7705:15:12", + "nodeType": "YulFunctionCall", + "src": "7705:15:12" + }, + "nativeSrc": "7705:15:12", + "nodeType": "YulExpressionStatement", + "src": "7705:15:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "7798:1:12", + "nodeType": "YulIdentifier", + "src": "7798:1:12" + }, + { + "kind": "number", + "nativeSrc": "7801:4:12", + "nodeType": "YulLiteral", + "src": "7801:4:12", + "type": "", + "value": "0x44" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7794:3:12", + "nodeType": "YulIdentifier", + "src": "7794:3:12" + }, + "nativeSrc": "7794:12:12", + "nodeType": "YulFunctionCall", + "src": "7794:12:12" + }, + { + "kind": "number", + "nativeSrc": "7808:2:12", + "nodeType": "YulLiteral", + "src": "7808:2:12", + "type": "", + "value": "65" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7787:6:12", + "nodeType": "YulIdentifier", + "src": "7787:6:12" + }, + "nativeSrc": "7787:24:12", + "nodeType": "YulFunctionCall", + "src": "7787:24:12" + }, + "nativeSrc": "7787:24:12", + "nodeType": "YulExpressionStatement", + "src": "7787:24:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "7867:1:12", + "nodeType": "YulIdentifier", + "src": "7867:1:12" + }, + { + "kind": "number", + "nativeSrc": "7870:4:12", + "nodeType": "YulLiteral", + "src": "7870:4:12", + "type": "", + "value": "0x64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7863:3:12", + "nodeType": "YulIdentifier", + "src": "7863:3:12" + }, + "nativeSrc": "7863:12:12", + "nodeType": "YulFunctionCall", + "src": "7863:12:12" + }, + { + "name": "r", + "nativeSrc": "7877:1:12", + "nodeType": "YulIdentifier", + "src": "7877:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7856:6:12", + "nodeType": "YulIdentifier", + "src": "7856:6:12" + }, + "nativeSrc": "7856:23:12", + "nodeType": "YulFunctionCall", + "src": "7856:23:12" + }, + "nativeSrc": "7856:23:12", + "nodeType": "YulExpressionStatement", + "src": "7856:23:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "7915:1:12", + "nodeType": "YulIdentifier", + "src": "7915:1:12" + }, + { + "kind": "number", + "nativeSrc": "7918:4:12", + "nodeType": "YulLiteral", + "src": "7918:4:12", + "type": "", + "value": "0x84" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7911:3:12", + "nodeType": "YulIdentifier", + "src": "7911:3:12" + }, + "nativeSrc": "7911:12:12", + "nodeType": "YulFunctionCall", + "src": "7911:12:12" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7929:1:12", + "nodeType": "YulLiteral", + "src": "7929:1:12", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7936:1:12", + "nodeType": "YulLiteral", + "src": "7936:1:12", + "type": "", + "value": "1" + }, + { + "name": "vs", + "nativeSrc": "7939:2:12", + "nodeType": "YulIdentifier", + "src": "7939:2:12" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "7932:3:12", + "nodeType": "YulIdentifier", + "src": "7932:3:12" + }, + "nativeSrc": "7932:10:12", + "nodeType": "YulFunctionCall", + "src": "7932:10:12" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "7925:3:12", + "nodeType": "YulIdentifier", + "src": "7925:3:12" + }, + "nativeSrc": "7925:18:12", + "nodeType": "YulFunctionCall", + "src": "7925:18:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7904:6:12", + "nodeType": "YulIdentifier", + "src": "7904:6:12" + }, + "nativeSrc": "7904:40:12", + "nodeType": "YulFunctionCall", + "src": "7904:40:12" + }, + "nativeSrc": "7904:40:12", + "nodeType": "YulExpressionStatement", + "src": "7904:40:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "7981:1:12", + "nodeType": "YulIdentifier", + "src": "7981:1:12" + }, + { + "kind": "number", + "nativeSrc": "7984:4:12", + "nodeType": "YulLiteral", + "src": "7984:4:12", + "type": "", + "value": "0xa4" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7977:3:12", + "nodeType": "YulIdentifier", + "src": "7977:3:12" + }, + "nativeSrc": "7977:12:12", + "nodeType": "YulFunctionCall", + "src": "7977:12:12" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7999:3:12", + "nodeType": "YulLiteral", + "src": "7999:3:12", + "type": "", + "value": "255" + }, + { + "name": "vs", + "nativeSrc": "8004:2:12", + "nodeType": "YulIdentifier", + "src": "8004:2:12" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "7995:3:12", + "nodeType": "YulIdentifier", + "src": "7995:3:12" + }, + "nativeSrc": "7995:12:12", + "nodeType": "YulFunctionCall", + "src": "7995:12:12" + }, + { + "kind": "number", + "nativeSrc": "8009:2:12", + "nodeType": "YulLiteral", + "src": "8009:2:12", + "type": "", + "value": "27" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7991:3:12", + "nodeType": "YulIdentifier", + "src": "7991:3:12" + }, + "nativeSrc": "7991:21:12", + "nodeType": "YulFunctionCall", + "src": "7991:21:12" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "7969:7:12", + "nodeType": "YulIdentifier", + "src": "7969:7:12" + }, + "nativeSrc": "7969:44:12", + "nodeType": "YulFunctionCall", + "src": "7969:44:12" + }, + "nativeSrc": "7969:44:12", + "nodeType": "YulExpressionStatement", + "src": "7969:44:12" + }, + { + "nativeSrc": "8038:54:12", + "nodeType": "YulAssignment", + "src": "8038:54:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "8060:3:12", + "nodeType": "YulIdentifier", + "src": "8060:3:12" + }, + "nativeSrc": "8060:5:12", + "nodeType": "YulFunctionCall", + "src": "8060:5:12" + }, + { + "name": "signer", + "nativeSrc": "8067:6:12", + "nodeType": "YulIdentifier", + "src": "8067:6:12" + }, + { + "name": "m", + "nativeSrc": "8075:1:12", + "nodeType": "YulIdentifier", + "src": "8075:1:12" + }, + { + "kind": "number", + "nativeSrc": "8078:4:12", + "nodeType": "YulLiteral", + "src": "8078:4:12", + "type": "", + "value": "0xa5" + }, + { + "name": "d", + "nativeSrc": "8084:1:12", + "nodeType": "YulIdentifier", + "src": "8084:1:12" + }, + { + "kind": "number", + "nativeSrc": "8087:4:12", + "nodeType": "YulLiteral", + "src": "8087:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "8049:10:12", + "nodeType": "YulIdentifier", + "src": "8049:10:12" + }, + "nativeSrc": "8049:43:12", + "nodeType": "YulFunctionCall", + "src": "8049:43:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "8038:7:12", + "nodeType": "YulIdentifier", + "src": "8038:7:12" + } + ] + }, + { + "nativeSrc": "8109:40:12", + "nodeType": "YulAssignment", + "src": "8109:40:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "d", + "nativeSrc": "8133:1:12", + "nodeType": "YulIdentifier", + "src": "8133:1:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "8127:5:12", + "nodeType": "YulIdentifier", + "src": "8127:5:12" + }, + "nativeSrc": "8127:8:12", + "nodeType": "YulFunctionCall", + "src": "8127:8:12" + }, + { + "name": "f", + "nativeSrc": "8137:1:12", + "nodeType": "YulIdentifier", + "src": "8137:1:12" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "8124:2:12", + "nodeType": "YulIdentifier", + "src": "8124:2:12" + }, + "nativeSrc": "8124:15:12", + "nodeType": "YulFunctionCall", + "src": "8124:15:12" + }, + { + "name": "isValid", + "nativeSrc": "8141:7:12", + "nodeType": "YulIdentifier", + "src": "8141:7:12" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "8120:3:12", + "nodeType": "YulIdentifier", + "src": "8120:3:12" + }, + "nativeSrc": "8120:29:12", + "nodeType": "YulFunctionCall", + "src": "8120:29:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "8109:7:12", + "nodeType": "YulIdentifier", + "src": "8109:7:12" + } + ] + }, + { + "nativeSrc": "8166:5:12", + "nodeType": "YulBreak", + "src": "8166:5:12" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "6858:1:12", + "nodeType": "YulLiteral", + "src": "6858:1:12", + "type": "", + "value": "1" + }, + "nativeSrc": "6851:1334:12", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "6860:2:12", + "nodeType": "YulBlock", + "src": "6860:2:12", + "statements": [] + }, + "pre": { + "nativeSrc": "6855:2:12", + "nodeType": "YulBlock", + "src": "6855:2:12", + "statements": [] + }, + "src": "6851:1334:12" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6199, + "isOffset": false, + "isSlot": false, + "src": "6947:4:12", + "valueSize": 1 + }, + { + "declaration": 6199, + "isOffset": false, + "isSlot": false, + "src": "7645:4:12", + "valueSize": 1 + }, + { + "declaration": 6206, + "isOffset": false, + "isSlot": false, + "src": "7231:7:12", + "valueSize": 1 + }, + { + "declaration": 6206, + "isOffset": false, + "isSlot": false, + "src": "8038:7:12", + "valueSize": 1 + }, + { + "declaration": 6206, + "isOffset": false, + "isSlot": false, + "src": "8109:7:12", + "valueSize": 1 + }, + { + "declaration": 6206, + "isOffset": false, + "isSlot": false, + "src": "8141:7:12", + "valueSize": 1 + }, + { + "declaration": 6201, + "isOffset": false, + "isSlot": false, + "src": "7050:1:12", + "valueSize": 1 + }, + { + "declaration": 6201, + "isOffset": false, + "isSlot": false, + "src": "7877:1:12", + "valueSize": 1 + }, + { + "declaration": 6197, + "isOffset": false, + "isSlot": false, + "src": "6903:6:12", + "valueSize": 1 + }, + { + "declaration": 6197, + "isOffset": false, + "isSlot": false, + "src": "7275:6:12", + "valueSize": 1 + }, + { + "declaration": 6197, + "isOffset": false, + "isSlot": false, + "src": "8067:6:12", + "valueSize": 1 + }, + { + "declaration": 6203, + "isOffset": false, + "isSlot": false, + "src": "6999:2:12", + "valueSize": 1 + }, + { + "declaration": 6203, + "isOffset": false, + "isSlot": false, + "src": "7108:2:12", + "valueSize": 1 + }, + { + "declaration": 6203, + "isOffset": false, + "isSlot": false, + "src": "7939:2:12", + "valueSize": 1 + }, + { + "declaration": 6203, + "isOffset": false, + "isSlot": false, + "src": "8004:2:12", + "valueSize": 1 + } + ], + "id": 6217, + "nodeType": "InlineAssembly", + "src": "6795:1400:12" + } + ] + }, + "documentation": { + "id": 6195, + "nodeType": "StructuredDocumentation", + "src": "6330:210:12", + "text": "@dev Returns whether the signature (`r`, `vs`) is valid for `signer` and `hash`.\n If `signer.code.length == 0`, then validate with `ecrecover`, else\n it will validate with ERC1271 on `signer`." + }, + "id": 6219, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isValidSignatureNow", + "nameLocation": "6554:19:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6204, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6197, + "mutability": "mutable", + "name": "signer", + "nameLocation": "6582:6:12", + "nodeType": "VariableDeclaration", + "scope": 6219, + "src": "6574:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6196, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6574:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6199, + "mutability": "mutable", + "name": "hash", + "nameLocation": "6598:4:12", + "nodeType": "VariableDeclaration", + "scope": 6219, + "src": "6590:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6198, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6590:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6201, + "mutability": "mutable", + "name": "r", + "nameLocation": "6612:1:12", + "nodeType": "VariableDeclaration", + "scope": 6219, + "src": "6604:9:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6200, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6604:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6203, + "mutability": "mutable", + "name": "vs", + "nameLocation": "6623:2:12", + "nodeType": "VariableDeclaration", + "scope": 6219, + "src": "6615:10:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6202, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6615:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "6573:53:12" + }, + "returnParameters": { + "id": 6207, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6206, + "mutability": "mutable", + "name": "isValid", + "nameLocation": "6679:7:12", + "nodeType": "VariableDeclaration", + "scope": 6219, + "src": "6674:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6205, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6674:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "6673:14:12" + }, + "scope": 6365, + "src": "6545:1656:12", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6245, + "nodeType": "Block", + "src": "8581:1446:12", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 6240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6235, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6222, + "src": "8595:6:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 6238, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8613:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 6237, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8605:7:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 6236, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8605:7:12", + "typeDescriptions": {} + } + }, + "id": 6239, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8605:10:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8595:20:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6243, + "nodeType": "IfStatement", + "src": "8591:40:12", + "trueBody": { + "expression": { + "id": 6241, + "name": "isValid", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6233, + "src": "8624:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 6234, + "id": 6242, + "nodeType": "Return", + "src": "8617:14:12" + } + }, + { + "AST": { + "nativeSrc": "8693:1328:12", + "nodeType": "YulBlock", + "src": "8693:1328:12", + "statements": [ + { + "nativeSrc": "8707:20:12", + "nodeType": "YulVariableDeclaration", + "src": "8707:20:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8722:4:12", + "nodeType": "YulLiteral", + "src": "8722:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "8716:5:12", + "nodeType": "YulIdentifier", + "src": "8716:5:12" + }, + "nativeSrc": "8716:11:12", + "nodeType": "YulFunctionCall", + "src": "8716:11:12" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "8711:1:12", + "nodeType": "YulTypedName", + "src": "8711:1:12", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "8752:1259:12", + "nodeType": "YulBlock", + "src": "8752:1259:12", + "statements": [ + { + "body": { + "nativeSrc": "8801:535:12", + "nodeType": "YulBlock", + "src": "8801:535:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8830:4:12", + "nodeType": "YulLiteral", + "src": "8830:4:12", + "type": "", + "value": "0x00" + }, + { + "name": "hash", + "nativeSrc": "8836:4:12", + "nodeType": "YulIdentifier", + "src": "8836:4:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8823:6:12", + "nodeType": "YulIdentifier", + "src": "8823:6:12" + }, + "nativeSrc": "8823:18:12", + "nodeType": "YulFunctionCall", + "src": "8823:18:12" + }, + "nativeSrc": "8823:18:12", + "nodeType": "YulExpressionStatement", + "src": "8823:18:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8869:4:12", + "nodeType": "YulLiteral", + "src": "8869:4:12", + "type": "", + "value": "0x20" + }, + { + "arguments": [ + { + "name": "v", + "nativeSrc": "8879:1:12", + "nodeType": "YulIdentifier", + "src": "8879:1:12" + }, + { + "kind": "number", + "nativeSrc": "8882:4:12", + "nodeType": "YulLiteral", + "src": "8882:4:12", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "8875:3:12", + "nodeType": "YulIdentifier", + "src": "8875:3:12" + }, + "nativeSrc": "8875:12:12", + "nodeType": "YulFunctionCall", + "src": "8875:12:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8862:6:12", + "nodeType": "YulIdentifier", + "src": "8862:6:12" + }, + "nativeSrc": "8862:26:12", + "nodeType": "YulFunctionCall", + "src": "8862:26:12" + }, + "nativeSrc": "8862:26:12", + "nodeType": "YulExpressionStatement", + "src": "8862:26:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8924:4:12", + "nodeType": "YulLiteral", + "src": "8924:4:12", + "type": "", + "value": "0x40" + }, + { + "name": "r", + "nativeSrc": "8930:1:12", + "nodeType": "YulIdentifier", + "src": "8930:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8917:6:12", + "nodeType": "YulIdentifier", + "src": "8917:6:12" + }, + "nativeSrc": "8917:15:12", + "nodeType": "YulFunctionCall", + "src": "8917:15:12" + }, + "nativeSrc": "8917:15:12", + "nodeType": "YulExpressionStatement", + "src": "8917:15:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8968:4:12", + "nodeType": "YulLiteral", + "src": "8968:4:12", + "type": "", + "value": "0x60" + }, + { + "name": "s", + "nativeSrc": "8974:1:12", + "nodeType": "YulIdentifier", + "src": "8974:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8961:6:12", + "nodeType": "YulIdentifier", + "src": "8961:6:12" + }, + "nativeSrc": "8961:15:12", + "nodeType": "YulFunctionCall", + "src": "8961:15:12" + }, + "nativeSrc": "8961:15:12", + "nodeType": "YulExpressionStatement", + "src": "8961:15:12" + }, + { + "nativeSrc": "9005:68:12", + "nodeType": "YulVariableDeclaration", + "src": "9005:68:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "9039:3:12", + "nodeType": "YulIdentifier", + "src": "9039:3:12" + }, + "nativeSrc": "9039:5:12", + "nodeType": "YulFunctionCall", + "src": "9039:5:12" + }, + { + "kind": "number", + "nativeSrc": "9046:1:12", + "nodeType": "YulLiteral", + "src": "9046:1:12", + "type": "", + "value": "1" + }, + { + "kind": "number", + "nativeSrc": "9049:4:12", + "nodeType": "YulLiteral", + "src": "9049:4:12", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "9055:4:12", + "nodeType": "YulLiteral", + "src": "9055:4:12", + "type": "", + "value": "0x80" + }, + { + "kind": "number", + "nativeSrc": "9061:4:12", + "nodeType": "YulLiteral", + "src": "9061:4:12", + "type": "", + "value": "0x01" + }, + { + "kind": "number", + "nativeSrc": "9067:4:12", + "nodeType": "YulLiteral", + "src": "9067:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "9028:10:12", + "nodeType": "YulIdentifier", + "src": "9028:10:12" + }, + "nativeSrc": "9028:44:12", + "nodeType": "YulFunctionCall", + "src": "9028:44:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "9022:5:12", + "nodeType": "YulIdentifier", + "src": "9022:5:12" + }, + "nativeSrc": "9022:51:12", + "nodeType": "YulFunctionCall", + "src": "9022:51:12" + }, + "variables": [ + { + "name": "recovered", + "nativeSrc": "9009:9:12", + "nodeType": "YulTypedName", + "src": "9009:9:12", + "type": "" + } + ] + }, + { + "nativeSrc": "9094:64:12", + "nodeType": "YulAssignment", + "src": "9094:64:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "9108:14:12", + "nodeType": "YulIdentifier", + "src": "9108:14:12" + }, + "nativeSrc": "9108:16:12", + "nodeType": "YulFunctionCall", + "src": "9108:16:12" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9130:2:12", + "nodeType": "YulLiteral", + "src": "9130:2:12", + "type": "", + "value": "96" + }, + { + "arguments": [ + { + "name": "signer", + "nativeSrc": "9138:6:12", + "nodeType": "YulIdentifier", + "src": "9138:6:12" + }, + { + "name": "recovered", + "nativeSrc": "9146:9:12", + "nodeType": "YulIdentifier", + "src": "9146:9:12" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "9134:3:12", + "nodeType": "YulIdentifier", + "src": "9134:3:12" + }, + "nativeSrc": "9134:22:12", + "nodeType": "YulFunctionCall", + "src": "9134:22:12" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "9126:3:12", + "nodeType": "YulIdentifier", + "src": "9126:3:12" + }, + "nativeSrc": "9126:31:12", + "nodeType": "YulFunctionCall", + "src": "9126:31:12" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "9105:2:12", + "nodeType": "YulIdentifier", + "src": "9105:2:12" + }, + "nativeSrc": "9105:53:12", + "nodeType": "YulFunctionCall", + "src": "9105:53:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "9094:7:12", + "nodeType": "YulIdentifier", + "src": "9094:7:12" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9186:4:12", + "nodeType": "YulLiteral", + "src": "9186:4:12", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "9192:1:12", + "nodeType": "YulLiteral", + "src": "9192:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9179:6:12", + "nodeType": "YulIdentifier", + "src": "9179:6:12" + }, + "nativeSrc": "9179:15:12", + "nodeType": "YulFunctionCall", + "src": "9179:15:12" + }, + "nativeSrc": "9179:15:12", + "nodeType": "YulExpressionStatement", + "src": "9179:15:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9248:4:12", + "nodeType": "YulLiteral", + "src": "9248:4:12", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "9254:1:12", + "nodeType": "YulIdentifier", + "src": "9254:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9241:6:12", + "nodeType": "YulIdentifier", + "src": "9241:6:12" + }, + "nativeSrc": "9241:15:12", + "nodeType": "YulFunctionCall", + "src": "9241:15:12" + }, + "nativeSrc": "9241:15:12", + "nodeType": "YulExpressionStatement", + "src": "9241:15:12" + }, + { + "nativeSrc": "9313:5:12", + "nodeType": "YulBreak", + "src": "9313:5:12" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "signer", + "nativeSrc": "8792:6:12", + "nodeType": "YulIdentifier", + "src": "8792:6:12" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "8780:11:12", + "nodeType": "YulIdentifier", + "src": "8780:11:12" + }, + "nativeSrc": "8780:19:12", + "nodeType": "YulFunctionCall", + "src": "8780:19:12" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "8773:6:12", + "nodeType": "YulIdentifier", + "src": "8773:6:12" + }, + "nativeSrc": "8773:27:12", + "nodeType": "YulFunctionCall", + "src": "8773:27:12" + }, + "nativeSrc": "8770:566:12", + "nodeType": "YulIf", + "src": "8770:566:12" + }, + { + "nativeSrc": "9353:29:12", + "nodeType": "YulVariableDeclaration", + "src": "9353:29:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9366:3:12", + "nodeType": "YulLiteral", + "src": "9366:3:12", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "9371:10:12", + "nodeType": "YulLiteral", + "src": "9371:10:12", + "type": "", + "value": "0x1626ba7e" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "9362:3:12", + "nodeType": "YulIdentifier", + "src": "9362:3:12" + }, + "nativeSrc": "9362:20:12", + "nodeType": "YulFunctionCall", + "src": "9362:20:12" + }, + "variables": [ + { + "name": "f", + "nativeSrc": "9357:1:12", + "nodeType": "YulTypedName", + "src": "9357:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "9406:1:12", + "nodeType": "YulIdentifier", + "src": "9406:1:12" + }, + { + "name": "f", + "nativeSrc": "9409:1:12", + "nodeType": "YulIdentifier", + "src": "9409:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9399:6:12", + "nodeType": "YulIdentifier", + "src": "9399:6:12" + }, + "nativeSrc": "9399:12:12", + "nodeType": "YulFunctionCall", + "src": "9399:12:12" + }, + "nativeSrc": "9399:12:12", + "nodeType": "YulExpressionStatement", + "src": "9399:12:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "9498:1:12", + "nodeType": "YulIdentifier", + "src": "9498:1:12" + }, + { + "kind": "number", + "nativeSrc": "9501:4:12", + "nodeType": "YulLiteral", + "src": "9501:4:12", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9494:3:12", + "nodeType": "YulIdentifier", + "src": "9494:3:12" + }, + "nativeSrc": "9494:12:12", + "nodeType": "YulFunctionCall", + "src": "9494:12:12" + }, + { + "name": "hash", + "nativeSrc": "9508:4:12", + "nodeType": "YulIdentifier", + "src": "9508:4:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9487:6:12", + "nodeType": "YulIdentifier", + "src": "9487:6:12" + }, + "nativeSrc": "9487:26:12", + "nodeType": "YulFunctionCall", + "src": "9487:26:12" + }, + "nativeSrc": "9487:26:12", + "nodeType": "YulExpressionStatement", + "src": "9487:26:12" + }, + { + "nativeSrc": "9530:21:12", + "nodeType": "YulVariableDeclaration", + "src": "9530:21:12", + "value": { + "arguments": [ + { + "name": "m", + "nativeSrc": "9543:1:12", + "nodeType": "YulIdentifier", + "src": "9543:1:12" + }, + { + "kind": "number", + "nativeSrc": "9546:4:12", + "nodeType": "YulLiteral", + "src": "9546:4:12", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9539:3:12", + "nodeType": "YulIdentifier", + "src": "9539:3:12" + }, + "nativeSrc": "9539:12:12", + "nodeType": "YulFunctionCall", + "src": "9539:12:12" + }, + "variables": [ + { + "name": "d", + "nativeSrc": "9534:1:12", + "nodeType": "YulTypedName", + "src": "9534:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "d", + "nativeSrc": "9575:1:12", + "nodeType": "YulIdentifier", + "src": "9575:1:12" + }, + { + "kind": "number", + "nativeSrc": "9578:4:12", + "nodeType": "YulLiteral", + "src": "9578:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9568:6:12", + "nodeType": "YulIdentifier", + "src": "9568:6:12" + }, + "nativeSrc": "9568:15:12", + "nodeType": "YulFunctionCall", + "src": "9568:15:12" + }, + "nativeSrc": "9568:15:12", + "nodeType": "YulExpressionStatement", + "src": "9568:15:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "9661:1:12", + "nodeType": "YulIdentifier", + "src": "9661:1:12" + }, + { + "kind": "number", + "nativeSrc": "9664:4:12", + "nodeType": "YulLiteral", + "src": "9664:4:12", + "type": "", + "value": "0x44" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9657:3:12", + "nodeType": "YulIdentifier", + "src": "9657:3:12" + }, + "nativeSrc": "9657:12:12", + "nodeType": "YulFunctionCall", + "src": "9657:12:12" + }, + { + "kind": "number", + "nativeSrc": "9671:2:12", + "nodeType": "YulLiteral", + "src": "9671:2:12", + "type": "", + "value": "65" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9650:6:12", + "nodeType": "YulIdentifier", + "src": "9650:6:12" + }, + "nativeSrc": "9650:24:12", + "nodeType": "YulFunctionCall", + "src": "9650:24:12" + }, + "nativeSrc": "9650:24:12", + "nodeType": "YulExpressionStatement", + "src": "9650:24:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "9730:1:12", + "nodeType": "YulIdentifier", + "src": "9730:1:12" + }, + { + "kind": "number", + "nativeSrc": "9733:4:12", + "nodeType": "YulLiteral", + "src": "9733:4:12", + "type": "", + "value": "0x64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9726:3:12", + "nodeType": "YulIdentifier", + "src": "9726:3:12" + }, + "nativeSrc": "9726:12:12", + "nodeType": "YulFunctionCall", + "src": "9726:12:12" + }, + { + "name": "r", + "nativeSrc": "9740:1:12", + "nodeType": "YulIdentifier", + "src": "9740:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9719:6:12", + "nodeType": "YulIdentifier", + "src": "9719:6:12" + }, + "nativeSrc": "9719:23:12", + "nodeType": "YulFunctionCall", + "src": "9719:23:12" + }, + "nativeSrc": "9719:23:12", + "nodeType": "YulExpressionStatement", + "src": "9719:23:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "9778:1:12", + "nodeType": "YulIdentifier", + "src": "9778:1:12" + }, + { + "kind": "number", + "nativeSrc": "9781:4:12", + "nodeType": "YulLiteral", + "src": "9781:4:12", + "type": "", + "value": "0x84" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9774:3:12", + "nodeType": "YulIdentifier", + "src": "9774:3:12" + }, + "nativeSrc": "9774:12:12", + "nodeType": "YulFunctionCall", + "src": "9774:12:12" + }, + { + "name": "s", + "nativeSrc": "9788:1:12", + "nodeType": "YulIdentifier", + "src": "9788:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9767:6:12", + "nodeType": "YulIdentifier", + "src": "9767:6:12" + }, + "nativeSrc": "9767:23:12", + "nodeType": "YulFunctionCall", + "src": "9767:23:12" + }, + "nativeSrc": "9767:23:12", + "nodeType": "YulExpressionStatement", + "src": "9767:23:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "9827:1:12", + "nodeType": "YulIdentifier", + "src": "9827:1:12" + }, + { + "kind": "number", + "nativeSrc": "9830:4:12", + "nodeType": "YulLiteral", + "src": "9830:4:12", + "type": "", + "value": "0xa4" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9823:3:12", + "nodeType": "YulIdentifier", + "src": "9823:3:12" + }, + "nativeSrc": "9823:12:12", + "nodeType": "YulFunctionCall", + "src": "9823:12:12" + }, + { + "name": "v", + "nativeSrc": "9837:1:12", + "nodeType": "YulIdentifier", + "src": "9837:1:12" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "9815:7:12", + "nodeType": "YulIdentifier", + "src": "9815:7:12" + }, + "nativeSrc": "9815:24:12", + "nodeType": "YulFunctionCall", + "src": "9815:24:12" + }, + "nativeSrc": "9815:24:12", + "nodeType": "YulExpressionStatement", + "src": "9815:24:12" + }, + { + "nativeSrc": "9864:54:12", + "nodeType": "YulAssignment", + "src": "9864:54:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "9886:3:12", + "nodeType": "YulIdentifier", + "src": "9886:3:12" + }, + "nativeSrc": "9886:5:12", + "nodeType": "YulFunctionCall", + "src": "9886:5:12" + }, + { + "name": "signer", + "nativeSrc": "9893:6:12", + "nodeType": "YulIdentifier", + "src": "9893:6:12" + }, + { + "name": "m", + "nativeSrc": "9901:1:12", + "nodeType": "YulIdentifier", + "src": "9901:1:12" + }, + { + "kind": "number", + "nativeSrc": "9904:4:12", + "nodeType": "YulLiteral", + "src": "9904:4:12", + "type": "", + "value": "0xa5" + }, + { + "name": "d", + "nativeSrc": "9910:1:12", + "nodeType": "YulIdentifier", + "src": "9910:1:12" + }, + { + "kind": "number", + "nativeSrc": "9913:4:12", + "nodeType": "YulLiteral", + "src": "9913:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "9875:10:12", + "nodeType": "YulIdentifier", + "src": "9875:10:12" + }, + "nativeSrc": "9875:43:12", + "nodeType": "YulFunctionCall", + "src": "9875:43:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "9864:7:12", + "nodeType": "YulIdentifier", + "src": "9864:7:12" + } + ] + }, + { + "nativeSrc": "9935:40:12", + "nodeType": "YulAssignment", + "src": "9935:40:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "d", + "nativeSrc": "9959:1:12", + "nodeType": "YulIdentifier", + "src": "9959:1:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "9953:5:12", + "nodeType": "YulIdentifier", + "src": "9953:5:12" + }, + "nativeSrc": "9953:8:12", + "nodeType": "YulFunctionCall", + "src": "9953:8:12" + }, + { + "name": "f", + "nativeSrc": "9963:1:12", + "nodeType": "YulIdentifier", + "src": "9963:1:12" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "9950:2:12", + "nodeType": "YulIdentifier", + "src": "9950:2:12" + }, + "nativeSrc": "9950:15:12", + "nodeType": "YulFunctionCall", + "src": "9950:15:12" + }, + { + "name": "isValid", + "nativeSrc": "9967:7:12", + "nodeType": "YulIdentifier", + "src": "9967:7:12" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "9946:3:12", + "nodeType": "YulIdentifier", + "src": "9946:3:12" + }, + "nativeSrc": "9946:29:12", + "nodeType": "YulFunctionCall", + "src": "9946:29:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "9935:7:12", + "nodeType": "YulIdentifier", + "src": "9935:7:12" + } + ] + }, + { + "nativeSrc": "9992:5:12", + "nodeType": "YulBreak", + "src": "9992:5:12" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "8747:1:12", + "nodeType": "YulLiteral", + "src": "8747:1:12", + "type": "", + "value": "1" + }, + "nativeSrc": "8740:1271:12", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "8749:2:12", + "nodeType": "YulBlock", + "src": "8749:2:12", + "statements": [] + }, + "pre": { + "nativeSrc": "8744:2:12", + "nodeType": "YulBlock", + "src": "8744:2:12", + "statements": [] + }, + "src": "8740:1271:12" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6224, + "isOffset": false, + "isSlot": false, + "src": "8836:4:12", + "valueSize": 1 + }, + { + "declaration": 6224, + "isOffset": false, + "isSlot": false, + "src": "9508:4:12", + "valueSize": 1 + }, + { + "declaration": 6233, + "isOffset": false, + "isSlot": false, + "src": "9094:7:12", + "valueSize": 1 + }, + { + "declaration": 6233, + "isOffset": false, + "isSlot": false, + "src": "9864:7:12", + "valueSize": 1 + }, + { + "declaration": 6233, + "isOffset": false, + "isSlot": false, + "src": "9935:7:12", + "valueSize": 1 + }, + { + "declaration": 6233, + "isOffset": false, + "isSlot": false, + "src": "9967:7:12", + "valueSize": 1 + }, + { + "declaration": 6228, + "isOffset": false, + "isSlot": false, + "src": "8930:1:12", + "valueSize": 1 + }, + { + "declaration": 6228, + "isOffset": false, + "isSlot": false, + "src": "9740:1:12", + "valueSize": 1 + }, + { + "declaration": 6230, + "isOffset": false, + "isSlot": false, + "src": "8974:1:12", + "valueSize": 1 + }, + { + "declaration": 6230, + "isOffset": false, + "isSlot": false, + "src": "9788:1:12", + "valueSize": 1 + }, + { + "declaration": 6222, + "isOffset": false, + "isSlot": false, + "src": "8792:6:12", + "valueSize": 1 + }, + { + "declaration": 6222, + "isOffset": false, + "isSlot": false, + "src": "9138:6:12", + "valueSize": 1 + }, + { + "declaration": 6222, + "isOffset": false, + "isSlot": false, + "src": "9893:6:12", + "valueSize": 1 + }, + { + "declaration": 6226, + "isOffset": false, + "isSlot": false, + "src": "8879:1:12", + "valueSize": 1 + }, + { + "declaration": 6226, + "isOffset": false, + "isSlot": false, + "src": "9837:1:12", + "valueSize": 1 + } + ], + "id": 6244, + "nodeType": "InlineAssembly", + "src": "8684:1337:12" + } + ] + }, + "documentation": { + "id": 6220, + "nodeType": "StructuredDocumentation", + "src": "8207:214:12", + "text": "@dev Returns whether the signature (`v`, `r`, `s`) is valid for `signer` and `hash`.\n If `signer.code.length == 0`, then validate with `ecrecover`, else\n it will validate with ERC1271 on `signer`." + }, + "id": 6246, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isValidSignatureNow", + "nameLocation": "8435:19:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6231, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6222, + "mutability": "mutable", + "name": "signer", + "nameLocation": "8463:6:12", + "nodeType": "VariableDeclaration", + "scope": 6246, + "src": "8455:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6221, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8455:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6224, + "mutability": "mutable", + "name": "hash", + "nameLocation": "8479:4:12", + "nodeType": "VariableDeclaration", + "scope": 6246, + "src": "8471:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6223, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8471:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6226, + "mutability": "mutable", + "name": "v", + "nameLocation": "8491:1:12", + "nodeType": "VariableDeclaration", + "scope": 6246, + "src": "8485:7:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 6225, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "8485:5:12", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6228, + "mutability": "mutable", + "name": "r", + "nameLocation": "8502:1:12", + "nodeType": "VariableDeclaration", + "scope": 6246, + "src": "8494:9:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6227, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8494:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6230, + "mutability": "mutable", + "name": "s", + "nameLocation": "8513:1:12", + "nodeType": "VariableDeclaration", + "scope": 6246, + "src": "8505:9:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6229, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8505:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "8454:61:12" + }, + "returnParameters": { + "id": 6234, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6233, + "mutability": "mutable", + "name": "isValid", + "nameLocation": "8568:7:12", + "nodeType": "VariableDeclaration", + "scope": 6246, + "src": "8563:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6232, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8563:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "8562:14:12" + }, + "scope": 6365, + "src": "8426:1601:12", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6259, + "nodeType": "Block", + "src": "10636:714:12", + "statements": [ + { + "AST": { + "nativeSrc": "10698:646:12", + "nodeType": "YulBlock", + "src": "10698:646:12", + "statements": [ + { + "nativeSrc": "10712:20:12", + "nodeType": "YulVariableDeclaration", + "src": "10712:20:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10727:4:12", + "nodeType": "YulLiteral", + "src": "10727:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "10721:5:12", + "nodeType": "YulIdentifier", + "src": "10721:5:12" + }, + "nativeSrc": "10721:11:12", + "nodeType": "YulFunctionCall", + "src": "10721:11:12" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "10716:1:12", + "nodeType": "YulTypedName", + "src": "10716:1:12", + "type": "" + } + ] + }, + { + "nativeSrc": "10745:29:12", + "nodeType": "YulVariableDeclaration", + "src": "10745:29:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10758:3:12", + "nodeType": "YulLiteral", + "src": "10758:3:12", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "10763:10:12", + "nodeType": "YulLiteral", + "src": "10763:10:12", + "type": "", + "value": "0x1626ba7e" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "10754:3:12", + "nodeType": "YulIdentifier", + "src": "10754:3:12" + }, + "nativeSrc": "10754:20:12", + "nodeType": "YulFunctionCall", + "src": "10754:20:12" + }, + "variables": [ + { + "name": "f", + "nativeSrc": "10749:1:12", + "nodeType": "YulTypedName", + "src": "10749:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "10794:1:12", + "nodeType": "YulIdentifier", + "src": "10794:1:12" + }, + { + "name": "f", + "nativeSrc": "10797:1:12", + "nodeType": "YulIdentifier", + "src": "10797:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "10787:6:12", + "nodeType": "YulIdentifier", + "src": "10787:6:12" + }, + "nativeSrc": "10787:12:12", + "nodeType": "YulFunctionCall", + "src": "10787:12:12" + }, + "nativeSrc": "10787:12:12", + "nodeType": "YulExpressionStatement", + "src": "10787:12:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "10882:1:12", + "nodeType": "YulIdentifier", + "src": "10882:1:12" + }, + { + "kind": "number", + "nativeSrc": "10885:4:12", + "nodeType": "YulLiteral", + "src": "10885:4:12", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10878:3:12", + "nodeType": "YulIdentifier", + "src": "10878:3:12" + }, + "nativeSrc": "10878:12:12", + "nodeType": "YulFunctionCall", + "src": "10878:12:12" + }, + { + "name": "hash", + "nativeSrc": "10892:4:12", + "nodeType": "YulIdentifier", + "src": "10892:4:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "10871:6:12", + "nodeType": "YulIdentifier", + "src": "10871:6:12" + }, + "nativeSrc": "10871:26:12", + "nodeType": "YulFunctionCall", + "src": "10871:26:12" + }, + "nativeSrc": "10871:26:12", + "nodeType": "YulExpressionStatement", + "src": "10871:26:12" + }, + { + "nativeSrc": "10910:21:12", + "nodeType": "YulVariableDeclaration", + "src": "10910:21:12", + "value": { + "arguments": [ + { + "name": "m", + "nativeSrc": "10923:1:12", + "nodeType": "YulIdentifier", + "src": "10923:1:12" + }, + { + "kind": "number", + "nativeSrc": "10926:4:12", + "nodeType": "YulLiteral", + "src": "10926:4:12", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10919:3:12", + "nodeType": "YulIdentifier", + "src": "10919:3:12" + }, + "nativeSrc": "10919:12:12", + "nodeType": "YulFunctionCall", + "src": "10919:12:12" + }, + "variables": [ + { + "name": "d", + "nativeSrc": "10914:1:12", + "nodeType": "YulTypedName", + "src": "10914:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "d", + "nativeSrc": "10951:1:12", + "nodeType": "YulIdentifier", + "src": "10951:1:12" + }, + { + "kind": "number", + "nativeSrc": "10954:4:12", + "nodeType": "YulLiteral", + "src": "10954:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "10944:6:12", + "nodeType": "YulIdentifier", + "src": "10944:6:12" + }, + "nativeSrc": "10944:15:12", + "nodeType": "YulFunctionCall", + "src": "10944:15:12" + }, + "nativeSrc": "10944:15:12", + "nodeType": "YulExpressionStatement", + "src": "10944:15:12" + }, + { + "nativeSrc": "11064:36:12", + "nodeType": "YulVariableDeclaration", + "src": "11064:36:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "11077:4:12", + "nodeType": "YulLiteral", + "src": "11077:4:12", + "type": "", + "value": "0x20" + }, + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "11089:9:12", + "nodeType": "YulIdentifier", + "src": "11089:9:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "11083:5:12", + "nodeType": "YulIdentifier", + "src": "11083:5:12" + }, + "nativeSrc": "11083:16:12", + "nodeType": "YulFunctionCall", + "src": "11083:16:12" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11073:3:12", + "nodeType": "YulIdentifier", + "src": "11073:3:12" + }, + "nativeSrc": "11073:27:12", + "nodeType": "YulFunctionCall", + "src": "11073:27:12" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "11068:1:12", + "nodeType": "YulTypedName", + "src": "11068:1:12", + "type": "" + } + ] + }, + { + "nativeSrc": "11113:65:12", + "nodeType": "YulVariableDeclaration", + "src": "11113:65:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "11138:3:12", + "nodeType": "YulIdentifier", + "src": "11138:3:12" + }, + "nativeSrc": "11138:5:12", + "nodeType": "YulFunctionCall", + "src": "11138:5:12" + }, + { + "kind": "number", + "nativeSrc": "11145:1:12", + "nodeType": "YulLiteral", + "src": "11145:1:12", + "type": "", + "value": "4" + }, + { + "name": "signature", + "nativeSrc": "11148:9:12", + "nodeType": "YulIdentifier", + "src": "11148:9:12" + }, + { + "name": "n", + "nativeSrc": "11159:1:12", + "nodeType": "YulIdentifier", + "src": "11159:1:12" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "11166:1:12", + "nodeType": "YulIdentifier", + "src": "11166:1:12" + }, + { + "kind": "number", + "nativeSrc": "11169:4:12", + "nodeType": "YulLiteral", + "src": "11169:4:12", + "type": "", + "value": "0x44" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11162:3:12", + "nodeType": "YulIdentifier", + "src": "11162:3:12" + }, + "nativeSrc": "11162:12:12", + "nodeType": "YulFunctionCall", + "src": "11162:12:12" + }, + { + "name": "n", + "nativeSrc": "11176:1:12", + "nodeType": "YulIdentifier", + "src": "11176:1:12" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "11127:10:12", + "nodeType": "YulIdentifier", + "src": "11127:10:12" + }, + "nativeSrc": "11127:51:12", + "nodeType": "YulFunctionCall", + "src": "11127:51:12" + }, + "variables": [ + { + "name": "copied", + "nativeSrc": "11117:6:12", + "nodeType": "YulTypedName", + "src": "11117:6:12", + "type": "" + } + ] + }, + { + "nativeSrc": "11191:77:12", + "nodeType": "YulAssignment", + "src": "11191:77:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "11213:3:12", + "nodeType": "YulIdentifier", + "src": "11213:3:12" + }, + "nativeSrc": "11213:5:12", + "nodeType": "YulFunctionCall", + "src": "11213:5:12" + }, + { + "name": "signer", + "nativeSrc": "11220:6:12", + "nodeType": "YulIdentifier", + "src": "11220:6:12" + }, + { + "name": "m", + "nativeSrc": "11228:1:12", + "nodeType": "YulIdentifier", + "src": "11228:1:12" + }, + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "11235:14:12", + "nodeType": "YulIdentifier", + "src": "11235:14:12" + }, + "nativeSrc": "11235:16:12", + "nodeType": "YulFunctionCall", + "src": "11235:16:12" + }, + { + "kind": "number", + "nativeSrc": "11253:4:12", + "nodeType": "YulLiteral", + "src": "11253:4:12", + "type": "", + "value": "0x44" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11231:3:12", + "nodeType": "YulIdentifier", + "src": "11231:3:12" + }, + "nativeSrc": "11231:27:12", + "nodeType": "YulFunctionCall", + "src": "11231:27:12" + }, + { + "name": "d", + "nativeSrc": "11260:1:12", + "nodeType": "YulIdentifier", + "src": "11260:1:12" + }, + { + "kind": "number", + "nativeSrc": "11263:4:12", + "nodeType": "YulLiteral", + "src": "11263:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "11202:10:12", + "nodeType": "YulIdentifier", + "src": "11202:10:12" + }, + "nativeSrc": "11202:66:12", + "nodeType": "YulFunctionCall", + "src": "11202:66:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "11191:7:12", + "nodeType": "YulIdentifier", + "src": "11191:7:12" + } + ] + }, + { + "nativeSrc": "11281:53:12", + "nodeType": "YulAssignment", + "src": "11281:53:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "d", + "nativeSrc": "11305:1:12", + "nodeType": "YulIdentifier", + "src": "11305:1:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "11299:5:12", + "nodeType": "YulIdentifier", + "src": "11299:5:12" + }, + "nativeSrc": "11299:8:12", + "nodeType": "YulFunctionCall", + "src": "11299:8:12" + }, + { + "name": "f", + "nativeSrc": "11309:1:12", + "nodeType": "YulIdentifier", + "src": "11309:1:12" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "11296:2:12", + "nodeType": "YulIdentifier", + "src": "11296:2:12" + }, + "nativeSrc": "11296:15:12", + "nodeType": "YulFunctionCall", + "src": "11296:15:12" + }, + { + "arguments": [ + { + "name": "isValid", + "nativeSrc": "11317:7:12", + "nodeType": "YulIdentifier", + "src": "11317:7:12" + }, + { + "name": "copied", + "nativeSrc": "11326:6:12", + "nodeType": "YulIdentifier", + "src": "11326:6:12" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "11313:3:12", + "nodeType": "YulIdentifier", + "src": "11313:3:12" + }, + "nativeSrc": "11313:20:12", + "nodeType": "YulFunctionCall", + "src": "11313:20:12" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "11292:3:12", + "nodeType": "YulIdentifier", + "src": "11292:3:12" + }, + "nativeSrc": "11292:42:12", + "nodeType": "YulFunctionCall", + "src": "11292:42:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "11281:7:12", + "nodeType": "YulIdentifier", + "src": "11281:7:12" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6251, + "isOffset": false, + "isSlot": false, + "src": "10892:4:12", + "valueSize": 1 + }, + { + "declaration": 6256, + "isOffset": false, + "isSlot": false, + "src": "11191:7:12", + "valueSize": 1 + }, + { + "declaration": 6256, + "isOffset": false, + "isSlot": false, + "src": "11281:7:12", + "valueSize": 1 + }, + { + "declaration": 6256, + "isOffset": false, + "isSlot": false, + "src": "11317:7:12", + "valueSize": 1 + }, + { + "declaration": 6253, + "isOffset": false, + "isSlot": false, + "src": "11089:9:12", + "valueSize": 1 + }, + { + "declaration": 6253, + "isOffset": false, + "isSlot": false, + "src": "11148:9:12", + "valueSize": 1 + }, + { + "declaration": 6249, + "isOffset": false, + "isSlot": false, + "src": "11220:6:12", + "valueSize": 1 + } + ], + "id": 6258, + "nodeType": "InlineAssembly", + "src": "10689:655:12" + } + ] + }, + "documentation": { + "id": 6247, + "nodeType": "StructuredDocumentation", + "src": "10386:90:12", + "text": "@dev Returns whether `signature` is valid for `hash` for an ERC1271 `signer` contract." + }, + "id": 6260, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isValidERC1271SignatureNow", + "nameLocation": "10490:26:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6254, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6249, + "mutability": "mutable", + "name": "signer", + "nameLocation": "10525:6:12", + "nodeType": "VariableDeclaration", + "scope": 6260, + "src": "10517:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6248, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10517:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6251, + "mutability": "mutable", + "name": "hash", + "nameLocation": "10541:4:12", + "nodeType": "VariableDeclaration", + "scope": 6260, + "src": "10533:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6250, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10533:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6253, + "mutability": "mutable", + "name": "signature", + "nameLocation": "10560:9:12", + "nodeType": "VariableDeclaration", + "scope": 6260, + "src": "10547:22:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6252, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "10547:5:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "10516:54:12" + }, + "returnParameters": { + "id": 6257, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6256, + "mutability": "mutable", + "name": "isValid", + "nameLocation": "10623:7:12", + "nodeType": "VariableDeclaration", + "scope": 6260, + "src": "10618:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6255, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "10618:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "10617:14:12" + }, + "scope": 6365, + "src": "10481:869:12", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6273, + "nodeType": "Block", + "src": "11618:700:12", + "statements": [ + { + "AST": { + "nativeSrc": "11680:632:12", + "nodeType": "YulBlock", + "src": "11680:632:12", + "statements": [ + { + "nativeSrc": "11694:20:12", + "nodeType": "YulVariableDeclaration", + "src": "11694:20:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "11709:4:12", + "nodeType": "YulLiteral", + "src": "11709:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "11703:5:12", + "nodeType": "YulIdentifier", + "src": "11703:5:12" + }, + "nativeSrc": "11703:11:12", + "nodeType": "YulFunctionCall", + "src": "11703:11:12" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "11698:1:12", + "nodeType": "YulTypedName", + "src": "11698:1:12", + "type": "" + } + ] + }, + { + "nativeSrc": "11727:29:12", + "nodeType": "YulVariableDeclaration", + "src": "11727:29:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "11740:3:12", + "nodeType": "YulLiteral", + "src": "11740:3:12", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "11745:10:12", + "nodeType": "YulLiteral", + "src": "11745:10:12", + "type": "", + "value": "0x1626ba7e" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "11736:3:12", + "nodeType": "YulIdentifier", + "src": "11736:3:12" + }, + "nativeSrc": "11736:20:12", + "nodeType": "YulFunctionCall", + "src": "11736:20:12" + }, + "variables": [ + { + "name": "f", + "nativeSrc": "11731:1:12", + "nodeType": "YulTypedName", + "src": "11731:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "11776:1:12", + "nodeType": "YulIdentifier", + "src": "11776:1:12" + }, + { + "name": "f", + "nativeSrc": "11779:1:12", + "nodeType": "YulIdentifier", + "src": "11779:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11769:6:12", + "nodeType": "YulIdentifier", + "src": "11769:6:12" + }, + "nativeSrc": "11769:12:12", + "nodeType": "YulFunctionCall", + "src": "11769:12:12" + }, + "nativeSrc": "11769:12:12", + "nodeType": "YulExpressionStatement", + "src": "11769:12:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "11864:1:12", + "nodeType": "YulIdentifier", + "src": "11864:1:12" + }, + { + "kind": "number", + "nativeSrc": "11867:4:12", + "nodeType": "YulLiteral", + "src": "11867:4:12", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11860:3:12", + "nodeType": "YulIdentifier", + "src": "11860:3:12" + }, + "nativeSrc": "11860:12:12", + "nodeType": "YulFunctionCall", + "src": "11860:12:12" + }, + { + "name": "hash", + "nativeSrc": "11874:4:12", + "nodeType": "YulIdentifier", + "src": "11874:4:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11853:6:12", + "nodeType": "YulIdentifier", + "src": "11853:6:12" + }, + "nativeSrc": "11853:26:12", + "nodeType": "YulFunctionCall", + "src": "11853:26:12" + }, + "nativeSrc": "11853:26:12", + "nodeType": "YulExpressionStatement", + "src": "11853:26:12" + }, + { + "nativeSrc": "11892:21:12", + "nodeType": "YulVariableDeclaration", + "src": "11892:21:12", + "value": { + "arguments": [ + { + "name": "m", + "nativeSrc": "11905:1:12", + "nodeType": "YulIdentifier", + "src": "11905:1:12" + }, + { + "kind": "number", + "nativeSrc": "11908:4:12", + "nodeType": "YulLiteral", + "src": "11908:4:12", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11901:3:12", + "nodeType": "YulIdentifier", + "src": "11901:3:12" + }, + "nativeSrc": "11901:12:12", + "nodeType": "YulFunctionCall", + "src": "11901:12:12" + }, + "variables": [ + { + "name": "d", + "nativeSrc": "11896:1:12", + "nodeType": "YulTypedName", + "src": "11896:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "d", + "nativeSrc": "11933:1:12", + "nodeType": "YulIdentifier", + "src": "11933:1:12" + }, + { + "kind": "number", + "nativeSrc": "11936:4:12", + "nodeType": "YulLiteral", + "src": "11936:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11926:6:12", + "nodeType": "YulIdentifier", + "src": "11926:6:12" + }, + "nativeSrc": "11926:15:12", + "nodeType": "YulFunctionCall", + "src": "11926:15:12" + }, + "nativeSrc": "11926:15:12", + "nodeType": "YulExpressionStatement", + "src": "11926:15:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "12015:1:12", + "nodeType": "YulIdentifier", + "src": "12015:1:12" + }, + { + "kind": "number", + "nativeSrc": "12018:4:12", + "nodeType": "YulLiteral", + "src": "12018:4:12", + "type": "", + "value": "0x44" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12011:3:12", + "nodeType": "YulIdentifier", + "src": "12011:3:12" + }, + "nativeSrc": "12011:12:12", + "nodeType": "YulFunctionCall", + "src": "12011:12:12" + }, + { + "name": "signature.length", + "nativeSrc": "12025:16:12", + "nodeType": "YulIdentifier", + "src": "12025:16:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12004:6:12", + "nodeType": "YulIdentifier", + "src": "12004:6:12" + }, + "nativeSrc": "12004:38:12", + "nodeType": "YulFunctionCall", + "src": "12004:38:12" + }, + "nativeSrc": "12004:38:12", + "nodeType": "YulExpressionStatement", + "src": "12004:38:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "12114:1:12", + "nodeType": "YulIdentifier", + "src": "12114:1:12" + }, + { + "kind": "number", + "nativeSrc": "12117:4:12", + "nodeType": "YulLiteral", + "src": "12117:4:12", + "type": "", + "value": "0x64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12110:3:12", + "nodeType": "YulIdentifier", + "src": "12110:3:12" + }, + "nativeSrc": "12110:12:12", + "nodeType": "YulFunctionCall", + "src": "12110:12:12" + }, + { + "name": "signature.offset", + "nativeSrc": "12124:16:12", + "nodeType": "YulIdentifier", + "src": "12124:16:12" + }, + { + "name": "signature.length", + "nativeSrc": "12142:16:12", + "nodeType": "YulIdentifier", + "src": "12142:16:12" + } + ], + "functionName": { + "name": "calldatacopy", + "nativeSrc": "12097:12:12", + "nodeType": "YulIdentifier", + "src": "12097:12:12" + }, + "nativeSrc": "12097:62:12", + "nodeType": "YulFunctionCall", + "src": "12097:62:12" + }, + "nativeSrc": "12097:62:12", + "nodeType": "YulExpressionStatement", + "src": "12097:62:12" + }, + { + "nativeSrc": "12172:77:12", + "nodeType": "YulAssignment", + "src": "12172:77:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "12194:3:12", + "nodeType": "YulIdentifier", + "src": "12194:3:12" + }, + "nativeSrc": "12194:5:12", + "nodeType": "YulFunctionCall", + "src": "12194:5:12" + }, + { + "name": "signer", + "nativeSrc": "12201:6:12", + "nodeType": "YulIdentifier", + "src": "12201:6:12" + }, + { + "name": "m", + "nativeSrc": "12209:1:12", + "nodeType": "YulIdentifier", + "src": "12209:1:12" + }, + { + "arguments": [ + { + "name": "signature.length", + "nativeSrc": "12216:16:12", + "nodeType": "YulIdentifier", + "src": "12216:16:12" + }, + { + "kind": "number", + "nativeSrc": "12234:4:12", + "nodeType": "YulLiteral", + "src": "12234:4:12", + "type": "", + "value": "0x64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12212:3:12", + "nodeType": "YulIdentifier", + "src": "12212:3:12" + }, + "nativeSrc": "12212:27:12", + "nodeType": "YulFunctionCall", + "src": "12212:27:12" + }, + { + "name": "d", + "nativeSrc": "12241:1:12", + "nodeType": "YulIdentifier", + "src": "12241:1:12" + }, + { + "kind": "number", + "nativeSrc": "12244:4:12", + "nodeType": "YulLiteral", + "src": "12244:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "12183:10:12", + "nodeType": "YulIdentifier", + "src": "12183:10:12" + }, + "nativeSrc": "12183:66:12", + "nodeType": "YulFunctionCall", + "src": "12183:66:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "12172:7:12", + "nodeType": "YulIdentifier", + "src": "12172:7:12" + } + ] + }, + { + "nativeSrc": "12262:40:12", + "nodeType": "YulAssignment", + "src": "12262:40:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "d", + "nativeSrc": "12286:1:12", + "nodeType": "YulIdentifier", + "src": "12286:1:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "12280:5:12", + "nodeType": "YulIdentifier", + "src": "12280:5:12" + }, + "nativeSrc": "12280:8:12", + "nodeType": "YulFunctionCall", + "src": "12280:8:12" + }, + { + "name": "f", + "nativeSrc": "12290:1:12", + "nodeType": "YulIdentifier", + "src": "12290:1:12" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "12277:2:12", + "nodeType": "YulIdentifier", + "src": "12277:2:12" + }, + "nativeSrc": "12277:15:12", + "nodeType": "YulFunctionCall", + "src": "12277:15:12" + }, + { + "name": "isValid", + "nativeSrc": "12294:7:12", + "nodeType": "YulIdentifier", + "src": "12294:7:12" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "12273:3:12", + "nodeType": "YulIdentifier", + "src": "12273:3:12" + }, + "nativeSrc": "12273:29:12", + "nodeType": "YulFunctionCall", + "src": "12273:29:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "12262:7:12", + "nodeType": "YulIdentifier", + "src": "12262:7:12" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6265, + "isOffset": false, + "isSlot": false, + "src": "11874:4:12", + "valueSize": 1 + }, + { + "declaration": 6270, + "isOffset": false, + "isSlot": false, + "src": "12172:7:12", + "valueSize": 1 + }, + { + "declaration": 6270, + "isOffset": false, + "isSlot": false, + "src": "12262:7:12", + "valueSize": 1 + }, + { + "declaration": 6270, + "isOffset": false, + "isSlot": false, + "src": "12294:7:12", + "valueSize": 1 + }, + { + "declaration": 6267, + "isOffset": false, + "isSlot": false, + "src": "12025:16:12", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 6267, + "isOffset": false, + "isSlot": false, + "src": "12142:16:12", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 6267, + "isOffset": false, + "isSlot": false, + "src": "12216:16:12", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 6267, + "isOffset": true, + "isSlot": false, + "src": "12124:16:12", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 6263, + "isOffset": false, + "isSlot": false, + "src": "12201:6:12", + "valueSize": 1 + } + ], + "id": 6272, + "nodeType": "InlineAssembly", + "src": "11671:641:12" + } + ] + }, + "documentation": { + "id": 6261, + "nodeType": "StructuredDocumentation", + "src": "11356:90:12", + "text": "@dev Returns whether `signature` is valid for `hash` for an ERC1271 `signer` contract." + }, + "id": 6274, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isValidERC1271SignatureNowCalldata", + "nameLocation": "11460:34:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6268, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6263, + "mutability": "mutable", + "name": "signer", + "nameLocation": "11512:6:12", + "nodeType": "VariableDeclaration", + "scope": 6274, + "src": "11504:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6262, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11504:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6265, + "mutability": "mutable", + "name": "hash", + "nameLocation": "11536:4:12", + "nodeType": "VariableDeclaration", + "scope": 6274, + "src": "11528:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6264, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11528:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6267, + "mutability": "mutable", + "name": "signature", + "nameLocation": "11565:9:12", + "nodeType": "VariableDeclaration", + "scope": 6274, + "src": "11550:24:12", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6266, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "11550:5:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "11494:86:12" + }, + "returnParameters": { + "id": 6271, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6270, + "mutability": "mutable", + "name": "isValid", + "nameLocation": "11609:7:12", + "nodeType": "VariableDeclaration", + "scope": 6274, + "src": "11604:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6269, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "11604:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "11603:14:12" + }, + "scope": 6365, + "src": "11451:867:12", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6289, + "nodeType": "Block", + "src": "12595:744:12", + "statements": [ + { + "AST": { + "nativeSrc": "12657:676:12", + "nodeType": "YulBlock", + "src": "12657:676:12", + "statements": [ + { + "nativeSrc": "12671:20:12", + "nodeType": "YulVariableDeclaration", + "src": "12671:20:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12686:4:12", + "nodeType": "YulLiteral", + "src": "12686:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "12680:5:12", + "nodeType": "YulIdentifier", + "src": "12680:5:12" + }, + "nativeSrc": "12680:11:12", + "nodeType": "YulFunctionCall", + "src": "12680:11:12" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "12675:1:12", + "nodeType": "YulTypedName", + "src": "12675:1:12", + "type": "" + } + ] + }, + { + "nativeSrc": "12704:29:12", + "nodeType": "YulVariableDeclaration", + "src": "12704:29:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12717:3:12", + "nodeType": "YulLiteral", + "src": "12717:3:12", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "12722:10:12", + "nodeType": "YulLiteral", + "src": "12722:10:12", + "type": "", + "value": "0x1626ba7e" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "12713:3:12", + "nodeType": "YulIdentifier", + "src": "12713:3:12" + }, + "nativeSrc": "12713:20:12", + "nodeType": "YulFunctionCall", + "src": "12713:20:12" + }, + "variables": [ + { + "name": "f", + "nativeSrc": "12708:1:12", + "nodeType": "YulTypedName", + "src": "12708:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "12753:1:12", + "nodeType": "YulIdentifier", + "src": "12753:1:12" + }, + { + "name": "f", + "nativeSrc": "12756:1:12", + "nodeType": "YulIdentifier", + "src": "12756:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12746:6:12", + "nodeType": "YulIdentifier", + "src": "12746:6:12" + }, + "nativeSrc": "12746:12:12", + "nodeType": "YulFunctionCall", + "src": "12746:12:12" + }, + "nativeSrc": "12746:12:12", + "nodeType": "YulExpressionStatement", + "src": "12746:12:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "12841:1:12", + "nodeType": "YulIdentifier", + "src": "12841:1:12" + }, + { + "kind": "number", + "nativeSrc": "12844:4:12", + "nodeType": "YulLiteral", + "src": "12844:4:12", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12837:3:12", + "nodeType": "YulIdentifier", + "src": "12837:3:12" + }, + "nativeSrc": "12837:12:12", + "nodeType": "YulFunctionCall", + "src": "12837:12:12" + }, + { + "name": "hash", + "nativeSrc": "12851:4:12", + "nodeType": "YulIdentifier", + "src": "12851:4:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12830:6:12", + "nodeType": "YulIdentifier", + "src": "12830:6:12" + }, + "nativeSrc": "12830:26:12", + "nodeType": "YulFunctionCall", + "src": "12830:26:12" + }, + "nativeSrc": "12830:26:12", + "nodeType": "YulExpressionStatement", + "src": "12830:26:12" + }, + { + "nativeSrc": "12869:21:12", + "nodeType": "YulVariableDeclaration", + "src": "12869:21:12", + "value": { + "arguments": [ + { + "name": "m", + "nativeSrc": "12882:1:12", + "nodeType": "YulIdentifier", + "src": "12882:1:12" + }, + { + "kind": "number", + "nativeSrc": "12885:4:12", + "nodeType": "YulLiteral", + "src": "12885:4:12", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12878:3:12", + "nodeType": "YulIdentifier", + "src": "12878:3:12" + }, + "nativeSrc": "12878:12:12", + "nodeType": "YulFunctionCall", + "src": "12878:12:12" + }, + "variables": [ + { + "name": "d", + "nativeSrc": "12873:1:12", + "nodeType": "YulTypedName", + "src": "12873:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "d", + "nativeSrc": "12910:1:12", + "nodeType": "YulIdentifier", + "src": "12910:1:12" + }, + { + "kind": "number", + "nativeSrc": "12913:4:12", + "nodeType": "YulLiteral", + "src": "12913:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12903:6:12", + "nodeType": "YulIdentifier", + "src": "12903:6:12" + }, + "nativeSrc": "12903:15:12", + "nodeType": "YulFunctionCall", + "src": "12903:15:12" + }, + "nativeSrc": "12903:15:12", + "nodeType": "YulExpressionStatement", + "src": "12903:15:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "12992:1:12", + "nodeType": "YulIdentifier", + "src": "12992:1:12" + }, + { + "kind": "number", + "nativeSrc": "12995:4:12", + "nodeType": "YulLiteral", + "src": "12995:4:12", + "type": "", + "value": "0x44" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12988:3:12", + "nodeType": "YulIdentifier", + "src": "12988:3:12" + }, + "nativeSrc": "12988:12:12", + "nodeType": "YulFunctionCall", + "src": "12988:12:12" + }, + { + "kind": "number", + "nativeSrc": "13002:2:12", + "nodeType": "YulLiteral", + "src": "13002:2:12", + "type": "", + "value": "65" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12981:6:12", + "nodeType": "YulIdentifier", + "src": "12981:6:12" + }, + "nativeSrc": "12981:24:12", + "nodeType": "YulFunctionCall", + "src": "12981:24:12" + }, + "nativeSrc": "12981:24:12", + "nodeType": "YulExpressionStatement", + "src": "12981:24:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "13057:1:12", + "nodeType": "YulIdentifier", + "src": "13057:1:12" + }, + { + "kind": "number", + "nativeSrc": "13060:4:12", + "nodeType": "YulLiteral", + "src": "13060:4:12", + "type": "", + "value": "0x64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13053:3:12", + "nodeType": "YulIdentifier", + "src": "13053:3:12" + }, + "nativeSrc": "13053:12:12", + "nodeType": "YulFunctionCall", + "src": "13053:12:12" + }, + { + "name": "r", + "nativeSrc": "13067:1:12", + "nodeType": "YulIdentifier", + "src": "13067:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13046:6:12", + "nodeType": "YulIdentifier", + "src": "13046:6:12" + }, + "nativeSrc": "13046:23:12", + "nodeType": "YulFunctionCall", + "src": "13046:23:12" + }, + "nativeSrc": "13046:23:12", + "nodeType": "YulExpressionStatement", + "src": "13046:23:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "13101:1:12", + "nodeType": "YulIdentifier", + "src": "13101:1:12" + }, + { + "kind": "number", + "nativeSrc": "13104:4:12", + "nodeType": "YulLiteral", + "src": "13104:4:12", + "type": "", + "value": "0x84" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13097:3:12", + "nodeType": "YulIdentifier", + "src": "13097:3:12" + }, + "nativeSrc": "13097:12:12", + "nodeType": "YulFunctionCall", + "src": "13097:12:12" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13115:1:12", + "nodeType": "YulLiteral", + "src": "13115:1:12", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13122:1:12", + "nodeType": "YulLiteral", + "src": "13122:1:12", + "type": "", + "value": "1" + }, + { + "name": "vs", + "nativeSrc": "13125:2:12", + "nodeType": "YulIdentifier", + "src": "13125:2:12" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "13118:3:12", + "nodeType": "YulIdentifier", + "src": "13118:3:12" + }, + "nativeSrc": "13118:10:12", + "nodeType": "YulFunctionCall", + "src": "13118:10:12" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "13111:3:12", + "nodeType": "YulIdentifier", + "src": "13111:3:12" + }, + "nativeSrc": "13111:18:12", + "nodeType": "YulFunctionCall", + "src": "13111:18:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13090:6:12", + "nodeType": "YulIdentifier", + "src": "13090:6:12" + }, + "nativeSrc": "13090:40:12", + "nodeType": "YulFunctionCall", + "src": "13090:40:12" + }, + "nativeSrc": "13090:40:12", + "nodeType": "YulExpressionStatement", + "src": "13090:40:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "13163:1:12", + "nodeType": "YulIdentifier", + "src": "13163:1:12" + }, + { + "kind": "number", + "nativeSrc": "13166:4:12", + "nodeType": "YulLiteral", + "src": "13166:4:12", + "type": "", + "value": "0xa4" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13159:3:12", + "nodeType": "YulIdentifier", + "src": "13159:3:12" + }, + "nativeSrc": "13159:12:12", + "nodeType": "YulFunctionCall", + "src": "13159:12:12" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13181:3:12", + "nodeType": "YulLiteral", + "src": "13181:3:12", + "type": "", + "value": "255" + }, + { + "name": "vs", + "nativeSrc": "13186:2:12", + "nodeType": "YulIdentifier", + "src": "13186:2:12" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "13177:3:12", + "nodeType": "YulIdentifier", + "src": "13177:3:12" + }, + "nativeSrc": "13177:12:12", + "nodeType": "YulFunctionCall", + "src": "13177:12:12" + }, + { + "kind": "number", + "nativeSrc": "13191:2:12", + "nodeType": "YulLiteral", + "src": "13191:2:12", + "type": "", + "value": "27" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13173:3:12", + "nodeType": "YulIdentifier", + "src": "13173:3:12" + }, + "nativeSrc": "13173:21:12", + "nodeType": "YulFunctionCall", + "src": "13173:21:12" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "13151:7:12", + "nodeType": "YulIdentifier", + "src": "13151:7:12" + }, + "nativeSrc": "13151:44:12", + "nodeType": "YulFunctionCall", + "src": "13151:44:12" + }, + "nativeSrc": "13151:44:12", + "nodeType": "YulExpressionStatement", + "src": "13151:44:12" + }, + { + "nativeSrc": "13216:54:12", + "nodeType": "YulAssignment", + "src": "13216:54:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "13238:3:12", + "nodeType": "YulIdentifier", + "src": "13238:3:12" + }, + "nativeSrc": "13238:5:12", + "nodeType": "YulFunctionCall", + "src": "13238:5:12" + }, + { + "name": "signer", + "nativeSrc": "13245:6:12", + "nodeType": "YulIdentifier", + "src": "13245:6:12" + }, + { + "name": "m", + "nativeSrc": "13253:1:12", + "nodeType": "YulIdentifier", + "src": "13253:1:12" + }, + { + "kind": "number", + "nativeSrc": "13256:4:12", + "nodeType": "YulLiteral", + "src": "13256:4:12", + "type": "", + "value": "0xa5" + }, + { + "name": "d", + "nativeSrc": "13262:1:12", + "nodeType": "YulIdentifier", + "src": "13262:1:12" + }, + { + "kind": "number", + "nativeSrc": "13265:4:12", + "nodeType": "YulLiteral", + "src": "13265:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "13227:10:12", + "nodeType": "YulIdentifier", + "src": "13227:10:12" + }, + "nativeSrc": "13227:43:12", + "nodeType": "YulFunctionCall", + "src": "13227:43:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "13216:7:12", + "nodeType": "YulIdentifier", + "src": "13216:7:12" + } + ] + }, + { + "nativeSrc": "13283:40:12", + "nodeType": "YulAssignment", + "src": "13283:40:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "d", + "nativeSrc": "13307:1:12", + "nodeType": "YulIdentifier", + "src": "13307:1:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "13301:5:12", + "nodeType": "YulIdentifier", + "src": "13301:5:12" + }, + "nativeSrc": "13301:8:12", + "nodeType": "YulFunctionCall", + "src": "13301:8:12" + }, + { + "name": "f", + "nativeSrc": "13311:1:12", + "nodeType": "YulIdentifier", + "src": "13311:1:12" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "13298:2:12", + "nodeType": "YulIdentifier", + "src": "13298:2:12" + }, + "nativeSrc": "13298:15:12", + "nodeType": "YulFunctionCall", + "src": "13298:15:12" + }, + { + "name": "isValid", + "nativeSrc": "13315:7:12", + "nodeType": "YulIdentifier", + "src": "13315:7:12" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "13294:3:12", + "nodeType": "YulIdentifier", + "src": "13294:3:12" + }, + "nativeSrc": "13294:29:12", + "nodeType": "YulFunctionCall", + "src": "13294:29:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "13283:7:12", + "nodeType": "YulIdentifier", + "src": "13283:7:12" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6279, + "isOffset": false, + "isSlot": false, + "src": "12851:4:12", + "valueSize": 1 + }, + { + "declaration": 6286, + "isOffset": false, + "isSlot": false, + "src": "13216:7:12", + "valueSize": 1 + }, + { + "declaration": 6286, + "isOffset": false, + "isSlot": false, + "src": "13283:7:12", + "valueSize": 1 + }, + { + "declaration": 6286, + "isOffset": false, + "isSlot": false, + "src": "13315:7:12", + "valueSize": 1 + }, + { + "declaration": 6281, + "isOffset": false, + "isSlot": false, + "src": "13067:1:12", + "valueSize": 1 + }, + { + "declaration": 6277, + "isOffset": false, + "isSlot": false, + "src": "13245:6:12", + "valueSize": 1 + }, + { + "declaration": 6283, + "isOffset": false, + "isSlot": false, + "src": "13125:2:12", + "valueSize": 1 + }, + { + "declaration": 6283, + "isOffset": false, + "isSlot": false, + "src": "13186:2:12", + "valueSize": 1 + } + ], + "id": 6288, + "nodeType": "InlineAssembly", + "src": "12648:685:12" + } + ] + }, + "documentation": { + "id": 6275, + "nodeType": "StructuredDocumentation", + "src": "12324:112:12", + "text": "@dev Returns whether the signature (`r`, `vs`) is valid for `hash`\n for an ERC1271 `signer` contract." + }, + "id": 6290, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isValidERC1271SignatureNow", + "nameLocation": "12450:26:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6284, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6277, + "mutability": "mutable", + "name": "signer", + "nameLocation": "12485:6:12", + "nodeType": "VariableDeclaration", + "scope": 6290, + "src": "12477:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6276, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12477:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6279, + "mutability": "mutable", + "name": "hash", + "nameLocation": "12501:4:12", + "nodeType": "VariableDeclaration", + "scope": 6290, + "src": "12493:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6278, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12493:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6281, + "mutability": "mutable", + "name": "r", + "nameLocation": "12515:1:12", + "nodeType": "VariableDeclaration", + "scope": 6290, + "src": "12507:9:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6280, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12507:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6283, + "mutability": "mutable", + "name": "vs", + "nameLocation": "12526:2:12", + "nodeType": "VariableDeclaration", + "scope": 6290, + "src": "12518:10:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6282, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12518:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "12476:53:12" + }, + "returnParameters": { + "id": 6287, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6286, + "mutability": "mutable", + "name": "isValid", + "nameLocation": "12582:7:12", + "nodeType": "VariableDeclaration", + "scope": 6290, + "src": "12577:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6285, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "12577:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "12576:14:12" + }, + "scope": 6365, + "src": "12441:898:12", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6307, + "nodeType": "Block", + "src": "13628:707:12", + "statements": [ + { + "AST": { + "nativeSrc": "13690:639:12", + "nodeType": "YulBlock", + "src": "13690:639:12", + "statements": [ + { + "nativeSrc": "13704:20:12", + "nodeType": "YulVariableDeclaration", + "src": "13704:20:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13719:4:12", + "nodeType": "YulLiteral", + "src": "13719:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "13713:5:12", + "nodeType": "YulIdentifier", + "src": "13713:5:12" + }, + "nativeSrc": "13713:11:12", + "nodeType": "YulFunctionCall", + "src": "13713:11:12" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "13708:1:12", + "nodeType": "YulTypedName", + "src": "13708:1:12", + "type": "" + } + ] + }, + { + "nativeSrc": "13737:29:12", + "nodeType": "YulVariableDeclaration", + "src": "13737:29:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13750:3:12", + "nodeType": "YulLiteral", + "src": "13750:3:12", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "13755:10:12", + "nodeType": "YulLiteral", + "src": "13755:10:12", + "type": "", + "value": "0x1626ba7e" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "13746:3:12", + "nodeType": "YulIdentifier", + "src": "13746:3:12" + }, + "nativeSrc": "13746:20:12", + "nodeType": "YulFunctionCall", + "src": "13746:20:12" + }, + "variables": [ + { + "name": "f", + "nativeSrc": "13741:1:12", + "nodeType": "YulTypedName", + "src": "13741:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "13786:1:12", + "nodeType": "YulIdentifier", + "src": "13786:1:12" + }, + { + "name": "f", + "nativeSrc": "13789:1:12", + "nodeType": "YulIdentifier", + "src": "13789:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13779:6:12", + "nodeType": "YulIdentifier", + "src": "13779:6:12" + }, + "nativeSrc": "13779:12:12", + "nodeType": "YulFunctionCall", + "src": "13779:12:12" + }, + "nativeSrc": "13779:12:12", + "nodeType": "YulExpressionStatement", + "src": "13779:12:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "13874:1:12", + "nodeType": "YulIdentifier", + "src": "13874:1:12" + }, + { + "kind": "number", + "nativeSrc": "13877:4:12", + "nodeType": "YulLiteral", + "src": "13877:4:12", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13870:3:12", + "nodeType": "YulIdentifier", + "src": "13870:3:12" + }, + "nativeSrc": "13870:12:12", + "nodeType": "YulFunctionCall", + "src": "13870:12:12" + }, + { + "name": "hash", + "nativeSrc": "13884:4:12", + "nodeType": "YulIdentifier", + "src": "13884:4:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13863:6:12", + "nodeType": "YulIdentifier", + "src": "13863:6:12" + }, + "nativeSrc": "13863:26:12", + "nodeType": "YulFunctionCall", + "src": "13863:26:12" + }, + "nativeSrc": "13863:26:12", + "nodeType": "YulExpressionStatement", + "src": "13863:26:12" + }, + { + "nativeSrc": "13902:21:12", + "nodeType": "YulVariableDeclaration", + "src": "13902:21:12", + "value": { + "arguments": [ + { + "name": "m", + "nativeSrc": "13915:1:12", + "nodeType": "YulIdentifier", + "src": "13915:1:12" + }, + { + "kind": "number", + "nativeSrc": "13918:4:12", + "nodeType": "YulLiteral", + "src": "13918:4:12", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13911:3:12", + "nodeType": "YulIdentifier", + "src": "13911:3:12" + }, + "nativeSrc": "13911:12:12", + "nodeType": "YulFunctionCall", + "src": "13911:12:12" + }, + "variables": [ + { + "name": "d", + "nativeSrc": "13906:1:12", + "nodeType": "YulTypedName", + "src": "13906:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "d", + "nativeSrc": "13943:1:12", + "nodeType": "YulIdentifier", + "src": "13943:1:12" + }, + { + "kind": "number", + "nativeSrc": "13946:4:12", + "nodeType": "YulLiteral", + "src": "13946:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13936:6:12", + "nodeType": "YulIdentifier", + "src": "13936:6:12" + }, + "nativeSrc": "13936:15:12", + "nodeType": "YulFunctionCall", + "src": "13936:15:12" + }, + "nativeSrc": "13936:15:12", + "nodeType": "YulExpressionStatement", + "src": "13936:15:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "14025:1:12", + "nodeType": "YulIdentifier", + "src": "14025:1:12" + }, + { + "kind": "number", + "nativeSrc": "14028:4:12", + "nodeType": "YulLiteral", + "src": "14028:4:12", + "type": "", + "value": "0x44" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14021:3:12", + "nodeType": "YulIdentifier", + "src": "14021:3:12" + }, + "nativeSrc": "14021:12:12", + "nodeType": "YulFunctionCall", + "src": "14021:12:12" + }, + { + "kind": "number", + "nativeSrc": "14035:2:12", + "nodeType": "YulLiteral", + "src": "14035:2:12", + "type": "", + "value": "65" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "14014:6:12", + "nodeType": "YulIdentifier", + "src": "14014:6:12" + }, + "nativeSrc": "14014:24:12", + "nodeType": "YulFunctionCall", + "src": "14014:24:12" + }, + "nativeSrc": "14014:24:12", + "nodeType": "YulExpressionStatement", + "src": "14014:24:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "14090:1:12", + "nodeType": "YulIdentifier", + "src": "14090:1:12" + }, + { + "kind": "number", + "nativeSrc": "14093:4:12", + "nodeType": "YulLiteral", + "src": "14093:4:12", + "type": "", + "value": "0x64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14086:3:12", + "nodeType": "YulIdentifier", + "src": "14086:3:12" + }, + "nativeSrc": "14086:12:12", + "nodeType": "YulFunctionCall", + "src": "14086:12:12" + }, + { + "name": "r", + "nativeSrc": "14100:1:12", + "nodeType": "YulIdentifier", + "src": "14100:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "14079:6:12", + "nodeType": "YulIdentifier", + "src": "14079:6:12" + }, + "nativeSrc": "14079:23:12", + "nodeType": "YulFunctionCall", + "src": "14079:23:12" + }, + "nativeSrc": "14079:23:12", + "nodeType": "YulExpressionStatement", + "src": "14079:23:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "14134:1:12", + "nodeType": "YulIdentifier", + "src": "14134:1:12" + }, + { + "kind": "number", + "nativeSrc": "14137:4:12", + "nodeType": "YulLiteral", + "src": "14137:4:12", + "type": "", + "value": "0x84" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14130:3:12", + "nodeType": "YulIdentifier", + "src": "14130:3:12" + }, + "nativeSrc": "14130:12:12", + "nodeType": "YulFunctionCall", + "src": "14130:12:12" + }, + { + "name": "s", + "nativeSrc": "14144:1:12", + "nodeType": "YulIdentifier", + "src": "14144:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "14123:6:12", + "nodeType": "YulIdentifier", + "src": "14123:6:12" + }, + "nativeSrc": "14123:23:12", + "nodeType": "YulFunctionCall", + "src": "14123:23:12" + }, + "nativeSrc": "14123:23:12", + "nodeType": "YulExpressionStatement", + "src": "14123:23:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "14179:1:12", + "nodeType": "YulIdentifier", + "src": "14179:1:12" + }, + { + "kind": "number", + "nativeSrc": "14182:4:12", + "nodeType": "YulLiteral", + "src": "14182:4:12", + "type": "", + "value": "0xa4" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14175:3:12", + "nodeType": "YulIdentifier", + "src": "14175:3:12" + }, + "nativeSrc": "14175:12:12", + "nodeType": "YulFunctionCall", + "src": "14175:12:12" + }, + { + "name": "v", + "nativeSrc": "14189:1:12", + "nodeType": "YulIdentifier", + "src": "14189:1:12" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "14167:7:12", + "nodeType": "YulIdentifier", + "src": "14167:7:12" + }, + "nativeSrc": "14167:24:12", + "nodeType": "YulFunctionCall", + "src": "14167:24:12" + }, + "nativeSrc": "14167:24:12", + "nodeType": "YulExpressionStatement", + "src": "14167:24:12" + }, + { + "nativeSrc": "14212:54:12", + "nodeType": "YulAssignment", + "src": "14212:54:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "14234:3:12", + "nodeType": "YulIdentifier", + "src": "14234:3:12" + }, + "nativeSrc": "14234:5:12", + "nodeType": "YulFunctionCall", + "src": "14234:5:12" + }, + { + "name": "signer", + "nativeSrc": "14241:6:12", + "nodeType": "YulIdentifier", + "src": "14241:6:12" + }, + { + "name": "m", + "nativeSrc": "14249:1:12", + "nodeType": "YulIdentifier", + "src": "14249:1:12" + }, + { + "kind": "number", + "nativeSrc": "14252:4:12", + "nodeType": "YulLiteral", + "src": "14252:4:12", + "type": "", + "value": "0xa5" + }, + { + "name": "d", + "nativeSrc": "14258:1:12", + "nodeType": "YulIdentifier", + "src": "14258:1:12" + }, + { + "kind": "number", + "nativeSrc": "14261:4:12", + "nodeType": "YulLiteral", + "src": "14261:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "14223:10:12", + "nodeType": "YulIdentifier", + "src": "14223:10:12" + }, + "nativeSrc": "14223:43:12", + "nodeType": "YulFunctionCall", + "src": "14223:43:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "14212:7:12", + "nodeType": "YulIdentifier", + "src": "14212:7:12" + } + ] + }, + { + "nativeSrc": "14279:40:12", + "nodeType": "YulAssignment", + "src": "14279:40:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "d", + "nativeSrc": "14303:1:12", + "nodeType": "YulIdentifier", + "src": "14303:1:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "14297:5:12", + "nodeType": "YulIdentifier", + "src": "14297:5:12" + }, + "nativeSrc": "14297:8:12", + "nodeType": "YulFunctionCall", + "src": "14297:8:12" + }, + { + "name": "f", + "nativeSrc": "14307:1:12", + "nodeType": "YulIdentifier", + "src": "14307:1:12" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "14294:2:12", + "nodeType": "YulIdentifier", + "src": "14294:2:12" + }, + "nativeSrc": "14294:15:12", + "nodeType": "YulFunctionCall", + "src": "14294:15:12" + }, + { + "name": "isValid", + "nativeSrc": "14311:7:12", + "nodeType": "YulIdentifier", + "src": "14311:7:12" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "14290:3:12", + "nodeType": "YulIdentifier", + "src": "14290:3:12" + }, + "nativeSrc": "14290:29:12", + "nodeType": "YulFunctionCall", + "src": "14290:29:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "14279:7:12", + "nodeType": "YulIdentifier", + "src": "14279:7:12" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6295, + "isOffset": false, + "isSlot": false, + "src": "13884:4:12", + "valueSize": 1 + }, + { + "declaration": 6304, + "isOffset": false, + "isSlot": false, + "src": "14212:7:12", + "valueSize": 1 + }, + { + "declaration": 6304, + "isOffset": false, + "isSlot": false, + "src": "14279:7:12", + "valueSize": 1 + }, + { + "declaration": 6304, + "isOffset": false, + "isSlot": false, + "src": "14311:7:12", + "valueSize": 1 + }, + { + "declaration": 6299, + "isOffset": false, + "isSlot": false, + "src": "14100:1:12", + "valueSize": 1 + }, + { + "declaration": 6301, + "isOffset": false, + "isSlot": false, + "src": "14144:1:12", + "valueSize": 1 + }, + { + "declaration": 6293, + "isOffset": false, + "isSlot": false, + "src": "14241:6:12", + "valueSize": 1 + }, + { + "declaration": 6297, + "isOffset": false, + "isSlot": false, + "src": "14189:1:12", + "valueSize": 1 + } + ], + "id": 6306, + "nodeType": "InlineAssembly", + "src": "13681:648:12" + } + ] + }, + "documentation": { + "id": 6291, + "nodeType": "StructuredDocumentation", + "src": "13345:116:12", + "text": "@dev Returns whether the signature (`v`, `r`, `s`) is valid for `hash`\n for an ERC1271 `signer` contract." + }, + "id": 6308, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isValidERC1271SignatureNow", + "nameLocation": "13475:26:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6302, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6293, + "mutability": "mutable", + "name": "signer", + "nameLocation": "13510:6:12", + "nodeType": "VariableDeclaration", + "scope": 6308, + "src": "13502:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6292, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13502:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6295, + "mutability": "mutable", + "name": "hash", + "nameLocation": "13526:4:12", + "nodeType": "VariableDeclaration", + "scope": 6308, + "src": "13518:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6294, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "13518:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6297, + "mutability": "mutable", + "name": "v", + "nameLocation": "13538:1:12", + "nodeType": "VariableDeclaration", + "scope": 6308, + "src": "13532:7:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 6296, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "13532:5:12", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6299, + "mutability": "mutable", + "name": "r", + "nameLocation": "13549:1:12", + "nodeType": "VariableDeclaration", + "scope": 6308, + "src": "13541:9:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6298, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "13541:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6301, + "mutability": "mutable", + "name": "s", + "nameLocation": "13560:1:12", + "nodeType": "VariableDeclaration", + "scope": 6308, + "src": "13552:9:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6300, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "13552:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "13501:61:12" + }, + "returnParameters": { + "id": 6305, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6304, + "mutability": "mutable", + "name": "isValid", + "nameLocation": "13615:7:12", + "nodeType": "VariableDeclaration", + "scope": 6308, + "src": "13610:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6303, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "13610:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "13609:14:12" + }, + "scope": 6365, + "src": "13466:869:12", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6321, + "nodeType": "Block", + "src": "15568:3267:12", + "statements": [ + { + "AST": { + "nativeSrc": "15630:3199:12", + "nodeType": "YulBlock", + "src": "15630:3199:12", + "statements": [ + { + "body": { + "nativeSrc": "15714:673:12", + "nodeType": "YulBlock", + "src": "15714:673:12", + "statements": [ + { + "nativeSrc": "15732:21:12", + "nodeType": "YulVariableDeclaration", + "src": "15732:21:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "15748:4:12", + "nodeType": "YulLiteral", + "src": "15748:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "15742:5:12", + "nodeType": "YulIdentifier", + "src": "15742:5:12" + }, + "nativeSrc": "15742:11:12", + "nodeType": "YulFunctionCall", + "src": "15742:11:12" + }, + "variables": [ + { + "name": "m_", + "nativeSrc": "15736:2:12", + "nodeType": "YulTypedName", + "src": "15736:2:12", + "type": "" + } + ] + }, + { + "nativeSrc": "15770:30:12", + "nodeType": "YulVariableDeclaration", + "src": "15770:30:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "15784:3:12", + "nodeType": "YulLiteral", + "src": "15784:3:12", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "15789:10:12", + "nodeType": "YulLiteral", + "src": "15789:10:12", + "type": "", + "value": "0x1626ba7e" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "15780:3:12", + "nodeType": "YulIdentifier", + "src": "15780:3:12" + }, + "nativeSrc": "15780:20:12", + "nodeType": "YulFunctionCall", + "src": "15780:20:12" + }, + "variables": [ + { + "name": "f_", + "nativeSrc": "15774:2:12", + "nodeType": "YulTypedName", + "src": "15774:2:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "m_", + "nativeSrc": "15824:2:12", + "nodeType": "YulIdentifier", + "src": "15824:2:12" + }, + { + "name": "f_", + "nativeSrc": "15828:2:12", + "nodeType": "YulIdentifier", + "src": "15828:2:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "15817:6:12", + "nodeType": "YulIdentifier", + "src": "15817:6:12" + }, + "nativeSrc": "15817:14:12", + "nodeType": "YulFunctionCall", + "src": "15817:14:12" + }, + "nativeSrc": "15817:14:12", + "nodeType": "YulExpressionStatement", + "src": "15817:14:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m_", + "nativeSrc": "15918:2:12", + "nodeType": "YulIdentifier", + "src": "15918:2:12" + }, + { + "kind": "number", + "nativeSrc": "15922:4:12", + "nodeType": "YulLiteral", + "src": "15922:4:12", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15914:3:12", + "nodeType": "YulIdentifier", + "src": "15914:3:12" + }, + "nativeSrc": "15914:13:12", + "nodeType": "YulFunctionCall", + "src": "15914:13:12" + }, + { + "name": "hash_", + "nativeSrc": "15929:5:12", + "nodeType": "YulIdentifier", + "src": "15929:5:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "15907:6:12", + "nodeType": "YulIdentifier", + "src": "15907:6:12" + }, + "nativeSrc": "15907:28:12", + "nodeType": "YulFunctionCall", + "src": "15907:28:12" + }, + "nativeSrc": "15907:28:12", + "nodeType": "YulExpressionStatement", + "src": "15907:28:12" + }, + { + "nativeSrc": "15952:23:12", + "nodeType": "YulVariableDeclaration", + "src": "15952:23:12", + "value": { + "arguments": [ + { + "name": "m_", + "nativeSrc": "15966:2:12", + "nodeType": "YulIdentifier", + "src": "15966:2:12" + }, + { + "kind": "number", + "nativeSrc": "15970:4:12", + "nodeType": "YulLiteral", + "src": "15970:4:12", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15962:3:12", + "nodeType": "YulIdentifier", + "src": "15962:3:12" + }, + "nativeSrc": "15962:13:12", + "nodeType": "YulFunctionCall", + "src": "15962:13:12" + }, + "variables": [ + { + "name": "d_", + "nativeSrc": "15956:2:12", + "nodeType": "YulTypedName", + "src": "15956:2:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "d_", + "nativeSrc": "15999:2:12", + "nodeType": "YulIdentifier", + "src": "15999:2:12" + }, + { + "kind": "number", + "nativeSrc": "16003:4:12", + "nodeType": "YulLiteral", + "src": "16003:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "15992:6:12", + "nodeType": "YulIdentifier", + "src": "15992:6:12" + }, + "nativeSrc": "15992:16:12", + "nodeType": "YulFunctionCall", + "src": "15992:16:12" + }, + "nativeSrc": "15992:16:12", + "nodeType": "YulExpressionStatement", + "src": "15992:16:12" + }, + { + "nativeSrc": "16075:38:12", + "nodeType": "YulVariableDeclaration", + "src": "16075:38:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "16089:4:12", + "nodeType": "YulLiteral", + "src": "16089:4:12", + "type": "", + "value": "0x20" + }, + { + "arguments": [ + { + "name": "signature_", + "nativeSrc": "16101:10:12", + "nodeType": "YulIdentifier", + "src": "16101:10:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "16095:5:12", + "nodeType": "YulIdentifier", + "src": "16095:5:12" + }, + "nativeSrc": "16095:17:12", + "nodeType": "YulFunctionCall", + "src": "16095:17:12" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16085:3:12", + "nodeType": "YulIdentifier", + "src": "16085:3:12" + }, + "nativeSrc": "16085:28:12", + "nodeType": "YulFunctionCall", + "src": "16085:28:12" + }, + "variables": [ + { + "name": "n_", + "nativeSrc": "16079:2:12", + "nodeType": "YulTypedName", + "src": "16079:2:12", + "type": "" + } + ] + }, + { + "nativeSrc": "16130:70:12", + "nodeType": "YulVariableDeclaration", + "src": "16130:70:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "16156:3:12", + "nodeType": "YulIdentifier", + "src": "16156:3:12" + }, + "nativeSrc": "16156:5:12", + "nodeType": "YulFunctionCall", + "src": "16156:5:12" + }, + { + "kind": "number", + "nativeSrc": "16163:1:12", + "nodeType": "YulLiteral", + "src": "16163:1:12", + "type": "", + "value": "4" + }, + { + "name": "signature_", + "nativeSrc": "16166:10:12", + "nodeType": "YulIdentifier", + "src": "16166:10:12" + }, + { + "name": "n_", + "nativeSrc": "16178:2:12", + "nodeType": "YulIdentifier", + "src": "16178:2:12" + }, + { + "arguments": [ + { + "name": "m_", + "nativeSrc": "16186:2:12", + "nodeType": "YulIdentifier", + "src": "16186:2:12" + }, + { + "kind": "number", + "nativeSrc": "16190:4:12", + "nodeType": "YulLiteral", + "src": "16190:4:12", + "type": "", + "value": "0x44" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16182:3:12", + "nodeType": "YulIdentifier", + "src": "16182:3:12" + }, + "nativeSrc": "16182:13:12", + "nodeType": "YulFunctionCall", + "src": "16182:13:12" + }, + { + "name": "n_", + "nativeSrc": "16197:2:12", + "nodeType": "YulIdentifier", + "src": "16197:2:12" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "16145:10:12", + "nodeType": "YulIdentifier", + "src": "16145:10:12" + }, + "nativeSrc": "16145:55:12", + "nodeType": "YulFunctionCall", + "src": "16145:55:12" + }, + "variables": [ + { + "name": "copied_", + "nativeSrc": "16134:7:12", + "nodeType": "YulTypedName", + "src": "16134:7:12", + "type": "" + } + ] + }, + { + "nativeSrc": "16217:81:12", + "nodeType": "YulAssignment", + "src": "16217:81:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "16240:3:12", + "nodeType": "YulIdentifier", + "src": "16240:3:12" + }, + "nativeSrc": "16240:5:12", + "nodeType": "YulFunctionCall", + "src": "16240:5:12" + }, + { + "name": "signer_", + "nativeSrc": "16247:7:12", + "nodeType": "YulIdentifier", + "src": "16247:7:12" + }, + { + "name": "m_", + "nativeSrc": "16256:2:12", + "nodeType": "YulIdentifier", + "src": "16256:2:12" + }, + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "16264:14:12", + "nodeType": "YulIdentifier", + "src": "16264:14:12" + }, + "nativeSrc": "16264:16:12", + "nodeType": "YulFunctionCall", + "src": "16264:16:12" + }, + { + "kind": "number", + "nativeSrc": "16282:4:12", + "nodeType": "YulLiteral", + "src": "16282:4:12", + "type": "", + "value": "0x44" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16260:3:12", + "nodeType": "YulIdentifier", + "src": "16260:3:12" + }, + "nativeSrc": "16260:27:12", + "nodeType": "YulFunctionCall", + "src": "16260:27:12" + }, + { + "name": "d_", + "nativeSrc": "16289:2:12", + "nodeType": "YulIdentifier", + "src": "16289:2:12" + }, + { + "kind": "number", + "nativeSrc": "16293:4:12", + "nodeType": "YulLiteral", + "src": "16293:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "16229:10:12", + "nodeType": "YulIdentifier", + "src": "16229:10:12" + }, + "nativeSrc": "16229:69:12", + "nodeType": "YulFunctionCall", + "src": "16229:69:12" + }, + "variableNames": [ + { + "name": "_isValid", + "nativeSrc": "16217:8:12", + "nodeType": "YulIdentifier", + "src": "16217:8:12" + } + ] + }, + { + "nativeSrc": "16315:58:12", + "nodeType": "YulAssignment", + "src": "16315:58:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "d_", + "nativeSrc": "16340:2:12", + "nodeType": "YulIdentifier", + "src": "16340:2:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "16334:5:12", + "nodeType": "YulIdentifier", + "src": "16334:5:12" + }, + "nativeSrc": "16334:9:12", + "nodeType": "YulFunctionCall", + "src": "16334:9:12" + }, + { + "name": "f_", + "nativeSrc": "16345:2:12", + "nodeType": "YulIdentifier", + "src": "16345:2:12" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "16331:2:12", + "nodeType": "YulIdentifier", + "src": "16331:2:12" + }, + "nativeSrc": "16331:17:12", + "nodeType": "YulFunctionCall", + "src": "16331:17:12" + }, + { + "arguments": [ + { + "name": "_isValid", + "nativeSrc": "16354:8:12", + "nodeType": "YulIdentifier", + "src": "16354:8:12" + }, + { + "name": "copied_", + "nativeSrc": "16364:7:12", + "nodeType": "YulIdentifier", + "src": "16364:7:12" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "16350:3:12", + "nodeType": "YulIdentifier", + "src": "16350:3:12" + }, + "nativeSrc": "16350:22:12", + "nodeType": "YulFunctionCall", + "src": "16350:22:12" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "16327:3:12", + "nodeType": "YulIdentifier", + "src": "16327:3:12" + }, + "nativeSrc": "16327:46:12", + "nodeType": "YulFunctionCall", + "src": "16327:46:12" + }, + "variableNames": [ + { + "name": "_isValid", + "nativeSrc": "16315:8:12", + "nodeType": "YulIdentifier", + "src": "16315:8:12" + } + ] + } + ] + }, + "name": "callIsValidSignature", + "nativeSrc": "15644:743:12", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "signer_", + "nativeSrc": "15674:7:12", + "nodeType": "YulTypedName", + "src": "15674:7:12", + "type": "" + }, + { + "name": "hash_", + "nativeSrc": "15683:5:12", + "nodeType": "YulTypedName", + "src": "15683:5:12", + "type": "" + }, + { + "name": "signature_", + "nativeSrc": "15690:10:12", + "nodeType": "YulTypedName", + "src": "15690:10:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "_isValid", + "nativeSrc": "15705:8:12", + "nodeType": "YulTypedName", + "src": "15705:8:12", + "type": "" + } + ], + "src": "15644:743:12" + }, + { + "nativeSrc": "16400:41:12", + "nodeType": "YulVariableDeclaration", + "src": "16400:41:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "signer", + "nativeSrc": "16433:6:12", + "nodeType": "YulIdentifier", + "src": "16433:6:12" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "16421:11:12", + "nodeType": "YulIdentifier", + "src": "16421:11:12" + }, + "nativeSrc": "16421:19:12", + "nodeType": "YulFunctionCall", + "src": "16421:19:12" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "16414:6:12", + "nodeType": "YulIdentifier", + "src": "16414:6:12" + }, + "nativeSrc": "16414:27:12", + "nodeType": "YulFunctionCall", + "src": "16414:27:12" + }, + "variables": [ + { + "name": "noCode", + "nativeSrc": "16404:6:12", + "nodeType": "YulTypedName", + "src": "16404:6:12", + "type": "" + } + ] + }, + { + "nativeSrc": "16454:25:12", + "nodeType": "YulVariableDeclaration", + "src": "16454:25:12", + "value": { + "arguments": [ + { + "name": "signature", + "nativeSrc": "16469:9:12", + "nodeType": "YulIdentifier", + "src": "16469:9:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "16463:5:12", + "nodeType": "YulIdentifier", + "src": "16463:5:12" + }, + "nativeSrc": "16463:16:12", + "nodeType": "YulFunctionCall", + "src": "16463:16:12" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "16458:1:12", + "nodeType": "YulTypedName", + "src": "16458:1:12", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "16504:1262:12", + "nodeType": "YulBlock", + "src": "16504:1262:12", + "statements": [ + { + "body": { + "nativeSrc": "16602:144:12", + "nodeType": "YulBlock", + "src": "16602:144:12", + "statements": [ + { + "body": { + "nativeSrc": "16642:60:12", + "nodeType": "YulBlock", + "src": "16642:60:12", + "statements": [ + { + "nativeSrc": "16644:56:12", + "nodeType": "YulAssignment", + "src": "16644:56:12", + "value": { + "arguments": [ + { + "name": "signer", + "nativeSrc": "16676:6:12", + "nodeType": "YulIdentifier", + "src": "16676:6:12" + }, + { + "name": "hash", + "nativeSrc": "16684:4:12", + "nodeType": "YulIdentifier", + "src": "16684:4:12" + }, + { + "name": "signature", + "nativeSrc": "16690:9:12", + "nodeType": "YulIdentifier", + "src": "16690:9:12" + } + ], + "functionName": { + "name": "callIsValidSignature", + "nativeSrc": "16655:20:12", + "nodeType": "YulIdentifier", + "src": "16655:20:12" + }, + "nativeSrc": "16655:45:12", + "nodeType": "YulFunctionCall", + "src": "16655:45:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "16644:7:12", + "nodeType": "YulIdentifier", + "src": "16644:7:12" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "noCode", + "nativeSrc": "16634:6:12", + "nodeType": "YulIdentifier", + "src": "16634:6:12" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "16627:6:12", + "nodeType": "YulIdentifier", + "src": "16627:6:12" + }, + "nativeSrc": "16627:14:12", + "nodeType": "YulFunctionCall", + "src": "16627:14:12" + }, + "nativeSrc": "16624:78:12", + "nodeType": "YulIf", + "src": "16624:78:12" + }, + { + "nativeSrc": "16723:5:12", + "nodeType": "YulBreak", + "src": "16723:5:12" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "16545:9:12", + "nodeType": "YulIdentifier", + "src": "16545:9:12" + }, + { + "name": "n", + "nativeSrc": "16556:1:12", + "nodeType": "YulIdentifier", + "src": "16556:1:12" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16541:3:12", + "nodeType": "YulIdentifier", + "src": "16541:3:12" + }, + "nativeSrc": "16541:17:12", + "nodeType": "YulFunctionCall", + "src": "16541:17:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "16535:5:12", + "nodeType": "YulIdentifier", + "src": "16535:5:12" + }, + "nativeSrc": "16535:24:12", + "nodeType": "YulFunctionCall", + "src": "16535:24:12" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "16565:6:12", + "nodeType": "YulLiteral", + "src": "16565:6:12", + "type": "", + "value": "0x6492" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "isValid", + "nativeSrc": "16581:7:12", + "nodeType": "YulIdentifier", + "src": "16581:7:12" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "16577:3:12", + "nodeType": "YulIdentifier", + "src": "16577:3:12" + }, + "nativeSrc": "16577:12:12", + "nodeType": "YulFunctionCall", + "src": "16577:12:12" + }, + { + "kind": "number", + "nativeSrc": "16591:6:12", + "nodeType": "YulLiteral", + "src": "16591:6:12", + "type": "", + "value": "0xffff" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "16573:3:12", + "nodeType": "YulIdentifier", + "src": "16573:3:12" + }, + "nativeSrc": "16573:25:12", + "nodeType": "YulFunctionCall", + "src": "16573:25:12" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "16561:3:12", + "nodeType": "YulIdentifier", + "src": "16561:3:12" + }, + "nativeSrc": "16561:38:12", + "nodeType": "YulFunctionCall", + "src": "16561:38:12" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "16532:2:12", + "nodeType": "YulIdentifier", + "src": "16532:2:12" + }, + "nativeSrc": "16532:68:12", + "nodeType": "YulFunctionCall", + "src": "16532:68:12" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "16525:6:12", + "nodeType": "YulIdentifier", + "src": "16525:6:12" + }, + "nativeSrc": "16525:76:12", + "nodeType": "YulFunctionCall", + "src": "16525:76:12" + }, + "nativeSrc": "16522:224:12", + "nodeType": "YulIf", + "src": "16522:224:12" + }, + { + "body": { + "nativeSrc": "16781:225:12", + "nodeType": "YulBlock", + "src": "16781:225:12", + "statements": [ + { + "nativeSrc": "16803:29:12", + "nodeType": "YulVariableDeclaration", + "src": "16803:29:12", + "value": { + "arguments": [ + { + "name": "signature", + "nativeSrc": "16816:9:12", + "nodeType": "YulIdentifier", + "src": "16816:9:12" + }, + { + "kind": "number", + "nativeSrc": "16827:4:12", + "nodeType": "YulLiteral", + "src": "16827:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16812:3:12", + "nodeType": "YulIdentifier", + "src": "16812:3:12" + }, + "nativeSrc": "16812:20:12", + "nodeType": "YulFunctionCall", + "src": "16812:20:12" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "16807:1:12", + "nodeType": "YulTypedName", + "src": "16807:1:12", + "type": "" + } + ] + }, + { + "nativeSrc": "16873:74:12", + "nodeType": "YulAssignment", + "src": "16873:74:12", + "value": { + "arguments": [ + { + "name": "signer", + "nativeSrc": "16905:6:12", + "nodeType": "YulIdentifier", + "src": "16905:6:12" + }, + { + "name": "hash", + "nativeSrc": "16913:4:12", + "nodeType": "YulIdentifier", + "src": "16913:4:12" + }, + { + "arguments": [ + { + "name": "o", + "nativeSrc": "16923:1:12", + "nodeType": "YulIdentifier", + "src": "16923:1:12" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "16936:1:12", + "nodeType": "YulIdentifier", + "src": "16936:1:12" + }, + { + "kind": "number", + "nativeSrc": "16939:4:12", + "nodeType": "YulLiteral", + "src": "16939:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16932:3:12", + "nodeType": "YulIdentifier", + "src": "16932:3:12" + }, + "nativeSrc": "16932:12:12", + "nodeType": "YulFunctionCall", + "src": "16932:12:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "16926:5:12", + "nodeType": "YulIdentifier", + "src": "16926:5:12" + }, + "nativeSrc": "16926:19:12", + "nodeType": "YulFunctionCall", + "src": "16926:19:12" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16919:3:12", + "nodeType": "YulIdentifier", + "src": "16919:3:12" + }, + "nativeSrc": "16919:27:12", + "nodeType": "YulFunctionCall", + "src": "16919:27:12" + } + ], + "functionName": { + "name": "callIsValidSignature", + "nativeSrc": "16884:20:12", + "nodeType": "YulIdentifier", + "src": "16884:20:12" + }, + "nativeSrc": "16884:63:12", + "nodeType": "YulFunctionCall", + "src": "16884:63:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "16873:7:12", + "nodeType": "YulIdentifier", + "src": "16873:7:12" + } + ] + }, + { + "body": { + "nativeSrc": "16979:9:12", + "nodeType": "YulBlock", + "src": "16979:9:12", + "statements": [ + { + "nativeSrc": "16981:5:12", + "nodeType": "YulBreak", + "src": "16981:5:12" + } + ] + }, + "condition": { + "name": "isValid", + "nativeSrc": "16971:7:12", + "nodeType": "YulIdentifier", + "src": "16971:7:12" + }, + "nativeSrc": "16968:20:12", + "nodeType": "YulIf", + "src": "16968:20:12" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "noCode", + "nativeSrc": "16773:6:12", + "nodeType": "YulIdentifier", + "src": "16773:6:12" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "16766:6:12", + "nodeType": "YulIdentifier", + "src": "16766:6:12" + }, + "nativeSrc": "16766:14:12", + "nodeType": "YulFunctionCall", + "src": "16766:14:12" + }, + "nativeSrc": "16763:243:12", + "nodeType": "YulIf", + "src": "16763:243:12" + }, + { + "nativeSrc": "17023:20:12", + "nodeType": "YulVariableDeclaration", + "src": "17023:20:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "17038:4:12", + "nodeType": "YulLiteral", + "src": "17038:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "17032:5:12", + "nodeType": "YulIdentifier", + "src": "17032:5:12" + }, + "nativeSrc": "17032:11:12", + "nodeType": "YulFunctionCall", + "src": "17032:11:12" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "17027:1:12", + "nodeType": "YulTypedName", + "src": "17027:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "17067:1:12", + "nodeType": "YulIdentifier", + "src": "17067:1:12" + }, + { + "name": "signer", + "nativeSrc": "17070:6:12", + "nodeType": "YulIdentifier", + "src": "17070:6:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "17060:6:12", + "nodeType": "YulIdentifier", + "src": "17060:6:12" + }, + "nativeSrc": "17060:17:12", + "nodeType": "YulFunctionCall", + "src": "17060:17:12" + }, + "nativeSrc": "17060:17:12", + "nodeType": "YulExpressionStatement", + "src": "17060:17:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "17105:1:12", + "nodeType": "YulIdentifier", + "src": "17105:1:12" + }, + { + "kind": "number", + "nativeSrc": "17108:4:12", + "nodeType": "YulLiteral", + "src": "17108:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17101:3:12", + "nodeType": "YulIdentifier", + "src": "17101:3:12" + }, + "nativeSrc": "17101:12:12", + "nodeType": "YulFunctionCall", + "src": "17101:12:12" + }, + { + "name": "hash", + "nativeSrc": "17115:4:12", + "nodeType": "YulIdentifier", + "src": "17115:4:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "17094:6:12", + "nodeType": "YulIdentifier", + "src": "17094:6:12" + }, + "nativeSrc": "17094:26:12", + "nodeType": "YulFunctionCall", + "src": "17094:26:12" + }, + "nativeSrc": "17094:26:12", + "nodeType": "YulExpressionStatement", + "src": "17094:26:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "17192:3:12", + "nodeType": "YulIdentifier", + "src": "17192:3:12" + }, + "nativeSrc": "17192:5:12", + "nodeType": "YulFunctionCall", + "src": "17192:5:12" + }, + { + "kind": "number", + "nativeSrc": "17241:42:12", + "nodeType": "YulLiteral", + "src": "17241:42:12", + "type": "", + "value": "0x0000bc370E4DC924F427d84e2f4B9Ec81626ba7E" + }, + { + "kind": "number", + "nativeSrc": "17336:1:12", + "nodeType": "YulLiteral", + "src": "17336:1:12", + "type": "", + "value": "0" + }, + { + "name": "m", + "nativeSrc": "17381:1:12", + "nodeType": "YulIdentifier", + "src": "17381:1:12" + }, + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "17432:14:12", + "nodeType": "YulIdentifier", + "src": "17432:14:12" + }, + "nativeSrc": "17432:16:12", + "nodeType": "YulFunctionCall", + "src": "17432:16:12" + }, + { + "kind": "number", + "nativeSrc": "17450:4:12", + "nodeType": "YulLiteral", + "src": "17450:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17428:3:12", + "nodeType": "YulIdentifier", + "src": "17428:3:12" + }, + "nativeSrc": "17428:27:12", + "nodeType": "YulFunctionCall", + "src": "17428:27:12" + }, + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "17525:3:12", + "nodeType": "YulIdentifier", + "src": "17525:3:12" + }, + "nativeSrc": "17525:5:12", + "nodeType": "YulFunctionCall", + "src": "17525:5:12" + }, + { + "kind": "number", + "nativeSrc": "17532:1:12", + "nodeType": "YulLiteral", + "src": "17532:1:12", + "type": "", + "value": "4" + }, + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "17539:9:12", + "nodeType": "YulIdentifier", + "src": "17539:9:12" + }, + { + "kind": "number", + "nativeSrc": "17550:4:12", + "nodeType": "YulLiteral", + "src": "17550:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17535:3:12", + "nodeType": "YulIdentifier", + "src": "17535:3:12" + }, + "nativeSrc": "17535:20:12", + "nodeType": "YulFunctionCall", + "src": "17535:20:12" + }, + { + "name": "n", + "nativeSrc": "17557:1:12", + "nodeType": "YulIdentifier", + "src": "17557:1:12" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "17564:1:12", + "nodeType": "YulIdentifier", + "src": "17564:1:12" + }, + { + "kind": "number", + "nativeSrc": "17567:4:12", + "nodeType": "YulLiteral", + "src": "17567:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17560:3:12", + "nodeType": "YulIdentifier", + "src": "17560:3:12" + }, + "nativeSrc": "17560:12:12", + "nodeType": "YulFunctionCall", + "src": "17560:12:12" + }, + { + "name": "n", + "nativeSrc": "17574:1:12", + "nodeType": "YulIdentifier", + "src": "17574:1:12" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "17514:10:12", + "nodeType": "YulIdentifier", + "src": "17514:10:12" + }, + "nativeSrc": "17514:62:12", + "nodeType": "YulFunctionCall", + "src": "17514:62:12" + }, + { + "kind": "number", + "nativeSrc": "17608:4:12", + "nodeType": "YulLiteral", + "src": "17608:4:12", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "call", + "nativeSrc": "17162:4:12", + "nodeType": "YulIdentifier", + "src": "17162:4:12" + }, + "nativeSrc": "17162:506:12", + "nodeType": "YulFunctionCall", + "src": "17162:506:12" + } + ], + "functionName": { + "name": "pop", + "nativeSrc": "17137:3:12", + "nodeType": "YulIdentifier", + "src": "17137:3:12" + }, + "nativeSrc": "17137:549:12", + "nodeType": "YulFunctionCall", + "src": "17137:549:12" + }, + "nativeSrc": "17137:549:12", + "nodeType": "YulExpressionStatement", + "src": "17137:549:12" + }, + { + "nativeSrc": "17703:27:12", + "nodeType": "YulAssignment", + "src": "17703:27:12", + "value": { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "17714:14:12", + "nodeType": "YulIdentifier", + "src": "17714:14:12" + }, + "nativeSrc": "17714:16:12", + "nodeType": "YulFunctionCall", + "src": "17714:16:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "17703:7:12", + "nodeType": "YulIdentifier", + "src": "17703:7:12" + } + ] + }, + { + "nativeSrc": "17747:5:12", + "nodeType": "YulBreak", + "src": "17747:5:12" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "16499:1:12", + "nodeType": "YulLiteral", + "src": "16499:1:12", + "type": "", + "value": "1" + }, + "nativeSrc": "16492:1274:12", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "16501:2:12", + "nodeType": "YulBlock", + "src": "16501:2:12", + "statements": [] + }, + "pre": { + "nativeSrc": "16496:2:12", + "nodeType": "YulBlock", + "src": "16496:2:12", + "statements": [] + }, + "src": "16492:1274:12" + }, + { + "body": { + "nativeSrc": "17873:946:12", + "nodeType": "YulBlock", + "src": "17873:946:12", + "statements": [ + { + "cases": [ + { + "body": { + "nativeSrc": "17924:202:12", + "nodeType": "YulBlock", + "src": "17924:202:12", + "statements": [ + { + "nativeSrc": "17946:37:12", + "nodeType": "YulVariableDeclaration", + "src": "17946:37:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "17966:9:12", + "nodeType": "YulIdentifier", + "src": "17966:9:12" + }, + { + "kind": "number", + "nativeSrc": "17977:4:12", + "nodeType": "YulLiteral", + "src": "17977:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17962:3:12", + "nodeType": "YulIdentifier", + "src": "17962:3:12" + }, + "nativeSrc": "17962:20:12", + "nodeType": "YulFunctionCall", + "src": "17962:20:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "17956:5:12", + "nodeType": "YulIdentifier", + "src": "17956:5:12" + }, + "nativeSrc": "17956:27:12", + "nodeType": "YulFunctionCall", + "src": "17956:27:12" + }, + "variables": [ + { + "name": "vs", + "nativeSrc": "17950:2:12", + "nodeType": "YulTypedName", + "src": "17950:2:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18011:4:12", + "nodeType": "YulLiteral", + "src": "18011:4:12", + "type": "", + "value": "0x20" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18025:3:12", + "nodeType": "YulLiteral", + "src": "18025:3:12", + "type": "", + "value": "255" + }, + { + "name": "vs", + "nativeSrc": "18030:2:12", + "nodeType": "YulIdentifier", + "src": "18030:2:12" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "18021:3:12", + "nodeType": "YulIdentifier", + "src": "18021:3:12" + }, + "nativeSrc": "18021:12:12", + "nodeType": "YulFunctionCall", + "src": "18021:12:12" + }, + { + "kind": "number", + "nativeSrc": "18035:2:12", + "nodeType": "YulLiteral", + "src": "18035:2:12", + "type": "", + "value": "27" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18017:3:12", + "nodeType": "YulIdentifier", + "src": "18017:3:12" + }, + "nativeSrc": "18017:21:12", + "nodeType": "YulFunctionCall", + "src": "18017:21:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18004:6:12", + "nodeType": "YulIdentifier", + "src": "18004:6:12" + }, + "nativeSrc": "18004:35:12", + "nodeType": "YulFunctionCall", + "src": "18004:35:12" + }, + "nativeSrc": "18004:35:12", + "nodeType": "YulExpressionStatement", + "src": "18004:35:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18075:4:12", + "nodeType": "YulLiteral", + "src": "18075:4:12", + "type": "", + "value": "0x60" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18085:1:12", + "nodeType": "YulLiteral", + "src": "18085:1:12", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18092:1:12", + "nodeType": "YulLiteral", + "src": "18092:1:12", + "type": "", + "value": "1" + }, + { + "name": "vs", + "nativeSrc": "18095:2:12", + "nodeType": "YulIdentifier", + "src": "18095:2:12" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "18088:3:12", + "nodeType": "YulIdentifier", + "src": "18088:3:12" + }, + "nativeSrc": "18088:10:12", + "nodeType": "YulFunctionCall", + "src": "18088:10:12" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "18081:3:12", + "nodeType": "YulIdentifier", + "src": "18081:3:12" + }, + "nativeSrc": "18081:18:12", + "nodeType": "YulFunctionCall", + "src": "18081:18:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18068:6:12", + "nodeType": "YulIdentifier", + "src": "18068:6:12" + }, + "nativeSrc": "18068:32:12", + "nodeType": "YulFunctionCall", + "src": "18068:32:12" + }, + "nativeSrc": "18068:32:12", + "nodeType": "YulExpressionStatement", + "src": "18068:32:12" + } + ] + }, + "nativeSrc": "17916:210:12", + "nodeType": "YulCase", + "src": "17916:210:12", + "value": { + "kind": "number", + "nativeSrc": "17921:2:12", + "nodeType": "YulLiteral", + "src": "17921:2:12", + "type": "", + "value": "64" + } + }, + { + "body": { + "nativeSrc": "18151:168:12", + "nodeType": "YulBlock", + "src": "18151:168:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18180:4:12", + "nodeType": "YulLiteral", + "src": "18180:4:12", + "type": "", + "value": "0x20" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18191:1:12", + "nodeType": "YulLiteral", + "src": "18191:1:12", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "18204:9:12", + "nodeType": "YulIdentifier", + "src": "18204:9:12" + }, + { + "kind": "number", + "nativeSrc": "18215:4:12", + "nodeType": "YulLiteral", + "src": "18215:4:12", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18200:3:12", + "nodeType": "YulIdentifier", + "src": "18200:3:12" + }, + "nativeSrc": "18200:20:12", + "nodeType": "YulFunctionCall", + "src": "18200:20:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "18194:5:12", + "nodeType": "YulIdentifier", + "src": "18194:5:12" + }, + "nativeSrc": "18194:27:12", + "nodeType": "YulFunctionCall", + "src": "18194:27:12" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "18186:4:12", + "nodeType": "YulIdentifier", + "src": "18186:4:12" + }, + "nativeSrc": "18186:36:12", + "nodeType": "YulFunctionCall", + "src": "18186:36:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18173:6:12", + "nodeType": "YulIdentifier", + "src": "18173:6:12" + }, + "nativeSrc": "18173:50:12", + "nodeType": "YulFunctionCall", + "src": "18173:50:12" + }, + "nativeSrc": "18173:50:12", + "nodeType": "YulExpressionStatement", + "src": "18173:50:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18259:4:12", + "nodeType": "YulLiteral", + "src": "18259:4:12", + "type": "", + "value": "0x60" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "18275:9:12", + "nodeType": "YulIdentifier", + "src": "18275:9:12" + }, + { + "kind": "number", + "nativeSrc": "18286:4:12", + "nodeType": "YulLiteral", + "src": "18286:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18271:3:12", + "nodeType": "YulIdentifier", + "src": "18271:3:12" + }, + "nativeSrc": "18271:20:12", + "nodeType": "YulFunctionCall", + "src": "18271:20:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "18265:5:12", + "nodeType": "YulIdentifier", + "src": "18265:5:12" + }, + "nativeSrc": "18265:27:12", + "nodeType": "YulFunctionCall", + "src": "18265:27:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18252:6:12", + "nodeType": "YulIdentifier", + "src": "18252:6:12" + }, + "nativeSrc": "18252:41:12", + "nodeType": "YulFunctionCall", + "src": "18252:41:12" + }, + "nativeSrc": "18252:41:12", + "nodeType": "YulExpressionStatement", + "src": "18252:41:12" + } + ] + }, + "nativeSrc": "18143:176:12", + "nodeType": "YulCase", + "src": "18143:176:12", + "value": { + "kind": "number", + "nativeSrc": "18148:2:12", + "nodeType": "YulLiteral", + "src": "18148:2:12", + "type": "", + "value": "65" + } + }, + { + "body": { + "nativeSrc": "18344:9:12", + "nodeType": "YulBlock", + "src": "18344:9:12", + "statements": [ + { + "nativeSrc": "18346:5:12", + "nodeType": "YulBreak", + "src": "18346:5:12" + } + ] + }, + "nativeSrc": "18336:17:12", + "nodeType": "YulCase", + "src": "18336:17:12", + "value": "default" + } + ], + "expression": { + "name": "n", + "nativeSrc": "17898:1:12", + "nodeType": "YulIdentifier", + "src": "17898:1:12" + }, + "nativeSrc": "17891:462:12", + "nodeType": "YulSwitch", + "src": "17891:462:12" + }, + { + "nativeSrc": "18370:20:12", + "nodeType": "YulVariableDeclaration", + "src": "18370:20:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18385:4:12", + "nodeType": "YulLiteral", + "src": "18385:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "18379:5:12", + "nodeType": "YulIdentifier", + "src": "18379:5:12" + }, + "nativeSrc": "18379:11:12", + "nodeType": "YulFunctionCall", + "src": "18379:11:12" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "18374:1:12", + "nodeType": "YulTypedName", + "src": "18374:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18414:4:12", + "nodeType": "YulLiteral", + "src": "18414:4:12", + "type": "", + "value": "0x00" + }, + { + "name": "hash", + "nativeSrc": "18420:4:12", + "nodeType": "YulIdentifier", + "src": "18420:4:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18407:6:12", + "nodeType": "YulIdentifier", + "src": "18407:6:12" + }, + "nativeSrc": "18407:18:12", + "nodeType": "YulFunctionCall", + "src": "18407:18:12" + }, + "nativeSrc": "18407:18:12", + "nodeType": "YulExpressionStatement", + "src": "18407:18:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18449:4:12", + "nodeType": "YulLiteral", + "src": "18449:4:12", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "18465:9:12", + "nodeType": "YulIdentifier", + "src": "18465:9:12" + }, + { + "kind": "number", + "nativeSrc": "18476:4:12", + "nodeType": "YulLiteral", + "src": "18476:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18461:3:12", + "nodeType": "YulIdentifier", + "src": "18461:3:12" + }, + "nativeSrc": "18461:20:12", + "nodeType": "YulFunctionCall", + "src": "18461:20:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "18455:5:12", + "nodeType": "YulIdentifier", + "src": "18455:5:12" + }, + "nativeSrc": "18455:27:12", + "nodeType": "YulFunctionCall", + "src": "18455:27:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18442:6:12", + "nodeType": "YulIdentifier", + "src": "18442:6:12" + }, + "nativeSrc": "18442:41:12", + "nodeType": "YulFunctionCall", + "src": "18442:41:12" + }, + "nativeSrc": "18442:41:12", + "nodeType": "YulExpressionStatement", + "src": "18442:41:12" + }, + { + "nativeSrc": "18508:68:12", + "nodeType": "YulVariableDeclaration", + "src": "18508:68:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "18542:3:12", + "nodeType": "YulIdentifier", + "src": "18542:3:12" + }, + "nativeSrc": "18542:5:12", + "nodeType": "YulFunctionCall", + "src": "18542:5:12" + }, + { + "kind": "number", + "nativeSrc": "18549:1:12", + "nodeType": "YulLiteral", + "src": "18549:1:12", + "type": "", + "value": "1" + }, + { + "kind": "number", + "nativeSrc": "18552:4:12", + "nodeType": "YulLiteral", + "src": "18552:4:12", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "18558:4:12", + "nodeType": "YulLiteral", + "src": "18558:4:12", + "type": "", + "value": "0x80" + }, + { + "kind": "number", + "nativeSrc": "18564:4:12", + "nodeType": "YulLiteral", + "src": "18564:4:12", + "type": "", + "value": "0x01" + }, + { + "kind": "number", + "nativeSrc": "18570:4:12", + "nodeType": "YulLiteral", + "src": "18570:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "18531:10:12", + "nodeType": "YulIdentifier", + "src": "18531:10:12" + }, + "nativeSrc": "18531:44:12", + "nodeType": "YulFunctionCall", + "src": "18531:44:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "18525:5:12", + "nodeType": "YulIdentifier", + "src": "18525:5:12" + }, + "nativeSrc": "18525:51:12", + "nodeType": "YulFunctionCall", + "src": "18525:51:12" + }, + "variables": [ + { + "name": "recovered", + "nativeSrc": "18512:9:12", + "nodeType": "YulTypedName", + "src": "18512:9:12", + "type": "" + } + ] + }, + { + "nativeSrc": "18593:64:12", + "nodeType": "YulAssignment", + "src": "18593:64:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "18607:14:12", + "nodeType": "YulIdentifier", + "src": "18607:14:12" + }, + "nativeSrc": "18607:16:12", + "nodeType": "YulFunctionCall", + "src": "18607:16:12" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18629:2:12", + "nodeType": "YulLiteral", + "src": "18629:2:12", + "type": "", + "value": "96" + }, + { + "arguments": [ + { + "name": "signer", + "nativeSrc": "18637:6:12", + "nodeType": "YulIdentifier", + "src": "18637:6:12" + }, + { + "name": "recovered", + "nativeSrc": "18645:9:12", + "nodeType": "YulIdentifier", + "src": "18645:9:12" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "18633:3:12", + "nodeType": "YulIdentifier", + "src": "18633:3:12" + }, + "nativeSrc": "18633:22:12", + "nodeType": "YulFunctionCall", + "src": "18633:22:12" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "18625:3:12", + "nodeType": "YulIdentifier", + "src": "18625:3:12" + }, + "nativeSrc": "18625:31:12", + "nodeType": "YulFunctionCall", + "src": "18625:31:12" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "18604:2:12", + "nodeType": "YulIdentifier", + "src": "18604:2:12" + }, + "nativeSrc": "18604:53:12", + "nodeType": "YulFunctionCall", + "src": "18604:53:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "18593:7:12", + "nodeType": "YulIdentifier", + "src": "18593:7:12" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18681:4:12", + "nodeType": "YulLiteral", + "src": "18681:4:12", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "18687:1:12", + "nodeType": "YulLiteral", + "src": "18687:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18674:6:12", + "nodeType": "YulIdentifier", + "src": "18674:6:12" + }, + "nativeSrc": "18674:15:12", + "nodeType": "YulFunctionCall", + "src": "18674:15:12" + }, + "nativeSrc": "18674:15:12", + "nodeType": "YulExpressionStatement", + "src": "18674:15:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18739:4:12", + "nodeType": "YulLiteral", + "src": "18739:4:12", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "18745:1:12", + "nodeType": "YulIdentifier", + "src": "18745:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18732:6:12", + "nodeType": "YulIdentifier", + "src": "18732:6:12" + }, + "nativeSrc": "18732:15:12", + "nodeType": "YulFunctionCall", + "src": "18732:15:12" + }, + "nativeSrc": "18732:15:12", + "nodeType": "YulExpressionStatement", + "src": "18732:15:12" + }, + { + "nativeSrc": "18800:5:12", + "nodeType": "YulBreak", + "src": "18800:5:12" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "noCode", + "nativeSrc": "17853:6:12", + "nodeType": "YulIdentifier", + "src": "17853:6:12" + }, + { + "name": "isValid", + "nativeSrc": "17861:7:12", + "nodeType": "YulIdentifier", + "src": "17861:7:12" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "17850:2:12", + "nodeType": "YulIdentifier", + "src": "17850:2:12" + }, + "nativeSrc": "17850:19:12", + "nodeType": "YulFunctionCall", + "src": "17850:19:12" + }, + "nativeSrc": "17843:976:12", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "17870:2:12", + "nodeType": "YulBlock", + "src": "17870:2:12", + "statements": [] + }, + "pre": { + "nativeSrc": "17847:2:12", + "nodeType": "YulBlock", + "src": "17847:2:12", + "statements": [] + }, + "src": "17843:976:12" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6313, + "isOffset": false, + "isSlot": false, + "src": "16684:4:12", + "valueSize": 1 + }, + { + "declaration": 6313, + "isOffset": false, + "isSlot": false, + "src": "16913:4:12", + "valueSize": 1 + }, + { + "declaration": 6313, + "isOffset": false, + "isSlot": false, + "src": "17115:4:12", + "valueSize": 1 + }, + { + "declaration": 6313, + "isOffset": false, + "isSlot": false, + "src": "18420:4:12", + "valueSize": 1 + }, + { + "declaration": 6318, + "isOffset": false, + "isSlot": false, + "src": "16581:7:12", + "valueSize": 1 + }, + { + "declaration": 6318, + "isOffset": false, + "isSlot": false, + "src": "16644:7:12", + "valueSize": 1 + }, + { + "declaration": 6318, + "isOffset": false, + "isSlot": false, + "src": "16873:7:12", + "valueSize": 1 + }, + { + "declaration": 6318, + "isOffset": false, + "isSlot": false, + "src": "16971:7:12", + "valueSize": 1 + }, + { + "declaration": 6318, + "isOffset": false, + "isSlot": false, + "src": "17703:7:12", + "valueSize": 1 + }, + { + "declaration": 6318, + "isOffset": false, + "isSlot": false, + "src": "17861:7:12", + "valueSize": 1 + }, + { + "declaration": 6318, + "isOffset": false, + "isSlot": false, + "src": "18593:7:12", + "valueSize": 1 + }, + { + "declaration": 6315, + "isOffset": false, + "isSlot": false, + "src": "16469:9:12", + "valueSize": 1 + }, + { + "declaration": 6315, + "isOffset": false, + "isSlot": false, + "src": "16545:9:12", + "valueSize": 1 + }, + { + "declaration": 6315, + "isOffset": false, + "isSlot": false, + "src": "16690:9:12", + "valueSize": 1 + }, + { + "declaration": 6315, + "isOffset": false, + "isSlot": false, + "src": "16816:9:12", + "valueSize": 1 + }, + { + "declaration": 6315, + "isOffset": false, + "isSlot": false, + "src": "17539:9:12", + "valueSize": 1 + }, + { + "declaration": 6315, + "isOffset": false, + "isSlot": false, + "src": "17966:9:12", + "valueSize": 1 + }, + { + "declaration": 6315, + "isOffset": false, + "isSlot": false, + "src": "18204:9:12", + "valueSize": 1 + }, + { + "declaration": 6315, + "isOffset": false, + "isSlot": false, + "src": "18275:9:12", + "valueSize": 1 + }, + { + "declaration": 6315, + "isOffset": false, + "isSlot": false, + "src": "18465:9:12", + "valueSize": 1 + }, + { + "declaration": 6311, + "isOffset": false, + "isSlot": false, + "src": "16433:6:12", + "valueSize": 1 + }, + { + "declaration": 6311, + "isOffset": false, + "isSlot": false, + "src": "16676:6:12", + "valueSize": 1 + }, + { + "declaration": 6311, + "isOffset": false, + "isSlot": false, + "src": "16905:6:12", + "valueSize": 1 + }, + { + "declaration": 6311, + "isOffset": false, + "isSlot": false, + "src": "17070:6:12", + "valueSize": 1 + }, + { + "declaration": 6311, + "isOffset": false, + "isSlot": false, + "src": "18637:6:12", + "valueSize": 1 + } + ], + "id": 6320, + "nodeType": "InlineAssembly", + "src": "15621:3208:12" + } + ] + }, + "documentation": { + "id": 6309, + "nodeType": "StructuredDocumentation", + "src": "14765:630:12", + "text": "@dev Returns whether `signature` is valid for `hash`.\n If the signature is postfixed with the ERC6492 magic number, it will attempt to\n deploy / prepare the `signer` smart account before doing a regular ERC1271 check.\n Note: This function is NOT reentrancy safe.\n The verifier must be deployed.\n Otherwise, the function will return false if `signer` is not yet deployed / prepared.\n See: https://gist.github.com/Vectorized/011d6becff6e0a73e42fe100f8d7ef04\n With a dedicated verifier, this function is safe to use in contracts\n that have been granted special permissions." + }, + "id": 6322, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isValidERC6492SignatureNowAllowSideEffects", + "nameLocation": "15409:42:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6316, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6311, + "mutability": "mutable", + "name": "signer", + "nameLocation": "15469:6:12", + "nodeType": "VariableDeclaration", + "scope": 6322, + "src": "15461:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6310, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15461:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6313, + "mutability": "mutable", + "name": "hash", + "nameLocation": "15493:4:12", + "nodeType": "VariableDeclaration", + "scope": 6322, + "src": "15485:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6312, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "15485:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6315, + "mutability": "mutable", + "name": "signature", + "nameLocation": "15520:9:12", + "nodeType": "VariableDeclaration", + "scope": 6322, + "src": "15507:22:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6314, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "15507:5:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "15451:84:12" + }, + "returnParameters": { + "id": 6319, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6318, + "mutability": "mutable", + "name": "isValid", + "nameLocation": "15559:7:12", + "nodeType": "VariableDeclaration", + "scope": 6322, + "src": "15554:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6317, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "15554:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "15553:14:12" + }, + "scope": 6365, + "src": "15400:3435:12", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6335, + "nodeType": "Block", + "src": "19555:3324:12", + "statements": [ + { + "AST": { + "nativeSrc": "19617:3256:12", + "nodeType": "YulBlock", + "src": "19617:3256:12", + "statements": [ + { + "body": { + "nativeSrc": "19701:673:12", + "nodeType": "YulBlock", + "src": "19701:673:12", + "statements": [ + { + "nativeSrc": "19719:21:12", + "nodeType": "YulVariableDeclaration", + "src": "19719:21:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "19735:4:12", + "nodeType": "YulLiteral", + "src": "19735:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "19729:5:12", + "nodeType": "YulIdentifier", + "src": "19729:5:12" + }, + "nativeSrc": "19729:11:12", + "nodeType": "YulFunctionCall", + "src": "19729:11:12" + }, + "variables": [ + { + "name": "m_", + "nativeSrc": "19723:2:12", + "nodeType": "YulTypedName", + "src": "19723:2:12", + "type": "" + } + ] + }, + { + "nativeSrc": "19757:30:12", + "nodeType": "YulVariableDeclaration", + "src": "19757:30:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "19771:3:12", + "nodeType": "YulLiteral", + "src": "19771:3:12", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "19776:10:12", + "nodeType": "YulLiteral", + "src": "19776:10:12", + "type": "", + "value": "0x1626ba7e" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "19767:3:12", + "nodeType": "YulIdentifier", + "src": "19767:3:12" + }, + "nativeSrc": "19767:20:12", + "nodeType": "YulFunctionCall", + "src": "19767:20:12" + }, + "variables": [ + { + "name": "f_", + "nativeSrc": "19761:2:12", + "nodeType": "YulTypedName", + "src": "19761:2:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "m_", + "nativeSrc": "19811:2:12", + "nodeType": "YulIdentifier", + "src": "19811:2:12" + }, + { + "name": "f_", + "nativeSrc": "19815:2:12", + "nodeType": "YulIdentifier", + "src": "19815:2:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "19804:6:12", + "nodeType": "YulIdentifier", + "src": "19804:6:12" + }, + "nativeSrc": "19804:14:12", + "nodeType": "YulFunctionCall", + "src": "19804:14:12" + }, + "nativeSrc": "19804:14:12", + "nodeType": "YulExpressionStatement", + "src": "19804:14:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m_", + "nativeSrc": "19905:2:12", + "nodeType": "YulIdentifier", + "src": "19905:2:12" + }, + { + "kind": "number", + "nativeSrc": "19909:4:12", + "nodeType": "YulLiteral", + "src": "19909:4:12", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19901:3:12", + "nodeType": "YulIdentifier", + "src": "19901:3:12" + }, + "nativeSrc": "19901:13:12", + "nodeType": "YulFunctionCall", + "src": "19901:13:12" + }, + { + "name": "hash_", + "nativeSrc": "19916:5:12", + "nodeType": "YulIdentifier", + "src": "19916:5:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "19894:6:12", + "nodeType": "YulIdentifier", + "src": "19894:6:12" + }, + "nativeSrc": "19894:28:12", + "nodeType": "YulFunctionCall", + "src": "19894:28:12" + }, + "nativeSrc": "19894:28:12", + "nodeType": "YulExpressionStatement", + "src": "19894:28:12" + }, + { + "nativeSrc": "19939:23:12", + "nodeType": "YulVariableDeclaration", + "src": "19939:23:12", + "value": { + "arguments": [ + { + "name": "m_", + "nativeSrc": "19953:2:12", + "nodeType": "YulIdentifier", + "src": "19953:2:12" + }, + { + "kind": "number", + "nativeSrc": "19957:4:12", + "nodeType": "YulLiteral", + "src": "19957:4:12", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19949:3:12", + "nodeType": "YulIdentifier", + "src": "19949:3:12" + }, + "nativeSrc": "19949:13:12", + "nodeType": "YulFunctionCall", + "src": "19949:13:12" + }, + "variables": [ + { + "name": "d_", + "nativeSrc": "19943:2:12", + "nodeType": "YulTypedName", + "src": "19943:2:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "d_", + "nativeSrc": "19986:2:12", + "nodeType": "YulIdentifier", + "src": "19986:2:12" + }, + { + "kind": "number", + "nativeSrc": "19990:4:12", + "nodeType": "YulLiteral", + "src": "19990:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "19979:6:12", + "nodeType": "YulIdentifier", + "src": "19979:6:12" + }, + "nativeSrc": "19979:16:12", + "nodeType": "YulFunctionCall", + "src": "19979:16:12" + }, + "nativeSrc": "19979:16:12", + "nodeType": "YulExpressionStatement", + "src": "19979:16:12" + }, + { + "nativeSrc": "20062:38:12", + "nodeType": "YulVariableDeclaration", + "src": "20062:38:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20076:4:12", + "nodeType": "YulLiteral", + "src": "20076:4:12", + "type": "", + "value": "0x20" + }, + { + "arguments": [ + { + "name": "signature_", + "nativeSrc": "20088:10:12", + "nodeType": "YulIdentifier", + "src": "20088:10:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "20082:5:12", + "nodeType": "YulIdentifier", + "src": "20082:5:12" + }, + "nativeSrc": "20082:17:12", + "nodeType": "YulFunctionCall", + "src": "20082:17:12" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20072:3:12", + "nodeType": "YulIdentifier", + "src": "20072:3:12" + }, + "nativeSrc": "20072:28:12", + "nodeType": "YulFunctionCall", + "src": "20072:28:12" + }, + "variables": [ + { + "name": "n_", + "nativeSrc": "20066:2:12", + "nodeType": "YulTypedName", + "src": "20066:2:12", + "type": "" + } + ] + }, + { + "nativeSrc": "20117:70:12", + "nodeType": "YulVariableDeclaration", + "src": "20117:70:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "20143:3:12", + "nodeType": "YulIdentifier", + "src": "20143:3:12" + }, + "nativeSrc": "20143:5:12", + "nodeType": "YulFunctionCall", + "src": "20143:5:12" + }, + { + "kind": "number", + "nativeSrc": "20150:1:12", + "nodeType": "YulLiteral", + "src": "20150:1:12", + "type": "", + "value": "4" + }, + { + "name": "signature_", + "nativeSrc": "20153:10:12", + "nodeType": "YulIdentifier", + "src": "20153:10:12" + }, + { + "name": "n_", + "nativeSrc": "20165:2:12", + "nodeType": "YulIdentifier", + "src": "20165:2:12" + }, + { + "arguments": [ + { + "name": "m_", + "nativeSrc": "20173:2:12", + "nodeType": "YulIdentifier", + "src": "20173:2:12" + }, + { + "kind": "number", + "nativeSrc": "20177:4:12", + "nodeType": "YulLiteral", + "src": "20177:4:12", + "type": "", + "value": "0x44" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20169:3:12", + "nodeType": "YulIdentifier", + "src": "20169:3:12" + }, + "nativeSrc": "20169:13:12", + "nodeType": "YulFunctionCall", + "src": "20169:13:12" + }, + { + "name": "n_", + "nativeSrc": "20184:2:12", + "nodeType": "YulIdentifier", + "src": "20184:2:12" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "20132:10:12", + "nodeType": "YulIdentifier", + "src": "20132:10:12" + }, + "nativeSrc": "20132:55:12", + "nodeType": "YulFunctionCall", + "src": "20132:55:12" + }, + "variables": [ + { + "name": "copied_", + "nativeSrc": "20121:7:12", + "nodeType": "YulTypedName", + "src": "20121:7:12", + "type": "" + } + ] + }, + { + "nativeSrc": "20204:81:12", + "nodeType": "YulAssignment", + "src": "20204:81:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "20227:3:12", + "nodeType": "YulIdentifier", + "src": "20227:3:12" + }, + "nativeSrc": "20227:5:12", + "nodeType": "YulFunctionCall", + "src": "20227:5:12" + }, + { + "name": "signer_", + "nativeSrc": "20234:7:12", + "nodeType": "YulIdentifier", + "src": "20234:7:12" + }, + { + "name": "m_", + "nativeSrc": "20243:2:12", + "nodeType": "YulIdentifier", + "src": "20243:2:12" + }, + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "20251:14:12", + "nodeType": "YulIdentifier", + "src": "20251:14:12" + }, + "nativeSrc": "20251:16:12", + "nodeType": "YulFunctionCall", + "src": "20251:16:12" + }, + { + "kind": "number", + "nativeSrc": "20269:4:12", + "nodeType": "YulLiteral", + "src": "20269:4:12", + "type": "", + "value": "0x44" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20247:3:12", + "nodeType": "YulIdentifier", + "src": "20247:3:12" + }, + "nativeSrc": "20247:27:12", + "nodeType": "YulFunctionCall", + "src": "20247:27:12" + }, + { + "name": "d_", + "nativeSrc": "20276:2:12", + "nodeType": "YulIdentifier", + "src": "20276:2:12" + }, + { + "kind": "number", + "nativeSrc": "20280:4:12", + "nodeType": "YulLiteral", + "src": "20280:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "20216:10:12", + "nodeType": "YulIdentifier", + "src": "20216:10:12" + }, + "nativeSrc": "20216:69:12", + "nodeType": "YulFunctionCall", + "src": "20216:69:12" + }, + "variableNames": [ + { + "name": "_isValid", + "nativeSrc": "20204:8:12", + "nodeType": "YulIdentifier", + "src": "20204:8:12" + } + ] + }, + { + "nativeSrc": "20302:58:12", + "nodeType": "YulAssignment", + "src": "20302:58:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "d_", + "nativeSrc": "20327:2:12", + "nodeType": "YulIdentifier", + "src": "20327:2:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "20321:5:12", + "nodeType": "YulIdentifier", + "src": "20321:5:12" + }, + "nativeSrc": "20321:9:12", + "nodeType": "YulFunctionCall", + "src": "20321:9:12" + }, + { + "name": "f_", + "nativeSrc": "20332:2:12", + "nodeType": "YulIdentifier", + "src": "20332:2:12" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "20318:2:12", + "nodeType": "YulIdentifier", + "src": "20318:2:12" + }, + "nativeSrc": "20318:17:12", + "nodeType": "YulFunctionCall", + "src": "20318:17:12" + }, + { + "arguments": [ + { + "name": "_isValid", + "nativeSrc": "20341:8:12", + "nodeType": "YulIdentifier", + "src": "20341:8:12" + }, + { + "name": "copied_", + "nativeSrc": "20351:7:12", + "nodeType": "YulIdentifier", + "src": "20351:7:12" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "20337:3:12", + "nodeType": "YulIdentifier", + "src": "20337:3:12" + }, + "nativeSrc": "20337:22:12", + "nodeType": "YulFunctionCall", + "src": "20337:22:12" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "20314:3:12", + "nodeType": "YulIdentifier", + "src": "20314:3:12" + }, + "nativeSrc": "20314:46:12", + "nodeType": "YulFunctionCall", + "src": "20314:46:12" + }, + "variableNames": [ + { + "name": "_isValid", + "nativeSrc": "20302:8:12", + "nodeType": "YulIdentifier", + "src": "20302:8:12" + } + ] + } + ] + }, + "name": "callIsValidSignature", + "nativeSrc": "19631:743:12", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "signer_", + "nativeSrc": "19661:7:12", + "nodeType": "YulTypedName", + "src": "19661:7:12", + "type": "" + }, + { + "name": "hash_", + "nativeSrc": "19670:5:12", + "nodeType": "YulTypedName", + "src": "19670:5:12", + "type": "" + }, + { + "name": "signature_", + "nativeSrc": "19677:10:12", + "nodeType": "YulTypedName", + "src": "19677:10:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "_isValid", + "nativeSrc": "19692:8:12", + "nodeType": "YulTypedName", + "src": "19692:8:12", + "type": "" + } + ], + "src": "19631:743:12" + }, + { + "nativeSrc": "20387:41:12", + "nodeType": "YulVariableDeclaration", + "src": "20387:41:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "signer", + "nativeSrc": "20420:6:12", + "nodeType": "YulIdentifier", + "src": "20420:6:12" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "20408:11:12", + "nodeType": "YulIdentifier", + "src": "20408:11:12" + }, + "nativeSrc": "20408:19:12", + "nodeType": "YulFunctionCall", + "src": "20408:19:12" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "20401:6:12", + "nodeType": "YulIdentifier", + "src": "20401:6:12" + }, + "nativeSrc": "20401:27:12", + "nodeType": "YulFunctionCall", + "src": "20401:27:12" + }, + "variables": [ + { + "name": "noCode", + "nativeSrc": "20391:6:12", + "nodeType": "YulTypedName", + "src": "20391:6:12", + "type": "" + } + ] + }, + { + "nativeSrc": "20441:25:12", + "nodeType": "YulVariableDeclaration", + "src": "20441:25:12", + "value": { + "arguments": [ + { + "name": "signature", + "nativeSrc": "20456:9:12", + "nodeType": "YulIdentifier", + "src": "20456:9:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "20450:5:12", + "nodeType": "YulIdentifier", + "src": "20450:5:12" + }, + "nativeSrc": "20450:16:12", + "nodeType": "YulFunctionCall", + "src": "20450:16:12" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "20445:1:12", + "nodeType": "YulTypedName", + "src": "20445:1:12", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "20491:1319:12", + "nodeType": "YulBlock", + "src": "20491:1319:12", + "statements": [ + { + "body": { + "nativeSrc": "20589:144:12", + "nodeType": "YulBlock", + "src": "20589:144:12", + "statements": [ + { + "body": { + "nativeSrc": "20629:60:12", + "nodeType": "YulBlock", + "src": "20629:60:12", + "statements": [ + { + "nativeSrc": "20631:56:12", + "nodeType": "YulAssignment", + "src": "20631:56:12", + "value": { + "arguments": [ + { + "name": "signer", + "nativeSrc": "20663:6:12", + "nodeType": "YulIdentifier", + "src": "20663:6:12" + }, + { + "name": "hash", + "nativeSrc": "20671:4:12", + "nodeType": "YulIdentifier", + "src": "20671:4:12" + }, + { + "name": "signature", + "nativeSrc": "20677:9:12", + "nodeType": "YulIdentifier", + "src": "20677:9:12" + } + ], + "functionName": { + "name": "callIsValidSignature", + "nativeSrc": "20642:20:12", + "nodeType": "YulIdentifier", + "src": "20642:20:12" + }, + "nativeSrc": "20642:45:12", + "nodeType": "YulFunctionCall", + "src": "20642:45:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "20631:7:12", + "nodeType": "YulIdentifier", + "src": "20631:7:12" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "noCode", + "nativeSrc": "20621:6:12", + "nodeType": "YulIdentifier", + "src": "20621:6:12" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "20614:6:12", + "nodeType": "YulIdentifier", + "src": "20614:6:12" + }, + "nativeSrc": "20614:14:12", + "nodeType": "YulFunctionCall", + "src": "20614:14:12" + }, + "nativeSrc": "20611:78:12", + "nodeType": "YulIf", + "src": "20611:78:12" + }, + { + "nativeSrc": "20710:5:12", + "nodeType": "YulBreak", + "src": "20710:5:12" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "20532:9:12", + "nodeType": "YulIdentifier", + "src": "20532:9:12" + }, + { + "name": "n", + "nativeSrc": "20543:1:12", + "nodeType": "YulIdentifier", + "src": "20543:1:12" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20528:3:12", + "nodeType": "YulIdentifier", + "src": "20528:3:12" + }, + "nativeSrc": "20528:17:12", + "nodeType": "YulFunctionCall", + "src": "20528:17:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "20522:5:12", + "nodeType": "YulIdentifier", + "src": "20522:5:12" + }, + "nativeSrc": "20522:24:12", + "nodeType": "YulFunctionCall", + "src": "20522:24:12" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20552:6:12", + "nodeType": "YulLiteral", + "src": "20552:6:12", + "type": "", + "value": "0x6492" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "isValid", + "nativeSrc": "20568:7:12", + "nodeType": "YulIdentifier", + "src": "20568:7:12" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "20564:3:12", + "nodeType": "YulIdentifier", + "src": "20564:3:12" + }, + "nativeSrc": "20564:12:12", + "nodeType": "YulFunctionCall", + "src": "20564:12:12" + }, + { + "kind": "number", + "nativeSrc": "20578:6:12", + "nodeType": "YulLiteral", + "src": "20578:6:12", + "type": "", + "value": "0xffff" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "20560:3:12", + "nodeType": "YulIdentifier", + "src": "20560:3:12" + }, + "nativeSrc": "20560:25:12", + "nodeType": "YulFunctionCall", + "src": "20560:25:12" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "20548:3:12", + "nodeType": "YulIdentifier", + "src": "20548:3:12" + }, + "nativeSrc": "20548:38:12", + "nodeType": "YulFunctionCall", + "src": "20548:38:12" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "20519:2:12", + "nodeType": "YulIdentifier", + "src": "20519:2:12" + }, + "nativeSrc": "20519:68:12", + "nodeType": "YulFunctionCall", + "src": "20519:68:12" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "20512:6:12", + "nodeType": "YulIdentifier", + "src": "20512:6:12" + }, + "nativeSrc": "20512:76:12", + "nodeType": "YulFunctionCall", + "src": "20512:76:12" + }, + "nativeSrc": "20509:224:12", + "nodeType": "YulIf", + "src": "20509:224:12" + }, + { + "body": { + "nativeSrc": "20768:225:12", + "nodeType": "YulBlock", + "src": "20768:225:12", + "statements": [ + { + "nativeSrc": "20790:29:12", + "nodeType": "YulVariableDeclaration", + "src": "20790:29:12", + "value": { + "arguments": [ + { + "name": "signature", + "nativeSrc": "20803:9:12", + "nodeType": "YulIdentifier", + "src": "20803:9:12" + }, + { + "kind": "number", + "nativeSrc": "20814:4:12", + "nodeType": "YulLiteral", + "src": "20814:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20799:3:12", + "nodeType": "YulIdentifier", + "src": "20799:3:12" + }, + "nativeSrc": "20799:20:12", + "nodeType": "YulFunctionCall", + "src": "20799:20:12" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "20794:1:12", + "nodeType": "YulTypedName", + "src": "20794:1:12", + "type": "" + } + ] + }, + { + "nativeSrc": "20860:74:12", + "nodeType": "YulAssignment", + "src": "20860:74:12", + "value": { + "arguments": [ + { + "name": "signer", + "nativeSrc": "20892:6:12", + "nodeType": "YulIdentifier", + "src": "20892:6:12" + }, + { + "name": "hash", + "nativeSrc": "20900:4:12", + "nodeType": "YulIdentifier", + "src": "20900:4:12" + }, + { + "arguments": [ + { + "name": "o", + "nativeSrc": "20910:1:12", + "nodeType": "YulIdentifier", + "src": "20910:1:12" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "20923:1:12", + "nodeType": "YulIdentifier", + "src": "20923:1:12" + }, + { + "kind": "number", + "nativeSrc": "20926:4:12", + "nodeType": "YulLiteral", + "src": "20926:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20919:3:12", + "nodeType": "YulIdentifier", + "src": "20919:3:12" + }, + "nativeSrc": "20919:12:12", + "nodeType": "YulFunctionCall", + "src": "20919:12:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "20913:5:12", + "nodeType": "YulIdentifier", + "src": "20913:5:12" + }, + "nativeSrc": "20913:19:12", + "nodeType": "YulFunctionCall", + "src": "20913:19:12" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20906:3:12", + "nodeType": "YulIdentifier", + "src": "20906:3:12" + }, + "nativeSrc": "20906:27:12", + "nodeType": "YulFunctionCall", + "src": "20906:27:12" + } + ], + "functionName": { + "name": "callIsValidSignature", + "nativeSrc": "20871:20:12", + "nodeType": "YulIdentifier", + "src": "20871:20:12" + }, + "nativeSrc": "20871:63:12", + "nodeType": "YulFunctionCall", + "src": "20871:63:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "20860:7:12", + "nodeType": "YulIdentifier", + "src": "20860:7:12" + } + ] + }, + { + "body": { + "nativeSrc": "20966:9:12", + "nodeType": "YulBlock", + "src": "20966:9:12", + "statements": [ + { + "nativeSrc": "20968:5:12", + "nodeType": "YulBreak", + "src": "20968:5:12" + } + ] + }, + "condition": { + "name": "isValid", + "nativeSrc": "20958:7:12", + "nodeType": "YulIdentifier", + "src": "20958:7:12" + }, + "nativeSrc": "20955:20:12", + "nodeType": "YulIf", + "src": "20955:20:12" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "noCode", + "nativeSrc": "20760:6:12", + "nodeType": "YulIdentifier", + "src": "20760:6:12" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "20753:6:12", + "nodeType": "YulIdentifier", + "src": "20753:6:12" + }, + "nativeSrc": "20753:14:12", + "nodeType": "YulFunctionCall", + "src": "20753:14:12" + }, + "nativeSrc": "20750:243:12", + "nodeType": "YulIf", + "src": "20750:243:12" + }, + { + "nativeSrc": "21010:20:12", + "nodeType": "YulVariableDeclaration", + "src": "21010:20:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21025:4:12", + "nodeType": "YulLiteral", + "src": "21025:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "21019:5:12", + "nodeType": "YulIdentifier", + "src": "21019:5:12" + }, + "nativeSrc": "21019:11:12", + "nodeType": "YulFunctionCall", + "src": "21019:11:12" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "21014:1:12", + "nodeType": "YulTypedName", + "src": "21014:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "21054:1:12", + "nodeType": "YulIdentifier", + "src": "21054:1:12" + }, + { + "name": "signer", + "nativeSrc": "21057:6:12", + "nodeType": "YulIdentifier", + "src": "21057:6:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "21047:6:12", + "nodeType": "YulIdentifier", + "src": "21047:6:12" + }, + "nativeSrc": "21047:17:12", + "nodeType": "YulFunctionCall", + "src": "21047:17:12" + }, + "nativeSrc": "21047:17:12", + "nodeType": "YulExpressionStatement", + "src": "21047:17:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "21092:1:12", + "nodeType": "YulIdentifier", + "src": "21092:1:12" + }, + { + "kind": "number", + "nativeSrc": "21095:4:12", + "nodeType": "YulLiteral", + "src": "21095:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21088:3:12", + "nodeType": "YulIdentifier", + "src": "21088:3:12" + }, + "nativeSrc": "21088:12:12", + "nodeType": "YulFunctionCall", + "src": "21088:12:12" + }, + { + "name": "hash", + "nativeSrc": "21102:4:12", + "nodeType": "YulIdentifier", + "src": "21102:4:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "21081:6:12", + "nodeType": "YulIdentifier", + "src": "21081:6:12" + }, + "nativeSrc": "21081:26:12", + "nodeType": "YulFunctionCall", + "src": "21081:26:12" + }, + "nativeSrc": "21081:26:12", + "nodeType": "YulExpressionStatement", + "src": "21081:26:12" + }, + { + "nativeSrc": "21124:565:12", + "nodeType": "YulVariableDeclaration", + "src": "21124:565:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "21217:3:12", + "nodeType": "YulIdentifier", + "src": "21217:3:12" + }, + "nativeSrc": "21217:5:12", + "nodeType": "YulFunctionCall", + "src": "21217:5:12" + }, + { + "kind": "number", + "nativeSrc": "21266:42:12", + "nodeType": "YulLiteral", + "src": "21266:42:12", + "type": "", + "value": "0x00007bd799e4A591FeA53f8A8a3E9f931626Ba7e" + }, + { + "kind": "number", + "nativeSrc": "21357:1:12", + "nodeType": "YulLiteral", + "src": "21357:1:12", + "type": "", + "value": "0" + }, + { + "name": "m", + "nativeSrc": "21402:1:12", + "nodeType": "YulIdentifier", + "src": "21402:1:12" + }, + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "21453:14:12", + "nodeType": "YulIdentifier", + "src": "21453:14:12" + }, + "nativeSrc": "21453:16:12", + "nodeType": "YulFunctionCall", + "src": "21453:16:12" + }, + { + "kind": "number", + "nativeSrc": "21471:4:12", + "nodeType": "YulLiteral", + "src": "21471:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21449:3:12", + "nodeType": "YulIdentifier", + "src": "21449:3:12" + }, + "nativeSrc": "21449:27:12", + "nodeType": "YulFunctionCall", + "src": "21449:27:12" + }, + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "21546:3:12", + "nodeType": "YulIdentifier", + "src": "21546:3:12" + }, + "nativeSrc": "21546:5:12", + "nodeType": "YulFunctionCall", + "src": "21546:5:12" + }, + { + "kind": "number", + "nativeSrc": "21553:1:12", + "nodeType": "YulLiteral", + "src": "21553:1:12", + "type": "", + "value": "4" + }, + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "21560:9:12", + "nodeType": "YulIdentifier", + "src": "21560:9:12" + }, + { + "kind": "number", + "nativeSrc": "21571:4:12", + "nodeType": "YulLiteral", + "src": "21571:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21556:3:12", + "nodeType": "YulIdentifier", + "src": "21556:3:12" + }, + "nativeSrc": "21556:20:12", + "nodeType": "YulFunctionCall", + "src": "21556:20:12" + }, + { + "name": "n", + "nativeSrc": "21578:1:12", + "nodeType": "YulIdentifier", + "src": "21578:1:12" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "21585:1:12", + "nodeType": "YulIdentifier", + "src": "21585:1:12" + }, + { + "kind": "number", + "nativeSrc": "21588:4:12", + "nodeType": "YulLiteral", + "src": "21588:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21581:3:12", + "nodeType": "YulIdentifier", + "src": "21581:3:12" + }, + "nativeSrc": "21581:12:12", + "nodeType": "YulFunctionCall", + "src": "21581:12:12" + }, + { + "name": "n", + "nativeSrc": "21595:1:12", + "nodeType": "YulIdentifier", + "src": "21595:1:12" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "21535:10:12", + "nodeType": "YulIdentifier", + "src": "21535:10:12" + }, + "nativeSrc": "21535:62:12", + "nodeType": "YulFunctionCall", + "src": "21535:62:12" + }, + { + "kind": "number", + "nativeSrc": "21629:4:12", + "nodeType": "YulLiteral", + "src": "21629:4:12", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "call", + "nativeSrc": "21187:4:12", + "nodeType": "YulIdentifier", + "src": "21187:4:12" + }, + "nativeSrc": "21187:502:12", + "nodeType": "YulFunctionCall", + "src": "21187:502:12" + }, + "variables": [ + { + "name": "willBeZeroIfRevertingVerifierExists", + "nativeSrc": "21128:35:12", + "nodeType": "YulTypedName", + "src": "21128:35:12", + "type": "" + } + ] + }, + { + "nativeSrc": "21706:68:12", + "nodeType": "YulAssignment", + "src": "21706:68:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "21720:14:12", + "nodeType": "YulIdentifier", + "src": "21720:14:12" + }, + "nativeSrc": "21720:16:12", + "nodeType": "YulFunctionCall", + "src": "21720:16:12" + }, + { + "name": "willBeZeroIfRevertingVerifierExists", + "nativeSrc": "21738:35:12", + "nodeType": "YulIdentifier", + "src": "21738:35:12" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "21717:2:12", + "nodeType": "YulIdentifier", + "src": "21717:2:12" + }, + "nativeSrc": "21717:57:12", + "nodeType": "YulFunctionCall", + "src": "21717:57:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "21706:7:12", + "nodeType": "YulIdentifier", + "src": "21706:7:12" + } + ] + }, + { + "nativeSrc": "21791:5:12", + "nodeType": "YulBreak", + "src": "21791:5:12" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "20486:1:12", + "nodeType": "YulLiteral", + "src": "20486:1:12", + "type": "", + "value": "1" + }, + "nativeSrc": "20479:1331:12", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "20488:2:12", + "nodeType": "YulBlock", + "src": "20488:2:12", + "statements": [] + }, + "pre": { + "nativeSrc": "20483:2:12", + "nodeType": "YulBlock", + "src": "20483:2:12", + "statements": [] + }, + "src": "20479:1331:12" + }, + { + "body": { + "nativeSrc": "21917:946:12", + "nodeType": "YulBlock", + "src": "21917:946:12", + "statements": [ + { + "cases": [ + { + "body": { + "nativeSrc": "21968:202:12", + "nodeType": "YulBlock", + "src": "21968:202:12", + "statements": [ + { + "nativeSrc": "21990:37:12", + "nodeType": "YulVariableDeclaration", + "src": "21990:37:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "22010:9:12", + "nodeType": "YulIdentifier", + "src": "22010:9:12" + }, + { + "kind": "number", + "nativeSrc": "22021:4:12", + "nodeType": "YulLiteral", + "src": "22021:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22006:3:12", + "nodeType": "YulIdentifier", + "src": "22006:3:12" + }, + "nativeSrc": "22006:20:12", + "nodeType": "YulFunctionCall", + "src": "22006:20:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "22000:5:12", + "nodeType": "YulIdentifier", + "src": "22000:5:12" + }, + "nativeSrc": "22000:27:12", + "nodeType": "YulFunctionCall", + "src": "22000:27:12" + }, + "variables": [ + { + "name": "vs", + "nativeSrc": "21994:2:12", + "nodeType": "YulTypedName", + "src": "21994:2:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22055:4:12", + "nodeType": "YulLiteral", + "src": "22055:4:12", + "type": "", + "value": "0x20" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22069:3:12", + "nodeType": "YulLiteral", + "src": "22069:3:12", + "type": "", + "value": "255" + }, + { + "name": "vs", + "nativeSrc": "22074:2:12", + "nodeType": "YulIdentifier", + "src": "22074:2:12" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "22065:3:12", + "nodeType": "YulIdentifier", + "src": "22065:3:12" + }, + "nativeSrc": "22065:12:12", + "nodeType": "YulFunctionCall", + "src": "22065:12:12" + }, + { + "kind": "number", + "nativeSrc": "22079:2:12", + "nodeType": "YulLiteral", + "src": "22079:2:12", + "type": "", + "value": "27" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22061:3:12", + "nodeType": "YulIdentifier", + "src": "22061:3:12" + }, + "nativeSrc": "22061:21:12", + "nodeType": "YulFunctionCall", + "src": "22061:21:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22048:6:12", + "nodeType": "YulIdentifier", + "src": "22048:6:12" + }, + "nativeSrc": "22048:35:12", + "nodeType": "YulFunctionCall", + "src": "22048:35:12" + }, + "nativeSrc": "22048:35:12", + "nodeType": "YulExpressionStatement", + "src": "22048:35:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22119:4:12", + "nodeType": "YulLiteral", + "src": "22119:4:12", + "type": "", + "value": "0x60" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22129:1:12", + "nodeType": "YulLiteral", + "src": "22129:1:12", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22136:1:12", + "nodeType": "YulLiteral", + "src": "22136:1:12", + "type": "", + "value": "1" + }, + { + "name": "vs", + "nativeSrc": "22139:2:12", + "nodeType": "YulIdentifier", + "src": "22139:2:12" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "22132:3:12", + "nodeType": "YulIdentifier", + "src": "22132:3:12" + }, + "nativeSrc": "22132:10:12", + "nodeType": "YulFunctionCall", + "src": "22132:10:12" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "22125:3:12", + "nodeType": "YulIdentifier", + "src": "22125:3:12" + }, + "nativeSrc": "22125:18:12", + "nodeType": "YulFunctionCall", + "src": "22125:18:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22112:6:12", + "nodeType": "YulIdentifier", + "src": "22112:6:12" + }, + "nativeSrc": "22112:32:12", + "nodeType": "YulFunctionCall", + "src": "22112:32:12" + }, + "nativeSrc": "22112:32:12", + "nodeType": "YulExpressionStatement", + "src": "22112:32:12" + } + ] + }, + "nativeSrc": "21960:210:12", + "nodeType": "YulCase", + "src": "21960:210:12", + "value": { + "kind": "number", + "nativeSrc": "21965:2:12", + "nodeType": "YulLiteral", + "src": "21965:2:12", + "type": "", + "value": "64" + } + }, + { + "body": { + "nativeSrc": "22195:168:12", + "nodeType": "YulBlock", + "src": "22195:168:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22224:4:12", + "nodeType": "YulLiteral", + "src": "22224:4:12", + "type": "", + "value": "0x20" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22235:1:12", + "nodeType": "YulLiteral", + "src": "22235:1:12", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "22248:9:12", + "nodeType": "YulIdentifier", + "src": "22248:9:12" + }, + { + "kind": "number", + "nativeSrc": "22259:4:12", + "nodeType": "YulLiteral", + "src": "22259:4:12", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22244:3:12", + "nodeType": "YulIdentifier", + "src": "22244:3:12" + }, + "nativeSrc": "22244:20:12", + "nodeType": "YulFunctionCall", + "src": "22244:20:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "22238:5:12", + "nodeType": "YulIdentifier", + "src": "22238:5:12" + }, + "nativeSrc": "22238:27:12", + "nodeType": "YulFunctionCall", + "src": "22238:27:12" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "22230:4:12", + "nodeType": "YulIdentifier", + "src": "22230:4:12" + }, + "nativeSrc": "22230:36:12", + "nodeType": "YulFunctionCall", + "src": "22230:36:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22217:6:12", + "nodeType": "YulIdentifier", + "src": "22217:6:12" + }, + "nativeSrc": "22217:50:12", + "nodeType": "YulFunctionCall", + "src": "22217:50:12" + }, + "nativeSrc": "22217:50:12", + "nodeType": "YulExpressionStatement", + "src": "22217:50:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22303:4:12", + "nodeType": "YulLiteral", + "src": "22303:4:12", + "type": "", + "value": "0x60" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "22319:9:12", + "nodeType": "YulIdentifier", + "src": "22319:9:12" + }, + { + "kind": "number", + "nativeSrc": "22330:4:12", + "nodeType": "YulLiteral", + "src": "22330:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22315:3:12", + "nodeType": "YulIdentifier", + "src": "22315:3:12" + }, + "nativeSrc": "22315:20:12", + "nodeType": "YulFunctionCall", + "src": "22315:20:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "22309:5:12", + "nodeType": "YulIdentifier", + "src": "22309:5:12" + }, + "nativeSrc": "22309:27:12", + "nodeType": "YulFunctionCall", + "src": "22309:27:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22296:6:12", + "nodeType": "YulIdentifier", + "src": "22296:6:12" + }, + "nativeSrc": "22296:41:12", + "nodeType": "YulFunctionCall", + "src": "22296:41:12" + }, + "nativeSrc": "22296:41:12", + "nodeType": "YulExpressionStatement", + "src": "22296:41:12" + } + ] + }, + "nativeSrc": "22187:176:12", + "nodeType": "YulCase", + "src": "22187:176:12", + "value": { + "kind": "number", + "nativeSrc": "22192:2:12", + "nodeType": "YulLiteral", + "src": "22192:2:12", + "type": "", + "value": "65" + } + }, + { + "body": { + "nativeSrc": "22388:9:12", + "nodeType": "YulBlock", + "src": "22388:9:12", + "statements": [ + { + "nativeSrc": "22390:5:12", + "nodeType": "YulBreak", + "src": "22390:5:12" + } + ] + }, + "nativeSrc": "22380:17:12", + "nodeType": "YulCase", + "src": "22380:17:12", + "value": "default" + } + ], + "expression": { + "name": "n", + "nativeSrc": "21942:1:12", + "nodeType": "YulIdentifier", + "src": "21942:1:12" + }, + "nativeSrc": "21935:462:12", + "nodeType": "YulSwitch", + "src": "21935:462:12" + }, + { + "nativeSrc": "22414:20:12", + "nodeType": "YulVariableDeclaration", + "src": "22414:20:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22429:4:12", + "nodeType": "YulLiteral", + "src": "22429:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "22423:5:12", + "nodeType": "YulIdentifier", + "src": "22423:5:12" + }, + "nativeSrc": "22423:11:12", + "nodeType": "YulFunctionCall", + "src": "22423:11:12" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "22418:1:12", + "nodeType": "YulTypedName", + "src": "22418:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22458:4:12", + "nodeType": "YulLiteral", + "src": "22458:4:12", + "type": "", + "value": "0x00" + }, + { + "name": "hash", + "nativeSrc": "22464:4:12", + "nodeType": "YulIdentifier", + "src": "22464:4:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22451:6:12", + "nodeType": "YulIdentifier", + "src": "22451:6:12" + }, + "nativeSrc": "22451:18:12", + "nodeType": "YulFunctionCall", + "src": "22451:18:12" + }, + "nativeSrc": "22451:18:12", + "nodeType": "YulExpressionStatement", + "src": "22451:18:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22493:4:12", + "nodeType": "YulLiteral", + "src": "22493:4:12", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "22509:9:12", + "nodeType": "YulIdentifier", + "src": "22509:9:12" + }, + { + "kind": "number", + "nativeSrc": "22520:4:12", + "nodeType": "YulLiteral", + "src": "22520:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22505:3:12", + "nodeType": "YulIdentifier", + "src": "22505:3:12" + }, + "nativeSrc": "22505:20:12", + "nodeType": "YulFunctionCall", + "src": "22505:20:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "22499:5:12", + "nodeType": "YulIdentifier", + "src": "22499:5:12" + }, + "nativeSrc": "22499:27:12", + "nodeType": "YulFunctionCall", + "src": "22499:27:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22486:6:12", + "nodeType": "YulIdentifier", + "src": "22486:6:12" + }, + "nativeSrc": "22486:41:12", + "nodeType": "YulFunctionCall", + "src": "22486:41:12" + }, + "nativeSrc": "22486:41:12", + "nodeType": "YulExpressionStatement", + "src": "22486:41:12" + }, + { + "nativeSrc": "22552:68:12", + "nodeType": "YulVariableDeclaration", + "src": "22552:68:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "22586:3:12", + "nodeType": "YulIdentifier", + "src": "22586:3:12" + }, + "nativeSrc": "22586:5:12", + "nodeType": "YulFunctionCall", + "src": "22586:5:12" + }, + { + "kind": "number", + "nativeSrc": "22593:1:12", + "nodeType": "YulLiteral", + "src": "22593:1:12", + "type": "", + "value": "1" + }, + { + "kind": "number", + "nativeSrc": "22596:4:12", + "nodeType": "YulLiteral", + "src": "22596:4:12", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "22602:4:12", + "nodeType": "YulLiteral", + "src": "22602:4:12", + "type": "", + "value": "0x80" + }, + { + "kind": "number", + "nativeSrc": "22608:4:12", + "nodeType": "YulLiteral", + "src": "22608:4:12", + "type": "", + "value": "0x01" + }, + { + "kind": "number", + "nativeSrc": "22614:4:12", + "nodeType": "YulLiteral", + "src": "22614:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "22575:10:12", + "nodeType": "YulIdentifier", + "src": "22575:10:12" + }, + "nativeSrc": "22575:44:12", + "nodeType": "YulFunctionCall", + "src": "22575:44:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "22569:5:12", + "nodeType": "YulIdentifier", + "src": "22569:5:12" + }, + "nativeSrc": "22569:51:12", + "nodeType": "YulFunctionCall", + "src": "22569:51:12" + }, + "variables": [ + { + "name": "recovered", + "nativeSrc": "22556:9:12", + "nodeType": "YulTypedName", + "src": "22556:9:12", + "type": "" + } + ] + }, + { + "nativeSrc": "22637:64:12", + "nodeType": "YulAssignment", + "src": "22637:64:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "22651:14:12", + "nodeType": "YulIdentifier", + "src": "22651:14:12" + }, + "nativeSrc": "22651:16:12", + "nodeType": "YulFunctionCall", + "src": "22651:16:12" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22673:2:12", + "nodeType": "YulLiteral", + "src": "22673:2:12", + "type": "", + "value": "96" + }, + { + "arguments": [ + { + "name": "signer", + "nativeSrc": "22681:6:12", + "nodeType": "YulIdentifier", + "src": "22681:6:12" + }, + { + "name": "recovered", + "nativeSrc": "22689:9:12", + "nodeType": "YulIdentifier", + "src": "22689:9:12" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "22677:3:12", + "nodeType": "YulIdentifier", + "src": "22677:3:12" + }, + "nativeSrc": "22677:22:12", + "nodeType": "YulFunctionCall", + "src": "22677:22:12" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "22669:3:12", + "nodeType": "YulIdentifier", + "src": "22669:3:12" + }, + "nativeSrc": "22669:31:12", + "nodeType": "YulFunctionCall", + "src": "22669:31:12" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "22648:2:12", + "nodeType": "YulIdentifier", + "src": "22648:2:12" + }, + "nativeSrc": "22648:53:12", + "nodeType": "YulFunctionCall", + "src": "22648:53:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "22637:7:12", + "nodeType": "YulIdentifier", + "src": "22637:7:12" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22725:4:12", + "nodeType": "YulLiteral", + "src": "22725:4:12", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "22731:1:12", + "nodeType": "YulLiteral", + "src": "22731:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22718:6:12", + "nodeType": "YulIdentifier", + "src": "22718:6:12" + }, + "nativeSrc": "22718:15:12", + "nodeType": "YulFunctionCall", + "src": "22718:15:12" + }, + "nativeSrc": "22718:15:12", + "nodeType": "YulExpressionStatement", + "src": "22718:15:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22783:4:12", + "nodeType": "YulLiteral", + "src": "22783:4:12", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "22789:1:12", + "nodeType": "YulIdentifier", + "src": "22789:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22776:6:12", + "nodeType": "YulIdentifier", + "src": "22776:6:12" + }, + "nativeSrc": "22776:15:12", + "nodeType": "YulFunctionCall", + "src": "22776:15:12" + }, + "nativeSrc": "22776:15:12", + "nodeType": "YulExpressionStatement", + "src": "22776:15:12" + }, + { + "nativeSrc": "22844:5:12", + "nodeType": "YulBreak", + "src": "22844:5:12" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "noCode", + "nativeSrc": "21897:6:12", + "nodeType": "YulIdentifier", + "src": "21897:6:12" + }, + { + "name": "isValid", + "nativeSrc": "21905:7:12", + "nodeType": "YulIdentifier", + "src": "21905:7:12" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "21894:2:12", + "nodeType": "YulIdentifier", + "src": "21894:2:12" + }, + "nativeSrc": "21894:19:12", + "nodeType": "YulFunctionCall", + "src": "21894:19:12" + }, + "nativeSrc": "21887:976:12", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "21914:2:12", + "nodeType": "YulBlock", + "src": "21914:2:12", + "statements": [] + }, + "pre": { + "nativeSrc": "21891:2:12", + "nodeType": "YulBlock", + "src": "21891:2:12", + "statements": [] + }, + "src": "21887:976:12" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6327, + "isOffset": false, + "isSlot": false, + "src": "20671:4:12", + "valueSize": 1 + }, + { + "declaration": 6327, + "isOffset": false, + "isSlot": false, + "src": "20900:4:12", + "valueSize": 1 + }, + { + "declaration": 6327, + "isOffset": false, + "isSlot": false, + "src": "21102:4:12", + "valueSize": 1 + }, + { + "declaration": 6327, + "isOffset": false, + "isSlot": false, + "src": "22464:4:12", + "valueSize": 1 + }, + { + "declaration": 6332, + "isOffset": false, + "isSlot": false, + "src": "20568:7:12", + "valueSize": 1 + }, + { + "declaration": 6332, + "isOffset": false, + "isSlot": false, + "src": "20631:7:12", + "valueSize": 1 + }, + { + "declaration": 6332, + "isOffset": false, + "isSlot": false, + "src": "20860:7:12", + "valueSize": 1 + }, + { + "declaration": 6332, + "isOffset": false, + "isSlot": false, + "src": "20958:7:12", + "valueSize": 1 + }, + { + "declaration": 6332, + "isOffset": false, + "isSlot": false, + "src": "21706:7:12", + "valueSize": 1 + }, + { + "declaration": 6332, + "isOffset": false, + "isSlot": false, + "src": "21905:7:12", + "valueSize": 1 + }, + { + "declaration": 6332, + "isOffset": false, + "isSlot": false, + "src": "22637:7:12", + "valueSize": 1 + }, + { + "declaration": 6329, + "isOffset": false, + "isSlot": false, + "src": "20456:9:12", + "valueSize": 1 + }, + { + "declaration": 6329, + "isOffset": false, + "isSlot": false, + "src": "20532:9:12", + "valueSize": 1 + }, + { + "declaration": 6329, + "isOffset": false, + "isSlot": false, + "src": "20677:9:12", + "valueSize": 1 + }, + { + "declaration": 6329, + "isOffset": false, + "isSlot": false, + "src": "20803:9:12", + "valueSize": 1 + }, + { + "declaration": 6329, + "isOffset": false, + "isSlot": false, + "src": "21560:9:12", + "valueSize": 1 + }, + { + "declaration": 6329, + "isOffset": false, + "isSlot": false, + "src": "22010:9:12", + "valueSize": 1 + }, + { + "declaration": 6329, + "isOffset": false, + "isSlot": false, + "src": "22248:9:12", + "valueSize": 1 + }, + { + "declaration": 6329, + "isOffset": false, + "isSlot": false, + "src": "22319:9:12", + "valueSize": 1 + }, + { + "declaration": 6329, + "isOffset": false, + "isSlot": false, + "src": "22509:9:12", + "valueSize": 1 + }, + { + "declaration": 6325, + "isOffset": false, + "isSlot": false, + "src": "20420:6:12", + "valueSize": 1 + }, + { + "declaration": 6325, + "isOffset": false, + "isSlot": false, + "src": "20663:6:12", + "valueSize": 1 + }, + { + "declaration": 6325, + "isOffset": false, + "isSlot": false, + "src": "20892:6:12", + "valueSize": 1 + }, + { + "declaration": 6325, + "isOffset": false, + "isSlot": false, + "src": "21057:6:12", + "valueSize": 1 + }, + { + "declaration": 6325, + "isOffset": false, + "isSlot": false, + "src": "22681:6:12", + "valueSize": 1 + } + ], + "id": 6334, + "nodeType": "InlineAssembly", + "src": "19608:3265:12" + } + ] + }, + "documentation": { + "id": 6323, + "nodeType": "StructuredDocumentation", + "src": "18841:567:12", + "text": "@dev Returns whether `signature` is valid for `hash`.\n If the signature is postfixed with the ERC6492 magic number, it will attempt\n to use a reverting verifier to deploy / prepare the `signer` smart account\n and do a `isValidSignature` check via the reverting verifier.\n Note: This function is reentrancy safe.\n The reverting verifier must be deployed.\n Otherwise, the function will return false if `signer` is not yet deployed / prepared.\n See: https://gist.github.com/Vectorized/846a474c855eee9e441506676800a9ad" + }, + "id": 6336, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isValidERC6492SignatureNow", + "nameLocation": "19422:26:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6330, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6325, + "mutability": "mutable", + "name": "signer", + "nameLocation": "19457:6:12", + "nodeType": "VariableDeclaration", + "scope": 6336, + "src": "19449:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6324, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "19449:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6327, + "mutability": "mutable", + "name": "hash", + "nameLocation": "19473:4:12", + "nodeType": "VariableDeclaration", + "scope": 6336, + "src": "19465:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6326, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "19465:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6329, + "mutability": "mutable", + "name": "signature", + "nameLocation": "19492:9:12", + "nodeType": "VariableDeclaration", + "scope": 6336, + "src": "19479:22:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6328, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "19479:5:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "19448:54:12" + }, + "returnParameters": { + "id": 6333, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6332, + "mutability": "mutable", + "name": "isValid", + "nameLocation": "19542:7:12", + "nodeType": "VariableDeclaration", + "scope": 6336, + "src": "19537:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6331, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "19537:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "19536:14:12" + }, + "scope": 6365, + "src": "19413:3466:12", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6345, + "nodeType": "Block", + "src": "23500:324:12", + "statements": [ + { + "AST": { + "nativeSrc": "23562:256:12", + "nodeType": "YulBlock", + "src": "23562:256:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23583:4:12", + "nodeType": "YulLiteral", + "src": "23583:4:12", + "type": "", + "value": "0x20" + }, + { + "name": "hash", + "nativeSrc": "23589:4:12", + "nodeType": "YulIdentifier", + "src": "23589:4:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "23576:6:12", + "nodeType": "YulIdentifier", + "src": "23576:6:12" + }, + "nativeSrc": "23576:18:12", + "nodeType": "YulFunctionCall", + "src": "23576:18:12" + }, + "nativeSrc": "23576:18:12", + "nodeType": "YulExpressionStatement", + "src": "23576:18:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23657:4:12", + "nodeType": "YulLiteral", + "src": "23657:4:12", + "type": "", + "value": "0x00" + }, + { + "hexValue": "0000000019457468657265756d205369676e6564204d6573736167653a0a3332", + "kind": "string", + "nativeSrc": "23663:50:12", + "nodeType": "YulLiteral", + "src": "23663:50:12", + "type": "", + "value": "\u0000\u0000\u0000\u0000\u0019Ethereum Signed Message:\n32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "23650:6:12", + "nodeType": "YulIdentifier", + "src": "23650:6:12" + }, + "nativeSrc": "23650:64:12", + "nodeType": "YulFunctionCall", + "src": "23650:64:12" + }, + "nativeSrc": "23650:64:12", + "nodeType": "YulExpressionStatement", + "src": "23650:64:12" + }, + { + "nativeSrc": "23740:31:12", + "nodeType": "YulAssignment", + "src": "23740:31:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23760:4:12", + "nodeType": "YulLiteral", + "src": "23760:4:12", + "type": "", + "value": "0x04" + }, + { + "kind": "number", + "nativeSrc": "23766:4:12", + "nodeType": "YulLiteral", + "src": "23766:4:12", + "type": "", + "value": "0x3c" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "23750:9:12", + "nodeType": "YulIdentifier", + "src": "23750:9:12" + }, + "nativeSrc": "23750:21:12", + "nodeType": "YulFunctionCall", + "src": "23750:21:12" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "23740:6:12", + "nodeType": "YulIdentifier", + "src": "23740:6:12" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6339, + "isOffset": false, + "isSlot": false, + "src": "23589:4:12", + "valueSize": 1 + }, + { + "declaration": 6342, + "isOffset": false, + "isSlot": false, + "src": "23740:6:12", + "valueSize": 1 + } + ], + "id": 6344, + "nodeType": "InlineAssembly", + "src": "23553:265:12" + } + ] + }, + "documentation": { + "id": 6337, + "nodeType": "StructuredDocumentation", + "src": "23168:242:12", + "text": "@dev Returns an Ethereum Signed Message, created from a `hash`.\n This produces a hash corresponding to the one signed with the\n [`eth_sign`](https://eth.wiki/json-rpc/API#eth_sign)\n JSON-RPC method as part of EIP-191." + }, + "id": 6346, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toEthSignedMessageHash", + "nameLocation": "23424:22:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6340, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6339, + "mutability": "mutable", + "name": "hash", + "nameLocation": "23455:4:12", + "nodeType": "VariableDeclaration", + "scope": 6346, + "src": "23447:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6338, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "23447:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "23446:14:12" + }, + "returnParameters": { + "id": 6343, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6342, + "mutability": "mutable", + "name": "result", + "nameLocation": "23492:6:12", + "nodeType": "VariableDeclaration", + "scope": 6346, + "src": "23484:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6341, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "23484:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "23483:16:12" + }, + "scope": 6365, + "src": "23415:409:12", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6355, + "nodeType": "Block", + "src": "24217:1019:12", + "statements": [ + { + "AST": { + "nativeSrc": "24279:951:12", + "nodeType": "YulBlock", + "src": "24279:951:12", + "statements": [ + { + "nativeSrc": "24293:23:12", + "nodeType": "YulVariableDeclaration", + "src": "24293:23:12", + "value": { + "arguments": [ + { + "name": "s", + "nativeSrc": "24314:1:12", + "nodeType": "YulIdentifier", + "src": "24314:1:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "24308:5:12", + "nodeType": "YulIdentifier", + "src": "24308:5:12" + }, + "nativeSrc": "24308:8:12", + "nodeType": "YulFunctionCall", + "src": "24308:8:12" + }, + "variables": [ + { + "name": "sLength", + "nativeSrc": "24297:7:12", + "nodeType": "YulTypedName", + "src": "24297:7:12", + "type": "" + } + ] + }, + { + "nativeSrc": "24329:13:12", + "nodeType": "YulVariableDeclaration", + "src": "24329:13:12", + "value": { + "kind": "number", + "nativeSrc": "24338:4:12", + "nodeType": "YulLiteral", + "src": "24338:4:12", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "24333:1:12", + "nodeType": "YulTypedName", + "src": "24333:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "24362:1:12", + "nodeType": "YulIdentifier", + "src": "24362:1:12" + }, + { + "hexValue": "19457468657265756d205369676e6564204d6573736167653a0a", + "kind": "string", + "nativeSrc": "24365:32:12", + "nodeType": "YulLiteral", + "src": "24365:32:12", + "type": "", + "value": "\u0019Ethereum Signed Message:\n" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "24355:6:12", + "nodeType": "YulIdentifier", + "src": "24355:6:12" + }, + "nativeSrc": "24355:43:12", + "nodeType": "YulFunctionCall", + "src": "24355:43:12" + }, + "nativeSrc": "24355:43:12", + "nodeType": "YulExpressionStatement", + "src": "24355:43:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "24450:4:12", + "nodeType": "YulLiteral", + "src": "24450:4:12", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "24456:4:12", + "nodeType": "YulLiteral", + "src": "24456:4:12", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "24443:6:12", + "nodeType": "YulIdentifier", + "src": "24443:6:12" + }, + "nativeSrc": "24443:18:12", + "nodeType": "YulFunctionCall", + "src": "24443:18:12" + }, + "nativeSrc": "24443:18:12", + "nodeType": "YulExpressionStatement", + "src": "24443:18:12" + }, + { + "body": { + "nativeSrc": "24598:177:12", + "nodeType": "YulBlock", + "src": "24598:177:12", + "statements": [ + { + "nativeSrc": "24616:14:12", + "nodeType": "YulAssignment", + "src": "24616:14:12", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "24625:1:12", + "nodeType": "YulIdentifier", + "src": "24625:1:12" + }, + { + "kind": "number", + "nativeSrc": "24628:1:12", + "nodeType": "YulLiteral", + "src": "24628:1:12", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "24621:3:12", + "nodeType": "YulIdentifier", + "src": "24621:3:12" + }, + "nativeSrc": "24621:9:12", + "nodeType": "YulFunctionCall", + "src": "24621:9:12" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "24616:1:12", + "nodeType": "YulIdentifier", + "src": "24616:1:12" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "24655:1:12", + "nodeType": "YulIdentifier", + "src": "24655:1:12" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "24662:2:12", + "nodeType": "YulLiteral", + "src": "24662:2:12", + "type": "", + "value": "48" + }, + { + "arguments": [ + { + "name": "temp", + "nativeSrc": "24670:4:12", + "nodeType": "YulIdentifier", + "src": "24670:4:12" + }, + { + "kind": "number", + "nativeSrc": "24676:2:12", + "nodeType": "YulLiteral", + "src": "24676:2:12", + "type": "", + "value": "10" + } + ], + "functionName": { + "name": "mod", + "nativeSrc": "24666:3:12", + "nodeType": "YulIdentifier", + "src": "24666:3:12" + }, + "nativeSrc": "24666:13:12", + "nodeType": "YulFunctionCall", + "src": "24666:13:12" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24658:3:12", + "nodeType": "YulIdentifier", + "src": "24658:3:12" + }, + "nativeSrc": "24658:22:12", + "nodeType": "YulFunctionCall", + "src": "24658:22:12" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "24647:7:12", + "nodeType": "YulIdentifier", + "src": "24647:7:12" + }, + "nativeSrc": "24647:34:12", + "nodeType": "YulFunctionCall", + "src": "24647:34:12" + }, + "nativeSrc": "24647:34:12", + "nodeType": "YulExpressionStatement", + "src": "24647:34:12" + }, + { + "nativeSrc": "24698:21:12", + "nodeType": "YulAssignment", + "src": "24698:21:12", + "value": { + "arguments": [ + { + "name": "temp", + "nativeSrc": "24710:4:12", + "nodeType": "YulIdentifier", + "src": "24710:4:12" + }, + { + "kind": "number", + "nativeSrc": "24716:2:12", + "nodeType": "YulLiteral", + "src": "24716:2:12", + "type": "", + "value": "10" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "24706:3:12", + "nodeType": "YulIdentifier", + "src": "24706:3:12" + }, + "nativeSrc": "24706:13:12", + "nodeType": "YulFunctionCall", + "src": "24706:13:12" + }, + "variableNames": [ + { + "name": "temp", + "nativeSrc": "24698:4:12", + "nodeType": "YulIdentifier", + "src": "24698:4:12" + } + ] + }, + { + "body": { + "nativeSrc": "24752:9:12", + "nodeType": "YulBlock", + "src": "24752:9:12", + "statements": [ + { + "nativeSrc": "24754:5:12", + "nodeType": "YulBreak", + "src": "24754:5:12" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "temp", + "nativeSrc": "24746:4:12", + "nodeType": "YulIdentifier", + "src": "24746:4:12" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "24739:6:12", + "nodeType": "YulIdentifier", + "src": "24739:6:12" + }, + "nativeSrc": "24739:12:12", + "nodeType": "YulFunctionCall", + "src": "24739:12:12" + }, + "nativeSrc": "24736:25:12", + "nodeType": "YulIf", + "src": "24736:25:12" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "24593:1:12", + "nodeType": "YulLiteral", + "src": "24593:1:12", + "type": "", + "value": "1" + }, + "nativeSrc": "24565:210:12", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "24595:2:12", + "nodeType": "YulBlock", + "src": "24595:2:12", + "statements": [] + }, + "pre": { + "nativeSrc": "24569:23:12", + "nodeType": "YulBlock", + "src": "24569:23:12", + "statements": [ + { + "nativeSrc": "24571:19:12", + "nodeType": "YulVariableDeclaration", + "src": "24571:19:12", + "value": { + "name": "sLength", + "nativeSrc": "24583:7:12", + "nodeType": "YulIdentifier", + "src": "24583:7:12" + }, + "variables": [ + { + "name": "temp", + "nativeSrc": "24575:4:12", + "nodeType": "YulTypedName", + "src": "24575:4:12", + "type": "" + } + ] + } + ] + }, + "src": "24565:210:12" + }, + { + "nativeSrc": "24788:21:12", + "nodeType": "YulVariableDeclaration", + "src": "24788:21:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "24801:4:12", + "nodeType": "YulLiteral", + "src": "24801:4:12", + "type": "", + "value": "0x3a" + }, + { + "name": "o", + "nativeSrc": "24807:1:12", + "nodeType": "YulIdentifier", + "src": "24807:1:12" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "24797:3:12", + "nodeType": "YulIdentifier", + "src": "24797:3:12" + }, + "nativeSrc": "24797:12:12", + "nodeType": "YulFunctionCall", + "src": "24797:12:12" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "24792:1:12", + "nodeType": "YulTypedName", + "src": "24792:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "24965:14:12", + "nodeType": "YulIdentifier", + "src": "24965:14:12" + }, + "nativeSrc": "24965:16:12", + "nodeType": "YulFunctionCall", + "src": "24965:16:12" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "24983:14:12", + "nodeType": "YulIdentifier", + "src": "24983:14:12" + }, + "nativeSrc": "24983:16:12", + "nodeType": "YulFunctionCall", + "src": "24983:16:12" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "25004:1:12", + "nodeType": "YulIdentifier", + "src": "25004:1:12" + }, + { + "kind": "number", + "nativeSrc": "25007:4:12", + "nodeType": "YulLiteral", + "src": "25007:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "25001:2:12", + "nodeType": "YulIdentifier", + "src": "25001:2:12" + }, + "nativeSrc": "25001:11:12", + "nodeType": "YulFunctionCall", + "src": "25001:11:12" + } + ], + "functionName": { + "name": "returndatacopy", + "nativeSrc": "24950:14:12", + "nodeType": "YulIdentifier", + "src": "24950:14:12" + }, + "nativeSrc": "24950:63:12", + "nodeType": "YulFunctionCall", + "src": "24950:63:12" + }, + "nativeSrc": "24950:63:12", + "nodeType": "YulExpressionStatement", + "src": "24950:63:12" + }, + { + "expression": { + "arguments": [ + { + "name": "s", + "nativeSrc": "25033:1:12", + "nodeType": "YulIdentifier", + "src": "25033:1:12" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "25045:4:12", + "nodeType": "YulLiteral", + "src": "25045:4:12", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "25039:5:12", + "nodeType": "YulIdentifier", + "src": "25039:5:12" + }, + "nativeSrc": "25039:11:12", + "nodeType": "YulFunctionCall", + "src": "25039:11:12" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "25058:1:12", + "nodeType": "YulIdentifier", + "src": "25058:1:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "25052:5:12", + "nodeType": "YulIdentifier", + "src": "25052:5:12" + }, + "nativeSrc": "25052:8:12", + "nodeType": "YulFunctionCall", + "src": "25052:8:12" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "25036:2:12", + "nodeType": "YulIdentifier", + "src": "25036:2:12" + }, + "nativeSrc": "25036:25:12", + "nodeType": "YulFunctionCall", + "src": "25036:25:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "25026:6:12", + "nodeType": "YulIdentifier", + "src": "25026:6:12" + }, + "nativeSrc": "25026:36:12", + "nodeType": "YulFunctionCall", + "src": "25026:36:12" + }, + "nativeSrc": "25026:36:12", + "nodeType": "YulExpressionStatement", + "src": "25026:36:12" + }, + { + "nativeSrc": "25108:58:12", + "nodeType": "YulAssignment", + "src": "25108:58:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "s", + "nativeSrc": "25132:1:12", + "nodeType": "YulIdentifier", + "src": "25132:1:12" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "25139:4:12", + "nodeType": "YulLiteral", + "src": "25139:4:12", + "type": "", + "value": "0x20" + }, + { + "name": "n", + "nativeSrc": "25145:1:12", + "nodeType": "YulIdentifier", + "src": "25145:1:12" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "25135:3:12", + "nodeType": "YulIdentifier", + "src": "25135:3:12" + }, + "nativeSrc": "25135:12:12", + "nodeType": "YulFunctionCall", + "src": "25135:12:12" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "25128:3:12", + "nodeType": "YulIdentifier", + "src": "25128:3:12" + }, + "nativeSrc": "25128:20:12", + "nodeType": "YulFunctionCall", + "src": "25128:20:12" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "25154:1:12", + "nodeType": "YulIdentifier", + "src": "25154:1:12" + }, + { + "name": "sLength", + "nativeSrc": "25157:7:12", + "nodeType": "YulIdentifier", + "src": "25157:7:12" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "25150:3:12", + "nodeType": "YulIdentifier", + "src": "25150:3:12" + }, + "nativeSrc": "25150:15:12", + "nodeType": "YulFunctionCall", + "src": "25150:15:12" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "25118:9:12", + "nodeType": "YulIdentifier", + "src": "25118:9:12" + }, + "nativeSrc": "25118:48:12", + "nodeType": "YulFunctionCall", + "src": "25118:48:12" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "25108:6:12", + "nodeType": "YulIdentifier", + "src": "25108:6:12" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "s", + "nativeSrc": "25186:1:12", + "nodeType": "YulIdentifier", + "src": "25186:1:12" + }, + { + "name": "sLength", + "nativeSrc": "25189:7:12", + "nodeType": "YulIdentifier", + "src": "25189:7:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "25179:6:12", + "nodeType": "YulIdentifier", + "src": "25179:6:12" + }, + "nativeSrc": "25179:18:12", + "nodeType": "YulFunctionCall", + "src": "25179:18:12" + }, + "nativeSrc": "25179:18:12", + "nodeType": "YulExpressionStatement", + "src": "25179:18:12" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6352, + "isOffset": false, + "isSlot": false, + "src": "25108:6:12", + "valueSize": 1 + }, + { + "declaration": 6349, + "isOffset": false, + "isSlot": false, + "src": "24314:1:12", + "valueSize": 1 + }, + { + "declaration": 6349, + "isOffset": false, + "isSlot": false, + "src": "25033:1:12", + "valueSize": 1 + }, + { + "declaration": 6349, + "isOffset": false, + "isSlot": false, + "src": "25132:1:12", + "valueSize": 1 + }, + { + "declaration": 6349, + "isOffset": false, + "isSlot": false, + "src": "25186:1:12", + "valueSize": 1 + } + ], + "id": 6354, + "nodeType": "InlineAssembly", + "src": "24270:960:12" + } + ] + }, + "documentation": { + "id": 6347, + "nodeType": "StructuredDocumentation", + "src": "23830:295:12", + "text": "@dev Returns an Ethereum Signed Message, created from `s`.\n This produces a hash corresponding to the one signed with the\n [`eth_sign`](https://eth.wiki/json-rpc/API#eth_sign)\n JSON-RPC method as part of EIP-191.\n Note: Supports lengths of `s` up to 999999 bytes." + }, + "id": 6356, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toEthSignedMessageHash", + "nameLocation": "24139:22:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6350, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6349, + "mutability": "mutable", + "name": "s", + "nameLocation": "24175:1:12", + "nodeType": "VariableDeclaration", + "scope": 6356, + "src": "24162:14:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6348, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "24162:5:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "24161:16:12" + }, + "returnParameters": { + "id": 6353, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6352, + "mutability": "mutable", + "name": "result", + "nameLocation": "24209:6:12", + "nodeType": "VariableDeclaration", + "scope": 6356, + "src": "24201:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6351, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "24201:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "24200:16:12" + }, + "scope": 6365, + "src": "24130:1106:12", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6363, + "nodeType": "Block", + "src": "25646:113:12", + "statements": [ + { + "AST": { + "nativeSrc": "25708:45:12", + "nodeType": "YulBlock", + "src": "25708:45:12", + "statements": [ + { + "nativeSrc": "25722:21:12", + "nodeType": "YulAssignment", + "src": "25722:21:12", + "value": { + "kind": "number", + "nativeSrc": "25742:1:12", + "nodeType": "YulLiteral", + "src": "25742:1:12", + "type": "", + "value": "0" + }, + "variableNames": [ + { + "name": "signature.length", + "nativeSrc": "25722:16:12", + "nodeType": "YulIdentifier", + "src": "25722:16:12" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6360, + "isOffset": false, + "isSlot": false, + "src": "25722:16:12", + "suffix": "length", + "valueSize": 1 + } + ], + "id": 6362, + "nodeType": "InlineAssembly", + "src": "25699:54:12" + } + ] + }, + "documentation": { + "id": 6357, + "nodeType": "StructuredDocumentation", + "src": "25525:41:12", + "text": "@dev Returns an empty calldata bytes." + }, + "id": 6364, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "emptySignature", + "nameLocation": "25580:14:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6358, + "nodeType": "ParameterList", + "parameters": [], + "src": "25594:2:12" + }, + "returnParameters": { + "id": 6361, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6360, + "mutability": "mutable", + "name": "signature", + "nameLocation": "25635:9:12", + "nodeType": "VariableDeclaration", + "scope": 6364, + "src": "25620:24:12", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6359, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "25620:5:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "25619:26:12" + }, + "scope": 6365, + "src": "25571:188:12", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 6366, + "src": "1438:24323:12", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "32:25730:12" + }, + "id": 12 + }, + "solady/utils/UUPSUpgradeable.sol": { + "ast": { + "absolutePath": "solady/utils/UUPSUpgradeable.sol", + "exportedSymbols": { + "CallContextChecker": [ + 2583 + ], + "UUPSUpgradeable": [ + 6422 + ] + }, + "id": 6423, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6367, + "literals": [ + "solidity", + "^", + "0.8", + ".4" + ], + "nodeType": "PragmaDirective", + "src": "32:23:13" + }, + { + "absolutePath": "solady/utils/CallContextChecker.sol", + "file": "./CallContextChecker.sol", + "id": 6369, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6423, + "sourceUnit": 2584, + "src": "57:60:13", + "symbolAliases": [ + { + "foreign": { + "id": 6368, + "name": "CallContextChecker", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2583, + "src": "65:18:13", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 6371, + "name": "CallContextChecker", + "nameLocations": [ + "739:18:13" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2583, + "src": "739:18:13" + }, + "id": 6372, + "nodeType": "InheritanceSpecifier", + "src": "739:18:13" + } + ], + "canonicalName": "UUPSUpgradeable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 6370, + "nodeType": "StructuredDocumentation", + "src": "119:583:13", + "text": "@notice UUPS proxy mixin.\n @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/UUPSUpgradeable.sol)\n @author Modified from OpenZeppelin\n (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/proxy/utils/UUPSUpgradeable.sol)\n @dev Note:\n - This implementation is intended to be used with ERC1967 proxies.\n See: `LibClone.deployERC1967` and related functions.\n - This implementation is NOT compatible with legacy OpenZeppelin proxies\n which do not store the implementation at `_ERC1967_IMPLEMENTATION_SLOT`." + }, + "fullyImplemented": false, + "id": 6422, + "linearizedBaseContracts": [ + 6422, + 2583 + ], + "name": "UUPSUpgradeable", + "nameLocation": "720:15:13", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 6373, + "nodeType": "StructuredDocumentation", + "src": "1047:28:13", + "text": "@dev The upgrade failed." + }, + "errorSelector": "55299b49", + "id": 6375, + "name": "UpgradeFailed", + "nameLocation": "1086:13:13", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6374, + "nodeType": "ParameterList", + "parameters": [], + "src": "1099:2:13" + }, + "src": "1080:22:13" + }, + { + "anonymous": false, + "documentation": { + "id": 6376, + "nodeType": "StructuredDocumentation", + "src": "1391:61:13", + "text": "@dev Emitted when the proxy's implementation is upgraded." + }, + "eventSelector": "bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "id": 6380, + "name": "Upgraded", + "nameLocation": "1463:8:13", + "nodeType": "EventDefinition", + "parameters": { + "id": 6379, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6378, + "indexed": true, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "1488:14:13", + "nodeType": "VariableDeclaration", + "scope": 6380, + "src": "1472:30:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6377, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1472:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1471:32:13" + }, + "src": "1457:47:13" + }, + { + "constant": true, + "documentation": { + "id": 6381, + "nodeType": "StructuredDocumentation", + "src": "1510:49:13", + "text": "@dev `keccak256(bytes(\"Upgraded(address)\"))`." + }, + "id": 6384, + "mutability": "constant", + "name": "_UPGRADED_EVENT_SIGNATURE", + "nameLocation": "1589:25:13", + "nodeType": "VariableDeclaration", + "scope": 6422, + "src": "1564:127:13", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6382, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1564:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "307862633763643735613230656532376664396164656261623332303431663735353231346462633662666661393063633032323562333964613265356332643362", + "id": 6383, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1625:66:13", + "typeDescriptions": { + "typeIdentifier": "t_rational_85255390875014325802867460126659607941379558699672153012307716606304121007419_by_1", + "typeString": "int_const 8525...(69 digits omitted)...7419" + }, + "value": "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b" + }, + "visibility": "private" + }, + { + "constant": true, + "documentation": { + "id": 6385, + "nodeType": "StructuredDocumentation", + "src": "1981:137:13", + "text": "@dev The ERC-1967 storage slot for the implementation in the proxy.\n `uint256(keccak256(\"eip1967.proxy.implementation\")) - 1`." + }, + "id": 6388, + "mutability": "constant", + "name": "_ERC1967_IMPLEMENTATION_SLOT", + "nameLocation": "2149:28:13", + "nodeType": "VariableDeclaration", + "scope": 6422, + "src": "2123:131:13", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6386, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2123:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307833363038393461313362613161333231303636376338323834393264623938646361336532303736636333373335613932306133636135303564333832626263", + "id": 6387, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2188:66:13", + "typeDescriptions": { + "typeIdentifier": "t_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by_1", + "typeString": "int_const 2444...(69 digits omitted)...5612" + }, + "value": "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc" + }, + "visibility": "internal" + }, + { + "documentation": { + "id": 6389, + "nodeType": "StructuredDocumentation", + "src": "2544:251:13", + "text": "@dev Please override this function to check if `msg.sender` is authorized\n to upgrade the proxy to `newImplementation`, reverting if not.\n ```\n function _authorizeUpgrade(address) internal override onlyOwner {}\n ```" + }, + "id": 6394, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "_authorizeUpgrade", + "nameLocation": "2809:17:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6392, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6391, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "2835:17:13", + "nodeType": "VariableDeclaration", + "scope": 6394, + "src": "2827:25:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6390, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2827:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2826:27:13" + }, + "returnParameters": { + "id": 6393, + "nodeType": "ParameterList", + "parameters": [], + "src": "2870:0:13" + }, + "scope": 6422, + "src": "2800:71:13", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 6404, + "nodeType": "Block", + "src": "3229:151:13", + "statements": [ + { + "expression": { + "id": 6402, + "name": "_ERC1967_IMPLEMENTATION_SLOT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6388, + "src": "3345:28:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 6401, + "id": 6403, + "nodeType": "Return", + "src": "3338:35:13" + } + ] + }, + "documentation": { + "id": 6395, + "nodeType": "StructuredDocumentation", + "src": "2877:271:13", + "text": "@dev Returns the storage slot used by the implementation,\n as specified in [ERC1822](https://eips.ethereum.org/EIPS/eip-1822).\n Note: The `notDelegated` modifier prevents accidental upgrades to\n an implementation that is a proxy contract." + }, + "functionSelector": "52d1902d", + "id": 6405, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 6398, + "kind": "modifierInvocation", + "modifierName": { + "id": 6397, + "name": "notDelegated", + "nameLocations": [ + "3198:12:13" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2577, + "src": "3198:12:13" + }, + "nodeType": "ModifierInvocation", + "src": "3198:12:13" + } + ], + "name": "proxiableUUID", + "nameLocation": "3162:13:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6396, + "nodeType": "ParameterList", + "parameters": [], + "src": "3175:2:13" + }, + "returnParameters": { + "id": 6401, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6400, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6405, + "src": "3220:7:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6399, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3220:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3219:9:13" + }, + "scope": 6422, + "src": "3153:227:13", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 6420, + "nodeType": "Block", + "src": "3729:1475:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 6416, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6408, + "src": "3757:17:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6415, + "name": "_authorizeUpgrade", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6394, + "src": "3739:17:13", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 6417, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3739:36:13", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6418, + "nodeType": "ExpressionStatement", + "src": "3739:36:13" + }, + { + "AST": { + "nativeSrc": "3837:1361:13", + "nodeType": "YulBlock", + "src": "3837:1361:13", + "statements": [ + { + "nativeSrc": "3851:56:13", + "nodeType": "YulAssignment", + "src": "3851:56:13", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3876:2:13", + "nodeType": "YulLiteral", + "src": "3876:2:13", + "type": "", + "value": "96" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3884:2:13", + "nodeType": "YulLiteral", + "src": "3884:2:13", + "type": "", + "value": "96" + }, + { + "name": "newImplementation", + "nativeSrc": "3888:17:13", + "nodeType": "YulIdentifier", + "src": "3888:17:13" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "3880:3:13", + "nodeType": "YulIdentifier", + "src": "3880:3:13" + }, + "nativeSrc": "3880:26:13", + "nodeType": "YulFunctionCall", + "src": "3880:26:13" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "3872:3:13", + "nodeType": "YulIdentifier", + "src": "3872:3:13" + }, + "nativeSrc": "3872:35:13", + "nodeType": "YulFunctionCall", + "src": "3872:35:13" + }, + "variableNames": [ + { + "name": "newImplementation", + "nativeSrc": "3851:17:13", + "nodeType": "YulIdentifier", + "src": "3851:17:13" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3952:4:13", + "nodeType": "YulLiteral", + "src": "3952:4:13", + "type": "", + "value": "0x00" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "3958:14:13", + "nodeType": "YulIdentifier", + "src": "3958:14:13" + }, + "nativeSrc": "3958:16:13", + "nodeType": "YulFunctionCall", + "src": "3958:16:13" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3945:6:13", + "nodeType": "YulIdentifier", + "src": "3945:6:13" + }, + "nativeSrc": "3945:30:13", + "nodeType": "YulFunctionCall", + "src": "3945:30:13" + }, + "nativeSrc": "3945:30:13", + "nodeType": "YulExpressionStatement", + "src": "3945:30:13" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3995:4:13", + "nodeType": "YulLiteral", + "src": "3995:4:13", + "type": "", + "value": "0x01" + }, + { + "kind": "number", + "nativeSrc": "4001:10:13", + "nodeType": "YulLiteral", + "src": "4001:10:13", + "type": "", + "value": "0x52d1902d" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3988:6:13", + "nodeType": "YulIdentifier", + "src": "3988:6:13" + }, + "nativeSrc": "3988:24:13", + "nodeType": "YulFunctionCall", + "src": "3988:24:13" + }, + "nativeSrc": "3988:24:13", + "nodeType": "YulExpressionStatement", + "src": "3988:24:13" + }, + { + "nativeSrc": "4047:37:13", + "nodeType": "YulVariableDeclaration", + "src": "4047:37:13", + "value": { + "name": "_ERC1967_IMPLEMENTATION_SLOT", + "nativeSrc": "4056:28:13", + "nodeType": "YulIdentifier", + "src": "4056:28:13" + }, + "variables": [ + { + "name": "s", + "nativeSrc": "4051:1:13", + "nodeType": "YulTypedName", + "src": "4051:1:13", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "4265:113:13", + "nodeType": "YulBlock", + "src": "4265:113:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4290:4:13", + "nodeType": "YulLiteral", + "src": "4290:4:13", + "type": "", + "value": "0x01" + }, + { + "kind": "number", + "nativeSrc": "4296:10:13", + "nodeType": "YulLiteral", + "src": "4296:10:13", + "type": "", + "value": "0x55299b49" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4283:6:13", + "nodeType": "YulIdentifier", + "src": "4283:6:13" + }, + "nativeSrc": "4283:24:13", + "nodeType": "YulFunctionCall", + "src": "4283:24:13" + }, + "nativeSrc": "4283:24:13", + "nodeType": "YulExpressionStatement", + "src": "4283:24:13" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4353:4:13", + "nodeType": "YulLiteral", + "src": "4353:4:13", + "type": "", + "value": "0x1d" + }, + { + "kind": "number", + "nativeSrc": "4359:4:13", + "nodeType": "YulLiteral", + "src": "4359:4:13", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "4346:6:13", + "nodeType": "YulIdentifier", + "src": "4346:6:13" + }, + "nativeSrc": "4346:18:13", + "nodeType": "YulFunctionCall", + "src": "4346:18:13" + }, + "nativeSrc": "4346:18:13", + "nodeType": "YulExpressionStatement", + "src": "4346:18:13" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "4209:3:13", + "nodeType": "YulIdentifier", + "src": "4209:3:13" + }, + "nativeSrc": "4209:5:13", + "nodeType": "YulFunctionCall", + "src": "4209:5:13" + }, + { + "name": "newImplementation", + "nativeSrc": "4216:17:13", + "nodeType": "YulIdentifier", + "src": "4216:17:13" + }, + { + "kind": "number", + "nativeSrc": "4235:4:13", + "nodeType": "YulLiteral", + "src": "4235:4:13", + "type": "", + "value": "0x1d" + }, + { + "kind": "number", + "nativeSrc": "4241:4:13", + "nodeType": "YulLiteral", + "src": "4241:4:13", + "type": "", + "value": "0x04" + }, + { + "kind": "number", + "nativeSrc": "4247:4:13", + "nodeType": "YulLiteral", + "src": "4247:4:13", + "type": "", + "value": "0x01" + }, + { + "kind": "number", + "nativeSrc": "4253:4:13", + "nodeType": "YulLiteral", + "src": "4253:4:13", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "4198:10:13", + "nodeType": "YulIdentifier", + "src": "4198:10:13" + }, + "nativeSrc": "4198:60:13", + "nodeType": "YulFunctionCall", + "src": "4198:60:13" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "4192:5:13", + "nodeType": "YulIdentifier", + "src": "4192:5:13" + }, + "nativeSrc": "4192:67:13", + "nodeType": "YulFunctionCall", + "src": "4192:67:13" + }, + { + "name": "s", + "nativeSrc": "4261:1:13", + "nodeType": "YulIdentifier", + "src": "4261:1:13" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "4189:2:13", + "nodeType": "YulIdentifier", + "src": "4189:2:13" + }, + "nativeSrc": "4189:74:13", + "nodeType": "YulFunctionCall", + "src": "4189:74:13" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "4182:6:13", + "nodeType": "YulIdentifier", + "src": "4182:6:13" + }, + "nativeSrc": "4182:82:13", + "nodeType": "YulFunctionCall", + "src": "4182:82:13" + }, + "nativeSrc": "4179:199:13", + "nodeType": "YulIf", + "src": "4179:199:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "4438:8:13", + "nodeType": "YulIdentifier", + "src": "4438:8:13" + }, + "nativeSrc": "4438:10:13", + "nodeType": "YulFunctionCall", + "src": "4438:10:13" + }, + { + "kind": "number", + "nativeSrc": "4450:4:13", + "nodeType": "YulLiteral", + "src": "4450:4:13", + "type": "", + "value": "0x00" + }, + { + "name": "_UPGRADED_EVENT_SIGNATURE", + "nativeSrc": "4456:25:13", + "nodeType": "YulIdentifier", + "src": "4456:25:13" + }, + { + "name": "newImplementation", + "nativeSrc": "4483:17:13", + "nodeType": "YulIdentifier", + "src": "4483:17:13" + } + ], + "functionName": { + "name": "log2", + "nativeSrc": "4433:4:13", + "nodeType": "YulIdentifier", + "src": "4433:4:13" + }, + "nativeSrc": "4433:68:13", + "nodeType": "YulFunctionCall", + "src": "4433:68:13" + }, + "nativeSrc": "4433:68:13", + "nodeType": "YulExpressionStatement", + "src": "4433:68:13" + }, + { + "expression": { + "arguments": [ + { + "name": "s", + "nativeSrc": "4521:1:13", + "nodeType": "YulIdentifier", + "src": "4521:1:13" + }, + { + "name": "newImplementation", + "nativeSrc": "4524:17:13", + "nodeType": "YulIdentifier", + "src": "4524:17:13" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "4514:6:13", + "nodeType": "YulIdentifier", + "src": "4514:6:13" + }, + "nativeSrc": "4514:28:13", + "nodeType": "YulFunctionCall", + "src": "4514:28:13" + }, + "nativeSrc": "4514:28:13", + "nodeType": "YulExpressionStatement", + "src": "4514:28:13" + }, + { + "body": { + "nativeSrc": "4687:501:13", + "nodeType": "YulBlock", + "src": "4687:501:13", + "statements": [ + { + "nativeSrc": "4785:20:13", + "nodeType": "YulVariableDeclaration", + "src": "4785:20:13", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4800:4:13", + "nodeType": "YulLiteral", + "src": "4800:4:13", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "4794:5:13", + "nodeType": "YulIdentifier", + "src": "4794:5:13" + }, + "nativeSrc": "4794:11:13", + "nodeType": "YulFunctionCall", + "src": "4794:11:13" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "4789:1:13", + "nodeType": "YulTypedName", + "src": "4789:1:13", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "4835:1:13", + "nodeType": "YulIdentifier", + "src": "4835:1:13" + }, + { + "name": "data.offset", + "nativeSrc": "4838:11:13", + "nodeType": "YulIdentifier", + "src": "4838:11:13" + }, + { + "name": "data.length", + "nativeSrc": "4851:11:13", + "nodeType": "YulIdentifier", + "src": "4851:11:13" + } + ], + "functionName": { + "name": "calldatacopy", + "nativeSrc": "4822:12:13", + "nodeType": "YulIdentifier", + "src": "4822:12:13" + }, + "nativeSrc": "4822:41:13", + "nodeType": "YulFunctionCall", + "src": "4822:41:13" + }, + "nativeSrc": "4822:41:13", + "nodeType": "YulExpressionStatement", + "src": "4822:41:13" + }, + { + "body": { + "nativeSrc": "4980:194:13", + "nodeType": "YulBlock", + "src": "4980:194:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "5082:1:13", + "nodeType": "YulIdentifier", + "src": "5082:1:13" + }, + { + "kind": "number", + "nativeSrc": "5085:4:13", + "nodeType": "YulLiteral", + "src": "5085:4:13", + "type": "", + "value": "0x00" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "5091:14:13", + "nodeType": "YulIdentifier", + "src": "5091:14:13" + }, + "nativeSrc": "5091:16:13", + "nodeType": "YulFunctionCall", + "src": "5091:16:13" + } + ], + "functionName": { + "name": "returndatacopy", + "nativeSrc": "5067:14:13", + "nodeType": "YulIdentifier", + "src": "5067:14:13" + }, + "nativeSrc": "5067:41:13", + "nodeType": "YulFunctionCall", + "src": "5067:41:13" + }, + "nativeSrc": "5067:41:13", + "nodeType": "YulExpressionStatement", + "src": "5067:41:13" + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "5136:1:13", + "nodeType": "YulIdentifier", + "src": "5136:1:13" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "5139:14:13", + "nodeType": "YulIdentifier", + "src": "5139:14:13" + }, + "nativeSrc": "5139:16:13", + "nodeType": "YulFunctionCall", + "src": "5139:16:13" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "5129:6:13", + "nodeType": "YulIdentifier", + "src": "5129:6:13" + }, + "nativeSrc": "5129:27:13", + "nodeType": "YulFunctionCall", + "src": "5129:27:13" + }, + "nativeSrc": "5129:27:13", + "nodeType": "YulExpressionStatement", + "src": "5129:27:13" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "4903:3:13", + "nodeType": "YulIdentifier", + "src": "4903:3:13" + }, + "nativeSrc": "4903:5:13", + "nodeType": "YulFunctionCall", + "src": "4903:5:13" + }, + { + "name": "newImplementation", + "nativeSrc": "4910:17:13", + "nodeType": "YulIdentifier", + "src": "4910:17:13" + }, + { + "name": "m", + "nativeSrc": "4929:1:13", + "nodeType": "YulIdentifier", + "src": "4929:1:13" + }, + { + "name": "data.length", + "nativeSrc": "4932:11:13", + "nodeType": "YulIdentifier", + "src": "4932:11:13" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "4945:8:13", + "nodeType": "YulIdentifier", + "src": "4945:8:13" + }, + "nativeSrc": "4945:10:13", + "nodeType": "YulFunctionCall", + "src": "4945:10:13" + }, + { + "kind": "number", + "nativeSrc": "4957:4:13", + "nodeType": "YulLiteral", + "src": "4957:4:13", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "delegatecall", + "nativeSrc": "4890:12:13", + "nodeType": "YulIdentifier", + "src": "4890:12:13" + }, + "nativeSrc": "4890:72:13", + "nodeType": "YulFunctionCall", + "src": "4890:72:13" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "4883:6:13", + "nodeType": "YulIdentifier", + "src": "4883:6:13" + }, + "nativeSrc": "4883:80:13", + "nodeType": "YulFunctionCall", + "src": "4883:80:13" + }, + "nativeSrc": "4880:294:13", + "nodeType": "YulIf", + "src": "4880:294:13" + } + ] + }, + "condition": { + "name": "data.length", + "nativeSrc": "4675:11:13", + "nodeType": "YulIdentifier", + "src": "4675:11:13" + }, + "nativeSrc": "4672:516:13", + "nodeType": "YulIf", + "src": "4672:516:13" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6388, + "isOffset": false, + "isSlot": false, + "src": "4056:28:13", + "valueSize": 1 + }, + { + "declaration": 6384, + "isOffset": false, + "isSlot": false, + "src": "4456:25:13", + "valueSize": 1 + }, + { + "declaration": 6410, + "isOffset": false, + "isSlot": false, + "src": "4675:11:13", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 6410, + "isOffset": false, + "isSlot": false, + "src": "4851:11:13", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 6410, + "isOffset": false, + "isSlot": false, + "src": "4932:11:13", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 6410, + "isOffset": true, + "isSlot": false, + "src": "4838:11:13", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 6408, + "isOffset": false, + "isSlot": false, + "src": "3851:17:13", + "valueSize": 1 + }, + { + "declaration": 6408, + "isOffset": false, + "isSlot": false, + "src": "3888:17:13", + "valueSize": 1 + }, + { + "declaration": 6408, + "isOffset": false, + "isSlot": false, + "src": "4216:17:13", + "valueSize": 1 + }, + { + "declaration": 6408, + "isOffset": false, + "isSlot": false, + "src": "4483:17:13", + "valueSize": 1 + }, + { + "declaration": 6408, + "isOffset": false, + "isSlot": false, + "src": "4524:17:13", + "valueSize": 1 + }, + { + "declaration": 6408, + "isOffset": false, + "isSlot": false, + "src": "4910:17:13", + "valueSize": 1 + } + ], + "id": 6419, + "nodeType": "InlineAssembly", + "src": "3828:1370:13" + } + ] + }, + "documentation": { + "id": 6406, + "nodeType": "StructuredDocumentation", + "src": "3386:195:13", + "text": "@dev Upgrades the proxy's implementation to `newImplementation`.\n Emits a {Upgraded} event.\n Note: Passing in empty `data` skips the delegatecall to `newImplementation`." + }, + "functionSelector": "4f1ef286", + "id": 6421, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 6413, + "kind": "modifierInvocation", + "modifierName": { + "id": 6412, + "name": "onlyProxy", + "nameLocations": [ + "3715:9:13" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2569, + "src": "3715:9:13" + }, + "nodeType": "ModifierInvocation", + "src": "3715:9:13" + } + ], + "name": "upgradeToAndCall", + "nameLocation": "3595:16:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6411, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6408, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "3620:17:13", + "nodeType": "VariableDeclaration", + "scope": 6421, + "src": "3612:25:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6407, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3612:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6410, + "mutability": "mutable", + "name": "data", + "nameLocation": "3654:4:13", + "nodeType": "VariableDeclaration", + "scope": 6421, + "src": "3639:19:13", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6409, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3639:5:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3611:48:13" + }, + "returnParameters": { + "id": 6414, + "nodeType": "ParameterList", + "parameters": [], + "src": "3729:0:13" + }, + "scope": 6422, + "src": "3586:1618:13", + "stateMutability": "payable", + "virtual": true, + "visibility": "public" + } + ], + "scope": 6423, + "src": "702:4504:13", + "usedErrors": [ + 2465, + 6375 + ], + "usedEvents": [ + 6380 + ] + } + ], + "src": "32:5175:13" + }, + "id": 13 + }, + "src/AuthenticatedStaticCaller.sol": { + "ast": { + "absolutePath": "src/AuthenticatedStaticCaller.sol", + "exportedSymbols": { + "AuthenticatedStaticCaller": [ + 6532 + ], + "ERC1271": [ + 6726 + ], + "StaticCall": [ + 6435 + ] + }, + "id": 6533, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6424, + "literals": [ + "solidity", + "^", + "0.8", + ".28" + ], + "nodeType": "PragmaDirective", + "src": "32:24:14" + }, + { + "absolutePath": "src/ERC1271.sol", + "file": "./ERC1271.sol", + "id": 6426, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6533, + "sourceUnit": 6727, + "src": "57:38:14", + "symbolAliases": [ + { + "foreign": { + "id": 6425, + "name": "ERC1271", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6726, + "src": "65:7:14", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "canonicalName": "StaticCall", + "id": 6435, + "members": [ + { + "constant": false, + "id": 6428, + "mutability": "mutable", + "name": "target", + "nameLocation": "129:6:14", + "nodeType": "VariableDeclaration", + "scope": 6435, + "src": "121:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6427, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "121:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6430, + "mutability": "mutable", + "name": "data", + "nameLocation": "147:4:14", + "nodeType": "VariableDeclaration", + "scope": 6435, + "src": "141:10:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6429, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "141:5:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6432, + "mutability": "mutable", + "name": "signedAt", + "nameLocation": "165:8:14", + "nodeType": "VariableDeclaration", + "scope": 6435, + "src": "157:16:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6431, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "157:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6434, + "mutability": "mutable", + "name": "signature", + "nameLocation": "185:9:14", + "nodeType": "VariableDeclaration", + "scope": 6435, + "src": "179:15:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6433, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "179:5:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "name": "StaticCall", + "nameLocation": "104:10:14", + "nodeType": "StructDefinition", + "scope": 6533, + "src": "97:100:14", + "visibility": "public" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 6436, + "name": "ERC1271", + "nameLocations": [ + "246:7:14" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6726, + "src": "246:7:14" + }, + "id": 6437, + "nodeType": "InheritanceSpecifier", + "src": "246:7:14" + } + ], + "canonicalName": "AuthenticatedStaticCaller", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": false, + "id": 6532, + "linearizedBaseContracts": [ + 6532, + 6726 + ], + "name": "AuthenticatedStaticCaller", + "nameLocation": "217:25:14", + "nodeType": "ContractDefinition", + "nodes": [ + { + "errorSelector": "f88f0490", + "id": 6443, + "name": "SignatureExpired", + "nameLocation": "266:16:14", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6442, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6439, + "mutability": "mutable", + "name": "expiredAt", + "nameLocation": "291:9:14", + "nodeType": "VariableDeclaration", + "scope": 6443, + "src": "283:17:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6438, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "283:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6441, + "mutability": "mutable", + "name": "currentTimestamp", + "nameLocation": "310:16:14", + "nodeType": "VariableDeclaration", + "scope": 6443, + "src": "302:24:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6440, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "302:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "282:45:14" + }, + "src": "260:68:14" + }, + { + "errorSelector": "8baa579f", + "id": 6445, + "name": "InvalidSignature", + "nameLocation": "339:16:14", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6444, + "nodeType": "ParameterList", + "parameters": [], + "src": "355:2:14" + }, + "src": "333:25:14" + }, + { + "constant": true, + "id": 6448, + "mutability": "constant", + "name": "signatureLifetime", + "nameLocation": "417:17:14", + "nodeType": "VariableDeclaration", + "scope": 6532, + "src": "400:47:14", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6446, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "400:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "3330", + "id": 6447, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "437:10:14", + "subdenomination": "minutes", + "typeDescriptions": { + "typeIdentifier": "t_rational_1800_by_1", + "typeString": "int_const 1800" + }, + "value": "30" + }, + "visibility": "internal" + }, + { + "body": { + "id": 6455, + "nodeType": "Block", + "src": "518:41:14", + "statements": [ + { + "expression": { + "id": 6453, + "name": "signatureLifetime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6448, + "src": "535:17:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6452, + "id": 6454, + "nodeType": "Return", + "src": "528:24:14" + } + ] + }, + "functionSelector": "17452caa", + "id": 6456, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getSignatureLifetime", + "nameLocation": "463:20:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6449, + "nodeType": "ParameterList", + "parameters": [], + "src": "483:2:14" + }, + "returnParameters": { + "id": 6452, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6451, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6456, + "src": "509:7:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6450, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "509:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "508:9:14" + }, + "scope": 6532, + "src": "454:105:14", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 6530, + "nodeType": "Block", + "src": "654:628:14", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6470, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6467, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 6464, + "name": "call", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6459, + "src": "668:4:14", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StaticCall_$6435_calldata_ptr", + "typeString": "struct StaticCall calldata" + } + }, + "id": 6465, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "673:8:14", + "memberName": "signedAt", + "nodeType": "MemberAccess", + "referencedDeclaration": 6432, + "src": "668:13:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 6466, + "name": "signatureLifetime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6448, + "src": "684:17:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "668:33:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 6468, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "704:5:14", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 6469, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "710:9:14", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "704:15:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "668:51:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6481, + "nodeType": "IfStatement", + "src": "664:157:14", + "trueBody": { + "id": 6480, + "nodeType": "Block", + "src": "721:100:14", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6475, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 6472, + "name": "call", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6459, + "src": "759:4:14", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StaticCall_$6435_calldata_ptr", + "typeString": "struct StaticCall calldata" + } + }, + "id": 6473, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "764:8:14", + "memberName": "signedAt", + "nodeType": "MemberAccess", + "referencedDeclaration": 6432, + "src": "759:13:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 6474, + "name": "signatureLifetime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6448, + "src": "775:17:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "759:33:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 6476, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "794:5:14", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 6477, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "800:9:14", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "794:15:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6471, + "name": "SignatureExpired", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6443, + "src": "742:16:14", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$", + "typeString": "function (uint256,uint256) pure returns (error)" + } + }, + "id": 6478, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "742:68:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 6479, + "nodeType": "RevertStatement", + "src": "735:75:14" + } + ] + } + }, + { + "assignments": [ + 6483 + ], + "declarations": [ + { + "constant": false, + "id": 6483, + "mutability": "mutable", + "name": "hash", + "nameLocation": "838:4:14", + "nodeType": "VariableDeclaration", + "scope": 6530, + "src": "830:12:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6482, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "830:7:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 6498, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "expression": { + "id": 6488, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "868:4:14", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AuthenticatedStaticCaller_$6532", + "typeString": "contract AuthenticatedStaticCaller" + } + }, + "id": 6489, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "873:16:14", + "memberName": "signedStaticCall", + "nodeType": "MemberAccess", + "referencedDeclaration": 6531, + "src": "868:21:14", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_struct$_StaticCall_$6435_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (struct StaticCall memory) view external returns (bytes memory)" + } + }, + "id": 6490, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "890:8:14", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "868:30:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "arguments": [ + { + "expression": { + "id": 6493, + "name": "call", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6459, + "src": "908:4:14", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StaticCall_$6435_calldata_ptr", + "typeString": "struct StaticCall calldata" + } + }, + "id": 6494, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "913:8:14", + "memberName": "signedAt", + "nodeType": "MemberAccess", + "referencedDeclaration": 6432, + "src": "908:13:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6492, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "900:7:14", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 6491, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "900:7:14", + "typeDescriptions": {} + } + }, + "id": 6495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "900:22:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 6486, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "855:5:14", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 6485, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "855:5:14", + "typeDescriptions": {} + } + }, + "id": 6487, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "861:6:14", + "memberName": "concat", + "nodeType": "MemberAccess", + "src": "855:12:14", + "typeDescriptions": { + "typeIdentifier": "t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 6496, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "855:68:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 6484, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "845:9:14", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 6497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "845:79:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "830:94:14" + }, + { + "condition": { + "id": 6506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "938:56:14", + "subExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 6501, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6483, + "src": "972:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 6500, + "name": "replaySafeHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6628, + "src": "957:14:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32) view returns (bytes32)" + } + }, + "id": 6502, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "957:20:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 6503, + "name": "call", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6459, + "src": "979:4:14", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StaticCall_$6435_calldata_ptr", + "typeString": "struct StaticCall calldata" + } + }, + "id": 6504, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "984:9:14", + "memberName": "signature", + "nodeType": "MemberAccess", + "referencedDeclaration": 6434, + "src": "979:14:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 6499, + "name": "_isValidSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6725, + "src": "939:17:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_bool_$", + "typeString": "function (bytes32,bytes calldata) view returns (bool)" + } + }, + "id": 6505, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "939:55:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6511, + "nodeType": "IfStatement", + "src": "934:112:14", + "trueBody": { + "id": 6510, + "nodeType": "Block", + "src": "996:50:14", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6507, + "name": "InvalidSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6445, + "src": "1017:16:14", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" + } + }, + "id": 6508, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1017:18:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 6509, + "nodeType": "RevertStatement", + "src": "1010:25:14" + } + ] + } + }, + { + "assignments": [ + 6513, + 6515 + ], + "declarations": [ + { + "constant": false, + "id": 6513, + "mutability": "mutable", + "name": "success", + "nameLocation": "1061:7:14", + "nodeType": "VariableDeclaration", + "scope": 6530, + "src": "1056:12:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6512, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1056:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6515, + "mutability": "mutable", + "name": "result", + "nameLocation": "1083:6:14", + "nodeType": "VariableDeclaration", + "scope": 6530, + "src": "1070:19:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6514, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1070:5:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 6522, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 6519, + "name": "call", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6459, + "src": "1116:4:14", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StaticCall_$6435_calldata_ptr", + "typeString": "struct StaticCall calldata" + } + }, + "id": 6520, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1121:4:14", + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": 6430, + "src": "1116:9:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "expression": { + "expression": { + "id": 6516, + "name": "call", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6459, + "src": "1093:4:14", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StaticCall_$6435_calldata_ptr", + "typeString": "struct StaticCall calldata" + } + }, + "id": 6517, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1098:6:14", + "memberName": "target", + "nodeType": "MemberAccess", + "referencedDeclaration": 6428, + "src": "1093:11:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 6518, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1105:10:14", + "memberName": "staticcall", + "nodeType": "MemberAccess", + "src": "1093:22:14", + "typeDescriptions": { + "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) view returns (bool,bytes memory)" + } + }, + "id": 6521, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1093:33:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1055:71:14" + }, + { + "condition": { + "id": 6524, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1140:8:14", + "subExpression": { + "id": 6523, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6513, + "src": "1141:7:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6527, + "nodeType": "IfStatement", + "src": "1136:117:14", + "trueBody": { + "id": 6526, + "nodeType": "Block", + "src": "1150:103:14", + "statements": [ + { + "AST": { + "nativeSrc": "1173:70:14", + "nodeType": "YulBlock", + "src": "1173:70:14", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "1202:6:14", + "nodeType": "YulIdentifier", + "src": "1202:6:14" + }, + { + "kind": "number", + "nativeSrc": "1210:2:14", + "nodeType": "YulLiteral", + "src": "1210:2:14", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1198:3:14", + "nodeType": "YulIdentifier", + "src": "1198:3:14" + }, + "nativeSrc": "1198:15:14", + "nodeType": "YulFunctionCall", + "src": "1198:15:14" + }, + { + "arguments": [ + { + "name": "result", + "nativeSrc": "1221:6:14", + "nodeType": "YulIdentifier", + "src": "1221:6:14" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "1215:5:14", + "nodeType": "YulIdentifier", + "src": "1215:5:14" + }, + "nativeSrc": "1215:13:14", + "nodeType": "YulFunctionCall", + "src": "1215:13:14" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1191:6:14", + "nodeType": "YulIdentifier", + "src": "1191:6:14" + }, + "nativeSrc": "1191:38:14", + "nodeType": "YulFunctionCall", + "src": "1191:38:14" + }, + "nativeSrc": "1191:38:14", + "nodeType": "YulExpressionStatement", + "src": "1191:38:14" + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6515, + "isOffset": false, + "isSlot": false, + "src": "1202:6:14", + "valueSize": 1 + }, + { + "declaration": 6515, + "isOffset": false, + "isSlot": false, + "src": "1221:6:14", + "valueSize": 1 + } + ], + "id": 6525, + "nodeType": "InlineAssembly", + "src": "1164:79:14" + } + ] + } + }, + { + "expression": { + "id": 6528, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6515, + "src": "1269:6:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 6463, + "id": 6529, + "nodeType": "Return", + "src": "1262:13:14" + } + ] + }, + "functionSelector": "737bebdd", + "id": 6531, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "signedStaticCall", + "nameLocation": "574:16:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6460, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6459, + "mutability": "mutable", + "name": "call", + "nameLocation": "611:4:14", + "nodeType": "VariableDeclaration", + "scope": 6531, + "src": "591:24:14", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StaticCall_$6435_calldata_ptr", + "typeString": "struct StaticCall" + }, + "typeName": { + "id": 6458, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6457, + "name": "StaticCall", + "nameLocations": [ + "591:10:14" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6435, + "src": "591:10:14" + }, + "referencedDeclaration": 6435, + "src": "591:10:14", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StaticCall_$6435_storage_ptr", + "typeString": "struct StaticCall" + } + }, + "visibility": "internal" + } + ], + "src": "590:26:14" + }, + "returnParameters": { + "id": 6463, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6462, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6531, + "src": "640:12:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6461, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "640:5:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "639:14:14" + }, + "scope": 6532, + "src": "565:717:14", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 6533, + "src": "199:1085:14", + "usedErrors": [ + 6443, + 6445 + ], + "usedEvents": [] + } + ], + "src": "32:1253:14" + }, + "id": 14 + }, + "src/ERC1271.sol": { + "ast": { + "absolutePath": "src/ERC1271.sol", + "exportedSymbols": { + "ERC1271": [ + 6726 + ] + }, + "id": 6727, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6534, + "literals": [ + "solidity", + "^", + "0.8", + ".4" + ], + "nodeType": "PragmaDirective", + "src": "32:23:15" + }, + { + "abstract": true, + "baseContracts": [], + "canonicalName": "ERC1271", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 6535, + "nodeType": "StructuredDocumentation", + "src": "57:851:15", + "text": "@title ERC-1271\n @notice Abstract ERC-1271 implementation (based on Solady's) with guards to handle the same\n signer being used on multiple accounts.\n @dev To prevent the same signature from being validated on different accounts owned by the samer signer,\n we introduce an anti cross-account-replay layer: the original hash is input into a new EIP-712 compliant\n hash. The domain separator of this outer hash contains the chain id and address of this contract, so that\n it cannot be used on two accounts (see `replaySafeHash()` for the implementation details).\n @author Applied Blockchain (https://github.com/appliedblockchain/giano)\n @author Coinbase (https://github.com/coinbase/smart-wallet)\n @author Solady (https://github.com/vectorized/solady/blob/main/src/accounts/ERC1271.sol)" + }, + "fullyImplemented": false, + "id": 6726, + "linearizedBaseContracts": [ + 6726 + ], + "name": "ERC1271", + "nameLocation": "926:7:15", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "documentation": { + "id": 6536, + "nodeType": "StructuredDocumentation", + "src": "940:409:15", + "text": "@dev Precomputed `typeHash` used to produce EIP-712 compliant hash when applying the anti\n cross-account-replay layer.\n The original hash must either be:\n - An EIP-191 hash: keccak256(\"\\x19Ethereum Signed Message:\\n\" || len(someMessage) || someMessage)\n - An EIP-712 hash: keccak256(\"\\x19\\x01\" || someDomainSeparator || hashStruct(someStruct))" + }, + "id": 6541, + "mutability": "constant", + "name": "_MESSAGE_TYPEHASH", + "nameLocation": "1379:17:15", + "nodeType": "VariableDeclaration", + "scope": 6726, + "src": "1354:95:15", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6537, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1354:7:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "4769616e6f536d61727457616c6c65744d6573736167652862797465733332206861736829", + "id": 6539, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1409:39:15", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_37f248f492286ab572e2a1ee0bd5315f2aae54a08b5871b294d657f3a1f1d007", + "typeString": "literal_string \"GianoSmartWalletMessage(bytes32 hash)\"" + }, + "value": "GianoSmartWalletMessage(bytes32 hash)" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_37f248f492286ab572e2a1ee0bd5315f2aae54a08b5871b294d657f3a1f1d007", + "typeString": "literal_string \"GianoSmartWalletMessage(bytes32 hash)\"" + } + ], + "id": 6538, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "1399:9:15", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 6540, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1399:50:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "private" + }, + { + "body": { + "id": 6591, + "nodeType": "Block", + "src": "2491:267:15", + "statements": [ + { + "expression": { + "id": 6562, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6560, + "name": "fields", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6545, + "src": "2501:6:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "0f", + "id": 6561, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "hexString", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2510:7:15", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3d725c5ee53025f027da36bea8d3af3b6a3e9d2d1542d47c162631de48e66c1c", + "typeString": "literal_string hex\"0f\"" + }, + "value": "\u000f" + }, + "src": "2501:16:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "id": 6563, + "nodeType": "ExpressionStatement", + "src": "2501:16:15" + }, + { + "expression": { + "id": 6569, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "components": [ + { + "id": 6564, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6547, + "src": "2541:4:15", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "id": 6565, + "name": "version", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6549, + "src": "2547:7:15", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "id": 6566, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "2540:15:15", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_string_memory_ptr_$_t_string_memory_ptr_$", + "typeString": "tuple(string memory,string memory)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6567, + "name": "_domainNameAndVersion", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6715, + "src": "2558:21:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$_t_string_memory_ptr_$", + "typeString": "function () view returns (string memory,string memory)" + } + }, + "id": 6568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2558:23:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_string_memory_ptr_$_t_string_memory_ptr_$", + "typeString": "tuple(string memory,string memory)" + } + }, + "src": "2540:41:15", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6570, + "nodeType": "ExpressionStatement", + "src": "2540:41:15" + }, + { + "expression": { + "id": 6574, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6571, + "name": "chainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6551, + "src": "2591:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 6572, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "2601:5:15", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 6573, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2607:7:15", + "memberName": "chainid", + "nodeType": "MemberAccess", + "src": "2601:13:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2591:23:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6575, + "nodeType": "ExpressionStatement", + "src": "2591:23:15" + }, + { + "expression": { + "id": 6581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6576, + "name": "verifyingContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6553, + "src": "2624:17:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 6579, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "2652:4:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1271_$6726", + "typeString": "contract ERC1271" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC1271_$6726", + "typeString": "contract ERC1271" + } + ], + "id": 6578, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2644:7:15", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 6577, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2644:7:15", + "typeDescriptions": {} + } + }, + "id": 6580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2644:13:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2624:33:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 6582, + "nodeType": "ExpressionStatement", + "src": "2624:33:15" + }, + { + "expression": { + "id": 6585, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6583, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6555, + "src": "2667:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 6584, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6555, + "src": "2674:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "2667:11:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 6586, + "nodeType": "ExpressionStatement", + "src": "2667:11:15" + }, + { + "expression": { + "id": 6589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6587, + "name": "extensions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6558, + "src": "2705:10:15", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 6588, + "name": "extensions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6558, + "src": "2718:10:15", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "src": "2705:23:15", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 6590, + "nodeType": "ExpressionStatement", + "src": "2705:23:15" + } + ] + }, + "documentation": { + "id": 6542, + "nodeType": "StructuredDocumentation", + "src": "1456:700:15", + "text": "@notice Returns information about the `EIP712Domain` used to create EIP-712 compliant hashes.\n @dev Follows ERC-5267 (see https://eips.ethereum.org/EIPS/eip-5267).\n @return fields The bitmap of used fields.\n @return name The value of the `EIP712Domain.name` field.\n @return version The value of the `EIP712Domain.version` field.\n @return chainId The value of the `EIP712Domain.chainId` field.\n @return verifyingContract The value of the `EIP712Domain.verifyingContract` field.\n @return salt The value of the `EIP712Domain.salt` field.\n @return extensions The list of EIP numbers, that extends EIP-712 with new domain fields." + }, + "functionSelector": "84b0196e", + "id": 6592, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "eip712Domain", + "nameLocation": "2170:12:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6543, + "nodeType": "ParameterList", + "parameters": [], + "src": "2182:2:15" + }, + "returnParameters": { + "id": 6559, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6545, + "mutability": "mutable", + "name": "fields", + "nameLocation": "2268:6:15", + "nodeType": "VariableDeclaration", + "scope": 6592, + "src": "2261:13:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + "typeName": { + "id": 6544, + "name": "bytes1", + "nodeType": "ElementaryTypeName", + "src": "2261:6:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6547, + "mutability": "mutable", + "name": "name", + "nameLocation": "2302:4:15", + "nodeType": "VariableDeclaration", + "scope": 6592, + "src": "2288:18:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6546, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2288:6:15", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6549, + "mutability": "mutable", + "name": "version", + "nameLocation": "2334:7:15", + "nodeType": "VariableDeclaration", + "scope": 6592, + "src": "2320:21:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6548, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2320:6:15", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6551, + "mutability": "mutable", + "name": "chainId", + "nameLocation": "2363:7:15", + "nodeType": "VariableDeclaration", + "scope": 6592, + "src": "2355:15:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6550, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2355:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6553, + "mutability": "mutable", + "name": "verifyingContract", + "nameLocation": "2392:17:15", + "nodeType": "VariableDeclaration", + "scope": 6592, + "src": "2384:25:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6552, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2384:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6555, + "mutability": "mutable", + "name": "salt", + "nameLocation": "2431:4:15", + "nodeType": "VariableDeclaration", + "scope": 6592, + "src": "2423:12:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6554, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2423:7:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6558, + "mutability": "mutable", + "name": "extensions", + "nameLocation": "2466:10:15", + "nodeType": "VariableDeclaration", + "scope": 6592, + "src": "2449:27:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 6556, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2449:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6557, + "nodeType": "ArrayTypeName", + "src": "2449:9:15", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "2247:239:15" + }, + "scope": 6726, + "src": "2161:597:15", + "stateMutability": "view", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 6614, + "nodeType": "Block", + "src": "3501:229:15", + "statements": [ + { + "condition": { + "arguments": [ + { + "arguments": [ + { + "id": 6604, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6595, + "src": "3555:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 6603, + "name": "replaySafeHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6628, + "src": "3540:14:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32) view returns (bytes32)" + } + }, + "id": 6605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3540:20:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 6606, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6597, + "src": "3573:9:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 6602, + "name": "_isValidSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6725, + "src": "3515:17:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_bool_$", + "typeString": "function (bytes32,bytes calldata) view returns (bool)" + } + }, + "id": 6607, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [ + "3534:4:15", + "3562:9:15" + ], + "names": [ + "hash", + "signature" + ], + "nodeType": "FunctionCall", + "src": "3515:69:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6611, + "nodeType": "IfStatement", + "src": "3511:185:15", + "trueBody": { + "id": 6610, + "nodeType": "Block", + "src": "3586:110:15", + "statements": [ + { + "expression": { + "hexValue": "30783136323662613765", + "id": 6608, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3675:10:15", + "typeDescriptions": { + "typeIdentifier": "t_rational_371636862_by_1", + "typeString": "int_const 371636862" + }, + "value": "0x1626ba7e" + }, + "functionReturnParameters": 6601, + "id": 6609, + "nodeType": "Return", + "src": "3668:17:15" + } + ] + } + }, + { + "expression": { + "hexValue": "30786666666666666666", + "id": 6612, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3713:10:15", + "typeDescriptions": { + "typeIdentifier": "t_rational_4294967295_by_1", + "typeString": "int_const 4294967295" + }, + "value": "0xffffffff" + }, + "functionReturnParameters": 6601, + "id": 6613, + "nodeType": "Return", + "src": "3706:17:15" + } + ] + }, + "documentation": { + "id": 6593, + "nodeType": "StructuredDocumentation", + "src": "2764:622:15", + "text": "@notice Validates the `signature` against the given `hash`.\n @dev This implementation follows ERC-1271. See https://eips.ethereum.org/EIPS/eip-1271.\n @dev IMPORTANT: Signature verification is performed on the hash produced AFTER applying the anti\n cross-account-replay layer on the given `hash` (i.e., verification is run on the replay-safe\n hash version).\n @param hash The original hash.\n @param signature The signature of the replay-safe hash to validate.\n @return result `0x1626ba7e` if validation succeeded, else `0xffffffff`." + }, + "functionSelector": "1626ba7e", + "id": 6615, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isValidSignature", + "nameLocation": "3400:16:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6598, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6595, + "mutability": "mutable", + "name": "hash", + "nameLocation": "3425:4:15", + "nodeType": "VariableDeclaration", + "scope": 6615, + "src": "3417:12:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6594, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3417:7:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6597, + "mutability": "mutable", + "name": "signature", + "nameLocation": "3446:9:15", + "nodeType": "VariableDeclaration", + "scope": 6615, + "src": "3431:24:15", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6596, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3431:5:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3416:40:15" + }, + "returnParameters": { + "id": 6601, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6600, + "mutability": "mutable", + "name": "result", + "nameLocation": "3493:6:15", + "nodeType": "VariableDeclaration", + "scope": 6615, + "src": "3486:13:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 6599, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "3486:6:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "3485:15:15" + }, + "scope": 6726, + "src": "3391:339:15", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 6627, + "nodeType": "Block", + "src": "4282:41:15", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 6624, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6618, + "src": "4311:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 6623, + "name": "_eip712Hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6690, + "src": "4299:11:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32) view returns (bytes32)" + } + }, + "id": 6625, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4299:17:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 6622, + "id": 6626, + "nodeType": "Return", + "src": "4292:24:15" + } + ] + }, + "documentation": { + "id": 6616, + "nodeType": "StructuredDocumentation", + "src": "3736:465:15", + "text": "@notice Wrapper around `_eip712Hash()` to produce a replay-safe hash fron the given `hash`.\n @dev The returned EIP-712 compliant replay-safe hash is the result of:\n keccak256(\n \\x19\\x01 ||\n this.domainSeparator ||\n hashStruct(GianoSmartWalletMessage({ hash: `hash`}))\n )\n @param hash The original hash.\n @return The corresponding replay-safe hash." + }, + "functionSelector": "ce1506be", + "id": 6628, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "replaySafeHash", + "nameLocation": "4215:14:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6619, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6618, + "mutability": "mutable", + "name": "hash", + "nameLocation": "4238:4:15", + "nodeType": "VariableDeclaration", + "scope": 6628, + "src": "4230:12:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6617, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4230:7:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4229:14:15" + }, + "returnParameters": { + "id": 6622, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6621, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6628, + "src": "4273:7:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6620, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4273:7:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4272:9:15" + }, + "scope": 6726, + "src": "4206:117:15", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 6668, + "nodeType": "Block", + "src": "4698:418:15", + "statements": [ + { + "assignments": [ + 6635, + 6637 + ], + "declarations": [ + { + "constant": false, + "id": 6635, + "mutability": "mutable", + "name": "name", + "nameLocation": "4723:4:15", + "nodeType": "VariableDeclaration", + "scope": 6668, + "src": "4709:18:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6634, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4709:6:15", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6637, + "mutability": "mutable", + "name": "version", + "nameLocation": "4743:7:15", + "nodeType": "VariableDeclaration", + "scope": 6668, + "src": "4729:21:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6636, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4729:6:15", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "id": 6640, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6638, + "name": "_domainNameAndVersion", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6715, + "src": "4754:21:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$_t_string_memory_ptr_$", + "typeString": "function () view returns (string memory,string memory)" + } + }, + "id": 6639, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4754:23:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_string_memory_ptr_$_t_string_memory_ptr_$", + "typeString": "tuple(string memory,string memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4708:69:15" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "hexValue": "454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429", + "id": 6645, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4855:84:15", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f", + "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"" + }, + "value": "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f", + "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"" + } + ], + "id": 6644, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "4845:9:15", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 6646, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4845:95:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "id": 6650, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6635, + "src": "4974:4:15", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 6649, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4968:5:15", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 6648, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4968:5:15", + "typeDescriptions": {} + } + }, + "id": 6651, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4968:11:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 6647, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "4958:9:15", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 6652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4958:22:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "id": 6656, + "name": "version", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6637, + "src": "5014:7:15", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 6655, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5008:5:15", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 6654, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5008:5:15", + "typeDescriptions": {} + } + }, + "id": 6657, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5008:14:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 6653, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "4998:9:15", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 6658, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4998:25:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 6659, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "5041:5:15", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 6660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5047:7:15", + "memberName": "chainid", + "nodeType": "MemberAccess", + "src": "5041:13:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 6663, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "5080:4:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1271_$6726", + "typeString": "contract ERC1271" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC1271_$6726", + "typeString": "contract ERC1271" + } + ], + "id": 6662, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5072:7:15", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 6661, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5072:7:15", + "typeDescriptions": {} + } + }, + "id": 6664, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5072:13:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 6642, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "4817:3:15", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 6643, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4821:6:15", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "4817:10:15", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 6665, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4817:282:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 6641, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "4794:9:15", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 6666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4794:315:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 6633, + "id": 6667, + "nodeType": "Return", + "src": "4787:322:15" + } + ] + }, + "documentation": { + "id": 6629, + "nodeType": "StructuredDocumentation", + "src": "4329:307:15", + "text": "@notice Returns the `domainSeparator` used to create EIP-712 compliant hashes.\n @dev Implements domainSeparator = hashStruct(eip712Domain).\n See https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator.\n @return The 32 bytes domain separator result." + }, + "functionSelector": "f698da25", + "id": 6669, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "domainSeparator", + "nameLocation": "4650:15:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6630, + "nodeType": "ParameterList", + "parameters": [], + "src": "4665:2:15" + }, + "returnParameters": { + "id": 6633, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6632, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6669, + "src": "4689:7:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6631, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4689:7:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4688:9:15" + }, + "scope": 6726, + "src": "4641:475:15", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 6689, + "nodeType": "Block", + "src": "5665:101:15", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "1901", + "id": 6680, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5709:10:15", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541", + "typeString": "literal_string hex\"1901\"" + }, + "value": "\u0019\u0001" + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6681, + "name": "domainSeparator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6669, + "src": "5721:15:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$", + "typeString": "function () view returns (bytes32)" + } + }, + "id": 6682, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5721:17:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "id": 6684, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6672, + "src": "5752:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 6683, + "name": "_hashStruct", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6707, + "src": "5740:11:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32) view returns (bytes32)" + } + }, + "id": 6685, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5740:17:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541", + "typeString": "literal_string hex\"1901\"" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 6678, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "5692:3:15", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 6679, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "5696:12:15", + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "5692:16:15", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 6686, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5692:66:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 6677, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "5682:9:15", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 6687, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5682:77:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 6676, + "id": 6688, + "nodeType": "Return", + "src": "5675:84:15" + } + ] + }, + "documentation": { + "id": 6670, + "nodeType": "StructuredDocumentation", + "src": "5546:39:15", + "text": "@return The resulting EIP-712 hash." + }, + "id": 6690, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_eip712Hash", + "nameLocation": "5599:11:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6673, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6672, + "mutability": "mutable", + "name": "hash", + "nameLocation": "5619:4:15", + "nodeType": "VariableDeclaration", + "scope": 6690, + "src": "5611:12:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6671, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5611:7:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5610:14:15" + }, + "returnParameters": { + "id": 6676, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6675, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6690, + "src": "5656:7:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6674, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5656:7:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5655:9:15" + }, + "scope": 6726, + "src": "5590:176:15", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 6706, + "nodeType": "Block", + "src": "6284:70:15", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 6701, + "name": "_MESSAGE_TYPEHASH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6541, + "src": "6322:17:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 6702, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6693, + "src": "6341:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 6699, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "6311:3:15", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 6700, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6315:6:15", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "6311:10:15", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 6703, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6311:35:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 6698, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "6301:9:15", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 6704, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6301:46:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 6697, + "id": 6705, + "nodeType": "Return", + "src": "6294:53:15" + } + ] + }, + "documentation": { + "id": 6691, + "nodeType": "StructuredDocumentation", + "src": "5772:432:15", + "text": "@notice Returns the EIP-712 `hashStruct` result of the `GianoSmartWalletMessage(bytes32 hash)` data\n structure.\n @dev Implements hashStruct(s : 𝕊) = keccak256(typeHash || encodeData(s)).\n @dev See https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct.\n @param hash The `GianoSmartWalletMessage.hash` field.\n @return The EIP-712 `hashStruct` result." + }, + "id": 6707, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_hashStruct", + "nameLocation": "6218:11:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6694, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6693, + "mutability": "mutable", + "name": "hash", + "nameLocation": "6238:4:15", + "nodeType": "VariableDeclaration", + "scope": 6707, + "src": "6230:12:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6692, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6230:7:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "6229:14:15" + }, + "returnParameters": { + "id": 6697, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6696, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6707, + "src": "6275:7:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6695, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6275:7:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "6274:9:15" + }, + "scope": 6726, + "src": "6209:145:15", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "documentation": { + "id": 6708, + "nodeType": "StructuredDocumentation", + "src": "6360:295:15", + "text": "@notice Returns the domain name and version to use when creating EIP-712 signatures.\n @dev MUST be defined by the implementation.\n @return name The user readable name of signing domain.\n @return version The current major version of the signing domain." + }, + "id": 6715, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "_domainNameAndVersion", + "nameLocation": "6669:21:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6709, + "nodeType": "ParameterList", + "parameters": [], + "src": "6690:2:15" + }, + "returnParameters": { + "id": 6714, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6711, + "mutability": "mutable", + "name": "name", + "nameLocation": "6738:4:15", + "nodeType": "VariableDeclaration", + "scope": 6715, + "src": "6724:18:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6710, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "6724:6:15", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6713, + "mutability": "mutable", + "name": "version", + "nameLocation": "6758:7:15", + "nodeType": "VariableDeclaration", + "scope": 6715, + "src": "6744:21:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6712, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "6744:6:15", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "6723:43:15" + }, + "scope": 6726, + "src": "6660:107:15", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "documentation": { + "id": 6716, + "nodeType": "StructuredDocumentation", + "src": "6773:339:15", + "text": "@notice Validates the `signature` against the given `hash`.\n @dev MUST be defined by the implementation.\n @param hash The hash whose signature has been performed on.\n @param signature The signature associated with `hash`.\n @return `true` is the signature is valid, else `false`." + }, + "id": 6725, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "_isValidSignature", + "nameLocation": "7126:17:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6721, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6718, + "mutability": "mutable", + "name": "hash", + "nameLocation": "7152:4:15", + "nodeType": "VariableDeclaration", + "scope": 6725, + "src": "7144:12:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6717, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7144:7:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6720, + "mutability": "mutable", + "name": "signature", + "nameLocation": "7173:9:15", + "nodeType": "VariableDeclaration", + "scope": 6725, + "src": "7158:24:15", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6719, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7158:5:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "7143:40:15" + }, + "returnParameters": { + "id": 6724, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6723, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6725, + "src": "7215:4:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6722, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7215:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "7214:6:15" + }, + "scope": 6726, + "src": "7117:104:15", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 6727, + "src": "908:6315:15", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "32:7192:15" + }, + "id": 15 + }, + "src/GianoSmartWallet.sol": { + "ast": { + "absolutePath": "src/GianoSmartWallet.sol", + "exportedSymbols": { + "AuthenticatedStaticCaller": [ + 6532 + ], + "ERC1271": [ + 6726 + ], + "GianoSmartWallet": [ + 7398 + ], + "IAccount": [ + 552 + ], + "MultiOwnable": [ + 8101 + ], + "PackedUserOperation": [ + 574 + ], + "Receiver": [ + 2459 + ], + "SignatureCheckerLib": [ + 6365 + ], + "UUPSUpgradeable": [ + 6422 + ], + "UserOperationLib": [ + 535 + ], + "WebAuthn": [ + 8478 + ] + }, + "id": 7399, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6728, + "literals": [ + "solidity", + "0.8", + ".28" + ], + "nodeType": "PragmaDirective", + "src": "32:23:16" + }, + { + "absolutePath": "@account-abstraction/contracts/interfaces/IAccount.sol", + "file": "@account-abstraction/contracts/interfaces/IAccount.sol", + "id": 6730, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7399, + "sourceUnit": 553, + "src": "57:80:16", + "symbolAliases": [ + { + "foreign": { + "id": 6729, + "name": "IAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 552, + "src": "65:8:16", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@account-abstraction/contracts/interfaces/PackedUserOperation.sol", + "file": "@account-abstraction/contracts/interfaces/PackedUserOperation.sol", + "id": 6732, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7399, + "sourceUnit": 575, + "src": "139:102:16", + "symbolAliases": [ + { + "foreign": { + "id": 6731, + "name": "PackedUserOperation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 574, + "src": "147:19:16", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@account-abstraction/contracts/core/UserOperationLib.sol", + "file": "@account-abstraction/contracts/core/UserOperationLib.sol", + "id": 6734, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7399, + "sourceUnit": 536, + "src": "242:90:16", + "symbolAliases": [ + { + "foreign": { + "id": 6733, + "name": "UserOperationLib", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 535, + "src": "250:16:16", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "solady/accounts/Receiver.sol", + "file": "solady/accounts/Receiver.sol", + "id": 6736, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7399, + "sourceUnit": 2460, + "src": "333:54:16", + "symbolAliases": [ + { + "foreign": { + "id": 6735, + "name": "Receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2459, + "src": "341:8:16", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "solady/utils/SignatureCheckerLib.sol", + "file": "solady/utils/SignatureCheckerLib.sol", + "id": 6738, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7399, + "sourceUnit": 6366, + "src": "388:73:16", + "symbolAliases": [ + { + "foreign": { + "id": 6737, + "name": "SignatureCheckerLib", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6365, + "src": "396:19:16", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "solady/utils/UUPSUpgradeable.sol", + "file": "solady/utils/UUPSUpgradeable.sol", + "id": 6740, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7399, + "sourceUnit": 6423, + "src": "462:65:16", + "symbolAliases": [ + { + "foreign": { + "id": 6739, + "name": "UUPSUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6422, + "src": "470:15:16", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "webauthn-sol/WebAuthn.sol", + "file": "webauthn-sol/WebAuthn.sol", + "id": 6742, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7399, + "sourceUnit": 8479, + "src": "528:51:16", + "symbolAliases": [ + { + "foreign": { + "id": 6741, + "name": "WebAuthn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8478, + "src": "536:8:16", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/AuthenticatedStaticCaller.sol", + "file": "./AuthenticatedStaticCaller.sol", + "id": 6744, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7399, + "sourceUnit": 6533, + "src": "580:74:16", + "symbolAliases": [ + { + "foreign": { + "id": 6743, + "name": "AuthenticatedStaticCaller", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6532, + "src": "588:25:16", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/ERC1271.sol", + "file": "./ERC1271.sol", + "id": 6746, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7399, + "sourceUnit": 6727, + "src": "656:38:16", + "symbolAliases": [ + { + "foreign": { + "id": 6745, + "name": "ERC1271", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6726, + "src": "664:7:16", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/MultiOwnable.sol", + "file": "./MultiOwnable.sol", + "id": 6748, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7399, + "sourceUnit": 8102, + "src": "695:48:16", + "symbolAliases": [ + { + "foreign": { + "id": 6747, + "name": "MultiOwnable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8101, + "src": "703:12:16", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 6750, + "name": "ERC1271", + "nameLocations": [ + "1224:7:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6726, + "src": "1224:7:16" + }, + "id": 6751, + "nodeType": "InheritanceSpecifier", + "src": "1224:7:16" + }, + { + "baseName": { + "id": 6752, + "name": "IAccount", + "nameLocations": [ + "1233:8:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 552, + "src": "1233:8:16" + }, + "id": 6753, + "nodeType": "InheritanceSpecifier", + "src": "1233:8:16" + }, + { + "baseName": { + "id": 6754, + "name": "MultiOwnable", + "nameLocations": [ + "1243:12:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 8101, + "src": "1243:12:16" + }, + "id": 6755, + "nodeType": "InheritanceSpecifier", + "src": "1243:12:16" + }, + { + "baseName": { + "id": 6756, + "name": "UUPSUpgradeable", + "nameLocations": [ + "1257:15:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6422, + "src": "1257:15:16" + }, + "id": 6757, + "nodeType": "InheritanceSpecifier", + "src": "1257:15:16" + }, + { + "baseName": { + "id": 6758, + "name": "Receiver", + "nameLocations": [ + "1274:8:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2459, + "src": "1274:8:16" + }, + "id": 6759, + "nodeType": "InheritanceSpecifier", + "src": "1274:8:16" + }, + { + "baseName": { + "id": 6760, + "name": "AuthenticatedStaticCaller", + "nameLocations": [ + "1284:25:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6532, + "src": "1284:25:16" + }, + "id": 6761, + "nodeType": "InheritanceSpecifier", + "src": "1284:25:16" + } + ], + "canonicalName": "GianoSmartWallet", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 6749, + "nodeType": "StructuredDocumentation", + "src": "745:450:16", + "text": "@title Giano Smart Wallet\n @notice ERC-4337-compatible smart account, based on Solady's ERC4337 account implementation\n with inspiration from Alchemy's LightAccount and Daimo's DaimoAccount.\n @author Applied Blockchain (https://github.com/appliedblockchain/giano)\n @author Coinbase (https://github.com/coinbase/smart-wallet)\n @author Solady (https://github.com/vectorized/solady/blob/main/src/accounts/ERC4337.sol)" + }, + "fullyImplemented": true, + "id": 7398, + "internalFunctionIDs": { + "6421": 1 + }, + "linearizedBaseContracts": [ + 7398, + 6532, + 2459, + 6422, + 2583, + 8101, + 552, + 6726 + ], + "name": "GianoSmartWallet", + "nameLocation": "1204:16:16", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "GianoSmartWallet.SignatureWrapper", + "documentation": { + "id": 6762, + "nodeType": "StructuredDocumentation", + "src": "1316:126:16", + "text": "@notice A wrapper struct used for signature validation so that callers\n can identify the owner that signed." + }, + "id": 6769, + "members": [ + { + "constant": false, + "id": 6765, + "mutability": "mutable", + "name": "ownerBytes", + "nameLocation": "1599:10:16", + "nodeType": "VariableDeclaration", + "scope": 6769, + "src": "1593:16:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6764, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1593:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6768, + "mutability": "mutable", + "name": "signatureData", + "nameLocation": "1818:13:16", + "nodeType": "VariableDeclaration", + "scope": 6769, + "src": "1812:19:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6767, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1812:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "name": "SignatureWrapper", + "nameLocation": "1454:16:16", + "nodeType": "StructDefinition", + "scope": 7398, + "src": "1447:391:16", + "visibility": "public" + }, + { + "canonicalName": "GianoSmartWallet.Call", + "documentation": { + "id": 6770, + "nodeType": "StructuredDocumentation", + "src": "1844:38:16", + "text": "@notice Represents a call to make." + }, + "id": 6780, + "members": [ + { + "constant": false, + "id": 6773, + "mutability": "mutable", + "name": "target", + "nameLocation": "1955:6:16", + "nodeType": "VariableDeclaration", + "scope": 6780, + "src": "1947:14:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6772, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1947:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6776, + "mutability": "mutable", + "name": "value", + "nameLocation": "2036:5:16", + "nodeType": "VariableDeclaration", + "scope": 6780, + "src": "2028:13:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6775, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2028:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6779, + "mutability": "mutable", + "name": "data", + "nameLocation": "2096:4:16", + "nodeType": "VariableDeclaration", + "scope": 6780, + "src": "2090:10:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6778, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2090:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "name": "Call", + "nameLocation": "1894:4:16", + "nodeType": "StructDefinition", + "scope": 7398, + "src": "1887:220:16", + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 6781, + "nodeType": "StructuredDocumentation", + "src": "2113:495:16", + "text": "@notice Reserved nonce key (upper 192 bits of `UserOperation.nonce`) for cross-chain replayable\n transactions.\n @dev MUST BE the `UserOperation.nonce` key when `UserOperation.calldata` is calling\n `executeWithoutChainIdValidation`and MUST NOT BE `UserOperation.nonce` key when `UserOperation.calldata` is\n NOT calling `executeWithoutChainIdValidation`.\n @dev Helps enforce sequential sequencing of replayable transactions." + }, + "functionSelector": "88ce4c7c", + "id": 6784, + "mutability": "constant", + "name": "REPLAYABLE_NONCE_KEY", + "nameLocation": "2637:20:16", + "nodeType": "VariableDeclaration", + "scope": 7398, + "src": "2613:51:16", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6782, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2613:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "38343533", + "id": 6783, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2660:4:16", + "typeDescriptions": { + "typeIdentifier": "t_rational_8453_by_1", + "typeString": "int_const 8453" + }, + "value": "8453" + }, + "visibility": "public" + }, + { + "documentation": { + "id": 6785, + "nodeType": "StructuredDocumentation", + "src": "2671:98:16", + "text": "@notice Thrown when `initialize` is called but the account already has had at least one owner." + }, + "errorSelector": "5daa87a0", + "id": 6787, + "name": "Initialized", + "nameLocation": "2780:11:16", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6786, + "nodeType": "ParameterList", + "parameters": [], + "src": "2791:2:16" + }, + "src": "2774:20:16" + }, + { + "documentation": { + "id": 6788, + "nodeType": "StructuredDocumentation", + "src": "2800:201:16", + "text": "@notice Thrown when a call is passed to `executeWithoutChainIdValidation` that is not allowed by\n `canSkipChainIdValidation`\n @param selector The selector of the call." + }, + "errorSelector": "3b06e146", + "id": 6792, + "name": "SelectorNotAllowed", + "nameLocation": "3012:18:16", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6791, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6790, + "mutability": "mutable", + "name": "selector", + "nameLocation": "3038:8:16", + "nodeType": "VariableDeclaration", + "scope": 6792, + "src": "3031:15:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 6789, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "3031:6:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "3030:17:16" + }, + "src": "3006:42:16" + }, + { + "documentation": { + "id": 6793, + "nodeType": "StructuredDocumentation", + "src": "3054:374:16", + "text": "@notice Thrown in validateUserOp if the key of `UserOperation.nonce` does not match the calldata.\n @dev Calls to `this.executeWithoutChainIdValidation` MUST use `REPLAYABLE_NONCE_KEY` and\n calls NOT to `this.executeWithoutChainIdValidation` MUST NOT use `REPLAYABLE_NONCE_KEY`.\n @param key The invalid `UserOperation.nonce` key." + }, + "errorSelector": "2ef37813", + "id": 6797, + "name": "InvalidNonceKey", + "nameLocation": "3439:15:16", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6796, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6795, + "mutability": "mutable", + "name": "key", + "nameLocation": "3463:3:16", + "nodeType": "VariableDeclaration", + "scope": 6797, + "src": "3455:11:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6794, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3455:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3454:13:16" + }, + "src": "3433:35:16" + }, + { + "documentation": { + "id": 6798, + "nodeType": "StructuredDocumentation", + "src": "3474:179:16", + "text": "@notice Thrown when an upgrade is attempted to an implementation that does not exist.\n @param implementation The address of the implementation that has no code." + }, + "errorSelector": "0c760937", + "id": 6802, + "name": "InvalidImplementation", + "nameLocation": "3664:21:16", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6801, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6800, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "3694:14:16", + "nodeType": "VariableDeclaration", + "scope": 6802, + "src": "3686:22:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6799, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3686:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3685:24:16" + }, + "src": "3658:52:16" + }, + { + "body": { + "id": 6816, + "nodeType": "Block", + "src": "3811:106:16", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 6809, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 6805, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "3825:3:16", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 6806, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3829:6:16", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "3825:10:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6807, + "name": "entryPoint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7148, + "src": "3839:10:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 6808, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3839:12:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3825:26:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6814, + "nodeType": "IfStatement", + "src": "3821:78:16", + "trueBody": { + "id": 6813, + "nodeType": "Block", + "src": "3853:46:16", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6810, + "name": "Unauthorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7593, + "src": "3874:12:16", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" + } + }, + "id": 6811, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3874:14:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 6812, + "nodeType": "RevertStatement", + "src": "3867:21:16" + } + ] + } + }, + { + "id": 6815, + "nodeType": "PlaceholderStatement", + "src": "3909:1:16" + } + ] + }, + "documentation": { + "id": 6803, + "nodeType": "StructuredDocumentation", + "src": "3716:56:16", + "text": "@notice Reverts if the caller is not the EntryPoint." + }, + "id": 6817, + "name": "onlyEntryPoint", + "nameLocation": "3786:14:16", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 6804, + "nodeType": "ParameterList", + "parameters": [], + "src": "3800:2:16" + }, + "src": "3777:140:16", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 6831, + "nodeType": "Block", + "src": "4064:98:16", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 6824, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 6820, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4078:3:16", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 6821, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4082:6:16", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "4078:10:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6822, + "name": "entryPoint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7148, + "src": "4092:10:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 6823, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4092:12:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4078:26:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6829, + "nodeType": "IfStatement", + "src": "4074:70:16", + "trueBody": { + "id": 6828, + "nodeType": "Block", + "src": "4106:38:16", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6825, + "name": "_checkOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8091, + "src": "4120:11:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$__$", + "typeString": "function () view" + } + }, + "id": 6826, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4120:13:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6827, + "nodeType": "ExpressionStatement", + "src": "4120:13:16" + } + ] + } + }, + { + "id": 6830, + "nodeType": "PlaceholderStatement", + "src": "4154:1:16" + } + ] + }, + "documentation": { + "id": 6818, + "nodeType": "StructuredDocumentation", + "src": "3923:95:16", + "text": "@notice Reverts if the caller is neither the EntryPoint, the owner, nor the account itself." + }, + "id": 6832, + "name": "onlyEntryPointOrOwner", + "nameLocation": "4032:21:16", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 6819, + "nodeType": "ParameterList", + "parameters": [], + "src": "4053:2:16" + }, + "src": "4023:139:16", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 6839, + "nodeType": "Block", + "src": "4823:303:16", + "statements": [ + { + "id": 6837, + "nodeType": "PlaceholderStatement", + "src": "4833:1:16" + }, + { + "AST": { + "nativeSrc": "4870:250:16", + "nodeType": "YulBlock", + "src": "4870:250:16", + "statements": [ + { + "body": { + "nativeSrc": "4907:203:16", + "nodeType": "YulBlock", + "src": "4907:203:16", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "5022:3:16", + "nodeType": "YulIdentifier", + "src": "5022:3:16" + }, + "nativeSrc": "5022:5:16", + "nodeType": "YulFunctionCall", + "src": "5022:5:16" + }, + { + "arguments": [], + "functionName": { + "name": "caller", + "nativeSrc": "5029:6:16", + "nodeType": "YulIdentifier", + "src": "5029:6:16" + }, + "nativeSrc": "5029:8:16", + "nodeType": "YulFunctionCall", + "src": "5029:8:16" + }, + { + "name": "missingAccountFunds", + "nativeSrc": "5039:19:16", + "nodeType": "YulIdentifier", + "src": "5039:19:16" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "5060:8:16", + "nodeType": "YulIdentifier", + "src": "5060:8:16" + }, + "nativeSrc": "5060:10:16", + "nodeType": "YulFunctionCall", + "src": "5060:10:16" + }, + { + "kind": "number", + "nativeSrc": "5072:4:16", + "nodeType": "YulLiteral", + "src": "5072:4:16", + "type": "", + "value": "0x00" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "5078:8:16", + "nodeType": "YulIdentifier", + "src": "5078:8:16" + }, + "nativeSrc": "5078:10:16", + "nodeType": "YulFunctionCall", + "src": "5078:10:16" + }, + { + "kind": "number", + "nativeSrc": "5090:4:16", + "nodeType": "YulLiteral", + "src": "5090:4:16", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "call", + "nativeSrc": "5017:4:16", + "nodeType": "YulIdentifier", + "src": "5017:4:16" + }, + "nativeSrc": "5017:78:16", + "nodeType": "YulFunctionCall", + "src": "5017:78:16" + } + ], + "functionName": { + "name": "pop", + "nativeSrc": "5013:3:16", + "nodeType": "YulIdentifier", + "src": "5013:3:16" + }, + "nativeSrc": "5013:83:16", + "nodeType": "YulFunctionCall", + "src": "5013:83:16" + }, + "nativeSrc": "5013:83:16", + "nodeType": "YulExpressionStatement", + "src": "5013:83:16" + } + ] + }, + "condition": { + "name": "missingAccountFunds", + "nativeSrc": "4887:19:16", + "nodeType": "YulIdentifier", + "src": "4887:19:16" + }, + "nativeSrc": "4884:226:16", + "nodeType": "YulIf", + "src": "4884:226:16" + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6835, + "isOffset": false, + "isSlot": false, + "src": "4887:19:16", + "valueSize": 1 + }, + { + "declaration": 6835, + "isOffset": false, + "isSlot": false, + "src": "5039:19:16", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 6838, + "nodeType": "InlineAssembly", + "src": "4845:275:16" + } + ] + }, + "documentation": { + "id": 6833, + "nodeType": "StructuredDocumentation", + "src": "4168:593:16", + "text": "@notice Sends to the EntryPoint (i.e. `msg.sender`) the missing funds for this transaction.\n @dev Subclass MAY override this modifier for better funds management (e.g. send to the\n EntryPoint more than the minimum required, so that in future transactions it will not\n be required to send again).\n @param missingAccountFunds The minimum value this modifier should send the EntryPoint which\n MAY be zero, in case there is enough deposit, or the userOp has a\n paymaster." + }, + "id": 6840, + "name": "payPrefund", + "nameLocation": "4775:10:16", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 6836, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6835, + "mutability": "mutable", + "name": "missingAccountFunds", + "nameLocation": "4794:19:16", + "nodeType": "VariableDeclaration", + "scope": 6840, + "src": "4786:27:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6834, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4786:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4785:29:16" + }, + "src": "4766:360:16", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 6870, + "nodeType": "Block", + "src": "5146:243:16", + "statements": [ + { + "assignments": [ + 6847 + ], + "declarations": [ + { + "constant": false, + "id": 6847, + "mutability": "mutable", + "name": "owners", + "nameLocation": "5280:6:16", + "nodeType": "VariableDeclaration", + "scope": 6870, + "src": "5265:21:16", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 6845, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5265:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 6846, + "nodeType": "ArrayTypeName", + "src": "5265:7:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + } + ], + "id": 6853, + "initialValue": { + "arguments": [ + { + "hexValue": "31", + "id": 6851, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5301:1:16", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "id": 6850, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "5289:11:16", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (bytes memory[] memory)" + }, + "typeName": { + "baseType": { + "id": 6848, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5293:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 6849, + "nodeType": "ArrayTypeName", + "src": "5293:7:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + } + }, + "id": 6852, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5289:14:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5265:38:16" + }, + { + "expression": { + "id": 6864, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 6854, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6847, + "src": "5313:6:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + "id": 6856, + "indexExpression": { + "hexValue": "30", + "id": 6855, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5320:1:16", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5313:9:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 6861, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5344:1:16", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 6860, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5336:7:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 6859, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5336:7:16", + "typeDescriptions": {} + } + }, + "id": 6862, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5336:10:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 6857, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "5325:3:16", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 6858, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "5329:6:16", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "5325:10:16", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 6863, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5325:22:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "src": "5313:34:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 6865, + "nodeType": "ExpressionStatement", + "src": "5313:34:16" + }, + { + "expression": { + "arguments": [ + { + "id": 6867, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6847, + "src": "5375:6:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + ], + "id": 6866, + "name": "_initializeOwners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7956, + "src": "5357:17:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$__$", + "typeString": "function (bytes memory[] memory)" + } + }, + "id": 6868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5357:25:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6869, + "nodeType": "ExpressionStatement", + "src": "5357:25:16" + } + ] + }, + "id": 6871, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6841, + "nodeType": "ParameterList", + "parameters": [], + "src": "5143:2:16" + }, + "returnParameters": { + "id": 6842, + "nodeType": "ParameterList", + "parameters": [], + "src": "5146:0:16" + }, + "scope": 7398, + "src": "5132:257:16", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 6891, + "nodeType": "Block", + "src": "5856:124:16", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6881, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6878, + "name": "nextOwnerIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7830, + "src": "5870:14:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 6879, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5870:16:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 6880, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5890:1:16", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5870:21:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6886, + "nodeType": "IfStatement", + "src": "5866:72:16", + "trueBody": { + "id": 6885, + "nodeType": "Block", + "src": "5893:45:16", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6882, + "name": "Initialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6787, + "src": "5914:11:16", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" + } + }, + "id": 6883, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5914:13:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 6884, + "nodeType": "RevertStatement", + "src": "5907:20:16" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 6888, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6875, + "src": "5966:6:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + ], + "id": 6887, + "name": "_initializeOwners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7956, + "src": "5948:17:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$__$", + "typeString": "function (bytes memory[] memory)" + } + }, + "id": 6889, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5948:25:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6890, + "nodeType": "ExpressionStatement", + "src": "5948:25:16" + } + ] + }, + "documentation": { + "id": 6872, + "nodeType": "StructuredDocumentation", + "src": "5395:386:16", + "text": "@notice Initializes the account with the `owners`.\n @dev Reverts if the account has had at least one owner, i.e. has been initialized.\n @param owners Array of initial owners for this account. Each item should be\n an ABI encoded Ethereum address, i.e. 32 bytes with 12 leading 0 bytes,\n or a 64 byte public key." + }, + "functionSelector": "6f2de70e", + "id": 6892, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initialize", + "nameLocation": "5795:10:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6876, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6875, + "mutability": "mutable", + "name": "owners", + "nameLocation": "5823:6:16", + "nodeType": "VariableDeclaration", + "scope": 6892, + "src": "5806:23:16", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 6873, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5806:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 6874, + "nodeType": "ArrayTypeName", + "src": "5806:7:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + } + ], + "src": "5805:25:16" + }, + "returnParameters": { + "id": 6877, + "nodeType": "ParameterList", + "parameters": [], + "src": "5856:0:16" + }, + "scope": 7398, + "src": "5786:194:16", + "stateMutability": "payable", + "virtual": true, + "visibility": "external" + }, + { + "baseFunctions": [ + 551 + ], + "body": { + "id": 7027, + "nodeType": "Block", + "src": "7522:1461:16", + "statements": [ + { + "assignments": [ + 6911 + ], + "declarations": [ + { + "constant": false, + "id": 6911, + "mutability": "mutable", + "name": "key", + "nameLocation": "7540:3:16", + "nodeType": "VariableDeclaration", + "scope": 7027, + "src": "7532:11:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6910, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7532:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 6916, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6915, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 6912, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6896, + "src": "7546:6:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + }, + "id": 6913, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7553:5:16", + "memberName": "nonce", + "nodeType": "MemberAccess", + "referencedDeclaration": 559, + "src": "7546:12:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "3634", + "id": 6914, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7562:2:16", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "7546:18:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7532:32:16" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 6925, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "expression": { + "id": 6919, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6896, + "src": "7586:6:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + }, + "id": 6920, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7593:8:16", + "memberName": "callData", + "nodeType": "MemberAccess", + "referencedDeclaration": 563, + "src": "7586:15:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 6918, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7579:6:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes4_$", + "typeString": "type(bytes4)" + }, + "typeName": { + "id": 6917, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "7579:6:16", + "typeDescriptions": {} + } + }, + "id": 6921, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7579:23:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "expression": { + "id": 6922, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "7606:4:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + } + }, + "id": 6923, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7611:31:16", + "memberName": "executeWithoutChainIdValidation", + "nodeType": "MemberAccess", + "referencedDeclaration": 7082, + "src": "7606:36:16", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$__$", + "typeString": "function (bytes memory[] memory) payable external" + } + }, + "id": 6924, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "7643:8:16", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "7606:45:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "7579:72:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 7014, + "nodeType": "Block", + "src": "8656:117:16", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7007, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7005, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6911, + "src": "8674:3:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 7006, + "name": "REPLAYABLE_NONCE_KEY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6784, + "src": "8681:20:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8674:27:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7013, + "nodeType": "IfStatement", + "src": "8670:93:16", + "trueBody": { + "id": 7012, + "nodeType": "Block", + "src": "8703:60:16", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 7009, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6911, + "src": "8744:3:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7008, + "name": "InvalidNonceKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6797, + "src": "8728:15:16", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$_t_error_$", + "typeString": "function (uint256) pure returns (error)" + } + }, + "id": 7010, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8728:20:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 7011, + "nodeType": "RevertStatement", + "src": "8721:27:16" + } + ] + } + } + ] + }, + "id": 7015, + "nodeType": "IfStatement", + "src": "7575:1198:16", + "trueBody": { + "id": 7004, + "nodeType": "Block", + "src": "7653:997:16", + "statements": [ + { + "expression": { + "id": 6930, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6926, + "name": "userOpHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6898, + "src": "7667:10:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 6928, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6896, + "src": "7708:6:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + ], + "id": 6927, + "name": "getUserOpHashWithoutChainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7170, + "src": "7680:27:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_PackedUserOperation_$574_calldata_ptr_$returns$_t_bytes32_$", + "typeString": "function (struct PackedUserOperation calldata) view returns (bytes32)" + } + }, + "id": 6929, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7680:35:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "7667:48:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 6931, + "nodeType": "ExpressionStatement", + "src": "7667:48:16" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6934, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6932, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6911, + "src": "7733:3:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 6933, + "name": "REPLAYABLE_NONCE_KEY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6784, + "src": "7740:20:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7733:27:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6940, + "nodeType": "IfStatement", + "src": "7729:93:16", + "trueBody": { + "id": 6939, + "nodeType": "Block", + "src": "7762:60:16", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 6936, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6911, + "src": "7803:3:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6935, + "name": "InvalidNonceKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6797, + "src": "7787:15:16", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$_t_error_$", + "typeString": "function (uint256) pure returns (error)" + } + }, + "id": 6937, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7787:20:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 6938, + "nodeType": "RevertStatement", + "src": "7780:27:16" + } + ] + } + }, + { + "assignments": [ + 6945 + ], + "declarations": [ + { + "constant": false, + "id": 6945, + "mutability": "mutable", + "name": "calls", + "nameLocation": "7940:5:16", + "nodeType": "VariableDeclaration", + "scope": 7004, + "src": "7925:20:16", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 6943, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7925:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 6944, + "nodeType": "ArrayTypeName", + "src": "7925:7:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + } + ], + "id": 6957, + "initialValue": { + "arguments": [ + { + "baseExpression": { + "expression": { + "id": 6948, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6896, + "src": "7959:6:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + }, + "id": 6949, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7966:8:16", + "memberName": "callData", + "nodeType": "MemberAccess", + "referencedDeclaration": 563, + "src": "7959:15:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 6951, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexRangeAccess", + "src": "7959:19:16", + "startExpression": { + "hexValue": "34", + "id": 6950, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7975:1:16", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr_slice", + "typeString": "bytes calldata slice" + } + }, + { + "components": [ + { + "baseExpression": { + "id": 6953, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7981:5:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 6952, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7981:5:16", + "typeDescriptions": {} + } + }, + "id": 6954, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7981:7:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$", + "typeString": "type(bytes memory[] memory)" + } + } + ], + "id": 6955, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7980:9:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$", + "typeString": "type(bytes memory[] memory)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr_slice", + "typeString": "bytes calldata slice" + }, + { + "typeIdentifier": "t_type$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$", + "typeString": "type(bytes memory[] memory)" + } + ], + "expression": { + "id": 6946, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "7948:3:16", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 6947, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "7952:6:16", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "7948:10:16", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 6956, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7948:42:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7925:65:16" + }, + { + "body": { + "id": 7002, + "nodeType": "Block", + "src": "8043:597:16", + "statements": [ + { + "assignments": [ + 6969 + ], + "declarations": [ + { + "constant": false, + "id": 6969, + "mutability": "mutable", + "name": "callData", + "nameLocation": "8074:8:16", + "nodeType": "VariableDeclaration", + "scope": 7002, + "src": "8061:21:16", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6968, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8061:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 6973, + "initialValue": { + "baseExpression": { + "id": 6970, + "name": "calls", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6945, + "src": "8085:5:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + "id": 6972, + "indexExpression": { + "id": 6971, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6959, + "src": "8091:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8085:8:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8061:32:16" + }, + { + "assignments": [ + 6975 + ], + "declarations": [ + { + "constant": false, + "id": 6975, + "mutability": "mutable", + "name": "selector", + "nameLocation": "8118:8:16", + "nodeType": "VariableDeclaration", + "scope": 7002, + "src": "8111:15:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 6974, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "8111:6:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "id": 6980, + "initialValue": { + "arguments": [ + { + "id": 6978, + "name": "callData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6969, + "src": "8136:8:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 6977, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8129:6:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes4_$", + "typeString": "type(bytes4)" + }, + "typeName": { + "id": 6976, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "8129:6:16", + "typeDescriptions": {} + } + }, + "id": 6979, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8129:16:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8111:34:16" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 6985, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6981, + "name": "selector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6975, + "src": "8168:8:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "expression": { + "id": 6982, + "name": "UUPSUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6422, + "src": "8180:15:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UUPSUpgradeable_$6422_$", + "typeString": "type(contract UUPSUpgradeable)" + } + }, + "id": 6983, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8196:16:16", + "memberName": "upgradeToAndCall", + "nodeType": "MemberAccess", + "referencedDeclaration": 6421, + "src": "8180:32:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_calldata_ptr_$returns$__$", + "typeString": "function (address,bytes calldata)" + } + }, + "id": 6984, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "8213:8:16", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "8180:41:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "8168:53:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7001, + "nodeType": "IfStatement", + "src": "8164:462:16", + "trueBody": { + "id": 7000, + "nodeType": "Block", + "src": "8223:403:16", + "statements": [ + { + "assignments": [ + 6987 + ], + "declarations": [ + { + "constant": false, + "id": 6987, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "8253:17:16", + "nodeType": "VariableDeclaration", + "scope": 7000, + "src": "8245:25:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6986, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8245:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 6988, + "nodeType": "VariableDeclarationStatement", + "src": "8245:25:16" + }, + { + "AST": { + "nativeSrc": "8301:198:16", + "nodeType": "YulBlock", + "src": "8301:198:16", + "statements": [ + { + "nativeSrc": "8432:45:16", + "nodeType": "YulAssignment", + "src": "8432:45:16", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "callData", + "nativeSrc": "8463:8:16", + "nodeType": "YulIdentifier", + "src": "8463:8:16" + }, + { + "kind": "number", + "nativeSrc": "8473:2:16", + "nodeType": "YulLiteral", + "src": "8473:2:16", + "type": "", + "value": "36" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8459:3:16", + "nodeType": "YulIdentifier", + "src": "8459:3:16" + }, + "nativeSrc": "8459:17:16", + "nodeType": "YulFunctionCall", + "src": "8459:17:16" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "8453:5:16", + "nodeType": "YulIdentifier", + "src": "8453:5:16" + }, + "nativeSrc": "8453:24:16", + "nodeType": "YulFunctionCall", + "src": "8453:24:16" + }, + "variableNames": [ + { + "name": "newImplementation", + "nativeSrc": "8432:17:16", + "nodeType": "YulIdentifier", + "src": "8432:17:16" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6969, + "isOffset": false, + "isSlot": false, + "src": "8463:8:16", + "valueSize": 1 + }, + { + "declaration": 6987, + "isOffset": false, + "isSlot": false, + "src": "8432:17:16", + "valueSize": 1 + } + ], + "id": 6989, + "nodeType": "InlineAssembly", + "src": "8292:207:16" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6994, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 6990, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6987, + "src": "8524:17:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 6991, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8542:4:16", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "8524:22:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 6992, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8547:6:16", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "8524:29:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 6993, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8557:1:16", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8524:34:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6999, + "nodeType": "IfStatement", + "src": "8520:87:16", + "trueBody": { + "errorCall": { + "arguments": [ + { + "id": 6996, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6987, + "src": "8589:17:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6995, + "name": "InvalidImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6802, + "src": "8567:21:16", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$_t_error_$", + "typeString": "function (address) pure returns (error)" + } + }, + "id": 6997, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8567:40:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 6998, + "nodeType": "RevertStatement", + "src": "8560:47:16" + } + } + ] + } + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6964, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6961, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6959, + "src": "8020:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 6962, + "name": "calls", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6945, + "src": "8024:5:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + "id": 6963, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8030:6:16", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "8024:12:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8020:16:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7003, + "initializationExpression": { + "assignments": [ + 6959 + ], + "declarations": [ + { + "constant": false, + "id": 6959, + "mutability": "mutable", + "name": "i", + "nameLocation": "8017:1:16", + "nodeType": "VariableDeclaration", + "scope": 7003, + "src": "8009:9:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6958, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8009:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 6960, + "nodeType": "VariableDeclarationStatement", + "src": "8009:9:16" + }, + "isSimpleCounterLoop": true, + "loopExpression": { + "expression": { + "id": 6966, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "8038:3:16", + "subExpression": { + "id": 6965, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6959, + "src": "8038:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6967, + "nodeType": "ExpressionStatement", + "src": "8038:3:16" + }, + "nodeType": "ForStatement", + "src": "8004:636:16" + } + ] + } + }, + { + "condition": { + "arguments": [ + { + "id": 7017, + "name": "userOpHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6898, + "src": "8869:10:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 7018, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6896, + "src": "8881:6:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + }, + "id": 7019, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8888:9:16", + "memberName": "signature", + "nodeType": "MemberAccess", + "referencedDeclaration": 573, + "src": "8881:16:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 7016, + "name": "_isValidSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 7371 + ], + "referencedDeclaration": 7371, + "src": "8851:17:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_bool_$", + "typeString": "function (bytes32,bytes calldata) view returns (bool)" + } + }, + "id": 7020, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8851:47:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7024, + "nodeType": "IfStatement", + "src": "8847:86:16", + "trueBody": { + "id": 7023, + "nodeType": "Block", + "src": "8900:33:16", + "statements": [ + { + "expression": { + "hexValue": "30", + "id": 7021, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8921:1:16", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 6909, + "id": 7022, + "nodeType": "Return", + "src": "8914:8:16" + } + ] + } + }, + { + "expression": { + "hexValue": "31", + "id": 7025, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8975:1:16", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "functionReturnParameters": 6909, + "id": 7026, + "nodeType": "Return", + "src": "8968:8:16" + } + ] + }, + "documentation": { + "id": 6893, + "nodeType": "StructuredDocumentation", + "src": "5986:1294:16", + "text": "@inheritdoc IAccount\n @notice ERC-4337 `validateUserOp` method. The EntryPoint will\n call `UserOperation.sender.call(UserOperation.callData)` only if this validation call returns\n successfully.\n @dev Signature failure should be reported by returning 1 (see: `this._isValidSignature`). This\n allows making a \"simulation call\" without a valid signature. Other failures (e.g. invalid signature format)\n should still revert to signal failure.\n @dev Reverts if the `UserOperation.nonce` key is invalid for `UserOperation.calldata`.\n @dev Reverts if the signature format is incorrect or invalid for owner type.\n @param userOp The `UserOperation` to validate.\n @param userOpHash The `UserOperation` hash, as computed by `EntryPoint.getUserOpHash(UserOperation)`.\n @param missingAccountFunds The missing account funds that must be deposited on the Entrypoint.\n @return validationData The encoded `ValidationData` structure:\n `(uint256(validAfter) << (160 + 48)) | (uint256(validUntil) << 160) | (success ? 0 : 1)`\n where `validUntil` is 0 (indefinite) and `validAfter` is 0." + }, + "functionSelector": "19822f7c", + "id": 7028, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 6903, + "kind": "modifierInvocation", + "modifierName": { + "id": 6902, + "name": "onlyEntryPoint", + "nameLocations": [ + "7442:14:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6817, + "src": "7442:14:16" + }, + "nodeType": "ModifierInvocation", + "src": "7442:14:16" + }, + { + "arguments": [ + { + "id": 6905, + "name": "missingAccountFunds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6900, + "src": "7468:19:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 6906, + "kind": "modifierInvocation", + "modifierName": { + "id": 6904, + "name": "payPrefund", + "nameLocations": [ + "7457:10:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6840, + "src": "7457:10:16" + }, + "nodeType": "ModifierInvocation", + "src": "7457:31:16" + } + ], + "name": "validateUserOp", + "nameLocation": "7294:14:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6901, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6896, + "mutability": "mutable", + "name": "userOp", + "nameLocation": "7347:6:16", + "nodeType": "VariableDeclaration", + "scope": 7028, + "src": "7318:35:16", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation" + }, + "typeName": { + "id": 6895, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6894, + "name": "PackedUserOperation", + "nameLocations": [ + "7318:19:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 574, + "src": "7318:19:16" + }, + "referencedDeclaration": 574, + "src": "7318:19:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_storage_ptr", + "typeString": "struct PackedUserOperation" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6898, + "mutability": "mutable", + "name": "userOpHash", + "nameLocation": "7371:10:16", + "nodeType": "VariableDeclaration", + "scope": 7028, + "src": "7363:18:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6897, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7363:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6900, + "mutability": "mutable", + "name": "missingAccountFunds", + "nameLocation": "7399:19:16", + "nodeType": "VariableDeclaration", + "scope": 7028, + "src": "7391:27:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6899, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7391:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7308:116:16" + }, + "returnParameters": { + "id": 6909, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6908, + "mutability": "mutable", + "name": "validationData", + "nameLocation": "7506:14:16", + "nodeType": "VariableDeclaration", + "scope": 7028, + "src": "7498:22:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6907, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7498:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7497:24:16" + }, + "scope": 7398, + "src": "7285:1698:16", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 7081, + "nodeType": "Block", + "src": "9752:320:16", + "statements": [ + { + "body": { + "id": 7079, + "nodeType": "Block", + "src": "9801:265:16", + "statements": [ + { + "assignments": [ + 7048 + ], + "declarations": [ + { + "constant": false, + "id": 7048, + "mutability": "mutable", + "name": "call", + "nameLocation": "9830:4:16", + "nodeType": "VariableDeclaration", + "scope": 7079, + "src": "9815:19:16", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7047, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "9815:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 7052, + "initialValue": { + "baseExpression": { + "id": 7049, + "name": "calls", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7032, + "src": "9837:5:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + }, + "id": 7051, + "indexExpression": { + "id": 7050, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7038, + "src": "9843:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9837:8:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9815:30:16" + }, + { + "assignments": [ + 7054 + ], + "declarations": [ + { + "constant": false, + "id": 7054, + "mutability": "mutable", + "name": "selector", + "nameLocation": "9866:8:16", + "nodeType": "VariableDeclaration", + "scope": 7079, + "src": "9859:15:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 7053, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "9859:6:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "id": 7059, + "initialValue": { + "arguments": [ + { + "id": 7057, + "name": "call", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7048, + "src": "9884:4:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 7056, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9877:6:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes4_$", + "typeString": "type(bytes4)" + }, + "typeName": { + "id": 7055, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "9877:6:16", + "typeDescriptions": {} + } + }, + "id": 7058, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9877:12:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9859:30:16" + }, + { + "condition": { + "id": 7063, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "9907:35:16", + "subExpression": { + "arguments": [ + { + "id": 7061, + "name": "selector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7054, + "src": "9933:8:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 7060, + "name": "canSkipChainIdValidation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7222, + "src": "9908:24:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes4_$returns$_t_bool_$", + "typeString": "function (bytes4) pure returns (bool)" + } + }, + "id": 7062, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9908:34:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7069, + "nodeType": "IfStatement", + "src": "9903:109:16", + "trueBody": { + "id": 7068, + "nodeType": "Block", + "src": "9944:68:16", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 7065, + "name": "selector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7054, + "src": "9988:8:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 7064, + "name": "SelectorNotAllowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6792, + "src": "9969:18:16", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_bytes4_$returns$_t_error_$", + "typeString": "function (bytes4) pure returns (error)" + } + }, + "id": 7066, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9969:28:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 7067, + "nodeType": "RevertStatement", + "src": "9962:35:16" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 7073, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "10040:4:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + } + ], + "id": 7072, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10032:7:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 7071, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10032:7:16", + "typeDescriptions": {} + } + }, + "id": 7074, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10032:13:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "hexValue": "30", + "id": 7075, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10047:1:16", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 7076, + "name": "call", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7048, + "src": "10050:4:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 7070, + "name": "_call", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7249, + "src": "10026:5:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,bytes memory)" + } + }, + "id": 7077, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10026:29:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7078, + "nodeType": "ExpressionStatement", + "src": "10026:29:16" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7043, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7040, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7038, + "src": "9778:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 7041, + "name": "calls", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7032, + "src": "9782:5:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + }, + "id": 7042, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9788:6:16", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "9782:12:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9778:16:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7080, + "initializationExpression": { + "assignments": [ + 7038 + ], + "declarations": [ + { + "constant": false, + "id": 7038, + "mutability": "mutable", + "name": "i", + "nameLocation": "9775:1:16", + "nodeType": "VariableDeclaration", + "scope": 7080, + "src": "9767:9:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7037, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9767:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7039, + "nodeType": "VariableDeclarationStatement", + "src": "9767:9:16" + }, + "isSimpleCounterLoop": true, + "loopExpression": { + "expression": { + "id": 7045, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "9796:3:16", + "subExpression": { + "id": 7044, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7038, + "src": "9796:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7046, + "nodeType": "ExpressionStatement", + "src": "9796:3:16" + }, + "nodeType": "ForStatement", + "src": "9762:304:16" + } + ] + }, + "documentation": { + "id": 7029, + "nodeType": "StructuredDocumentation", + "src": "8989:653:16", + "text": "@notice Executes `calls` on this account (i.e. self call).\n @dev Can only be called by the Entrypoint.\n @dev Reverts if the given call is not authorized to skip the chain ID validtion.\n @dev `validateUserOp()` will recompute the `userOpHash` without the chain ID before validating\n it if the `UserOperation.calldata` is calling this function. This allows certain UserOperations\n to be replayed for all accounts sharing the same address across chains. E.g. This may be\n useful for syncing owner changes.\n @param calls An array of calldata to use for separate self calls." + }, + "functionSelector": "2c2abd1e", + "id": 7082, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 7035, + "kind": "modifierInvocation", + "modifierName": { + "id": 7034, + "name": "onlyEntryPoint", + "nameLocations": [ + "9737:14:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6817, + "src": "9737:14:16" + }, + "nodeType": "ModifierInvocation", + "src": "9737:14:16" + } + ], + "name": "executeWithoutChainIdValidation", + "nameLocation": "9656:31:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7033, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7032, + "mutability": "mutable", + "name": "calls", + "nameLocation": "9705:5:16", + "nodeType": "VariableDeclaration", + "scope": 7082, + "src": "9688:22:16", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 7030, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "9688:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 7031, + "nodeType": "ArrayTypeName", + "src": "9688:7:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + } + ], + "src": "9687:24:16" + }, + "returnParameters": { + "id": 7036, + "nodeType": "ParameterList", + "parameters": [], + "src": "9752:0:16" + }, + "scope": 7398, + "src": "9647:425:16", + "stateMutability": "payable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 7100, + "nodeType": "Block", + "src": "10509:43:16", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 7095, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7085, + "src": "10525:6:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 7096, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7087, + "src": "10533:5:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 7097, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7089, + "src": "10540:4:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 7094, + "name": "_call", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7249, + "src": "10519:5:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,bytes memory)" + } + }, + "id": 7098, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10519:26:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7099, + "nodeType": "ExpressionStatement", + "src": "10519:26:16" + } + ] + }, + "documentation": { + "id": 7083, + "nodeType": "StructuredDocumentation", + "src": "10078:310:16", + "text": "@notice Executes the given call from this account.\n @dev Can only be called by the Entrypoint or an owner of this account (including itself).\n @param target The address to call.\n @param value The value to send with the call.\n @param data The data of the call." + }, + "functionSelector": "b61d27f6", + "id": 7101, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 7092, + "kind": "modifierInvocation", + "modifierName": { + "id": 7091, + "name": "onlyEntryPointOrOwner", + "nameLocations": [ + "10487:21:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6832, + "src": "10487:21:16" + }, + "nodeType": "ModifierInvocation", + "src": "10487:21:16" + } + ], + "name": "execute", + "nameLocation": "10402:7:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7090, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7085, + "mutability": "mutable", + "name": "target", + "nameLocation": "10418:6:16", + "nodeType": "VariableDeclaration", + "scope": 7101, + "src": "10410:14:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7084, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10410:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7087, + "mutability": "mutable", + "name": "value", + "nameLocation": "10434:5:16", + "nodeType": "VariableDeclaration", + "scope": 7101, + "src": "10426:13:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7086, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10426:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7089, + "mutability": "mutable", + "name": "data", + "nameLocation": "10456:4:16", + "nodeType": "VariableDeclaration", + "scope": 7101, + "src": "10441:19:16", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7088, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "10441:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "10409:52:16" + }, + "returnParameters": { + "id": 7093, + "nodeType": "ParameterList", + "parameters": [], + "src": "10509:0:16" + }, + "scope": 7398, + "src": "10393:159:16", + "stateMutability": "payable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 7138, + "nodeType": "Block", + "src": "10860:133:16", + "statements": [ + { + "body": { + "id": 7136, + "nodeType": "Block", + "src": "10909:78:16", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "baseExpression": { + "id": 7122, + "name": "calls", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7106, + "src": "10929:5:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Call_$6780_calldata_ptr_$dyn_calldata_ptr", + "typeString": "struct GianoSmartWallet.Call calldata[] calldata" + } + }, + "id": 7124, + "indexExpression": { + "id": 7123, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7112, + "src": "10935:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10929:8:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Call_$6780_calldata_ptr", + "typeString": "struct GianoSmartWallet.Call calldata" + } + }, + "id": 7125, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10938:6:16", + "memberName": "target", + "nodeType": "MemberAccess", + "referencedDeclaration": 6773, + "src": "10929:15:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "baseExpression": { + "id": 7126, + "name": "calls", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7106, + "src": "10946:5:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Call_$6780_calldata_ptr_$dyn_calldata_ptr", + "typeString": "struct GianoSmartWallet.Call calldata[] calldata" + } + }, + "id": 7128, + "indexExpression": { + "id": 7127, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7112, + "src": "10952:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10946:8:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Call_$6780_calldata_ptr", + "typeString": "struct GianoSmartWallet.Call calldata" + } + }, + "id": 7129, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10955:5:16", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 6776, + "src": "10946:14:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "baseExpression": { + "id": 7130, + "name": "calls", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7106, + "src": "10962:5:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Call_$6780_calldata_ptr_$dyn_calldata_ptr", + "typeString": "struct GianoSmartWallet.Call calldata[] calldata" + } + }, + "id": 7132, + "indexExpression": { + "id": 7131, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7112, + "src": "10968:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10962:8:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Call_$6780_calldata_ptr", + "typeString": "struct GianoSmartWallet.Call calldata" + } + }, + "id": 7133, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10971:4:16", + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": 6779, + "src": "10962:13:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 7121, + "name": "_call", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7249, + "src": "10923:5:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,bytes memory)" + } + }, + "id": 7134, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10923:53:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7135, + "nodeType": "ExpressionStatement", + "src": "10923:53:16" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7117, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7114, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7112, + "src": "10886:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 7115, + "name": "calls", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7106, + "src": "10890:5:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Call_$6780_calldata_ptr_$dyn_calldata_ptr", + "typeString": "struct GianoSmartWallet.Call calldata[] calldata" + } + }, + "id": 7116, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10896:6:16", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "10890:12:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10886:16:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7137, + "initializationExpression": { + "assignments": [ + 7112 + ], + "declarations": [ + { + "constant": false, + "id": 7112, + "mutability": "mutable", + "name": "i", + "nameLocation": "10883:1:16", + "nodeType": "VariableDeclaration", + "scope": 7137, + "src": "10875:9:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7111, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10875:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7113, + "nodeType": "VariableDeclarationStatement", + "src": "10875:9:16" + }, + "isSimpleCounterLoop": true, + "loopExpression": { + "expression": { + "id": 7119, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "10904:3:16", + "subExpression": { + "id": 7118, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7112, + "src": "10904:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7120, + "nodeType": "ExpressionStatement", + "src": "10904:3:16" + }, + "nodeType": "ForStatement", + "src": "10870:117:16" + } + ] + }, + "documentation": { + "id": 7102, + "nodeType": "StructuredDocumentation", + "src": "10558:205:16", + "text": "@notice Executes batch of `Call`s.\n @dev Can only be called by the Entrypoint or an owner of this account (including itself).\n @param calls The list of `Call`s to execute." + }, + "functionSelector": "34fcd5be", + "id": 7139, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 7109, + "kind": "modifierInvocation", + "modifierName": { + "id": 7108, + "name": "onlyEntryPointOrOwner", + "nameLocations": [ + "10838:21:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6832, + "src": "10838:21:16" + }, + "nodeType": "ModifierInvocation", + "src": "10838:21:16" + } + ], + "name": "executeBatch", + "nameLocation": "10777:12:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7107, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7106, + "mutability": "mutable", + "name": "calls", + "nameLocation": "10806:5:16", + "nodeType": "VariableDeclaration", + "scope": 7139, + "src": "10790:21:16", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Call_$6780_calldata_ptr_$dyn_calldata_ptr", + "typeString": "struct GianoSmartWallet.Call[]" + }, + "typeName": { + "baseType": { + "id": 7104, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7103, + "name": "Call", + "nameLocations": [ + "10790:4:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6780, + "src": "10790:4:16" + }, + "referencedDeclaration": 6780, + "src": "10790:4:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Call_$6780_storage_ptr", + "typeString": "struct GianoSmartWallet.Call" + } + }, + "id": 7105, + "nodeType": "ArrayTypeName", + "src": "10790:6:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Call_$6780_storage_$dyn_storage_ptr", + "typeString": "struct GianoSmartWallet.Call[]" + } + }, + "visibility": "internal" + } + ], + "src": "10789:23:16" + }, + "returnParameters": { + "id": 7110, + "nodeType": "ParameterList", + "parameters": [], + "src": "10860:0:16" + }, + "scope": 7398, + "src": "10768:225:16", + "stateMutability": "payable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 7147, + "nodeType": "Block", + "src": "11178:66:16", + "statements": [ + { + "expression": { + "hexValue": "307830303030303030303731373237446532324535453964384241663065644163366633376461303332", + "id": 7145, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11195:42:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "value": "0x0000000071727De22E5E9d8BAf0edAc6f37da032" + }, + "functionReturnParameters": 7144, + "id": 7146, + "nodeType": "Return", + "src": "11188:49:16" + } + ] + }, + "documentation": { + "id": 7140, + "nodeType": "StructuredDocumentation", + "src": "10999:114:16", + "text": "@notice Returns the address of the EntryPoint v0.7.\n @return The address of the EntryPoint v0.7" + }, + "functionSelector": "b0d691fe", + "id": 7148, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "entryPoint", + "nameLocation": "11127:10:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7141, + "nodeType": "ParameterList", + "parameters": [], + "src": "11137:2:16" + }, + "returnParameters": { + "id": 7144, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7143, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7148, + "src": "11169:7:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7142, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11169:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "11168:9:16" + }, + "scope": 7398, + "src": "11118:126:16", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 7169, + "nodeType": "Block", + "src": "11750:90:16", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 7162, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7152, + "src": "11810:6:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + ], + "expression": { + "id": 7160, + "name": "UserOperationLib", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 535, + "src": "11788:16:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UserOperationLib_$535_$", + "typeString": "type(library UserOperationLib)" + } + }, + "id": 7161, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11805:4:16", + "memberName": "hash", + "nodeType": "MemberAccess", + "referencedDeclaration": 534, + "src": "11788:21:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_PackedUserOperation_$574_calldata_ptr_$returns$_t_bytes32_$", + "typeString": "function (struct PackedUserOperation calldata) pure returns (bytes32)" + } + }, + "id": 7163, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11788:29:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7164, + "name": "entryPoint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7148, + "src": "11819:10:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 7165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11819:12:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 7158, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "11777:3:16", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 7159, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "11781:6:16", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "11777:10:16", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 7166, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11777:55:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 7157, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "11767:9:16", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 7167, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11767:66:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 7156, + "id": 7168, + "nodeType": "Return", + "src": "11760:73:16" + } + ] + }, + "documentation": { + "id": 7149, + "nodeType": "StructuredDocumentation", + "src": "11250:383:16", + "text": "@notice Computes the hash of the `UserOperation` in the same way as EntryPoint v0.6, but\n leaves out the chain ID.\n @dev This allows accounts to sign a hash that can be used on many chains.\n @param userOp The `UserOperation` to compute the hash for.\n @return The `UserOperation` hash, which does not depend on chain ID." + }, + "functionSelector": "a05bd44e", + "id": 7170, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getUserOpHashWithoutChainId", + "nameLocation": "11647:27:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7153, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7152, + "mutability": "mutable", + "name": "userOp", + "nameLocation": "11704:6:16", + "nodeType": "VariableDeclaration", + "scope": 7170, + "src": "11675:35:16", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation" + }, + "typeName": { + "id": 7151, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7150, + "name": "PackedUserOperation", + "nameLocations": [ + "11675:19:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 574, + "src": "11675:19:16" + }, + "referencedDeclaration": 574, + "src": "11675:19:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_storage_ptr", + "typeString": "struct PackedUserOperation" + } + }, + "visibility": "internal" + } + ], + "src": "11674:37:16" + }, + "returnParameters": { + "id": 7156, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7155, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7170, + "src": "11741:7:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7154, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11741:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "11740:9:16" + }, + "scope": 7398, + "src": "11638:202:16", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 7177, + "nodeType": "Block", + "src": "12035:89:16", + "statements": [ + { + "AST": { + "nativeSrc": "12054:64:16", + "nodeType": "YulBlock", + "src": "12054:64:16", + "statements": [ + { + "nativeSrc": "12068:40:16", + "nodeType": "YulAssignment", + "src": "12068:40:16", + "value": { + "arguments": [ + { + "name": "_ERC1967_IMPLEMENTATION_SLOT", + "nativeSrc": "12079:28:16", + "nodeType": "YulIdentifier", + "src": "12079:28:16" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "12073:5:16", + "nodeType": "YulIdentifier", + "src": "12073:5:16" + }, + "nativeSrc": "12073:35:16", + "nodeType": "YulFunctionCall", + "src": "12073:35:16" + }, + "variableNames": [ + { + "name": "$", + "nativeSrc": "12068:1:16", + "nodeType": "YulIdentifier", + "src": "12068:1:16" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 7174, + "isOffset": false, + "isSlot": false, + "src": "12068:1:16", + "valueSize": 1 + }, + { + "declaration": 6388, + "isOffset": false, + "isSlot": false, + "src": "12079:28:16", + "valueSize": 1 + } + ], + "id": 7176, + "nodeType": "InlineAssembly", + "src": "12045:73:16" + } + ] + }, + "documentation": { + "id": 7171, + "nodeType": "StructuredDocumentation", + "src": "11846:126:16", + "text": "@notice Returns the implementation of the ERC1967 proxy.\n @return $ The address of implementation contract." + }, + "functionSelector": "5c60da1b", + "id": 7178, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "implementation", + "nameLocation": "11986:14:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7172, + "nodeType": "ParameterList", + "parameters": [], + "src": "12000:2:16" + }, + "returnParameters": { + "id": 7175, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7174, + "mutability": "mutable", + "name": "$", + "nameLocation": "12032:1:16", + "nodeType": "VariableDeclaration", + "scope": 7178, + "src": "12024:9:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7173, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12024:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "12023:11:16" + }, + "scope": 7398, + "src": "11977:147:16", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 7221, + "nodeType": "Block", + "src": "12506:460:16", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 7214, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 7208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 7202, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 7196, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 7190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7186, + "name": "functionSelector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7181, + "src": "12533:16:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "expression": { + "id": 7187, + "name": "MultiOwnable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8101, + "src": "12553:12:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_MultiOwnable_$8101_$", + "typeString": "type(contract MultiOwnable)" + } + }, + "id": 7188, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "12566:17:16", + "memberName": "addOwnerPublicKey", + "nodeType": "MemberAccess", + "referencedDeclaration": 7695, + "src": "12553:30:16", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function MultiOwnable.addOwnerPublicKey(bytes32,bytes32)" + } + }, + "id": 7189, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "12584:8:16", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "12553:39:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "12533:59:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 7195, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7191, + "name": "functionSelector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7181, + "src": "12608:16:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "expression": { + "id": 7192, + "name": "MultiOwnable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8101, + "src": "12628:12:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_MultiOwnable_$8101_$", + "typeString": "type(contract MultiOwnable)" + } + }, + "id": 7193, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "12641:15:16", + "memberName": "addOwnerAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 7672, + "src": "12628:28:16", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$returns$__$", + "typeString": "function MultiOwnable.addOwnerAddress(address)" + } + }, + "id": 7194, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "12657:8:16", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "12628:37:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "12608:57:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "12533:132:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 7201, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7197, + "name": "functionSelector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7181, + "src": "12681:16:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "expression": { + "id": 7198, + "name": "MultiOwnable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8101, + "src": "12701:12:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_MultiOwnable_$8101_$", + "typeString": "type(contract MultiOwnable)" + } + }, + "id": 7199, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "12714:18:16", + "memberName": "removeOwnerAtIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 7720, + "src": "12701:31:16", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_uint256_$_t_bytes_calldata_ptr_$returns$__$", + "typeString": "function MultiOwnable.removeOwnerAtIndex(uint256,bytes calldata)" + } + }, + "id": 7200, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "12733:8:16", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "12701:40:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "12681:60:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "12533:208:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 7207, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7203, + "name": "functionSelector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7181, + "src": "12757:16:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "expression": { + "id": 7204, + "name": "MultiOwnable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8101, + "src": "12777:12:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_MultiOwnable_$8101_$", + "typeString": "type(contract MultiOwnable)" + } + }, + "id": 7205, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "12790:15:16", + "memberName": "removeLastOwner", + "nodeType": "MemberAccess", + "referencedDeclaration": 7750, + "src": "12777:28:16", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_uint256_$_t_bytes_calldata_ptr_$returns$__$", + "typeString": "function MultiOwnable.removeLastOwner(uint256,bytes calldata)" + } + }, + "id": 7206, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "12806:8:16", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "12777:37:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "12757:57:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "12533:281:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 7213, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7209, + "name": "functionSelector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7181, + "src": "12830:16:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "expression": { + "id": 7210, + "name": "UUPSUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6422, + "src": "12850:15:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UUPSUpgradeable_$6422_$", + "typeString": "type(contract UUPSUpgradeable)" + } + }, + "id": 7211, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12866:16:16", + "memberName": "upgradeToAndCall", + "nodeType": "MemberAccess", + "referencedDeclaration": 6421, + "src": "12850:32:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_calldata_ptr_$returns$__$", + "typeString": "function (address,bytes calldata)" + } + }, + "id": 7212, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "12883:8:16", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "12850:41:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "12830:61:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "12533:358:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7218, + "nodeType": "IfStatement", + "src": "12516:422:16", + "trueBody": { + "id": 7217, + "nodeType": "Block", + "src": "12902:36:16", + "statements": [ + { + "expression": { + "hexValue": "74727565", + "id": 7215, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12923:4:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 7185, + "id": 7216, + "nodeType": "Return", + "src": "12916:11:16" + } + ] + } + }, + { + "expression": { + "hexValue": "66616c7365", + "id": 7219, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12954:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 7185, + "id": 7220, + "nodeType": "Return", + "src": "12947:12:16" + } + ] + }, + "documentation": { + "id": 7179, + "nodeType": "StructuredDocumentation", + "src": "12314:101:16", + "text": "@return `true` is the function selector is allowed to skip the chain ID validation, else `false`." + }, + "functionSelector": "9f9bcb34", + "id": 7222, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "canSkipChainIdValidation", + "nameLocation": "12429:24:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7182, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7181, + "mutability": "mutable", + "name": "functionSelector", + "nameLocation": "12461:16:16", + "nodeType": "VariableDeclaration", + "scope": 7222, + "src": "12454:23:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 7180, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "12454:6:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "12453:25:16" + }, + "returnParameters": { + "id": 7185, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7184, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7222, + "src": "12500:4:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7183, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "12500:4:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "12499:6:16" + }, + "scope": 7398, + "src": "12420:546:16", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 7248, + "nodeType": "Block", + "src": "13477:228:16", + "statements": [ + { + "assignments": [ + 7233, + 7235 + ], + "declarations": [ + { + "constant": false, + "id": 7233, + "mutability": "mutable", + "name": "success", + "nameLocation": "13493:7:16", + "nodeType": "VariableDeclaration", + "scope": 7248, + "src": "13488:12:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7232, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "13488:4:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7235, + "mutability": "mutable", + "name": "result", + "nameLocation": "13515:6:16", + "nodeType": "VariableDeclaration", + "scope": 7248, + "src": "13502:19:16", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7234, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "13502:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 7242, + "initialValue": { + "arguments": [ + { + "id": 7240, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7229, + "src": "13551:4:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 7236, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7225, + "src": "13525:6:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 7237, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13532:4:16", + "memberName": "call", + "nodeType": "MemberAccess", + "src": "13525:11:16", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 7239, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": [ + "value" + ], + "nodeType": "FunctionCallOptions", + "options": [ + { + "id": 7238, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7227, + "src": "13544:5:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "13525:25:16", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 7241, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13525:31:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13487:69:16" + }, + { + "condition": { + "id": 7244, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "13570:8:16", + "subExpression": { + "id": 7243, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7233, + "src": "13571:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7247, + "nodeType": "IfStatement", + "src": "13566:133:16", + "trueBody": { + "id": 7246, + "nodeType": "Block", + "src": "13580:119:16", + "statements": [ + { + "AST": { + "nativeSrc": "13619:70:16", + "nodeType": "YulBlock", + "src": "13619:70:16", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "13648:6:16", + "nodeType": "YulIdentifier", + "src": "13648:6:16" + }, + { + "kind": "number", + "nativeSrc": "13656:2:16", + "nodeType": "YulLiteral", + "src": "13656:2:16", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13644:3:16", + "nodeType": "YulIdentifier", + "src": "13644:3:16" + }, + "nativeSrc": "13644:15:16", + "nodeType": "YulFunctionCall", + "src": "13644:15:16" + }, + { + "arguments": [ + { + "name": "result", + "nativeSrc": "13667:6:16", + "nodeType": "YulIdentifier", + "src": "13667:6:16" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "13661:5:16", + "nodeType": "YulIdentifier", + "src": "13661:5:16" + }, + "nativeSrc": "13661:13:16", + "nodeType": "YulFunctionCall", + "src": "13661:13:16" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "13637:6:16", + "nodeType": "YulIdentifier", + "src": "13637:6:16" + }, + "nativeSrc": "13637:38:16", + "nodeType": "YulFunctionCall", + "src": "13637:38:16" + }, + "nativeSrc": "13637:38:16", + "nodeType": "YulExpressionStatement", + "src": "13637:38:16" + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 7235, + "isOffset": false, + "isSlot": false, + "src": "13648:6:16", + "valueSize": 1 + }, + { + "declaration": 7235, + "isOffset": false, + "isSlot": false, + "src": "13667:6:16", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 7245, + "nodeType": "InlineAssembly", + "src": "13594:95:16" + } + ] + } + } + ] + }, + "documentation": { + "id": 7223, + "nodeType": "StructuredDocumentation", + "src": "12972:426:16", + "text": "@notice Executes the given call from this account.\n @dev Reverts if the call reverted.\n @dev Implementation taken from\n https://github.com/alchemyplatform/light-account/blob/43f625afdda544d5e5af9c370c9f4be0943e4e90/src/common/BaseLightAccount.sol#L125\n @param target The target call address.\n @param value The call value to user.\n @param data The raw call data." + }, + "id": 7249, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_call", + "nameLocation": "13412:5:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7230, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7225, + "mutability": "mutable", + "name": "target", + "nameLocation": "13426:6:16", + "nodeType": "VariableDeclaration", + "scope": 7249, + "src": "13418:14:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7224, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13418:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7227, + "mutability": "mutable", + "name": "value", + "nameLocation": "13442:5:16", + "nodeType": "VariableDeclaration", + "scope": 7249, + "src": "13434:13:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7226, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13434:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7229, + "mutability": "mutable", + "name": "data", + "nameLocation": "13462:4:16", + "nodeType": "VariableDeclaration", + "scope": 7249, + "src": "13449:17:16", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7228, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "13449:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "13417:50:16" + }, + "returnParameters": { + "id": 7231, + "nodeType": "ParameterList", + "parameters": [], + "src": "13477:0:16" + }, + "scope": 7398, + "src": "13403:302:16", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 6725 + ], + "body": { + "id": 7370, + "nodeType": "Block", + "src": "14110:1336:16", + "statements": [ + { + "assignments": [ + 7262 + ], + "declarations": [ + { + "constant": false, + "id": 7262, + "mutability": "mutable", + "name": "sigWrapper", + "nameLocation": "14144:10:16", + "nodeType": "VariableDeclaration", + "scope": 7370, + "src": "14120:34:16", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignatureWrapper_$6769_memory_ptr", + "typeString": "struct GianoSmartWallet.SignatureWrapper" + }, + "typeName": { + "id": 7261, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7260, + "name": "SignatureWrapper", + "nameLocations": [ + "14120:16:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6769, + "src": "14120:16:16" + }, + "referencedDeclaration": 6769, + "src": "14120:16:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignatureWrapper_$6769_storage_ptr", + "typeString": "struct GianoSmartWallet.SignatureWrapper" + } + }, + "visibility": "internal" + } + ], + "id": 7269, + "initialValue": { + "arguments": [ + { + "id": 7265, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7254, + "src": "14168:9:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + { + "components": [ + { + "id": 7266, + "name": "SignatureWrapper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6769, + "src": "14180:16:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_SignatureWrapper_$6769_storage_ptr_$", + "typeString": "type(struct GianoSmartWallet.SignatureWrapper storage pointer)" + } + } + ], + "id": 7267, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "14179:18:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_SignatureWrapper_$6769_storage_ptr_$", + "typeString": "type(struct GianoSmartWallet.SignatureWrapper storage pointer)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + }, + { + "typeIdentifier": "t_type$_t_struct$_SignatureWrapper_$6769_storage_ptr_$", + "typeString": "type(struct GianoSmartWallet.SignatureWrapper storage pointer)" + } + ], + "expression": { + "id": 7263, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "14157:3:16", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 7264, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "14161:6:16", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "14157:10:16", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 7268, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14157:41:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignatureWrapper_$6769_memory_ptr", + "typeString": "struct GianoSmartWallet.SignatureWrapper memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14120:78:16" + }, + { + "assignments": [ + 7271 + ], + "declarations": [ + { + "constant": false, + "id": 7271, + "mutability": "mutable", + "name": "ownerBytes", + "nameLocation": "14221:10:16", + "nodeType": "VariableDeclaration", + "scope": 7370, + "src": "14208:23:16", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7270, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "14208:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 7274, + "initialValue": { + "expression": { + "id": 7272, + "name": "sigWrapper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7262, + "src": "14234:10:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignatureWrapper_$6769_memory_ptr", + "typeString": "struct GianoSmartWallet.SignatureWrapper memory" + } + }, + "id": 7273, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14245:10:16", + "memberName": "ownerBytes", + "nodeType": "MemberAccess", + "referencedDeclaration": 6765, + "src": "14234:21:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14208:47:16" + }, + { + "condition": { + "id": 7278, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "14348:25:16", + "subExpression": { + "arguments": [ + { + "id": 7276, + "name": "ownerBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7271, + "src": "14362:10:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 7275, + "name": "isOwnerBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7804, + "src": "14349:12:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (bytes memory) view returns (bool)" + } + }, + "id": 7277, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14349:24:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7282, + "nodeType": "IfStatement", + "src": "14344:68:16", + "trueBody": { + "id": 7281, + "nodeType": "Block", + "src": "14375:37:16", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 7279, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14396:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 7259, + "id": 7280, + "nodeType": "Return", + "src": "14389:12:16" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 7283, + "name": "ownerBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7271, + "src": "14426:10:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 7284, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14437:6:16", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "14426:17:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "3332", + "id": 7285, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14447:2:16", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "14426:23:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7319, + "nodeType": "IfStatement", + "src": "14422:604:16", + "trueBody": { + "id": 7318, + "nodeType": "Block", + "src": "14451:575:16", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7299, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 7291, + "name": "ownerBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7271, + "src": "14485:10:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 7290, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14477:7:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 7289, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14477:7:16", + "typeDescriptions": {} + } + }, + "id": 7292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14477:19:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 7288, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14469:7:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 7287, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14469:7:16", + "typeDescriptions": {} + } + }, + "id": 7293, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14469:28:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 7296, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14505:7:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 7295, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "14505:7:16", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + } + ], + "id": 7294, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "14500:4:16", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 7297, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14500:13:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint160", + "typeString": "type(uint160)" + } + }, + "id": 7298, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "14514:3:16", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "14500:17:16", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "src": "14469:48:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7305, + "nodeType": "IfStatement", + "src": "14465:318:16", + "trueBody": { + "id": 7304, + "nodeType": "Block", + "src": "14519:264:16", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 7301, + "name": "ownerBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7271, + "src": "14757:10:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 7300, + "name": "InvalidEthereumAddressOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7622, + "src": "14729:27:16", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_bytes_memory_ptr_$returns$_t_error_$", + "typeString": "function (bytes memory) pure returns (error)" + } + }, + "id": 7302, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14729:39:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 7303, + "nodeType": "RevertStatement", + "src": "14722:46:16" + } + ] + } + }, + { + "assignments": [ + 7307 + ], + "declarations": [ + { + "constant": false, + "id": 7307, + "mutability": "mutable", + "name": "owner", + "nameLocation": "14805:5:16", + "nodeType": "VariableDeclaration", + "scope": 7318, + "src": "14797:13:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7306, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14797:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 7308, + "nodeType": "VariableDeclarationStatement", + "src": "14797:13:16" + }, + { + "AST": { + "nativeSrc": "14849:67:16", + "nodeType": "YulBlock", + "src": "14849:67:16", + "statements": [ + { + "nativeSrc": "14867:35:16", + "nodeType": "YulAssignment", + "src": "14867:35:16", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "ownerBytes", + "nativeSrc": "14886:10:16", + "nodeType": "YulIdentifier", + "src": "14886:10:16" + }, + { + "kind": "number", + "nativeSrc": "14898:2:16", + "nodeType": "YulLiteral", + "src": "14898:2:16", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14882:3:16", + "nodeType": "YulIdentifier", + "src": "14882:3:16" + }, + "nativeSrc": "14882:19:16", + "nodeType": "YulFunctionCall", + "src": "14882:19:16" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "14876:5:16", + "nodeType": "YulIdentifier", + "src": "14876:5:16" + }, + "nativeSrc": "14876:26:16", + "nodeType": "YulFunctionCall", + "src": "14876:26:16" + }, + "variableNames": [ + { + "name": "owner", + "nativeSrc": "14867:5:16", + "nodeType": "YulIdentifier", + "src": "14867:5:16" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 7307, + "isOffset": false, + "isSlot": false, + "src": "14867:5:16", + "valueSize": 1 + }, + { + "declaration": 7271, + "isOffset": false, + "isSlot": false, + "src": "14886:10:16", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 7309, + "nodeType": "InlineAssembly", + "src": "14824:92:16" + }, + { + "expression": { + "arguments": [ + { + "id": 7312, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7307, + "src": "14977:5:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 7313, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7252, + "src": "14984:4:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 7314, + "name": "sigWrapper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7262, + "src": "14990:10:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignatureWrapper_$6769_memory_ptr", + "typeString": "struct GianoSmartWallet.SignatureWrapper memory" + } + }, + "id": 7315, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15001:13:16", + "memberName": "signatureData", + "nodeType": "MemberAccess", + "referencedDeclaration": 6768, + "src": "14990:24:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 7310, + "name": "SignatureCheckerLib", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6365, + "src": "14937:19:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SignatureCheckerLib_$6365_$", + "typeString": "type(library SignatureCheckerLib)" + } + }, + "id": 7311, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14957:19:16", + "memberName": "isValidSignatureNow", + "nodeType": "MemberAccess", + "referencedDeclaration": 6171, + "src": "14937:39:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,bytes32,bytes memory) view returns (bool)" + } + }, + "id": 7316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14937:78:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 7259, + "id": 7317, + "nodeType": "Return", + "src": "14930:85:16" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 7320, + "name": "ownerBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7271, + "src": "15040:10:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 7321, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15051:6:16", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "15040:17:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "3634", + "id": 7322, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15061:2:16", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "15040:23:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7365, + "nodeType": "IfStatement", + "src": "15036:351:16", + "trueBody": { + "id": 7364, + "nodeType": "Block", + "src": "15065:322:16", + "statements": [ + { + "assignments": [ + 7325, + 7327 + ], + "declarations": [ + { + "constant": false, + "id": 7325, + "mutability": "mutable", + "name": "x", + "nameLocation": "15088:1:16", + "nodeType": "VariableDeclaration", + "scope": 7364, + "src": "15080:9:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7324, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15080:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7327, + "mutability": "mutable", + "name": "y", + "nameLocation": "15099:1:16", + "nodeType": "VariableDeclaration", + "scope": 7364, + "src": "15091:9:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7326, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15091:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7337, + "initialValue": { + "arguments": [ + { + "id": 7330, + "name": "ownerBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7271, + "src": "15115:10:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 7332, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15128:7:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 7331, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15128:7:16", + "typeDescriptions": {} + } + }, + { + "id": 7334, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15137:7:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 7333, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15137:7:16", + "typeDescriptions": {} + } + } + ], + "id": 7335, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "15127:18:16", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$", + "typeString": "tuple(type(uint256),type(uint256))" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_tuple$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$", + "typeString": "tuple(type(uint256),type(uint256))" + } + ], + "expression": { + "id": 7328, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "15104:3:16", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 7329, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "15108:6:16", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "15104:10:16", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 7336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15104:42:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15079:67:16" + }, + { + "assignments": [ + 7342 + ], + "declarations": [ + { + "constant": false, + "id": 7342, + "mutability": "mutable", + "name": "auth", + "nameLocation": "15190:4:16", + "nodeType": "VariableDeclaration", + "scope": 7364, + "src": "15161:33:16", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth" + }, + "typeName": { + "id": 7341, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7340, + "name": "WebAuthn.WebAuthnAuth", + "nameLocations": [ + "15161:8:16", + "15170:12:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 8252, + "src": "15161:21:16" + }, + "referencedDeclaration": 8252, + "src": "15161:21:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_storage_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth" + } + }, + "visibility": "internal" + } + ], + "id": 7351, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 7345, + "name": "sigWrapper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7262, + "src": "15208:10:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignatureWrapper_$6769_memory_ptr", + "typeString": "struct GianoSmartWallet.SignatureWrapper memory" + } + }, + "id": 7346, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15219:13:16", + "memberName": "signatureData", + "nodeType": "MemberAccess", + "referencedDeclaration": 6768, + "src": "15208:24:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "expression": { + "id": 7347, + "name": "WebAuthn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8478, + "src": "15235:8:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_WebAuthn_$8478_$", + "typeString": "type(library WebAuthn)" + } + }, + "id": 7348, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15244:12:16", + "memberName": "WebAuthnAuth", + "nodeType": "MemberAccess", + "referencedDeclaration": 8252, + "src": "15235:21:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_WebAuthnAuth_$8252_storage_ptr_$", + "typeString": "type(struct WebAuthn.WebAuthnAuth storage pointer)" + } + } + ], + "id": 7349, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "15234:23:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_WebAuthnAuth_$8252_storage_ptr_$", + "typeString": "type(struct WebAuthn.WebAuthnAuth storage pointer)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_struct$_WebAuthnAuth_$8252_storage_ptr_$", + "typeString": "type(struct WebAuthn.WebAuthnAuth storage pointer)" + } + ], + "expression": { + "id": 7343, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "15197:3:16", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 7344, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "15201:6:16", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "15197:10:16", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 7350, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15197:61:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15161:97:16" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 7356, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7252, + "src": "15319:4:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 7354, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "15308:3:16", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 7355, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "15312:6:16", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "15308:10:16", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 7357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15308:16:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "hexValue": "66616c7365", + "id": 7358, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15337:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + { + "id": 7359, + "name": "auth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7342, + "src": "15358:4:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth memory" + } + }, + { + "id": 7360, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7325, + "src": "15367:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 7361, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7327, + "src": "15373:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 7352, + "name": "WebAuthn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8478, + "src": "15280:8:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_WebAuthn_$8478_$", + "typeString": "type(library WebAuthn)" + } + }, + "id": 7353, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15289:6:16", + "memberName": "verify", + "nodeType": "MemberAccess", + "referencedDeclaration": 8477, + "src": "15280:15:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$_t_bool_$_t_struct$_WebAuthnAuth_$8252_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (bytes memory,bool,struct WebAuthn.WebAuthnAuth memory,uint256,uint256) view returns (bool)" + } + }, + "id": 7362, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [ + "15297:9:16", + "15326:9:16", + "15344:12:16", + "15364:1:16", + "15370:1:16" + ], + "names": [ + "challenge", + "requireUV", + "webAuthnAuth", + "x", + "y" + ], + "nodeType": "FunctionCall", + "src": "15280:96:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 7259, + "id": 7363, + "nodeType": "Return", + "src": "15273:103:16" + } + ] + } + }, + { + "errorCall": { + "arguments": [ + { + "id": 7367, + "name": "ownerBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7271, + "src": "15428:10:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 7366, + "name": "InvalidOwnerBytesLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7617, + "src": "15404:23:16", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_bytes_memory_ptr_$returns$_t_error_$", + "typeString": "function (bytes memory) pure returns (error)" + } + }, + "id": 7368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15404:35:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 7369, + "nodeType": "RevertStatement", + "src": "15397:42:16" + } + ] + }, + "documentation": { + "id": 7250, + "nodeType": "StructuredDocumentation", + "src": "13711:281:16", + "text": "@inheritdoc ERC1271\n @dev Used by both `ERC1271.isValidSignature` AND `IAccount.validateUserOp` signature validation.\n @dev Reverts if `ownerBytes` is not compatible with `signature` format.\n @param signature ABI encoded `SignatureWrapper`." + }, + "id": 7371, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_isValidSignature", + "nameLocation": "14006:17:16", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 7256, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "14086:8:16" + }, + "parameters": { + "id": 7255, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7252, + "mutability": "mutable", + "name": "hash", + "nameLocation": "14032:4:16", + "nodeType": "VariableDeclaration", + "scope": 7371, + "src": "14024:12:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7251, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14024:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7254, + "mutability": "mutable", + "name": "signature", + "nameLocation": "14053:9:16", + "nodeType": "VariableDeclaration", + "scope": 7371, + "src": "14038:24:16", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7253, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "14038:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "14023:40:16" + }, + "returnParameters": { + "id": 7259, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7258, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7371, + "src": "14104:4:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7257, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "14104:4:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "14103:6:16" + }, + "scope": 7398, + "src": "13997:1449:16", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "baseFunctions": [ + 6394 + ], + "body": { + "id": 7381, + "nodeType": "Block", + "src": "15722:2:16", + "statements": [] + }, + "documentation": { + "id": 7372, + "nodeType": "StructuredDocumentation", + "src": "15452:171:16", + "text": "@inheritdoc UUPSUpgradeable\n @dev Authorization logic is only based on the `msg.sender` being an owner of this account,\n or `address(this)`." + }, + "id": 7382, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 7379, + "kind": "modifierInvocation", + "modifierName": { + "id": 7378, + "name": "onlyOwner", + "nameLocations": [ + "15712:9:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7652, + "src": "15712:9:16" + }, + "nodeType": "ModifierInvocation", + "src": "15712:9:16" + } + ], + "name": "_authorizeUpgrade", + "nameLocation": "15637:17:16", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 7377, + "nodeType": "OverrideSpecifier", + "overrides": [ + { + "id": 7376, + "name": "UUPSUpgradeable", + "nameLocations": [ + "15695:15:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6422, + "src": "15695:15:16" + } + ], + "src": "15686:25:16" + }, + "parameters": { + "id": 7375, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7374, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7382, + "src": "15655:7:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7373, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15655:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "15654:9:16" + }, + "returnParameters": { + "id": 7380, + "nodeType": "ParameterList", + "parameters": [], + "src": "15722:0:16" + }, + "scope": 7398, + "src": "15628:96:16", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "baseFunctions": [ + 6715 + ], + "body": { + "id": 7396, + "nodeType": "Block", + "src": "15862:51:16", + "statements": [ + { + "expression": { + "components": [ + { + "hexValue": "4769616e6f20536d6172742057616c6c6574", + "id": 7392, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15880:20:16", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_321a444b6eee393fdfbee13e3222c9c543be2342dd1ac24e520dc15d09993511", + "typeString": "literal_string \"Giano Smart Wallet\"" + }, + "value": "Giano Smart Wallet" + }, + { + "hexValue": "31", + "id": 7393, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15902:3:16", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6", + "typeString": "literal_string \"1\"" + }, + "value": "1" + } + ], + "id": 7394, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "15879:27:16", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_stringliteral_321a444b6eee393fdfbee13e3222c9c543be2342dd1ac24e520dc15d09993511_$_t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6_$", + "typeString": "tuple(literal_string \"Giano Smart Wallet\",literal_string \"1\")" + } + }, + "functionReturnParameters": 7391, + "id": 7395, + "nodeType": "Return", + "src": "15872:34:16" + } + ] + }, + "documentation": { + "id": 7383, + "nodeType": "StructuredDocumentation", + "src": "15730:23:16", + "text": "@inheritdoc ERC1271" + }, + "id": 7397, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_domainNameAndVersion", + "nameLocation": "15767:21:16", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 7386, + "nodeType": "OverrideSpecifier", + "overrides": [ + { + "id": 7385, + "name": "ERC1271", + "nameLocations": [ + "15814:7:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6726, + "src": "15814:7:16" + } + ], + "src": "15805:17:16" + }, + "parameters": { + "id": 7384, + "nodeType": "ParameterList", + "parameters": [], + "src": "15788:2:16" + }, + "returnParameters": { + "id": 7391, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7388, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7397, + "src": "15832:13:16", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 7387, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "15832:6:16", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7390, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7397, + "src": "15847:13:16", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 7389, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "15847:6:16", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "15831:30:16" + }, + "scope": 7398, + "src": "15758:155:16", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 7399, + "src": "1195:14720:16", + "usedErrors": [ + 2410, + 2465, + 6375, + 6443, + 6445, + 6787, + 6792, + 6797, + 6802, + 7593, + 7598, + 7603, + 7612, + 7617, + 7622, + 7625, + 7630 + ], + "usedEvents": [ + 6380, + 7637, + 7644 + ] + } + ], + "src": "32:15884:16" + }, + "id": 16 + }, + "src/GianoSmartWalletFactory.sol": { + "ast": { + "absolutePath": "src/GianoSmartWalletFactory.sol", + "exportedSymbols": { + "GianoSmartWallet": [ + 7398 + ], + "GianoSmartWalletFactory": [ + 7565 + ], + "LibClone": [ + 5104 + ] + }, + "id": 7566, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 7400, + "literals": [ + "solidity", + "^", + "0.8", + ".4" + ], + "nodeType": "PragmaDirective", + "src": "32:23:17" + }, + { + "absolutePath": "src/GianoSmartWallet.sol", + "file": "./GianoSmartWallet.sol", + "id": 7402, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7566, + "sourceUnit": 7399, + "src": "57:56:17", + "symbolAliases": [ + { + "foreign": { + "id": 7401, + "name": "GianoSmartWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7398, + "src": "65:16:17", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "solady/utils/LibClone.sol", + "file": "solady/utils/LibClone.sol", + "id": 7404, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7566, + "sourceUnit": 5105, + "src": "114:51:17", + "symbolAliases": [ + { + "foreign": { + "id": 7403, + "name": "LibClone", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5104, + "src": "122:8:17", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "GianoSmartWalletFactory", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 7405, + "nodeType": "StructuredDocumentation", + "src": "167:358:17", + "text": "@title Giano Smart Wallet Factory\n @notice GianoSmartWallet factory, based on Solady's ERC4337Factory.\n @author Applied Blockchain (https://github.com/appliedblockchain/giano)\n @author Coinbase (https://github.com/coinbase/smart-wallet)\n @author Solady (https://github.com/vectorized/solady/blob/main/src/accounts/ERC4337Factory.sol)" + }, + "fullyImplemented": true, + "id": 7565, + "linearizedBaseContracts": [ + 7565 + ], + "name": "GianoSmartWalletFactory", + "nameLocation": "534:23:17", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "documentation": { + "id": 7406, + "nodeType": "StructuredDocumentation", + "src": "564:91:17", + "text": "@notice Address of the ERC-4337 implementation used as implementation for new accounts." + }, + "functionSelector": "5c60da1b", + "id": 7408, + "mutability": "immutable", + "name": "implementation", + "nameLocation": "685:14:17", + "nodeType": "VariableDeclaration", + "scope": 7565, + "src": "660:39:17", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7407, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "660:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": { + "id": 7409, + "nodeType": "StructuredDocumentation", + "src": "706:219:17", + "text": "@notice Emitted when a new account is created.\n @param account The address of the created account.\n @param owners Array of initial owners.\n @param nonce The nonce of the created account." + }, + "eventSelector": "f8e246d8281c915feaf5c1ffd75d9a144f6dbdbbf545e286088661b19d8028f4", + "id": 7418, + "name": "AccountCreated", + "nameLocation": "936:14:17", + "nodeType": "EventDefinition", + "parameters": { + "id": 7417, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7411, + "indexed": true, + "mutability": "mutable", + "name": "account", + "nameLocation": "967:7:17", + "nodeType": "VariableDeclaration", + "scope": 7418, + "src": "951:23:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7410, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "951:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7414, + "indexed": false, + "mutability": "mutable", + "name": "owners", + "nameLocation": "984:6:17", + "nodeType": "VariableDeclaration", + "scope": 7418, + "src": "976:14:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 7412, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "976:5:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 7413, + "nodeType": "ArrayTypeName", + "src": "976:7:17", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7416, + "indexed": false, + "mutability": "mutable", + "name": "nonce", + "nameLocation": "1000:5:17", + "nodeType": "VariableDeclaration", + "scope": 7418, + "src": "992:13:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7415, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "992:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "950:56:17" + }, + "src": "930:77:17" + }, + { + "documentation": { + "id": 7419, + "nodeType": "StructuredDocumentation", + "src": "1013:88:17", + "text": "@notice Thrown when trying to construct with an implementation that is not deployed." + }, + "errorSelector": "870dfeb7", + "id": 7421, + "name": "ImplementationUndeployed", + "nameLocation": "1112:24:17", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7420, + "nodeType": "ParameterList", + "parameters": [], + "src": "1136:2:17" + }, + "src": "1106:33:17" + }, + { + "documentation": { + "id": 7422, + "nodeType": "StructuredDocumentation", + "src": "1146:92:17", + "text": "@notice Thrown when trying to create a new `GianoSmartWallet` account without any owner." + }, + "errorSelector": "3c776be1", + "id": 7424, + "name": "OwnerRequired", + "nameLocation": "1249:13:17", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7423, + "nodeType": "ParameterList", + "parameters": [], + "src": "1262:2:17" + }, + "src": "1243:22:17" + }, + { + "body": { + "id": 7443, + "nodeType": "Block", + "src": "1586:130:17", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7434, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 7430, + "name": "implementation_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7427, + "src": "1600:15:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 7431, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1616:4:17", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "1600:20:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 7432, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1621:6:17", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "1600:27:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 7433, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1631:1:17", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1600:32:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7438, + "nodeType": "IfStatement", + "src": "1596:71:17", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7435, + "name": "ImplementationUndeployed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7421, + "src": "1641:24:17", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" + } + }, + "id": 7436, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1641:26:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 7437, + "nodeType": "RevertStatement", + "src": "1634:33:17" + } + }, + { + "expression": { + "id": 7441, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7439, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7408, + "src": "1677:14:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 7440, + "name": "implementation_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7427, + "src": "1694:15:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1677:32:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 7442, + "nodeType": "ExpressionStatement", + "src": "1677:32:17" + } + ] + }, + "documentation": { + "id": 7425, + "nodeType": "StructuredDocumentation", + "src": "1271:265:17", + "text": "@notice Factory constructor used to initialize the implementation address to use for future\n GianoSmartWallet deployments.\n @param implementation_ The address of the GianoSmartWallet implementation which new accounts will proxy to." + }, + "id": 7444, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7428, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7427, + "mutability": "mutable", + "name": "implementation_", + "nameLocation": "1561:15:17", + "nodeType": "VariableDeclaration", + "scope": 7444, + "src": "1553:23:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7426, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1553:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1552:25:17" + }, + "returnParameters": { + "id": 7429, + "nodeType": "ParameterList", + "parameters": [], + "src": "1586:0:17" + }, + "scope": 7565, + "src": "1541:175:17", + "stateMutability": "payable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 7505, + "nodeType": "Block", + "src": "2588:443:17", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7459, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 7456, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7448, + "src": "2602:6:17", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + }, + "id": 7457, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2609:6:17", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2602:13:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 7458, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2619:1:17", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2602:18:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7464, + "nodeType": "IfStatement", + "src": "2598:71:17", + "trueBody": { + "id": 7463, + "nodeType": "Block", + "src": "2622:47:17", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7460, + "name": "OwnerRequired", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7424, + "src": "2643:13:17", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" + } + }, + "id": 7461, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2643:15:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 7462, + "nodeType": "RevertStatement", + "src": "2636:22:17" + } + ] + } + }, + { + "assignments": [ + 7466, + 7468 + ], + "declarations": [ + { + "constant": false, + "id": 7466, + "mutability": "mutable", + "name": "alreadyDeployed", + "nameLocation": "2685:15:17", + "nodeType": "VariableDeclaration", + "scope": 7505, + "src": "2680:20:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7465, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2680:4:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7468, + "mutability": "mutable", + "name": "accountAddress", + "nameLocation": "2710:14:17", + "nodeType": "VariableDeclaration", + "scope": 7505, + "src": "2702:22:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7467, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2702:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 7479, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 7471, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2764:3:17", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 7472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2768:5:17", + "memberName": "value", + "nodeType": "MemberAccess", + "src": "2764:9:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 7473, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7408, + "src": "2775:14:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 7475, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7448, + "src": "2800:6:17", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + }, + { + "id": 7476, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7450, + "src": "2808:5:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7474, + "name": "_getSalt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7564, + "src": "2791:8:17", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (bytes calldata[] calldata,uint256) pure returns (bytes32)" + } + }, + "id": 7477, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2791:23:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 7469, + "name": "LibClone", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5104, + "src": "2728:8:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibClone_$5104_$", + "typeString": "type(library LibClone)" + } + }, + "id": 7470, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2737:26:17", + "memberName": "createDeterministicERC1967", + "nodeType": "MemberAccess", + "referencedDeclaration": 3642, + "src": "2728:35:17", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$_t_bool_$_t_address_$", + "typeString": "function (uint256,address,bytes32) returns (bool,address)" + } + }, + "id": 7478, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2728:87:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_address_$", + "typeString": "tuple(bool,address)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2679:136:17" + }, + { + "expression": { + "id": 7487, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7480, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7454, + "src": "2826:7:17", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 7484, + "name": "accountAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7468, + "src": "2861:14:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 7483, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2853:8:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_payable_$", + "typeString": "type(address payable)" + }, + "typeName": { + "id": 7482, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2853:8:17", + "stateMutability": "payable", + "typeDescriptions": {} + } + }, + "id": 7485, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2853:23:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 7481, + "name": "GianoSmartWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7398, + "src": "2836:16:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_GianoSmartWallet_$7398_$", + "typeString": "type(contract GianoSmartWallet)" + } + }, + "id": 7486, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2836:41:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + } + }, + "src": "2826:51:17", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + } + }, + "id": 7488, + "nodeType": "ExpressionStatement", + "src": "2826:51:17" + }, + { + "condition": { + "id": 7490, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2892:16:17", + "subExpression": { + "id": 7489, + "name": "alreadyDeployed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7466, + "src": "2893:15:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7504, + "nodeType": "IfStatement", + "src": "2888:137:17", + "trueBody": { + "id": 7503, + "nodeType": "Block", + "src": "2910:115:17", + "statements": [ + { + "eventCall": { + "arguments": [ + { + "id": 7492, + "name": "accountAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7468, + "src": "2944:14:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 7493, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7448, + "src": "2960:6:17", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + }, + { + "id": 7494, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7450, + "src": "2968:5:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7491, + "name": "AccountCreated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7418, + "src": "2929:14:17", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$returns$__$", + "typeString": "function (address,bytes memory[] memory,uint256)" + } + }, + "id": 7495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2929:45:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7496, + "nodeType": "EmitStatement", + "src": "2924:50:17" + }, + { + "expression": { + "arguments": [ + { + "id": 7500, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7448, + "src": "3007:6:17", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + ], + "expression": { + "id": 7497, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7454, + "src": "2988:7:17", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + } + }, + "id": 7499, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2996:10:17", + "memberName": "initialize", + "nodeType": "MemberAccess", + "referencedDeclaration": 6892, + "src": "2988:18:17", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$__$", + "typeString": "function (bytes memory[] memory) payable external" + } + }, + "id": 7501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2988:26:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7502, + "nodeType": "ExpressionStatement", + "src": "2988:26:17" + } + ] + } + } + ] + }, + "documentation": { + "id": 7445, + "nodeType": "StructuredDocumentation", + "src": "1722:738:17", + "text": "@notice Returns the deterministic address for a GianoSmartWallet created with `owners` and `nonce`\n deploys and initializes contract if it has not yet been created.\n @dev Deployed as a ERC-1967 proxy that's implementation is `this.implementation`.\n @param owners Array of initial owners. Each item should be an ABI encoded address or 64 byte public key.\n @param nonce The nonce of the account, a caller defined value which allows multiple accounts\n with the same `owners` to exist at different addresses.\n @return account The address of the ERC-1967 proxy created with inputs `owners`, `nonce`, and\n `this.implementation`." + }, + "functionSelector": "3ffba36f", + "id": 7506, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createAccount", + "nameLocation": "2474:13:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7451, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7448, + "mutability": "mutable", + "name": "owners", + "nameLocation": "2505:6:17", + "nodeType": "VariableDeclaration", + "scope": 7506, + "src": "2488:23:17", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 7446, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2488:5:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 7447, + "nodeType": "ArrayTypeName", + "src": "2488:7:17", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7450, + "mutability": "mutable", + "name": "nonce", + "nameLocation": "2521:5:17", + "nodeType": "VariableDeclaration", + "scope": 7506, + "src": "2513:13:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7449, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2513:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2487:40:17" + }, + "returnParameters": { + "id": 7455, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7454, + "mutability": "mutable", + "name": "account", + "nameLocation": "2579:7:17", + "nodeType": "VariableDeclaration", + "scope": 7506, + "src": "2562:24:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + }, + "typeName": { + "id": 7453, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7452, + "name": "GianoSmartWallet", + "nameLocations": [ + "2562:16:17" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7398, + "src": "2562:16:17" + }, + "referencedDeclaration": 7398, + "src": "2562:16:17", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + } + }, + "visibility": "internal" + } + ], + "src": "2561:26:17" + }, + "scope": 7565, + "src": "2465:566:17", + "stateMutability": "payable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 7531, + "nodeType": "Block", + "src": "3486:116:17", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7519, + "name": "initCodeHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7544, + "src": "3540:12:17", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$", + "typeString": "function () view returns (bytes32)" + } + }, + "id": 7520, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3540:14:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "id": 7522, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7510, + "src": "3565:6:17", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + }, + { + "id": 7523, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7512, + "src": "3573:5:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7521, + "name": "_getSalt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7564, + "src": "3556:8:17", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (bytes calldata[] calldata,uint256) pure returns (bytes32)" + } + }, + "id": 7524, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3556:23:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "id": 7527, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "3589:4:17", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GianoSmartWalletFactory_$7565", + "typeString": "contract GianoSmartWalletFactory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_GianoSmartWalletFactory_$7565", + "typeString": "contract GianoSmartWalletFactory" + } + ], + "id": 7526, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3581:7:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 7525, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3581:7:17", + "typeDescriptions": {} + } + }, + "id": 7528, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3581:13:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 7517, + "name": "LibClone", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5104, + "src": "3503:8:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibClone_$5104_$", + "typeString": "type(library LibClone)" + } + }, + "id": 7518, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3512:27:17", + "memberName": "predictDeterministicAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 5081, + "src": "3503:36:17", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_address_$", + "typeString": "function (bytes32,bytes32,address) pure returns (address)" + } + }, + "id": 7529, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3503:92:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 7516, + "id": 7530, + "nodeType": "Return", + "src": "3496:99:17" + } + ] + }, + "documentation": { + "id": 7507, + "nodeType": "StructuredDocumentation", + "src": "3037:352:17", + "text": "@notice Returns the deterministic address of the account that would be created by `createAccount`.\n @param owners Array of initial owners. Each item should be an ABI encoded address or 64 byte public key.\n @param nonce The nonce provided to `createAccount()`.\n @return The predicted account deployment address." + }, + "functionSelector": "250b1b41", + "id": 7532, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAddress", + "nameLocation": "3403:10:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7513, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7510, + "mutability": "mutable", + "name": "owners", + "nameLocation": "3431:6:17", + "nodeType": "VariableDeclaration", + "scope": 7532, + "src": "3414:23:17", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 7508, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3414:5:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 7509, + "nodeType": "ArrayTypeName", + "src": "3414:7:17", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7512, + "mutability": "mutable", + "name": "nonce", + "nameLocation": "3447:5:17", + "nodeType": "VariableDeclaration", + "scope": 7532, + "src": "3439:13:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7511, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3439:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3413:40:17" + }, + "returnParameters": { + "id": 7516, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7515, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7532, + "src": "3477:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7514, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3477:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3476:9:17" + }, + "scope": 7565, + "src": "3394:208:17", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 7543, + "nodeType": "Block", + "src": "3873:68:17", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 7540, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7408, + "src": "3919:14:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 7538, + "name": "LibClone", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5104, + "src": "3890:8:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibClone_$5104_$", + "typeString": "type(library LibClone)" + } + }, + "id": 7539, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3899:19:17", + "memberName": "initCodeHashERC1967", + "nodeType": "MemberAccess", + "referencedDeclaration": 3662, + "src": "3890:28:17", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_bytes32_$", + "typeString": "function (address) pure returns (bytes32)" + } + }, + "id": 7541, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3890:44:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 7537, + "id": 7542, + "nodeType": "Return", + "src": "3883:51:17" + } + ] + }, + "documentation": { + "id": 7533, + "nodeType": "StructuredDocumentation", + "src": "3608:198:17", + "text": "@notice Returns the initialization code hash of the account:\n a ERC1967 proxy that's implementation is `this.implementation`.\n @return The initialization code hash." + }, + "functionSelector": "db4c545e", + "id": 7544, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeHash", + "nameLocation": "3820:12:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7534, + "nodeType": "ParameterList", + "parameters": [], + "src": "3832:2:17" + }, + "returnParameters": { + "id": 7537, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7536, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7544, + "src": "3864:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7535, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3864:7:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3863:9:17" + }, + "scope": 7565, + "src": "3811:130:17", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 7563, + "nodeType": "Block", + "src": "4348:60:17", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 7558, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7548, + "src": "4386:6:17", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + }, + { + "id": 7559, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7550, + "src": "4394:5:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 7556, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "4375:3:17", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 7557, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4379:6:17", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "4375:10:17", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 7560, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4375:25:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 7555, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "4365:9:17", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 7561, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4365:36:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 7554, + "id": 7562, + "nodeType": "Return", + "src": "4358:43:17" + } + ] + }, + "documentation": { + "id": 7545, + "nodeType": "StructuredDocumentation", + "src": "3947:306:17", + "text": "@notice Returns the create2 salt for `LibClone.predictDeterministicAddress`\n @param owners Array of initial owners. Each item should be an ABI encoded address or 64 byte public key.\n @param nonce The nonce provided to `createAccount()`.\n @return The computed salt." + }, + "id": 7564, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getSalt", + "nameLocation": "4267:8:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7551, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7548, + "mutability": "mutable", + "name": "owners", + "nameLocation": "4293:6:17", + "nodeType": "VariableDeclaration", + "scope": 7564, + "src": "4276:23:17", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 7546, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4276:5:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 7547, + "nodeType": "ArrayTypeName", + "src": "4276:7:17", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7550, + "mutability": "mutable", + "name": "nonce", + "nameLocation": "4309:5:17", + "nodeType": "VariableDeclaration", + "scope": 7564, + "src": "4301:13:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7549, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4301:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4275:40:17" + }, + "returnParameters": { + "id": 7554, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7553, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7564, + "src": "4339:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7552, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4339:7:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4338:9:17" + }, + "scope": 7565, + "src": "4258:150:17", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 7566, + "src": "525:3885:17", + "usedErrors": [ + 7421, + 7424 + ], + "usedEvents": [ + 7418 + ] + } + ], + "src": "32:4379:17" + }, + "id": 17 + }, + "src/MultiOwnable.sol": { + "ast": { + "absolutePath": "src/MultiOwnable.sol", + "exportedSymbols": { + "MultiOwnable": [ + 8101 + ], + "MultiOwnableStorage": [ + 7585 + ] + }, + "id": 8102, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 7567, + "literals": [ + "solidity", + "^", + "0.8", + ".18" + ], + "nodeType": "PragmaDirective", + "src": "32:24:18" + }, + { + "canonicalName": "MultiOwnableStorage", + "documentation": { + "id": 7568, + "nodeType": "StructuredDocumentation", + "src": "58:130:18", + "text": "@notice Storage layout used by this contract.\n @custom:storage-location erc7201:appliedblockchain.storage.MultiOwnable" + }, + "id": 7585, + "members": [ + { + "constant": false, + "id": 7571, + "mutability": "mutable", + "name": "nextOwnerIndex", + "nameLocation": "285:14:18", + "nodeType": "VariableDeclaration", + "scope": 7585, + "src": "277:22:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7570, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "277:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7574, + "mutability": "mutable", + "name": "removedOwnersCount", + "nameLocation": "374:18:18", + "nodeType": "VariableDeclaration", + "scope": 7585, + "src": "366:26:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7573, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "366:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7579, + "mutability": "mutable", + "name": "ownerAtIndex", + "nameLocation": "989:12:18", + "nodeType": "VariableDeclaration", + "scope": 7585, + "src": "951:50:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$", + "typeString": "mapping(uint256 => bytes)" + }, + "typeName": { + "id": 7578, + "keyName": "index", + "keyNameLocation": "967:5:18", + "keyType": { + "id": 7576, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "959:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "951:37:18", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$", + "typeString": "mapping(uint256 => bytes)" + }, + "valueName": "owner", + "valueNameLocation": "982:5:18", + "valueType": { + "id": 7577, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "976:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7584, + "mutability": "mutable", + "name": "isOwner", + "nameLocation": "1164:7:18", + "nodeType": "VariableDeclaration", + "scope": 7585, + "src": "1125:46:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_bool_$", + "typeString": "mapping(bytes => bool)" + }, + "typeName": { + "id": 7583, + "keyName": "bytes_", + "keyNameLocation": "1139:6:18", + "keyType": { + "id": 7581, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1133:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "nodeType": "Mapping", + "src": "1125:38:18", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_bool_$", + "typeString": "mapping(bytes => bool)" + }, + "valueName": "isOwner_", + "valueNameLocation": "1154:8:18", + "valueType": { + "id": 7582, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1149:4:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "visibility": "internal" + } + ], + "name": "MultiOwnableStorage", + "nameLocation": "195:19:18", + "nodeType": "StructDefinition", + "scope": 8102, + "src": "188:986:18", + "visibility": "public" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "MultiOwnable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 7586, + "nodeType": "StructuredDocumentation", + "src": "1176:251:18", + "text": "@title Multi Ownable\n @notice Auth contract allowing multiple owners, each identified as bytes.\n @author Applied Blockchain (https://github.com/appliedblockchain/giano)\n @author Coinbase (https://github.com/coinbase/smart-wallet)" + }, + "fullyImplemented": true, + "id": 8101, + "linearizedBaseContracts": [ + 8101 + ], + "name": "MultiOwnable", + "nameLocation": "1436:12:18", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "documentation": { + "id": 7587, + "nodeType": "StructuredDocumentation", + "src": "1455:293:18", + "text": "@dev Slot for the `MultiOwnableStorage` struct in storage.\n Computed from\n keccak256(abi.encode(uint256(keccak256(\"appliedblockchain.storage.MultiOwnable\")) - 1)) & ~bytes32(uint256(0xff))\n Follows ERC-7201 (see https://eips.ethereum.org/EIPS/eip-7201)." + }, + "id": 7590, + "mutability": "constant", + "name": "MUTLI_OWNABLE_STORAGE_LOCATION", + "nameLocation": "1778:30:18", + "nodeType": "VariableDeclaration", + "scope": 8101, + "src": "1753:132:18", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7588, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1753:7:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307830363237663732616630653666343132313935623064386163626534333862323830393064643534356237643233333166636366373737323335363166353030", + "id": 7589, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1819:66:18", + "typeDescriptions": { + "typeIdentifier": "t_rational_2784490016061331327668105261358156012958660789088861839901469404483232593152_by_1", + "typeString": "int_const 2784...(68 digits omitted)...3152" + }, + "value": "0x0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f500" + }, + "visibility": "private" + }, + { + "documentation": { + "id": 7591, + "nodeType": "StructuredDocumentation", + "src": "1892:101:18", + "text": "@notice Thrown when the `msg.sender` is not an owner and is trying to call a privileged function." + }, + "errorSelector": "82b42900", + "id": 7593, + "name": "Unauthorized", + "nameLocation": "2004:12:18", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7592, + "nodeType": "ParameterList", + "parameters": [], + "src": "2016:2:18" + }, + "src": "1998:21:18" + }, + { + "documentation": { + "id": 7594, + "nodeType": "StructuredDocumentation", + "src": "2025:112:18", + "text": "@notice Thrown when trying to add an already registered owner.\n @param owner The owner bytes." + }, + "errorSelector": "8d16255a", + "id": 7598, + "name": "AlreadyOwner", + "nameLocation": "2148:12:18", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7597, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7596, + "mutability": "mutable", + "name": "owner", + "nameLocation": "2167:5:18", + "nodeType": "VariableDeclaration", + "scope": 7598, + "src": "2161:11:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7595, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2161:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "2160:13:18" + }, + "src": "2142:32:18" + }, + { + "documentation": { + "id": 7599, + "nodeType": "StructuredDocumentation", + "src": "2180:139:18", + "text": "@notice Thrown when trying to remove an owner from an index that is empty.\n @param index The targeted index for removal." + }, + "errorSelector": "68188e7a", + "id": 7603, + "name": "NoOwnerAtIndex", + "nameLocation": "2330:14:18", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7602, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7601, + "mutability": "mutable", + "name": "index", + "nameLocation": "2353:5:18", + "nodeType": "VariableDeclaration", + "scope": 7603, + "src": "2345:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7600, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2345:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2344:15:18" + }, + "src": "2324:36:18" + }, + { + "documentation": { + "id": 7604, + "nodeType": "StructuredDocumentation", + "src": "2366:276:18", + "text": "@notice Thrown when `owner` argument does not match owner found at index.\n @param index The index of the owner to be removed.\n @param expectedOwner The owner passed in the remove call.\n @param actualOwner The actual owner at `index`." + }, + "errorSelector": "781f2e39", + "id": 7612, + "name": "WrongOwnerAtIndex", + "nameLocation": "2653:17:18", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7611, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7606, + "mutability": "mutable", + "name": "index", + "nameLocation": "2679:5:18", + "nodeType": "VariableDeclaration", + "scope": 7612, + "src": "2671:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7605, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2671:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7608, + "mutability": "mutable", + "name": "expectedOwner", + "nameLocation": "2692:13:18", + "nodeType": "VariableDeclaration", + "scope": 7612, + "src": "2686:19:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7607, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2686:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7610, + "mutability": "mutable", + "name": "actualOwner", + "nameLocation": "2713:11:18", + "nodeType": "VariableDeclaration", + "scope": 7612, + "src": "2707:17:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7609, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2707:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "2670:55:18" + }, + "src": "2647:79:18" + }, + { + "documentation": { + "id": 7613, + "nodeType": "StructuredDocumentation", + "src": "2732:173:18", + "text": "@notice Thrown when a provided owner is neither 64 bytes long (for public key)\n nor a ABI encoded address.\n @param owner The invalid owner." + }, + "errorSelector": "4eeab722", + "id": 7617, + "name": "InvalidOwnerBytesLength", + "nameLocation": "2916:23:18", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7616, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7615, + "mutability": "mutable", + "name": "owner", + "nameLocation": "2946:5:18", + "nodeType": "VariableDeclaration", + "scope": 7617, + "src": "2940:11:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7614, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2940:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "2939:13:18" + }, + "src": "2910:43:18" + }, + { + "documentation": { + "id": 7618, + "nodeType": "StructuredDocumentation", + "src": "2959:142:18", + "text": "@notice Thrown if a provided owner is 32 bytes long but does not fit in an `address` type.\n @param owner The invalid owner." + }, + "errorSelector": "bff1ac65", + "id": 7622, + "name": "InvalidEthereumAddressOwner", + "nameLocation": "3112:27:18", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7621, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7620, + "mutability": "mutable", + "name": "owner", + "nameLocation": "3146:5:18", + "nodeType": "VariableDeclaration", + "scope": 7622, + "src": "3140:11:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7619, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3140:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3139:13:18" + }, + "src": "3106:47:18" + }, + { + "documentation": { + "id": 7623, + "nodeType": "StructuredDocumentation", + "src": "3159:89:18", + "text": "@notice Thrown when removeOwnerAtIndex is called and there is only one current owner." + }, + "errorSelector": "948bf897", + "id": 7625, + "name": "LastOwner", + "nameLocation": "3259:9:18", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7624, + "nodeType": "ParameterList", + "parameters": [], + "src": "3268:2:18" + }, + "src": "3253:18:18" + }, + { + "documentation": { + "id": 7626, + "nodeType": "StructuredDocumentation", + "src": "3277:160:18", + "text": "@notice Thrown when removeLastOwner is called and there is more than one current owner.\n @param ownersRemaining The number of current owners." + }, + "errorSelector": "823f1aa8", + "id": 7630, + "name": "NotLastOwner", + "nameLocation": "3448:12:18", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7629, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7628, + "mutability": "mutable", + "name": "ownersRemaining", + "nameLocation": "3469:15:18", + "nodeType": "VariableDeclaration", + "scope": 7630, + "src": "3461:23:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7627, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3461:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3460:25:18" + }, + "src": "3442:44:18" + }, + { + "anonymous": false, + "documentation": { + "id": 7631, + "nodeType": "StructuredDocumentation", + "src": "3492:154:18", + "text": "@notice Emitted when a new owner is registered.\n @param index The owner index of the owner added.\n @param owner The owner added." + }, + "eventSelector": "38109edc26e166b5579352ce56a50813177eb25208fd90d61f2f378386220220", + "id": 7637, + "name": "AddOwner", + "nameLocation": "3657:8:18", + "nodeType": "EventDefinition", + "parameters": { + "id": 7636, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7633, + "indexed": true, + "mutability": "mutable", + "name": "index", + "nameLocation": "3682:5:18", + "nodeType": "VariableDeclaration", + "scope": 7637, + "src": "3666:21:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7632, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3666:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7635, + "indexed": false, + "mutability": "mutable", + "name": "owner", + "nameLocation": "3695:5:18", + "nodeType": "VariableDeclaration", + "scope": 7637, + "src": "3689:11:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7634, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3689:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3665:36:18" + }, + "src": "3651:51:18" + }, + { + "anonymous": false, + "documentation": { + "id": 7638, + "nodeType": "StructuredDocumentation", + "src": "3708:152:18", + "text": "@notice Emitted when an owner is removed.\n @param index The owner index of the owner removed.\n @param owner The owner removed." + }, + "eventSelector": "cf95bbfe6f870f8cc40482dc3dccdafd268f0e9ce0a4f24ea1bea9be64e505ff", + "id": 7644, + "name": "RemoveOwner", + "nameLocation": "3871:11:18", + "nodeType": "EventDefinition", + "parameters": { + "id": 7643, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7640, + "indexed": true, + "mutability": "mutable", + "name": "index", + "nameLocation": "3899:5:18", + "nodeType": "VariableDeclaration", + "scope": 7644, + "src": "3883:21:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7639, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3883:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7642, + "indexed": false, + "mutability": "mutable", + "name": "owner", + "nameLocation": "3912:5:18", + "nodeType": "VariableDeclaration", + "scope": 7644, + "src": "3906:11:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7641, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3906:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3882:36:18" + }, + "src": "3865:54:18" + }, + { + "body": { + "id": 7651, + "nodeType": "Block", + "src": "4037:41:18", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7647, + "name": "_checkOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8091, + "src": "4047:11:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$__$", + "typeString": "function () view" + } + }, + "id": 7648, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4047:13:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7649, + "nodeType": "ExpressionStatement", + "src": "4047:13:18" + }, + { + "id": 7650, + "nodeType": "PlaceholderStatement", + "src": "4070:1:18" + } + ] + }, + "documentation": { + "id": 7645, + "nodeType": "StructuredDocumentation", + "src": "3925:78:18", + "text": "@notice Access control modifier ensuring the caller is an authorized owner" + }, + "id": 7652, + "name": "onlyOwner", + "nameLocation": "4017:9:18", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 7646, + "nodeType": "ParameterList", + "parameters": [], + "src": "4026:2:18" + }, + "src": "4008:70:18", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 7671, + "nodeType": "Block", + "src": "4250:96:18", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 7663, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7655, + "src": "4288:5:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 7661, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "4277:3:18", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 7662, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4281:6:18", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "4277:10:18", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 7664, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4277:17:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 7668, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "4296:42:18", + "subExpression": { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7665, + "name": "_getMultiOwnableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8100, + "src": "4296:23:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_MultiOwnableStorage_$7585_storage_ptr_$", + "typeString": "function () pure returns (struct MultiOwnableStorage storage pointer)" + } + }, + "id": 7666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4296:25:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage storage pointer" + } + }, + "id": 7667, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "4322:14:18", + "memberName": "nextOwnerIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 7571, + "src": "4296:40:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7660, + "name": "_addOwnerAtIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8000, + "src": "4260:16:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_uint256_$returns$__$", + "typeString": "function (bytes memory,uint256)" + } + }, + "id": 7669, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4260:79:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7670, + "nodeType": "ExpressionStatement", + "src": "4260:79:18" + } + ] + }, + "documentation": { + "id": 7653, + "nodeType": "StructuredDocumentation", + "src": "4084:94:18", + "text": "@notice Adds a new Ethereum-address owner.\n @param owner The owner address." + }, + "functionSelector": "0f0f3f24", + "id": 7672, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 7658, + "kind": "modifierInvocation", + "modifierName": { + "id": 7657, + "name": "onlyOwner", + "nameLocations": [ + "4240:9:18" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7652, + "src": "4240:9:18" + }, + "nodeType": "ModifierInvocation", + "src": "4240:9:18" + } + ], + "name": "addOwnerAddress", + "nameLocation": "4192:15:18", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7656, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7655, + "mutability": "mutable", + "name": "owner", + "nameLocation": "4216:5:18", + "nodeType": "VariableDeclaration", + "scope": 7672, + "src": "4208:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7654, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4208:7:18", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4207:15:18" + }, + "returnParameters": { + "id": 7659, + "nodeType": "ParameterList", + "parameters": [], + "src": "4250:0:18" + }, + "scope": 8101, + "src": "4183:163:18", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 7694, + "nodeType": "Block", + "src": "4585:95:18", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 7685, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7675, + "src": "4623:1:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 7686, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7677, + "src": "4626:1:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 7683, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "4612:3:18", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 7684, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4616:6:18", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "4612:10:18", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 7687, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4612:16:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 7691, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "4630:42:18", + "subExpression": { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7688, + "name": "_getMultiOwnableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8100, + "src": "4630:23:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_MultiOwnableStorage_$7585_storage_ptr_$", + "typeString": "function () pure returns (struct MultiOwnableStorage storage pointer)" + } + }, + "id": 7689, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4630:25:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage storage pointer" + } + }, + "id": 7690, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "4656:14:18", + "memberName": "nextOwnerIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 7571, + "src": "4630:40:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7682, + "name": "_addOwnerAtIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8000, + "src": "4595:16:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_uint256_$returns$__$", + "typeString": "function (bytes memory,uint256)" + } + }, + "id": 7692, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4595:78:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7693, + "nodeType": "ExpressionStatement", + "src": "4595:78:18" + } + ] + }, + "documentation": { + "id": 7673, + "nodeType": "StructuredDocumentation", + "src": "4352:152:18", + "text": "@notice Adds a new public-key owner.\n @param x The owner public key x coordinate.\n @param y The owner public key y coordinate." + }, + "functionSelector": "29565e3b", + "id": 7695, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 7680, + "kind": "modifierInvocation", + "modifierName": { + "id": 7679, + "name": "onlyOwner", + "nameLocations": [ + "4575:9:18" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7652, + "src": "4575:9:18" + }, + "nodeType": "ModifierInvocation", + "src": "4575:9:18" + } + ], + "name": "addOwnerPublicKey", + "nameLocation": "4518:17:18", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7678, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7675, + "mutability": "mutable", + "name": "x", + "nameLocation": "4544:1:18", + "nodeType": "VariableDeclaration", + "scope": 7695, + "src": "4536:9:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7674, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4536:7:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7677, + "mutability": "mutable", + "name": "y", + "nameLocation": "4555:1:18", + "nodeType": "VariableDeclaration", + "scope": 7695, + "src": "4547:9:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7676, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4547:7:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4535:22:18" + }, + "returnParameters": { + "id": 7681, + "nodeType": "ParameterList", + "parameters": [], + "src": "4585:0:18" + }, + "scope": 8101, + "src": "4509:171:18", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 7719, + "nodeType": "Block", + "src": "5170:126:18", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7708, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7705, + "name": "ownerCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7849, + "src": "5184:10:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 7706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5184:12:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "31", + "id": 7707, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5200:1:18", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "5184:17:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7713, + "nodeType": "IfStatement", + "src": "5180:66:18", + "trueBody": { + "id": 7712, + "nodeType": "Block", + "src": "5203:43:18", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7709, + "name": "LastOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7625, + "src": "5224:9:18", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" + } + }, + "id": 7710, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5224:11:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 7711, + "nodeType": "RevertStatement", + "src": "5217:18:18" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 7715, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7698, + "src": "5276:5:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 7716, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7700, + "src": "5283:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 7714, + "name": "_removeOwnerAtIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8067, + "src": "5256:19:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bytes_calldata_ptr_$returns$__$", + "typeString": "function (uint256,bytes calldata)" + } + }, + "id": 7717, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5256:33:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7718, + "nodeType": "ExpressionStatement", + "src": "5256:33:18" + } + ] + }, + "documentation": { + "id": 7696, + "nodeType": "StructuredDocumentation", + "src": "4686:387:18", + "text": "@notice Removes owner at the given `index`.\n @dev Reverts if the owner is not registered at `index`.\n @dev Reverts if there is currently only one owner.\n @dev Reverts if `owner` does not match bytes found at `index`.\n @param index The index of the owner to be removed.\n @param owner The ABI encoded bytes of the owner to be removed." + }, + "functionSelector": "89625b57", + "id": 7720, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 7703, + "kind": "modifierInvocation", + "modifierName": { + "id": 7702, + "name": "onlyOwner", + "nameLocations": [ + "5160:9:18" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7652, + "src": "5160:9:18" + }, + "nodeType": "ModifierInvocation", + "src": "5160:9:18" + } + ], + "name": "removeOwnerAtIndex", + "nameLocation": "5087:18:18", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7701, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7698, + "mutability": "mutable", + "name": "index", + "nameLocation": "5114:5:18", + "nodeType": "VariableDeclaration", + "scope": 7720, + "src": "5106:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7697, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5106:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7700, + "mutability": "mutable", + "name": "owner", + "nameLocation": "5136:5:18", + "nodeType": "VariableDeclaration", + "scope": 7720, + "src": "5121:20:18", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7699, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5121:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5105:37:18" + }, + "returnParameters": { + "id": 7704, + "nodeType": "ParameterList", + "parameters": [], + "src": "5170:0:18" + }, + "scope": 8101, + "src": "5078:218:18", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 7749, + "nodeType": "Block", + "src": "5828:194:18", + "statements": [ + { + "assignments": [ + 7731 + ], + "declarations": [ + { + "constant": false, + "id": 7731, + "mutability": "mutable", + "name": "ownersRemaining", + "nameLocation": "5846:15:18", + "nodeType": "VariableDeclaration", + "scope": 7749, + "src": "5838:23:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7730, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5838:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7734, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7732, + "name": "ownerCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7849, + "src": "5864:10:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 7733, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5864:12:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5838:38:18" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7737, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7735, + "name": "ownersRemaining", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7731, + "src": "5890:15:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "31", + "id": 7736, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5908:1:18", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "5890:19:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7743, + "nodeType": "IfStatement", + "src": "5886:86:18", + "trueBody": { + "id": 7742, + "nodeType": "Block", + "src": "5911:61:18", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 7739, + "name": "ownersRemaining", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7731, + "src": "5945:15:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7738, + "name": "NotLastOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7630, + "src": "5932:12:18", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$_t_error_$", + "typeString": "function (uint256) pure returns (error)" + } + }, + "id": 7740, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5932:29:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 7741, + "nodeType": "RevertStatement", + "src": "5925:36:18" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 7745, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7723, + "src": "6002:5:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 7746, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7725, + "src": "6009:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 7744, + "name": "_removeOwnerAtIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8067, + "src": "5982:19:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bytes_calldata_ptr_$returns$__$", + "typeString": "function (uint256,bytes calldata)" + } + }, + "id": 7747, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5982:33:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7748, + "nodeType": "ExpressionStatement", + "src": "5982:33:18" + } + ] + }, + "documentation": { + "id": 7721, + "nodeType": "StructuredDocumentation", + "src": "5302:432:18", + "text": "@notice Removes owner at the given `index`, which should be the only current owner.\n @dev Reverts if the owner is not registered at `index`.\n @dev Reverts if there is currently more than one owner.\n @dev Reverts if `owner` does not match bytes found at `index`.\n @param index The index of the owner to be removed.\n @param owner The ABI encoded bytes of the owner to be removed." + }, + "functionSelector": "b8197367", + "id": 7750, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 7728, + "kind": "modifierInvocation", + "modifierName": { + "id": 7727, + "name": "onlyOwner", + "nameLocations": [ + "5818:9:18" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7652, + "src": "5818:9:18" + }, + "nodeType": "ModifierInvocation", + "src": "5818:9:18" + } + ], + "name": "removeLastOwner", + "nameLocation": "5748:15:18", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7726, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7723, + "mutability": "mutable", + "name": "index", + "nameLocation": "5772:5:18", + "nodeType": "VariableDeclaration", + "scope": 7750, + "src": "5764:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7722, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5764:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7725, + "mutability": "mutable", + "name": "owner", + "nameLocation": "5794:5:18", + "nodeType": "VariableDeclaration", + "scope": 7750, + "src": "5779:20:18", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7724, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5779:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5763:37:18" + }, + "returnParameters": { + "id": 7729, + "nodeType": "ParameterList", + "parameters": [], + "src": "5828:0:18" + }, + "scope": 8101, + "src": "5739:283:18", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 7767, + "nodeType": "Block", + "src": "6315:78:18", + "statements": [ + { + "expression": { + "baseExpression": { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7758, + "name": "_getMultiOwnableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8100, + "src": "6332:23:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_MultiOwnableStorage_$7585_storage_ptr_$", + "typeString": "function () pure returns (struct MultiOwnableStorage storage pointer)" + } + }, + "id": 7759, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6332:25:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage storage pointer" + } + }, + "id": 7760, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6358:7:18", + "memberName": "isOwner", + "nodeType": "MemberAccess", + "referencedDeclaration": 7584, + "src": "6332:33:18", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_bool_$", + "typeString": "mapping(bytes memory => bool)" + } + }, + "id": 7765, + "indexExpression": { + "arguments": [ + { + "id": 7763, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7753, + "src": "6377:7:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 7761, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "6366:3:18", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 7762, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6370:6:18", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "6366:10:18", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 7764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6366:19:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6332:54:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 7757, + "id": 7766, + "nodeType": "Return", + "src": "6325:61:18" + } + ] + }, + "documentation": { + "id": 7751, + "nodeType": "StructuredDocumentation", + "src": "6028:206:18", + "text": "@notice Checks if the given `account` address is registered as owner.\n @param account The account address to check.\n @return `true` if the account is an owner else `false`." + }, + "functionSelector": "a2e1a8d8", + "id": 7768, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isOwnerAddress", + "nameLocation": "6248:14:18", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7754, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7753, + "mutability": "mutable", + "name": "account", + "nameLocation": "6271:7:18", + "nodeType": "VariableDeclaration", + "scope": 7768, + "src": "6263:15:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7752, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6263:7:18", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6262:17:18" + }, + "returnParameters": { + "id": 7757, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7756, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7768, + "src": "6309:4:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7755, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6309:4:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "6308:6:18" + }, + "scope": 8101, + "src": "6239:154:18", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 7788, + "nodeType": "Block", + "src": "6734:75:18", + "statements": [ + { + "expression": { + "baseExpression": { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7778, + "name": "_getMultiOwnableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8100, + "src": "6751:23:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_MultiOwnableStorage_$7585_storage_ptr_$", + "typeString": "function () pure returns (struct MultiOwnableStorage storage pointer)" + } + }, + "id": 7779, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6751:25:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage storage pointer" + } + }, + "id": 7780, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6777:7:18", + "memberName": "isOwner", + "nodeType": "MemberAccess", + "referencedDeclaration": 7584, + "src": "6751:33:18", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_bool_$", + "typeString": "mapping(bytes memory => bool)" + } + }, + "id": 7786, + "indexExpression": { + "arguments": [ + { + "id": 7783, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7771, + "src": "6796:1:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 7784, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7773, + "src": "6799:1:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 7781, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "6785:3:18", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 7782, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6789:6:18", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "6785:10:18", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 7785, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6785:16:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6751:51:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 7777, + "id": 7787, + "nodeType": "Return", + "src": "6744:58:18" + } + ] + }, + "documentation": { + "id": 7769, + "nodeType": "StructuredDocumentation", + "src": "6399:247:18", + "text": "@notice Checks if the given `x`, `y` public key is registered as owner.\n @param x The public key x coordinate.\n @param y The public key y coordinate.\n @return `true` if the account is an owner else `false`." + }, + "functionSelector": "066a1eb7", + "id": 7789, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isOwnerPublicKey", + "nameLocation": "6660:16:18", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7774, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7771, + "mutability": "mutable", + "name": "x", + "nameLocation": "6685:1:18", + "nodeType": "VariableDeclaration", + "scope": 7789, + "src": "6677:9:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7770, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6677:7:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7773, + "mutability": "mutable", + "name": "y", + "nameLocation": "6696:1:18", + "nodeType": "VariableDeclaration", + "scope": 7789, + "src": "6688:9:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7772, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6688:7:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "6676:22:18" + }, + "returnParameters": { + "id": 7777, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7776, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7789, + "src": "6728:4:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7775, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6728:4:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "6727:6:18" + }, + "scope": 8101, + "src": "6651:158:18", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 7803, + "nodeType": "Block", + "src": "7131:66:18", + "statements": [ + { + "expression": { + "baseExpression": { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7797, + "name": "_getMultiOwnableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8100, + "src": "7148:23:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_MultiOwnableStorage_$7585_storage_ptr_$", + "typeString": "function () pure returns (struct MultiOwnableStorage storage pointer)" + } + }, + "id": 7798, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7148:25:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage storage pointer" + } + }, + "id": 7799, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7174:7:18", + "memberName": "isOwner", + "nodeType": "MemberAccess", + "referencedDeclaration": 7584, + "src": "7148:33:18", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_bool_$", + "typeString": "mapping(bytes memory => bool)" + } + }, + "id": 7801, + "indexExpression": { + "id": 7800, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7792, + "src": "7182:7:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7148:42:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 7796, + "id": 7802, + "nodeType": "Return", + "src": "7141:49:18" + } + ] + }, + "documentation": { + "id": 7790, + "nodeType": "StructuredDocumentation", + "src": "6815:232:18", + "text": "@notice Checks if the given `account` bytes is registered as owner.\n @param account The account, should be ABI encoded address or public key.\n @return `true` if the account is an owner else `false`." + }, + "functionSelector": "1ca5393f", + "id": 7804, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isOwnerBytes", + "nameLocation": "7061:12:18", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7793, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7792, + "mutability": "mutable", + "name": "account", + "nameLocation": "7087:7:18", + "nodeType": "VariableDeclaration", + "scope": 7804, + "src": "7074:20:18", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7791, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7074:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "7073:22:18" + }, + "returnParameters": { + "id": 7796, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7795, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7804, + "src": "7125:4:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7794, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7125:4:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "7124:6:18" + }, + "scope": 8101, + "src": "7052:145:18", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 7818, + "nodeType": "Block", + "src": "7486:69:18", + "statements": [ + { + "expression": { + "baseExpression": { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7812, + "name": "_getMultiOwnableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8100, + "src": "7503:23:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_MultiOwnableStorage_$7585_storage_ptr_$", + "typeString": "function () pure returns (struct MultiOwnableStorage storage pointer)" + } + }, + "id": 7813, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7503:25:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage storage pointer" + } + }, + "id": 7814, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7529:12:18", + "memberName": "ownerAtIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 7579, + "src": "7503:38:18", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$", + "typeString": "mapping(uint256 => bytes storage ref)" + } + }, + "id": 7816, + "indexExpression": { + "id": 7815, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7807, + "src": "7542:5:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7503:45:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "functionReturnParameters": 7811, + "id": 7817, + "nodeType": "Return", + "src": "7496:52:18" + } + ] + }, + "documentation": { + "id": 7805, + "nodeType": "StructuredDocumentation", + "src": "7203:198:18", + "text": "@notice Returns the owner bytes at the given `index`.\n @param index The index to lookup.\n @return The owner bytes (empty if no owner is registered at this `index`)." + }, + "functionSelector": "8ea69029", + "id": 7819, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ownerAtIndex", + "nameLocation": "7415:12:18", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7808, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7807, + "mutability": "mutable", + "name": "index", + "nameLocation": "7436:5:18", + "nodeType": "VariableDeclaration", + "scope": 7819, + "src": "7428:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7806, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7428:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7427:15:18" + }, + "returnParameters": { + "id": 7811, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7810, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7819, + "src": "7472:12:18", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7809, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7472:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "7471:14:18" + }, + "scope": 8101, + "src": "7406:149:18", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 7829, + "nodeType": "Block", + "src": "7779:64:18", + "statements": [ + { + "expression": { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7825, + "name": "_getMultiOwnableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8100, + "src": "7796:23:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_MultiOwnableStorage_$7585_storage_ptr_$", + "typeString": "function () pure returns (struct MultiOwnableStorage storage pointer)" + } + }, + "id": 7826, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7796:25:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage storage pointer" + } + }, + "id": 7827, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7822:14:18", + "memberName": "nextOwnerIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 7571, + "src": "7796:40:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 7824, + "id": 7828, + "nodeType": "Return", + "src": "7789:47:18" + } + ] + }, + "documentation": { + "id": 7820, + "nodeType": "StructuredDocumentation", + "src": "7561:149:18", + "text": "@notice Returns the next index that will be used to add a new owner.\n @return The next index that will be used to add a new owner." + }, + "functionSelector": "d948fd2e", + "id": 7830, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "nextOwnerIndex", + "nameLocation": "7724:14:18", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7821, + "nodeType": "ParameterList", + "parameters": [], + "src": "7738:2:18" + }, + "returnParameters": { + "id": 7824, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7823, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7830, + "src": "7770:7:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7822, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7770:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7769:9:18" + }, + "scope": 8101, + "src": "7715:128:18", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 7848, + "nodeType": "Block", + "src": "8010:130:18", + "statements": [ + { + "assignments": [ + 7838 + ], + "declarations": [ + { + "constant": false, + "id": 7838, + "mutability": "mutable", + "name": "$", + "nameLocation": "8048:1:18", + "nodeType": "VariableDeclaration", + "scope": 7848, + "src": "8020:29:18", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage" + }, + "typeName": { + "id": 7837, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7836, + "name": "MultiOwnableStorage", + "nameLocations": [ + "8020:19:18" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7585, + "src": "8020:19:18" + }, + "referencedDeclaration": 7585, + "src": "8020:19:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 7841, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7839, + "name": "_getMultiOwnableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8100, + "src": "8052:23:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_MultiOwnableStorage_$7585_storage_ptr_$", + "typeString": "function () pure returns (struct MultiOwnableStorage storage pointer)" + } + }, + "id": 7840, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8052:25:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8020:57:18" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7846, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 7842, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7838, + "src": "8094:1:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage storage pointer" + } + }, + "id": 7843, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8096:14:18", + "memberName": "nextOwnerIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 7571, + "src": "8094:16:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "expression": { + "id": 7844, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7838, + "src": "8113:1:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage storage pointer" + } + }, + "id": 7845, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8115:18:18", + "memberName": "removedOwnersCount", + "nodeType": "MemberAccess", + "referencedDeclaration": 7574, + "src": "8113:20:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8094:39:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 7835, + "id": 7847, + "nodeType": "Return", + "src": "8087:46:18" + } + ] + }, + "documentation": { + "id": 7831, + "nodeType": "StructuredDocumentation", + "src": "7849:96:18", + "text": "@notice Returns the current number of owners\n @return The current owner count" + }, + "functionSelector": "0db02622", + "id": 7849, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ownerCount", + "nameLocation": "7959:10:18", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7832, + "nodeType": "ParameterList", + "parameters": [], + "src": "7969:2:18" + }, + "returnParameters": { + "id": 7835, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7834, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7849, + "src": "8001:7:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7833, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8001:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8000:9:18" + }, + "scope": 8101, + "src": "7950:190:18", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 7859, + "nodeType": "Block", + "src": "8417:68:18", + "statements": [ + { + "expression": { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7855, + "name": "_getMultiOwnableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8100, + "src": "8434:23:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_MultiOwnableStorage_$7585_storage_ptr_$", + "typeString": "function () pure returns (struct MultiOwnableStorage storage pointer)" + } + }, + "id": 7856, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8434:25:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage storage pointer" + } + }, + "id": 7857, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8460:18:18", + "memberName": "removedOwnersCount", + "nodeType": "MemberAccess", + "referencedDeclaration": 7574, + "src": "8434:44:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 7854, + "id": 7858, + "nodeType": "Return", + "src": "8427:51:18" + } + ] + }, + "documentation": { + "id": 7850, + "nodeType": "StructuredDocumentation", + "src": "8146:198:18", + "text": "@notice Tracks the number of owners removed\n @dev Used with `this.nextOwnerIndex` to avoid removing all owners\n @return The number of owners that have been removed." + }, + "functionSelector": "36d9cf9b", + "id": 7860, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "removedOwnersCount", + "nameLocation": "8358:18:18", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7851, + "nodeType": "ParameterList", + "parameters": [], + "src": "8376:2:18" + }, + "returnParameters": { + "id": 7854, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7853, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7860, + "src": "8408:7:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7852, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8408:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8407:9:18" + }, + "scope": 8101, + "src": "8349:136:18", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 7955, + "nodeType": "Block", + "src": "8862:603:18", + "statements": [ + { + "assignments": [ + 7869 + ], + "declarations": [ + { + "constant": false, + "id": 7869, + "mutability": "mutable", + "name": "$", + "nameLocation": "8900:1:18", + "nodeType": "VariableDeclaration", + "scope": 7955, + "src": "8872:29:18", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage" + }, + "typeName": { + "id": 7868, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7867, + "name": "MultiOwnableStorage", + "nameLocations": [ + "8872:19:18" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7585, + "src": "8872:19:18" + }, + "referencedDeclaration": 7585, + "src": "8872:19:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 7872, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7870, + "name": "_getMultiOwnableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8100, + "src": "8904:23:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_MultiOwnableStorage_$7585_storage_ptr_$", + "typeString": "function () pure returns (struct MultiOwnableStorage storage pointer)" + } + }, + "id": 7871, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8904:25:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8872:57:18" + }, + { + "assignments": [ + 7874 + ], + "declarations": [ + { + "constant": false, + "id": 7874, + "mutability": "mutable", + "name": "nextOwnerIndex_", + "nameLocation": "8947:15:18", + "nodeType": "VariableDeclaration", + "scope": 7955, + "src": "8939:23:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7873, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8939:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7877, + "initialValue": { + "expression": { + "id": 7875, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7869, + "src": "8965:1:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage storage pointer" + } + }, + "id": 7876, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8967:14:18", + "memberName": "nextOwnerIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 7571, + "src": "8965:16:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8939:42:18" + }, + { + "body": { + "id": 7947, + "nodeType": "Block", + "src": "9031:384:18", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 7900, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7893, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "baseExpression": { + "id": 7888, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7864, + "src": "9049:6:18", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + "id": 7890, + "indexExpression": { + "id": 7889, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7879, + "src": "9056:1:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9049:9:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 7891, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9059:6:18", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "9049:16:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "3332", + "id": 7892, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9069:2:18", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "9049:22:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7899, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "baseExpression": { + "id": 7894, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7864, + "src": "9075:6:18", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + "id": 7896, + "indexExpression": { + "id": 7895, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7879, + "src": "9082:1:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9075:9:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 7897, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9085:6:18", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "9075:16:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "3634", + "id": 7898, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9095:2:18", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "9075:22:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "9049:48:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7908, + "nodeType": "IfStatement", + "src": "9045:128:18", + "trueBody": { + "id": 7907, + "nodeType": "Block", + "src": "9099:74:18", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "baseExpression": { + "id": 7902, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7864, + "src": "9148:6:18", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + "id": 7904, + "indexExpression": { + "id": 7903, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7879, + "src": "9155:1:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9148:9:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 7901, + "name": "InvalidOwnerBytesLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7617, + "src": "9124:23:18", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_bytes_memory_ptr_$returns$_t_error_$", + "typeString": "function (bytes memory) pure returns (error)" + } + }, + "id": 7905, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9124:34:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 7906, + "nodeType": "RevertStatement", + "src": "9117:41:18" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 7930, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7914, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "baseExpression": { + "id": 7909, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7864, + "src": "9191:6:18", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + "id": 7911, + "indexExpression": { + "id": 7910, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7879, + "src": "9198:1:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9191:9:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 7912, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9201:6:18", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "9191:16:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "3332", + "id": 7913, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9211:2:18", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "9191:22:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7929, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "baseExpression": { + "id": 7919, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7864, + "src": "9233:6:18", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + "id": 7921, + "indexExpression": { + "id": 7920, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7879, + "src": "9240:1:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9233:9:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 7918, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9225:7:18", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 7917, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9225:7:18", + "typeDescriptions": {} + } + }, + "id": 7922, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9225:18:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 7916, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9217:7:18", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 7915, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9217:7:18", + "typeDescriptions": {} + } + }, + "id": 7923, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9217:27:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 7926, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9252:7:18", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 7925, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "9252:7:18", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + } + ], + "id": 7924, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "9247:4:18", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 7927, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9247:13:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint160", + "typeString": "type(uint160)" + } + }, + "id": 7928, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "9261:3:18", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "9247:17:18", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "src": "9217:47:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "9191:73:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7938, + "nodeType": "IfStatement", + "src": "9187:157:18", + "trueBody": { + "id": 7937, + "nodeType": "Block", + "src": "9266:78:18", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "baseExpression": { + "id": 7932, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7864, + "src": "9319:6:18", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + "id": 7934, + "indexExpression": { + "id": 7933, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7879, + "src": "9326:1:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9319:9:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 7931, + "name": "InvalidEthereumAddressOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7622, + "src": "9291:27:18", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_bytes_memory_ptr_$returns$_t_error_$", + "typeString": "function (bytes memory) pure returns (error)" + } + }, + "id": 7935, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9291:38:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 7936, + "nodeType": "RevertStatement", + "src": "9284:45:18" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "baseExpression": { + "id": 7940, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7864, + "src": "9375:6:18", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + "id": 7942, + "indexExpression": { + "id": 7941, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7879, + "src": "9382:1:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9375:9:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 7944, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "9386:17:18", + "subExpression": { + "id": 7943, + "name": "nextOwnerIndex_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7874, + "src": "9386:15:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7939, + "name": "_addOwnerAtIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8000, + "src": "9358:16:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_uint256_$returns$__$", + "typeString": "function (bytes memory,uint256)" + } + }, + "id": 7945, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9358:46:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7946, + "nodeType": "ExpressionStatement", + "src": "9358:46:18" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7884, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7881, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7879, + "src": "9007:1:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 7882, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7864, + "src": "9011:6:18", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + "id": 7883, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9018:6:18", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "9011:13:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9007:17:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7948, + "initializationExpression": { + "assignments": [ + 7879 + ], + "declarations": [ + { + "constant": false, + "id": 7879, + "mutability": "mutable", + "name": "i", + "nameLocation": "9004:1:18", + "nodeType": "VariableDeclaration", + "scope": 7948, + "src": "8996:9:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7878, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8996:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7880, + "nodeType": "VariableDeclarationStatement", + "src": "8996:9:18" + }, + "isSimpleCounterLoop": true, + "loopExpression": { + "expression": { + "id": 7886, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "9026:3:18", + "subExpression": { + "id": 7885, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7879, + "src": "9026:1:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7887, + "nodeType": "ExpressionStatement", + "src": "9026:3:18" + }, + "nodeType": "ForStatement", + "src": "8991:424:18" + }, + { + "expression": { + "id": 7953, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 7949, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7869, + "src": "9424:1:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage storage pointer" + } + }, + "id": 7951, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "9426:14:18", + "memberName": "nextOwnerIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 7571, + "src": "9424:16:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 7952, + "name": "nextOwnerIndex_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7874, + "src": "9443:15:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9424:34:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7954, + "nodeType": "ExpressionStatement", + "src": "9424:34:18" + } + ] + }, + "documentation": { + "id": 7861, + "nodeType": "StructuredDocumentation", + "src": "8491:299:18", + "text": "@notice Initialize the owners of this contract.\n @dev Intended to be called contract is first deployed and never again.\n @dev Reverts if a provided owner is neither 64 bytes long (for public key) nor a valid address.\n @param owners The initial set of owners." + }, + "id": 7956, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_initializeOwners", + "nameLocation": "8804:17:18", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7865, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7864, + "mutability": "mutable", + "name": "owners", + "nameLocation": "8837:6:18", + "nodeType": "VariableDeclaration", + "scope": 7956, + "src": "8822:21:18", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 7862, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8822:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 7863, + "nodeType": "ArrayTypeName", + "src": "8822:7:18", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + } + ], + "src": "8821:23:18" + }, + "returnParameters": { + "id": 7866, + "nodeType": "ParameterList", + "parameters": [], + "src": "8862:0:18" + }, + "scope": 8101, + "src": "8795:670:18", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 7999, + "nodeType": "Block", + "src": "9782:246:18", + "statements": [ + { + "condition": { + "arguments": [ + { + "id": 7965, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7959, + "src": "9809:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 7964, + "name": "isOwnerBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7804, + "src": "9796:12:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (bytes memory) view returns (bool)" + } + }, + "id": 7966, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9796:19:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7971, + "nodeType": "IfStatement", + "src": "9792:51:18", + "trueBody": { + "errorCall": { + "arguments": [ + { + "id": 7968, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7959, + "src": "9837:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 7967, + "name": "AlreadyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7598, + "src": "9824:12:18", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_bytes_memory_ptr_$returns$_t_error_$", + "typeString": "function (bytes memory) pure returns (error)" + } + }, + "id": 7969, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9824:19:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 7970, + "nodeType": "RevertStatement", + "src": "9817:26:18" + } + }, + { + "assignments": [ + 7974 + ], + "declarations": [ + { + "constant": false, + "id": 7974, + "mutability": "mutable", + "name": "$", + "nameLocation": "9882:1:18", + "nodeType": "VariableDeclaration", + "scope": 7999, + "src": "9854:29:18", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage" + }, + "typeName": { + "id": 7973, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7972, + "name": "MultiOwnableStorage", + "nameLocations": [ + "9854:19:18" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7585, + "src": "9854:19:18" + }, + "referencedDeclaration": 7585, + "src": "9854:19:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 7977, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7975, + "name": "_getMultiOwnableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8100, + "src": "9886:23:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_MultiOwnableStorage_$7585_storage_ptr_$", + "typeString": "function () pure returns (struct MultiOwnableStorage storage pointer)" + } + }, + "id": 7976, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9886:25:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9854:57:18" + }, + { + "expression": { + "id": 7984, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 7978, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7974, + "src": "9921:1:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage storage pointer" + } + }, + "id": 7981, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9923:7:18", + "memberName": "isOwner", + "nodeType": "MemberAccess", + "referencedDeclaration": 7584, + "src": "9921:9:18", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_bool_$", + "typeString": "mapping(bytes memory => bool)" + } + }, + "id": 7982, + "indexExpression": { + "id": 7980, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7959, + "src": "9931:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "9921:16:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 7983, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9940:4:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "9921:23:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7985, + "nodeType": "ExpressionStatement", + "src": "9921:23:18" + }, + { + "expression": { + "id": 7992, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 7986, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7974, + "src": "9954:1:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage storage pointer" + } + }, + "id": 7989, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9956:12:18", + "memberName": "ownerAtIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 7579, + "src": "9954:14:18", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$", + "typeString": "mapping(uint256 => bytes storage ref)" + } + }, + "id": 7990, + "indexExpression": { + "id": 7988, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7961, + "src": "9969:5:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "9954:21:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 7991, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7959, + "src": "9978:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "src": "9954:29:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "id": 7993, + "nodeType": "ExpressionStatement", + "src": "9954:29:18" + }, + { + "eventCall": { + "arguments": [ + { + "id": 7995, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7961, + "src": "10008:5:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 7996, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7959, + "src": "10015:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 7994, + "name": "AddOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7637, + "src": "9999:8:18", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (uint256,bytes memory)" + } + }, + "id": 7997, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9999:22:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7998, + "nodeType": "EmitStatement", + "src": "9994:27:18" + } + ] + }, + "documentation": { + "id": 7957, + "nodeType": "StructuredDocumentation", + "src": "9471:228:18", + "text": "@notice Adds an owner at the given `index`.\n @dev Reverts if `owner` is already registered as an owner.\n @param owner The owner raw bytes to register.\n @param index The index to write to." + }, + "id": 8000, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addOwnerAtIndex", + "nameLocation": "9713:16:18", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7962, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7959, + "mutability": "mutable", + "name": "owner", + "nameLocation": "9743:5:18", + "nodeType": "VariableDeclaration", + "scope": 8000, + "src": "9730:18:18", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7958, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "9730:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7961, + "mutability": "mutable", + "name": "index", + "nameLocation": "9758:5:18", + "nodeType": "VariableDeclaration", + "scope": 8000, + "src": "9750:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7960, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9750:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9729:35:18" + }, + "returnParameters": { + "id": 7963, + "nodeType": "ParameterList", + "parameters": [], + "src": "9782:0:18" + }, + "scope": 8101, + "src": "9704:324:18", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 8066, + "nodeType": "Block", + "src": "10450:492:18", + "statements": [ + { + "assignments": [ + 8009 + ], + "declarations": [ + { + "constant": false, + "id": 8009, + "mutability": "mutable", + "name": "owner_", + "nameLocation": "10473:6:18", + "nodeType": "VariableDeclaration", + "scope": 8066, + "src": "10460:19:18", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 8008, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "10460:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 8013, + "initialValue": { + "arguments": [ + { + "id": 8011, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8003, + "src": "10495:5:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8010, + "name": "ownerAtIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7819, + "src": "10482:12:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (uint256) view returns (bytes memory)" + } + }, + "id": 8012, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10482:19:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10460:41:18" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8017, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 8014, + "name": "owner_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8009, + "src": "10515:6:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 8015, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10522:6:18", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "10515:13:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 8016, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10532:1:18", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "10515:18:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8022, + "nodeType": "IfStatement", + "src": "10511:52:18", + "trueBody": { + "errorCall": { + "arguments": [ + { + "id": 8019, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8003, + "src": "10557:5:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8018, + "name": "NoOwnerAtIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7603, + "src": "10542:14:18", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$_t_error_$", + "typeString": "function (uint256) pure returns (error)" + } + }, + "id": 8020, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10542:21:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 8021, + "nodeType": "RevertStatement", + "src": "10535:28:18" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8029, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 8024, + "name": "owner_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8009, + "src": "10587:6:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 8023, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "10577:9:18", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 8025, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10577:17:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "id": 8027, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8005, + "src": "10608:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 8026, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "10598:9:18", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 8028, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10598:16:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "10577:37:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8037, + "nodeType": "IfStatement", + "src": "10573:151:18", + "trueBody": { + "id": 8036, + "nodeType": "Block", + "src": "10616:108:18", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 8031, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8003, + "src": "10663:5:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 8032, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8005, + "src": "10685:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + { + "id": 8033, + "name": "owner_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8009, + "src": "10705:6:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 8030, + "name": "WrongOwnerAtIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7612, + "src": "10637:17:18", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_error_$", + "typeString": "function (uint256,bytes memory,bytes memory) pure returns (error)" + } + }, + "id": 8034, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [ + "10656:5:18", + "10670:13:18", + "10692:11:18" + ], + "names": [ + "index", + "expectedOwner", + "actualOwner" + ], + "nodeType": "FunctionCall", + "src": "10637:76:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 8035, + "nodeType": "RevertStatement", + "src": "10630:83:18" + } + ] + } + }, + { + "assignments": [ + 8040 + ], + "declarations": [ + { + "constant": false, + "id": 8040, + "mutability": "mutable", + "name": "$", + "nameLocation": "10762:1:18", + "nodeType": "VariableDeclaration", + "scope": 8066, + "src": "10734:29:18", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage" + }, + "typeName": { + "id": 8039, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 8038, + "name": "MultiOwnableStorage", + "nameLocations": [ + "10734:19:18" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7585, + "src": "10734:19:18" + }, + "referencedDeclaration": 7585, + "src": "10734:19:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 8043, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 8041, + "name": "_getMultiOwnableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8100, + "src": "10766:23:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_MultiOwnableStorage_$7585_storage_ptr_$", + "typeString": "function () pure returns (struct MultiOwnableStorage storage pointer)" + } + }, + "id": 8042, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10766:25:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10734:57:18" + }, + { + "expression": { + "id": 8048, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "10801:23:18", + "subExpression": { + "baseExpression": { + "expression": { + "id": 8044, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8040, + "src": "10808:1:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage storage pointer" + } + }, + "id": 8045, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10810:7:18", + "memberName": "isOwner", + "nodeType": "MemberAccess", + "referencedDeclaration": 7584, + "src": "10808:9:18", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_bool_$", + "typeString": "mapping(bytes memory => bool)" + } + }, + "id": 8047, + "indexExpression": { + "id": 8046, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8005, + "src": "10818:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10808:16:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8049, + "nodeType": "ExpressionStatement", + "src": "10801:23:18" + }, + { + "expression": { + "id": 8054, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "10834:28:18", + "subExpression": { + "baseExpression": { + "expression": { + "id": 8050, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8040, + "src": "10841:1:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage storage pointer" + } + }, + "id": 8051, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10843:12:18", + "memberName": "ownerAtIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 7579, + "src": "10841:14:18", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$", + "typeString": "mapping(uint256 => bytes storage ref)" + } + }, + "id": 8053, + "indexExpression": { + "id": 8052, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8003, + "src": "10856:5:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10841:21:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8055, + "nodeType": "ExpressionStatement", + "src": "10834:28:18" + }, + { + "expression": { + "id": 8059, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "10872:22:18", + "subExpression": { + "expression": { + "id": 8056, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8040, + "src": "10872:1:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage storage pointer" + } + }, + "id": 8058, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "10874:18:18", + "memberName": "removedOwnersCount", + "nodeType": "MemberAccess", + "referencedDeclaration": 7574, + "src": "10872:20:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8060, + "nodeType": "ExpressionStatement", + "src": "10872:22:18" + }, + { + "eventCall": { + "arguments": [ + { + "id": 8062, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8003, + "src": "10922:5:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 8063, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8005, + "src": "10929:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 8061, + "name": "RemoveOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7644, + "src": "10910:11:18", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (uint256,bytes memory)" + } + }, + "id": 8064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10910:25:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8065, + "nodeType": "EmitStatement", + "src": "10905:30:18" + } + ] + }, + "documentation": { + "id": 8001, + "nodeType": "StructuredDocumentation", + "src": "10034:328:18", + "text": "@notice Removes owner at the given `index`.\n @dev Reverts if the owner is not registered at `index`.\n @dev Reverts if `owner` does not match bytes found at `index`.\n @param index The index of the owner to be removed.\n @param owner The ABI encoded bytes of the owner to be removed." + }, + "id": 8067, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeOwnerAtIndex", + "nameLocation": "10376:19:18", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8006, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8003, + "mutability": "mutable", + "name": "index", + "nameLocation": "10404:5:18", + "nodeType": "VariableDeclaration", + "scope": 8067, + "src": "10396:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8002, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10396:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8005, + "mutability": "mutable", + "name": "owner", + "nameLocation": "10426:5:18", + "nodeType": "VariableDeclaration", + "scope": 8067, + "src": "10411:20:18", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 8004, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "10411:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "10395:37:18" + }, + "returnParameters": { + "id": 8007, + "nodeType": "ParameterList", + "parameters": [], + "src": "10450:0:18" + }, + "scope": 8101, + "src": "10367:575:18", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 8090, + "nodeType": "Block", + "src": "11165:144:18", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 8083, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "expression": { + "id": 8072, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "11194:3:18", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 8073, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11198:6:18", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "11194:10:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 8071, + "name": "isOwnerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7768, + "src": "11179:14:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 8074, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11179:26:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 8081, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 8075, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "11210:3:18", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 8076, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11214:6:18", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "11210:10:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "id": 8079, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "11232:4:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MultiOwnable_$8101", + "typeString": "contract MultiOwnable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_MultiOwnable_$8101", + "typeString": "contract MultiOwnable" + } + ], + "id": 8078, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11224:7:18", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 8077, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11224:7:18", + "typeDescriptions": {} + } + }, + "id": 8080, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11224:13:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "11210:27:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 8082, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11209:29:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "11179:59:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8086, + "nodeType": "IfStatement", + "src": "11175:96:18", + "trueBody": { + "id": 8085, + "nodeType": "Block", + "src": "11240:31:18", + "statements": [ + { + "functionReturnParameters": 8070, + "id": 8084, + "nodeType": "Return", + "src": "11254:7:18" + } + ] + } + }, + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 8087, + "name": "Unauthorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7593, + "src": "11288:12:18", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" + } + }, + "id": 8088, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11288:14:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 8089, + "nodeType": "RevertStatement", + "src": "11281:21:18" + } + ] + }, + "documentation": { + "id": 8068, + "nodeType": "StructuredDocumentation", + "src": "10948:167:18", + "text": "@notice Checks if the sender is an owner of this contract or the contract itself.\n @dev Revert if the sender is not an owner fo the contract itself." + }, + "id": 8091, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkOwner", + "nameLocation": "11129:11:18", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8069, + "nodeType": "ParameterList", + "parameters": [], + "src": "11140:2:18" + }, + "returnParameters": { + "id": 8070, + "nodeType": "ParameterList", + "parameters": [], + "src": "11165:0:18" + }, + "scope": 8101, + "src": "11120:189:18", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 8099, + "nodeType": "Block", + "src": "11583:105:18", + "statements": [ + { + "AST": { + "nativeSrc": "11618:64:18", + "nodeType": "YulBlock", + "src": "11618:64:18", + "statements": [ + { + "nativeSrc": "11632:40:18", + "nodeType": "YulAssignment", + "src": "11632:40:18", + "value": { + "name": "MUTLI_OWNABLE_STORAGE_LOCATION", + "nativeSrc": "11642:30:18", + "nodeType": "YulIdentifier", + "src": "11642:30:18" + }, + "variableNames": [ + { + "name": "$.slot", + "nativeSrc": "11632:6:18", + "nodeType": "YulIdentifier", + "src": "11632:6:18" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 8096, + "isOffset": false, + "isSlot": true, + "src": "11632:6:18", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 7590, + "isOffset": false, + "isSlot": false, + "src": "11642:30:18", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 8098, + "nodeType": "InlineAssembly", + "src": "11593:89:18" + } + ] + }, + "documentation": { + "id": 8092, + "nodeType": "StructuredDocumentation", + "src": "11315:174:18", + "text": "@notice Helper function to get a storage reference to the `MultiOwnableStorage` struct.\n @return $ A storage reference to the `MultiOwnableStorage` struct." + }, + "id": 8100, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getMultiOwnableStorage", + "nameLocation": "11503:23:18", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8093, + "nodeType": "ParameterList", + "parameters": [], + "src": "11526:2:18" + }, + "returnParameters": { + "id": 8097, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8096, + "mutability": "mutable", + "name": "$", + "nameLocation": "11580:1:18", + "nodeType": "VariableDeclaration", + "scope": 8100, + "src": "11552:29:18", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage" + }, + "typeName": { + "id": 8095, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 8094, + "name": "MultiOwnableStorage", + "nameLocations": [ + "11552:19:18" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7585, + "src": "11552:19:18" + }, + "referencedDeclaration": 7585, + "src": "11552:19:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage" + } + }, + "visibility": "internal" + } + ], + "src": "11551:31:18" + }, + "scope": 8101, + "src": "11494:194:18", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 8102, + "src": "1427:10263:18", + "usedErrors": [ + 7593, + 7598, + 7603, + 7612, + 7617, + 7622, + 7625, + 7630 + ], + "usedEvents": [ + 7637, + 7644 + ] + } + ], + "src": "32:11659:18" + }, + "id": 18 + }, + "src/utils/ERC1271InputGenerator.sol": { + "ast": { + "absolutePath": "src/utils/ERC1271InputGenerator.sol", + "exportedSymbols": { + "ERC1271InputGenerator": [ + 8219 + ], + "GianoSmartWallet": [ + 7398 + ] + }, + "id": 8220, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 8103, + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "32:23:19" + }, + { + "absolutePath": "src/GianoSmartWallet.sol", + "file": "../GianoSmartWallet.sol", + "id": 8105, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 8220, + "sourceUnit": 7399, + "src": "57:57:19", + "symbolAliases": [ + { + "foreign": { + "id": 8104, + "name": "GianoSmartWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7398, + "src": "65:16:19", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "ERC1271InputGenerator", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 8106, + "nodeType": "StructuredDocumentation", + "src": "116:716:19", + "text": "@title ERC1271 Input Generator\n @notice Helper contract for generating an ERC-1271 input hash to sign for deployed and undeployed\n GianoSmartWallet. May be useful for generating ERC-6492 compliant signatures.\n Inspired by Ambire's DeploylessUniversalSigValidator\n https://github.com/AmbireTech/signature-validator/blob/d5f84f5fc00bfdf79b80205b983a8258b6d1b3ea/contracts/DeploylessUniversalSigValidator.sol.\n @dev This contract is not meant to ever actually be deployed, only mock deployed and used via a static eth_call.\n @author Applied Blockchain (https://github.com/appliedblockchain/giano)\n @author Coinbase (https://github.com/coinbase/smart-wallet)" + }, + "fullyImplemented": true, + "id": 8219, + "linearizedBaseContracts": [ + 8219 + ], + "name": "ERC1271InputGenerator", + "nameLocation": "841:21:19", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 8107, + "nodeType": "StructuredDocumentation", + "src": "869:78:19", + "text": "@notice Thrown when call to `accountFactory` with `factoryCalldata` fails." + }, + "errorSelector": "128aaaa0", + "id": 8109, + "name": "AccountDeploymentFailed", + "nameLocation": "958:23:19", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 8108, + "nodeType": "ParameterList", + "parameters": [], + "src": "981:2:19" + }, + "src": "952:32:19" + }, + { + "documentation": { + "id": 8110, + "nodeType": "StructuredDocumentation", + "src": "990:216:19", + "text": "@notice Thrown when the address returned from call to `accountFactory` does not\n match passed account\n @param account The passed account\n @param returned The returned account" + }, + "errorSelector": "c8624383", + "id": 8116, + "name": "ReturnedAddressDoesNotMatchAccount", + "nameLocation": "1217:34:19", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 8115, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8112, + "mutability": "mutable", + "name": "account", + "nameLocation": "1260:7:19", + "nodeType": "VariableDeclaration", + "scope": 8116, + "src": "1252:15:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8111, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1252:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8114, + "mutability": "mutable", + "name": "returned", + "nameLocation": "1277:8:19", + "nodeType": "VariableDeclaration", + "scope": 8116, + "src": "1269:16:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8113, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1269:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1251:35:19" + }, + "src": "1211:76:19" + }, + { + "body": { + "id": 8139, + "nodeType": "Block", + "src": "2162:632:19", + "statements": [ + { + "assignments": [ + 8130 + ], + "declarations": [ + { + "constant": false, + "id": 8130, + "mutability": "mutable", + "name": "replaySafeHash", + "nameLocation": "2518:14:19", + "nodeType": "VariableDeclaration", + "scope": 8139, + "src": "2510:22:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8129, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2510:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 8137, + "initialValue": { + "arguments": [ + { + "id": 8132, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8120, + "src": "2562:7:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + } + }, + { + "id": 8133, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8122, + "src": "2571:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 8134, + "name": "accountFactory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "2577:14:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8135, + "name": "factoryCalldata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8126, + "src": "2593:15:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 8131, + "name": "_gianoSmartWallet1271Input", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8218, + "src": "2535:26:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_GianoSmartWallet_$7398_$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (contract GianoSmartWallet,bytes32,address,bytes memory) returns (bytes32)" + } + }, + "id": 8136, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2535:74:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2510:99:19" + }, + { + "AST": { + "nativeSrc": "2628:160:19", + "nodeType": "YulBlock", + "src": "2628:160:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2687:4:19", + "nodeType": "YulLiteral", + "src": "2687:4:19", + "type": "", + "value": "0x80" + }, + { + "name": "replaySafeHash", + "nativeSrc": "2693:14:19", + "nodeType": "YulIdentifier", + "src": "2693:14:19" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2680:6:19", + "nodeType": "YulIdentifier", + "src": "2680:6:19" + }, + "nativeSrc": "2680:28:19", + "nodeType": "YulFunctionCall", + "src": "2680:28:19" + }, + "nativeSrc": "2680:28:19", + "nodeType": "YulExpressionStatement", + "src": "2680:28:19" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2767:4:19", + "nodeType": "YulLiteral", + "src": "2767:4:19", + "type": "", + "value": "0x80" + }, + { + "kind": "number", + "nativeSrc": "2773:4:19", + "nodeType": "YulLiteral", + "src": "2773:4:19", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "return", + "nativeSrc": "2760:6:19", + "nodeType": "YulIdentifier", + "src": "2760:6:19" + }, + "nativeSrc": "2760:18:19", + "nodeType": "YulFunctionCall", + "src": "2760:18:19" + }, + "nativeSrc": "2760:18:19", + "nodeType": "YulExpressionStatement", + "src": "2760:18:19" + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 8130, + "isOffset": false, + "isSlot": false, + "src": "2693:14:19", + "valueSize": 1 + } + ], + "id": 8138, + "nodeType": "InlineAssembly", + "src": "2619:169:19" + } + ] + }, + "documentation": { + "id": 8117, + "nodeType": "StructuredDocumentation", + "src": "1293:758:19", + "text": "@notice Computes and returns the expected ERC-1271 replay-safe hash for a GianoSmartWallet.\n @dev `accountFactory` can be any address if the account is already deployed.\n @dev `factoryCalldata` can be 0x if the account is already deployed.\n @dev If calling with solidity, the `replaySafeHash` will be `.code`.\n @param account The account that will receive the ERC-1271 `isValidSignature` call.\n @param hash The hash the wallet was asked to sign.\n @param accountFactory The factory that will be used to deploy the account (if not already deployed).\n @param factoryCalldata The calldata that will be used to deploy the account (if not already deployed)." + }, + "id": 8140, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8127, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8120, + "mutability": "mutable", + "name": "account", + "nameLocation": "2085:7:19", + "nodeType": "VariableDeclaration", + "scope": 8140, + "src": "2068:24:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + }, + "typeName": { + "id": 8119, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 8118, + "name": "GianoSmartWallet", + "nameLocations": [ + "2068:16:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7398, + "src": "2068:16:19" + }, + "referencedDeclaration": 7398, + "src": "2068:16:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8122, + "mutability": "mutable", + "name": "hash", + "nameLocation": "2102:4:19", + "nodeType": "VariableDeclaration", + "scope": 8140, + "src": "2094:12:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8121, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2094:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8124, + "mutability": "mutable", + "name": "accountFactory", + "nameLocation": "2116:14:19", + "nodeType": "VariableDeclaration", + "scope": 8140, + "src": "2108:22:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8123, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2108:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8126, + "mutability": "mutable", + "name": "factoryCalldata", + "nameLocation": "2145:15:19", + "nodeType": "VariableDeclaration", + "scope": 8140, + "src": "2132:28:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 8125, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2132:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "2067:94:19" + }, + "returnParameters": { + "id": 8128, + "nodeType": "ParameterList", + "parameters": [], + "src": "2162:0:19" + }, + "scope": 8219, + "src": "2056:738:19", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 8217, + "nodeType": "Block", + "src": "3769:717:19", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8162, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "arguments": [ + { + "id": 8157, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8144, + "src": "3870:7:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + } + ], + "id": 8156, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3862:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 8155, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3862:7:19", + "typeDescriptions": {} + } + }, + "id": 8158, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3862:16:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 8159, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3879:4:19", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "3862:21:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 8160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3884:6:19", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "3862:28:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 8161, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3893:1:19", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3862:32:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8169, + "nodeType": "IfStatement", + "src": "3858:98:19", + "trueBody": { + "id": 8168, + "nodeType": "Block", + "src": "3896:60:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 8165, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8146, + "src": "3940:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 8163, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8144, + "src": "3917:7:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + } + }, + "id": 8164, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3925:14:19", + "memberName": "replaySafeHash", + "nodeType": "MemberAccess", + "referencedDeclaration": 6628, + "src": "3917:22:19", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32) view external returns (bytes32)" + } + }, + "id": 8166, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3917:28:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 8154, + "id": 8167, + "nodeType": "Return", + "src": "3910:35:19" + } + ] + } + }, + { + "assignments": [ + 8171, + 8173 + ], + "declarations": [ + { + "constant": false, + "id": 8171, + "mutability": "mutable", + "name": "success", + "nameLocation": "4003:7:19", + "nodeType": "VariableDeclaration", + "scope": 8217, + "src": "3998:12:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8170, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3998:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8173, + "mutability": "mutable", + "name": "result", + "nameLocation": "4025:6:19", + "nodeType": "VariableDeclaration", + "scope": 8217, + "src": "4012:19:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 8172, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4012:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 8178, + "initialValue": { + "arguments": [ + { + "id": 8176, + "name": "factoryCalldata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8150, + "src": "4055:15:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 8174, + "name": "accountFactory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8148, + "src": "4035:14:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 8175, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4050:4:19", + "memberName": "call", + "nodeType": "MemberAccess", + "src": "4035:19:19", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 8177, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4035:36:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3997:74:19" + }, + { + "condition": { + "id": 8180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4085:8:19", + "subExpression": { + "id": 8179, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8171, + "src": "4086:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8185, + "nodeType": "IfStatement", + "src": "4081:71:19", + "trueBody": { + "id": 8184, + "nodeType": "Block", + "src": "4095:57:19", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 8181, + "name": "AccountDeploymentFailed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8109, + "src": "4116:23:19", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" + } + }, + "id": 8182, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4116:25:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 8183, + "nodeType": "RevertStatement", + "src": "4109:32:19" + } + ] + } + }, + { + "assignments": [ + 8187 + ], + "declarations": [ + { + "constant": false, + "id": 8187, + "mutability": "mutable", + "name": "returnAddress", + "nameLocation": "4170:13:19", + "nodeType": "VariableDeclaration", + "scope": 8217, + "src": "4162:21:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8186, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4162:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 8195, + "initialValue": { + "arguments": [ + { + "id": 8190, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8173, + "src": "4197:6:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 8192, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4206:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 8191, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4206:7:19", + "typeDescriptions": {} + } + } + ], + "id": 8193, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4205:9:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + } + ], + "expression": { + "id": 8188, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "4186:3:19", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 8189, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4190:6:19", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "4186:10:19", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 8194, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4186:29:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4162:53:19" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 8201, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8196, + "name": "returnAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8187, + "src": "4229:13:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "id": 8199, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8144, + "src": "4254:7:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + } + ], + "id": 8198, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4246:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 8197, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4246:7:19", + "typeDescriptions": {} + } + }, + "id": 8200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4246:16:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4229:33:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8211, + "nodeType": "IfStatement", + "src": "4225:138:19", + "trueBody": { + "id": 8210, + "nodeType": "Block", + "src": "4264:99:19", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "id": 8205, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8144, + "src": "4328:7:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + } + ], + "id": 8204, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4320:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 8203, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4320:7:19", + "typeDescriptions": {} + } + }, + "id": 8206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4320:16:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8207, + "name": "returnAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8187, + "src": "4338:13:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 8202, + "name": "ReturnedAddressDoesNotMatchAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8116, + "src": "4285:34:19", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_address_$returns$_t_error_$", + "typeString": "function (address,address) pure returns (error)" + } + }, + "id": 8208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4285:67:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 8209, + "nodeType": "RevertStatement", + "src": "4278:74:19" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 8214, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8146, + "src": "4474:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 8212, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8144, + "src": "4451:7:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + } + }, + "id": 8213, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4459:14:19", + "memberName": "replaySafeHash", + "nodeType": "MemberAccess", + "referencedDeclaration": 6628, + "src": "4451:22:19", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32) view external returns (bytes32)" + } + }, + "id": 8215, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4451:28:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 8154, + "id": 8216, + "nodeType": "Return", + "src": "4444:35:19" + } + ] + }, + "documentation": { + "id": 8141, + "nodeType": "StructuredDocumentation", + "src": "2800:769:19", + "text": "@notice Helper method to get a replay-safe hash from the given `account` by calling its `replaySafeHash()`\n method.\n @dev Deploys the account if not already deployed before calling `replaySafeHash` on it.\n @dev Implements ERC-6492, see https://eips.ethereum.org/EIPS/eip-6492.\n @param account The account that will receive the ERC-1271 `isValidSignature` call.\n @param hash The hash the wallet was asked to sign.\n @param accountFactory The factory that will be used to deploy the account (if not already deployed).\n @param factoryCalldata The calldata that will be used to deploy the account (if not already deployed).\n @return The replay-safe hash." + }, + "id": 8218, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_gianoSmartWallet1271Input", + "nameLocation": "3583:26:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8151, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8144, + "mutability": "mutable", + "name": "account", + "nameLocation": "3636:7:19", + "nodeType": "VariableDeclaration", + "scope": 8218, + "src": "3619:24:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + }, + "typeName": { + "id": 8143, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 8142, + "name": "GianoSmartWallet", + "nameLocations": [ + "3619:16:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7398, + "src": "3619:16:19" + }, + "referencedDeclaration": 7398, + "src": "3619:16:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8146, + "mutability": "mutable", + "name": "hash", + "nameLocation": "3661:4:19", + "nodeType": "VariableDeclaration", + "scope": 8218, + "src": "3653:12:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8145, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3653:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8148, + "mutability": "mutable", + "name": "accountFactory", + "nameLocation": "3683:14:19", + "nodeType": "VariableDeclaration", + "scope": 8218, + "src": "3675:22:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8147, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3675:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8150, + "mutability": "mutable", + "name": "factoryCalldata", + "nameLocation": "3720:15:19", + "nodeType": "VariableDeclaration", + "scope": 8218, + "src": "3707:28:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 8149, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3707:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3609:132:19" + }, + "returnParameters": { + "id": 8154, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8153, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8218, + "src": "3760:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8152, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3760:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3759:9:19" + }, + "scope": 8219, + "src": "3574:912:19", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 8220, + "src": "832:3656:19", + "usedErrors": [ + 8109, + 8116 + ], + "usedEvents": [] + } + ], + "src": "32:4457:19" + }, + "id": 19 + }, + "webauthn-sol/WebAuthn.sol": { + "ast": { + "absolutePath": "webauthn-sol/WebAuthn.sol", + "exportedSymbols": { + "Base64": [ + 2404 + ], + "FCL_Elliptic_ZZ": [ + 2309 + ], + "FCL_ecdsa": [ + 968 + ], + "LibString": [ + 6145 + ], + "WebAuthn": [ + 8478 + ] + }, + "id": 8479, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 8221, + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "32:23:20" + }, + { + "absolutePath": "FreshCryptoLib/FCL_ecdsa.sol", + "file": "FreshCryptoLib/FCL_ecdsa.sol", + "id": 8223, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 8479, + "sourceUnit": 969, + "src": "57:55:20", + "symbolAliases": [ + { + "foreign": { + "id": 8222, + "name": "FCL_ecdsa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 968, + "src": "65:9:20", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "FreshCryptoLib/FCL_elliptic.sol", + "file": "FreshCryptoLib/FCL_elliptic.sol", + "id": 8225, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 8479, + "sourceUnit": 2310, + "src": "113:64:20", + "symbolAliases": [ + { + "foreign": { + "id": 8224, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "121:15:20", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "openzeppelin-contracts/contracts/utils/Base64.sol", + "file": "openzeppelin-contracts/contracts/utils/Base64.sol", + "id": 8227, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 8479, + "sourceUnit": 2405, + "src": "178:73:20", + "symbolAliases": [ + { + "foreign": { + "id": 8226, + "name": "Base64", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2404, + "src": "186:6:20", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "solady/utils/LibString.sol", + "file": "solady/utils/LibString.sol", + "id": 8229, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 8479, + "sourceUnit": 6146, + "src": "252:53:20", + "symbolAliases": [ + { + "foreign": { + "id": 8228, + "name": "LibString", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6145, + "src": "260:9:20", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "WebAuthn", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 8230, + "nodeType": "StructuredDocumentation", + "src": "307:454:20", + "text": "@title WebAuthn\n @notice A library for verifying WebAuthn Authentication Assertions, built off the work\n of Daimo.\n @dev Attempts to use the RIP-7212 precompile for signature verification.\n If precompile verification fails, it falls back to FreshCryptoLib.\n @author Coinbase (https://github.com/base-org/webauthn-sol)\n @author Daimo (https://github.com/daimo-eth/p256-verifier/blob/master/src/WebAuthn.sol)" + }, + "fullyImplemented": true, + "id": 8478, + "linearizedBaseContracts": [ + 8478 + ], + "name": "WebAuthn", + "nameLocation": "769:8:20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 8233, + "libraryName": { + "id": 8231, + "name": "LibString", + "nameLocations": [ + "790:9:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6145, + "src": "790:9:20" + }, + "nodeType": "UsingForDirective", + "src": "784:27:20", + "typeName": { + "id": 8232, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "804:6:20", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + } + }, + { + "canonicalName": "WebAuthn.WebAuthnAuth", + "id": 8252, + "members": [ + { + "constant": false, + "id": 8236, + "mutability": "mutable", + "name": "authenticatorData", + "nameLocation": "1012:17:20", + "nodeType": "VariableDeclaration", + "scope": 8252, + "src": "1006:23:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 8235, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1006:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8239, + "mutability": "mutable", + "name": "clientDataJSON", + "nameLocation": "1191:14:20", + "nodeType": "VariableDeclaration", + "scope": 8252, + "src": "1184:21:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + }, + "typeName": { + "id": 8238, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1184:6:20", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8242, + "mutability": "mutable", + "name": "challengeIndex", + "nameLocation": "1305:14:20", + "nodeType": "VariableDeclaration", + "scope": 8252, + "src": "1297:22:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8241, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1297:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8245, + "mutability": "mutable", + "name": "typeIndex", + "nameLocation": "1414:9:20", + "nodeType": "VariableDeclaration", + "scope": 8252, + "src": "1406:17:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8244, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1406:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8248, + "mutability": "mutable", + "name": "r", + "nameLocation": "1493:1:20", + "nodeType": "VariableDeclaration", + "scope": 8252, + "src": "1485:9:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8247, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1485:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8251, + "mutability": "mutable", + "name": "s", + "nameLocation": "1564:1:20", + "nodeType": "VariableDeclaration", + "scope": 8252, + "src": "1556:9:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8250, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1556:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "WebAuthnAuth", + "nameLocation": "824:12:20", + "nodeType": "StructDefinition", + "scope": 8478, + "src": "817:755:20", + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 8253, + "nodeType": "StructuredDocumentation", + "src": "1578:147:20", + "text": "@dev Bit 0 of the authenticator data struct, corresponding to the \"User Present\" bit.\n See https://www.w3.org/TR/webauthn-2/#flags." + }, + "id": 8256, + "mutability": "constant", + "name": "_AUTH_DATA_FLAGS_UP", + "nameLocation": "1754:19:20", + "nodeType": "VariableDeclaration", + "scope": 8478, + "src": "1730:50:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + "typeName": { + "id": 8254, + "name": "bytes1", + "nodeType": "ElementaryTypeName", + "src": "1730:6:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "value": { + "hexValue": "30783031", + "id": 8255, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1776:4:20", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "0x01" + }, + "visibility": "private" + }, + { + "constant": true, + "documentation": { + "id": 8257, + "nodeType": "StructuredDocumentation", + "src": "1787:148:20", + "text": "@dev Bit 2 of the authenticator data struct, corresponding to the \"User Verified\" bit.\n See https://www.w3.org/TR/webauthn-2/#flags." + }, + "id": 8260, + "mutability": "constant", + "name": "_AUTH_DATA_FLAGS_UV", + "nameLocation": "1964:19:20", + "nodeType": "VariableDeclaration", + "scope": 8478, + "src": "1940:50:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + "typeName": { + "id": 8258, + "name": "bytes1", + "nodeType": "ElementaryTypeName", + "src": "1940:6:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "value": { + "hexValue": "30783034", + "id": 8259, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1986:4:20", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "0x04" + }, + "visibility": "private" + }, + { + "constant": true, + "documentation": { + "id": 8261, + "nodeType": "StructuredDocumentation", + "src": "1997:89:20", + "text": "@dev Secp256r1 curve order / 2 used as guard to prevent signature malleability issue." + }, + "id": 8267, + "mutability": "constant", + "name": "_P256_N_DIV_2", + "nameLocation": "2116:13:20", + "nodeType": "VariableDeclaration", + "scope": 8478, + "src": "2091:62:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8262, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2091:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8266, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 8263, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "2132:15:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 8264, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2148:1:20", + "memberName": "n", + "nodeType": "MemberAccess", + "referencedDeclaration": 991, + "src": "2132:17:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "hexValue": "32", + "id": 8265, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2152:1:20", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "2132:21:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "private" + }, + { + "constant": true, + "documentation": { + "id": 8268, + "nodeType": "StructuredDocumentation", + "src": "2160:194:20", + "text": "@dev The precompiled contract address to use for signature verification in the “secp256r1” elliptic curve.\n See https://github.com/ethereum/RIPs/blob/master/RIPS/rip-7212.md." + }, + "id": 8274, + "mutability": "constant", + "name": "_VERIFIER", + "nameLocation": "2384:9:20", + "nodeType": "VariableDeclaration", + "scope": 8478, + "src": "2359:51:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8269, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2359:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": { + "arguments": [ + { + "hexValue": "3078313030", + "id": 8272, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2404:5:20", + "typeDescriptions": { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + }, + "value": "0x100" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + } + ], + "id": 8271, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2396:7:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 8270, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2396:7:20", + "typeDescriptions": {} + } + }, + "id": 8273, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2396:14:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "private" + }, + { + "constant": true, + "documentation": { + "id": 8275, + "nodeType": "StructuredDocumentation", + "src": "2417:174:20", + "text": "@dev The expected type (hash) in the client data JSON when verifying assertion signatures.\n See https://www.w3.org/TR/webauthn-2/#dom-collectedclientdata-type" + }, + "id": 8280, + "mutability": "constant", + "name": "_EXPECTED_TYPE_HASH", + "nameLocation": "2621:19:20", + "nodeType": "VariableDeclaration", + "scope": 8478, + "src": "2596:81:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8276, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2596:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "2274797065223a22776562617574686e2e67657422", + "id": 8278, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2653:23:20", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ff1a2a9176d650e4a99dedb58f1793003935130579fe17b5a3f698ac5b00e634", + "typeString": "literal_string \"\"type\":\"webauthn.get\"\"" + }, + "value": "\"type\":\"webauthn.get\"" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_ff1a2a9176d650e4a99dedb58f1793003935130579fe17b5a3f698ac5b00e634", + "typeString": "literal_string \"\"type\":\"webauthn.get\"\"" + } + ], + "id": 8277, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "2643:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 8279, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2643:34:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "private" + }, + { + "body": { + "id": 8476, + "nodeType": "Block", + "src": "6880:2765:20", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8300, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 8297, + "name": "webAuthnAuth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8288, + "src": "6894:12:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth memory" + } + }, + "id": 8298, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6907:1:20", + "memberName": "s", + "nodeType": "MemberAccess", + "referencedDeclaration": 8251, + "src": "6894:14:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 8299, + "name": "_P256_N_DIV_2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8267, + "src": "6911:13:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6894:30:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8304, + "nodeType": "IfStatement", + "src": "6890:125:20", + "trueBody": { + "id": 8303, + "nodeType": "Block", + "src": "6926:89:20", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 8301, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6999:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 8296, + "id": 8302, + "nodeType": "Return", + "src": "6992:12:20" + } + ] + } + }, + { + "assignments": [ + 8306 + ], + "declarations": [ + { + "constant": false, + "id": 8306, + "mutability": "mutable", + "name": "_type", + "nameLocation": "7170:5:20", + "nodeType": "VariableDeclaration", + "scope": 8476, + "src": "7156:19:20", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 8305, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "7156:6:20", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "id": 8317, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 8310, + "name": "webAuthnAuth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8288, + "src": "7212:12:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth memory" + } + }, + "id": 8311, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7225:9:20", + "memberName": "typeIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 8245, + "src": "7212:22:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 8312, + "name": "webAuthnAuth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8288, + "src": "7236:12:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth memory" + } + }, + "id": 8313, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7249:9:20", + "memberName": "typeIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 8245, + "src": "7236:22:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "3231", + "id": 8314, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7261:2:20", + "typeDescriptions": { + "typeIdentifier": "t_rational_21_by_1", + "typeString": "int_const 21" + }, + "value": "21" + }, + "src": "7236:27:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "expression": { + "id": 8307, + "name": "webAuthnAuth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8288, + "src": "7178:12:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth memory" + } + }, + "id": 8308, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7191:14:20", + "memberName": "clientDataJSON", + "nodeType": "MemberAccess", + "referencedDeclaration": 8239, + "src": "7178:27:20", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "id": 8309, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7206:5:20", + "memberName": "slice", + "nodeType": "MemberAccess", + "referencedDeclaration": 5815, + "src": "7178:33:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_string_memory_ptr_$", + "typeString": "function (string memory,uint256,uint256) pure returns (string memory)" + } + }, + "id": 8316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7178:86:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7156:108:20" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 8321, + "name": "_type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8306, + "src": "7294:5:20", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 8320, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7288:5:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 8319, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7288:5:20", + "typeDescriptions": {} + } + }, + "id": 8322, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7288:12:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 8318, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "7278:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 8323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7278:23:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 8324, + "name": "_EXPECTED_TYPE_HASH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8280, + "src": "7305:19:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "7278:46:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8329, + "nodeType": "IfStatement", + "src": "7274:89:20", + "trueBody": { + "id": 8328, + "nodeType": "Block", + "src": "7326:37:20", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 8326, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7347:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 8296, + "id": 8327, + "nodeType": "Return", + "src": "7340:12:20" + } + ] + } + }, + { + "assignments": [ + 8331 + ], + "declarations": [ + { + "constant": false, + "id": 8331, + "mutability": "mutable", + "name": "expectedChallenge", + "nameLocation": "7490:17:20", + "nodeType": "VariableDeclaration", + "scope": 8476, + "src": "7477:30:20", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 8330, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7477:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 8345, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "226368616c6c656e6765223a22", + "id": 8337, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7530:15:20", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_113c04afa71755a4031625b892f63ab93216801f92d9b727f651dde51622cc9b", + "typeString": "literal_string \"\"challenge\":\"\"" + }, + "value": "\"challenge\":\"" + }, + { + "arguments": [ + { + "id": 8340, + "name": "challenge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8283, + "src": "7564:9:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 8338, + "name": "Base64", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2404, + "src": "7547:6:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Base64_$2404_$", + "typeString": "type(library Base64)" + } + }, + "id": 8339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7554:9:20", + "memberName": "encodeURL", + "nodeType": "MemberAccess", + "referencedDeclaration": 2349, + "src": "7547:16:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_string_memory_ptr_$", + "typeString": "function (bytes memory) pure returns (string memory)" + } + }, + "id": 8341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7547:27:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "hexValue": "22", + "id": 8342, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7576:3:20", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6e9f33448a4153023cdaf3eb759f1afdc24aba433a3e18b683f8c04a6eaa69f0", + "typeString": "literal_string \"\"\"" + }, + "value": "\"" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_113c04afa71755a4031625b892f63ab93216801f92d9b727f651dde51622cc9b", + "typeString": "literal_string \"\"challenge\":\"\"" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_stringliteral_6e9f33448a4153023cdaf3eb759f1afdc24aba433a3e18b683f8c04a6eaa69f0", + "typeString": "literal_string \"\"\"" + } + ], + "expression": { + "id": 8335, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7516:6:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 8334, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "7516:6:20", + "typeDescriptions": {} + } + }, + "id": 8336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7523:6:20", + "memberName": "concat", + "nodeType": "MemberAccess", + "src": "7516:13:20", + "typeDescriptions": { + "typeIdentifier": "t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$", + "typeString": "function () pure returns (string memory)" + } + }, + "id": 8343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7516:64:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 8333, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7510:5:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 8332, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7510:5:20", + "typeDescriptions": {} + } + }, + "id": 8344, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7510:71:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7477:104:20" + }, + { + "assignments": [ + 8347 + ], + "declarations": [ + { + "constant": false, + "id": 8347, + "mutability": "mutable", + "name": "actualChallenge", + "nameLocation": "7605:15:20", + "nodeType": "VariableDeclaration", + "scope": 8476, + "src": "7591:29:20", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 8346, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "7591:6:20", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "id": 8359, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 8351, + "name": "webAuthnAuth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8288, + "src": "7669:12:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth memory" + } + }, + "id": 8352, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7682:14:20", + "memberName": "challengeIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 8242, + "src": "7669:27:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 8353, + "name": "webAuthnAuth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8288, + "src": "7698:12:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth memory" + } + }, + "id": 8354, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7711:14:20", + "memberName": "challengeIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 8242, + "src": "7698:27:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "expression": { + "id": 8355, + "name": "expectedChallenge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8331, + "src": "7728:17:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 8356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7746:6:20", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "7728:24:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7698:54:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "expression": { + "id": 8348, + "name": "webAuthnAuth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8288, + "src": "7635:12:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth memory" + } + }, + "id": 8349, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7648:14:20", + "memberName": "clientDataJSON", + "nodeType": "MemberAccess", + "referencedDeclaration": 8239, + "src": "7635:27:20", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "id": 8350, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7663:5:20", + "memberName": "slice", + "nodeType": "MemberAccess", + "referencedDeclaration": 5815, + "src": "7635:33:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_string_memory_ptr_$", + "typeString": "function (string memory,uint256,uint256) pure returns (string memory)" + } + }, + "id": 8358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7635:118:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7591:162:20" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8369, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 8363, + "name": "actualChallenge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8347, + "src": "7783:15:20", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 8362, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7777:5:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 8361, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7777:5:20", + "typeDescriptions": {} + } + }, + "id": 8364, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7777:22:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 8360, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "7767:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 8365, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7767:33:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "id": 8367, + "name": "expectedChallenge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8331, + "src": "7814:17:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 8366, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "7804:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 8368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7804:28:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "7767:65:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8373, + "nodeType": "IfStatement", + "src": "7763:108:20", + "trueBody": { + "id": 8372, + "nodeType": "Block", + "src": "7834:37:20", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 8370, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7855:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 8296, + "id": 8371, + "nodeType": "Return", + "src": "7848:12:20" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + "id": 8381, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + "id": 8379, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "expression": { + "id": 8374, + "name": "webAuthnAuth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8288, + "src": "7987:12:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth memory" + } + }, + "id": 8375, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8000:17:20", + "memberName": "authenticatorData", + "nodeType": "MemberAccess", + "referencedDeclaration": 8236, + "src": "7987:30:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 8377, + "indexExpression": { + "hexValue": "3332", + "id": 8376, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8018:2:20", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7987:34:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 8378, + "name": "_AUTH_DATA_FLAGS_UP", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8256, + "src": "8024:19:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "src": "7987:56:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 8380, + "name": "_AUTH_DATA_FLAGS_UP", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8256, + "src": "8047:19:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "src": "7987:79:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8385, + "nodeType": "IfStatement", + "src": "7983:122:20", + "trueBody": { + "id": 8384, + "nodeType": "Block", + "src": "8068:37:20", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 8382, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8089:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 8296, + "id": 8383, + "nodeType": "Return", + "src": "8082:12:20" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 8396, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8386, + "name": "requireUV", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8285, + "src": "8269:9:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + "id": 8395, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + "id": 8392, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "expression": { + "id": 8387, + "name": "webAuthnAuth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8288, + "src": "8283:12:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth memory" + } + }, + "id": 8388, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8296:17:20", + "memberName": "authenticatorData", + "nodeType": "MemberAccess", + "referencedDeclaration": 8236, + "src": "8283:30:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 8390, + "indexExpression": { + "hexValue": "3332", + "id": 8389, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8314:2:20", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8283:34:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 8391, + "name": "_AUTH_DATA_FLAGS_UV", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8260, + "src": "8320:19:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "src": "8283:56:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + } + ], + "id": 8393, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8282:58:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 8394, + "name": "_AUTH_DATA_FLAGS_UV", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8260, + "src": "8344:19:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "src": "8282:81:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8269:94:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8400, + "nodeType": "IfStatement", + "src": "8265:137:20", + "trueBody": { + "id": 8399, + "nodeType": "Block", + "src": "8365:37:20", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 8397, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8386:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 8296, + "id": 8398, + "nodeType": "Return", + "src": "8379:12:20" + } + ] + } + }, + { + "assignments": [ + 8402 + ], + "declarations": [ + { + "constant": false, + "id": 8402, + "mutability": "mutable", + "name": "clientDataJSONHash", + "nameLocation": "8529:18:20", + "nodeType": "VariableDeclaration", + "scope": 8476, + "src": "8521:26:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8401, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8521:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 8410, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 8406, + "name": "webAuthnAuth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8288, + "src": "8563:12:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth memory" + } + }, + "id": 8407, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8576:14:20", + "memberName": "clientDataJSON", + "nodeType": "MemberAccess", + "referencedDeclaration": 8239, + "src": "8563:27:20", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 8405, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8557:5:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 8404, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8557:5:20", + "typeDescriptions": {} + } + }, + "id": 8408, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8557:34:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 8403, + "name": "sha256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -22, + "src": "8550:6:20", + "typeDescriptions": { + "typeIdentifier": "t_function_sha256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 8409, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8550:42:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8521:71:20" + }, + { + "assignments": [ + 8412 + ], + "declarations": [ + { + "constant": false, + "id": 8412, + "mutability": "mutable", + "name": "messageHash", + "nameLocation": "8757:11:20", + "nodeType": "VariableDeclaration", + "scope": 8476, + "src": "8749:19:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8411, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8749:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 8421, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 8416, + "name": "webAuthnAuth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8288, + "src": "8795:12:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth memory" + } + }, + "id": 8417, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8808:17:20", + "memberName": "authenticatorData", + "nodeType": "MemberAccess", + "referencedDeclaration": 8236, + "src": "8795:30:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 8418, + "name": "clientDataJSONHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8402, + "src": "8827:18:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 8414, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "8778:3:20", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 8415, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "8782:12:20", + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "8778:16:20", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 8419, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8778:68:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 8413, + "name": "sha256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -22, + "src": "8771:6:20", + "typeDescriptions": { + "typeIdentifier": "t_function_sha256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 8420, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8771:76:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8749:98:20" + }, + { + "assignments": [ + 8423 + ], + "declarations": [ + { + "constant": false, + "id": 8423, + "mutability": "mutable", + "name": "args", + "nameLocation": "8870:4:20", + "nodeType": "VariableDeclaration", + "scope": 8476, + "src": "8857:17:20", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 8422, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8857:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 8434, + "initialValue": { + "arguments": [ + { + "id": 8426, + "name": "messageHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8412, + "src": "8888:11:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 8427, + "name": "webAuthnAuth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8288, + "src": "8901:12:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth memory" + } + }, + "id": 8428, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8914:1:20", + "memberName": "r", + "nodeType": "MemberAccess", + "referencedDeclaration": 8248, + "src": "8901:14:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 8429, + "name": "webAuthnAuth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8288, + "src": "8917:12:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth memory" + } + }, + "id": 8430, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8930:1:20", + "memberName": "s", + "nodeType": "MemberAccess", + "referencedDeclaration": 8251, + "src": "8917:14:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 8431, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8290, + "src": "8933:1:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 8432, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8292, + "src": "8936:1:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 8424, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "8877:3:20", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 8425, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "8881:6:20", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "8877:10:20", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 8433, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8877:61:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8857:81:20" + }, + { + "assignments": [ + 8436, + 8438 + ], + "declarations": [ + { + "constant": false, + "id": 8436, + "mutability": "mutable", + "name": "success", + "nameLocation": "9001:7:20", + "nodeType": "VariableDeclaration", + "scope": 8476, + "src": "8996:12:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8435, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8996:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8438, + "mutability": "mutable", + "name": "ret", + "nameLocation": "9023:3:20", + "nodeType": "VariableDeclaration", + "scope": 8476, + "src": "9010:16:20", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 8437, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "9010:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 8443, + "initialValue": { + "arguments": [ + { + "id": 8441, + "name": "args", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8423, + "src": "9051:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 8439, + "name": "_VERIFIER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8274, + "src": "9030:9:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 8440, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9040:10:20", + "memberName": "staticcall", + "nodeType": "MemberAccess", + "src": "9030:20:20", + "typeDescriptions": { + "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) view returns (bool,bytes memory)" + } + }, + "id": 8442, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9030:26:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8995:61:20" + }, + { + "assignments": [ + 8445 + ], + "declarations": [ + { + "constant": false, + "id": 8445, + "mutability": "mutable", + "name": "valid", + "nameLocation": "9455:5:20", + "nodeType": "VariableDeclaration", + "scope": 8476, + "src": "9450:10:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8444, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "9450:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 8450, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8449, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 8446, + "name": "ret", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8438, + "src": "9463:3:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 8447, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9467:6:20", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "9463:10:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 8448, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9476:1:20", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9463:14:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9450:27:20" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 8453, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8451, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8436, + "src": "9491:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "id": 8452, + "name": "valid", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8445, + "src": "9502:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "9491:16:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8464, + "nodeType": "IfStatement", + "src": "9487:60:20", + "trueBody": { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8462, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 8456, + "name": "ret", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8438, + "src": "9527:3:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 8458, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9533:7:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 8457, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9533:7:20", + "typeDescriptions": {} + } + } + ], + "id": 8459, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9532:9:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "expression": { + "id": 8454, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "9516:3:20", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 8455, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "9520:6:20", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "9516:10:20", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 8460, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9516:26:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "31", + "id": 8461, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9546:1:20", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "9516:31:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 8296, + "id": 8463, + "nodeType": "Return", + "src": "9509:38:20" + } + }, + { + "expression": { + "arguments": [ + { + "id": 8467, + "name": "messageHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8412, + "src": "9588:11:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 8468, + "name": "webAuthnAuth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8288, + "src": "9601:12:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth memory" + } + }, + "id": 8469, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9614:1:20", + "memberName": "r", + "nodeType": "MemberAccess", + "referencedDeclaration": 8248, + "src": "9601:14:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 8470, + "name": "webAuthnAuth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8288, + "src": "9617:12:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth memory" + } + }, + "id": 8471, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9630:1:20", + "memberName": "s", + "nodeType": "MemberAccess", + "referencedDeclaration": 8251, + "src": "9617:14:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 8472, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8290, + "src": "9633:1:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 8473, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8292, + "src": "9636:1:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 8465, + "name": "FCL_ecdsa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 968, + "src": "9565:9:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_ecdsa_$968_$", + "typeString": "type(library FCL_ecdsa)" + } + }, + "id": 8466, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9575:12:20", + "memberName": "ecdsa_verify", + "nodeType": "MemberAccess", + "referencedDeclaration": 685, + "src": "9565:22:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (bytes32,uint256,uint256,uint256,uint256) view returns (bool)" + } + }, + "id": 8474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9565:73:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 8296, + "id": 8475, + "nodeType": "Return", + "src": "9558:80:20" + } + ] + }, + "documentation": { + "id": 8281, + "nodeType": "StructuredDocumentation", + "src": "2684:4022:20", + "text": "\n @notice Verifies a Webauthn Authentication Assertion as described\n in https://www.w3.org/TR/webauthn-2/#sctn-verifying-assertion.\n @dev We do not verify all the steps as described in the specification, only ones relevant to our context.\n Please carefully read through this list before usage.\n Specifically, we do verify the following:\n - Verify that authenticatorData (which comes from the authenticator, such as iCloud Keychain) indicates\n a well-formed assertion with the user present bit set. If `requireUV` is set, checks that the authenticator\n enforced user verification. User verification should be required if, and only if, options.userVerification\n is set to required in the request.\n - Verifies that the client JSON is of type \"webauthn.get\", i.e. the client was responding to a request to\n assert authentication.\n - Verifies that the client JSON contains the requested challenge.\n - Verifies that (r, s) constitute a valid signature over both the authenicatorData and client JSON, for public\n key (x, y).\n We make some assumptions about the particular use case of this verifier, so we do NOT verify the following:\n - Does NOT verify that the origin in the `clientDataJSON` matches the Relying Party's origin: tt is considered\n the authenticator's responsibility to ensure that the user is interacting with the correct RP. This is\n enforced by most high quality authenticators properly, particularly the iCloud Keychain and Google Password\n Manager were tested.\n - Does NOT verify That `topOrigin` in `clientDataJSON` is well-formed: We assume it would never be present, i.e.\n the credentials are never used in a cross-origin/iframe context. The website/app set up should disallow\n cross-origin usage of the credentials. This is the default behaviour for created credentials in common settings.\n - Does NOT verify that the `rpIdHash` in `authenticatorData` is the SHA-256 hash of the RP ID expected by the Relying\n Party: this means that we rely on the authenticator to properly enforce credentials to be used only by the correct RP.\n This is generally enforced with features like Apple App Site Association and Google Asset Links. To protect from\n edge cases in which a previously-linked RP ID is removed from the authorised RP IDs, we recommend that messages\n signed by the authenticator include some expiry mechanism.\n - Does NOT verify the credential backup state: this assumes the credential backup state is NOT used as part of Relying\n Party business logic or policy.\n - Does NOT verify the values of the client extension outputs: this assumes that the Relying Party does not use client\n extension outputs.\n - Does NOT verify the signature counter: signature counters are intended to enable risk scoring for the Relying Party.\n This assumes risk scoring is not used as part of Relying Party business logic or policy.\n - Does NOT verify the attestation object: this assumes that response.attestationObject is NOT present in the response,\n i.e. the RP does not intend to verify an attestation.\n @param challenge The challenge that was provided by the relying party.\n @param requireUV A boolean indicating whether user verification is required.\n @param webAuthnAuth The `WebAuthnAuth` struct.\n @param x The x coordinate of the public key.\n @param y The y coordinate of the public key.\n @return `true` if the authentication assertion passed validation, else `false`." + }, + "id": 8477, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "verify", + "nameLocation": "6720:6:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8293, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8283, + "mutability": "mutable", + "name": "challenge", + "nameLocation": "6740:9:20", + "nodeType": "VariableDeclaration", + "scope": 8477, + "src": "6727:22:20", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 8282, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6727:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8285, + "mutability": "mutable", + "name": "requireUV", + "nameLocation": "6756:9:20", + "nodeType": "VariableDeclaration", + "scope": 8477, + "src": "6751:14:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8284, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6751:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8288, + "mutability": "mutable", + "name": "webAuthnAuth", + "nameLocation": "6787:12:20", + "nodeType": "VariableDeclaration", + "scope": 8477, + "src": "6767:32:20", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth" + }, + "typeName": { + "id": 8287, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 8286, + "name": "WebAuthnAuth", + "nameLocations": [ + "6767:12:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 8252, + "src": "6767:12:20" + }, + "referencedDeclaration": 8252, + "src": "6767:12:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_storage_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8290, + "mutability": "mutable", + "name": "x", + "nameLocation": "6809:1:20", + "nodeType": "VariableDeclaration", + "scope": 8477, + "src": "6801:9:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8289, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6801:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8292, + "mutability": "mutable", + "name": "y", + "nameLocation": "6820:1:20", + "nodeType": "VariableDeclaration", + "scope": 8477, + "src": "6812:9:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8291, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6812:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6726:96:20" + }, + "returnParameters": { + "id": 8296, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8295, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8477, + "src": "6870:4:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8294, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6870:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "6869:6:20" + }, + "scope": 8478, + "src": "6711:2934:20", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 8479, + "src": "761:8886:20", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "32:9616:20" + }, + "id": 20 + } + }, + "contracts": { + "@account-abstraction/contracts/core/UserOperationLib.sol": { + "UserOperationLib": { + "abi": [ + { + "inputs": [], + "name": "PAYMASTER_DATA_OFFSET", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PAYMASTER_POSTOP_GAS_OFFSET", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PAYMASTER_VALIDATION_GAS_OFFSET", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6080806040523460175760b79081601d823930815050f35b600080fdfe6080806040526004361015601257600080fd5b60003560e01c90816325093e1b14606d57508063b29a8ff41460575763ede3150214603c57600080fd5b6000366003190112605257602060405160348152f35b600080fd5b6000366003190112605257602060405160148152f35b600036600319011260525780602460209252f3fea2646970667358221220166b7ff4ece83787ecc206c6105839c9ad1f5fdfa666c52d9b16237a82630bcf64736f6c634300081c0033", + "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0xB7 SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH1 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x25093E1B EQ PUSH1 0x6D JUMPI POP DUP1 PUSH4 0xB29A8FF4 EQ PUSH1 0x57 JUMPI PUSH4 0xEDE31502 EQ PUSH1 0x3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH1 0x52 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x34 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH1 0x52 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x14 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH1 0x52 JUMPI DUP1 PUSH1 0x24 PUSH1 0x20 SWAP3 MSTORE RETURN INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 AND PUSH12 0x7FF4ECE83787ECC206C61058 CODECOPY 0xC9 0xAD 0x1F PUSH0 0xDF 0xA6 PUSH7 0xC52D9B16237A82 PUSH4 0xBCF6473 PUSH16 0x6C634300081C00330000000000000000 ", + "sourceMap": "282:4714:1:-:0;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "6080806040526004361015601257600080fd5b60003560e01c90816325093e1b14606d57508063b29a8ff41460575763ede3150214603c57600080fd5b6000366003190112605257602060405160348152f35b600080fd5b6000366003190112605257602060405160148152f35b600036600319011260525780602460209252f3fea2646970667358221220166b7ff4ece83787ecc206c6105839c9ad1f5fdfa666c52d9b16237a82630bcf64736f6c634300081c0033", + "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH1 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x25093E1B EQ PUSH1 0x6D JUMPI POP DUP1 PUSH4 0xB29A8FF4 EQ PUSH1 0x57 JUMPI PUSH4 0xEDE31502 EQ PUSH1 0x3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH1 0x52 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x34 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH1 0x52 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x14 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH1 0x52 JUMPI DUP1 PUSH1 0x24 PUSH1 0x20 SWAP3 MSTORE RETURN INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 AND PUSH12 0x7FF4ECE83787ECC206C61058 CODECOPY 0xC9 0xAD 0x1F PUSH0 0xDF 0xA6 PUSH7 0xC52D9B16237A82 PUSH4 0xBCF6473 PUSH16 0x6C634300081C00330000000000000000 ", + "sourceMap": "282:4714:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;282:4714:1;;;;;;;490:2;282:4714;;;;;;;;;;-1:-1:-1;;282:4714:1;;;;;;;372:2;282:4714;;;;;;-1:-1:-1;;282:4714:1;;;;;434:2;282:4714;;;" + }, + "methodIdentifiers": { + "PAYMASTER_DATA_OFFSET()": "ede31502", + "PAYMASTER_POSTOP_GAS_OFFSET()": "25093e1b", + "PAYMASTER_VALIDATION_GAS_OFFSET()": "b29a8ff4" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"PAYMASTER_DATA_OFFSET\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PAYMASTER_POSTOP_GAS_OFFSET\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PAYMASTER_VALIDATION_GAS_OFFSET\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Utility functions helpful when working with UserOperation structs.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@account-abstraction/contracts/core/UserOperationLib.sol\":\"UserOperationLib\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@account-abstraction/contracts/core/Helpers.sol\":{\"keccak256\":\"0x6247e011a6cb0b263b3aa098822977181674d91b62e5bdfe04c6e66f72da25d6\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ca829a69b3fbc74fec8e140d42a2bf93bc3512609272f031c846470f61f0ab7e\",\"dweb:/ipfs/QmP3r3MBgAN39KeVB1rCGJWwcBcotNt26ALtAR54poQ1Jc\"]},\"@account-abstraction/contracts/core/UserOperationLib.sol\":{\"keccak256\":\"0x9d50ece985d35f82e33e5da417595c86fac10449e3d10895d08363d33aad454b\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b1d11cc364c8bf7ed5388268c895b5ffed16e87dfbcb320ddeeba5e7974315dc\",\"dweb:/ipfs/QmYSpvjxEjweietQrYZagwQ52ipy7eXx4rwvnTzXKeGeMS\"]},\"@account-abstraction/contracts/interfaces/PackedUserOperation.sol\":{\"keccak256\":\"0x1129b46381db68eddbc5cb49e50664667b66b03c480453858e7b25eabe444359\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://499a948aba60480dba6e25c763b8d918f1c246eb7a3302e04f493e080f3295be\",\"dweb:/ipfs/QmeRhhswf4NACcBKam2PyjpTP2ddSm648kah5kkQJsvwz3\"]}},\"version\":1}" + } + }, + "@account-abstraction/contracts/interfaces/IAccount.sol": { + "IAccount": { + "abi": [ + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "callData", + "type": "bytes" + }, + { + "internalType": "bytes32", + "name": "accountGasLimits", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "preVerificationGas", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "gasFees", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "paymasterAndData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "internalType": "struct PackedUserOperation", + "name": "userOp", + "type": "tuple" + }, + { + "internalType": "bytes32", + "name": "userOpHash", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "missingAccountFunds", + "type": "uint256" + } + ], + "name": "validateUserOp", + "outputs": [ + { + "internalType": "uint256", + "name": "validationData", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)": "19822f7c" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"accountGasLimits\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"gasFees\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct PackedUserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"missingAccountFunds\",\"type\":\"uint256\"}],\"name\":\"validateUserOp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"validationData\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)\":{\"details\":\"Must validate caller is the entryPoint. Must validate the signature and nonce\",\"params\":{\"missingAccountFunds\":\"- Missing funds on the account's deposit in the entrypoint. This is the minimum amount to transfer to the sender(entryPoint) to be able to make the call. The excess is left as a deposit in the entrypoint for future calls. Can be withdrawn anytime using \\\"entryPoint.withdrawTo()\\\". In case there is a paymaster in the request (or the current deposit is high enough), this value will be zero.\",\"userOp\":\"- The operation that is about to be executed.\",\"userOpHash\":\"- Hash of the user's request data. can be used as the basis for signature.\"},\"returns\":{\"validationData\":\" - Packaged ValidationData structure. use `_packValidationData` and `_unpackValidationData` to encode and decode. <20-byte> sigAuthorizer - 0 for valid signature, 1 to mark signature failure, otherwise, an address of an \\\"authorizer\\\" contract. <6-byte> validUntil - Last timestamp this operation is valid. 0 for \\\"indefinite\\\" <6-byte> validAfter - First timestamp this operation is valid If an account doesn't use time-range, it is enough to return SIG_VALIDATION_FAILED value (1) for signature failure. Note that the validation code cannot use block.timestamp (or block.number) directly.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)\":{\"notice\":\"Validate user's signature and nonce the entryPoint will make the call to the recipient only if this validation call returns successfully. signature failure should be reported by returning SIG_VALIDATION_FAILED (1). This allows making a \\\"simulation call\\\" without a valid signature Other failures (e.g. nonce mismatch, or invalid signature format) should still revert to signal failure.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@account-abstraction/contracts/interfaces/IAccount.sol\":\"IAccount\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@account-abstraction/contracts/interfaces/IAccount.sol\":{\"keccak256\":\"0x38710bec0cb20ff4ceef46a80475b5bdabc27b7efd2687fd473db68332f61b78\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://dea7a723e1ef852e8764e69914a345d2e8bc5e13facfc9d5c29d791cb4ab0020\",\"dweb:/ipfs/QmU8dYgyF4DBJXFqjwLAtnE3q8q259ChfoEk9a6wyhHzEP\"]},\"@account-abstraction/contracts/interfaces/PackedUserOperation.sol\":{\"keccak256\":\"0x1129b46381db68eddbc5cb49e50664667b66b03c480453858e7b25eabe444359\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://499a948aba60480dba6e25c763b8d918f1c246eb7a3302e04f493e080f3295be\",\"dweb:/ipfs/QmeRhhswf4NACcBKam2PyjpTP2ddSm648kah5kkQJsvwz3\"]}},\"version\":1}" + } + }, + "FreshCryptoLib/FCL_ecdsa.sol": { + "FCL_ecdsa": { + "abi": [], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea26469706673582212209ea5b5661beb1be2f69808caf876e8831b38da425ca3fcec62ec3c6b664e4af664736f6c634300081c0033", + "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x3A SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP15 0xA5 0xB5 PUSH7 0x1BEB1BE2F69808 0xCA 0xF8 PUSH23 0xE8831B38DA425CA3FCEC62EC3C6B664E4AF664736F6C63 NUMBER STOP ADDMOD SHR STOP CALLER ", + "sourceMap": "1217:3244:4:-:0;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "600080fdfea26469706673582212209ea5b5661beb1be2f69808caf876e8831b38da425ca3fcec62ec3c6b664e4af664736f6c634300081c0033", + "opcodes": "PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP15 0xA5 0xB5 PUSH7 0x1BEB1BE2F69808 0xCA 0xF8 PUSH23 0xE8831B38DA425CA3FCEC62EC3C6B664E4AF664736F6C63 NUMBER STOP ADDMOD SHR STOP CALLER ", + "sourceMap": "1217:3244:4:-:0;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"FreshCryptoLib/FCL_ecdsa.sol\":\"FCL_ecdsa\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"FreshCryptoLib/FCL_ecdsa.sol\":{\"keccak256\":\"0x679d2e9a655cd7e156a0cfc24de0aca88d4e0b34a8e0dfe6a599f23af092f5a2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db31eb84c6f854f076d2501e3d8b5a606fb4924168bdfc6fc3de84e67ed8a80d\",\"dweb:/ipfs/QmWGAmc7B4aT6Ki52uF9QmPQKWipaptit7r3JknBHjUGfe\"]},\"FreshCryptoLib/FCL_elliptic.sol\":{\"keccak256\":\"0xac7bb3260a446851f45b8cb71e31d64ca469d7711ed04662092a9554f1283a38\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f9b0dc5a2306ad3f3a0ff4a5b947fe49422181e97c163ea237fc8bfc6736429d\",\"dweb:/ipfs/QmeruF7BvG5BNnqwqwdshoVXuXqXtajbUYB19KwPynHrQE\"]}},\"version\":1}" + } + }, + "FreshCryptoLib/FCL_elliptic.sol": { + "FCL_Elliptic_ZZ": { + "abi": [], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea2646970667358221220a3d696919b263b7170c2483d35c375e2cb8a7aa6ef6f80d531af5adc504c3d6164736f6c634300081c0033", + "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x3A SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG3 0xD6 SWAP7 SWAP2 SWAP12 0x26 EXTCODESIZE PUSH18 0x70C2483D35C375E2CB8A7AA6EF6F80D531AF GAS 0xDC POP 0x4C RETURNDATASIZE PUSH2 0x6473 PUSH16 0x6C634300081C00330000000000000000 ", + "sourceMap": "1220:39313:5:-:0;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "600080fdfea2646970667358221220a3d696919b263b7170c2483d35c375e2cb8a7aa6ef6f80d531af5adc504c3d6164736f6c634300081c0033", + "opcodes": "PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG3 0xD6 SWAP7 SWAP2 SWAP12 0x26 EXTCODESIZE PUSH18 0x70C2483D35C375E2CB8A7AA6EF6F80D531AF GAS 0xDC POP 0x4C RETURNDATASIZE PUSH2 0x6473 PUSH16 0x6C634300081C00330000000000000000 ", + "sourceMap": "1220:39313:5:-:0;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"FreshCryptoLib/FCL_elliptic.sol\":\"FCL_Elliptic_ZZ\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"FreshCryptoLib/FCL_elliptic.sol\":{\"keccak256\":\"0xac7bb3260a446851f45b8cb71e31d64ca469d7711ed04662092a9554f1283a38\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f9b0dc5a2306ad3f3a0ff4a5b947fe49422181e97c163ea237fc8bfc6736429d\",\"dweb:/ipfs/QmeruF7BvG5BNnqwqwdshoVXuXqXtajbUYB19KwPynHrQE\"]}},\"version\":1}" + } + }, + "openzeppelin-contracts/contracts/utils/Base64.sol": { + "Base64": { + "abi": [], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea2646970667358221220a185923cc00d2e855a2c4d8df49b7da5249b20dbdbc30f0f6c2ef410b239ff4364736f6c634300081c0033", + "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x3A SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG1 DUP6 SWAP3 EXTCODECOPY 0xC0 0xD 0x2E DUP6 GAS 0x2C 0x4D DUP14 DELEGATECALL SWAP12 PUSH30 0xA5249B20DBDBC30F0F6C2EF410B239FF4364736F6C634300081C00330000 ", + "sourceMap": "202:5008:6:-:0;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "600080fdfea2646970667358221220a185923cc00d2e855a2c4d8df49b7da5249b20dbdbc30f0f6c2ef410b239ff4364736f6c634300081c0033", + "opcodes": "PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG1 DUP6 SWAP3 EXTCODECOPY 0xC0 0xD 0x2E DUP6 GAS 0x2C 0x4D DUP14 DELEGATECALL SWAP12 PUSH30 0xA5249B20DBDBC30F0F6C2EF410B239FF4364736F6C634300081C00330000 ", + "sourceMap": "202:5008:6:-:0;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides a set of functions to operate with Base64 strings.\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"_TABLE\":{\"details\":\"Base64 Encoding/Decoding Table See sections 4 and 5 of https://datatracker.ietf.org/doc/html/rfc4648\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"openzeppelin-contracts/contracts/utils/Base64.sol\":\"Base64\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"openzeppelin-contracts/contracts/utils/Base64.sol\":{\"keccak256\":\"0xbee2b819e1b4bf569ffc1b1b9d560b4abd6a589575f3093edaab9244de18a0c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e478c0e9bbf3eb8cd3b7784f9b397603e34747f9ffd16571ed1d89ce102de389\",\"dweb:/ipfs/QmZ6zXpwy5xRxx9RkodJmDZSUTeEqPQUanAC5TUoYqW2VR\"]}},\"version\":1}" + } + }, + "solady/accounts/Receiver.sol": { + "Receiver": { + "abi": [ + { + "inputs": [], + "name": "FnSelectorNotRecognized", + "type": "error" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"FnSelectorNotRecognized\",\"type\":\"error\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"author\":\"Solady (https://github.com/Vectorized/solady/blob/main/src/accounts/Receiver.sol)\",\"details\":\"Note: - Handles all ERC721 and ERC1155 token safety callbacks. - Collapses function table gas overhead and code size. - Utilizes fallback so unknown calldata will pass on.\",\"errors\":{\"FnSelectorNotRecognized()\":[{\"details\":\"The function selector is not recognized.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Receiver mixin for ETH and safe-transferred ERC721 and ERC1155 tokens.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"solady/accounts/Receiver.sol\":\"Receiver\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"solady/accounts/Receiver.sol\":{\"keccak256\":\"0xc879aa81dd5639f5fd97b31acd91658ffe33ae4b72b70ed7bd701c37addce43b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2e03a8d37d48644857d94f7432c1e2272bfd19649dfe80aba8f979f157f71f00\",\"dweb:/ipfs/QmWWS34bNWhiZgLXS9gtD8N2dxreRsVXxhvQRKqd4wKUuU\"]}},\"version\":1}" + } + }, + "solady/utils/CallContextChecker.sol": { + "CallContextChecker": { + "abi": [ + { + "inputs": [], + "name": "UnauthorizedCallContext", + "type": "error" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60a08060405234601d5730608052603a908160238239608051815050f35b600080fdfe600080fdfea26469706673582212200f4e22115b69c9ec60462a11c134d045c14a77c159e554c3267a594e8774d8b864736f6c634300081c0033", + "opcodes": "PUSH1 0xA0 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x1D JUMPI ADDRESS PUSH1 0x80 MSTORE PUSH1 0x3A SWAP1 DUP2 PUSH1 0x23 DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF 0x4E 0x22 GT JUMPDEST PUSH10 0xC9EC60462A11C134D045 0xC1 BLOBBASEFEE PUSH24 0xC159E554C3267A594E8774D8B864736F6C634300081C0033 ", + "sourceMap": "198:4295:8:-:0;;;;;;;1279:4;1255:31;;198:4295;;;;;;1255:31;198:4295;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "600080fdfea26469706673582212200f4e22115b69c9ec60462a11c134d045c14a77c159e554c3267a594e8774d8b864736f6c634300081c0033", + "opcodes": "PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF 0x4E 0x22 GT JUMPDEST PUSH10 0xC9EC60462A11C134D045 0xC1 BLOBBASEFEE PUSH24 0xC159E554C3267A594E8774D8B864736F6C634300081C0033 ", + "sourceMap": "198:4295:8:-:0;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"UnauthorizedCallContext\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"Solady (https://github.com/vectorized/solady/blob/main/src/utils/CallContextChecker.sol)\",\"errors\":{\"UnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized call context.\"}]},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"__self\":{\"details\":\"For checking if the context is a delegate call. Note: To enable use cases with an immutable default implementation in the bytecode, (see: ERC6551Proxy), we don't require that the proxy address must match the value stored in the implementation slot, which may not be initialized.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Call context checker mixin.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"solady/utils/CallContextChecker.sol\":\"CallContextChecker\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"solady/utils/CallContextChecker.sol\":{\"keccak256\":\"0xc54c743a03f4909826712e9c6b683ca95e8b0c120c55284a9e3572621ebd734b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3d3138009aba3d2fd310636f3cc1d6029e970c57ddb74693bebf2a02d3e6f12d\",\"dweb:/ipfs/QmauMpcVDyQqVnAUF75DXy831LvtxyFS7GND7kge1Zgw55\"]}},\"version\":1}" + } + }, + "solady/utils/LibBytes.sol": { + "LibBytes": { + "abi": [], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea264697066735822122013509f86b48312e9cc2deb4bb3f58fdca22930db1d63f87d97ed75ad3f4f232564736f6c634300081c0033", + "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x3A SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SGT POP SWAP16 DUP7 0xB4 DUP4 SLT 0xE9 0xCC 0x2D 0xEB 0x4B 0xB3 CREATE2 DUP16 0xDC LOG2 0x29 ADDRESS 0xDB SAR PUSH4 0xF87D97ED PUSH22 0xAD3F4F232564736F6C634300081C0033000000000000 ", + "sourceMap": "197:34035:9:-:0;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "600080fdfea264697066735822122013509f86b48312e9cc2deb4bb3f58fdca22930db1d63f87d97ed75ad3f4f232564736f6c634300081c0033", + "opcodes": "PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SGT POP SWAP16 DUP7 0xB4 DUP4 SLT 0xE9 0xCC 0x2D 0xEB 0x4B 0xB3 CREATE2 DUP16 0xDC LOG2 0x29 ADDRESS 0xDB SAR PUSH4 0xF87D97ED PUSH22 0xAD3F4F232564736F6C634300081C0033000000000000 ", + "sourceMap": "197:34035:9:-:0;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Solady (https://github.com/vectorized/solady/blob/main/src/utils/LibBytes.sol)\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"NOT_FOUND\":{\"details\":\"The constant returned when the `search` is not found in the bytes.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Library for byte related operations.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"solady/utils/LibBytes.sol\":\"LibBytes\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"solady/utils/LibBytes.sol\":{\"keccak256\":\"0x320c3c933df51e8fd6f1fc96de721c8cc6f1be1d4c586c11f1c472a23b86eba5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cec71f42247eda74535c6e695a2ac194268a342594a26c090bafd04434698b20\",\"dweb:/ipfs/QmXA8Qaw6DdWujdrNHMHpDLNGG4QCgC859ozivrxkxp7Ea\"]}},\"version\":1}" + } + }, + "solady/utils/LibClone.sol": { + "LibClone": { + "abi": [ + { + "inputs": [], + "name": "DeploymentFailed", + "type": "error" + }, + { + "inputs": [], + "name": "ETHTransferFailed", + "type": "error" + }, + { + "inputs": [], + "name": "SaltDoesNotStartWith", + "type": "error" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea264697066735822122021078c0b40a1425b0f70cdb7636626a7af628dc05a74c92015d6ae21574421ea64736f6c634300081c0033", + "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x3A SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x21 SMOD DUP13 SIGNEXTEND BLOCKHASH LOG1 TIMESTAMP JUMPDEST 0xF PUSH17 0xCDB7636626A7AF628DC05A74C92015D6AE 0x21 JUMPI PREVRANDAO 0x21 0xEA PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ", + "sourceMap": "3756:152678:10:-:0;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "600080fdfea264697066735822122021078c0b40a1425b0f70cdb7636626a7af628dc05a74c92015d6ae21574421ea64736f6c634300081c0033", + "opcodes": "PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x21 SMOD DUP13 SIGNEXTEND BLOCKHASH LOG1 TIMESTAMP JUMPDEST 0xF PUSH17 0xCDB7636626A7AF628DC05A74C92015D6AE 0x21 JUMPI PREVRANDAO 0x21 0xEA PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ", + "sourceMap": "3756:152678:10:-:0;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"DeploymentFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ETHTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SaltDoesNotStartWith\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"Solady (https://github.com/vectorized/solady/blob/main/src/utils/LibClone.sol)Minimal proxy by 0age (https://github.com/0age)Clones with immutable args by wighawag, zefram.eth, Saw-mon & Natalie (https://github.com/Saw-mon-and-Natalie/clones-with-immutable-args)Minimal ERC1967 proxy by jtriley-eth (https://github.com/jtriley-eth/minimum-viable-proxy)\",\"details\":\"Minimal proxy: Although the sw0nt pattern saves 5 gas over the ERC1167 pattern during runtime, it is not supported out-of-the-box on Etherscan. Hence, we choose to use the 0age pattern, which saves 4 gas over the ERC1167 pattern during runtime, and has the smallest bytecode. - Automatically verified on Etherscan.Minimal proxy (PUSH0 variant): This is a new minimal proxy that uses the PUSH0 opcode introduced during Shanghai. It is optimized first for minimal runtime gas, then for minimal bytecode. The PUSH0 clone functions are intentionally postfixed with a jarring \\\"_PUSH0\\\" as many EVM chains may not support the PUSH0 opcode in the early months after Shanghai. Please use with caution. - Automatically verified on Etherscan.Clones with immutable args (CWIA): The implementation of CWIA here does NOT append the immutable args into the calldata passed into delegatecall. It is simply an ERC1167 minimal proxy with the immutable arguments appended to the back of the runtime bytecode. - Uses the identity precompile (0x4) to copy args during deployment.Minimal ERC1967 proxy: A minimal ERC1967 proxy, intended to be upgraded with UUPS. This is NOT the same as ERC1967Factory's transparent proxy, which includes admin logic. - Automatically verified on Etherscan.Minimal ERC1967 proxy with immutable args: - Uses the identity precompile (0x4) to copy args during deployment. - Automatically verified on Etherscan.ERC1967I proxy: A variant of the minimal ERC1967 proxy, with a special code path that activates if `calldatasize() == 1`. This code path skips the delegatecall and directly returns the `implementation` address. The returned implementation is guaranteed to be valid if the keccak256 of the proxy's code is equal to `ERC1967I_CODE_HASH`.ERC1967I proxy with immutable args: A variant of the minimal ERC1967 proxy, with a special code path that activates if `calldatasize() == 1`. This code path skips the delegatecall and directly returns the - Uses the identity precompile (0x4) to copy args during deployment.Minimal ERC1967 beacon proxy: A minimal beacon proxy, intended to be upgraded with an upgradable beacon. - Automatically verified on Etherscan.Minimal ERC1967 beacon proxy with immutable args: - Uses the identity precompile (0x4) to copy args during deployment. - Automatically verified on Etherscan.ERC1967I beacon proxy: A variant of the minimal ERC1967 beacon proxy, with a special code path that activates if `calldatasize() == 1`. This code path skips the delegatecall and directly returns the `implementation` address. The returned implementation is guaranteed to be valid if the keccak256 of the proxy's code is equal to `ERC1967I_CODE_HASH`.ERC1967I proxy with immutable args: A variant of the minimal ERC1967 beacon proxy, with a special code path that activates if `calldatasize() == 1`. This code path skips the delegatecall and directly returns the - Uses the identity precompile (0x4) to copy args during deployment.\",\"errors\":{\"DeploymentFailed()\":[{\"details\":\"Unable to deploy the clone.\"}],\"ETHTransferFailed()\":[{\"details\":\"The ETH transfer has failed.\"}],\"SaltDoesNotStartWith()\":[{\"details\":\"The salt must start with either the zero address or `by`.\"}]},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"CLONE_CODE_HASH\":{\"details\":\"The keccak256 of deployed code for the clone proxy, with the implementation set to `address(0)`.\"},\"CWIA_CODE_HASH\":{\"details\":\"The keccak256 of deployed code for the ERC-1167 CWIA proxy, with the implementation set to `address(0)`.\"},\"ERC1967I_BEACON_PROXY_CODE_HASH\":{\"details\":\"The keccak256 of the deployed code for the ERC1967 beacon proxy.\"},\"ERC1967I_CODE_HASH\":{\"details\":\"The keccak256 of the deployed code for the ERC1967I proxy.\"},\"ERC1967_BEACON_PROXY_CODE_HASH\":{\"details\":\"The keccak256 of the deployed code for the ERC1967 beacon proxy.\"},\"ERC1967_CODE_HASH\":{\"details\":\"The keccak256 of the deployed code for the ERC1967 proxy.\"},\"PUSH0_CLONE_CODE_HASH\":{\"details\":\"The keccak256 of deployed code for the PUSH0 proxy, with the implementation set to `address(0)`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Minimal proxy library.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"solady/utils/LibClone.sol\":\"LibClone\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"solady/utils/LibClone.sol\":{\"keccak256\":\"0x1b96fd03a3948155bd2fe95dc4980930c759b174026e18f11bc8e88d55ae030e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://64998d16472a127031ee6a796ed9afcf13dd662afd30eb4d3e2a42c2bc9fd204\",\"dweb:/ipfs/QmTXHGy9t8YTW96tjiZ8RBqmijXUTqc1JznEBqHv8Duc4A\"]}},\"version\":1}" + } + }, + "solady/utils/LibString.sol": { + "LibString": { + "abi": [ + { + "inputs": [], + "name": "HexLengthInsufficient", + "type": "error" + }, + { + "inputs": [], + "name": "StringNot7BitASCII", + "type": "error" + }, + { + "inputs": [], + "name": "TooBigForSmallString", + "type": "error" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea2646970667358221220ab6cad7b68e06ba2d4d7a3b774278f60527efe5ba94662a3757478eb084700a364736f6c634300081c0033", + "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x3A SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAB PUSH13 0xAD7B68E06BA2D4D7A3B774278F PUSH1 0x52 PUSH31 0xFE5BA94662A3757478EB084700A364736F6C634300081C0033000000000000 ", + "sourceMap": "690:43561:11:-:0;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "600080fdfea2646970667358221220ab6cad7b68e06ba2d4d7a3b774278f60527efe5ba94662a3757478eb084700a364736f6c634300081c0033", + "opcodes": "PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAB PUSH13 0xAD7B68E06BA2D4D7A3B774278F PUSH1 0x52 PUSH31 0xFE5BA94662A3757478EB084700A364736F6C634300081C0033000000000000 ", + "sourceMap": "690:43561:11:-:0;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"HexLengthInsufficient\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StringNot7BitASCII\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooBigForSmallString\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"Solady (https://github.com/vectorized/solady/blob/main/src/utils/LibString.sol)Modified from Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/LibString.sol)\",\"details\":\"Note: For performance and bytecode compactness, most of the string operations are restricted to byte strings (7-bit ASCII), except where otherwise specified. Usage of byte string operations on charsets with runes spanning two or more bytes can lead to undefined behavior.\",\"errors\":{\"HexLengthInsufficient()\":[{\"details\":\"The length of the output is too small to contain all the hex digits.\"}],\"StringNot7BitASCII()\":[{\"details\":\"The input string must be a 7-bit ASCII.\"}],\"TooBigForSmallString()\":[{\"details\":\"The length of the string is more than 32 bytes.\"}]},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"ALPHANUMERIC_7_BIT_ASCII\":{\"details\":\"Lookup for '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.\"},\"DIGITS_7_BIT_ASCII\":{\"details\":\"Lookup for '0123456789'.\"},\"HEXDIGITS_7_BIT_ASCII\":{\"details\":\"Lookup for '0123456789abcdefABCDEF'.\"},\"LETTERS_7_BIT_ASCII\":{\"details\":\"Lookup for 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.\"},\"LOWERCASE_7_BIT_ASCII\":{\"details\":\"Lookup for 'abcdefghijklmnopqrstuvwxyz'.\"},\"NOT_FOUND\":{\"details\":\"The constant returned when the `search` is not found in the string.\"},\"OCTDIGITS_7_BIT_ASCII\":{\"details\":\"Lookup for '01234567'.\"},\"PRINTABLE_7_BIT_ASCII\":{\"details\":\"Lookup for '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!\\\"#$%&\\\\'()*+,-./:;<=>?@[\\\\\\\\]^_`{|}~ \\\\t\\\\n\\\\r\\\\x0b\\\\x0c'.\"},\"PUNCTUATION_7_BIT_ASCII\":{\"details\":\"Lookup for '!\\\"#$%&\\\\'()*+,-./:;<=>?@[\\\\\\\\]^_`{|}~'.\"},\"UPPERCASE_7_BIT_ASCII\":{\"details\":\"Lookup for 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.\"},\"WHITESPACE_7_BIT_ASCII\":{\"details\":\"Lookup for ' \\\\t\\\\n\\\\r\\\\x0b\\\\x0c'.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Library for converting numbers into strings and other string operations.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"solady/utils/LibString.sol\":\"LibString\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"solady/utils/LibBytes.sol\":{\"keccak256\":\"0x320c3c933df51e8fd6f1fc96de721c8cc6f1be1d4c586c11f1c472a23b86eba5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cec71f42247eda74535c6e695a2ac194268a342594a26c090bafd04434698b20\",\"dweb:/ipfs/QmXA8Qaw6DdWujdrNHMHpDLNGG4QCgC859ozivrxkxp7Ea\"]},\"solady/utils/LibString.sol\":{\"keccak256\":\"0x8a6b219f6ccda90c08e2debae62618d78d6f0cef086eb6c9503793d7f12815dd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d1301acbf7371cb51ab01fe3bee8a9b732ee0bcf6cc0db20ed5a3fb9241d675e\",\"dweb:/ipfs/QmXuM4tSfPDeFRvP3nEQmuezp1yEm4HxyWtU41FjiCdxAG\"]}},\"version\":1}" + } + }, + "solady/utils/SignatureCheckerLib.sol": { + "SignatureCheckerLib": { + "abi": [], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea26469706673582212205e6a4e99a3a11eaf2dc5391896d7dc787d8d403a88150a42c9eec17c4322cc3064736f6c634300081c0033", + "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x3A SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MCOPY PUSH11 0x4E99A3A11EAF2DC5391896 0xD7 0xDC PUSH25 0x7D8D403A88150A42C9EEC17C4322CC3064736F6C634300081C STOP CALLER ", + "sourceMap": "1438:24323:12:-:0;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "600080fdfea26469706673582212205e6a4e99a3a11eaf2dc5391896d7dc787d8d403a88150a42c9eec17c4322cc3064736f6c634300081c0033", + "opcodes": "PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MCOPY PUSH11 0x4E99A3A11EAF2DC5391896 0xD7 0xDC PUSH25 0x7D8D403A88150A42C9EEC17C4322CC3064736F6C634300081C STOP CALLER ", + "sourceMap": "1438:24323:12:-:0;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Solady (https://github.com/vectorized/solady/blob/main/src/utils/SignatureCheckerLib.sol)Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/SignatureChecker.sol)\",\"details\":\"Note: - The signature checking functions use the ecrecover precompile (0x1). - The `bytes memory signature` variants use the identity precompile (0x4) to copy memory internally. - Unlike ECDSA signatures, contract signatures are revocable. - As of Solady version 0.0.134, all `bytes signature` variants accept both regular 65-byte `(r, s, v)` and EIP-2098 `(r, vs)` short form signatures. See: https://eips.ethereum.org/EIPS/eip-2098 This is for calldata efficiency on smart accounts prevalent on L2s. WARNING! Do NOT use signatures as unique identifiers: - Use a nonce in the digest to prevent replay attacks on the same contract. - Use EIP-712 for the digest to prevent replay attacks across different chains and contracts. EIP-712 also enables readable signing of typed data for better user safety. This implementation does NOT check if a signature is non-malleable.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Signature verification helper that supports both ECDSA signatures from EOAs and ERC1271 signatures from smart contract wallets like Argent and Gnosis safe.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"solady/utils/SignatureCheckerLib.sol\":\"SignatureCheckerLib\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"solady/utils/SignatureCheckerLib.sol\":{\"keccak256\":\"0x098c7eb88b3048f227b240e0e5bf1da4a8f7622b30f6d7c06416bfcab3225e77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://50c2766f652916c5d6433665fb1c3b2f04c3d9292a35c12e0f8d7c71dd6438cb\",\"dweb:/ipfs/QmWTMwN2RDZUUPg7KkH1qFBjTSh84Zw8bbYwRBCQUtLN2h\"]}},\"version\":1}" + } + }, + "solady/utils/UUPSUpgradeable.sol": { + "UUPSUpgradeable": { + "abi": [ + { + "inputs": [], + "name": "UnauthorizedCallContext", + "type": "error" + }, + { + "inputs": [], + "name": "UpgradeFailed", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "proxiableUUID()": "52d1902d", + "upgradeToAndCall(address,bytes)": "4f1ef286" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"UnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpgradeFailed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Solady (https://github.com/vectorized/solady/blob/main/src/utils/UUPSUpgradeable.sol)Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/proxy/utils/UUPSUpgradeable.sol)\",\"details\":\"Note: - This implementation is intended to be used with ERC1967 proxies. See: `LibClone.deployERC1967` and related functions. - This implementation is NOT compatible with legacy OpenZeppelin proxies which do not store the implementation at `_ERC1967_IMPLEMENTATION_SLOT`.\",\"errors\":{\"UnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized call context.\"}],\"UpgradeFailed()\":[{\"details\":\"The upgrade failed.\"}]},\"events\":{\"Upgraded(address)\":{\"details\":\"Emitted when the proxy's implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"proxiableUUID()\":{\"details\":\"Returns the storage slot used by the implementation, as specified in [ERC1822](https://eips.ethereum.org/EIPS/eip-1822). Note: The `notDelegated` modifier prevents accidental upgrades to an implementation that is a proxy contract.\"},\"upgradeToAndCall(address,bytes)\":{\"details\":\"Upgrades the proxy's implementation to `newImplementation`. Emits a {Upgraded} event. Note: Passing in empty `data` skips the delegatecall to `newImplementation`.\"}},\"stateVariables\":{\"_ERC1967_IMPLEMENTATION_SLOT\":{\"details\":\"The ERC-1967 storage slot for the implementation in the proxy. `uint256(keccak256(\\\"eip1967.proxy.implementation\\\")) - 1`.\"},\"_UPGRADED_EVENT_SIGNATURE\":{\"details\":\"`keccak256(bytes(\\\"Upgraded(address)\\\"))`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"UUPS proxy mixin.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"solady/utils/UUPSUpgradeable.sol\":\"UUPSUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"solady/utils/CallContextChecker.sol\":{\"keccak256\":\"0xc54c743a03f4909826712e9c6b683ca95e8b0c120c55284a9e3572621ebd734b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3d3138009aba3d2fd310636f3cc1d6029e970c57ddb74693bebf2a02d3e6f12d\",\"dweb:/ipfs/QmauMpcVDyQqVnAUF75DXy831LvtxyFS7GND7kge1Zgw55\"]},\"solady/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x63899eaf1a24713464b8084ada33a83c4b7db789fe83ae22f016e39646bee361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://617fa735ffa8ba31051745614a508abd69d2cfc1b1bc1eb3c772865db5f7ce65\",\"dweb:/ipfs/QmR1pQbHPyXcLbFm2vHrXBs1qRFrGC22gF7wWYamYy8aaE\"]}},\"version\":1}" + } + }, + "src/AuthenticatedStaticCaller.sol": { + "AuthenticatedStaticCaller": { + "abi": [ + { + "inputs": [], + "name": "InvalidSignature", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "expiredAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "currentTimestamp", + "type": "uint256" + } + ], + "name": "SignatureExpired", + "type": "error" + }, + { + "inputs": [], + "name": "domainSeparator", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "eip712Domain", + "outputs": [ + { + "internalType": "bytes1", + "name": "fields", + "type": "bytes1" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "version", + "type": "string" + }, + { + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "verifyingContract", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "uint256[]", + "name": "extensions", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getSignatureLifetime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "isValidSignature", + "outputs": [ + { + "internalType": "bytes4", + "name": "result", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + } + ], + "name": "replaySafeHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "signedAt", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "internalType": "struct StaticCall", + "name": "call", + "type": "tuple" + } + ], + "name": "signedStaticCall", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "domainSeparator()": "f698da25", + "eip712Domain()": "84b0196e", + "getSignatureLifetime()": "17452caa", + "isValidSignature(bytes32,bytes)": "1626ba7e", + "replaySafeHash(bytes32)": "ce1506be", + "signedStaticCall((address,bytes,uint256,bytes))": "737bebdd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expiredAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentTimestamp\",\"type\":\"uint256\"}],\"name\":\"SignatureExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"domainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSignatureLifetime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"result\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"replaySafeHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"signedAt\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct StaticCall\",\"name\":\"call\",\"type\":\"tuple\"}],\"name\":\"signedStaticCall\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"domainSeparator()\":{\"details\":\"Implements domainSeparator = hashStruct(eip712Domain). See https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator.\",\"returns\":{\"_0\":\"The 32 bytes domain separator result.\"}},\"eip712Domain()\":{\"details\":\"Follows ERC-5267 (see https://eips.ethereum.org/EIPS/eip-5267).\",\"returns\":{\"chainId\":\"The value of the `EIP712Domain.chainId` field.\",\"extensions\":\"The list of EIP numbers, that extends EIP-712 with new domain fields.\",\"fields\":\"The bitmap of used fields.\",\"name\":\"The value of the `EIP712Domain.name` field.\",\"salt\":\"The value of the `EIP712Domain.salt` field.\",\"verifyingContract\":\"The value of the `EIP712Domain.verifyingContract` field.\",\"version\":\"The value of the `EIP712Domain.version` field.\"}},\"isValidSignature(bytes32,bytes)\":{\"details\":\"This implementation follows ERC-1271. See https://eips.ethereum.org/EIPS/eip-1271.IMPORTANT: Signature verification is performed on the hash produced AFTER applying the anti cross-account-replay layer on the given `hash` (i.e., verification is run on the replay-safe hash version).\",\"params\":{\"hash\":\"The original hash.\",\"signature\":\"The signature of the replay-safe hash to validate.\"},\"returns\":{\"result\":\"`0x1626ba7e` if validation succeeded, else `0xffffffff`.\"}},\"replaySafeHash(bytes32)\":{\"details\":\"The returned EIP-712 compliant replay-safe hash is the result of: keccak256( \\\\x19\\\\x01 || this.domainSeparator || hashStruct(GianoSmartWalletMessage({ hash: `hash`})) )\",\"params\":{\"hash\":\"The original hash.\"},\"returns\":{\"_0\":\"The corresponding replay-safe hash.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"domainSeparator()\":{\"notice\":\"Returns the `domainSeparator` used to create EIP-712 compliant hashes.\"},\"eip712Domain()\":{\"notice\":\"Returns information about the `EIP712Domain` used to create EIP-712 compliant hashes.\"},\"isValidSignature(bytes32,bytes)\":{\"notice\":\"Validates the `signature` against the given `hash`.\"},\"replaySafeHash(bytes32)\":{\"notice\":\"Wrapper around `_eip712Hash()` to produce a replay-safe hash fron the given `hash`.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/AuthenticatedStaticCaller.sol\":\"AuthenticatedStaticCaller\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"src/AuthenticatedStaticCaller.sol\":{\"keccak256\":\"0x06bb6bea86630eda0e5920c4fe4a5d51e89d18072faf7c4b5d7ae8ca82b87b94\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2920f02558ea8bbe8ca21cbe1bcbbea7d3c4d7f0d3e812cde706f95c53b399aa\",\"dweb:/ipfs/QmaNpbMazUf1n6hpXSMq7RDJix7ipPiALKE93fMmBtbS4A\"]},\"src/ERC1271.sol\":{\"keccak256\":\"0x75c3fe08b6e1789dab7714196704f425d1afea21d725fcb6c418a70ef5bf6fad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd292bcf9b1891abb517323636493499dbdd00bebc1f759c07fb26e103a1b71d\",\"dweb:/ipfs/QmWMT3C54pakfUCTkcPzFQAvE8nRnPqDDpFaDhY5A9fpEp\"]}},\"version\":1}" + } + }, + "src/ERC1271.sol": { + "ERC1271": { + "abi": [ + { + "inputs": [], + "name": "domainSeparator", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "eip712Domain", + "outputs": [ + { + "internalType": "bytes1", + "name": "fields", + "type": "bytes1" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "version", + "type": "string" + }, + { + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "verifyingContract", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "uint256[]", + "name": "extensions", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "isValidSignature", + "outputs": [ + { + "internalType": "bytes4", + "name": "result", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + } + ], + "name": "replaySafeHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "domainSeparator()": "f698da25", + "eip712Domain()": "84b0196e", + "isValidSignature(bytes32,bytes)": "1626ba7e", + "replaySafeHash(bytes32)": "ce1506be" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"domainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"result\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"replaySafeHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Applied Blockchain (https://github.com/appliedblockchain/giano)Coinbase (https://github.com/coinbase/smart-wallet)Solady (https://github.com/vectorized/solady/blob/main/src/accounts/ERC1271.sol)\",\"details\":\"To prevent the same signature from being validated on different accounts owned by the samer signer, we introduce an anti cross-account-replay layer: the original hash is input into a new EIP-712 compliant hash. The domain separator of this outer hash contains the chain id and address of this contract, so that it cannot be used on two accounts (see `replaySafeHash()` for the implementation details).\",\"kind\":\"dev\",\"methods\":{\"domainSeparator()\":{\"details\":\"Implements domainSeparator = hashStruct(eip712Domain). See https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator.\",\"returns\":{\"_0\":\"The 32 bytes domain separator result.\"}},\"eip712Domain()\":{\"details\":\"Follows ERC-5267 (see https://eips.ethereum.org/EIPS/eip-5267).\",\"returns\":{\"chainId\":\"The value of the `EIP712Domain.chainId` field.\",\"extensions\":\"The list of EIP numbers, that extends EIP-712 with new domain fields.\",\"fields\":\"The bitmap of used fields.\",\"name\":\"The value of the `EIP712Domain.name` field.\",\"salt\":\"The value of the `EIP712Domain.salt` field.\",\"verifyingContract\":\"The value of the `EIP712Domain.verifyingContract` field.\",\"version\":\"The value of the `EIP712Domain.version` field.\"}},\"isValidSignature(bytes32,bytes)\":{\"details\":\"This implementation follows ERC-1271. See https://eips.ethereum.org/EIPS/eip-1271.IMPORTANT: Signature verification is performed on the hash produced AFTER applying the anti cross-account-replay layer on the given `hash` (i.e., verification is run on the replay-safe hash version).\",\"params\":{\"hash\":\"The original hash.\",\"signature\":\"The signature of the replay-safe hash to validate.\"},\"returns\":{\"result\":\"`0x1626ba7e` if validation succeeded, else `0xffffffff`.\"}},\"replaySafeHash(bytes32)\":{\"details\":\"The returned EIP-712 compliant replay-safe hash is the result of: keccak256( \\\\x19\\\\x01 || this.domainSeparator || hashStruct(GianoSmartWalletMessage({ hash: `hash`})) )\",\"params\":{\"hash\":\"The original hash.\"},\"returns\":{\"_0\":\"The corresponding replay-safe hash.\"}}},\"stateVariables\":{\"_MESSAGE_TYPEHASH\":{\"details\":\"Precomputed `typeHash` used to produce EIP-712 compliant hash when applying the anti cross-account-replay layer. The original hash must either be: - An EIP-191 hash: keccak256(\\\"\\\\x19Ethereum Signed Message:\\\\n\\\" || len(someMessage) || someMessage) - An EIP-712 hash: keccak256(\\\"\\\\x19\\\\x01\\\" || someDomainSeparator || hashStruct(someStruct))\"}},\"title\":\"ERC-1271\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"domainSeparator()\":{\"notice\":\"Returns the `domainSeparator` used to create EIP-712 compliant hashes.\"},\"eip712Domain()\":{\"notice\":\"Returns information about the `EIP712Domain` used to create EIP-712 compliant hashes.\"},\"isValidSignature(bytes32,bytes)\":{\"notice\":\"Validates the `signature` against the given `hash`.\"},\"replaySafeHash(bytes32)\":{\"notice\":\"Wrapper around `_eip712Hash()` to produce a replay-safe hash fron the given `hash`.\"}},\"notice\":\"Abstract ERC-1271 implementation (based on Solady's) with guards to handle the same signer being used on multiple accounts.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/ERC1271.sol\":\"ERC1271\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"src/ERC1271.sol\":{\"keccak256\":\"0x75c3fe08b6e1789dab7714196704f425d1afea21d725fcb6c418a70ef5bf6fad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd292bcf9b1891abb517323636493499dbdd00bebc1f759c07fb26e103a1b71d\",\"dweb:/ipfs/QmWMT3C54pakfUCTkcPzFQAvE8nRnPqDDpFaDhY5A9fpEp\"]}},\"version\":1}" + } + }, + "src/GianoSmartWallet.sol": { + "GianoSmartWallet": { + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "owner", + "type": "bytes" + } + ], + "name": "AlreadyOwner", + "type": "error" + }, + { + "inputs": [], + "name": "FnSelectorNotRecognized", + "type": "error" + }, + { + "inputs": [], + "name": "Initialized", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "owner", + "type": "bytes" + } + ], + "name": "InvalidEthereumAddressOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "InvalidImplementation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "key", + "type": "uint256" + } + ], + "name": "InvalidNonceKey", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "owner", + "type": "bytes" + } + ], + "name": "InvalidOwnerBytesLength", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidSignature", + "type": "error" + }, + { + "inputs": [], + "name": "LastOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "NoOwnerAtIndex", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "ownersRemaining", + "type": "uint256" + } + ], + "name": "NotLastOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "selector", + "type": "bytes4" + } + ], + "name": "SelectorNotAllowed", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "expiredAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "currentTimestamp", + "type": "uint256" + } + ], + "name": "SignatureExpired", + "type": "error" + }, + { + "inputs": [], + "name": "Unauthorized", + "type": "error" + }, + { + "inputs": [], + "name": "UnauthorizedCallContext", + "type": "error" + }, + { + "inputs": [], + "name": "UpgradeFailed", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "expectedOwner", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "actualOwner", + "type": "bytes" + } + ], + "name": "WrongOwnerAtIndex", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "owner", + "type": "bytes" + } + ], + "name": "AddOwner", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "owner", + "type": "bytes" + } + ], + "name": "RemoveOwner", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "inputs": [], + "name": "REPLAYABLE_NONCE_KEY", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "addOwnerAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "x", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "y", + "type": "bytes32" + } + ], + "name": "addOwnerPublicKey", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "functionSelector", + "type": "bytes4" + } + ], + "name": "canSkipChainIdValidation", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "domainSeparator", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "eip712Domain", + "outputs": [ + { + "internalType": "bytes1", + "name": "fields", + "type": "bytes1" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "version", + "type": "string" + }, + { + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "verifyingContract", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "uint256[]", + "name": "extensions", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "entryPoint", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "execute", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct GianoSmartWallet.Call[]", + "name": "calls", + "type": "tuple[]" + } + ], + "name": "executeBatch", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes[]", + "name": "calls", + "type": "bytes[]" + } + ], + "name": "executeWithoutChainIdValidation", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "getSignatureLifetime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "callData", + "type": "bytes" + }, + { + "internalType": "bytes32", + "name": "accountGasLimits", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "preVerificationGas", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "gasFees", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "paymasterAndData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "internalType": "struct PackedUserOperation", + "name": "userOp", + "type": "tuple" + } + ], + "name": "getUserOpHashWithoutChainId", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "implementation", + "outputs": [ + { + "internalType": "address", + "name": "$", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes[]", + "name": "owners", + "type": "bytes[]" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isOwnerAddress", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "account", + "type": "bytes" + } + ], + "name": "isOwnerBytes", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "x", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "y", + "type": "bytes32" + } + ], + "name": "isOwnerPublicKey", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "isValidSignature", + "outputs": [ + { + "internalType": "bytes4", + "name": "result", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "nextOwnerIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "ownerAtIndex", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "ownerCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "owner", + "type": "bytes" + } + ], + "name": "removeLastOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "owner", + "type": "bytes" + } + ], + "name": "removeOwnerAtIndex", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "removedOwnersCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + } + ], + "name": "replaySafeHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "signedAt", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "internalType": "struct StaticCall", + "name": "call", + "type": "tuple" + } + ], + "name": "signedStaticCall", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "callData", + "type": "bytes" + }, + { + "internalType": "bytes32", + "name": "accountGasLimits", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "preVerificationGas", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "gasFees", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "paymasterAndData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "internalType": "struct PackedUserOperation", + "name": "userOp", + "type": "tuple" + }, + { + "internalType": "bytes32", + "name": "userOpHash", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "missingAccountFunds", + "type": "uint256" + } + ], + "name": "validateUserOp", + "outputs": [ + { + "internalType": "uint256", + "name": "validationData", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "evm": { + "bytecode": { + "functionDebugData": { + "abi_encode_bytes": { + "entryPoint": 1120, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "copy_memory_to_memory_with_cleanup": { + "entryPoint": 1085, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "finalize_allocation": { + "entryPoint": 995, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "memory_array_index_access_bytes_dyn": { + "entryPoint": 1065, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "memory_array_index_access_bytes_dyn_3226": { + "entryPoint": 1030, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "packed_hashed_bytes_uint256_to_bytes_uint": { + "entryPoint": 1164, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + } + }, + "generatedSources": [], + "linkReferences": {}, + "object": "60a0604052346103de57306080526040805161001b82826103e3565b60018152601f19820160005b8181106103cd5750508151600060208201526020815261004783826103e3565b61005082610406565b5261005a81610406565b507f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f5005460005b825181101561038c5760206100958285610429565b5151141580610377575b6103505760206100af8285610429565b51511480610312575b6102eb576100c68184610429565b51918060001981146102d5576001019260ff6100e18261048c565b54166102b5576100f08161048c565b805460ff1916600117905560008281527f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f50260205286902081516001600160401b03811161029f578154600181811c91168015610295575b602082101461027f57601f8111610237575b506020601f82116001146101bc579260008051602061346683398151915292826101a89360019897966000916101b1575b50600019600383901b1c191690881b1790555b885191829182610460565b0390a201610080565b90508301513861018a565b601f1982169083600052806000209160005b81811061021f57508360019897969360008051602061346683398151915296936101a8968b9410610206575b5050811b01905561019d565b85015160001960f88460031b161c1916905538806101fa565b9192602060018192868a0151815501940192016101ce565b826000526020600020601f830160051c81019160208410610275575b601f0160051c01905b8181106102695750610159565b6000815560010161025c565b9091508190610253565b634e487b7160e01b600052602260045260246000fd5b90607f1690610147565b634e487b7160e01b600052604160045260246000fd5b855163468b12ad60e11b81529081906102d19060048301610460565b0390fd5b634e487b7160e01b600052601160045260246000fd5b836102f96102d19285610429565b51905163bff1ac6560e01b815291829160048301610460565b5061031d8184610429565b5160208151910151906020811061033e575b506001600160a01b03106100b8565b6000199060200360031b1b163861032f565b8361035e6102d19285610429565b5190516327755b9160e11b815291829160048301610460565b50836103838285610429565b5151141561009f565b83827f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f5005551612f9490816104d2823960805181818161076c015261085a0152f35b806060602080938601015201610027565b600080fd5b601f909101601f19168101906001600160401b0382119082101761029f57604052565b8051156104135760200190565b634e487b7160e01b600052603260045260246000fd5b80518210156104135760209160051b010190565b60005b8381106104505750506000910152565b8181015183820152602001610440565b60409160208252610480815180928160208601526020868601910161043d565b601f01601f1916010190565b60206104a591816040519382858094519384920161043d565b81017f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f5038152030190209056fe60806040526004361015610015575b3661165f57005b60003560e01c8063066a1eb7146101e55780630db02622146101e05780630f0f3f24146101db5780631626ba7e146101d657806317452caa146101d157806319822f7c146101cc5780631ca5393f146101c757806329565e3b146101c25780632c2abd1e146101bd57806334fcd5be146101b857806336d9cf9b146101b35780634f1ef286146101ae57806352d1902d146101a95780635c60da1b146101a45780636f2de70e1461019f578063737bebdd1461019a57806384b0196e1461019557806388ce4c7c1461019057806389625b571461018b5780638ea69029146101865780639f9bcb3414610181578063a05bd44e1461017c578063a2e1a8d814610177578063b0d691fe14610172578063b61d27f61461016d578063b819736714610168578063ce1506be14610163578063d948fd2e1461015e5763f698da250361000e57610e93565b610e68565b610e4a565b610e03565b610d97565b610d6c565b610d45565b610d0b565b610cd1565b610c9e565b610c5e565b610c0e565b610b6d565b610a67565b6108cc565b610896565b610846565b610731565b610706565b610673565b6105cb565b61052d565b6104f6565b6103a1565b610375565b610323565b61027d565b610249565b3461024457604036600319011261024457602060ff6102386004356102336024359161022560405193849288840160209093929193604081019481520152565b03601f19810183528261044f565b610ec5565b54166040519015158152f35b600080fd5b34610244576000366003190112610244576020610264610f4d565b604051908152f35b6001600160a01b0381160361024457565b34610244576020366003190112610244576102f460043561029d8161026c565b6102a5611697565b6040519060018060a01b03166020820152602081526102c560408261044f565b600080516020612edf83398151915254906102df82610f79565b600080516020612edf83398151915255611720565b005b9181601f84011215610244578235916001600160401b038311610244576020838186019501011161024457565b34610244576040366003190112610244576004356024356001600160401b0381116102445760209161035c6103629236906004016102f6565b91610f88565b6040516001600160e01b03199091168152f35b346102445760003660031901126102445760206040516107088152f35b90816101209103126102445790565b34610244576060366003190112610244576004356001600160401b038111610244576103d1903690600401610392565b6044356024356f71727de22e5e9d8baf0edac6f37da031193301610429576103fd829161041494611137565b91610418575b506040519081529081906020820190565b0390f35b60009081803892335af15038610403565b6282b42960e81b60005260046000fd5b634e487b7160e01b600052604160045260246000fd5b90601f801991011681019081106001600160401b0382111761047057604052565b610439565b6040519061048460c08361044f565b565b6001600160401b03811161047057601f01601f191660200190565b9291926104ad82610486565b916104bb604051938461044f565b829481845281830111610244578281602093846000960137010152565b9080601f83011215610244578160206104f3933591016104a1565b90565b34610244576020366003190112610244576004356001600160401b0381116102445760ff61023861023360209336906004016104d8565b34610244576040366003190112610244576102f46024356102c5600435610552611697565b6040805160208101929092528101929092528160608101610225565b906020600319830112610244576004356001600160401b0381116102445760040160009280601f830112156105c7578135936001600160401b0385116105c457506020808301928560051b010111610244579190565b80fd5b8380fd5b6105d43661056e565b906f71727de22e5e9d8baf0edac6f37da03233036104295760005b828110156102f45760006106088260051b840184610fb6565b6106128183610fe8565b61061b81611460565b156106575750829161062e9136916104a1565b60208151910182305af1610640611329565b901561064f57506001016105ef565b602081519101fd5b631d8370a360e11b84526001600160e01b031916600452602483fd5b61067c3661056e565b906f71727de22e5e9d8baf0edac6f37da03233036106f9575b60005b8281106106a157005b806106f36106b2600193868661127c565b356106bc8161026c565b60206106c984888861127c565b01356106ed6106e66106dc868a8a61127c565b6040810190610fb6565b36916104a1565b91611b43565b01610698565b610701611697565b610695565b34610244576000366003190112610244576020600080516020612f3f83398151915254604051908152f35b6040366003190112610244576004356107498161026c565b6024356001600160401b038111610244576107689036906004016102f6565b90917f0000000000000000000000000000000000000000000000000000000000000000301461083857610799611697565b60018060a01b03163d6000526352d1902d600152600080516020612f1f833981519152602060016004601d855afa510361082a57807fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a28181600080516020612f1f8339815191525561080b57005b816000926040519485378338925af41561082157005b3d6000823e3d90fd5b6355299b496001526004601dfd5b639f03a0266000526004601cfd5b3461024457600036600319011261024457307f000000000000000000000000000000000000000000000000000000000000000003610838576020604051600080516020612f1f8339815191528152f35b3461024457600036600319011261024457600080516020612f1f833981519152546040516001600160a01b039091168152602090f35b6108d53661056e565b600080516020612edf8339815191525491826109fd576108f691369161103b565b9060005b82518110156109e757602061090f82856110fc565b51511415806109d1575b6109aa57602061092982856110fc565b51511480610988575b61095d5780610957610946600193866110fc565b519361095181610f79565b94611720565b016108fa565b61096a61098491846110fc565b5160405163bff1ac6560e01b815291829160048301610a56565b0390fd5b506001600160a01b036109a461099e83866110fc565b5161193a565b11610932565b6109b761098491846110fc565b516040516327755b9160e11b815291829160048301610a56565b5060406109de82856110fc565b51511415610919565b6102f482600080516020612edf83398151915255565b6302ed543d60e51b60005260046000fd5b60005b838110610a215750506000910152565b8181015183820152602001610a11565b90602091610a4a81518092818552858086019101610a0e565b601f01601f1916010190565b9060206104f3928181520190610a31565b34610244576020366003190112610244576004356001600160401b038111610244578060040160806003198336030112610244576044820135610aa9816112a8565b4211610b4657610ae0610acd610ac1610ae4936112e0565b60208151910120611dd4565b610ada6064860185610fb6565b91611a51565b1590565b610b3557600091610b03826024610afb869561129e565b930190610fb6565b90610b1360405180938193611306565b03915afa610b1f611329565b901561064f576104149060405191829182610a56565b638baa579f60e01b60005260046000fd5b610b52610b69916112a8565b630f88f04960e41b60005260045242602452604490565b6000fd5b3461024457600036600319011261024457610bad610bbb610b8c611b63565b604092919251938493600f60f81b855260e0602086015260e0850190610a31565b908382036040850152610a31565b466060830152306080830152600060a083015281810360c0830152602060605191828152019060809060005b818110610bf5575050500390f35b8251845285945060209384019390920191600101610be7565b346102445760003660031901126102445760206040516121058152f35b9060406003198301126102445760043591602435906001600160401b03821161024457610c5a916004016102f6565b9091565b3461024457610c6c36610c2b565b90610c75611697565b6001610c7f610f4d565b14610c8d576102f492611cbd565b63948bf89760e01b60005260046000fd5b3461024457602036600319011261024457610414610cbd600435611393565b604051918291602083526020830190610a31565b34610244576020366003190112610244576004356001600160e01b03198116810361024457610d01602091611460565b6040519015158152f35b34610244576020366003190112610244576004356001600160401b03811161024457610264610d406020923690600401610392565b6114e3565b34610244576020366003190112610244576020610d01600435610d678161026c565b6115d0565b346102445760003660031901126102445760206040516f71727de22e5e9d8baf0edac6f37da0328152f35b606036600319011261024457600435610daf8161026c565b604435906024356001600160401b038311610244576106ed610dd86102f49436906004016102f6565b6f71727de22e5e9d8baf0edac6f37da0323303610df65736916104a1565b610dfe611697565b6106e6565b3461024457610e1136610c2b565b90610e1a611697565b610e22610f4d565b9260018411610e35576102f49350611cbd565b83631047e35560e31b60005260045260246000fd5b34610244576020366003190112610244576020610264600435611dd4565b34610244576000366003190112610244576020600080516020612edf83398151915254604051908152f35b346102445760003660031901126102445760206102646115f6565b90610ec160209282815194859201610a0e565b0190565b6020610ede918160405193828580945193849201610a0e565b81017f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f50381520301902090565b634e487b7160e01b600052601160045260246000fd5b600080516020612eff8339815191520390600080516020612eff8339815191528211610f4857565b610f0a565b600080516020612edf83398151915254600080516020612f3f833981519152548103908111610f485790565b6000198114610f485760010190565b90610f96610f9b9392611dd4565b611a51565b610fab576001600160e01b031990565b630b135d3f60e11b90565b903590601e198136030182121561024457018035906001600160401b0382116102445760200191813603831361024457565b356001600160e01b0319811692919060048210611003575050565b6001600160e01b031960049290920360031b82901b16169150565b909291928360041161024457831161024457600401916003190190565b929190926001600160401b038411610470578360051b9060206040516110638285018261044f565b8096815201918101918383116102445781905b838210611084575050505050565b81356001600160401b038111610244576020916110a487849387016104d8565b815201910190611076565b602081830312610244578035906001600160401b03821161024457019080601f83011215610244578160206104f39335910161103b565b634e487b7160e01b600052603260045260246000fd5b80518210156111105760209160051b010190565b6110e6565b80516020909101516001600160e01b0319811692919060048210611003575050565b91602083013560401c9160608401906111508286610fb6565b6316155e8f60e11b916001600160e01b03199161116c91610fe8565b160361124f575061117c846114e3565b92612105810361123b575061119e6111976111a69286610fb6565b809161101e565b8101906110af565b9160005b8351811015611215576111bd81856110fc565b5163278f794360e11b6111df6111d283611115565b6001600160e01b03191690565b146111ee575b506001016111aa565b60240151803b6111e557630c76093760e01b6000526001600160a01b031660045260246000fd5b50909261122d9250610ada905b610100810190610fb6565b61123657600190565b600090565b632ef3781360e01b60005260045260246000fd5b929050612105819492941461123b575090610ada61122d92611222565b61127760ff91610ec5565b541690565b91908110156111105760051b81013590605e1981360301821215610244570190565b356104f38161026c565b906107088201809211610f4857565b9060158201809211610f4857565b9060028201809211610f4857565b91908201809211610f4857565b906040519163737bebdd60e01b602084015260248301526024825261048460448361044f565b908092918237016000815290565b6040519061132360208361044f565b60008252565b3d15611354573d9061133a82610486565b91611348604051938461044f565b82523d6000602084013e565b606090565b90600182811c92168015611389575b602083101461137357565b634e487b7160e01b600052602260045260246000fd5b91607f1691611368565b6000527f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f5026020526040600020604051908160008254926113d284611359565b808452936001811690811561143e57506001146113f7575b506104f39250038261044f565b90506000929192526020600020906000915b8183106114225750509060206104f392820101386113ea565b6020919350806001915483858801015201910190918392611409565b9050602092506104f394915060ff191682840152151560051b820101386113ea565b63ffffffff60e01b166329565e3b60e01b81149081156114d2575b81156114c1575b81156114b0575b811561149f575b5061149a57600090565b600190565b63278f794360e11b14905038611490565b63b819736760e01b81149150611489565b6389625b5760e01b81149150611482565b6303c3cfc960e21b8114915061147b565b60208101356115976114f86040840184610fb6565b908160405191823720916102256115126060860186610fb6565b90816040519182372060c086013560a0870135608088013561154061153a60e08b018b610fb6565b90612335565b604080519a356001600160a01b031660208c01908152908b019790975260608a0198909852608089019390935260a088019290925260c087019190915260e086015261010085019390935292918290610120820190565b51902060408051602081019283526f71727de22e5e9d8baf0edac6f37da032918101919091526115ca8160608101610225565b51902090565b61127760ff916040519060018060a01b031660208201526020815261023360408261044f565b6115fe611b63565b906020815191012090602081519101206040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a081526115ca60c08261044f565b60003560e01c63bc197c81811463f23a6e6182141763150b7a0282141761168e57633c10b94e6000526004601cfd5b6020526020603cf35b6116a0336115d0565b80156116bb575b610484576282b42960e81b60005260046000fd5b503033146116a7565b8181106116cf575050565b600081556001016116c4565b9190601f81116116ea57505050565b610484926000526020600020906020601f840160051c83019310611716575b601f0160051c01906116c4565b9091508190611709565b6117298161126c565b6118975761173681610ec5565b600160ff19825416179055816000527f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f502602052604060002081516001600160401b038111610470576117928161178c8454611359565b846116db565b6020601f821160011461180657916117e7827f38109edc26e166b5579352ce56a50813177eb25208fd90d61f2f37838622022095936117f6956000916117fb575b508160011b916000199060031b1c19161790565b90555b60405191829182610a56565b0390a2565b9050840151386117d3565b601f1982169061181b84600052602060002090565b9160005b81811061187f5750926117f69492600192827f38109edc26e166b5579352ce56a50813177eb25208fd90d61f2f378386220220989610611866575b5050811b0190556117ea565b85015160001960f88460031b161c19169055388061185a565b9192602060018192868a01518155019401920161181f565b60405163468b12ad60e11b81529081906109849060048301610a56565b602081830312610244578035906001600160401b03821161024457016040818303126102445760405191604083018381106001600160401b038211176104705760405281356001600160401b03811161024457816119139184016104d8565b835260208201356001600160401b0381116102445761193292016104d8565b602082015290565b60208151910151906020811061194e575090565b6000199060200360031b1b1690565b9190826040910312610244576020825192015190565b81601f82011215610244576020815191019061198e81610486565b9261199c604051948561044f565b81845281830111610244576104f3916020840190610a0e565b602081830312610244578051906001600160401b03821161024457019060c082820312610244576119e4610475565b9180516001600160401b0381116102445782611a01918301611973565b835260208101516001600160401b0381116102445760a092611a24918301611973565b6020840152604081015160408401526060810151606084015260808101516080840152015160a082015290565b929190611a60918101906118b4565b90815191611a70610ae08461126c565b611b3a576020835114611af15782519360408514611aa3576040516327755b9160e11b8152806109848660048301610a56565b610225611aec611ad7611ac38760208080999b6104f39b0101910161195d565b9690950151602080825183010191016119b5565b92604051928391602083019190602083019252565b611fd6565b91929091906001600160a01b03611b078561193a565b11611b1f576020806104f39495015192015191611e49565b60405163bff1ac6560e01b8152806109848660048301610a56565b50915050600090565b916000928392602083519301915af1611b5a611329565b901561064f5750565b6040908151611b72838261044f565b601281527111da585b9bc814db585c9d0815d85b1b195d60721b602082015291611b9e8151918261044f565b60018152603160f81b602082015290565b908060209392818452848401376000828201840152601f01601f1916010190565b92916104f39492611bee928552606060208601526060850191611baf565b916040818403910152610a31565b60209082604051938492833781017f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f50381520301902090565b600281901b91906001600160fe1b03811603610f4857565b611c568154611359565b9081611c60575050565b81601f60009311600114611c72575055565b81835260208320611c8e91601f0160051c8101906001016116c4565b808252602082209081548360011b9084198560031b1c191617905555565b9160206104f3938181520191611baf565b9190611cc883611393565b805115611dbe5780516020820120611ce13685856104a1565b6020815191012003611d9f57509081611d28611d1e837fcf95bbfe6f870f8cc40482dc3dccdafd268f0e9ce0a4f24ea1bea9be64e505ff95611bfc565b805460ff19169055565b611d63611d5e856000527f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f502602052604060002090565b611c4c565b611d90611d7e600080516020612f3f83398151915254610f79565b600080516020612f3f83398151915255565b6117f660405192839283611cac565b60405163781f2e3960e01b815293849361098493909160048601611bd0565b63340c473d60e11b600052600484905260246000fd5b611ddc6115f6565b9060405160208101917f37f248f492286ab572e2a1ee0bd5315f2aae54a08b5871b294d657f3a1f1d0078352604082015260408152611e1c60608261044f565b51902060405190602082019261190160f01b845260228301526042820152604281526115ca60628261044f565b9091600091906001600160a01b03821615611f335760405192600484019460248501956044860192853b15611eb357509186939160209593630b135d3f60e11b8852526040845281518501809260045afa9360443d01915afa9151630b135d3f60e11b1491161690565b979650509050815180604014611f0e57604114611ed05750505050565b602092939550606082015160001a835260408201516060525b60005201516040526020600160806000825afa511860601b3d11916000606052604052565b506020929395506040820151601b8160ff1c01845260018060ff1b0316606052611ee9565b50505050600090565b906104846001602d60405180956c1131b430b63632b733b2911d1160991b6020830152611f728151809260208686019101610a0e565b8101601160f91b838201520301601e1981018552018361044f565b8051602010156111105760400190565b6040513d6000823e3d90fd5b6020929190611fbf849282815194859201610a0e565b019081520190565b90816020910312610244575190565b92919060009360a082019485517f7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8106121b35760208301917fff1a2a9176d650e4a99dedb58f1793003935130579fe17b5a3f698ac5b00e63461204884516060870151612042816112b7565b91612340565b60208151910120036121bc57612060612065916121c6565b611f3c565b61207a835160408601516120428451826112d3565b602081519101209060208151910120036121b357600160f81b600160f81b6120b36120a58651611f8d565b516001600160f81b03191690565b16036121b3576120d0602092600092505160405191828092610eae565b039060025afa156121ae576020600061210681516120fa8551610225604051938492888401611fa9565b60405191828092610eae565b039060025afa156121ae57608060005191019360008086518561215985516102258a60405194859360208501978c899192608093969594919660a084019784526020840152604083015260608201520152565b51906101005afa94612169611329565b805196806121a5575b61218557506104f395505190519161222d565b6001966121a19650810160209081019550019250611fc7915050565b1490565b50861515612172565b611f9d565b94505050505090565b5094505050505090565b6040516104f3916121d860608361044f565b604082527f4142434445464748494a4b4c4d4e4f505152535455565758595a61626364656660208301527f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f60408301526123ec565b93919092938315801561231d575b8015612315575b80156122fd575b6122f3576122578386612494565b156122f35760405191602083526020808401526020604084015260608301527fffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254f6080830152600080516020612eff83398151915260a083015260208260c0816005600019fa1561024457600080516020612eff833981519152946122ed93866122e794518181890994099161256f565b91610f20565b90081590565b5050505050600090565b50600080516020612eff833981519152821015612249565b508115612242565b50600080516020612eff83398151915284101561223b565b816040519182372090565b8051606094939290838111156123b2575b818111156123aa575b5082811061236757505050565b6040519450918290039101601f8201601f19165b8181015185820152601f1901908115612394579061237b565b5050604081840160006020820152016040528252565b90503861235a565b925082612351565b906123c482610486565b6123d1604051918261044f565b82815280926123e2601f1991610486565b0190602036910137565b9081511561248a579061241961241461240d6124088451611c34565b6112c5565b6003900490565b6123ba565b91602083019082805101906020820192835194600085525b83811061244057505050505290565b600360049101916001603f845182828260121c16880101518453828282600c1c16880101518385015382828260061c16880101516002850153168501015160038201530190612431565b50506104f3611314565b600160601b63ffffffff60c01b03198110801590612557575b8015612546575b61253f57600160601b63ffffffff60c01b0319907f5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b908290817fffffffff00000001000000000000000000000000fffffffffffffffffffffffc820990600160601b63ffffffff60c01b0319908181800909080890600160601b63ffffffff60c01b03199080091490565b5050600090565b50801580156124b4575081156124b4565b50600160601b63ffffffff60c01b03198210156124ad565b9092600092908360ff81841580612b66575b612b5b5761258f8887612b6e565b929091821580612b53575b612b18575b5085811c60028660fe1c16015b15612aff57600186821c16600286831c60011b160160018114612ab4575b60028114612aa7575b600314612a9a575b600198600019919091019694959489949392915b886000191161266d5750505050505050505060405191606083015260208252602080830152602060408301526002600160601b0363ffffffff60c01b03196080830152600163ffffffff60601b0360601b1960a083015260208260c0816005600019fa15610244579051600160601b63ffffffff60c01b0319910990565b909192939495969798600163ffffffff60601b0360601b198660020990600160601b63ffffffff60c01b0319828009600160601b63ffffffff60c01b031981830992600160601b63ffffffff60c01b03199082900991600160601b63ffffffff60c01b03199081908f8281830891600160601b63ffffffff60c01b031991820390080960030998600160601b63ffffffff60c01b03199083099c600160601b63ffffffff60c01b0319910991600160601b63ffffffff60c01b031980826002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b03198b80090898600160601b63ffffffff60c01b031991829081038b08900996600160601b63ffffffff60c01b03199088908290840908968b60028c60018d841c16921c60011b16018015612a7d5760018114612a32575b60028114612a27575b600314612a1e575b8215612a0b57600160601b63ffffffff60c01b031990889082908f90090890600160601b63ffffffff60c01b031990898203908290859009089781156128d1575b600160601b63ffffffff60c01b031989800998600160601b63ffffffff60c01b0319908a0992600160601b63ffffffff60c01b0319908a90099c600160601b63ffffffff60c01b03199084900998600160601b63ffffffff60c01b03199109600160601b63ffffffff60c01b031980826002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b031985810381868009080897600160601b63ffffffff60c01b03199384910991600160601b63ffffffff60c01b03199182908a82039008090894985b6000190197969594939291906125ef565b886127f4579a91975090959050600160601b63ffffffff60c01b0319816002600160601b0363ffffffff60c01b0319099a600160601b63ffffffff60c01b03198c8009600160601b63ffffffff60c01b0319818d099c600160601b63ffffffff60c01b0319908290099b600160601b63ffffffff60c01b031990818b8103820890600160601b63ffffffff60c01b0319908c900809600160601b63ffffffff60c01b03199060030991600160601b63ffffffff60c01b0319908d0998600160601b63ffffffff60c01b031991099b600160601b63ffffffff60c01b031980826002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b0319848009089b600160601b63ffffffff60c01b03199384910991600160601b63ffffffff60c01b03199182908e82039008900908946128c0565b60019c50909a8c985090965090506128c0565b505083856127b3565b8592508491506127ab565b7f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c29692507f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f591506127a2565b50505099959894600163ffffffff60601b0360601b1903946128c0565b92508096509581926125db565b96975087968994506125d3565b7f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c29698507f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f594506125ca565b60001901600186821c16600286831c60011b16016125ac565b9495600080516020612eff8339815191529196820390089484861580612b4b575b1561259f579850505050505050505090565b506001612b39565b50831561259a565b965050505050505090565b508315612581565b91907f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c2967f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5918015612d225784610c5a9495831480612d19575b15612d045750600160601b63ffffffff60c01b0319905082600209600160601b63ffffffff60c01b031981800992600160601b63ffffffff60c01b031984840991600160601b63ffffffff60c01b03199085900992600160601b63ffffffff60c01b0319908190816001820890600160601b63ffffffff60c01b0319907fffffffff00000001000000000000000000000000fffffffffffffffffffffffe900809600309600160601b63ffffffff60c01b031980846002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b03198380090892600160601b63ffffffff60c01b03196001860995600160601b63ffffffff60c01b0319906001900994600160601b63ffffffff60c01b031993849109600160601b63ffffffff60c01b03199081039290918290868203900890090890612e44565b909192612d1093612d28565b92909190612e44565b50818414612bc7565b50925090565b9193908015612e3b57600160601b63ffffffff60c01b03199081039384908290600190090893600160601b63ffffffff60c01b031990838203908290600190090892600160601b63ffffffff60c01b031984800993600160601b63ffffffff60c01b031990850992600160601b63ffffffff60c01b03199085900994600160601b63ffffffff60c01b031980876002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b031986810381858009080895600160601b63ffffffff60c01b031992839086900991600160601b63ffffffff60c01b03199182908982039008090892600160601b63ffffffff60c01b03199060010991600160601b63ffffffff60c01b03199060010990565b50600191508190565b91909260405190602082526020808301526020604083015260608201526002600160601b0363ffffffff60c01b03196080820152600163ffffffff60601b0360601b1960a082015260208160c0816005600019fa15610244575192600160601b63ffffffff60c01b03199084900992600160601b63ffffffff60c01b03199109600160601b63ffffffff60c01b031991908290800990099156fe0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f500ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f501a2646970667358221220890c9d20b5fc4df99bded2544912158a1d933f168e2e843d0c1a15a2ff32ce8c64736f6c634300081c003338109edc26e166b5579352ce56a50813177eb25208fd90d61f2f378386220220", + "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE PUSH2 0x3DE JUMPI ADDRESS PUSH1 0x80 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH2 0x1B DUP3 DUP3 PUSH2 0x3E3 JUMP JUMPDEST PUSH1 0x1 DUP2 MSTORE PUSH1 0x1F NOT DUP3 ADD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0x3CD JUMPI POP POP DUP2 MLOAD PUSH1 0x0 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x20 DUP2 MSTORE PUSH2 0x47 DUP4 DUP3 PUSH2 0x3E3 JUMP JUMPDEST PUSH2 0x50 DUP3 PUSH2 0x406 JUMP JUMPDEST MSTORE PUSH2 0x5A DUP2 PUSH2 0x406 JUMP JUMPDEST POP PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F500 SLOAD PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x38C JUMPI PUSH1 0x20 PUSH2 0x95 DUP3 DUP6 PUSH2 0x429 JUMP JUMPDEST MLOAD MLOAD EQ ISZERO DUP1 PUSH2 0x377 JUMPI JUMPDEST PUSH2 0x350 JUMPI PUSH1 0x20 PUSH2 0xAF DUP3 DUP6 PUSH2 0x429 JUMP JUMPDEST MLOAD MLOAD EQ DUP1 PUSH2 0x312 JUMPI JUMPDEST PUSH2 0x2EB JUMPI PUSH2 0xC6 DUP2 DUP5 PUSH2 0x429 JUMP JUMPDEST MLOAD SWAP2 DUP1 PUSH1 0x0 NOT DUP2 EQ PUSH2 0x2D5 JUMPI PUSH1 0x1 ADD SWAP3 PUSH1 0xFF PUSH2 0xE1 DUP3 PUSH2 0x48C JUMP JUMPDEST SLOAD AND PUSH2 0x2B5 JUMPI PUSH2 0xF0 DUP2 PUSH2 0x48C JUMP JUMPDEST DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x0 DUP3 DUP2 MSTORE PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F502 PUSH1 0x20 MSTORE DUP7 SWAP1 KECCAK256 DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x29F JUMPI DUP2 SLOAD PUSH1 0x1 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0x295 JUMPI JUMPDEST PUSH1 0x20 DUP3 LT EQ PUSH2 0x27F JUMPI PUSH1 0x1F DUP2 GT PUSH2 0x237 JUMPI JUMPDEST POP PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 EQ PUSH2 0x1BC JUMPI SWAP3 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3466 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP3 DUP3 PUSH2 0x1A8 SWAP4 PUSH1 0x1 SWAP9 SWAP8 SWAP7 PUSH1 0x0 SWAP2 PUSH2 0x1B1 JUMPI JUMPDEST POP PUSH1 0x0 NOT PUSH1 0x3 DUP4 SWAP1 SHL SHR NOT AND SWAP1 DUP9 SHL OR SWAP1 SSTORE JUMPDEST DUP9 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x460 JUMP JUMPDEST SUB SWAP1 LOG2 ADD PUSH2 0x80 JUMP JUMPDEST SWAP1 POP DUP4 ADD MLOAD CODESIZE PUSH2 0x18A JUMP JUMPDEST PUSH1 0x1F NOT DUP3 AND SWAP1 DUP4 PUSH1 0x0 MSTORE DUP1 PUSH1 0x0 KECCAK256 SWAP2 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0x21F JUMPI POP DUP4 PUSH1 0x1 SWAP9 SWAP8 SWAP7 SWAP4 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3466 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP7 SWAP4 PUSH2 0x1A8 SWAP7 DUP12 SWAP5 LT PUSH2 0x206 JUMPI JUMPDEST POP POP DUP2 SHL ADD SWAP1 SSTORE PUSH2 0x19D JUMP JUMPDEST DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE CODESIZE DUP1 PUSH2 0x1FA JUMP JUMPDEST SWAP2 SWAP3 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP7 DUP11 ADD MLOAD DUP2 SSTORE ADD SWAP5 ADD SWAP3 ADD PUSH2 0x1CE JUMP JUMPDEST DUP3 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP4 ADD PUSH1 0x5 SHR DUP2 ADD SWAP2 PUSH1 0x20 DUP5 LT PUSH2 0x275 JUMPI JUMPDEST PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP1 JUMPDEST DUP2 DUP2 LT PUSH2 0x269 JUMPI POP PUSH2 0x159 JUMP JUMPDEST PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x25C JUMP JUMPDEST SWAP1 SWAP2 POP DUP2 SWAP1 PUSH2 0x253 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0x147 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP6 MLOAD PUSH4 0x468B12AD PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 DUP2 SWAP1 PUSH2 0x2D1 SWAP1 PUSH1 0x4 DUP4 ADD PUSH2 0x460 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 PUSH2 0x2F9 PUSH2 0x2D1 SWAP3 DUP6 PUSH2 0x429 JUMP JUMPDEST MLOAD SWAP1 MLOAD PUSH4 0xBFF1AC65 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 DUP3 SWAP2 PUSH1 0x4 DUP4 ADD PUSH2 0x460 JUMP JUMPDEST POP PUSH2 0x31D DUP2 DUP5 PUSH2 0x429 JUMP JUMPDEST MLOAD PUSH1 0x20 DUP2 MLOAD SWAP2 ADD MLOAD SWAP1 PUSH1 0x20 DUP2 LT PUSH2 0x33E JUMPI JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB LT PUSH2 0xB8 JUMP JUMPDEST PUSH1 0x0 NOT SWAP1 PUSH1 0x20 SUB PUSH1 0x3 SHL SHL AND CODESIZE PUSH2 0x32F JUMP JUMPDEST DUP4 PUSH2 0x35E PUSH2 0x2D1 SWAP3 DUP6 PUSH2 0x429 JUMP JUMPDEST MLOAD SWAP1 MLOAD PUSH4 0x27755B91 PUSH1 0xE1 SHL DUP2 MSTORE SWAP2 DUP3 SWAP2 PUSH1 0x4 DUP4 ADD PUSH2 0x460 JUMP JUMPDEST POP DUP4 PUSH2 0x383 DUP3 DUP6 PUSH2 0x429 JUMP JUMPDEST MLOAD MLOAD EQ ISZERO PUSH2 0x9F JUMP JUMPDEST DUP4 DUP3 PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F500 SSTORE MLOAD PUSH2 0x2F94 SWAP1 DUP2 PUSH2 0x4D2 DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 DUP2 DUP2 PUSH2 0x76C ADD MSTORE PUSH2 0x85A ADD MSTORE RETURN JUMPDEST DUP1 PUSH1 0x60 PUSH1 0x20 DUP1 SWAP4 DUP7 ADD ADD MSTORE ADD PUSH2 0x27 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND DUP2 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT SWAP1 DUP3 LT OR PUSH2 0x29F JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x413 JUMPI PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x413 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT PUSH2 0x450 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x440 JUMP JUMPDEST PUSH1 0x40 SWAP2 PUSH1 0x20 DUP3 MSTORE PUSH2 0x480 DUP2 MLOAD DUP1 SWAP3 DUP2 PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x20 DUP7 DUP7 ADD SWAP2 ADD PUSH2 0x43D JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x4A5 SWAP2 DUP2 PUSH1 0x40 MLOAD SWAP4 DUP3 DUP6 DUP1 SWAP5 MLOAD SWAP4 DUP5 SWAP3 ADD PUSH2 0x43D JUMP JUMPDEST DUP2 ADD PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F503 DUP2 MSTORE SUB ADD SWAP1 KECCAK256 SWAP1 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x15 JUMPI JUMPDEST CALLDATASIZE PUSH2 0x165F JUMPI STOP JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x66A1EB7 EQ PUSH2 0x1E5 JUMPI DUP1 PUSH4 0xDB02622 EQ PUSH2 0x1E0 JUMPI DUP1 PUSH4 0xF0F3F24 EQ PUSH2 0x1DB JUMPI DUP1 PUSH4 0x1626BA7E EQ PUSH2 0x1D6 JUMPI DUP1 PUSH4 0x17452CAA EQ PUSH2 0x1D1 JUMPI DUP1 PUSH4 0x19822F7C EQ PUSH2 0x1CC JUMPI DUP1 PUSH4 0x1CA5393F EQ PUSH2 0x1C7 JUMPI DUP1 PUSH4 0x29565E3B EQ PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x2C2ABD1E EQ PUSH2 0x1BD JUMPI DUP1 PUSH4 0x34FCD5BE EQ PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x36D9CF9B EQ PUSH2 0x1B3 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x1AE JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x1A9 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x1A4 JUMPI DUP1 PUSH4 0x6F2DE70E EQ PUSH2 0x19F JUMPI DUP1 PUSH4 0x737BEBDD EQ PUSH2 0x19A JUMPI DUP1 PUSH4 0x84B0196E EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0x88CE4C7C EQ PUSH2 0x190 JUMPI DUP1 PUSH4 0x89625B57 EQ PUSH2 0x18B JUMPI DUP1 PUSH4 0x8EA69029 EQ PUSH2 0x186 JUMPI DUP1 PUSH4 0x9F9BCB34 EQ PUSH2 0x181 JUMPI DUP1 PUSH4 0xA05BD44E EQ PUSH2 0x17C JUMPI DUP1 PUSH4 0xA2E1A8D8 EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0xB0D691FE EQ PUSH2 0x172 JUMPI DUP1 PUSH4 0xB61D27F6 EQ PUSH2 0x16D JUMPI DUP1 PUSH4 0xB8197367 EQ PUSH2 0x168 JUMPI DUP1 PUSH4 0xCE1506BE EQ PUSH2 0x163 JUMPI DUP1 PUSH4 0xD948FD2E EQ PUSH2 0x15E JUMPI PUSH4 0xF698DA25 SUB PUSH2 0xE JUMPI PUSH2 0xE93 JUMP JUMPDEST PUSH2 0xE68 JUMP JUMPDEST PUSH2 0xE4A JUMP JUMPDEST PUSH2 0xE03 JUMP JUMPDEST PUSH2 0xD97 JUMP JUMPDEST PUSH2 0xD6C JUMP JUMPDEST PUSH2 0xD45 JUMP JUMPDEST PUSH2 0xD0B JUMP JUMPDEST PUSH2 0xCD1 JUMP JUMPDEST PUSH2 0xC9E JUMP JUMPDEST PUSH2 0xC5E JUMP JUMPDEST PUSH2 0xC0E JUMP JUMPDEST PUSH2 0xB6D JUMP JUMPDEST PUSH2 0xA67 JUMP JUMPDEST PUSH2 0x8CC JUMP JUMPDEST PUSH2 0x896 JUMP JUMPDEST PUSH2 0x846 JUMP JUMPDEST PUSH2 0x731 JUMP JUMPDEST PUSH2 0x706 JUMP JUMPDEST PUSH2 0x673 JUMP JUMPDEST PUSH2 0x5CB JUMP JUMPDEST PUSH2 0x52D JUMP JUMPDEST PUSH2 0x4F6 JUMP JUMPDEST PUSH2 0x3A1 JUMP JUMPDEST PUSH2 0x375 JUMP JUMPDEST PUSH2 0x323 JUMP JUMPDEST PUSH2 0x27D JUMP JUMPDEST PUSH2 0x249 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x20 PUSH1 0xFF PUSH2 0x238 PUSH1 0x4 CALLDATALOAD PUSH2 0x233 PUSH1 0x24 CALLDATALOAD SWAP2 PUSH2 0x225 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 DUP9 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x40 DUP2 ADD SWAP5 DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x44F JUMP JUMPDEST PUSH2 0xEC5 JUMP JUMPDEST SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x20 PUSH2 0x264 PUSH2 0xF4D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SUB PUSH2 0x244 JUMPI JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH2 0x2F4 PUSH1 0x4 CALLDATALOAD PUSH2 0x29D DUP2 PUSH2 0x26C JUMP JUMPDEST PUSH2 0x2A5 PUSH2 0x1697 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x20 DUP2 MSTORE PUSH2 0x2C5 PUSH1 0x40 DUP3 PUSH2 0x44F JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EDF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD SWAP1 PUSH2 0x2DF DUP3 PUSH2 0xF79 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EDF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE PUSH2 0x1720 JUMP JUMPDEST STOP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x244 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT PUSH2 0x244 JUMPI PUSH1 0x20 DUP4 DUP2 DUP7 ADD SWAP6 ADD ADD GT PUSH2 0x244 JUMPI JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x24 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI PUSH1 0x20 SWAP2 PUSH2 0x35C PUSH2 0x362 SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x2F6 JUMP JUMPDEST SWAP2 PUSH2 0xF88 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH2 0x708 DUP2 MSTORE RETURN JUMPDEST SWAP1 DUP2 PUSH2 0x120 SWAP2 SUB SLT PUSH2 0x244 JUMPI SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x60 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI PUSH2 0x3D1 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x392 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD PUSH1 0x24 CALLDATALOAD PUSH16 0x71727DE22E5E9D8BAF0EDAC6F37DA031 NOT CALLER ADD PUSH2 0x429 JUMPI PUSH2 0x3FD DUP3 SWAP2 PUSH2 0x414 SWAP5 PUSH2 0x1137 JUMP JUMPDEST SWAP2 PUSH2 0x418 JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE SWAP1 DUP2 SWAP1 PUSH1 0x20 DUP3 ADD SWAP1 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 SWAP1 DUP2 DUP1 CODESIZE SWAP3 CALLER GAS CALL POP CODESIZE PUSH2 0x403 JUMP JUMPDEST PUSH3 0x82B429 PUSH1 0xE8 SHL PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x1F DUP1 NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x470 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x439 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x484 PUSH1 0xC0 DUP4 PUSH2 0x44F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x470 JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x4AD DUP3 PUSH2 0x486 JUMP JUMPDEST SWAP2 PUSH2 0x4BB PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x44F JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0x244 JUMPI DUP3 DUP2 PUSH1 0x20 SWAP4 DUP5 PUSH1 0x0 SWAP7 ADD CALLDATACOPY ADD ADD MSTORE JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x244 JUMPI DUP2 PUSH1 0x20 PUSH2 0x4F3 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x4A1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI PUSH1 0xFF PUSH2 0x238 PUSH2 0x233 PUSH1 0x20 SWAP4 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x4D8 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH2 0x2F4 PUSH1 0x24 CALLDATALOAD PUSH2 0x2C5 PUSH1 0x4 CALLDATALOAD PUSH2 0x552 PUSH2 0x1697 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 PUSH1 0x60 DUP2 ADD PUSH2 0x225 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH1 0x3 NOT DUP4 ADD SLT PUSH2 0x244 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI PUSH1 0x4 ADD PUSH1 0x0 SWAP3 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x5C7 JUMPI DUP2 CALLDATALOAD SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP6 GT PUSH2 0x5C4 JUMPI POP PUSH1 0x20 DUP1 DUP4 ADD SWAP3 DUP6 PUSH1 0x5 SHL ADD ADD GT PUSH2 0x244 JUMPI SWAP2 SWAP1 JUMP JUMPDEST DUP1 REVERT JUMPDEST DUP4 DUP1 REVERT JUMPDEST PUSH2 0x5D4 CALLDATASIZE PUSH2 0x56E JUMP JUMPDEST SWAP1 PUSH16 0x71727DE22E5E9D8BAF0EDAC6F37DA032 CALLER SUB PUSH2 0x429 JUMPI PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2F4 JUMPI PUSH1 0x0 PUSH2 0x608 DUP3 PUSH1 0x5 SHL DUP5 ADD DUP5 PUSH2 0xFB6 JUMP JUMPDEST PUSH2 0x612 DUP2 DUP4 PUSH2 0xFE8 JUMP JUMPDEST PUSH2 0x61B DUP2 PUSH2 0x1460 JUMP JUMPDEST ISZERO PUSH2 0x657 JUMPI POP DUP3 SWAP2 PUSH2 0x62E SWAP2 CALLDATASIZE SWAP2 PUSH2 0x4A1 JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD DUP3 ADDRESS GAS CALL PUSH2 0x640 PUSH2 0x1329 JUMP JUMPDEST SWAP1 ISZERO PUSH2 0x64F JUMPI POP PUSH1 0x1 ADD PUSH2 0x5EF JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD REVERT JUMPDEST PUSH4 0x1D8370A3 PUSH1 0xE1 SHL DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x4 MSTORE PUSH1 0x24 DUP4 REVERT JUMPDEST PUSH2 0x67C CALLDATASIZE PUSH2 0x56E JUMP JUMPDEST SWAP1 PUSH16 0x71727DE22E5E9D8BAF0EDAC6F37DA032 CALLER SUB PUSH2 0x6F9 JUMPI JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT PUSH2 0x6A1 JUMPI STOP JUMPDEST DUP1 PUSH2 0x6F3 PUSH2 0x6B2 PUSH1 0x1 SWAP4 DUP7 DUP7 PUSH2 0x127C JUMP JUMPDEST CALLDATALOAD PUSH2 0x6BC DUP2 PUSH2 0x26C JUMP JUMPDEST PUSH1 0x20 PUSH2 0x6C9 DUP5 DUP9 DUP9 PUSH2 0x127C JUMP JUMPDEST ADD CALLDATALOAD PUSH2 0x6ED PUSH2 0x6E6 PUSH2 0x6DC DUP7 DUP11 DUP11 PUSH2 0x127C JUMP JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 PUSH2 0xFB6 JUMP JUMPDEST CALLDATASIZE SWAP2 PUSH2 0x4A1 JUMP JUMPDEST SWAP2 PUSH2 0x1B43 JUMP JUMPDEST ADD PUSH2 0x698 JUMP JUMPDEST PUSH2 0x701 PUSH2 0x1697 JUMP JUMPDEST PUSH2 0x695 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x20 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2F3F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x749 DUP2 PUSH2 0x26C JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI PUSH2 0x768 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x2F6 JUMP JUMPDEST SWAP1 SWAP2 PUSH32 0x0 ADDRESS EQ PUSH2 0x838 JUMPI PUSH2 0x799 PUSH2 0x1697 JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND RETURNDATASIZE PUSH1 0x0 MSTORE PUSH4 0x52D1902D PUSH1 0x1 MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2F1F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x20 PUSH1 0x1 PUSH1 0x4 PUSH1 0x1D DUP6 GAS STATICCALL MLOAD SUB PUSH2 0x82A JUMPI DUP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B PUSH1 0x0 DUP1 LOG2 DUP2 DUP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2F1F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE PUSH2 0x80B JUMPI STOP JUMPDEST DUP2 PUSH1 0x0 SWAP3 PUSH1 0x40 MLOAD SWAP5 DUP6 CALLDATACOPY DUP4 CODESIZE SWAP3 GAS DELEGATECALL ISZERO PUSH2 0x821 JUMPI STOP JUMPDEST RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH4 0x55299B49 PUSH1 0x1 MSTORE PUSH1 0x4 PUSH1 0x1D REVERT JUMPDEST PUSH4 0x9F03A026 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x1C REVERT JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI ADDRESS PUSH32 0x0 SUB PUSH2 0x838 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2F1F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2F1F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 SWAP1 RETURN JUMPDEST PUSH2 0x8D5 CALLDATASIZE PUSH2 0x56E JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EDF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD SWAP2 DUP3 PUSH2 0x9FD JUMPI PUSH2 0x8F6 SWAP2 CALLDATASIZE SWAP2 PUSH2 0x103B JUMP JUMPDEST SWAP1 PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x9E7 JUMPI PUSH1 0x20 PUSH2 0x90F DUP3 DUP6 PUSH2 0x10FC JUMP JUMPDEST MLOAD MLOAD EQ ISZERO DUP1 PUSH2 0x9D1 JUMPI JUMPDEST PUSH2 0x9AA JUMPI PUSH1 0x20 PUSH2 0x929 DUP3 DUP6 PUSH2 0x10FC JUMP JUMPDEST MLOAD MLOAD EQ DUP1 PUSH2 0x988 JUMPI JUMPDEST PUSH2 0x95D JUMPI DUP1 PUSH2 0x957 PUSH2 0x946 PUSH1 0x1 SWAP4 DUP7 PUSH2 0x10FC JUMP JUMPDEST MLOAD SWAP4 PUSH2 0x951 DUP2 PUSH2 0xF79 JUMP JUMPDEST SWAP5 PUSH2 0x1720 JUMP JUMPDEST ADD PUSH2 0x8FA JUMP JUMPDEST PUSH2 0x96A PUSH2 0x984 SWAP2 DUP5 PUSH2 0x10FC JUMP JUMPDEST MLOAD PUSH1 0x40 MLOAD PUSH4 0xBFF1AC65 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 DUP3 SWAP2 PUSH1 0x4 DUP4 ADD PUSH2 0xA56 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x9A4 PUSH2 0x99E DUP4 DUP7 PUSH2 0x10FC JUMP JUMPDEST MLOAD PUSH2 0x193A JUMP JUMPDEST GT PUSH2 0x932 JUMP JUMPDEST PUSH2 0x9B7 PUSH2 0x984 SWAP2 DUP5 PUSH2 0x10FC JUMP JUMPDEST MLOAD PUSH1 0x40 MLOAD PUSH4 0x27755B91 PUSH1 0xE1 SHL DUP2 MSTORE SWAP2 DUP3 SWAP2 PUSH1 0x4 DUP4 ADD PUSH2 0xA56 JUMP JUMPDEST POP PUSH1 0x40 PUSH2 0x9DE DUP3 DUP6 PUSH2 0x10FC JUMP JUMPDEST MLOAD MLOAD EQ ISZERO PUSH2 0x919 JUMP JUMPDEST PUSH2 0x2F4 DUP3 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EDF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST PUSH4 0x2ED543D PUSH1 0xE5 SHL PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT PUSH2 0xA21 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA11 JUMP JUMPDEST SWAP1 PUSH1 0x20 SWAP2 PUSH2 0xA4A DUP2 MLOAD DUP1 SWAP3 DUP2 DUP6 MSTORE DUP6 DUP1 DUP7 ADD SWAP2 ADD PUSH2 0xA0E JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND ADD ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0x4F3 SWAP3 DUP2 DUP2 MSTORE ADD SWAP1 PUSH2 0xA31 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI DUP1 PUSH1 0x4 ADD PUSH1 0x80 PUSH1 0x3 NOT DUP4 CALLDATASIZE SUB ADD SLT PUSH2 0x244 JUMPI PUSH1 0x44 DUP3 ADD CALLDATALOAD PUSH2 0xAA9 DUP2 PUSH2 0x12A8 JUMP JUMPDEST TIMESTAMP GT PUSH2 0xB46 JUMPI PUSH2 0xAE0 PUSH2 0xACD PUSH2 0xAC1 PUSH2 0xAE4 SWAP4 PUSH2 0x12E0 JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD KECCAK256 PUSH2 0x1DD4 JUMP JUMPDEST PUSH2 0xADA PUSH1 0x64 DUP7 ADD DUP6 PUSH2 0xFB6 JUMP JUMPDEST SWAP2 PUSH2 0x1A51 JUMP JUMPDEST ISZERO SWAP1 JUMP JUMPDEST PUSH2 0xB35 JUMPI PUSH1 0x0 SWAP2 PUSH2 0xB03 DUP3 PUSH1 0x24 PUSH2 0xAFB DUP7 SWAP6 PUSH2 0x129E JUMP JUMPDEST SWAP4 ADD SWAP1 PUSH2 0xFB6 JUMP JUMPDEST SWAP1 PUSH2 0xB13 PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP4 PUSH2 0x1306 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL PUSH2 0xB1F PUSH2 0x1329 JUMP JUMPDEST SWAP1 ISZERO PUSH2 0x64F JUMPI PUSH2 0x414 SWAP1 PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xA56 JUMP JUMPDEST PUSH4 0x8BAA579F PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST PUSH2 0xB52 PUSH2 0xB69 SWAP2 PUSH2 0x12A8 JUMP JUMPDEST PUSH4 0xF88F049 PUSH1 0xE4 SHL PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE TIMESTAMP PUSH1 0x24 MSTORE PUSH1 0x44 SWAP1 JUMP JUMPDEST PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH2 0xBAD PUSH2 0xBBB PUSH2 0xB8C PUSH2 0x1B63 JUMP JUMPDEST PUSH1 0x40 SWAP3 SWAP2 SWAP3 MLOAD SWAP4 DUP5 SWAP4 PUSH1 0xF PUSH1 0xF8 SHL DUP6 MSTORE PUSH1 0xE0 PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0xE0 DUP6 ADD SWAP1 PUSH2 0xA31 JUMP JUMPDEST SWAP1 DUP4 DUP3 SUB PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0xA31 JUMP JUMPDEST CHAINID PUSH1 0x60 DUP4 ADD MSTORE ADDRESS PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0xA0 DUP4 ADD MSTORE DUP2 DUP2 SUB PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0x20 PUSH1 0x60 MLOAD SWAP2 DUP3 DUP2 MSTORE ADD SWAP1 PUSH1 0x80 SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0xBF5 JUMPI POP POP POP SUB SWAP1 RETURN JUMPDEST DUP3 MLOAD DUP5 MSTORE DUP6 SWAP5 POP PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0xBE7 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH2 0x2105 DUP2 MSTORE RETURN JUMPDEST SWAP1 PUSH1 0x40 PUSH1 0x3 NOT DUP4 ADD SLT PUSH2 0x244 JUMPI PUSH1 0x4 CALLDATALOAD SWAP2 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x244 JUMPI PUSH2 0xC5A SWAP2 PUSH1 0x4 ADD PUSH2 0x2F6 JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH2 0xC6C CALLDATASIZE PUSH2 0xC2B JUMP JUMPDEST SWAP1 PUSH2 0xC75 PUSH2 0x1697 JUMP JUMPDEST PUSH1 0x1 PUSH2 0xC7F PUSH2 0xF4D JUMP JUMPDEST EQ PUSH2 0xC8D JUMPI PUSH2 0x2F4 SWAP3 PUSH2 0x1CBD JUMP JUMPDEST PUSH4 0x948BF897 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH2 0x414 PUSH2 0xCBD PUSH1 0x4 CALLDATALOAD PUSH2 0x1393 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0xA31 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 SUB PUSH2 0x244 JUMPI PUSH2 0xD01 PUSH1 0x20 SWAP2 PUSH2 0x1460 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI PUSH2 0x264 PUSH2 0xD40 PUSH1 0x20 SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x392 JUMP JUMPDEST PUSH2 0x14E3 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x20 PUSH2 0xD01 PUSH1 0x4 CALLDATALOAD PUSH2 0xD67 DUP2 PUSH2 0x26C JUMP JUMPDEST PUSH2 0x15D0 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH16 0x71727DE22E5E9D8BAF0EDAC6F37DA032 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x60 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0xDAF DUP2 PUSH2 0x26C JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x24 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT PUSH2 0x244 JUMPI PUSH2 0x6ED PUSH2 0xDD8 PUSH2 0x2F4 SWAP5 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x2F6 JUMP JUMPDEST PUSH16 0x71727DE22E5E9D8BAF0EDAC6F37DA032 CALLER SUB PUSH2 0xDF6 JUMPI CALLDATASIZE SWAP2 PUSH2 0x4A1 JUMP JUMPDEST PUSH2 0xDFE PUSH2 0x1697 JUMP JUMPDEST PUSH2 0x6E6 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH2 0xE11 CALLDATASIZE PUSH2 0xC2B JUMP JUMPDEST SWAP1 PUSH2 0xE1A PUSH2 0x1697 JUMP JUMPDEST PUSH2 0xE22 PUSH2 0xF4D JUMP JUMPDEST SWAP3 PUSH1 0x1 DUP5 GT PUSH2 0xE35 JUMPI PUSH2 0x2F4 SWAP4 POP PUSH2 0x1CBD JUMP JUMPDEST DUP4 PUSH4 0x1047E355 PUSH1 0xE3 SHL PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x20 PUSH2 0x264 PUSH1 0x4 CALLDATALOAD PUSH2 0x1DD4 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x20 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EDF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x20 PUSH2 0x264 PUSH2 0x15F6 JUMP JUMPDEST SWAP1 PUSH2 0xEC1 PUSH1 0x20 SWAP3 DUP3 DUP2 MLOAD SWAP5 DUP6 SWAP3 ADD PUSH2 0xA0E JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH2 0xEDE SWAP2 DUP2 PUSH1 0x40 MLOAD SWAP4 DUP3 DUP6 DUP1 SWAP5 MLOAD SWAP4 DUP5 SWAP3 ADD PUSH2 0xA0E JUMP JUMPDEST DUP2 ADD PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F503 DUP2 MSTORE SUB ADD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SUB SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 GT PUSH2 0xF48 JUMPI JUMP JUMPDEST PUSH2 0xF0A JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EDF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2F3F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD DUP2 SUB SWAP1 DUP2 GT PUSH2 0xF48 JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x0 NOT DUP2 EQ PUSH2 0xF48 JUMPI PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xF96 PUSH2 0xF9B SWAP4 SWAP3 PUSH2 0x1DD4 JUMP JUMPDEST PUSH2 0x1A51 JUMP JUMPDEST PUSH2 0xFAB JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 JUMP JUMPDEST PUSH4 0xB135D3F PUSH1 0xE1 SHL SWAP1 JUMP JUMPDEST SWAP1 CALLDATALOAD SWAP1 PUSH1 0x1E NOT DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x244 JUMPI ADD DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x244 JUMPI PUSH1 0x20 ADD SWAP2 DUP2 CALLDATASIZE SUB DUP4 SGT PUSH2 0x244 JUMPI JUMP JUMPDEST CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND SWAP3 SWAP2 SWAP1 PUSH1 0x4 DUP3 LT PUSH2 0x1003 JUMPI POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0x4 SWAP3 SWAP1 SWAP3 SUB PUSH1 0x3 SHL DUP3 SWAP1 SHL AND AND SWAP2 POP JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 DUP4 PUSH1 0x4 GT PUSH2 0x244 JUMPI DUP4 GT PUSH2 0x244 JUMPI PUSH1 0x4 ADD SWAP2 PUSH1 0x3 NOT ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP1 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP5 GT PUSH2 0x470 JUMPI DUP4 PUSH1 0x5 SHL SWAP1 PUSH1 0x20 PUSH1 0x40 MLOAD PUSH2 0x1063 DUP3 DUP6 ADD DUP3 PUSH2 0x44F JUMP JUMPDEST DUP1 SWAP7 DUP2 MSTORE ADD SWAP2 DUP2 ADD SWAP2 DUP4 DUP4 GT PUSH2 0x244 JUMPI DUP2 SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x1084 JUMPI POP POP POP POP POP JUMP JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI PUSH1 0x20 SWAP2 PUSH2 0x10A4 DUP8 DUP5 SWAP4 DUP8 ADD PUSH2 0x4D8 JUMP JUMPDEST DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x1076 JUMP JUMPDEST PUSH1 0x20 DUP2 DUP4 SUB SLT PUSH2 0x244 JUMPI DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x244 JUMPI ADD SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x244 JUMPI DUP2 PUSH1 0x20 PUSH2 0x4F3 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x103B JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x1110 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x10E6 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND SWAP3 SWAP2 SWAP1 PUSH1 0x4 DUP3 LT PUSH2 0x1003 JUMPI POP POP JUMP JUMPDEST SWAP2 PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x40 SHR SWAP2 PUSH1 0x60 DUP5 ADD SWAP1 PUSH2 0x1150 DUP3 DUP7 PUSH2 0xFB6 JUMP JUMPDEST PUSH4 0x16155E8F PUSH1 0xE1 SHL SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP2 PUSH2 0x116C SWAP2 PUSH2 0xFE8 JUMP JUMPDEST AND SUB PUSH2 0x124F JUMPI POP PUSH2 0x117C DUP5 PUSH2 0x14E3 JUMP JUMPDEST SWAP3 PUSH2 0x2105 DUP2 SUB PUSH2 0x123B JUMPI POP PUSH2 0x119E PUSH2 0x1197 PUSH2 0x11A6 SWAP3 DUP7 PUSH2 0xFB6 JUMP JUMPDEST DUP1 SWAP2 PUSH2 0x101E JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x10AF JUMP JUMPDEST SWAP2 PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x1215 JUMPI PUSH2 0x11BD DUP2 DUP6 PUSH2 0x10FC JUMP JUMPDEST MLOAD PUSH4 0x278F7943 PUSH1 0xE1 SHL PUSH2 0x11DF PUSH2 0x11D2 DUP4 PUSH2 0x1115 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST EQ PUSH2 0x11EE JUMPI JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x11AA JUMP JUMPDEST PUSH1 0x24 ADD MLOAD DUP1 EXTCODESIZE PUSH2 0x11E5 JUMPI PUSH4 0xC760937 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP1 SWAP3 PUSH2 0x122D SWAP3 POP PUSH2 0xADA SWAP1 JUMPDEST PUSH2 0x100 DUP2 ADD SWAP1 PUSH2 0xFB6 JUMP JUMPDEST PUSH2 0x1236 JUMPI PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH4 0x2EF37813 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 SWAP1 POP PUSH2 0x2105 DUP2 SWAP5 SWAP3 SWAP5 EQ PUSH2 0x123B JUMPI POP SWAP1 PUSH2 0xADA PUSH2 0x122D SWAP3 PUSH2 0x1222 JUMP JUMPDEST PUSH2 0x1277 PUSH1 0xFF SWAP2 PUSH2 0xEC5 JUMP JUMPDEST SLOAD AND SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x1110 JUMPI PUSH1 0x5 SHL DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x5E NOT DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x244 JUMPI ADD SWAP1 JUMP JUMPDEST CALLDATALOAD PUSH2 0x4F3 DUP2 PUSH2 0x26C JUMP JUMPDEST SWAP1 PUSH2 0x708 DUP3 ADD DUP1 SWAP3 GT PUSH2 0xF48 JUMPI JUMP JUMPDEST SWAP1 PUSH1 0x15 DUP3 ADD DUP1 SWAP3 GT PUSH2 0xF48 JUMPI JUMP JUMPDEST SWAP1 PUSH1 0x2 DUP3 ADD DUP1 SWAP3 GT PUSH2 0xF48 JUMPI JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0xF48 JUMPI JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP2 PUSH4 0x737BEBDD PUSH1 0xE0 SHL PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x24 DUP3 MSTORE PUSH2 0x484 PUSH1 0x44 DUP4 PUSH2 0x44F JUMP JUMPDEST SWAP1 DUP1 SWAP3 SWAP2 DUP3 CALLDATACOPY ADD PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x1323 PUSH1 0x20 DUP4 PUSH2 0x44F JUMP JUMPDEST PUSH1 0x0 DUP3 MSTORE JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x1354 JUMPI RETURNDATASIZE SWAP1 PUSH2 0x133A DUP3 PUSH2 0x486 JUMP JUMPDEST SWAP2 PUSH2 0x1348 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x44F JUMP JUMPDEST DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x1389 JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x1373 JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x1368 JUMP JUMPDEST PUSH1 0x0 MSTORE PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F502 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD SWAP1 DUP2 PUSH1 0x0 DUP3 SLOAD SWAP3 PUSH2 0x13D2 DUP5 PUSH2 0x1359 JUMP JUMPDEST DUP1 DUP5 MSTORE SWAP4 PUSH1 0x1 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x143E JUMPI POP PUSH1 0x1 EQ PUSH2 0x13F7 JUMPI JUMPDEST POP PUSH2 0x4F3 SWAP3 POP SUB DUP3 PUSH2 0x44F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 SWAP3 SWAP2 SWAP3 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x0 SWAP2 JUMPDEST DUP2 DUP4 LT PUSH2 0x1422 JUMPI POP POP SWAP1 PUSH1 0x20 PUSH2 0x4F3 SWAP3 DUP3 ADD ADD CODESIZE PUSH2 0x13EA JUMP JUMPDEST PUSH1 0x20 SWAP2 SWAP4 POP DUP1 PUSH1 0x1 SWAP2 SLOAD DUP4 DUP6 DUP9 ADD ADD MSTORE ADD SWAP2 ADD SWAP1 SWAP2 DUP4 SWAP3 PUSH2 0x1409 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 SWAP3 POP PUSH2 0x4F3 SWAP5 SWAP2 POP PUSH1 0xFF NOT AND DUP3 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD CODESIZE PUSH2 0x13EA JUMP JUMPDEST PUSH4 0xFFFFFFFF PUSH1 0xE0 SHL AND PUSH4 0x29565E3B PUSH1 0xE0 SHL DUP2 EQ SWAP1 DUP2 ISZERO PUSH2 0x14D2 JUMPI JUMPDEST DUP2 ISZERO PUSH2 0x14C1 JUMPI JUMPDEST DUP2 ISZERO PUSH2 0x14B0 JUMPI JUMPDEST DUP2 ISZERO PUSH2 0x149F JUMPI JUMPDEST POP PUSH2 0x149A JUMPI PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH4 0x278F7943 PUSH1 0xE1 SHL EQ SWAP1 POP CODESIZE PUSH2 0x1490 JUMP JUMPDEST PUSH4 0xB8197367 PUSH1 0xE0 SHL DUP2 EQ SWAP2 POP PUSH2 0x1489 JUMP JUMPDEST PUSH4 0x89625B57 PUSH1 0xE0 SHL DUP2 EQ SWAP2 POP PUSH2 0x1482 JUMP JUMPDEST PUSH4 0x3C3CFC9 PUSH1 0xE2 SHL DUP2 EQ SWAP2 POP PUSH2 0x147B JUMP JUMPDEST PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH2 0x1597 PUSH2 0x14F8 PUSH1 0x40 DUP5 ADD DUP5 PUSH2 0xFB6 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x40 MLOAD SWAP2 DUP3 CALLDATACOPY KECCAK256 SWAP2 PUSH2 0x225 PUSH2 0x1512 PUSH1 0x60 DUP7 ADD DUP7 PUSH2 0xFB6 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x40 MLOAD SWAP2 DUP3 CALLDATACOPY KECCAK256 PUSH1 0xC0 DUP7 ADD CALLDATALOAD PUSH1 0xA0 DUP8 ADD CALLDATALOAD PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH2 0x1540 PUSH2 0x153A PUSH1 0xE0 DUP12 ADD DUP12 PUSH2 0xFB6 JUMP JUMPDEST SWAP1 PUSH2 0x2335 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP11 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP13 ADD SWAP1 DUP2 MSTORE SWAP1 DUP12 ADD SWAP8 SWAP1 SWAP8 MSTORE PUSH1 0x60 DUP11 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH1 0x80 DUP10 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xA0 DUP9 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xC0 DUP8 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP7 ADD MSTORE PUSH2 0x100 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP3 SWAP2 DUP3 SWAP1 PUSH2 0x120 DUP3 ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 DUP4 MSTORE PUSH16 0x71727DE22E5E9D8BAF0EDAC6F37DA032 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x15CA DUP2 PUSH1 0x60 DUP2 ADD PUSH2 0x225 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x1277 PUSH1 0xFF SWAP2 PUSH1 0x40 MLOAD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x20 DUP2 MSTORE PUSH2 0x233 PUSH1 0x40 DUP3 PUSH2 0x44F JUMP JUMPDEST PUSH2 0x15FE PUSH2 0x1B63 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 PUSH1 0x20 DUP2 MLOAD SWAP2 ADD KECCAK256 PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP3 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP5 MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH2 0x15CA PUSH1 0xC0 DUP3 PUSH2 0x44F JUMP JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR PUSH4 0xBC197C81 DUP2 EQ PUSH4 0xF23A6E61 DUP3 EQ OR PUSH4 0x150B7A02 DUP3 EQ OR PUSH2 0x168E JUMPI PUSH4 0x3C10B94E PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x1C REVERT JUMPDEST PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x3C RETURN JUMPDEST PUSH2 0x16A0 CALLER PUSH2 0x15D0 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x16BB JUMPI JUMPDEST PUSH2 0x484 JUMPI PUSH3 0x82B429 PUSH1 0xE8 SHL PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST POP ADDRESS CALLER EQ PUSH2 0x16A7 JUMP JUMPDEST DUP2 DUP2 LT PUSH2 0x16CF JUMPI POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x16C4 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x1F DUP2 GT PUSH2 0x16EA JUMPI POP POP POP JUMP JUMPDEST PUSH2 0x484 SWAP3 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x20 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP4 ADD SWAP4 LT PUSH2 0x1716 JUMPI JUMPDEST PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP1 PUSH2 0x16C4 JUMP JUMPDEST SWAP1 SWAP2 POP DUP2 SWAP1 PUSH2 0x1709 JUMP JUMPDEST PUSH2 0x1729 DUP2 PUSH2 0x126C JUMP JUMPDEST PUSH2 0x1897 JUMPI PUSH2 0x1736 DUP2 PUSH2 0xEC5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xFF NOT DUP3 SLOAD AND OR SWAP1 SSTORE DUP2 PUSH1 0x0 MSTORE PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F502 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x470 JUMPI PUSH2 0x1792 DUP2 PUSH2 0x178C DUP5 SLOAD PUSH2 0x1359 JUMP JUMPDEST DUP5 PUSH2 0x16DB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 EQ PUSH2 0x1806 JUMPI SWAP2 PUSH2 0x17E7 DUP3 PUSH32 0x38109EDC26E166B5579352CE56A50813177EB25208FD90D61F2F378386220220 SWAP6 SWAP4 PUSH2 0x17F6 SWAP6 PUSH1 0x0 SWAP2 PUSH2 0x17FB JUMPI JUMPDEST POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH1 0x0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR SWAP1 JUMP JUMPDEST SWAP1 SSTORE JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xA56 JUMP JUMPDEST SUB SWAP1 LOG2 JUMP JUMPDEST SWAP1 POP DUP5 ADD MLOAD CODESIZE PUSH2 0x17D3 JUMP JUMPDEST PUSH1 0x1F NOT DUP3 AND SWAP1 PUSH2 0x181B DUP5 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP2 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0x187F JUMPI POP SWAP3 PUSH2 0x17F6 SWAP5 SWAP3 PUSH1 0x1 SWAP3 DUP3 PUSH32 0x38109EDC26E166B5579352CE56A50813177EB25208FD90D61F2F378386220220 SWAP9 SWAP7 LT PUSH2 0x1866 JUMPI JUMPDEST POP POP DUP2 SHL ADD SWAP1 SSTORE PUSH2 0x17EA JUMP JUMPDEST DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE CODESIZE DUP1 PUSH2 0x185A JUMP JUMPDEST SWAP2 SWAP3 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP7 DUP11 ADD MLOAD DUP2 SSTORE ADD SWAP5 ADD SWAP3 ADD PUSH2 0x181F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x468B12AD PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 DUP2 SWAP1 PUSH2 0x984 SWAP1 PUSH1 0x4 DUP4 ADD PUSH2 0xA56 JUMP JUMPDEST PUSH1 0x20 DUP2 DUP4 SUB SLT PUSH2 0x244 JUMPI DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x244 JUMPI ADD PUSH1 0x40 DUP2 DUP4 SUB SLT PUSH2 0x244 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH1 0x40 DUP4 ADD DUP4 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x470 JUMPI PUSH1 0x40 MSTORE DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI DUP2 PUSH2 0x1913 SWAP2 DUP5 ADD PUSH2 0x4D8 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI PUSH2 0x1932 SWAP3 ADD PUSH2 0x4D8 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD MLOAD SWAP1 PUSH1 0x20 DUP2 LT PUSH2 0x194E JUMPI POP SWAP1 JUMP JUMPDEST PUSH1 0x0 NOT SWAP1 PUSH1 0x20 SUB PUSH1 0x3 SHL SHL AND SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 PUSH1 0x40 SWAP2 SUB SLT PUSH2 0x244 JUMPI PUSH1 0x20 DUP3 MLOAD SWAP3 ADD MLOAD SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x244 JUMPI PUSH1 0x20 DUP2 MLOAD SWAP2 ADD SWAP1 PUSH2 0x198E DUP2 PUSH2 0x486 JUMP JUMPDEST SWAP3 PUSH2 0x199C PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x44F JUMP JUMPDEST DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0x244 JUMPI PUSH2 0x4F3 SWAP2 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0xA0E JUMP JUMPDEST PUSH1 0x20 DUP2 DUP4 SUB SLT PUSH2 0x244 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x244 JUMPI ADD SWAP1 PUSH1 0xC0 DUP3 DUP3 SUB SLT PUSH2 0x244 JUMPI PUSH2 0x19E4 PUSH2 0x475 JUMP JUMPDEST SWAP2 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI DUP3 PUSH2 0x1A01 SWAP2 DUP4 ADD PUSH2 0x1973 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI PUSH1 0xA0 SWAP3 PUSH2 0x1A24 SWAP2 DUP4 ADD PUSH2 0x1973 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE ADD MLOAD PUSH1 0xA0 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP1 PUSH2 0x1A60 SWAP2 DUP2 ADD SWAP1 PUSH2 0x18B4 JUMP JUMPDEST SWAP1 DUP2 MLOAD SWAP2 PUSH2 0x1A70 PUSH2 0xAE0 DUP5 PUSH2 0x126C JUMP JUMPDEST PUSH2 0x1B3A JUMPI PUSH1 0x20 DUP4 MLOAD EQ PUSH2 0x1AF1 JUMPI DUP3 MLOAD SWAP4 PUSH1 0x40 DUP6 EQ PUSH2 0x1AA3 JUMPI PUSH1 0x40 MLOAD PUSH4 0x27755B91 PUSH1 0xE1 SHL DUP2 MSTORE DUP1 PUSH2 0x984 DUP7 PUSH1 0x4 DUP4 ADD PUSH2 0xA56 JUMP JUMPDEST PUSH2 0x225 PUSH2 0x1AEC PUSH2 0x1AD7 PUSH2 0x1AC3 DUP8 PUSH1 0x20 DUP1 DUP1 SWAP10 SWAP12 PUSH2 0x4F3 SWAP12 ADD ADD SWAP2 ADD PUSH2 0x195D JUMP JUMPDEST SWAP7 SWAP1 SWAP6 ADD MLOAD PUSH1 0x20 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x19B5 JUMP JUMPDEST SWAP3 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST PUSH2 0x1FD6 JUMP JUMPDEST SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x1B07 DUP6 PUSH2 0x193A JUMP JUMPDEST GT PUSH2 0x1B1F JUMPI PUSH1 0x20 DUP1 PUSH2 0x4F3 SWAP5 SWAP6 ADD MLOAD SWAP3 ADD MLOAD SWAP2 PUSH2 0x1E49 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xBFF1AC65 PUSH1 0xE0 SHL DUP2 MSTORE DUP1 PUSH2 0x984 DUP7 PUSH1 0x4 DUP4 ADD PUSH2 0xA56 JUMP JUMPDEST POP SWAP2 POP POP PUSH1 0x0 SWAP1 JUMP JUMPDEST SWAP2 PUSH1 0x0 SWAP3 DUP4 SWAP3 PUSH1 0x20 DUP4 MLOAD SWAP4 ADD SWAP2 GAS CALL PUSH2 0x1B5A PUSH2 0x1329 JUMP JUMPDEST SWAP1 ISZERO PUSH2 0x64F JUMPI POP JUMP JUMPDEST PUSH1 0x40 SWAP1 DUP2 MLOAD PUSH2 0x1B72 DUP4 DUP3 PUSH2 0x44F JUMP JUMPDEST PUSH1 0x12 DUP2 MSTORE PUSH18 0x11DA585B9BC814DB585C9D0815D85B1B195D PUSH1 0x72 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP2 PUSH2 0x1B9E DUP2 MLOAD SWAP2 DUP3 PUSH2 0x44F JUMP JUMPDEST PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x20 SWAP4 SWAP3 DUP2 DUP5 MSTORE DUP5 DUP5 ADD CALLDATACOPY PUSH1 0x0 DUP3 DUP3 ADD DUP5 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND ADD ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 PUSH2 0x4F3 SWAP5 SWAP3 PUSH2 0x1BEE SWAP3 DUP6 MSTORE PUSH1 0x60 PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x60 DUP6 ADD SWAP2 PUSH2 0x1BAF JUMP JUMPDEST SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0xA31 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP3 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 DUP4 CALLDATACOPY DUP2 ADD PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F503 DUP2 MSTORE SUB ADD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SHL SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xFE SHL SUB DUP2 AND SUB PUSH2 0xF48 JUMPI JUMP JUMPDEST PUSH2 0x1C56 DUP2 SLOAD PUSH2 0x1359 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x1C60 JUMPI POP POP JUMP JUMPDEST DUP2 PUSH1 0x1F PUSH1 0x0 SWAP4 GT PUSH1 0x1 EQ PUSH2 0x1C72 JUMPI POP SSTORE JUMP JUMPDEST DUP2 DUP4 MSTORE PUSH1 0x20 DUP4 KECCAK256 PUSH2 0x1C8E SWAP2 PUSH1 0x1F ADD PUSH1 0x5 SHR DUP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x16C4 JUMP JUMPDEST DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 SWAP1 DUP2 SLOAD DUP4 PUSH1 0x1 SHL SWAP1 DUP5 NOT DUP6 PUSH1 0x3 SHL SHR NOT AND OR SWAP1 SSTORE SSTORE JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x4F3 SWAP4 DUP2 DUP2 MSTORE ADD SWAP2 PUSH2 0x1BAF JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x1CC8 DUP4 PUSH2 0x1393 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x1DBE JUMPI DUP1 MLOAD PUSH1 0x20 DUP3 ADD KECCAK256 PUSH2 0x1CE1 CALLDATASIZE DUP6 DUP6 PUSH2 0x4A1 JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD KECCAK256 SUB PUSH2 0x1D9F JUMPI POP SWAP1 DUP2 PUSH2 0x1D28 PUSH2 0x1D1E DUP4 PUSH32 0xCF95BBFE6F870F8CC40482DC3DCCDAFD268F0E9CE0A4F24EA1BEA9BE64E505FF SWAP6 PUSH2 0x1BFC JUMP JUMPDEST DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1D63 PUSH2 0x1D5E DUP6 PUSH1 0x0 MSTORE PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F502 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x1C4C JUMP JUMPDEST PUSH2 0x1D90 PUSH2 0x1D7E PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2F3F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH2 0xF79 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2F3F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST PUSH2 0x17F6 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP3 DUP4 PUSH2 0x1CAC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x781F2E39 PUSH1 0xE0 SHL DUP2 MSTORE SWAP4 DUP5 SWAP4 PUSH2 0x984 SWAP4 SWAP1 SWAP2 PUSH1 0x4 DUP7 ADD PUSH2 0x1BD0 JUMP JUMPDEST PUSH4 0x340C473D PUSH1 0xE1 SHL PUSH1 0x0 MSTORE PUSH1 0x4 DUP5 SWAP1 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1DDC PUSH2 0x15F6 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP2 PUSH32 0x37F248F492286AB572E2A1EE0BD5315F2AAE54A08B5871B294D657F3A1F1D007 DUP4 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x40 DUP2 MSTORE PUSH2 0x1E1C PUSH1 0x60 DUP3 PUSH2 0x44F JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP3 PUSH2 0x1901 PUSH1 0xF0 SHL DUP5 MSTORE PUSH1 0x22 DUP4 ADD MSTORE PUSH1 0x42 DUP3 ADD MSTORE PUSH1 0x42 DUP2 MSTORE PUSH2 0x15CA PUSH1 0x62 DUP3 PUSH2 0x44F JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ISZERO PUSH2 0x1F33 JUMPI PUSH1 0x40 MLOAD SWAP3 PUSH1 0x4 DUP5 ADD SWAP5 PUSH1 0x24 DUP6 ADD SWAP6 PUSH1 0x44 DUP7 ADD SWAP3 DUP6 EXTCODESIZE ISZERO PUSH2 0x1EB3 JUMPI POP SWAP2 DUP7 SWAP4 SWAP2 PUSH1 0x20 SWAP6 SWAP4 PUSH4 0xB135D3F PUSH1 0xE1 SHL DUP9 MSTORE MSTORE PUSH1 0x40 DUP5 MSTORE DUP2 MLOAD DUP6 ADD DUP1 SWAP3 PUSH1 0x4 GAS STATICCALL SWAP4 PUSH1 0x44 RETURNDATASIZE ADD SWAP2 GAS STATICCALL SWAP2 MLOAD PUSH4 0xB135D3F PUSH1 0xE1 SHL EQ SWAP2 AND AND SWAP1 JUMP JUMPDEST SWAP8 SWAP7 POP POP SWAP1 POP DUP2 MLOAD DUP1 PUSH1 0x40 EQ PUSH2 0x1F0E JUMPI PUSH1 0x41 EQ PUSH2 0x1ED0 JUMPI POP POP POP POP JUMP JUMPDEST PUSH1 0x20 SWAP3 SWAP4 SWAP6 POP PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x0 BYTE DUP4 MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 MSTORE JUMPDEST PUSH1 0x0 MSTORE ADD MLOAD PUSH1 0x40 MSTORE PUSH1 0x20 PUSH1 0x1 PUSH1 0x80 PUSH1 0x0 DUP3 GAS STATICCALL MLOAD XOR PUSH1 0x60 SHL RETURNDATASIZE GT SWAP2 PUSH1 0x0 PUSH1 0x60 MSTORE PUSH1 0x40 MSTORE JUMP JUMPDEST POP PUSH1 0x20 SWAP3 SWAP4 SWAP6 POP PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x1B DUP2 PUSH1 0xFF SHR ADD DUP5 MSTORE PUSH1 0x1 DUP1 PUSH1 0xFF SHL SUB AND PUSH1 0x60 MSTORE PUSH2 0x1EE9 JUMP JUMPDEST POP POP POP POP PUSH1 0x0 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x484 PUSH1 0x1 PUSH1 0x2D PUSH1 0x40 MLOAD DUP1 SWAP6 PUSH13 0x1131B430B63632B733B2911D11 PUSH1 0x99 SHL PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x1F72 DUP2 MLOAD DUP1 SWAP3 PUSH1 0x20 DUP7 DUP7 ADD SWAP2 ADD PUSH2 0xA0E JUMP JUMPDEST DUP2 ADD PUSH1 0x11 PUSH1 0xF9 SHL DUP4 DUP3 ADD MSTORE SUB ADD PUSH1 0x1E NOT DUP2 ADD DUP6 MSTORE ADD DUP4 PUSH2 0x44F JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 LT ISZERO PUSH2 0x1110 JUMPI PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP2 SWAP1 PUSH2 0x1FBF DUP5 SWAP3 DUP3 DUP2 MLOAD SWAP5 DUP6 SWAP3 ADD PUSH2 0xA0E JUMP JUMPDEST ADD SWAP1 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x244 JUMPI MLOAD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP1 PUSH1 0x0 SWAP4 PUSH1 0xA0 DUP3 ADD SWAP5 DUP6 MLOAD PUSH32 0x7FFFFFFF800000007FFFFFFFFFFFFFFFDE737D56D38BCF4279DCE5617E3192A8 LT PUSH2 0x21B3 JUMPI PUSH1 0x20 DUP4 ADD SWAP2 PUSH32 0xFF1A2A9176D650E4A99DEDB58F1793003935130579FE17B5A3F698AC5B00E634 PUSH2 0x2048 DUP5 MLOAD PUSH1 0x60 DUP8 ADD MLOAD PUSH2 0x2042 DUP2 PUSH2 0x12B7 JUMP JUMPDEST SWAP2 PUSH2 0x2340 JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD KECCAK256 SUB PUSH2 0x21BC JUMPI PUSH2 0x2060 PUSH2 0x2065 SWAP2 PUSH2 0x21C6 JUMP JUMPDEST PUSH2 0x1F3C JUMP JUMPDEST PUSH2 0x207A DUP4 MLOAD PUSH1 0x40 DUP7 ADD MLOAD PUSH2 0x2042 DUP5 MLOAD DUP3 PUSH2 0x12D3 JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 PUSH1 0x20 DUP2 MLOAD SWAP2 ADD KECCAK256 SUB PUSH2 0x21B3 JUMPI PUSH1 0x1 PUSH1 0xF8 SHL PUSH1 0x1 PUSH1 0xF8 SHL PUSH2 0x20B3 PUSH2 0x20A5 DUP7 MLOAD PUSH2 0x1F8D JUMP JUMPDEST MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 JUMP JUMPDEST AND SUB PUSH2 0x21B3 JUMPI PUSH2 0x20D0 PUSH1 0x20 SWAP3 PUSH1 0x0 SWAP3 POP MLOAD PUSH1 0x40 MLOAD SWAP2 DUP3 DUP1 SWAP3 PUSH2 0xEAE JUMP JUMPDEST SUB SWAP1 PUSH1 0x2 GAS STATICCALL ISZERO PUSH2 0x21AE JUMPI PUSH1 0x20 PUSH1 0x0 PUSH2 0x2106 DUP2 MLOAD PUSH2 0x20FA DUP6 MLOAD PUSH2 0x225 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 DUP9 DUP5 ADD PUSH2 0x1FA9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 DUP1 SWAP3 PUSH2 0xEAE JUMP JUMPDEST SUB SWAP1 PUSH1 0x2 GAS STATICCALL ISZERO PUSH2 0x21AE JUMPI PUSH1 0x80 PUSH1 0x0 MLOAD SWAP2 ADD SWAP4 PUSH1 0x0 DUP1 DUP7 MLOAD DUP6 PUSH2 0x2159 DUP6 MLOAD PUSH2 0x225 DUP11 PUSH1 0x40 MLOAD SWAP5 DUP6 SWAP4 PUSH1 0x20 DUP6 ADD SWAP8 DUP13 DUP10 SWAP2 SWAP3 PUSH1 0x80 SWAP4 SWAP7 SWAP6 SWAP5 SWAP2 SWAP7 PUSH1 0xA0 DUP5 ADD SWAP8 DUP5 MSTORE PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x100 GAS STATICCALL SWAP5 PUSH2 0x2169 PUSH2 0x1329 JUMP JUMPDEST DUP1 MLOAD SWAP7 DUP1 PUSH2 0x21A5 JUMPI JUMPDEST PUSH2 0x2185 JUMPI POP PUSH2 0x4F3 SWAP6 POP MLOAD SWAP1 MLOAD SWAP2 PUSH2 0x222D JUMP JUMPDEST PUSH1 0x1 SWAP7 PUSH2 0x21A1 SWAP7 POP DUP2 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP6 POP ADD SWAP3 POP PUSH2 0x1FC7 SWAP2 POP POP JUMP JUMPDEST EQ SWAP1 JUMP JUMPDEST POP DUP7 ISZERO ISZERO PUSH2 0x2172 JUMP JUMPDEST PUSH2 0x1F9D JUMP JUMPDEST SWAP5 POP POP POP POP POP SWAP1 JUMP JUMPDEST POP SWAP5 POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4F3 SWAP2 PUSH2 0x21D8 PUSH1 0x60 DUP4 PUSH2 0x44F JUMP JUMPDEST PUSH1 0x40 DUP3 MSTORE PUSH32 0x4142434445464748494A4B4C4D4E4F505152535455565758595A616263646566 PUSH1 0x20 DUP4 ADD MSTORE PUSH32 0x6768696A6B6C6D6E6F707172737475767778797A303132333435363738392D5F PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x23EC JUMP JUMPDEST SWAP4 SWAP2 SWAP1 SWAP3 SWAP4 DUP4 ISZERO DUP1 ISZERO PUSH2 0x231D JUMPI JUMPDEST DUP1 ISZERO PUSH2 0x2315 JUMPI JUMPDEST DUP1 ISZERO PUSH2 0x22FD JUMPI JUMPDEST PUSH2 0x22F3 JUMPI PUSH2 0x2257 DUP4 DUP7 PUSH2 0x2494 JUMP JUMPDEST ISZERO PUSH2 0x22F3 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 ADD MSTORE PUSH1 0x20 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH32 0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC63254F PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 PUSH1 0xC0 DUP2 PUSH1 0x5 PUSH1 0x0 NOT STATICCALL ISZERO PUSH2 0x244 JUMPI PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP5 PUSH2 0x22ED SWAP4 DUP7 PUSH2 0x22E7 SWAP5 MLOAD DUP2 DUP2 DUP10 MULMOD SWAP5 MULMOD SWAP2 PUSH2 0x256F JUMP JUMPDEST SWAP2 PUSH2 0xF20 JUMP JUMPDEST SWAP1 ADDMOD ISZERO SWAP1 JUMP JUMPDEST POP POP POP POP POP PUSH1 0x0 SWAP1 JUMP JUMPDEST POP PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 LT ISZERO PUSH2 0x2249 JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0x2242 JUMP JUMPDEST POP PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 LT ISZERO PUSH2 0x223B JUMP JUMPDEST DUP2 PUSH1 0x40 MLOAD SWAP2 DUP3 CALLDATACOPY KECCAK256 SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 SWAP5 SWAP4 SWAP3 SWAP1 DUP4 DUP2 GT ISZERO PUSH2 0x23B2 JUMPI JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x23AA JUMPI JUMPDEST POP DUP3 DUP2 LT PUSH2 0x2367 JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP5 POP SWAP2 DUP3 SWAP1 SUB SWAP2 ADD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND JUMPDEST DUP2 DUP2 ADD MLOAD DUP6 DUP3 ADD MSTORE PUSH1 0x1F NOT ADD SWAP1 DUP2 ISZERO PUSH2 0x2394 JUMPI SWAP1 PUSH2 0x237B JUMP JUMPDEST POP POP PUSH1 0x40 DUP2 DUP5 ADD PUSH1 0x0 PUSH1 0x20 DUP3 ADD MSTORE ADD PUSH1 0x40 MSTORE DUP3 MSTORE JUMP JUMPDEST SWAP1 POP CODESIZE PUSH2 0x235A JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x2351 JUMP JUMPDEST SWAP1 PUSH2 0x23C4 DUP3 PUSH2 0x486 JUMP JUMPDEST PUSH2 0x23D1 PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x44F JUMP JUMPDEST DUP3 DUP2 MSTORE DUP1 SWAP3 PUSH2 0x23E2 PUSH1 0x1F NOT SWAP2 PUSH2 0x486 JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST SWAP1 DUP2 MLOAD ISZERO PUSH2 0x248A JUMPI SWAP1 PUSH2 0x2419 PUSH2 0x2414 PUSH2 0x240D PUSH2 0x2408 DUP5 MLOAD PUSH2 0x1C34 JUMP JUMPDEST PUSH2 0x12C5 JUMP JUMPDEST PUSH1 0x3 SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH2 0x23BA JUMP JUMPDEST SWAP2 PUSH1 0x20 DUP4 ADD SWAP1 DUP3 DUP1 MLOAD ADD SWAP1 PUSH1 0x20 DUP3 ADD SWAP3 DUP4 MLOAD SWAP5 PUSH1 0x0 DUP6 MSTORE JUMPDEST DUP4 DUP2 LT PUSH2 0x2440 JUMPI POP POP POP POP MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x4 SWAP2 ADD SWAP2 PUSH1 0x1 PUSH1 0x3F DUP5 MLOAD DUP3 DUP3 DUP3 PUSH1 0x12 SHR AND DUP9 ADD ADD MLOAD DUP5 MSTORE8 DUP3 DUP3 DUP3 PUSH1 0xC SHR AND DUP9 ADD ADD MLOAD DUP4 DUP6 ADD MSTORE8 DUP3 DUP3 DUP3 PUSH1 0x6 SHR AND DUP9 ADD ADD MLOAD PUSH1 0x2 DUP6 ADD MSTORE8 AND DUP6 ADD ADD MLOAD PUSH1 0x3 DUP3 ADD MSTORE8 ADD SWAP1 PUSH2 0x2431 JUMP JUMPDEST POP POP PUSH2 0x4F3 PUSH2 0x1314 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP2 LT DUP1 ISZERO SWAP1 PUSH2 0x2557 JUMPI JUMPDEST DUP1 ISZERO PUSH2 0x2546 JUMPI JUMPDEST PUSH2 0x253F JUMPI PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 PUSH32 0x5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B SWAP1 DUP3 SWAP1 DUP2 PUSH32 0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC DUP3 MULMOD SWAP1 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP2 DUP2 DUP1 MULMOD MULMOD ADDMOD ADDMOD SWAP1 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP1 MULMOD EQ SWAP1 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP1 JUMP JUMPDEST POP DUP1 ISZERO DUP1 ISZERO PUSH2 0x24B4 JUMPI POP DUP2 ISZERO PUSH2 0x24B4 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP3 LT ISZERO PUSH2 0x24AD JUMP JUMPDEST SWAP1 SWAP3 PUSH1 0x0 SWAP3 SWAP1 DUP4 PUSH1 0xFF DUP2 DUP5 ISZERO DUP1 PUSH2 0x2B66 JUMPI JUMPDEST PUSH2 0x2B5B JUMPI PUSH2 0x258F DUP9 DUP8 PUSH2 0x2B6E JUMP JUMPDEST SWAP3 SWAP1 SWAP2 DUP3 ISZERO DUP1 PUSH2 0x2B53 JUMPI JUMPDEST PUSH2 0x2B18 JUMPI JUMPDEST POP DUP6 DUP2 SHR PUSH1 0x2 DUP7 PUSH1 0xFE SHR AND ADD JUMPDEST ISZERO PUSH2 0x2AFF JUMPI PUSH1 0x1 DUP7 DUP3 SHR AND PUSH1 0x2 DUP7 DUP4 SHR PUSH1 0x1 SHL AND ADD PUSH1 0x1 DUP2 EQ PUSH2 0x2AB4 JUMPI JUMPDEST PUSH1 0x2 DUP2 EQ PUSH2 0x2AA7 JUMPI JUMPDEST PUSH1 0x3 EQ PUSH2 0x2A9A JUMPI JUMPDEST PUSH1 0x1 SWAP9 PUSH1 0x0 NOT SWAP2 SWAP1 SWAP2 ADD SWAP7 SWAP5 SWAP6 SWAP5 DUP10 SWAP5 SWAP4 SWAP3 SWAP2 JUMPDEST DUP9 PUSH1 0x0 NOT GT PUSH2 0x266D JUMPI POP POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD SWAP2 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x20 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MSTORE PUSH1 0x20 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x2 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH1 0x60 SHL SUB PUSH1 0x60 SHL NOT PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 PUSH1 0xC0 DUP2 PUSH1 0x5 PUSH1 0x0 NOT STATICCALL ISZERO PUSH2 0x244 JUMPI SWAP1 MLOAD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 MULMOD SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 SWAP7 SWAP8 SWAP9 PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH1 0x60 SHL SUB PUSH1 0x60 SHL NOT DUP7 PUSH1 0x2 MULMOD SWAP1 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP3 DUP1 MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP2 DUP4 MULMOD SWAP3 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP3 SWAP1 MULMOD SWAP2 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP2 SWAP1 DUP16 DUP3 DUP2 DUP4 ADDMOD SWAP2 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 DUP3 SUB SWAP1 ADDMOD MULMOD PUSH1 0x3 MULMOD SWAP9 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP4 MULMOD SWAP13 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 MULMOD SWAP2 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP1 DUP3 PUSH1 0x2 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP12 DUP1 MULMOD ADDMOD SWAP9 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 DUP3 SWAP1 DUP2 SUB DUP12 ADDMOD SWAP1 MULMOD SWAP7 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP9 SWAP1 DUP3 SWAP1 DUP5 MULMOD ADDMOD SWAP7 DUP12 PUSH1 0x2 DUP13 PUSH1 0x1 DUP14 DUP5 SHR AND SWAP3 SHR PUSH1 0x1 SHL AND ADD DUP1 ISZERO PUSH2 0x2A7D JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x2A32 JUMPI JUMPDEST PUSH1 0x2 DUP2 EQ PUSH2 0x2A27 JUMPI JUMPDEST PUSH1 0x3 EQ PUSH2 0x2A1E JUMPI JUMPDEST DUP3 ISZERO PUSH2 0x2A0B JUMPI PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP9 SWAP1 DUP3 SWAP1 DUP16 SWAP1 MULMOD ADDMOD SWAP1 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP10 DUP3 SUB SWAP1 DUP3 SWAP1 DUP6 SWAP1 MULMOD ADDMOD SWAP8 DUP2 ISZERO PUSH2 0x28D1 JUMPI JUMPDEST PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP10 DUP1 MULMOD SWAP9 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP11 MULMOD SWAP3 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP11 SWAP1 MULMOD SWAP13 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP5 SWAP1 MULMOD SWAP9 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP1 DUP3 PUSH1 0x2 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP6 DUP2 SUB DUP2 DUP7 DUP1 MULMOD ADDMOD ADDMOD SWAP8 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP4 DUP5 SWAP2 MULMOD SWAP2 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 DUP3 SWAP1 DUP11 DUP3 SUB SWAP1 ADDMOD MULMOD ADDMOD SWAP5 SWAP9 JUMPDEST PUSH1 0x0 NOT ADD SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x25EF JUMP JUMPDEST DUP9 PUSH2 0x27F4 JUMPI SWAP11 SWAP2 SWAP8 POP SWAP1 SWAP6 SWAP1 POP PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP2 PUSH1 0x2 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT MULMOD SWAP11 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP13 DUP1 MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP2 DUP14 MULMOD SWAP13 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP3 SWAP1 MULMOD SWAP12 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP2 DUP12 DUP2 SUB DUP3 ADDMOD SWAP1 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP13 SWAP1 ADDMOD MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 PUSH1 0x3 MULMOD SWAP2 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP14 MULMOD SWAP9 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 MULMOD SWAP12 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP1 DUP3 PUSH1 0x2 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP5 DUP1 MULMOD ADDMOD SWAP12 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP4 DUP5 SWAP2 MULMOD SWAP2 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 DUP3 SWAP1 DUP15 DUP3 SUB SWAP1 ADDMOD SWAP1 MULMOD ADDMOD SWAP5 PUSH2 0x28C0 JUMP JUMPDEST PUSH1 0x1 SWAP13 POP SWAP1 SWAP11 DUP13 SWAP9 POP SWAP1 SWAP7 POP SWAP1 POP PUSH2 0x28C0 JUMP JUMPDEST POP POP DUP4 DUP6 PUSH2 0x27B3 JUMP JUMPDEST DUP6 SWAP3 POP DUP5 SWAP2 POP PUSH2 0x27AB JUMP JUMPDEST PUSH32 0x6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296 SWAP3 POP PUSH32 0x4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5 SWAP2 POP PUSH2 0x27A2 JUMP JUMPDEST POP POP POP SWAP10 SWAP6 SWAP9 SWAP5 PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH1 0x60 SHL SUB PUSH1 0x60 SHL NOT SUB SWAP5 PUSH2 0x28C0 JUMP JUMPDEST SWAP3 POP DUP1 SWAP7 POP SWAP6 DUP2 SWAP3 PUSH2 0x25DB JUMP JUMPDEST SWAP7 SWAP8 POP DUP8 SWAP7 DUP10 SWAP5 POP PUSH2 0x25D3 JUMP JUMPDEST PUSH32 0x6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296 SWAP9 POP PUSH32 0x4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5 SWAP5 POP PUSH2 0x25CA JUMP JUMPDEST PUSH1 0x0 NOT ADD PUSH1 0x1 DUP7 DUP3 SHR AND PUSH1 0x2 DUP7 DUP4 SHR PUSH1 0x1 SHL AND ADD PUSH2 0x25AC JUMP JUMPDEST SWAP5 SWAP6 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 SWAP7 DUP3 SUB SWAP1 ADDMOD SWAP5 DUP5 DUP7 ISZERO DUP1 PUSH2 0x2B4B JUMPI JUMPDEST ISZERO PUSH2 0x259F JUMPI SWAP9 POP POP POP POP POP POP POP POP POP SWAP1 JUMP JUMPDEST POP PUSH1 0x1 PUSH2 0x2B39 JUMP JUMPDEST POP DUP4 ISZERO PUSH2 0x259A JUMP JUMPDEST SWAP7 POP POP POP POP POP POP POP SWAP1 JUMP JUMPDEST POP DUP4 ISZERO PUSH2 0x2581 JUMP JUMPDEST SWAP2 SWAP1 PUSH32 0x6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296 PUSH32 0x4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5 SWAP2 DUP1 ISZERO PUSH2 0x2D22 JUMPI DUP5 PUSH2 0xC5A SWAP5 SWAP6 DUP4 EQ DUP1 PUSH2 0x2D19 JUMPI JUMPDEST ISZERO PUSH2 0x2D04 JUMPI POP PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 POP DUP3 PUSH1 0x2 MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP2 DUP1 MULMOD SWAP3 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP5 DUP5 MULMOD SWAP2 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP6 SWAP1 MULMOD SWAP3 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP2 SWAP1 DUP2 PUSH1 0x1 DUP3 ADDMOD SWAP1 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 PUSH32 0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFE SWAP1 ADDMOD MULMOD PUSH1 0x3 MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP1 DUP5 PUSH1 0x2 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP4 DUP1 MULMOD ADDMOD SWAP3 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT PUSH1 0x1 DUP7 MULMOD SWAP6 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 PUSH1 0x1 SWAP1 MULMOD SWAP5 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP4 DUP5 SWAP2 MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP2 SUB SWAP3 SWAP1 SWAP2 DUP3 SWAP1 DUP7 DUP3 SUB SWAP1 ADDMOD SWAP1 MULMOD ADDMOD SWAP1 PUSH2 0x2E44 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 PUSH2 0x2D10 SWAP4 PUSH2 0x2D28 JUMP JUMPDEST SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0x2E44 JUMP JUMPDEST POP DUP2 DUP5 EQ PUSH2 0x2BC7 JUMP JUMPDEST POP SWAP3 POP SWAP1 JUMP JUMPDEST SWAP2 SWAP4 SWAP1 DUP1 ISZERO PUSH2 0x2E3B JUMPI PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP2 SUB SWAP4 DUP5 SWAP1 DUP3 SWAP1 PUSH1 0x1 SWAP1 MULMOD ADDMOD SWAP4 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP4 DUP3 SUB SWAP1 DUP3 SWAP1 PUSH1 0x1 SWAP1 MULMOD ADDMOD SWAP3 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP5 DUP1 MULMOD SWAP4 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP6 MULMOD SWAP3 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP6 SWAP1 MULMOD SWAP5 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP1 DUP8 PUSH1 0x2 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP7 DUP2 SUB DUP2 DUP6 DUP1 MULMOD ADDMOD ADDMOD SWAP6 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP3 DUP4 SWAP1 DUP7 SWAP1 MULMOD SWAP2 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 DUP3 SWAP1 DUP10 DUP3 SUB SWAP1 ADDMOD MULMOD ADDMOD SWAP3 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 PUSH1 0x1 MULMOD SWAP2 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 PUSH1 0x1 MULMOD SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP2 POP DUP2 SWAP1 JUMP JUMPDEST SWAP2 SWAP1 SWAP3 PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MSTORE PUSH1 0x20 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH1 0x60 SHL SUB PUSH1 0x60 SHL NOT PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x20 DUP2 PUSH1 0xC0 DUP2 PUSH1 0x5 PUSH1 0x0 NOT STATICCALL ISZERO PUSH2 0x244 JUMPI MLOAD SWAP3 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP5 SWAP1 MULMOD SWAP3 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 SWAP1 DUP3 SWAP1 DUP1 MULMOD SWAP1 MULMOD SWAP2 JUMP INVALID MOD 0x27 0xF7 0x2A CREATE 0xE6 DELEGATECALL SLT NOT JUMPDEST 0xD DUP11 0xCB 0xE4 CODESIZE 0xB2 DUP1 SWAP1 0xDD SLOAD JUMPDEST PUSH30 0x2331FCCF77723561F500FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAAD 0xA7 OR SWAP15 DUP5 RETURN 0xB9 0xCA 0xC2 0xFC PUSH4 0x25513608 SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC0627F72AF0E6F412195B0D DUP11 0xCB 0xE4 CODESIZE 0xB2 DUP1 SWAP1 0xDD SLOAD JUMPDEST PUSH30 0x2331FCCF77723561F501A2646970667358221220890C9D20B5FC4DF99BDE 0xD2 SLOAD BLOBHASH SLT ISZERO DUP11 SAR SWAP4 EXTCODEHASH AND DUP15 0x2E DUP5 RETURNDATASIZE 0xC BYTE ISZERO LOG2 SELFDESTRUCT ORIGIN 0xCE DUP13 PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER CODESIZE LT SWAP15 0xDC 0x26 0xE1 PUSH7 0xB5579352CE56A5 ADDMOD SGT OR PUSH31 0xB25208FD90D61F2F3783862202200000000000000000000000000000000000 ", + "sourceMap": "1195:14720:16:-:0;;;;;;1279:4:8;1255:31;;1195:14720:16;;;;;;;:::i;:::-;5301:1;1195:14720;;-1:-1:-1;;1195:14720:16;;-1:-1:-1;1195:14720:16;;;;;;;;;;-1:-1:-1;1195:14720:16;5325:22;;1195:14720;;5325:22;;;;;;:::i;:::-;5313:34;;;:::i;:::-;;;;;:::i;:::-;;11593:89:18;1195:14720:16;-1:-1:-1;9026:3:18;1195:14720:16;;9007:17:18;;;;;1195:14720:16;9049:9:18;;;;:::i;:::-;;1195:14720:16;9049:22:18;;:48;;;9026:3;9045:128;;1195:14720:16;9191:9:18;;;;:::i;:::-;;1195:14720:16;9191:22:18;:73;;;9026:3;9187:157;;9375:9;;;;:::i;:::-;;;9386:17;-1:-1:-1;;1195:14720:16;;;;5301:1;1195:14720;;;;;;:::i;:::-;;;9792:51:18;;1195:14720:16;;;:::i;:::-;;;-1:-1:-1;;1195:14720:16;5301:1;1195:14720;;;-1:-1:-1;1195:14720:16;;;9954:14:18;1195:14720:16;;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;5301:1;1195:14720;;;;;;;;;9026:3:18;1195:14720:16;;;;;;;;;;;9026:3:18;1195:14720:16;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1195:14720:16;;9999:22:18;1195:14720:16;5301:1;1195:14720;;;-1:-1:-1;1195:14720:16;;;;-1:-1:-1;;;7148:33:18;1195:14720:16;;;;;;;;;;;;;;;9999:22:18;;;;;:::i;:::-;;;;1195:14720:16;8996:9:18;;1195:14720:16;;;;;;;;;;;;;;;;-1:-1:-1;1195:14720:16;;-1:-1:-1;1195:14720:16;;-1:-1:-1;1195:14720:16;;;;;;;;5301:1;1195:14720;;;;-1:-1:-1;;;;;;;;;;;1195:14720:16;;9999:22:18;1195:14720:16;;;;;;;;;;;;;;;;;;;;;;;;7148:33:18;1195:14720:16;;;;;;;;;;;;;;;5301:1;1195:14720;;;;;;;;;;;;;;;;;-1:-1:-1;1195:14720:16;;-1:-1:-1;1195:14720:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1195:14720:16;;5301:1;1195:14720;;;;;;-1:-1:-1;1195:14720:16;;;;;;;;-1:-1:-1;1195:14720:16;;;;;-1:-1:-1;1195:14720:16;;;;;;;;;;;;-1:-1:-1;1195:14720:16;;;;;-1:-1:-1;1195:14720:16;9792:51:18;1195:14720:16;;-1:-1:-1;;;9824:19:18;;1195:14720:16;;;9824:19:18;;;;;;:::i;:::-;;;;1195:14720:16;;;;-1:-1:-1;1195:14720:16;;;;;-1:-1:-1;1195:14720:16;9187:157:18;9319:9;;9291:38;9319:9;;;:::i;:::-;;1195:14720:16;;-1:-1:-1;;;9291:38:18;;1195:14720:16;;;9291:38:18;;;;:::i;9191:73::-;9233:9;;;;;:::i;:::-;;1195:14720:16;;;;;;;;;;;;9191:73:18;-1:-1:-1;;;;;;;9191:73:18;;1195:14720:16;;;;;;7148:33:18;1195:14720:16;;;;;;9045:128:18;9148:9;;9124:34;9148:9;;;:::i;:::-;;1195:14720:16;;-1:-1:-1;;;9124:34:18;;1195:14720:16;;;9124:34:18;;;;:::i;9049:48::-;9075:9;;;;;;:::i;:::-;;1195:14720:16;9075:22:18;;9049:48;;9007:17;;;11593:89;1195:14720:16;;;;;;;;1255:31:8;1195:14720:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1195:14720:16;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;1195:14720:16;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;1195:14720:16;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;7148:33:18;1195:14720:16;;;;;;;:::o" + }, + "deployedBytecode": { + "functionDebugData": { + "abi_decode_array_bytes_calldata_dyn_calldata": { + "entryPoint": 1390, + "id": null, + "parameterSlots": 1, + "returnSlots": 2 + }, + "abi_decode_array_bytes_dyn": { + "entryPoint": 4271, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_available_length_array_bytes_dyn": { + "entryPoint": 4155, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_decode_available_length_bytes": { + "entryPoint": 1185, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_decode_bytes": { + "entryPoint": 1240, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_bytes32": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + }, + "abi_decode_bytes_calldata": { + "entryPoint": 758, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_bytes_fromMemory": { + "entryPoint": 6515, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_struct_PackedUserOperation_calldata": { + "entryPoint": 914, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_struct_SignatureWrapper": { + "entryPoint": 6324, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_struct_WebAuthnAuth_fromMemory": { + "entryPoint": 6581, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_uint256": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + }, + "abi_decode_uint256_fromMemory": { + "entryPoint": 8135, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_uint256t_bytes_calldata": { + "entryPoint": 3115, + "id": null, + "parameterSlots": 1, + "returnSlots": 3 + }, + "abi_decode_uint256t_uint256_fromMemory": { + "entryPoint": 6493, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_encode_address": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_address_uint256_bytes32_bytes32_bytes32_uint256_bytes32_bytes32": { + "entryPoint": null, + "id": null, + "parameterSlots": 9, + "returnSlots": 1 + }, + "abi_encode_bytes": { + "entryPoint": 2646, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_bytes32_address": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_bytes32_bytes32": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_bytes32_uint256_uint256_uint256_uint256": { + "entryPoint": null, + "id": null, + "parameterSlots": 6, + "returnSlots": 1 + }, + "abi_encode_bytes_calldata": { + "entryPoint": 7340, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_bytes_calldata_ptr": { + "entryPoint": 4870, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_bytes_calldata_to_bytes": { + "entryPoint": 7087, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_bytes_memory_ptr": { + "entryPoint": 3758, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_bytes_to_bytes": { + "entryPoint": 2609, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_packed_bytes_bytes32": { + "entryPoint": 8105, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_uint256": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_uint256_11558": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_uint256_bytes_calldata_bytes": { + "entryPoint": 7120, + "id": null, + "parameterSlots": 5, + "returnSlots": 1 + }, + "abi_encode_uint256_uint256": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "access_calldata_tail_bytes_calldata": { + "entryPoint": 4022, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "allocate_and_zero_memory_array_string": { + "entryPoint": 9146, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "allocate_memory": { + "entryPoint": 1141, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + }, + "allocate_memory_array_bytes": { + "entryPoint": 4884, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + }, + "array_allocation_size_bytes": { + "entryPoint": 1158, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_dataslot_bytes_storage": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "bytes_concat_bytes4_bytes32": { + "entryPoint": 4832, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "calldata_array_index_access_struct_Call_calldata_dyn_calldata": { + "entryPoint": 4732, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "calldata_array_index_range_access_bytes_calldata": { + "entryPoint": 4126, + "id": null, + "parameterSlots": 3, + "returnSlots": 2 + }, + "checked_add_uint256": { + "entryPoint": 4819, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_add_uint256_11547": { + "entryPoint": 4776, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "checked_add_uint256_11598": { + "entryPoint": 4791, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "checked_add_uint256_11607": { + "entryPoint": 4805, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "checked_div_uint256": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "checked_mul_uint256": { + "entryPoint": 7220, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "checked_sub_uint256": { + "entryPoint": 3872, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "clean_up_bytearray_end_slots_bytes_storage": { + "entryPoint": 5851, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "cleanup_bool": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_bytes4": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "clear_storage_range_bytes1": { + "entryPoint": 5828, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "convert_bytes_to_fixedbytes_from_bytes_calldata_to_bytes4": { + "entryPoint": 4072, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "convert_bytes_to_fixedbytes_from_bytes_to_bytes32": { + "entryPoint": 6458, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "convert_bytes_to_fixedbytes_from_bytes_to_bytes4": { + "entryPoint": 4373, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "copy_memory_to_memory_with_cleanup": { + "entryPoint": 2574, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "external_fun_REPLAYABLE_NONCE_KEY": { + "entryPoint": 3086, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_addOwnerAddress": { + "entryPoint": 637, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_addOwnerPublicKey": { + "entryPoint": 1325, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_canSkipChainIdValidation": { + "entryPoint": 3281, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_domainSeparator": { + "entryPoint": 3731, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_eip712Domain": { + "entryPoint": 2925, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_entryPoint": { + "entryPoint": 3436, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_execute": { + "entryPoint": 3479, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_executeBatch": { + "entryPoint": 1651, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_executeWithoutChainIdValidation": { + "entryPoint": 1483, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_getSignatureLifetime": { + "entryPoint": 885, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_getUserOpHashWithoutChainId": { + "entryPoint": 3339, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_implementation": { + "entryPoint": 2198, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_initialize": { + "entryPoint": 2252, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_isOwnerAddress": { + "entryPoint": 3397, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_isOwnerBytes": { + "entryPoint": 1270, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_isOwnerPublicKey": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_isValidSignature": { + "entryPoint": 803, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_nextOwnerIndex": { + "entryPoint": 3688, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_ownerAtIndex": { + "entryPoint": 3230, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_ownerCount": { + "entryPoint": 585, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_proxiableUUID": { + "entryPoint": 2118, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_removeLastOwner": { + "entryPoint": 3587, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_removeOwnerAtIndex": { + "entryPoint": 3166, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_removedOwnersCount": { + "entryPoint": 1798, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_replaySafeHash": { + "entryPoint": 3658, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_signedStaticCall": { + "entryPoint": 2663, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_upgradeToAndCall": { + "entryPoint": 1841, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_validateUserOp": { + "entryPoint": 929, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "extract_byte_array_length": { + "entryPoint": 4953, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "extract_returndata": { + "entryPoint": 4905, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + }, + "extract_used_part_and_set_length_of_short_byte_array": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "finalize_allocation": { + "entryPoint": 1103, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "fun__isValidSignature": { + "entryPoint": 6737, + "id": 7371, + "parameterSlots": 3, + "returnSlots": 1 + }, + "fun_addOwnerAtIndex": { + "entryPoint": 5920, + "id": 8000, + "parameterSlots": 2, + "returnSlots": 0 + }, + "fun_call": { + "entryPoint": 6979, + "id": 7249, + "parameterSlots": 3, + "returnSlots": 0 + }, + "fun_calldataKeccak": { + "entryPoint": 9013, + "id": 160, + "parameterSlots": 2, + "returnSlots": 1 + }, + "fun_canSkipChainIdValidation": { + "entryPoint": 5216, + "id": 7222, + "parameterSlots": 1, + "returnSlots": 1 + }, + "fun_checkOwner": { + "entryPoint": 5783, + "id": 8091, + "parameterSlots": 0, + "returnSlots": 0 + }, + "fun_domainNameAndVersion": { + "entryPoint": 7011, + "id": 7397, + "parameterSlots": 0, + "returnSlots": 2 + }, + "fun_domainSeparator": { + "entryPoint": 5622, + "id": 6669, + "parameterSlots": 0, + "returnSlots": 1 + }, + "fun_ecAff_add": { + "entryPoint": 11118, + "id": 1773, + "parameterSlots": 2, + "returnSlots": 2 + }, + "fun_ecAff_isOnCurve": { + "entryPoint": 9364, + "id": 1685, + "parameterSlots": 2, + "returnSlots": 1 + }, + "fun_ecZZ_AddN": { + "entryPoint": 11560, + "id": 1544, + "parameterSlots": 4, + "returnSlots": 4 + }, + "fun_ecZZ_SetAff": { + "entryPoint": 11844, + "id": 1471, + "parameterSlots": 4, + "returnSlots": 2 + }, + "fun_ecZZ_mulmuladd_S_asm": { + "entryPoint": 9583, + "id": 1867, + "parameterSlots": 4, + "returnSlots": 1 + }, + "fun_ecdsa_verify": { + "entryPoint": 8749, + "id": 685, + "parameterSlots": 5, + "returnSlots": 1 + }, + "fun_eip712Hash": { + "entryPoint": 7636, + "id": 6690, + "parameterSlots": 1, + "returnSlots": 1 + }, + "fun_encode": { + "entryPoint": 9196, + "id": 2403, + "parameterSlots": 2, + "returnSlots": 1 + }, + "fun_encodeURL": { + "entryPoint": 8646, + "id": 2349, + "parameterSlots": 1, + "returnSlots": 1 + }, + "fun_getUserOpHashWithoutChainId": { + "entryPoint": 5347, + "id": 7170, + "parameterSlots": 1, + "returnSlots": 1 + }, + "fun_isOwnerAddress": { + "entryPoint": 5584, + "id": 7768, + "parameterSlots": 1, + "returnSlots": 1 + }, + "fun_isOwnerBytes": { + "entryPoint": 4716, + "id": 7804, + "parameterSlots": 1, + "returnSlots": 1 + }, + "fun_isValidSignature": { + "entryPoint": 3976, + "id": 6615, + "parameterSlots": 3, + "returnSlots": 1 + }, + "fun_isValidSignatureNow": { + "entryPoint": 7753, + "id": 6171, + "parameterSlots": 3, + "returnSlots": 1 + }, + "fun_onImplementation": { + "entryPoint": null, + "id": 2518, + "parameterSlots": 0, + "returnSlots": 1 + }, + "fun_ownerAtIndex": { + "entryPoint": 5011, + "id": 7819, + "parameterSlots": 1, + "returnSlots": 1 + }, + "fun_ownerCount": { + "entryPoint": 3917, + "id": 7849, + "parameterSlots": 0, + "returnSlots": 1 + }, + "fun_removeOwnerAtIndex": { + "entryPoint": 7357, + "id": 8067, + "parameterSlots": 3, + "returnSlots": 0 + }, + "fun_slice": { + "entryPoint": 9024, + "id": 2846, + "parameterSlots": 3, + "returnSlots": 1 + }, + "fun_validateUserOp_inner": { + "entryPoint": 4407, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "fun_verify": { + "entryPoint": 8150, + "id": 8477, + "parameterSlots": 4, + "returnSlots": 1 + }, + "increment_uint256": { + "entryPoint": 3961, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "mapping_index_access_mapping_uint256_bytes_storage_of_uint256": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "memory_array_index_access_bytes": { + "entryPoint": 8077, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "memory_array_index_access_bytes_dyn": { + "entryPoint": 4348, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "modifier_receiverFallback": { + "entryPoint": 5727, + "id": 2439, + "parameterSlots": 0, + "returnSlots": 0 + }, + "packed_hashed_bytes_calldata_uint256_to_bytes_uint": { + "entryPoint": 7164, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "packed_hashed_bytes_uint256_to_bytes_uint": { + "entryPoint": 3781, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "panic_error_0x11": { + "entryPoint": 3850, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x32": { + "entryPoint": 4326, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x41": { + "entryPoint": 1081, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "read_from_calldatat_address": { + "entryPoint": 4766, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "read_from_memoryt_bytes1": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "revert_forward": { + "entryPoint": 8093, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "shift_right_uint256_uint8": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "storage_set_to_zero_bytes": { + "entryPoint": 7244, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "string_concat_stringliteral_113c_string_stringliteral_6e9f": { + "entryPoint": 7996, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "update_storage_value_bool_to_bool": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "update_storage_value_offset_uint256_to_uint256": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "update_storage_value_offset_uint256_to_uint256_11546": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_address": { + "entryPoint": 620, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + } + }, + "generatedSources": [], + "immutableReferences": { + "2478": [ + { + "length": 32, + "start": 1900 + }, + { + "length": 32, + "start": 2138 + } + ] + }, + "linkReferences": {}, + "object": "60806040526004361015610015575b3661165f57005b60003560e01c8063066a1eb7146101e55780630db02622146101e05780630f0f3f24146101db5780631626ba7e146101d657806317452caa146101d157806319822f7c146101cc5780631ca5393f146101c757806329565e3b146101c25780632c2abd1e146101bd57806334fcd5be146101b857806336d9cf9b146101b35780634f1ef286146101ae57806352d1902d146101a95780635c60da1b146101a45780636f2de70e1461019f578063737bebdd1461019a57806384b0196e1461019557806388ce4c7c1461019057806389625b571461018b5780638ea69029146101865780639f9bcb3414610181578063a05bd44e1461017c578063a2e1a8d814610177578063b0d691fe14610172578063b61d27f61461016d578063b819736714610168578063ce1506be14610163578063d948fd2e1461015e5763f698da250361000e57610e93565b610e68565b610e4a565b610e03565b610d97565b610d6c565b610d45565b610d0b565b610cd1565b610c9e565b610c5e565b610c0e565b610b6d565b610a67565b6108cc565b610896565b610846565b610731565b610706565b610673565b6105cb565b61052d565b6104f6565b6103a1565b610375565b610323565b61027d565b610249565b3461024457604036600319011261024457602060ff6102386004356102336024359161022560405193849288840160209093929193604081019481520152565b03601f19810183528261044f565b610ec5565b54166040519015158152f35b600080fd5b34610244576000366003190112610244576020610264610f4d565b604051908152f35b6001600160a01b0381160361024457565b34610244576020366003190112610244576102f460043561029d8161026c565b6102a5611697565b6040519060018060a01b03166020820152602081526102c560408261044f565b600080516020612edf83398151915254906102df82610f79565b600080516020612edf83398151915255611720565b005b9181601f84011215610244578235916001600160401b038311610244576020838186019501011161024457565b34610244576040366003190112610244576004356024356001600160401b0381116102445760209161035c6103629236906004016102f6565b91610f88565b6040516001600160e01b03199091168152f35b346102445760003660031901126102445760206040516107088152f35b90816101209103126102445790565b34610244576060366003190112610244576004356001600160401b038111610244576103d1903690600401610392565b6044356024356f71727de22e5e9d8baf0edac6f37da031193301610429576103fd829161041494611137565b91610418575b506040519081529081906020820190565b0390f35b60009081803892335af15038610403565b6282b42960e81b60005260046000fd5b634e487b7160e01b600052604160045260246000fd5b90601f801991011681019081106001600160401b0382111761047057604052565b610439565b6040519061048460c08361044f565b565b6001600160401b03811161047057601f01601f191660200190565b9291926104ad82610486565b916104bb604051938461044f565b829481845281830111610244578281602093846000960137010152565b9080601f83011215610244578160206104f3933591016104a1565b90565b34610244576020366003190112610244576004356001600160401b0381116102445760ff61023861023360209336906004016104d8565b34610244576040366003190112610244576102f46024356102c5600435610552611697565b6040805160208101929092528101929092528160608101610225565b906020600319830112610244576004356001600160401b0381116102445760040160009280601f830112156105c7578135936001600160401b0385116105c457506020808301928560051b010111610244579190565b80fd5b8380fd5b6105d43661056e565b906f71727de22e5e9d8baf0edac6f37da03233036104295760005b828110156102f45760006106088260051b840184610fb6565b6106128183610fe8565b61061b81611460565b156106575750829161062e9136916104a1565b60208151910182305af1610640611329565b901561064f57506001016105ef565b602081519101fd5b631d8370a360e11b84526001600160e01b031916600452602483fd5b61067c3661056e565b906f71727de22e5e9d8baf0edac6f37da03233036106f9575b60005b8281106106a157005b806106f36106b2600193868661127c565b356106bc8161026c565b60206106c984888861127c565b01356106ed6106e66106dc868a8a61127c565b6040810190610fb6565b36916104a1565b91611b43565b01610698565b610701611697565b610695565b34610244576000366003190112610244576020600080516020612f3f83398151915254604051908152f35b6040366003190112610244576004356107498161026c565b6024356001600160401b038111610244576107689036906004016102f6565b90917f0000000000000000000000000000000000000000000000000000000000000000301461083857610799611697565b60018060a01b03163d6000526352d1902d600152600080516020612f1f833981519152602060016004601d855afa510361082a57807fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a28181600080516020612f1f8339815191525561080b57005b816000926040519485378338925af41561082157005b3d6000823e3d90fd5b6355299b496001526004601dfd5b639f03a0266000526004601cfd5b3461024457600036600319011261024457307f000000000000000000000000000000000000000000000000000000000000000003610838576020604051600080516020612f1f8339815191528152f35b3461024457600036600319011261024457600080516020612f1f833981519152546040516001600160a01b039091168152602090f35b6108d53661056e565b600080516020612edf8339815191525491826109fd576108f691369161103b565b9060005b82518110156109e757602061090f82856110fc565b51511415806109d1575b6109aa57602061092982856110fc565b51511480610988575b61095d5780610957610946600193866110fc565b519361095181610f79565b94611720565b016108fa565b61096a61098491846110fc565b5160405163bff1ac6560e01b815291829160048301610a56565b0390fd5b506001600160a01b036109a461099e83866110fc565b5161193a565b11610932565b6109b761098491846110fc565b516040516327755b9160e11b815291829160048301610a56565b5060406109de82856110fc565b51511415610919565b6102f482600080516020612edf83398151915255565b6302ed543d60e51b60005260046000fd5b60005b838110610a215750506000910152565b8181015183820152602001610a11565b90602091610a4a81518092818552858086019101610a0e565b601f01601f1916010190565b9060206104f3928181520190610a31565b34610244576020366003190112610244576004356001600160401b038111610244578060040160806003198336030112610244576044820135610aa9816112a8565b4211610b4657610ae0610acd610ac1610ae4936112e0565b60208151910120611dd4565b610ada6064860185610fb6565b91611a51565b1590565b610b3557600091610b03826024610afb869561129e565b930190610fb6565b90610b1360405180938193611306565b03915afa610b1f611329565b901561064f576104149060405191829182610a56565b638baa579f60e01b60005260046000fd5b610b52610b69916112a8565b630f88f04960e41b60005260045242602452604490565b6000fd5b3461024457600036600319011261024457610bad610bbb610b8c611b63565b604092919251938493600f60f81b855260e0602086015260e0850190610a31565b908382036040850152610a31565b466060830152306080830152600060a083015281810360c0830152602060605191828152019060809060005b818110610bf5575050500390f35b8251845285945060209384019390920191600101610be7565b346102445760003660031901126102445760206040516121058152f35b9060406003198301126102445760043591602435906001600160401b03821161024457610c5a916004016102f6565b9091565b3461024457610c6c36610c2b565b90610c75611697565b6001610c7f610f4d565b14610c8d576102f492611cbd565b63948bf89760e01b60005260046000fd5b3461024457602036600319011261024457610414610cbd600435611393565b604051918291602083526020830190610a31565b34610244576020366003190112610244576004356001600160e01b03198116810361024457610d01602091611460565b6040519015158152f35b34610244576020366003190112610244576004356001600160401b03811161024457610264610d406020923690600401610392565b6114e3565b34610244576020366003190112610244576020610d01600435610d678161026c565b6115d0565b346102445760003660031901126102445760206040516f71727de22e5e9d8baf0edac6f37da0328152f35b606036600319011261024457600435610daf8161026c565b604435906024356001600160401b038311610244576106ed610dd86102f49436906004016102f6565b6f71727de22e5e9d8baf0edac6f37da0323303610df65736916104a1565b610dfe611697565b6106e6565b3461024457610e1136610c2b565b90610e1a611697565b610e22610f4d565b9260018411610e35576102f49350611cbd565b83631047e35560e31b60005260045260246000fd5b34610244576020366003190112610244576020610264600435611dd4565b34610244576000366003190112610244576020600080516020612edf83398151915254604051908152f35b346102445760003660031901126102445760206102646115f6565b90610ec160209282815194859201610a0e565b0190565b6020610ede918160405193828580945193849201610a0e565b81017f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f50381520301902090565b634e487b7160e01b600052601160045260246000fd5b600080516020612eff8339815191520390600080516020612eff8339815191528211610f4857565b610f0a565b600080516020612edf83398151915254600080516020612f3f833981519152548103908111610f485790565b6000198114610f485760010190565b90610f96610f9b9392611dd4565b611a51565b610fab576001600160e01b031990565b630b135d3f60e11b90565b903590601e198136030182121561024457018035906001600160401b0382116102445760200191813603831361024457565b356001600160e01b0319811692919060048210611003575050565b6001600160e01b031960049290920360031b82901b16169150565b909291928360041161024457831161024457600401916003190190565b929190926001600160401b038411610470578360051b9060206040516110638285018261044f565b8096815201918101918383116102445781905b838210611084575050505050565b81356001600160401b038111610244576020916110a487849387016104d8565b815201910190611076565b602081830312610244578035906001600160401b03821161024457019080601f83011215610244578160206104f39335910161103b565b634e487b7160e01b600052603260045260246000fd5b80518210156111105760209160051b010190565b6110e6565b80516020909101516001600160e01b0319811692919060048210611003575050565b91602083013560401c9160608401906111508286610fb6565b6316155e8f60e11b916001600160e01b03199161116c91610fe8565b160361124f575061117c846114e3565b92612105810361123b575061119e6111976111a69286610fb6565b809161101e565b8101906110af565b9160005b8351811015611215576111bd81856110fc565b5163278f794360e11b6111df6111d283611115565b6001600160e01b03191690565b146111ee575b506001016111aa565b60240151803b6111e557630c76093760e01b6000526001600160a01b031660045260246000fd5b50909261122d9250610ada905b610100810190610fb6565b61123657600190565b600090565b632ef3781360e01b60005260045260246000fd5b929050612105819492941461123b575090610ada61122d92611222565b61127760ff91610ec5565b541690565b91908110156111105760051b81013590605e1981360301821215610244570190565b356104f38161026c565b906107088201809211610f4857565b9060158201809211610f4857565b9060028201809211610f4857565b91908201809211610f4857565b906040519163737bebdd60e01b602084015260248301526024825261048460448361044f565b908092918237016000815290565b6040519061132360208361044f565b60008252565b3d15611354573d9061133a82610486565b91611348604051938461044f565b82523d6000602084013e565b606090565b90600182811c92168015611389575b602083101461137357565b634e487b7160e01b600052602260045260246000fd5b91607f1691611368565b6000527f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f5026020526040600020604051908160008254926113d284611359565b808452936001811690811561143e57506001146113f7575b506104f39250038261044f565b90506000929192526020600020906000915b8183106114225750509060206104f392820101386113ea565b6020919350806001915483858801015201910190918392611409565b9050602092506104f394915060ff191682840152151560051b820101386113ea565b63ffffffff60e01b166329565e3b60e01b81149081156114d2575b81156114c1575b81156114b0575b811561149f575b5061149a57600090565b600190565b63278f794360e11b14905038611490565b63b819736760e01b81149150611489565b6389625b5760e01b81149150611482565b6303c3cfc960e21b8114915061147b565b60208101356115976114f86040840184610fb6565b908160405191823720916102256115126060860186610fb6565b90816040519182372060c086013560a0870135608088013561154061153a60e08b018b610fb6565b90612335565b604080519a356001600160a01b031660208c01908152908b019790975260608a0198909852608089019390935260a088019290925260c087019190915260e086015261010085019390935292918290610120820190565b51902060408051602081019283526f71727de22e5e9d8baf0edac6f37da032918101919091526115ca8160608101610225565b51902090565b61127760ff916040519060018060a01b031660208201526020815261023360408261044f565b6115fe611b63565b906020815191012090602081519101206040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a081526115ca60c08261044f565b60003560e01c63bc197c81811463f23a6e6182141763150b7a0282141761168e57633c10b94e6000526004601cfd5b6020526020603cf35b6116a0336115d0565b80156116bb575b610484576282b42960e81b60005260046000fd5b503033146116a7565b8181106116cf575050565b600081556001016116c4565b9190601f81116116ea57505050565b610484926000526020600020906020601f840160051c83019310611716575b601f0160051c01906116c4565b9091508190611709565b6117298161126c565b6118975761173681610ec5565b600160ff19825416179055816000527f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f502602052604060002081516001600160401b038111610470576117928161178c8454611359565b846116db565b6020601f821160011461180657916117e7827f38109edc26e166b5579352ce56a50813177eb25208fd90d61f2f37838622022095936117f6956000916117fb575b508160011b916000199060031b1c19161790565b90555b60405191829182610a56565b0390a2565b9050840151386117d3565b601f1982169061181b84600052602060002090565b9160005b81811061187f5750926117f69492600192827f38109edc26e166b5579352ce56a50813177eb25208fd90d61f2f378386220220989610611866575b5050811b0190556117ea565b85015160001960f88460031b161c19169055388061185a565b9192602060018192868a01518155019401920161181f565b60405163468b12ad60e11b81529081906109849060048301610a56565b602081830312610244578035906001600160401b03821161024457016040818303126102445760405191604083018381106001600160401b038211176104705760405281356001600160401b03811161024457816119139184016104d8565b835260208201356001600160401b0381116102445761193292016104d8565b602082015290565b60208151910151906020811061194e575090565b6000199060200360031b1b1690565b9190826040910312610244576020825192015190565b81601f82011215610244576020815191019061198e81610486565b9261199c604051948561044f565b81845281830111610244576104f3916020840190610a0e565b602081830312610244578051906001600160401b03821161024457019060c082820312610244576119e4610475565b9180516001600160401b0381116102445782611a01918301611973565b835260208101516001600160401b0381116102445760a092611a24918301611973565b6020840152604081015160408401526060810151606084015260808101516080840152015160a082015290565b929190611a60918101906118b4565b90815191611a70610ae08461126c565b611b3a576020835114611af15782519360408514611aa3576040516327755b9160e11b8152806109848660048301610a56565b610225611aec611ad7611ac38760208080999b6104f39b0101910161195d565b9690950151602080825183010191016119b5565b92604051928391602083019190602083019252565b611fd6565b91929091906001600160a01b03611b078561193a565b11611b1f576020806104f39495015192015191611e49565b60405163bff1ac6560e01b8152806109848660048301610a56565b50915050600090565b916000928392602083519301915af1611b5a611329565b901561064f5750565b6040908151611b72838261044f565b601281527111da585b9bc814db585c9d0815d85b1b195d60721b602082015291611b9e8151918261044f565b60018152603160f81b602082015290565b908060209392818452848401376000828201840152601f01601f1916010190565b92916104f39492611bee928552606060208601526060850191611baf565b916040818403910152610a31565b60209082604051938492833781017f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f50381520301902090565b600281901b91906001600160fe1b03811603610f4857565b611c568154611359565b9081611c60575050565b81601f60009311600114611c72575055565b81835260208320611c8e91601f0160051c8101906001016116c4565b808252602082209081548360011b9084198560031b1c191617905555565b9160206104f3938181520191611baf565b9190611cc883611393565b805115611dbe5780516020820120611ce13685856104a1565b6020815191012003611d9f57509081611d28611d1e837fcf95bbfe6f870f8cc40482dc3dccdafd268f0e9ce0a4f24ea1bea9be64e505ff95611bfc565b805460ff19169055565b611d63611d5e856000527f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f502602052604060002090565b611c4c565b611d90611d7e600080516020612f3f83398151915254610f79565b600080516020612f3f83398151915255565b6117f660405192839283611cac565b60405163781f2e3960e01b815293849361098493909160048601611bd0565b63340c473d60e11b600052600484905260246000fd5b611ddc6115f6565b9060405160208101917f37f248f492286ab572e2a1ee0bd5315f2aae54a08b5871b294d657f3a1f1d0078352604082015260408152611e1c60608261044f565b51902060405190602082019261190160f01b845260228301526042820152604281526115ca60628261044f565b9091600091906001600160a01b03821615611f335760405192600484019460248501956044860192853b15611eb357509186939160209593630b135d3f60e11b8852526040845281518501809260045afa9360443d01915afa9151630b135d3f60e11b1491161690565b979650509050815180604014611f0e57604114611ed05750505050565b602092939550606082015160001a835260408201516060525b60005201516040526020600160806000825afa511860601b3d11916000606052604052565b506020929395506040820151601b8160ff1c01845260018060ff1b0316606052611ee9565b50505050600090565b906104846001602d60405180956c1131b430b63632b733b2911d1160991b6020830152611f728151809260208686019101610a0e565b8101601160f91b838201520301601e1981018552018361044f565b8051602010156111105760400190565b6040513d6000823e3d90fd5b6020929190611fbf849282815194859201610a0e565b019081520190565b90816020910312610244575190565b92919060009360a082019485517f7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8106121b35760208301917fff1a2a9176d650e4a99dedb58f1793003935130579fe17b5a3f698ac5b00e63461204884516060870151612042816112b7565b91612340565b60208151910120036121bc57612060612065916121c6565b611f3c565b61207a835160408601516120428451826112d3565b602081519101209060208151910120036121b357600160f81b600160f81b6120b36120a58651611f8d565b516001600160f81b03191690565b16036121b3576120d0602092600092505160405191828092610eae565b039060025afa156121ae576020600061210681516120fa8551610225604051938492888401611fa9565b60405191828092610eae565b039060025afa156121ae57608060005191019360008086518561215985516102258a60405194859360208501978c899192608093969594919660a084019784526020840152604083015260608201520152565b51906101005afa94612169611329565b805196806121a5575b61218557506104f395505190519161222d565b6001966121a19650810160209081019550019250611fc7915050565b1490565b50861515612172565b611f9d565b94505050505090565b5094505050505090565b6040516104f3916121d860608361044f565b604082527f4142434445464748494a4b4c4d4e4f505152535455565758595a61626364656660208301527f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f60408301526123ec565b93919092938315801561231d575b8015612315575b80156122fd575b6122f3576122578386612494565b156122f35760405191602083526020808401526020604084015260608301527fffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254f6080830152600080516020612eff83398151915260a083015260208260c0816005600019fa1561024457600080516020612eff833981519152946122ed93866122e794518181890994099161256f565b91610f20565b90081590565b5050505050600090565b50600080516020612eff833981519152821015612249565b508115612242565b50600080516020612eff83398151915284101561223b565b816040519182372090565b8051606094939290838111156123b2575b818111156123aa575b5082811061236757505050565b6040519450918290039101601f8201601f19165b8181015185820152601f1901908115612394579061237b565b5050604081840160006020820152016040528252565b90503861235a565b925082612351565b906123c482610486565b6123d1604051918261044f565b82815280926123e2601f1991610486565b0190602036910137565b9081511561248a579061241961241461240d6124088451611c34565b6112c5565b6003900490565b6123ba565b91602083019082805101906020820192835194600085525b83811061244057505050505290565b600360049101916001603f845182828260121c16880101518453828282600c1c16880101518385015382828260061c16880101516002850153168501015160038201530190612431565b50506104f3611314565b600160601b63ffffffff60c01b03198110801590612557575b8015612546575b61253f57600160601b63ffffffff60c01b0319907f5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b908290817fffffffff00000001000000000000000000000000fffffffffffffffffffffffc820990600160601b63ffffffff60c01b0319908181800909080890600160601b63ffffffff60c01b03199080091490565b5050600090565b50801580156124b4575081156124b4565b50600160601b63ffffffff60c01b03198210156124ad565b9092600092908360ff81841580612b66575b612b5b5761258f8887612b6e565b929091821580612b53575b612b18575b5085811c60028660fe1c16015b15612aff57600186821c16600286831c60011b160160018114612ab4575b60028114612aa7575b600314612a9a575b600198600019919091019694959489949392915b886000191161266d5750505050505050505060405191606083015260208252602080830152602060408301526002600160601b0363ffffffff60c01b03196080830152600163ffffffff60601b0360601b1960a083015260208260c0816005600019fa15610244579051600160601b63ffffffff60c01b0319910990565b909192939495969798600163ffffffff60601b0360601b198660020990600160601b63ffffffff60c01b0319828009600160601b63ffffffff60c01b031981830992600160601b63ffffffff60c01b03199082900991600160601b63ffffffff60c01b03199081908f8281830891600160601b63ffffffff60c01b031991820390080960030998600160601b63ffffffff60c01b03199083099c600160601b63ffffffff60c01b0319910991600160601b63ffffffff60c01b031980826002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b03198b80090898600160601b63ffffffff60c01b031991829081038b08900996600160601b63ffffffff60c01b03199088908290840908968b60028c60018d841c16921c60011b16018015612a7d5760018114612a32575b60028114612a27575b600314612a1e575b8215612a0b57600160601b63ffffffff60c01b031990889082908f90090890600160601b63ffffffff60c01b031990898203908290859009089781156128d1575b600160601b63ffffffff60c01b031989800998600160601b63ffffffff60c01b0319908a0992600160601b63ffffffff60c01b0319908a90099c600160601b63ffffffff60c01b03199084900998600160601b63ffffffff60c01b03199109600160601b63ffffffff60c01b031980826002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b031985810381868009080897600160601b63ffffffff60c01b03199384910991600160601b63ffffffff60c01b03199182908a82039008090894985b6000190197969594939291906125ef565b886127f4579a91975090959050600160601b63ffffffff60c01b0319816002600160601b0363ffffffff60c01b0319099a600160601b63ffffffff60c01b03198c8009600160601b63ffffffff60c01b0319818d099c600160601b63ffffffff60c01b0319908290099b600160601b63ffffffff60c01b031990818b8103820890600160601b63ffffffff60c01b0319908c900809600160601b63ffffffff60c01b03199060030991600160601b63ffffffff60c01b0319908d0998600160601b63ffffffff60c01b031991099b600160601b63ffffffff60c01b031980826002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b0319848009089b600160601b63ffffffff60c01b03199384910991600160601b63ffffffff60c01b03199182908e82039008900908946128c0565b60019c50909a8c985090965090506128c0565b505083856127b3565b8592508491506127ab565b7f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c29692507f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f591506127a2565b50505099959894600163ffffffff60601b0360601b1903946128c0565b92508096509581926125db565b96975087968994506125d3565b7f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c29698507f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f594506125ca565b60001901600186821c16600286831c60011b16016125ac565b9495600080516020612eff8339815191529196820390089484861580612b4b575b1561259f579850505050505050505090565b506001612b39565b50831561259a565b965050505050505090565b508315612581565b91907f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c2967f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5918015612d225784610c5a9495831480612d19575b15612d045750600160601b63ffffffff60c01b0319905082600209600160601b63ffffffff60c01b031981800992600160601b63ffffffff60c01b031984840991600160601b63ffffffff60c01b03199085900992600160601b63ffffffff60c01b0319908190816001820890600160601b63ffffffff60c01b0319907fffffffff00000001000000000000000000000000fffffffffffffffffffffffe900809600309600160601b63ffffffff60c01b031980846002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b03198380090892600160601b63ffffffff60c01b03196001860995600160601b63ffffffff60c01b0319906001900994600160601b63ffffffff60c01b031993849109600160601b63ffffffff60c01b03199081039290918290868203900890090890612e44565b909192612d1093612d28565b92909190612e44565b50818414612bc7565b50925090565b9193908015612e3b57600160601b63ffffffff60c01b03199081039384908290600190090893600160601b63ffffffff60c01b031990838203908290600190090892600160601b63ffffffff60c01b031984800993600160601b63ffffffff60c01b031990850992600160601b63ffffffff60c01b03199085900994600160601b63ffffffff60c01b031980876002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b031986810381858009080895600160601b63ffffffff60c01b031992839086900991600160601b63ffffffff60c01b03199182908982039008090892600160601b63ffffffff60c01b03199060010991600160601b63ffffffff60c01b03199060010990565b50600191508190565b91909260405190602082526020808301526020604083015260608201526002600160601b0363ffffffff60c01b03196080820152600163ffffffff60601b0360601b1960a082015260208160c0816005600019fa15610244575192600160601b63ffffffff60c01b03199084900992600160601b63ffffffff60c01b03199109600160601b63ffffffff60c01b031991908290800990099156fe0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f500ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f501a2646970667358221220890c9d20b5fc4df99bded2544912158a1d933f168e2e843d0c1a15a2ff32ce8c64736f6c634300081c0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x15 JUMPI JUMPDEST CALLDATASIZE PUSH2 0x165F JUMPI STOP JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x66A1EB7 EQ PUSH2 0x1E5 JUMPI DUP1 PUSH4 0xDB02622 EQ PUSH2 0x1E0 JUMPI DUP1 PUSH4 0xF0F3F24 EQ PUSH2 0x1DB JUMPI DUP1 PUSH4 0x1626BA7E EQ PUSH2 0x1D6 JUMPI DUP1 PUSH4 0x17452CAA EQ PUSH2 0x1D1 JUMPI DUP1 PUSH4 0x19822F7C EQ PUSH2 0x1CC JUMPI DUP1 PUSH4 0x1CA5393F EQ PUSH2 0x1C7 JUMPI DUP1 PUSH4 0x29565E3B EQ PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x2C2ABD1E EQ PUSH2 0x1BD JUMPI DUP1 PUSH4 0x34FCD5BE EQ PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x36D9CF9B EQ PUSH2 0x1B3 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x1AE JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x1A9 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x1A4 JUMPI DUP1 PUSH4 0x6F2DE70E EQ PUSH2 0x19F JUMPI DUP1 PUSH4 0x737BEBDD EQ PUSH2 0x19A JUMPI DUP1 PUSH4 0x84B0196E EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0x88CE4C7C EQ PUSH2 0x190 JUMPI DUP1 PUSH4 0x89625B57 EQ PUSH2 0x18B JUMPI DUP1 PUSH4 0x8EA69029 EQ PUSH2 0x186 JUMPI DUP1 PUSH4 0x9F9BCB34 EQ PUSH2 0x181 JUMPI DUP1 PUSH4 0xA05BD44E EQ PUSH2 0x17C JUMPI DUP1 PUSH4 0xA2E1A8D8 EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0xB0D691FE EQ PUSH2 0x172 JUMPI DUP1 PUSH4 0xB61D27F6 EQ PUSH2 0x16D JUMPI DUP1 PUSH4 0xB8197367 EQ PUSH2 0x168 JUMPI DUP1 PUSH4 0xCE1506BE EQ PUSH2 0x163 JUMPI DUP1 PUSH4 0xD948FD2E EQ PUSH2 0x15E JUMPI PUSH4 0xF698DA25 SUB PUSH2 0xE JUMPI PUSH2 0xE93 JUMP JUMPDEST PUSH2 0xE68 JUMP JUMPDEST PUSH2 0xE4A JUMP JUMPDEST PUSH2 0xE03 JUMP JUMPDEST PUSH2 0xD97 JUMP JUMPDEST PUSH2 0xD6C JUMP JUMPDEST PUSH2 0xD45 JUMP JUMPDEST PUSH2 0xD0B JUMP JUMPDEST PUSH2 0xCD1 JUMP JUMPDEST PUSH2 0xC9E JUMP JUMPDEST PUSH2 0xC5E JUMP JUMPDEST PUSH2 0xC0E JUMP JUMPDEST PUSH2 0xB6D JUMP JUMPDEST PUSH2 0xA67 JUMP JUMPDEST PUSH2 0x8CC JUMP JUMPDEST PUSH2 0x896 JUMP JUMPDEST PUSH2 0x846 JUMP JUMPDEST PUSH2 0x731 JUMP JUMPDEST PUSH2 0x706 JUMP JUMPDEST PUSH2 0x673 JUMP JUMPDEST PUSH2 0x5CB JUMP JUMPDEST PUSH2 0x52D JUMP JUMPDEST PUSH2 0x4F6 JUMP JUMPDEST PUSH2 0x3A1 JUMP JUMPDEST PUSH2 0x375 JUMP JUMPDEST PUSH2 0x323 JUMP JUMPDEST PUSH2 0x27D JUMP JUMPDEST PUSH2 0x249 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x20 PUSH1 0xFF PUSH2 0x238 PUSH1 0x4 CALLDATALOAD PUSH2 0x233 PUSH1 0x24 CALLDATALOAD SWAP2 PUSH2 0x225 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 DUP9 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x40 DUP2 ADD SWAP5 DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x44F JUMP JUMPDEST PUSH2 0xEC5 JUMP JUMPDEST SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x20 PUSH2 0x264 PUSH2 0xF4D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SUB PUSH2 0x244 JUMPI JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH2 0x2F4 PUSH1 0x4 CALLDATALOAD PUSH2 0x29D DUP2 PUSH2 0x26C JUMP JUMPDEST PUSH2 0x2A5 PUSH2 0x1697 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x20 DUP2 MSTORE PUSH2 0x2C5 PUSH1 0x40 DUP3 PUSH2 0x44F JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EDF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD SWAP1 PUSH2 0x2DF DUP3 PUSH2 0xF79 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EDF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE PUSH2 0x1720 JUMP JUMPDEST STOP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x244 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT PUSH2 0x244 JUMPI PUSH1 0x20 DUP4 DUP2 DUP7 ADD SWAP6 ADD ADD GT PUSH2 0x244 JUMPI JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x24 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI PUSH1 0x20 SWAP2 PUSH2 0x35C PUSH2 0x362 SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x2F6 JUMP JUMPDEST SWAP2 PUSH2 0xF88 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH2 0x708 DUP2 MSTORE RETURN JUMPDEST SWAP1 DUP2 PUSH2 0x120 SWAP2 SUB SLT PUSH2 0x244 JUMPI SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x60 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI PUSH2 0x3D1 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x392 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD PUSH1 0x24 CALLDATALOAD PUSH16 0x71727DE22E5E9D8BAF0EDAC6F37DA031 NOT CALLER ADD PUSH2 0x429 JUMPI PUSH2 0x3FD DUP3 SWAP2 PUSH2 0x414 SWAP5 PUSH2 0x1137 JUMP JUMPDEST SWAP2 PUSH2 0x418 JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE SWAP1 DUP2 SWAP1 PUSH1 0x20 DUP3 ADD SWAP1 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 SWAP1 DUP2 DUP1 CODESIZE SWAP3 CALLER GAS CALL POP CODESIZE PUSH2 0x403 JUMP JUMPDEST PUSH3 0x82B429 PUSH1 0xE8 SHL PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x1F DUP1 NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x470 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x439 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x484 PUSH1 0xC0 DUP4 PUSH2 0x44F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x470 JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x4AD DUP3 PUSH2 0x486 JUMP JUMPDEST SWAP2 PUSH2 0x4BB PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x44F JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0x244 JUMPI DUP3 DUP2 PUSH1 0x20 SWAP4 DUP5 PUSH1 0x0 SWAP7 ADD CALLDATACOPY ADD ADD MSTORE JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x244 JUMPI DUP2 PUSH1 0x20 PUSH2 0x4F3 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x4A1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI PUSH1 0xFF PUSH2 0x238 PUSH2 0x233 PUSH1 0x20 SWAP4 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x4D8 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH2 0x2F4 PUSH1 0x24 CALLDATALOAD PUSH2 0x2C5 PUSH1 0x4 CALLDATALOAD PUSH2 0x552 PUSH2 0x1697 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 PUSH1 0x60 DUP2 ADD PUSH2 0x225 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH1 0x3 NOT DUP4 ADD SLT PUSH2 0x244 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI PUSH1 0x4 ADD PUSH1 0x0 SWAP3 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x5C7 JUMPI DUP2 CALLDATALOAD SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP6 GT PUSH2 0x5C4 JUMPI POP PUSH1 0x20 DUP1 DUP4 ADD SWAP3 DUP6 PUSH1 0x5 SHL ADD ADD GT PUSH2 0x244 JUMPI SWAP2 SWAP1 JUMP JUMPDEST DUP1 REVERT JUMPDEST DUP4 DUP1 REVERT JUMPDEST PUSH2 0x5D4 CALLDATASIZE PUSH2 0x56E JUMP JUMPDEST SWAP1 PUSH16 0x71727DE22E5E9D8BAF0EDAC6F37DA032 CALLER SUB PUSH2 0x429 JUMPI PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2F4 JUMPI PUSH1 0x0 PUSH2 0x608 DUP3 PUSH1 0x5 SHL DUP5 ADD DUP5 PUSH2 0xFB6 JUMP JUMPDEST PUSH2 0x612 DUP2 DUP4 PUSH2 0xFE8 JUMP JUMPDEST PUSH2 0x61B DUP2 PUSH2 0x1460 JUMP JUMPDEST ISZERO PUSH2 0x657 JUMPI POP DUP3 SWAP2 PUSH2 0x62E SWAP2 CALLDATASIZE SWAP2 PUSH2 0x4A1 JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD DUP3 ADDRESS GAS CALL PUSH2 0x640 PUSH2 0x1329 JUMP JUMPDEST SWAP1 ISZERO PUSH2 0x64F JUMPI POP PUSH1 0x1 ADD PUSH2 0x5EF JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD REVERT JUMPDEST PUSH4 0x1D8370A3 PUSH1 0xE1 SHL DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x4 MSTORE PUSH1 0x24 DUP4 REVERT JUMPDEST PUSH2 0x67C CALLDATASIZE PUSH2 0x56E JUMP JUMPDEST SWAP1 PUSH16 0x71727DE22E5E9D8BAF0EDAC6F37DA032 CALLER SUB PUSH2 0x6F9 JUMPI JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT PUSH2 0x6A1 JUMPI STOP JUMPDEST DUP1 PUSH2 0x6F3 PUSH2 0x6B2 PUSH1 0x1 SWAP4 DUP7 DUP7 PUSH2 0x127C JUMP JUMPDEST CALLDATALOAD PUSH2 0x6BC DUP2 PUSH2 0x26C JUMP JUMPDEST PUSH1 0x20 PUSH2 0x6C9 DUP5 DUP9 DUP9 PUSH2 0x127C JUMP JUMPDEST ADD CALLDATALOAD PUSH2 0x6ED PUSH2 0x6E6 PUSH2 0x6DC DUP7 DUP11 DUP11 PUSH2 0x127C JUMP JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 PUSH2 0xFB6 JUMP JUMPDEST CALLDATASIZE SWAP2 PUSH2 0x4A1 JUMP JUMPDEST SWAP2 PUSH2 0x1B43 JUMP JUMPDEST ADD PUSH2 0x698 JUMP JUMPDEST PUSH2 0x701 PUSH2 0x1697 JUMP JUMPDEST PUSH2 0x695 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x20 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2F3F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x749 DUP2 PUSH2 0x26C JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI PUSH2 0x768 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x2F6 JUMP JUMPDEST SWAP1 SWAP2 PUSH32 0x0 ADDRESS EQ PUSH2 0x838 JUMPI PUSH2 0x799 PUSH2 0x1697 JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND RETURNDATASIZE PUSH1 0x0 MSTORE PUSH4 0x52D1902D PUSH1 0x1 MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2F1F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x20 PUSH1 0x1 PUSH1 0x4 PUSH1 0x1D DUP6 GAS STATICCALL MLOAD SUB PUSH2 0x82A JUMPI DUP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B PUSH1 0x0 DUP1 LOG2 DUP2 DUP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2F1F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE PUSH2 0x80B JUMPI STOP JUMPDEST DUP2 PUSH1 0x0 SWAP3 PUSH1 0x40 MLOAD SWAP5 DUP6 CALLDATACOPY DUP4 CODESIZE SWAP3 GAS DELEGATECALL ISZERO PUSH2 0x821 JUMPI STOP JUMPDEST RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH4 0x55299B49 PUSH1 0x1 MSTORE PUSH1 0x4 PUSH1 0x1D REVERT JUMPDEST PUSH4 0x9F03A026 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x1C REVERT JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI ADDRESS PUSH32 0x0 SUB PUSH2 0x838 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2F1F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2F1F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 SWAP1 RETURN JUMPDEST PUSH2 0x8D5 CALLDATASIZE PUSH2 0x56E JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EDF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD SWAP2 DUP3 PUSH2 0x9FD JUMPI PUSH2 0x8F6 SWAP2 CALLDATASIZE SWAP2 PUSH2 0x103B JUMP JUMPDEST SWAP1 PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x9E7 JUMPI PUSH1 0x20 PUSH2 0x90F DUP3 DUP6 PUSH2 0x10FC JUMP JUMPDEST MLOAD MLOAD EQ ISZERO DUP1 PUSH2 0x9D1 JUMPI JUMPDEST PUSH2 0x9AA JUMPI PUSH1 0x20 PUSH2 0x929 DUP3 DUP6 PUSH2 0x10FC JUMP JUMPDEST MLOAD MLOAD EQ DUP1 PUSH2 0x988 JUMPI JUMPDEST PUSH2 0x95D JUMPI DUP1 PUSH2 0x957 PUSH2 0x946 PUSH1 0x1 SWAP4 DUP7 PUSH2 0x10FC JUMP JUMPDEST MLOAD SWAP4 PUSH2 0x951 DUP2 PUSH2 0xF79 JUMP JUMPDEST SWAP5 PUSH2 0x1720 JUMP JUMPDEST ADD PUSH2 0x8FA JUMP JUMPDEST PUSH2 0x96A PUSH2 0x984 SWAP2 DUP5 PUSH2 0x10FC JUMP JUMPDEST MLOAD PUSH1 0x40 MLOAD PUSH4 0xBFF1AC65 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 DUP3 SWAP2 PUSH1 0x4 DUP4 ADD PUSH2 0xA56 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x9A4 PUSH2 0x99E DUP4 DUP7 PUSH2 0x10FC JUMP JUMPDEST MLOAD PUSH2 0x193A JUMP JUMPDEST GT PUSH2 0x932 JUMP JUMPDEST PUSH2 0x9B7 PUSH2 0x984 SWAP2 DUP5 PUSH2 0x10FC JUMP JUMPDEST MLOAD PUSH1 0x40 MLOAD PUSH4 0x27755B91 PUSH1 0xE1 SHL DUP2 MSTORE SWAP2 DUP3 SWAP2 PUSH1 0x4 DUP4 ADD PUSH2 0xA56 JUMP JUMPDEST POP PUSH1 0x40 PUSH2 0x9DE DUP3 DUP6 PUSH2 0x10FC JUMP JUMPDEST MLOAD MLOAD EQ ISZERO PUSH2 0x919 JUMP JUMPDEST PUSH2 0x2F4 DUP3 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EDF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST PUSH4 0x2ED543D PUSH1 0xE5 SHL PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT PUSH2 0xA21 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA11 JUMP JUMPDEST SWAP1 PUSH1 0x20 SWAP2 PUSH2 0xA4A DUP2 MLOAD DUP1 SWAP3 DUP2 DUP6 MSTORE DUP6 DUP1 DUP7 ADD SWAP2 ADD PUSH2 0xA0E JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND ADD ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0x4F3 SWAP3 DUP2 DUP2 MSTORE ADD SWAP1 PUSH2 0xA31 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI DUP1 PUSH1 0x4 ADD PUSH1 0x80 PUSH1 0x3 NOT DUP4 CALLDATASIZE SUB ADD SLT PUSH2 0x244 JUMPI PUSH1 0x44 DUP3 ADD CALLDATALOAD PUSH2 0xAA9 DUP2 PUSH2 0x12A8 JUMP JUMPDEST TIMESTAMP GT PUSH2 0xB46 JUMPI PUSH2 0xAE0 PUSH2 0xACD PUSH2 0xAC1 PUSH2 0xAE4 SWAP4 PUSH2 0x12E0 JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD KECCAK256 PUSH2 0x1DD4 JUMP JUMPDEST PUSH2 0xADA PUSH1 0x64 DUP7 ADD DUP6 PUSH2 0xFB6 JUMP JUMPDEST SWAP2 PUSH2 0x1A51 JUMP JUMPDEST ISZERO SWAP1 JUMP JUMPDEST PUSH2 0xB35 JUMPI PUSH1 0x0 SWAP2 PUSH2 0xB03 DUP3 PUSH1 0x24 PUSH2 0xAFB DUP7 SWAP6 PUSH2 0x129E JUMP JUMPDEST SWAP4 ADD SWAP1 PUSH2 0xFB6 JUMP JUMPDEST SWAP1 PUSH2 0xB13 PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP4 PUSH2 0x1306 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL PUSH2 0xB1F PUSH2 0x1329 JUMP JUMPDEST SWAP1 ISZERO PUSH2 0x64F JUMPI PUSH2 0x414 SWAP1 PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xA56 JUMP JUMPDEST PUSH4 0x8BAA579F PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST PUSH2 0xB52 PUSH2 0xB69 SWAP2 PUSH2 0x12A8 JUMP JUMPDEST PUSH4 0xF88F049 PUSH1 0xE4 SHL PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE TIMESTAMP PUSH1 0x24 MSTORE PUSH1 0x44 SWAP1 JUMP JUMPDEST PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH2 0xBAD PUSH2 0xBBB PUSH2 0xB8C PUSH2 0x1B63 JUMP JUMPDEST PUSH1 0x40 SWAP3 SWAP2 SWAP3 MLOAD SWAP4 DUP5 SWAP4 PUSH1 0xF PUSH1 0xF8 SHL DUP6 MSTORE PUSH1 0xE0 PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0xE0 DUP6 ADD SWAP1 PUSH2 0xA31 JUMP JUMPDEST SWAP1 DUP4 DUP3 SUB PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0xA31 JUMP JUMPDEST CHAINID PUSH1 0x60 DUP4 ADD MSTORE ADDRESS PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0xA0 DUP4 ADD MSTORE DUP2 DUP2 SUB PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0x20 PUSH1 0x60 MLOAD SWAP2 DUP3 DUP2 MSTORE ADD SWAP1 PUSH1 0x80 SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0xBF5 JUMPI POP POP POP SUB SWAP1 RETURN JUMPDEST DUP3 MLOAD DUP5 MSTORE DUP6 SWAP5 POP PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0xBE7 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH2 0x2105 DUP2 MSTORE RETURN JUMPDEST SWAP1 PUSH1 0x40 PUSH1 0x3 NOT DUP4 ADD SLT PUSH2 0x244 JUMPI PUSH1 0x4 CALLDATALOAD SWAP2 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x244 JUMPI PUSH2 0xC5A SWAP2 PUSH1 0x4 ADD PUSH2 0x2F6 JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH2 0xC6C CALLDATASIZE PUSH2 0xC2B JUMP JUMPDEST SWAP1 PUSH2 0xC75 PUSH2 0x1697 JUMP JUMPDEST PUSH1 0x1 PUSH2 0xC7F PUSH2 0xF4D JUMP JUMPDEST EQ PUSH2 0xC8D JUMPI PUSH2 0x2F4 SWAP3 PUSH2 0x1CBD JUMP JUMPDEST PUSH4 0x948BF897 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH2 0x414 PUSH2 0xCBD PUSH1 0x4 CALLDATALOAD PUSH2 0x1393 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0xA31 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 SUB PUSH2 0x244 JUMPI PUSH2 0xD01 PUSH1 0x20 SWAP2 PUSH2 0x1460 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI PUSH2 0x264 PUSH2 0xD40 PUSH1 0x20 SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x392 JUMP JUMPDEST PUSH2 0x14E3 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x20 PUSH2 0xD01 PUSH1 0x4 CALLDATALOAD PUSH2 0xD67 DUP2 PUSH2 0x26C JUMP JUMPDEST PUSH2 0x15D0 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH16 0x71727DE22E5E9D8BAF0EDAC6F37DA032 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x60 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0xDAF DUP2 PUSH2 0x26C JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x24 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT PUSH2 0x244 JUMPI PUSH2 0x6ED PUSH2 0xDD8 PUSH2 0x2F4 SWAP5 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x2F6 JUMP JUMPDEST PUSH16 0x71727DE22E5E9D8BAF0EDAC6F37DA032 CALLER SUB PUSH2 0xDF6 JUMPI CALLDATASIZE SWAP2 PUSH2 0x4A1 JUMP JUMPDEST PUSH2 0xDFE PUSH2 0x1697 JUMP JUMPDEST PUSH2 0x6E6 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH2 0xE11 CALLDATASIZE PUSH2 0xC2B JUMP JUMPDEST SWAP1 PUSH2 0xE1A PUSH2 0x1697 JUMP JUMPDEST PUSH2 0xE22 PUSH2 0xF4D JUMP JUMPDEST SWAP3 PUSH1 0x1 DUP5 GT PUSH2 0xE35 JUMPI PUSH2 0x2F4 SWAP4 POP PUSH2 0x1CBD JUMP JUMPDEST DUP4 PUSH4 0x1047E355 PUSH1 0xE3 SHL PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x20 PUSH2 0x264 PUSH1 0x4 CALLDATALOAD PUSH2 0x1DD4 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x20 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EDF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x20 PUSH2 0x264 PUSH2 0x15F6 JUMP JUMPDEST SWAP1 PUSH2 0xEC1 PUSH1 0x20 SWAP3 DUP3 DUP2 MLOAD SWAP5 DUP6 SWAP3 ADD PUSH2 0xA0E JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH2 0xEDE SWAP2 DUP2 PUSH1 0x40 MLOAD SWAP4 DUP3 DUP6 DUP1 SWAP5 MLOAD SWAP4 DUP5 SWAP3 ADD PUSH2 0xA0E JUMP JUMPDEST DUP2 ADD PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F503 DUP2 MSTORE SUB ADD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SUB SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 GT PUSH2 0xF48 JUMPI JUMP JUMPDEST PUSH2 0xF0A JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EDF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2F3F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD DUP2 SUB SWAP1 DUP2 GT PUSH2 0xF48 JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x0 NOT DUP2 EQ PUSH2 0xF48 JUMPI PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xF96 PUSH2 0xF9B SWAP4 SWAP3 PUSH2 0x1DD4 JUMP JUMPDEST PUSH2 0x1A51 JUMP JUMPDEST PUSH2 0xFAB JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 JUMP JUMPDEST PUSH4 0xB135D3F PUSH1 0xE1 SHL SWAP1 JUMP JUMPDEST SWAP1 CALLDATALOAD SWAP1 PUSH1 0x1E NOT DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x244 JUMPI ADD DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x244 JUMPI PUSH1 0x20 ADD SWAP2 DUP2 CALLDATASIZE SUB DUP4 SGT PUSH2 0x244 JUMPI JUMP JUMPDEST CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND SWAP3 SWAP2 SWAP1 PUSH1 0x4 DUP3 LT PUSH2 0x1003 JUMPI POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0x4 SWAP3 SWAP1 SWAP3 SUB PUSH1 0x3 SHL DUP3 SWAP1 SHL AND AND SWAP2 POP JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 DUP4 PUSH1 0x4 GT PUSH2 0x244 JUMPI DUP4 GT PUSH2 0x244 JUMPI PUSH1 0x4 ADD SWAP2 PUSH1 0x3 NOT ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP1 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP5 GT PUSH2 0x470 JUMPI DUP4 PUSH1 0x5 SHL SWAP1 PUSH1 0x20 PUSH1 0x40 MLOAD PUSH2 0x1063 DUP3 DUP6 ADD DUP3 PUSH2 0x44F JUMP JUMPDEST DUP1 SWAP7 DUP2 MSTORE ADD SWAP2 DUP2 ADD SWAP2 DUP4 DUP4 GT PUSH2 0x244 JUMPI DUP2 SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x1084 JUMPI POP POP POP POP POP JUMP JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI PUSH1 0x20 SWAP2 PUSH2 0x10A4 DUP8 DUP5 SWAP4 DUP8 ADD PUSH2 0x4D8 JUMP JUMPDEST DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x1076 JUMP JUMPDEST PUSH1 0x20 DUP2 DUP4 SUB SLT PUSH2 0x244 JUMPI DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x244 JUMPI ADD SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x244 JUMPI DUP2 PUSH1 0x20 PUSH2 0x4F3 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x103B JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x1110 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x10E6 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND SWAP3 SWAP2 SWAP1 PUSH1 0x4 DUP3 LT PUSH2 0x1003 JUMPI POP POP JUMP JUMPDEST SWAP2 PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x40 SHR SWAP2 PUSH1 0x60 DUP5 ADD SWAP1 PUSH2 0x1150 DUP3 DUP7 PUSH2 0xFB6 JUMP JUMPDEST PUSH4 0x16155E8F PUSH1 0xE1 SHL SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP2 PUSH2 0x116C SWAP2 PUSH2 0xFE8 JUMP JUMPDEST AND SUB PUSH2 0x124F JUMPI POP PUSH2 0x117C DUP5 PUSH2 0x14E3 JUMP JUMPDEST SWAP3 PUSH2 0x2105 DUP2 SUB PUSH2 0x123B JUMPI POP PUSH2 0x119E PUSH2 0x1197 PUSH2 0x11A6 SWAP3 DUP7 PUSH2 0xFB6 JUMP JUMPDEST DUP1 SWAP2 PUSH2 0x101E JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x10AF JUMP JUMPDEST SWAP2 PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x1215 JUMPI PUSH2 0x11BD DUP2 DUP6 PUSH2 0x10FC JUMP JUMPDEST MLOAD PUSH4 0x278F7943 PUSH1 0xE1 SHL PUSH2 0x11DF PUSH2 0x11D2 DUP4 PUSH2 0x1115 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST EQ PUSH2 0x11EE JUMPI JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x11AA JUMP JUMPDEST PUSH1 0x24 ADD MLOAD DUP1 EXTCODESIZE PUSH2 0x11E5 JUMPI PUSH4 0xC760937 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP1 SWAP3 PUSH2 0x122D SWAP3 POP PUSH2 0xADA SWAP1 JUMPDEST PUSH2 0x100 DUP2 ADD SWAP1 PUSH2 0xFB6 JUMP JUMPDEST PUSH2 0x1236 JUMPI PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH4 0x2EF37813 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 SWAP1 POP PUSH2 0x2105 DUP2 SWAP5 SWAP3 SWAP5 EQ PUSH2 0x123B JUMPI POP SWAP1 PUSH2 0xADA PUSH2 0x122D SWAP3 PUSH2 0x1222 JUMP JUMPDEST PUSH2 0x1277 PUSH1 0xFF SWAP2 PUSH2 0xEC5 JUMP JUMPDEST SLOAD AND SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x1110 JUMPI PUSH1 0x5 SHL DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x5E NOT DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x244 JUMPI ADD SWAP1 JUMP JUMPDEST CALLDATALOAD PUSH2 0x4F3 DUP2 PUSH2 0x26C JUMP JUMPDEST SWAP1 PUSH2 0x708 DUP3 ADD DUP1 SWAP3 GT PUSH2 0xF48 JUMPI JUMP JUMPDEST SWAP1 PUSH1 0x15 DUP3 ADD DUP1 SWAP3 GT PUSH2 0xF48 JUMPI JUMP JUMPDEST SWAP1 PUSH1 0x2 DUP3 ADD DUP1 SWAP3 GT PUSH2 0xF48 JUMPI JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0xF48 JUMPI JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP2 PUSH4 0x737BEBDD PUSH1 0xE0 SHL PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x24 DUP3 MSTORE PUSH2 0x484 PUSH1 0x44 DUP4 PUSH2 0x44F JUMP JUMPDEST SWAP1 DUP1 SWAP3 SWAP2 DUP3 CALLDATACOPY ADD PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x1323 PUSH1 0x20 DUP4 PUSH2 0x44F JUMP JUMPDEST PUSH1 0x0 DUP3 MSTORE JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x1354 JUMPI RETURNDATASIZE SWAP1 PUSH2 0x133A DUP3 PUSH2 0x486 JUMP JUMPDEST SWAP2 PUSH2 0x1348 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x44F JUMP JUMPDEST DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x1389 JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x1373 JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x1368 JUMP JUMPDEST PUSH1 0x0 MSTORE PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F502 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD SWAP1 DUP2 PUSH1 0x0 DUP3 SLOAD SWAP3 PUSH2 0x13D2 DUP5 PUSH2 0x1359 JUMP JUMPDEST DUP1 DUP5 MSTORE SWAP4 PUSH1 0x1 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x143E JUMPI POP PUSH1 0x1 EQ PUSH2 0x13F7 JUMPI JUMPDEST POP PUSH2 0x4F3 SWAP3 POP SUB DUP3 PUSH2 0x44F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 SWAP3 SWAP2 SWAP3 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x0 SWAP2 JUMPDEST DUP2 DUP4 LT PUSH2 0x1422 JUMPI POP POP SWAP1 PUSH1 0x20 PUSH2 0x4F3 SWAP3 DUP3 ADD ADD CODESIZE PUSH2 0x13EA JUMP JUMPDEST PUSH1 0x20 SWAP2 SWAP4 POP DUP1 PUSH1 0x1 SWAP2 SLOAD DUP4 DUP6 DUP9 ADD ADD MSTORE ADD SWAP2 ADD SWAP1 SWAP2 DUP4 SWAP3 PUSH2 0x1409 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 SWAP3 POP PUSH2 0x4F3 SWAP5 SWAP2 POP PUSH1 0xFF NOT AND DUP3 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD CODESIZE PUSH2 0x13EA JUMP JUMPDEST PUSH4 0xFFFFFFFF PUSH1 0xE0 SHL AND PUSH4 0x29565E3B PUSH1 0xE0 SHL DUP2 EQ SWAP1 DUP2 ISZERO PUSH2 0x14D2 JUMPI JUMPDEST DUP2 ISZERO PUSH2 0x14C1 JUMPI JUMPDEST DUP2 ISZERO PUSH2 0x14B0 JUMPI JUMPDEST DUP2 ISZERO PUSH2 0x149F JUMPI JUMPDEST POP PUSH2 0x149A JUMPI PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH4 0x278F7943 PUSH1 0xE1 SHL EQ SWAP1 POP CODESIZE PUSH2 0x1490 JUMP JUMPDEST PUSH4 0xB8197367 PUSH1 0xE0 SHL DUP2 EQ SWAP2 POP PUSH2 0x1489 JUMP JUMPDEST PUSH4 0x89625B57 PUSH1 0xE0 SHL DUP2 EQ SWAP2 POP PUSH2 0x1482 JUMP JUMPDEST PUSH4 0x3C3CFC9 PUSH1 0xE2 SHL DUP2 EQ SWAP2 POP PUSH2 0x147B JUMP JUMPDEST PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH2 0x1597 PUSH2 0x14F8 PUSH1 0x40 DUP5 ADD DUP5 PUSH2 0xFB6 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x40 MLOAD SWAP2 DUP3 CALLDATACOPY KECCAK256 SWAP2 PUSH2 0x225 PUSH2 0x1512 PUSH1 0x60 DUP7 ADD DUP7 PUSH2 0xFB6 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x40 MLOAD SWAP2 DUP3 CALLDATACOPY KECCAK256 PUSH1 0xC0 DUP7 ADD CALLDATALOAD PUSH1 0xA0 DUP8 ADD CALLDATALOAD PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH2 0x1540 PUSH2 0x153A PUSH1 0xE0 DUP12 ADD DUP12 PUSH2 0xFB6 JUMP JUMPDEST SWAP1 PUSH2 0x2335 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP11 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP13 ADD SWAP1 DUP2 MSTORE SWAP1 DUP12 ADD SWAP8 SWAP1 SWAP8 MSTORE PUSH1 0x60 DUP11 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH1 0x80 DUP10 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xA0 DUP9 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xC0 DUP8 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP7 ADD MSTORE PUSH2 0x100 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP3 SWAP2 DUP3 SWAP1 PUSH2 0x120 DUP3 ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 DUP4 MSTORE PUSH16 0x71727DE22E5E9D8BAF0EDAC6F37DA032 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x15CA DUP2 PUSH1 0x60 DUP2 ADD PUSH2 0x225 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x1277 PUSH1 0xFF SWAP2 PUSH1 0x40 MLOAD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x20 DUP2 MSTORE PUSH2 0x233 PUSH1 0x40 DUP3 PUSH2 0x44F JUMP JUMPDEST PUSH2 0x15FE PUSH2 0x1B63 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 PUSH1 0x20 DUP2 MLOAD SWAP2 ADD KECCAK256 PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP3 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP5 MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH2 0x15CA PUSH1 0xC0 DUP3 PUSH2 0x44F JUMP JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR PUSH4 0xBC197C81 DUP2 EQ PUSH4 0xF23A6E61 DUP3 EQ OR PUSH4 0x150B7A02 DUP3 EQ OR PUSH2 0x168E JUMPI PUSH4 0x3C10B94E PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x1C REVERT JUMPDEST PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x3C RETURN JUMPDEST PUSH2 0x16A0 CALLER PUSH2 0x15D0 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x16BB JUMPI JUMPDEST PUSH2 0x484 JUMPI PUSH3 0x82B429 PUSH1 0xE8 SHL PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST POP ADDRESS CALLER EQ PUSH2 0x16A7 JUMP JUMPDEST DUP2 DUP2 LT PUSH2 0x16CF JUMPI POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x16C4 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x1F DUP2 GT PUSH2 0x16EA JUMPI POP POP POP JUMP JUMPDEST PUSH2 0x484 SWAP3 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x20 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP4 ADD SWAP4 LT PUSH2 0x1716 JUMPI JUMPDEST PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP1 PUSH2 0x16C4 JUMP JUMPDEST SWAP1 SWAP2 POP DUP2 SWAP1 PUSH2 0x1709 JUMP JUMPDEST PUSH2 0x1729 DUP2 PUSH2 0x126C JUMP JUMPDEST PUSH2 0x1897 JUMPI PUSH2 0x1736 DUP2 PUSH2 0xEC5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xFF NOT DUP3 SLOAD AND OR SWAP1 SSTORE DUP2 PUSH1 0x0 MSTORE PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F502 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x470 JUMPI PUSH2 0x1792 DUP2 PUSH2 0x178C DUP5 SLOAD PUSH2 0x1359 JUMP JUMPDEST DUP5 PUSH2 0x16DB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 EQ PUSH2 0x1806 JUMPI SWAP2 PUSH2 0x17E7 DUP3 PUSH32 0x38109EDC26E166B5579352CE56A50813177EB25208FD90D61F2F378386220220 SWAP6 SWAP4 PUSH2 0x17F6 SWAP6 PUSH1 0x0 SWAP2 PUSH2 0x17FB JUMPI JUMPDEST POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH1 0x0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR SWAP1 JUMP JUMPDEST SWAP1 SSTORE JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xA56 JUMP JUMPDEST SUB SWAP1 LOG2 JUMP JUMPDEST SWAP1 POP DUP5 ADD MLOAD CODESIZE PUSH2 0x17D3 JUMP JUMPDEST PUSH1 0x1F NOT DUP3 AND SWAP1 PUSH2 0x181B DUP5 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP2 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0x187F JUMPI POP SWAP3 PUSH2 0x17F6 SWAP5 SWAP3 PUSH1 0x1 SWAP3 DUP3 PUSH32 0x38109EDC26E166B5579352CE56A50813177EB25208FD90D61F2F378386220220 SWAP9 SWAP7 LT PUSH2 0x1866 JUMPI JUMPDEST POP POP DUP2 SHL ADD SWAP1 SSTORE PUSH2 0x17EA JUMP JUMPDEST DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE CODESIZE DUP1 PUSH2 0x185A JUMP JUMPDEST SWAP2 SWAP3 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP7 DUP11 ADD MLOAD DUP2 SSTORE ADD SWAP5 ADD SWAP3 ADD PUSH2 0x181F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x468B12AD PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 DUP2 SWAP1 PUSH2 0x984 SWAP1 PUSH1 0x4 DUP4 ADD PUSH2 0xA56 JUMP JUMPDEST PUSH1 0x20 DUP2 DUP4 SUB SLT PUSH2 0x244 JUMPI DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x244 JUMPI ADD PUSH1 0x40 DUP2 DUP4 SUB SLT PUSH2 0x244 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH1 0x40 DUP4 ADD DUP4 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x470 JUMPI PUSH1 0x40 MSTORE DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI DUP2 PUSH2 0x1913 SWAP2 DUP5 ADD PUSH2 0x4D8 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI PUSH2 0x1932 SWAP3 ADD PUSH2 0x4D8 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD MLOAD SWAP1 PUSH1 0x20 DUP2 LT PUSH2 0x194E JUMPI POP SWAP1 JUMP JUMPDEST PUSH1 0x0 NOT SWAP1 PUSH1 0x20 SUB PUSH1 0x3 SHL SHL AND SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 PUSH1 0x40 SWAP2 SUB SLT PUSH2 0x244 JUMPI PUSH1 0x20 DUP3 MLOAD SWAP3 ADD MLOAD SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x244 JUMPI PUSH1 0x20 DUP2 MLOAD SWAP2 ADD SWAP1 PUSH2 0x198E DUP2 PUSH2 0x486 JUMP JUMPDEST SWAP3 PUSH2 0x199C PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x44F JUMP JUMPDEST DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0x244 JUMPI PUSH2 0x4F3 SWAP2 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0xA0E JUMP JUMPDEST PUSH1 0x20 DUP2 DUP4 SUB SLT PUSH2 0x244 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x244 JUMPI ADD SWAP1 PUSH1 0xC0 DUP3 DUP3 SUB SLT PUSH2 0x244 JUMPI PUSH2 0x19E4 PUSH2 0x475 JUMP JUMPDEST SWAP2 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI DUP3 PUSH2 0x1A01 SWAP2 DUP4 ADD PUSH2 0x1973 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI PUSH1 0xA0 SWAP3 PUSH2 0x1A24 SWAP2 DUP4 ADD PUSH2 0x1973 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE ADD MLOAD PUSH1 0xA0 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP1 PUSH2 0x1A60 SWAP2 DUP2 ADD SWAP1 PUSH2 0x18B4 JUMP JUMPDEST SWAP1 DUP2 MLOAD SWAP2 PUSH2 0x1A70 PUSH2 0xAE0 DUP5 PUSH2 0x126C JUMP JUMPDEST PUSH2 0x1B3A JUMPI PUSH1 0x20 DUP4 MLOAD EQ PUSH2 0x1AF1 JUMPI DUP3 MLOAD SWAP4 PUSH1 0x40 DUP6 EQ PUSH2 0x1AA3 JUMPI PUSH1 0x40 MLOAD PUSH4 0x27755B91 PUSH1 0xE1 SHL DUP2 MSTORE DUP1 PUSH2 0x984 DUP7 PUSH1 0x4 DUP4 ADD PUSH2 0xA56 JUMP JUMPDEST PUSH2 0x225 PUSH2 0x1AEC PUSH2 0x1AD7 PUSH2 0x1AC3 DUP8 PUSH1 0x20 DUP1 DUP1 SWAP10 SWAP12 PUSH2 0x4F3 SWAP12 ADD ADD SWAP2 ADD PUSH2 0x195D JUMP JUMPDEST SWAP7 SWAP1 SWAP6 ADD MLOAD PUSH1 0x20 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x19B5 JUMP JUMPDEST SWAP3 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST PUSH2 0x1FD6 JUMP JUMPDEST SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x1B07 DUP6 PUSH2 0x193A JUMP JUMPDEST GT PUSH2 0x1B1F JUMPI PUSH1 0x20 DUP1 PUSH2 0x4F3 SWAP5 SWAP6 ADD MLOAD SWAP3 ADD MLOAD SWAP2 PUSH2 0x1E49 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xBFF1AC65 PUSH1 0xE0 SHL DUP2 MSTORE DUP1 PUSH2 0x984 DUP7 PUSH1 0x4 DUP4 ADD PUSH2 0xA56 JUMP JUMPDEST POP SWAP2 POP POP PUSH1 0x0 SWAP1 JUMP JUMPDEST SWAP2 PUSH1 0x0 SWAP3 DUP4 SWAP3 PUSH1 0x20 DUP4 MLOAD SWAP4 ADD SWAP2 GAS CALL PUSH2 0x1B5A PUSH2 0x1329 JUMP JUMPDEST SWAP1 ISZERO PUSH2 0x64F JUMPI POP JUMP JUMPDEST PUSH1 0x40 SWAP1 DUP2 MLOAD PUSH2 0x1B72 DUP4 DUP3 PUSH2 0x44F JUMP JUMPDEST PUSH1 0x12 DUP2 MSTORE PUSH18 0x11DA585B9BC814DB585C9D0815D85B1B195D PUSH1 0x72 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP2 PUSH2 0x1B9E DUP2 MLOAD SWAP2 DUP3 PUSH2 0x44F JUMP JUMPDEST PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x20 SWAP4 SWAP3 DUP2 DUP5 MSTORE DUP5 DUP5 ADD CALLDATACOPY PUSH1 0x0 DUP3 DUP3 ADD DUP5 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND ADD ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 PUSH2 0x4F3 SWAP5 SWAP3 PUSH2 0x1BEE SWAP3 DUP6 MSTORE PUSH1 0x60 PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x60 DUP6 ADD SWAP2 PUSH2 0x1BAF JUMP JUMPDEST SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0xA31 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP3 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 DUP4 CALLDATACOPY DUP2 ADD PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F503 DUP2 MSTORE SUB ADD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SHL SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xFE SHL SUB DUP2 AND SUB PUSH2 0xF48 JUMPI JUMP JUMPDEST PUSH2 0x1C56 DUP2 SLOAD PUSH2 0x1359 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x1C60 JUMPI POP POP JUMP JUMPDEST DUP2 PUSH1 0x1F PUSH1 0x0 SWAP4 GT PUSH1 0x1 EQ PUSH2 0x1C72 JUMPI POP SSTORE JUMP JUMPDEST DUP2 DUP4 MSTORE PUSH1 0x20 DUP4 KECCAK256 PUSH2 0x1C8E SWAP2 PUSH1 0x1F ADD PUSH1 0x5 SHR DUP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x16C4 JUMP JUMPDEST DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 SWAP1 DUP2 SLOAD DUP4 PUSH1 0x1 SHL SWAP1 DUP5 NOT DUP6 PUSH1 0x3 SHL SHR NOT AND OR SWAP1 SSTORE SSTORE JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x4F3 SWAP4 DUP2 DUP2 MSTORE ADD SWAP2 PUSH2 0x1BAF JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x1CC8 DUP4 PUSH2 0x1393 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x1DBE JUMPI DUP1 MLOAD PUSH1 0x20 DUP3 ADD KECCAK256 PUSH2 0x1CE1 CALLDATASIZE DUP6 DUP6 PUSH2 0x4A1 JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD KECCAK256 SUB PUSH2 0x1D9F JUMPI POP SWAP1 DUP2 PUSH2 0x1D28 PUSH2 0x1D1E DUP4 PUSH32 0xCF95BBFE6F870F8CC40482DC3DCCDAFD268F0E9CE0A4F24EA1BEA9BE64E505FF SWAP6 PUSH2 0x1BFC JUMP JUMPDEST DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1D63 PUSH2 0x1D5E DUP6 PUSH1 0x0 MSTORE PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F502 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x1C4C JUMP JUMPDEST PUSH2 0x1D90 PUSH2 0x1D7E PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2F3F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH2 0xF79 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2F3F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST PUSH2 0x17F6 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP3 DUP4 PUSH2 0x1CAC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x781F2E39 PUSH1 0xE0 SHL DUP2 MSTORE SWAP4 DUP5 SWAP4 PUSH2 0x984 SWAP4 SWAP1 SWAP2 PUSH1 0x4 DUP7 ADD PUSH2 0x1BD0 JUMP JUMPDEST PUSH4 0x340C473D PUSH1 0xE1 SHL PUSH1 0x0 MSTORE PUSH1 0x4 DUP5 SWAP1 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1DDC PUSH2 0x15F6 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP2 PUSH32 0x37F248F492286AB572E2A1EE0BD5315F2AAE54A08B5871B294D657F3A1F1D007 DUP4 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x40 DUP2 MSTORE PUSH2 0x1E1C PUSH1 0x60 DUP3 PUSH2 0x44F JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP3 PUSH2 0x1901 PUSH1 0xF0 SHL DUP5 MSTORE PUSH1 0x22 DUP4 ADD MSTORE PUSH1 0x42 DUP3 ADD MSTORE PUSH1 0x42 DUP2 MSTORE PUSH2 0x15CA PUSH1 0x62 DUP3 PUSH2 0x44F JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ISZERO PUSH2 0x1F33 JUMPI PUSH1 0x40 MLOAD SWAP3 PUSH1 0x4 DUP5 ADD SWAP5 PUSH1 0x24 DUP6 ADD SWAP6 PUSH1 0x44 DUP7 ADD SWAP3 DUP6 EXTCODESIZE ISZERO PUSH2 0x1EB3 JUMPI POP SWAP2 DUP7 SWAP4 SWAP2 PUSH1 0x20 SWAP6 SWAP4 PUSH4 0xB135D3F PUSH1 0xE1 SHL DUP9 MSTORE MSTORE PUSH1 0x40 DUP5 MSTORE DUP2 MLOAD DUP6 ADD DUP1 SWAP3 PUSH1 0x4 GAS STATICCALL SWAP4 PUSH1 0x44 RETURNDATASIZE ADD SWAP2 GAS STATICCALL SWAP2 MLOAD PUSH4 0xB135D3F PUSH1 0xE1 SHL EQ SWAP2 AND AND SWAP1 JUMP JUMPDEST SWAP8 SWAP7 POP POP SWAP1 POP DUP2 MLOAD DUP1 PUSH1 0x40 EQ PUSH2 0x1F0E JUMPI PUSH1 0x41 EQ PUSH2 0x1ED0 JUMPI POP POP POP POP JUMP JUMPDEST PUSH1 0x20 SWAP3 SWAP4 SWAP6 POP PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x0 BYTE DUP4 MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 MSTORE JUMPDEST PUSH1 0x0 MSTORE ADD MLOAD PUSH1 0x40 MSTORE PUSH1 0x20 PUSH1 0x1 PUSH1 0x80 PUSH1 0x0 DUP3 GAS STATICCALL MLOAD XOR PUSH1 0x60 SHL RETURNDATASIZE GT SWAP2 PUSH1 0x0 PUSH1 0x60 MSTORE PUSH1 0x40 MSTORE JUMP JUMPDEST POP PUSH1 0x20 SWAP3 SWAP4 SWAP6 POP PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x1B DUP2 PUSH1 0xFF SHR ADD DUP5 MSTORE PUSH1 0x1 DUP1 PUSH1 0xFF SHL SUB AND PUSH1 0x60 MSTORE PUSH2 0x1EE9 JUMP JUMPDEST POP POP POP POP PUSH1 0x0 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x484 PUSH1 0x1 PUSH1 0x2D PUSH1 0x40 MLOAD DUP1 SWAP6 PUSH13 0x1131B430B63632B733B2911D11 PUSH1 0x99 SHL PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x1F72 DUP2 MLOAD DUP1 SWAP3 PUSH1 0x20 DUP7 DUP7 ADD SWAP2 ADD PUSH2 0xA0E JUMP JUMPDEST DUP2 ADD PUSH1 0x11 PUSH1 0xF9 SHL DUP4 DUP3 ADD MSTORE SUB ADD PUSH1 0x1E NOT DUP2 ADD DUP6 MSTORE ADD DUP4 PUSH2 0x44F JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 LT ISZERO PUSH2 0x1110 JUMPI PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP2 SWAP1 PUSH2 0x1FBF DUP5 SWAP3 DUP3 DUP2 MLOAD SWAP5 DUP6 SWAP3 ADD PUSH2 0xA0E JUMP JUMPDEST ADD SWAP1 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x244 JUMPI MLOAD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP1 PUSH1 0x0 SWAP4 PUSH1 0xA0 DUP3 ADD SWAP5 DUP6 MLOAD PUSH32 0x7FFFFFFF800000007FFFFFFFFFFFFFFFDE737D56D38BCF4279DCE5617E3192A8 LT PUSH2 0x21B3 JUMPI PUSH1 0x20 DUP4 ADD SWAP2 PUSH32 0xFF1A2A9176D650E4A99DEDB58F1793003935130579FE17B5A3F698AC5B00E634 PUSH2 0x2048 DUP5 MLOAD PUSH1 0x60 DUP8 ADD MLOAD PUSH2 0x2042 DUP2 PUSH2 0x12B7 JUMP JUMPDEST SWAP2 PUSH2 0x2340 JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD KECCAK256 SUB PUSH2 0x21BC JUMPI PUSH2 0x2060 PUSH2 0x2065 SWAP2 PUSH2 0x21C6 JUMP JUMPDEST PUSH2 0x1F3C JUMP JUMPDEST PUSH2 0x207A DUP4 MLOAD PUSH1 0x40 DUP7 ADD MLOAD PUSH2 0x2042 DUP5 MLOAD DUP3 PUSH2 0x12D3 JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 PUSH1 0x20 DUP2 MLOAD SWAP2 ADD KECCAK256 SUB PUSH2 0x21B3 JUMPI PUSH1 0x1 PUSH1 0xF8 SHL PUSH1 0x1 PUSH1 0xF8 SHL PUSH2 0x20B3 PUSH2 0x20A5 DUP7 MLOAD PUSH2 0x1F8D JUMP JUMPDEST MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 JUMP JUMPDEST AND SUB PUSH2 0x21B3 JUMPI PUSH2 0x20D0 PUSH1 0x20 SWAP3 PUSH1 0x0 SWAP3 POP MLOAD PUSH1 0x40 MLOAD SWAP2 DUP3 DUP1 SWAP3 PUSH2 0xEAE JUMP JUMPDEST SUB SWAP1 PUSH1 0x2 GAS STATICCALL ISZERO PUSH2 0x21AE JUMPI PUSH1 0x20 PUSH1 0x0 PUSH2 0x2106 DUP2 MLOAD PUSH2 0x20FA DUP6 MLOAD PUSH2 0x225 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 DUP9 DUP5 ADD PUSH2 0x1FA9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 DUP1 SWAP3 PUSH2 0xEAE JUMP JUMPDEST SUB SWAP1 PUSH1 0x2 GAS STATICCALL ISZERO PUSH2 0x21AE JUMPI PUSH1 0x80 PUSH1 0x0 MLOAD SWAP2 ADD SWAP4 PUSH1 0x0 DUP1 DUP7 MLOAD DUP6 PUSH2 0x2159 DUP6 MLOAD PUSH2 0x225 DUP11 PUSH1 0x40 MLOAD SWAP5 DUP6 SWAP4 PUSH1 0x20 DUP6 ADD SWAP8 DUP13 DUP10 SWAP2 SWAP3 PUSH1 0x80 SWAP4 SWAP7 SWAP6 SWAP5 SWAP2 SWAP7 PUSH1 0xA0 DUP5 ADD SWAP8 DUP5 MSTORE PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x100 GAS STATICCALL SWAP5 PUSH2 0x2169 PUSH2 0x1329 JUMP JUMPDEST DUP1 MLOAD SWAP7 DUP1 PUSH2 0x21A5 JUMPI JUMPDEST PUSH2 0x2185 JUMPI POP PUSH2 0x4F3 SWAP6 POP MLOAD SWAP1 MLOAD SWAP2 PUSH2 0x222D JUMP JUMPDEST PUSH1 0x1 SWAP7 PUSH2 0x21A1 SWAP7 POP DUP2 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP6 POP ADD SWAP3 POP PUSH2 0x1FC7 SWAP2 POP POP JUMP JUMPDEST EQ SWAP1 JUMP JUMPDEST POP DUP7 ISZERO ISZERO PUSH2 0x2172 JUMP JUMPDEST PUSH2 0x1F9D JUMP JUMPDEST SWAP5 POP POP POP POP POP SWAP1 JUMP JUMPDEST POP SWAP5 POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4F3 SWAP2 PUSH2 0x21D8 PUSH1 0x60 DUP4 PUSH2 0x44F JUMP JUMPDEST PUSH1 0x40 DUP3 MSTORE PUSH32 0x4142434445464748494A4B4C4D4E4F505152535455565758595A616263646566 PUSH1 0x20 DUP4 ADD MSTORE PUSH32 0x6768696A6B6C6D6E6F707172737475767778797A303132333435363738392D5F PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x23EC JUMP JUMPDEST SWAP4 SWAP2 SWAP1 SWAP3 SWAP4 DUP4 ISZERO DUP1 ISZERO PUSH2 0x231D JUMPI JUMPDEST DUP1 ISZERO PUSH2 0x2315 JUMPI JUMPDEST DUP1 ISZERO PUSH2 0x22FD JUMPI JUMPDEST PUSH2 0x22F3 JUMPI PUSH2 0x2257 DUP4 DUP7 PUSH2 0x2494 JUMP JUMPDEST ISZERO PUSH2 0x22F3 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 ADD MSTORE PUSH1 0x20 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH32 0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC63254F PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 PUSH1 0xC0 DUP2 PUSH1 0x5 PUSH1 0x0 NOT STATICCALL ISZERO PUSH2 0x244 JUMPI PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP5 PUSH2 0x22ED SWAP4 DUP7 PUSH2 0x22E7 SWAP5 MLOAD DUP2 DUP2 DUP10 MULMOD SWAP5 MULMOD SWAP2 PUSH2 0x256F JUMP JUMPDEST SWAP2 PUSH2 0xF20 JUMP JUMPDEST SWAP1 ADDMOD ISZERO SWAP1 JUMP JUMPDEST POP POP POP POP POP PUSH1 0x0 SWAP1 JUMP JUMPDEST POP PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 LT ISZERO PUSH2 0x2249 JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0x2242 JUMP JUMPDEST POP PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 LT ISZERO PUSH2 0x223B JUMP JUMPDEST DUP2 PUSH1 0x40 MLOAD SWAP2 DUP3 CALLDATACOPY KECCAK256 SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 SWAP5 SWAP4 SWAP3 SWAP1 DUP4 DUP2 GT ISZERO PUSH2 0x23B2 JUMPI JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x23AA JUMPI JUMPDEST POP DUP3 DUP2 LT PUSH2 0x2367 JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP5 POP SWAP2 DUP3 SWAP1 SUB SWAP2 ADD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND JUMPDEST DUP2 DUP2 ADD MLOAD DUP6 DUP3 ADD MSTORE PUSH1 0x1F NOT ADD SWAP1 DUP2 ISZERO PUSH2 0x2394 JUMPI SWAP1 PUSH2 0x237B JUMP JUMPDEST POP POP PUSH1 0x40 DUP2 DUP5 ADD PUSH1 0x0 PUSH1 0x20 DUP3 ADD MSTORE ADD PUSH1 0x40 MSTORE DUP3 MSTORE JUMP JUMPDEST SWAP1 POP CODESIZE PUSH2 0x235A JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x2351 JUMP JUMPDEST SWAP1 PUSH2 0x23C4 DUP3 PUSH2 0x486 JUMP JUMPDEST PUSH2 0x23D1 PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x44F JUMP JUMPDEST DUP3 DUP2 MSTORE DUP1 SWAP3 PUSH2 0x23E2 PUSH1 0x1F NOT SWAP2 PUSH2 0x486 JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST SWAP1 DUP2 MLOAD ISZERO PUSH2 0x248A JUMPI SWAP1 PUSH2 0x2419 PUSH2 0x2414 PUSH2 0x240D PUSH2 0x2408 DUP5 MLOAD PUSH2 0x1C34 JUMP JUMPDEST PUSH2 0x12C5 JUMP JUMPDEST PUSH1 0x3 SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH2 0x23BA JUMP JUMPDEST SWAP2 PUSH1 0x20 DUP4 ADD SWAP1 DUP3 DUP1 MLOAD ADD SWAP1 PUSH1 0x20 DUP3 ADD SWAP3 DUP4 MLOAD SWAP5 PUSH1 0x0 DUP6 MSTORE JUMPDEST DUP4 DUP2 LT PUSH2 0x2440 JUMPI POP POP POP POP MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x4 SWAP2 ADD SWAP2 PUSH1 0x1 PUSH1 0x3F DUP5 MLOAD DUP3 DUP3 DUP3 PUSH1 0x12 SHR AND DUP9 ADD ADD MLOAD DUP5 MSTORE8 DUP3 DUP3 DUP3 PUSH1 0xC SHR AND DUP9 ADD ADD MLOAD DUP4 DUP6 ADD MSTORE8 DUP3 DUP3 DUP3 PUSH1 0x6 SHR AND DUP9 ADD ADD MLOAD PUSH1 0x2 DUP6 ADD MSTORE8 AND DUP6 ADD ADD MLOAD PUSH1 0x3 DUP3 ADD MSTORE8 ADD SWAP1 PUSH2 0x2431 JUMP JUMPDEST POP POP PUSH2 0x4F3 PUSH2 0x1314 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP2 LT DUP1 ISZERO SWAP1 PUSH2 0x2557 JUMPI JUMPDEST DUP1 ISZERO PUSH2 0x2546 JUMPI JUMPDEST PUSH2 0x253F JUMPI PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 PUSH32 0x5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B SWAP1 DUP3 SWAP1 DUP2 PUSH32 0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC DUP3 MULMOD SWAP1 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP2 DUP2 DUP1 MULMOD MULMOD ADDMOD ADDMOD SWAP1 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP1 MULMOD EQ SWAP1 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP1 JUMP JUMPDEST POP DUP1 ISZERO DUP1 ISZERO PUSH2 0x24B4 JUMPI POP DUP2 ISZERO PUSH2 0x24B4 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP3 LT ISZERO PUSH2 0x24AD JUMP JUMPDEST SWAP1 SWAP3 PUSH1 0x0 SWAP3 SWAP1 DUP4 PUSH1 0xFF DUP2 DUP5 ISZERO DUP1 PUSH2 0x2B66 JUMPI JUMPDEST PUSH2 0x2B5B JUMPI PUSH2 0x258F DUP9 DUP8 PUSH2 0x2B6E JUMP JUMPDEST SWAP3 SWAP1 SWAP2 DUP3 ISZERO DUP1 PUSH2 0x2B53 JUMPI JUMPDEST PUSH2 0x2B18 JUMPI JUMPDEST POP DUP6 DUP2 SHR PUSH1 0x2 DUP7 PUSH1 0xFE SHR AND ADD JUMPDEST ISZERO PUSH2 0x2AFF JUMPI PUSH1 0x1 DUP7 DUP3 SHR AND PUSH1 0x2 DUP7 DUP4 SHR PUSH1 0x1 SHL AND ADD PUSH1 0x1 DUP2 EQ PUSH2 0x2AB4 JUMPI JUMPDEST PUSH1 0x2 DUP2 EQ PUSH2 0x2AA7 JUMPI JUMPDEST PUSH1 0x3 EQ PUSH2 0x2A9A JUMPI JUMPDEST PUSH1 0x1 SWAP9 PUSH1 0x0 NOT SWAP2 SWAP1 SWAP2 ADD SWAP7 SWAP5 SWAP6 SWAP5 DUP10 SWAP5 SWAP4 SWAP3 SWAP2 JUMPDEST DUP9 PUSH1 0x0 NOT GT PUSH2 0x266D JUMPI POP POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD SWAP2 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x20 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MSTORE PUSH1 0x20 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x2 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH1 0x60 SHL SUB PUSH1 0x60 SHL NOT PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 PUSH1 0xC0 DUP2 PUSH1 0x5 PUSH1 0x0 NOT STATICCALL ISZERO PUSH2 0x244 JUMPI SWAP1 MLOAD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 MULMOD SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 SWAP7 SWAP8 SWAP9 PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH1 0x60 SHL SUB PUSH1 0x60 SHL NOT DUP7 PUSH1 0x2 MULMOD SWAP1 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP3 DUP1 MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP2 DUP4 MULMOD SWAP3 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP3 SWAP1 MULMOD SWAP2 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP2 SWAP1 DUP16 DUP3 DUP2 DUP4 ADDMOD SWAP2 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 DUP3 SUB SWAP1 ADDMOD MULMOD PUSH1 0x3 MULMOD SWAP9 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP4 MULMOD SWAP13 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 MULMOD SWAP2 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP1 DUP3 PUSH1 0x2 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP12 DUP1 MULMOD ADDMOD SWAP9 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 DUP3 SWAP1 DUP2 SUB DUP12 ADDMOD SWAP1 MULMOD SWAP7 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP9 SWAP1 DUP3 SWAP1 DUP5 MULMOD ADDMOD SWAP7 DUP12 PUSH1 0x2 DUP13 PUSH1 0x1 DUP14 DUP5 SHR AND SWAP3 SHR PUSH1 0x1 SHL AND ADD DUP1 ISZERO PUSH2 0x2A7D JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x2A32 JUMPI JUMPDEST PUSH1 0x2 DUP2 EQ PUSH2 0x2A27 JUMPI JUMPDEST PUSH1 0x3 EQ PUSH2 0x2A1E JUMPI JUMPDEST DUP3 ISZERO PUSH2 0x2A0B JUMPI PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP9 SWAP1 DUP3 SWAP1 DUP16 SWAP1 MULMOD ADDMOD SWAP1 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP10 DUP3 SUB SWAP1 DUP3 SWAP1 DUP6 SWAP1 MULMOD ADDMOD SWAP8 DUP2 ISZERO PUSH2 0x28D1 JUMPI JUMPDEST PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP10 DUP1 MULMOD SWAP9 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP11 MULMOD SWAP3 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP11 SWAP1 MULMOD SWAP13 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP5 SWAP1 MULMOD SWAP9 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP1 DUP3 PUSH1 0x2 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP6 DUP2 SUB DUP2 DUP7 DUP1 MULMOD ADDMOD ADDMOD SWAP8 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP4 DUP5 SWAP2 MULMOD SWAP2 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 DUP3 SWAP1 DUP11 DUP3 SUB SWAP1 ADDMOD MULMOD ADDMOD SWAP5 SWAP9 JUMPDEST PUSH1 0x0 NOT ADD SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x25EF JUMP JUMPDEST DUP9 PUSH2 0x27F4 JUMPI SWAP11 SWAP2 SWAP8 POP SWAP1 SWAP6 SWAP1 POP PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP2 PUSH1 0x2 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT MULMOD SWAP11 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP13 DUP1 MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP2 DUP14 MULMOD SWAP13 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP3 SWAP1 MULMOD SWAP12 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP2 DUP12 DUP2 SUB DUP3 ADDMOD SWAP1 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP13 SWAP1 ADDMOD MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 PUSH1 0x3 MULMOD SWAP2 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP14 MULMOD SWAP9 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 MULMOD SWAP12 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP1 DUP3 PUSH1 0x2 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP5 DUP1 MULMOD ADDMOD SWAP12 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP4 DUP5 SWAP2 MULMOD SWAP2 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 DUP3 SWAP1 DUP15 DUP3 SUB SWAP1 ADDMOD SWAP1 MULMOD ADDMOD SWAP5 PUSH2 0x28C0 JUMP JUMPDEST PUSH1 0x1 SWAP13 POP SWAP1 SWAP11 DUP13 SWAP9 POP SWAP1 SWAP7 POP SWAP1 POP PUSH2 0x28C0 JUMP JUMPDEST POP POP DUP4 DUP6 PUSH2 0x27B3 JUMP JUMPDEST DUP6 SWAP3 POP DUP5 SWAP2 POP PUSH2 0x27AB JUMP JUMPDEST PUSH32 0x6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296 SWAP3 POP PUSH32 0x4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5 SWAP2 POP PUSH2 0x27A2 JUMP JUMPDEST POP POP POP SWAP10 SWAP6 SWAP9 SWAP5 PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH1 0x60 SHL SUB PUSH1 0x60 SHL NOT SUB SWAP5 PUSH2 0x28C0 JUMP JUMPDEST SWAP3 POP DUP1 SWAP7 POP SWAP6 DUP2 SWAP3 PUSH2 0x25DB JUMP JUMPDEST SWAP7 SWAP8 POP DUP8 SWAP7 DUP10 SWAP5 POP PUSH2 0x25D3 JUMP JUMPDEST PUSH32 0x6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296 SWAP9 POP PUSH32 0x4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5 SWAP5 POP PUSH2 0x25CA JUMP JUMPDEST PUSH1 0x0 NOT ADD PUSH1 0x1 DUP7 DUP3 SHR AND PUSH1 0x2 DUP7 DUP4 SHR PUSH1 0x1 SHL AND ADD PUSH2 0x25AC JUMP JUMPDEST SWAP5 SWAP6 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 SWAP7 DUP3 SUB SWAP1 ADDMOD SWAP5 DUP5 DUP7 ISZERO DUP1 PUSH2 0x2B4B JUMPI JUMPDEST ISZERO PUSH2 0x259F JUMPI SWAP9 POP POP POP POP POP POP POP POP POP SWAP1 JUMP JUMPDEST POP PUSH1 0x1 PUSH2 0x2B39 JUMP JUMPDEST POP DUP4 ISZERO PUSH2 0x259A JUMP JUMPDEST SWAP7 POP POP POP POP POP POP POP SWAP1 JUMP JUMPDEST POP DUP4 ISZERO PUSH2 0x2581 JUMP JUMPDEST SWAP2 SWAP1 PUSH32 0x6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296 PUSH32 0x4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5 SWAP2 DUP1 ISZERO PUSH2 0x2D22 JUMPI DUP5 PUSH2 0xC5A SWAP5 SWAP6 DUP4 EQ DUP1 PUSH2 0x2D19 JUMPI JUMPDEST ISZERO PUSH2 0x2D04 JUMPI POP PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 POP DUP3 PUSH1 0x2 MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP2 DUP1 MULMOD SWAP3 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP5 DUP5 MULMOD SWAP2 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP6 SWAP1 MULMOD SWAP3 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP2 SWAP1 DUP2 PUSH1 0x1 DUP3 ADDMOD SWAP1 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 PUSH32 0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFE SWAP1 ADDMOD MULMOD PUSH1 0x3 MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP1 DUP5 PUSH1 0x2 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP4 DUP1 MULMOD ADDMOD SWAP3 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT PUSH1 0x1 DUP7 MULMOD SWAP6 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 PUSH1 0x1 SWAP1 MULMOD SWAP5 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP4 DUP5 SWAP2 MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP2 SUB SWAP3 SWAP1 SWAP2 DUP3 SWAP1 DUP7 DUP3 SUB SWAP1 ADDMOD SWAP1 MULMOD ADDMOD SWAP1 PUSH2 0x2E44 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 PUSH2 0x2D10 SWAP4 PUSH2 0x2D28 JUMP JUMPDEST SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0x2E44 JUMP JUMPDEST POP DUP2 DUP5 EQ PUSH2 0x2BC7 JUMP JUMPDEST POP SWAP3 POP SWAP1 JUMP JUMPDEST SWAP2 SWAP4 SWAP1 DUP1 ISZERO PUSH2 0x2E3B JUMPI PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP2 SUB SWAP4 DUP5 SWAP1 DUP3 SWAP1 PUSH1 0x1 SWAP1 MULMOD ADDMOD SWAP4 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP4 DUP3 SUB SWAP1 DUP3 SWAP1 PUSH1 0x1 SWAP1 MULMOD ADDMOD SWAP3 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP5 DUP1 MULMOD SWAP4 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP6 MULMOD SWAP3 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP6 SWAP1 MULMOD SWAP5 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP1 DUP8 PUSH1 0x2 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP7 DUP2 SUB DUP2 DUP6 DUP1 MULMOD ADDMOD ADDMOD SWAP6 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP3 DUP4 SWAP1 DUP7 SWAP1 MULMOD SWAP2 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 DUP3 SWAP1 DUP10 DUP3 SUB SWAP1 ADDMOD MULMOD ADDMOD SWAP3 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 PUSH1 0x1 MULMOD SWAP2 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 PUSH1 0x1 MULMOD SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP2 POP DUP2 SWAP1 JUMP JUMPDEST SWAP2 SWAP1 SWAP3 PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MSTORE PUSH1 0x20 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH1 0x60 SHL SUB PUSH1 0x60 SHL NOT PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x20 DUP2 PUSH1 0xC0 DUP2 PUSH1 0x5 PUSH1 0x0 NOT STATICCALL ISZERO PUSH2 0x244 JUMPI MLOAD SWAP3 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP5 SWAP1 MULMOD SWAP3 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 SWAP1 DUP3 SWAP1 DUP1 MULMOD SWAP1 MULMOD SWAP2 JUMP INVALID MOD 0x27 0xF7 0x2A CREATE 0xE6 DELEGATECALL SLT NOT JUMPDEST 0xD DUP11 0xCB 0xE4 CODESIZE 0xB2 DUP1 SWAP1 0xDD SLOAD JUMPDEST PUSH30 0x2331FCCF77723561F500FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAAD 0xA7 OR SWAP15 DUP5 RETURN 0xB9 0xCA 0xC2 0xFC PUSH4 0x25513608 SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC0627F72AF0E6F412195B0D DUP11 0xCB 0xE4 CODESIZE 0xB2 DUP1 SWAP1 0xDD SLOAD JUMPDEST PUSH30 0x2331FCCF77723561F501A2646970667358221220890C9D20B5FC4DF99BDE 0xD2 SLOAD BLOBHASH SLT ISZERO DUP11 SAR SWAP4 EXTCODEHASH AND DUP15 0x2E DUP5 RETURNDATASIZE 0xC BYTE ISZERO LOG2 SELFDESTRUCT ORIGIN 0xCE DUP13 PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ", + "sourceMap": "1195:14720:16:-:0;;;;;;;;;-1:-1:-1;1195:14720:16;1266:232:7;1195:14720:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;1195:14720:16;;;;;;;;;6785:16:18;1195:14720:16;;;6785:16:18;1195:14720:16;;6785:16:18;;;;;;1195:14720:16;;;;;;;;;;;;;;;6785:16:18;;;;;;;;;;:::i;:::-;1195:14720:16;:::i;:::-;;;;;;;;;;;;-1:-1:-1;1195:14720:16;;;;;;;;-1:-1:-1;;1195:14720:16;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;:::o;:::-;;;;;;-1:-1:-1;;1195:14720:16;;;;4296:42:18;1195:14720:16;;;;;:::i;:::-;4008:70:18;;:::i;:::-;1195:14720:16;;;;;;;;;;4277:17:18;;1195:14720:16;;4277:17:18;;;1195:14720:16;4277:17:18;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1195:14720:16;4296:42:18;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1195:14720:16;4296:42:18;:::i;:::-;1195:14720:16;;;;;;;;;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;1195:14720:16;;;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;-1:-1:-1;;;;;;1195:14720:16;;;;;;;;;;;;-1:-1:-1;;1195:14720:16;;;;;;;437:10:14;1195:14720:16;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;1195:14720:16;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;3825:10:16;:26;3821:78;;7285:1698;;;1195:14720;7285:1698;;:::i;:::-;4845:275;;;1195:14720;-1:-1:-1;1195:14720:16;;;;;;;;;;;;;;;;;4845:275;-1:-1:-1;4845:275:16;;;;3825:10;;4845:275;;;;;;3821:78;3874:14;;;-1:-1:-1;3874:14:16;1195:14720;-1:-1:-1;3874:14:16;1195:14720;;;;;;;;;;;;;;;6785:16:18;;1195:14720:16;;;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;:::i;:::-;:::o;:::-;-1:-1:-1;;;;;1195:14720:16;;;;;;-1:-1:-1;;1195:14720:16;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;1195:14720:16;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;-1:-1:-1;;1195:14720:16;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;1195:14720:16;;;;4630:42:18;1195:14720:16;;4612:16:18;1195:14720:16;;4008:70:18;;:::i;:::-;1195:14720:16;;;;4612:16:18;;1195:14720:16;;;;;;;;;;;;;;4612:16:18;1195:14720:16;;;;-1:-1:-1;;1195:14720:16;;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;-1:-1:-1;1195:14720:16;;;;;;;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;3825:10;11195:42;3825:10;:26;3821:78;;-1:-1:-1;9796:3:16;9778:16;;;;;;-1:-1:-1;1195:14720:16;;;;;;;;:::i;:::-;9877:12;;;;:::i;:::-;9908:34;;;:::i;:::-;9907:35;9903:109;;1195:14720;;;;;;;;:::i;:::-;13525:31;;;;;10040:4;;13525:31;;;;:::i;:::-;13570:8;;13566:133;;9796:3;1195:14720;;9767:9;;13566:133;13525:31;13594:95;;;;;9903:109;-1:-1:-1;;;9969:28:16;;-1:-1:-1;;;;;;1195:14720:16;;;;9969:28;;1195:14720;;;;:::i;:::-;4078:10;11195:42;4078:10;:26;4074:70;;1195:14720;-1:-1:-1;10886:16:16;;;;;;1195:14720;10904:3;10929:8;10923:53;10929:8;1195:14720;10929:8;;;;:::i;:::-;1195:14720;;;;:::i;:::-;10946:14;:8;;;;;:::i;:::-;:14;1195:14720;;10962:13;:8;;;;;:::i;:::-;:13;;;;;:::i;:::-;1195:14720;;;:::i;:::-;10923:53;;:::i;:::-;1195:14720;10875:9;;4074:70;;;:::i;:::-;;;1195:14720;;;;;;-1:-1:-1;;1195:14720:16;;;;;-1:-1:-1;;;;;;;;;;;1195:14720:16;;;;;;;;;;-1:-1:-1;;1195:14720:16;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;;;:::i;:::-;3080:19:8;;2661:6;2687:4;2661:32;3076:57;;4008:70:18;;:::i;:::-;1195:14720:16;;;;;3828:1370:13;;-1:-1:-1;3828:1370:13;;;;-1:-1:-1;;;;;;;;;;;1195:14720:16;3828:1370:13;1195:14720:16;3828:1370:13;;;;;;;;;;-1:-1:-1;3828:1370:13;;;;-1:-1:-1;;;;;;;;;;;3828:1370:13;;;1195:14720:16;3828:1370:13;;-1:-1:-1;3828:1370:13;1195:14720:16;3828:1370:13;;;;;;;;;;;;1195:14720:16;3828:1370:13;;-1:-1:-1;3828:1370:13;;;;;;;;;1195:14720:16;3828:1370:13;;3076:57:8;4365:120;-1:-1:-1;4365:120:8;1195:14720:16;4365:120:8;;1195:14720:16;;;;;;-1:-1:-1;;1195:14720:16;;;;2687:4:8;2661:6;:32;3340:58;;1195:14720:16;;;-1:-1:-1;;;;;;;;;;;1195:14720:16;;;;;;;;;-1:-1:-1;;1195:14720:16;;;;-1:-1:-1;;;;;;;;;;;12045:73:16;1195:14720;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1195:14720:16;5870:21;;5866:72;;1195:14720;;;;;:::i;:::-;8939:42:18;-1:-1:-1;9026:3:18;1195:14720:16;;9007:17:18;;;;;9069:2;9049:9;;;;:::i;:::-;;1195:14720:16;9049:22:18;;:48;;;9026:3;9045:128;;9069:2;9191:9;;;;:::i;:::-;;1195:14720:16;9191:22:18;:73;;;9026:3;9187:157;;9375:9;9386:17;9375:9;1195:14720:16;9375:9:18;;;:::i;:::-;;9386:17;;;;:::i;:::-;;;:::i;:::-;1195:14720:16;8996:9:18;;9187:157;9319:9;9291:38;9319:9;;;:::i;:::-;;1195:14720:16;;-1:-1:-1;;;9291:38:18;;1195:14720:16;;;;9291:38:18;;;:::i;:::-;;;;9191:73;-1:-1:-1;;;;;;9225:18:18;9233:9;;;;:::i;:::-;;9225:18;:::i;:::-;9217:47;9191:73;;9045:128;9148:9;9124:34;9148:9;;;:::i;:::-;;1195:14720:16;;-1:-1:-1;;;9124:34:18;;1195:14720:16;;;;9124:34:18;;;:::i;9049:48::-;9075:9;9095:2;9075:9;;;;:::i;:::-;;1195:14720:16;9075:22:18;;9049:48;;9007:17;9424:34;9007:17;-1:-1:-1;;;;;;;;;;;1195:14720:16;;5866:72;5914:13;;;-1:-1:-1;5914:13:16;1195:14720;-1:-1:-1;5914:13:16;1195:14720;;;;;;;;-1:-1:-1;;1195:14720:16;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;1195:14720:16;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;1195:14720:16;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;;;;;;;;;668:13:14;;;1195:14720:16;668:33:14;;;:::i;:::-;704:15;-1:-1:-1;664:157:14;;939:55;4299:17:15;855:68:14;938:56;855:68;;:::i;:::-;1195:14720:16;;;;;845:79:14;4299:17:15;:::i;:::-;979:14:14;;;;;;:::i;:::-;939:55;;:::i;:::-;938:56;;1195:14720:16;938:56:14;934:112;;-1:-1:-1;1093:11:14;1116:9;1093:11;1116:9;1093:11;;;;:::i;:::-;1116:9;;;;:::i;:::-;1195:14720:16;;668:13:14;1195:14720:16;;;;;;:::i;:::-;1093:33:14;;;;;;:::i;:::-;1140:8;;1136:117;;1195:14720:16;;668:13:14;1195:14720:16;;;;;;:::i;934:112:14:-;1017:18;;;-1:-1:-1;1017:18:14;1195:14720:16;-1:-1:-1;1017:18:14;664:157;759:33;742:68;759:33;;:::i;:::-;-1:-1:-1;;;;742:68:14;1195:14720:16;;704:15:14;1195:14720:16;;;;;742:68:14;-1:-1:-1;742:68:14;1195:14720:16;;;;;;-1:-1:-1;;1195:14720:16;;;;;;2558:23:15;;:::i;:::-;1195:14720:16;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;2601:13:15;1195:14720:16;;;;2652:4:15;1195:14720:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1195:14720:16;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1195:14720:16;;;;;;;2660:4;1195:14720;;;;;;-1:-1:-1;;1195:14720:16;;;;;;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;4008:70:18;;;:::i;:::-;5200:1;5184:12;;:::i;:::-;:17;5180:66;;5283:5;;;:::i;5180:66::-;5224:11;;;;;1195:14720:16;5224:11:18;;1195:14720:16;;;;;;-1:-1:-1;;1195:14720:16;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;1195:14720:16;;;;;;-1:-1:-1;;;;;;1195:14720:16;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;1195:14720:16;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;1195:14720:16;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;1195:14720:16;;;;;;;11195:42;1195:14720;;;;;;-1:-1:-1;;1195:14720:16;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;10519:26;1195:14720;;;;;;:::i;:::-;11195:42;4078:10;:26;4074:70;;1195:14720;;;:::i;4074:70::-;;;:::i;:::-;;;1195:14720;;;;;;;:::i;:::-;4008:70:18;;;:::i;:::-;5864:12;;:::i;:::-;5890:19;5908:1;5890:19;;5886:86;;6009:5;;;;:::i;5886:86::-;5932:29;;;;;;1195:14720:16;;;5932:29:18;;1195:14720:16;;;;;;-1:-1:-1;;1195:14720:16;;;;;4299:17:15;1195:14720:16;;4299:17:15;:::i;1195:14720:16:-;;;;;;-1:-1:-1;;1195:14720:16;;;;;-1:-1:-1;;;;;;;;;;;1195:14720:16;;;;;;;;;;;;;-1:-1:-1;;1195:14720:16;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;6751:33:18;1195:14720:16;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1195:14720:16;;-1:-1:-1;;;;;;;;;;;1195:14720:16;;;;:::o;:::-;;:::i;7950:190:18:-;-1:-1:-1;;;;;;;;;;;1195:14720:16;-1:-1:-1;;;;;;;;;;;1195:14720:16;;;;;;;;7950:190:18;:::o;1195:14720:16:-;-1:-1:-1;;1195:14720:16;;;;;;;:::o;3391:339:15:-;;4299:17;3515:69;3391:339;;4299:17;:::i;:::-;3515:69;:::i;:::-;3511:185;;-1:-1:-1;;;;;;1195:14720:16;3391:339:15:o;3511:185::-;-1:-1:-1;;;1195:14720:16;3668:17:15:o;1195:14720:16:-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;;;;;;1195:14720:16;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;;1195:14720:16;;;;;;;;;;;;;-1:-1:-1;1195:14720:16:o;:::-;;;;;;7975:1;1195:14720;;;;;;;7975:1;1195:14720;;-1:-1:-1;;1195:14720:16;;:::o;:::-;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;;1195:14720:16;;;;;;;;;;;;:::o;7285:1698::-;;7546:12;;;1195:14720;;;7586:15;;;;;;;;;:::i;:::-;-1:-1:-1;;;1195:14720:16;-1:-1:-1;;;;;;1195:14720:16;7579:23;;;:::i;:::-;1195:14720;7579:72;1195:14720;;7680:35;;;;:::i;:::-;7733:27;2660:4;7733:27;;7729:93;;7959:15;:19;:15;7948:42;7959:15;;;:::i;:::-;:19;;;:::i;:::-;7948:42;;;;:::i;:::-;8009:9;-1:-1:-1;8038:3:16;1195:14720;;8020:16;;;;;8085:8;;;;:::i;:::-;;-1:-1:-1;;;8168:53:16;8129:16;8085:8;8129:16;:::i;:::-;-1:-1:-1;;;;;;1195:14720:16;;;8168:53;;8164:462;;8038:3;;1195:14720;;8009:9;;8164:462;8292:207;;;8524:29;;8164:462;8520:87;-1:-1:-1;;;;8567:40:16;-1:-1:-1;;;;;1195:14720:16;7975:1;1195:14720;;-1:-1:-1;742:68:14;8020:16:16;;;;8851:47;8020:16;;8881;8020;7575:1198;8881:16;;;;;:::i;8851:47::-;8847:86;;8975:1;7285:1698;:::o;8847:86::-;8921:1;8914:8;:::o;7729:93::-;-1:-1:-1;;;7787:20:16;;8728;1195:14720;;-1:-1:-1;742:68:14;7575:1198:16;8674:27;;;2660:4;8674:27;;;;;8670:93;;7575:1198;;8881:16;8851:47;7575:1198;;;7052:145:18;1195:14720:16;;7052:145:18;1195:14720:16;:::i;:::-;;;7052:145:18;:::o;1195:14720:16:-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;437:10:14;1195:14720:16;;;;;;;:::o;:::-;;7261:2:20;1195:14720:16;;;;;;;:::o;:::-;;2566:1:6;1195:14720:16;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;1530:1:6;1195:14720:16;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;1195:14720:16;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;7406:149:18;-1:-1:-1;1195:14720:16;7503:38:18;1195:14720:16;;;-1:-1:-1;1195:14720:16;;;;;-1:-1:-1;1195:14720:16;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;1195:14720:16;;;;;-1:-1:-1;1195:14720:16;;-1:-1:-1;1195:14720:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12420:546;1195:14720;;;;12553:39;;;12533:59;;:132;;;;;12420:546;12533:208;;;;12420:546;12533:281;;;;12420:546;12533:358;;;;12420:546;12516:422;;;1195:14720;12420:546;:::o;12516:422::-;12923:4;12916:11;:::o;12533:358::-;-1:-1:-1;;;12830:61:16;;-1:-1:-1;12533:358:16;;;:281;-1:-1:-1;;;12757:57:16;;;-1:-1:-1;12533:281:16;;:208;-1:-1:-1;;;12681:60:16;;;-1:-1:-1;12533:208:16;;:132;-1:-1:-1;;;12608:57:16;;;-1:-1:-1;12533:132:16;;11638:202;1938:12:1;;;1195:14720:16;2342:180:1;1998:15;;;;;;:::i;:::-;2961:193:0;;1998:15:1;2961:193:0;;;;;2062:15:1;2342:180;2062:15;;;;;;:::i;:::-;2961:193:0;;1998:15:1;2961:193:0;;;;;2230:14:1;;;1195:14720:16;2177:25:1;;;1195:14720:16;2115:23:1;;;1195:14720:16;2285:39:1;2300:23;;;;2115;2300;:::i;:::-;2285:39;;:::i;:::-;1998:15;1195:14720:16;;823:61:1;;-1:-1:-1;;;;;1195:14720:16;1938:12:1;2342:180;;1195:14720:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2342:180:1;1195:14720:16;;;;;;;;2342:180:1;1195:14720:16;4962:25:1;;1998:15;1195:14720:16;;1938:12:1;11777:55:16;;1195:14720;;;11195:42;1195:14720;;;;;;;11777:55;1195:14720;;;;11777:55;1195:14720;11777:55;1195:14720;11767:66;;11638:202;:::o;6239:154:18:-;1195:14720:16;;6239:154:18;1195:14720:16;;;;;;;;;6366:19:18;;;1195:14720:16;6366:19:18;;;;1195:14720:16;6366:19:18;;:::i;4641:475:15:-;4754:23;;:::i;:::-;1195:14720:16;;;;;;4958:22:15;1195:14720:16;;;;;;4998:25:15;1195:14720:16;;4817:282:15;1195:14720:16;4817:282:15;;1195:14720:16;4845:95:15;1195:14720:16;;;;;;;;;;5041:13:15;1195:14720:16;;;;5080:4:15;1195:14720:16;;;;;4817:282:15;;;;;;:::i;1579:906:7:-;1757:663;;;;;;;;;;;;;;;;;1372:120;1757:663;1372:120;;;;1757:663;;;;;;11120:189:18;11179:26;11194:10;11179:26;:::i;:::-;:59;;;;11120:189;11175:96;;3874:14:16;;;11288::18;;;;;11179:59;11232:4;;11194:10;11210:27;11179:59;;1195:14720:16;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;1195:14720:16;;-1:-1:-1;1195:14720:16;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;1195:14720:16;;;;9704:324:18;9796:19;;;:::i;:::-;9792:51;;1195:14720:16;;;:::i;:::-;9940:4:18;1195:14720:16;;;;;;;;;;;9954:14:18;1195:14720:16;;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;9999:22:18;1195:14720:16;;9999:22:18;1195:14720:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;9999:22:18;;;;;:::i;:::-;;;;9704:324::o;1195:14720:16:-;;;;;;;;;;6785:16:18;;1195:14720:16;;;;;;;;;;;;;;;;;;;;;;;9999:22:18;1195:14720:16;;9940:4:18;1195:14720:16;;9999:22:18;1195:14720:16;;;;;;;;;;;;;;;;;;;;;;;9921:9:18;1195:14720:16;;;;;;;;;;;;;;;9940:4:18;1195:14720:16;;;;;;;;;;;;;;;9792:51:18;1195:14720:16;;-1:-1:-1;;;9824:19:18;;1195:14720:16;;;9824:19:18;;;;;;:::i;1195:14720:16:-;;;;;;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;13997:1449::-;;;;14157:41;13997:1449;14157:41;;;;:::i;:::-;14234:21;;;14349:24;14348:25;14349:24;;;:::i;14348:25::-;14344:68;;14447:2;1195:14720;;14426:23;14422:604;;1195:14720;;15040:23;15061:2;15040:23;;15036:351;;15061:2;1195:14720;-1:-1:-1;;;15404:35:16;;1195:14720;15404:35;1195:14720;15404:35;;;;:::i;15036:351::-;15308:16;;15197:61;15104:42;;14447:2;15104:42;;;;15280:96;15104:42;;;;;;:::i;:::-;15208:24;;;;;14447:2;1195:14720;;;15197:61;;;;;;:::i;:::-;1195:14720;15061:2;1195:14720;15308:16;;;14447:2;15308:16;;1195:14720;;;;;;;;15308:16;15280:96;:::i;14422:604::-;1195:14720;;;;;-1:-1:-1;;;;;14477:19:16;1195:14720;14477:19;:::i;:::-;14469:48;14465:318;;14447:2;14824:92;14937:78;14824:92;;;;14990:24;;;14937:78;;:::i;14465:318::-;1195:14720;;-1:-1:-1;;;14729:39:16;;1195:14720;14729:39;1195:14720;14729:39;;;;:::i;14344:68::-;14389:12;;;;1195:14720;14389:12;:::o;13403:302::-;;13525:31;13403:302;;;13525:31;;;;;;;;;;:::i;:::-;13570:8;;13566:133;;13403:302;:::o;15758:155::-;1195:14720;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1195:14720:16;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1195:14720:16;;;;15758:155;:::o;1195:14720::-;;;;;;;;;;;;;-1:-1:-1;1195:14720:16;;;;;;;;-1:-1:-1;;1195:14720:16;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;10808:9:18;1195:14720:16;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::o;:::-;;;-1:-1:-1;1195:14720:16;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;10367:575:18:-;;;10482:19;;;:::i;:::-;1195:14720:16;;10515:18:18;10511:52;;1195:14720:16;;;;;10577:17:18;1195:14720:16;;;;;:::i;:::-;;;;;;10598:16:18;10577:37;10573:151;;1195:14720:16;;;;;;10910:25:18;1195:14720:16;;:::i;:::-;;;-1:-1:-1;;1195:14720:16;;;;;10834:28:18;10841:21;;1195:14720:16;;10841:14:18;1195:14720:16;;;;;;;10841:21:18;10834:28;:::i;:::-;10872:22;;-1:-1:-1;;;;;;;;;;;1195:14720:16;10872:22:18;:::i;:::-;-1:-1:-1;;;;;;;;;;;1195:14720:16;;10872:22:18;10910:25;1195:14720:16;;10910:25:18;;;;;:::i;10573:151::-;1195:14720:16;;-1:-1:-1;;;10637:76:18;;1195:14720:16;;;10637:76:18;;1195:14720:16;;10637:76:18;;;;:::i;10511:52::-;-1:-1:-1;;;10532:1:18;10542:21;8728:20:16;1195:14720;;;;-1:-1:-1;742:68:14;5590:176:15;5721:17;;:::i;:::-;1195:14720:16;;;6311:35:15;;;1195:14720:16;1399:50:15;1195:14720:16;;;;;;;6311:35:15;;;;;;:::i;:::-;1195:14720:16;6301:46:15;;1195:14720:16;;5692:66:15;6311:35;5692:66;;1195:14720:16;;;;;;;;;;;;;;;5692:66:15;;;;;;:::i;1956:2062:12:-;;;1195:14720:16;;1956:2062:12;-1:-1:-1;;;;;1195:14720:16;;2118:20:12;2114:40;;2207:1805;;;;;;;;;;;;;;;;;;;;1195:14720:16;;;;;2207:1805:12;1195:14720:16;;;;;2207:1805:12;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2207:1805:12;;;;;1956:2062::o;2207:1805::-;;;;;;;;;;;;;;;1195:14720:16;;;2207:1805:12;;;;1956:2062::o;2207:1805::-;;;;;;;;;;1195:14720:16;2207:1805:12;;;;;;;;;;1195:14720:16;2207:1805:12;;;;;;;;1195:14720:16;2207:1805:12;;;;;;;;;;1195:14720:16;2207:1805:12;;;;1956:2062::o;2207:1805::-;;;;;;;;;;;;;;;;;;1195:14720:16;2207:1805:12;;;;;;;;;2114:40;2140:14;;;;1195:14720:16;2140:14:12;:::o;2643:34:20:-;;;;;1195:14720:16;;2643:34:20;;;;;;;;;1195:14720:16;;;2643:34:20;;;;;;1195:14720:16;;;:::i;:::-;;;2643:34:20;;;1195:14720:16;;;2643:34:20;;;1195:14720:16;;2643:34:20;;;;;;;:::i;:::-;1195:14720:16;;7178:27:20;2643:34;;;;;;;:::o;1986:4::-;1195:14720:16;;1986:4:20;;;;;;;;1195:14720:16;1986:4:20;;;1195:14720:16;1986:4:20;;1195:14720:16;;;;;;;;:::i;:::-;;;;;1986:4:20;;:::o;2396:14::-;;;;;;;;;1195:14720:16;2396:14:20;:::o;6711:2934::-;;;;1195:14720:16;6870:4:20;6894:14;;;1195:14720:16;;;2162:66:5;-1:-1:-1;6890:125:20;;7178:27;;;;2643:34;28057:42:11;7178:27:20;;7212:22;;;1195:14720:16;7236:27:20;;;:::i;:::-;28057:42:11;;:::i;:::-;7178:27:20;1195:14720:16;;;;7278:23:20;:46;7274:89;;7547:27;7516:64;7547:27;;:::i;:::-;7516:64;:::i;:::-;28057:42:11;7635:27:20;;7669;;;1195:14720:16;7698:54:20;1195:14720:16;;7698:54:20;;:::i;28057:42:11:-;7178:27:20;1195:14720:16;;;;7767:33:20;1195:14720:16;7178:27:20;1195:14720:16;;;;7804:28:20;7767:65;7763:108;;1195:14720:16;2643:34:20;;1195:14720:16;2643:34:20;;7987;;:30;;:34;:::i;:::-;2643;-1:-1:-1;;;;;;1195:14720:16;;2643:34:20;7987;:56;:79;7983:122;;1986:4;7178:27;8265:137;-1:-1:-1;8265:137:20;8563:27;;7669;1195:14720:16;1986:4:20;;;;;:::i;:::-;8550:42;;;;;;;;7178:27;-1:-1:-1;1986:4:20;8550:42;;8778:68;8795:30;;8778:68;7669:27;1195:14720:16;8778:68:20;;;;;;;:::i;:::-;7669:27;1195:14720:16;1986:4:20;;;;;:::i;:::-;8771:76;;8550:42;8771:76;;;;;8901:14;-1:-1:-1;8771:76:20;8901:14;;1195:14720:16;-1:-1:-1;1195:14720:16;;;;8877:61:20;1195:14720:16;;8877:61:20;1195:14720:16;7669:27:20;1195:14720:16;8877:61:20;;;7178:27;8877:61;;;;;1986:4;;;;;;;;;;;;1195:14720:16;;;1986:4:20;;;1195:14720:16;1986:4:20;;;1195:14720:16;1986:4:20;;;1195:14720:16;1986:4:20;1195:14720:16;1986:4:20;8877:61;9030:26;;2404:5;9030:26;;;;;:::i;:::-;1195:14720:16;;9491:16:20;;;;6711:2934;9487:60;;1195:14720:16;9565:73:20;1195:14720:16;;;;;9565:73:20;;:::i;9487:60::-;1776:4;;9516:26;;-1:-1:-1;9516:26:20;;7178:27;9516:26;;;;-1:-1:-1;9516:26:20;;-1:-1:-1;9516:26:20;;-1:-1:-1;;9516:26:20:i;:::-;:31;9509:38;:::o;9491:16::-;9463:14;;;;9491:16;;8771:76;;:::i;7983:122::-;8082:12;;;;;;;:::o;7274:89::-;7340:12;;;;;;;;:::o;985:132:6:-;1195:14720:16;;1078:32:6;;1195:14720:16;;;;:::i;:::-;;;;;;;;;;;;;;1078:32:6;:::i;1562:703:4:-;;;;;;1691:6;;:32;;;;1562:703;1691:42;;;;1562:703;1691:68;;;;1562:703;1687:111;;1821:39;;;;:::i;:::-;1820:40;1816:83;;3235:647:5;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3235:647:5;;;;;1195:14720:16;3235:647:5;1195:14720:16;3235:647:5;1195:14720:16;;3235:647:5;;;;-1:-1:-1;;;;;;;;;;;3235:647:5;2222:3:4;3235:647:5;;2132:64:4;3235:647:5;;2062:34:4;;;;1984:49;;2132:64;;:::i;:::-;2222:3;;:::i;:::-;2211:18;;2251:7;1562:703;:::o;1816:83::-;1876:12;;;;;1195:14720:16;1876:12:4;:::o;1691:68::-;1737:22;-1:-1:-1;;;;;;;;;;;1737:22:4;;;1691:68;;:42;1727:6;;;1691:42;;:32;1701:22;-1:-1:-1;;;;;;;;;;;1701:22:4;;;1691:32;;2879:281:0;2961:193;;;;;;;2879:281;:::o;16753:1115:9:-;16943:919;;1195:14720:16;;16753:1115:9;;;16943:919;;;;;;16753:1115;16943:919;;;;;;16753:1115;16943:919;;;;;;16753:1115;;;:::o;16943:919::-;;;;-1:-1:-1;16943:919:9;;;;;;6785:16:18;16943:919:9;;-1:-1:-1;;16943:919:9;;;;;;;;;;-1:-1:-1;;16943:919:9;;;;;;;;;;;;;;;;;;;;;;;;;;16753:1115::o;16943:919::-;;;;;;;;-1:-1:-1;16943:919:9;;;1195:14720:16;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;6785:16:18;1195:14720:16;6785:16:18;;1195:14720:16;;:::i;:::-;;;;;;;;:::o;1186:4022:6:-;;1195:14720:16;;1515:16:6;1511:31;;2503:69;2606:24;2547:25;2548:19;:15;1195:14720:16;;2548:15:6;:::i;:::-;:19;:::i;:::-;2571:1;2162:66:5;;;;2547:25:6;2606:24;:::i;:::-;2641:2537;;;;;;;;;;;;;;;;;1104:5;2641:2537;;;;;;;;;;;;;1186:4022;:::o;2641:2537::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1511:31;1195:14720:16;;;;:::i;12684:438:5:-;-1:-1:-1;;;;;;;;12774:6:5;;;;;:16;;12684:438;12774:42;;;;12684:438;12770:85;;-1:-1:-1;;;;;;;;1531:66:5;1802;;1531;;;1666;1531;12990:15;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;;;12966:15;12959:29;12952:57;13039:17;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;12902:15;13095:10;12684:438;:::o;12770:85::-;12832:12;;1195:14720:16;12832:12:5;:::o;12774:42::-;12796:6;;;12795:20;;12774:42;12795:20;12808:6;;;12774:42;;:16;-1:-1:-1;;;;;;;;;12784:6:5;;;12774:16;;13895:6587;;;1195:14720:16;;13895:6587:5;1195:14720:16;14174:3:5;1195:14720:16;14256:13:5;;;:30;;13895:6587;14252:44;;14322:25;;;;:::i;:::-;14366:5;;;;;14365:16;;;13895:6587;14362:211;;13895:6587;14586:5830;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14586:5830:5;;;;;1195:14720:16;;;14586:5830:5;;1195:14720:16;;;14586:5830:5;1195:14720:16;;;14586:5830:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;14586:5830:5;;;;-1:-1:-1;;;;;1531:66:5;;;14586:5830;;;;;1195:14720:16;14586:5830:5;1195:14720:16;14586:5830:5;1195:14720:16;;14586:5830:5;;;;;;-1:-1:-1;;;;;;;;1531:66:5;14586:5830;13895:6587;:::o;14586:5830::-;1531:66;;;;;;;;;-1:-1:-1;;;;;1531:66:5;;;14586:5830;;;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;14586:5830;-1:-1:-1;;;;;;;;14586:5830:5;;;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;;14586:5830;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;;;;;;14586:5830;1531:66;-1:-1:-1;;;;;;;;1531:66:5;14586:5830;;;;;;;1531:66;-1:-1:-1;;;;;;;;1531:66:5;14586:5830;;1531:66;-1:-1:-1;;;;;;;;1531:66:5;14586:5830;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;-1:-1:-1;;;;;;;;;;14586:5830:5;-1:-1:-1;;;;;;;;14586:5830:5;;;;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;;14586:5830;;1531:66;14586:5830;;;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;;;;14586:5830;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;1531:66:5;;;;;;;14586:5830;;1531:66;-1:-1:-1;;;;;;;;1531:66:5;14586:5830;;;;1531:66;;;;14586:5830;;;;;;;;-1:-1:-1;;;;;;;;14586:5830:5;;;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;14586:5830;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;;14586:5830;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;;14586:5830;1531:66;-1:-1:-1;;;;;;;;1531:66:5;14586:5830;-1:-1:-1;;;;;;;;1531:66:5;14586:5830;-1:-1:-1;;;;;;;;;;14586:5830:5;-1:-1:-1;;;;;;;;14586:5830:5;;;1531:66;14586:5830;;;;;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;;14586:5830;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;;14586:5830;;;;;;;;;;-1:-1:-1;;14586:5830:5;;;;;;;;;;;;;;;1531:66;;;-1:-1:-1;1531:66:5;;;-1:-1:-1;;;;;;;;;1531:66:5;-1:-1:-1;;;;;;;;;;14586:5830:5;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;14586:5830;-1:-1:-1;;;;;;;;14586:5830:5;;;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;;14586:5830;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;14586:5830;;;1531:66;14586:5830;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;;14586:5830;;-1:-1:-1;;;;;;;;1531:66:5;14586:5830;;1531:66;-1:-1:-1;;;;;;;;1531:66:5;14586:5830;;1531:66;-1:-1:-1;;;;;;;;1531:66:5;14586:5830;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;-1:-1:-1;;;;;;;;;;14586:5830:5;-1:-1:-1;;;;;;;;14586:5830:5;;;;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;;14586:5830;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;;14586:5830;;;;;;;;;;;;;;-1:-1:-1;14586:5830:5;;;;-1:-1:-1;14586:5830:5;;-1:-1:-1;14586:5830:5;-1:-1:-1;14586:5830:5;;;;;;;;;;;;-1:-1:-1;14586:5830:5;;-1:-1:-1;14586:5830:5;;;1938:66;;-1:-1:-1;2032:66:5;;-1:-1:-1;14586:5830:5;;;1531:66;;;;;;;-1:-1:-1;;;;;1531:66:5;;;14586:5830;;;;;;;;;;;;;;;;;;-1:-1:-1;14586:5830:5;;;;-1:-1:-1;14586:5830:5;;;1938:66;;-1:-1:-1;2032:66:5;;-1:-1:-1;14586:5830:5;;;1195:14720:16;;14586:5830:5;;;;;;;;;;;;;;;;14362:211;2032:66;;-1:-1:-1;;;;;;;;;;;2032:66:5;;;;14437:31;;14486:10;;14518:13;;:30;;;14362:211;14514:44;14362:211;14514:44;14550:8;;;;;;;;;;;:::o;14518:30::-;;14535:13;14518:30;;14365:16;14375:5;;;14365:16;;14252:44;14288:8;;;;;;;;;:::o;14256:30::-;14273:13;;;14256:30;;13224:499;;;1938:66;2032;13342:11;12535:6;;13437:41;;13492:6;13686:30;13492:6;;;;13491:18;;;13224:499;13488:181;;;-1:-1:-1;;;;;;;;;1531:66:5;-1:-1:-1;9612:681:5;;;-1:-1:-1;;;;;;;;9612:681:5;;;1531:66;-1:-1:-1;;;;;;;;1531:66:5;9612:681;;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;;9612:681;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;;;13563:1;1531:66;9612:681;1531:66;-1:-1:-1;;;;;;;;1531:66:5;9612:681;;;;;;-1:-1:-1;;;;;;;;1531:66:5;9612:681;-1:-1:-1;;;;;;;;;;9612:681:5;-1:-1:-1;;;;;;;;9612:681:5;;;;1531:66;-1:-1:-1;;;;;;;;13563:1:5;9612:681;;1531:66;-1:-1:-1;;;;;;;;1531:66:5;13563:1;;9612:681;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;;9612:681;-1:-1:-1;;;;;;;;9612:681:5;;;;1531:66;;;;9612:681;;;;;;;;13525:42;13686:30;:::i;13488:181::-;13627:31;;;;;;:::i;:::-;13605:53;;;;13686:30;:::i;13491:18::-;13502:6;;;;13491:18;;13437:41;-1:-1:-1;13463:15:5;-1:-1:-1;13463:15:5;:::o;10559:1073::-;;;;10790:7;;10786:67;;-1:-1:-1;;;;;;;;10867:673:5;;;;;;1531:66;;13645:1;;10867:673;;1531:66;-1:-1:-1;;;;;;;;1531:66:5;10867:673;;;;1531:66;;13645:1;;10867:673;;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;10867:673;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;10867:673;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;;10867:673;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;-1:-1:-1;;;;;;;;;;10867:673:5;-1:-1:-1;;;;;;;;10867:673:5;;;1531:66;10867:673;;;;;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;;;;10867:673;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;;10867:673;;;;;;;1531:66;-1:-1:-1;;;;;;;;1531:66:5;13645:1;10867:673;1531:66;-1:-1:-1;;;;;;;;1531:66:5;13645:1;10867:673;10559:1073;:::o;10786:67::-;-1:-1:-1;13645:1:5;;-1:-1:-1;13645:1:5;;10817:21::o;8954:351::-;;;;4081:643;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;4081:643:5;;;;-1:-1:-1;;;;;1531:66:5;;;4081:643;;;;;1195:14720:16;4081:643:5;1195:14720:16;4081:643:5;1195:14720:16;;4081:643:5;;;;;;-1:-1:-1;;;;;;;;1531:66:5;4081:643;;9135:20;1531:66;-1:-1:-1;;;;;;;;1531:66:5;9186:21;-1:-1:-1;;;;;;;;1531:66:5;;;;;9232:17;9271:20;;8954:351;:::o" + }, + "methodIdentifiers": { + "REPLAYABLE_NONCE_KEY()": "88ce4c7c", + "addOwnerAddress(address)": "0f0f3f24", + "addOwnerPublicKey(bytes32,bytes32)": "29565e3b", + "canSkipChainIdValidation(bytes4)": "9f9bcb34", + "domainSeparator()": "f698da25", + "eip712Domain()": "84b0196e", + "entryPoint()": "b0d691fe", + "execute(address,uint256,bytes)": "b61d27f6", + "executeBatch((address,uint256,bytes)[])": "34fcd5be", + "executeWithoutChainIdValidation(bytes[])": "2c2abd1e", + "getSignatureLifetime()": "17452caa", + "getUserOpHashWithoutChainId((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes))": "a05bd44e", + "implementation()": "5c60da1b", + "initialize(bytes[])": "6f2de70e", + "isOwnerAddress(address)": "a2e1a8d8", + "isOwnerBytes(bytes)": "1ca5393f", + "isOwnerPublicKey(bytes32,bytes32)": "066a1eb7", + "isValidSignature(bytes32,bytes)": "1626ba7e", + "nextOwnerIndex()": "d948fd2e", + "ownerAtIndex(uint256)": "8ea69029", + "ownerCount()": "0db02622", + "proxiableUUID()": "52d1902d", + "removeLastOwner(uint256,bytes)": "b8197367", + "removeOwnerAtIndex(uint256,bytes)": "89625b57", + "removedOwnersCount()": "36d9cf9b", + "replaySafeHash(bytes32)": "ce1506be", + "signedStaticCall((address,bytes,uint256,bytes))": "737bebdd", + "upgradeToAndCall(address,bytes)": "4f1ef286", + "validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)": "19822f7c" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"owner\",\"type\":\"bytes\"}],\"name\":\"AlreadyOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FnSelectorNotRecognized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Initialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"owner\",\"type\":\"bytes\"}],\"name\":\"InvalidEthereumAddressOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"key\",\"type\":\"uint256\"}],\"name\":\"InvalidNonceKey\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"owner\",\"type\":\"bytes\"}],\"name\":\"InvalidOwnerBytesLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LastOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"NoOwnerAtIndex\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ownersRemaining\",\"type\":\"uint256\"}],\"name\":\"NotLastOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"SelectorNotAllowed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expiredAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentTimestamp\",\"type\":\"uint256\"}],\"name\":\"SignatureExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpgradeFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"expectedOwner\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"actualOwner\",\"type\":\"bytes\"}],\"name\":\"WrongOwnerAtIndex\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"owner\",\"type\":\"bytes\"}],\"name\":\"AddOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"owner\",\"type\":\"bytes\"}],\"name\":\"RemoveOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"REPLAYABLE_NONCE_KEY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"addOwnerAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"name\":\"addOwnerPublicKey\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"functionSelector\",\"type\":\"bytes4\"}],\"name\":\"canSkipChainIdValidation\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"domainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"entryPoint\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct GianoSmartWallet.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"executeBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"calls\",\"type\":\"bytes[]\"}],\"name\":\"executeWithoutChainIdValidation\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSignatureLifetime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"accountGasLimits\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"gasFees\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct PackedUserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"}],\"name\":\"getUserOpHashWithoutChainId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"$\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"owners\",\"type\":\"bytes[]\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isOwnerAddress\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"account\",\"type\":\"bytes\"}],\"name\":\"isOwnerBytes\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"name\":\"isOwnerPublicKey\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"result\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextOwnerIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"ownerAtIndex\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ownerCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"owner\",\"type\":\"bytes\"}],\"name\":\"removeLastOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"owner\",\"type\":\"bytes\"}],\"name\":\"removeOwnerAtIndex\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"removedOwnersCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"replaySafeHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"signedAt\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct StaticCall\",\"name\":\"call\",\"type\":\"tuple\"}],\"name\":\"signedStaticCall\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"accountGasLimits\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"gasFees\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct PackedUserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"missingAccountFunds\",\"type\":\"uint256\"}],\"name\":\"validateUserOp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"validationData\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"author\":\"Applied Blockchain (https://github.com/appliedblockchain/giano)Coinbase (https://github.com/coinbase/smart-wallet)Solady (https://github.com/vectorized/solady/blob/main/src/accounts/ERC4337.sol)\",\"errors\":{\"AlreadyOwner(bytes)\":[{\"params\":{\"owner\":\"The owner bytes.\"}}],\"FnSelectorNotRecognized()\":[{\"details\":\"The function selector is not recognized.\"}],\"InvalidEthereumAddressOwner(bytes)\":[{\"params\":{\"owner\":\"The invalid owner.\"}}],\"InvalidImplementation(address)\":[{\"params\":{\"implementation\":\"The address of the implementation that has no code.\"}}],\"InvalidNonceKey(uint256)\":[{\"details\":\"Calls to `this.executeWithoutChainIdValidation` MUST use `REPLAYABLE_NONCE_KEY` and calls NOT to `this.executeWithoutChainIdValidation` MUST NOT use `REPLAYABLE_NONCE_KEY`.\",\"params\":{\"key\":\"The invalid `UserOperation.nonce` key.\"}}],\"InvalidOwnerBytesLength(bytes)\":[{\"params\":{\"owner\":\"The invalid owner.\"}}],\"NoOwnerAtIndex(uint256)\":[{\"params\":{\"index\":\"The targeted index for removal.\"}}],\"NotLastOwner(uint256)\":[{\"params\":{\"ownersRemaining\":\"The number of current owners.\"}}],\"SelectorNotAllowed(bytes4)\":[{\"params\":{\"selector\":\"The selector of the call.\"}}],\"UnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized call context.\"}],\"UpgradeFailed()\":[{\"details\":\"The upgrade failed.\"}],\"WrongOwnerAtIndex(uint256,bytes,bytes)\":[{\"params\":{\"actualOwner\":\"The actual owner at `index`.\",\"expectedOwner\":\"The owner passed in the remove call.\",\"index\":\"The index of the owner to be removed.\"}}]},\"events\":{\"AddOwner(uint256,bytes)\":{\"params\":{\"index\":\"The owner index of the owner added.\",\"owner\":\"The owner added.\"}},\"RemoveOwner(uint256,bytes)\":{\"params\":{\"index\":\"The owner index of the owner removed.\",\"owner\":\"The owner removed.\"}},\"Upgraded(address)\":{\"details\":\"Emitted when the proxy's implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"addOwnerAddress(address)\":{\"params\":{\"owner\":\"The owner address.\"}},\"addOwnerPublicKey(bytes32,bytes32)\":{\"params\":{\"x\":\"The owner public key x coordinate.\",\"y\":\"The owner public key y coordinate.\"}},\"canSkipChainIdValidation(bytes4)\":{\"returns\":{\"_0\":\"`true` is the function selector is allowed to skip the chain ID validation, else `false`.\"}},\"domainSeparator()\":{\"details\":\"Implements domainSeparator = hashStruct(eip712Domain). See https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator.\",\"returns\":{\"_0\":\"The 32 bytes domain separator result.\"}},\"eip712Domain()\":{\"details\":\"Follows ERC-5267 (see https://eips.ethereum.org/EIPS/eip-5267).\",\"returns\":{\"chainId\":\"The value of the `EIP712Domain.chainId` field.\",\"extensions\":\"The list of EIP numbers, that extends EIP-712 with new domain fields.\",\"fields\":\"The bitmap of used fields.\",\"name\":\"The value of the `EIP712Domain.name` field.\",\"salt\":\"The value of the `EIP712Domain.salt` field.\",\"verifyingContract\":\"The value of the `EIP712Domain.verifyingContract` field.\",\"version\":\"The value of the `EIP712Domain.version` field.\"}},\"entryPoint()\":{\"returns\":{\"_0\":\"The address of the EntryPoint v0.7\"}},\"execute(address,uint256,bytes)\":{\"details\":\"Can only be called by the Entrypoint or an owner of this account (including itself).\",\"params\":{\"data\":\"The data of the call.\",\"target\":\"The address to call.\",\"value\":\"The value to send with the call.\"}},\"executeBatch((address,uint256,bytes)[])\":{\"details\":\"Can only be called by the Entrypoint or an owner of this account (including itself).\",\"params\":{\"calls\":\"The list of `Call`s to execute.\"}},\"executeWithoutChainIdValidation(bytes[])\":{\"details\":\"Can only be called by the Entrypoint.Reverts if the given call is not authorized to skip the chain ID validtion.`validateUserOp()` will recompute the `userOpHash` without the chain ID before validating it if the `UserOperation.calldata` is calling this function. This allows certain UserOperations to be replayed for all accounts sharing the same address across chains. E.g. This may be useful for syncing owner changes.\",\"params\":{\"calls\":\"An array of calldata to use for separate self calls.\"}},\"getUserOpHashWithoutChainId((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes))\":{\"details\":\"This allows accounts to sign a hash that can be used on many chains.\",\"params\":{\"userOp\":\"The `UserOperation` to compute the hash for.\"},\"returns\":{\"_0\":\"The `UserOperation` hash, which does not depend on chain ID.\"}},\"implementation()\":{\"returns\":{\"$\":\"The address of implementation contract.\"}},\"initialize(bytes[])\":{\"details\":\"Reverts if the account has had at least one owner, i.e. has been initialized.\",\"params\":{\"owners\":\"Array of initial owners for this account. Each item should be an ABI encoded Ethereum address, i.e. 32 bytes with 12 leading 0 bytes, or a 64 byte public key.\"}},\"isOwnerAddress(address)\":{\"params\":{\"account\":\"The account address to check.\"},\"returns\":{\"_0\":\"`true` if the account is an owner else `false`.\"}},\"isOwnerBytes(bytes)\":{\"params\":{\"account\":\"The account, should be ABI encoded address or public key.\"},\"returns\":{\"_0\":\"`true` if the account is an owner else `false`.\"}},\"isOwnerPublicKey(bytes32,bytes32)\":{\"params\":{\"x\":\"The public key x coordinate.\",\"y\":\"The public key y coordinate.\"},\"returns\":{\"_0\":\"`true` if the account is an owner else `false`.\"}},\"isValidSignature(bytes32,bytes)\":{\"details\":\"This implementation follows ERC-1271. See https://eips.ethereum.org/EIPS/eip-1271.IMPORTANT: Signature verification is performed on the hash produced AFTER applying the anti cross-account-replay layer on the given `hash` (i.e., verification is run on the replay-safe hash version).\",\"params\":{\"hash\":\"The original hash.\",\"signature\":\"The signature of the replay-safe hash to validate.\"},\"returns\":{\"result\":\"`0x1626ba7e` if validation succeeded, else `0xffffffff`.\"}},\"nextOwnerIndex()\":{\"returns\":{\"_0\":\"The next index that will be used to add a new owner.\"}},\"ownerAtIndex(uint256)\":{\"params\":{\"index\":\"The index to lookup.\"},\"returns\":{\"_0\":\"The owner bytes (empty if no owner is registered at this `index`).\"}},\"ownerCount()\":{\"returns\":{\"_0\":\"The current owner count\"}},\"proxiableUUID()\":{\"details\":\"Returns the storage slot used by the implementation, as specified in [ERC1822](https://eips.ethereum.org/EIPS/eip-1822). Note: The `notDelegated` modifier prevents accidental upgrades to an implementation that is a proxy contract.\"},\"removeLastOwner(uint256,bytes)\":{\"details\":\"Reverts if the owner is not registered at `index`.Reverts if there is currently more than one owner.Reverts if `owner` does not match bytes found at `index`.\",\"params\":{\"index\":\"The index of the owner to be removed.\",\"owner\":\"The ABI encoded bytes of the owner to be removed.\"}},\"removeOwnerAtIndex(uint256,bytes)\":{\"details\":\"Reverts if the owner is not registered at `index`.Reverts if there is currently only one owner.Reverts if `owner` does not match bytes found at `index`.\",\"params\":{\"index\":\"The index of the owner to be removed.\",\"owner\":\"The ABI encoded bytes of the owner to be removed.\"}},\"removedOwnersCount()\":{\"details\":\"Used with `this.nextOwnerIndex` to avoid removing all owners\",\"returns\":{\"_0\":\"The number of owners that have been removed.\"}},\"replaySafeHash(bytes32)\":{\"details\":\"The returned EIP-712 compliant replay-safe hash is the result of: keccak256( \\\\x19\\\\x01 || this.domainSeparator || hashStruct(GianoSmartWalletMessage({ hash: `hash`})) )\",\"params\":{\"hash\":\"The original hash.\"},\"returns\":{\"_0\":\"The corresponding replay-safe hash.\"}},\"upgradeToAndCall(address,bytes)\":{\"details\":\"Upgrades the proxy's implementation to `newImplementation`. Emits a {Upgraded} event. Note: Passing in empty `data` skips the delegatecall to `newImplementation`.\"},\"validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)\":{\"details\":\"Signature failure should be reported by returning 1 (see: `this._isValidSignature`). This allows making a \\\"simulation call\\\" without a valid signature. Other failures (e.g. invalid signature format) should still revert to signal failure.Reverts if the `UserOperation.nonce` key is invalid for `UserOperation.calldata`.Reverts if the signature format is incorrect or invalid for owner type.\",\"params\":{\"missingAccountFunds\":\"The missing account funds that must be deposited on the Entrypoint.\",\"userOp\":\"The `UserOperation` to validate.\",\"userOpHash\":\"The `UserOperation` hash, as computed by `EntryPoint.getUserOpHash(UserOperation)`.\"},\"returns\":{\"validationData\":\"The encoded `ValidationData` structure: `(uint256(validAfter) << (160 + 48)) | (uint256(validUntil) << 160) | (success ? 0 : 1)` where `validUntil` is 0 (indefinite) and `validAfter` is 0.\"}}},\"stateVariables\":{\"REPLAYABLE_NONCE_KEY\":{\"details\":\"MUST BE the `UserOperation.nonce` key when `UserOperation.calldata` is calling `executeWithoutChainIdValidation`and MUST NOT BE `UserOperation.nonce` key when `UserOperation.calldata` is NOT calling `executeWithoutChainIdValidation`.Helps enforce sequential sequencing of replayable transactions.\"}},\"title\":\"Giano Smart Wallet\",\"version\":1},\"userdoc\":{\"errors\":{\"AlreadyOwner(bytes)\":[{\"notice\":\"Thrown when trying to add an already registered owner.\"}],\"Initialized()\":[{\"notice\":\"Thrown when `initialize` is called but the account already has had at least one owner.\"}],\"InvalidEthereumAddressOwner(bytes)\":[{\"notice\":\"Thrown if a provided owner is 32 bytes long but does not fit in an `address` type.\"}],\"InvalidImplementation(address)\":[{\"notice\":\"Thrown when an upgrade is attempted to an implementation that does not exist.\"}],\"InvalidNonceKey(uint256)\":[{\"notice\":\"Thrown in validateUserOp if the key of `UserOperation.nonce` does not match the calldata.\"}],\"InvalidOwnerBytesLength(bytes)\":[{\"notice\":\"Thrown when a provided owner is neither 64 bytes long (for public key) nor a ABI encoded address.\"}],\"LastOwner()\":[{\"notice\":\"Thrown when removeOwnerAtIndex is called and there is only one current owner.\"}],\"NoOwnerAtIndex(uint256)\":[{\"notice\":\"Thrown when trying to remove an owner from an index that is empty.\"}],\"NotLastOwner(uint256)\":[{\"notice\":\"Thrown when removeLastOwner is called and there is more than one current owner.\"}],\"SelectorNotAllowed(bytes4)\":[{\"notice\":\"Thrown when a call is passed to `executeWithoutChainIdValidation` that is not allowed by `canSkipChainIdValidation`\"}],\"Unauthorized()\":[{\"notice\":\"Thrown when the `msg.sender` is not an owner and is trying to call a privileged function.\"}],\"WrongOwnerAtIndex(uint256,bytes,bytes)\":[{\"notice\":\"Thrown when `owner` argument does not match owner found at index.\"}]},\"events\":{\"AddOwner(uint256,bytes)\":{\"notice\":\"Emitted when a new owner is registered.\"},\"RemoveOwner(uint256,bytes)\":{\"notice\":\"Emitted when an owner is removed.\"}},\"kind\":\"user\",\"methods\":{\"REPLAYABLE_NONCE_KEY()\":{\"notice\":\"Reserved nonce key (upper 192 bits of `UserOperation.nonce`) for cross-chain replayable transactions.\"},\"addOwnerAddress(address)\":{\"notice\":\"Adds a new Ethereum-address owner.\"},\"addOwnerPublicKey(bytes32,bytes32)\":{\"notice\":\"Adds a new public-key owner.\"},\"domainSeparator()\":{\"notice\":\"Returns the `domainSeparator` used to create EIP-712 compliant hashes.\"},\"eip712Domain()\":{\"notice\":\"Returns information about the `EIP712Domain` used to create EIP-712 compliant hashes.\"},\"entryPoint()\":{\"notice\":\"Returns the address of the EntryPoint v0.7.\"},\"execute(address,uint256,bytes)\":{\"notice\":\"Executes the given call from this account.\"},\"executeBatch((address,uint256,bytes)[])\":{\"notice\":\"Executes batch of `Call`s.\"},\"executeWithoutChainIdValidation(bytes[])\":{\"notice\":\"Executes `calls` on this account (i.e. self call).\"},\"getUserOpHashWithoutChainId((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes))\":{\"notice\":\"Computes the hash of the `UserOperation` in the same way as EntryPoint v0.6, but leaves out the chain ID.\"},\"implementation()\":{\"notice\":\"Returns the implementation of the ERC1967 proxy.\"},\"initialize(bytes[])\":{\"notice\":\"Initializes the account with the `owners`.\"},\"isOwnerAddress(address)\":{\"notice\":\"Checks if the given `account` address is registered as owner.\"},\"isOwnerBytes(bytes)\":{\"notice\":\"Checks if the given `account` bytes is registered as owner.\"},\"isOwnerPublicKey(bytes32,bytes32)\":{\"notice\":\"Checks if the given `x`, `y` public key is registered as owner.\"},\"isValidSignature(bytes32,bytes)\":{\"notice\":\"Validates the `signature` against the given `hash`.\"},\"nextOwnerIndex()\":{\"notice\":\"Returns the next index that will be used to add a new owner.\"},\"ownerAtIndex(uint256)\":{\"notice\":\"Returns the owner bytes at the given `index`.\"},\"ownerCount()\":{\"notice\":\"Returns the current number of owners\"},\"removeLastOwner(uint256,bytes)\":{\"notice\":\"Removes owner at the given `index`, which should be the only current owner.\"},\"removeOwnerAtIndex(uint256,bytes)\":{\"notice\":\"Removes owner at the given `index`.\"},\"removedOwnersCount()\":{\"notice\":\"Tracks the number of owners removed\"},\"replaySafeHash(bytes32)\":{\"notice\":\"Wrapper around `_eip712Hash()` to produce a replay-safe hash fron the given `hash`.\"},\"validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)\":{\"notice\":\"ERC-4337 `validateUserOp` method. The EntryPoint will call `UserOperation.sender.call(UserOperation.callData)` only if this validation call returns successfully.\"}},\"notice\":\"ERC-4337-compatible smart account, based on Solady's ERC4337 account implementation with inspiration from Alchemy's LightAccount and Daimo's DaimoAccount.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/GianoSmartWallet.sol\":\"GianoSmartWallet\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@account-abstraction/contracts/core/Helpers.sol\":{\"keccak256\":\"0x6247e011a6cb0b263b3aa098822977181674d91b62e5bdfe04c6e66f72da25d6\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ca829a69b3fbc74fec8e140d42a2bf93bc3512609272f031c846470f61f0ab7e\",\"dweb:/ipfs/QmP3r3MBgAN39KeVB1rCGJWwcBcotNt26ALtAR54poQ1Jc\"]},\"@account-abstraction/contracts/core/UserOperationLib.sol\":{\"keccak256\":\"0x9d50ece985d35f82e33e5da417595c86fac10449e3d10895d08363d33aad454b\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b1d11cc364c8bf7ed5388268c895b5ffed16e87dfbcb320ddeeba5e7974315dc\",\"dweb:/ipfs/QmYSpvjxEjweietQrYZagwQ52ipy7eXx4rwvnTzXKeGeMS\"]},\"@account-abstraction/contracts/interfaces/IAccount.sol\":{\"keccak256\":\"0x38710bec0cb20ff4ceef46a80475b5bdabc27b7efd2687fd473db68332f61b78\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://dea7a723e1ef852e8764e69914a345d2e8bc5e13facfc9d5c29d791cb4ab0020\",\"dweb:/ipfs/QmU8dYgyF4DBJXFqjwLAtnE3q8q259ChfoEk9a6wyhHzEP\"]},\"@account-abstraction/contracts/interfaces/PackedUserOperation.sol\":{\"keccak256\":\"0x1129b46381db68eddbc5cb49e50664667b66b03c480453858e7b25eabe444359\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://499a948aba60480dba6e25c763b8d918f1c246eb7a3302e04f493e080f3295be\",\"dweb:/ipfs/QmeRhhswf4NACcBKam2PyjpTP2ddSm648kah5kkQJsvwz3\"]},\"FreshCryptoLib/FCL_ecdsa.sol\":{\"keccak256\":\"0x679d2e9a655cd7e156a0cfc24de0aca88d4e0b34a8e0dfe6a599f23af092f5a2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db31eb84c6f854f076d2501e3d8b5a606fb4924168bdfc6fc3de84e67ed8a80d\",\"dweb:/ipfs/QmWGAmc7B4aT6Ki52uF9QmPQKWipaptit7r3JknBHjUGfe\"]},\"FreshCryptoLib/FCL_elliptic.sol\":{\"keccak256\":\"0xac7bb3260a446851f45b8cb71e31d64ca469d7711ed04662092a9554f1283a38\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f9b0dc5a2306ad3f3a0ff4a5b947fe49422181e97c163ea237fc8bfc6736429d\",\"dweb:/ipfs/QmeruF7BvG5BNnqwqwdshoVXuXqXtajbUYB19KwPynHrQE\"]},\"openzeppelin-contracts/contracts/utils/Base64.sol\":{\"keccak256\":\"0xbee2b819e1b4bf569ffc1b1b9d560b4abd6a589575f3093edaab9244de18a0c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e478c0e9bbf3eb8cd3b7784f9b397603e34747f9ffd16571ed1d89ce102de389\",\"dweb:/ipfs/QmZ6zXpwy5xRxx9RkodJmDZSUTeEqPQUanAC5TUoYqW2VR\"]},\"solady/accounts/Receiver.sol\":{\"keccak256\":\"0xc879aa81dd5639f5fd97b31acd91658ffe33ae4b72b70ed7bd701c37addce43b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2e03a8d37d48644857d94f7432c1e2272bfd19649dfe80aba8f979f157f71f00\",\"dweb:/ipfs/QmWWS34bNWhiZgLXS9gtD8N2dxreRsVXxhvQRKqd4wKUuU\"]},\"solady/utils/CallContextChecker.sol\":{\"keccak256\":\"0xc54c743a03f4909826712e9c6b683ca95e8b0c120c55284a9e3572621ebd734b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3d3138009aba3d2fd310636f3cc1d6029e970c57ddb74693bebf2a02d3e6f12d\",\"dweb:/ipfs/QmauMpcVDyQqVnAUF75DXy831LvtxyFS7GND7kge1Zgw55\"]},\"solady/utils/LibBytes.sol\":{\"keccak256\":\"0x320c3c933df51e8fd6f1fc96de721c8cc6f1be1d4c586c11f1c472a23b86eba5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cec71f42247eda74535c6e695a2ac194268a342594a26c090bafd04434698b20\",\"dweb:/ipfs/QmXA8Qaw6DdWujdrNHMHpDLNGG4QCgC859ozivrxkxp7Ea\"]},\"solady/utils/LibString.sol\":{\"keccak256\":\"0x8a6b219f6ccda90c08e2debae62618d78d6f0cef086eb6c9503793d7f12815dd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d1301acbf7371cb51ab01fe3bee8a9b732ee0bcf6cc0db20ed5a3fb9241d675e\",\"dweb:/ipfs/QmXuM4tSfPDeFRvP3nEQmuezp1yEm4HxyWtU41FjiCdxAG\"]},\"solady/utils/SignatureCheckerLib.sol\":{\"keccak256\":\"0x098c7eb88b3048f227b240e0e5bf1da4a8f7622b30f6d7c06416bfcab3225e77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://50c2766f652916c5d6433665fb1c3b2f04c3d9292a35c12e0f8d7c71dd6438cb\",\"dweb:/ipfs/QmWTMwN2RDZUUPg7KkH1qFBjTSh84Zw8bbYwRBCQUtLN2h\"]},\"solady/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x63899eaf1a24713464b8084ada33a83c4b7db789fe83ae22f016e39646bee361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://617fa735ffa8ba31051745614a508abd69d2cfc1b1bc1eb3c772865db5f7ce65\",\"dweb:/ipfs/QmR1pQbHPyXcLbFm2vHrXBs1qRFrGC22gF7wWYamYy8aaE\"]},\"src/AuthenticatedStaticCaller.sol\":{\"keccak256\":\"0x06bb6bea86630eda0e5920c4fe4a5d51e89d18072faf7c4b5d7ae8ca82b87b94\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2920f02558ea8bbe8ca21cbe1bcbbea7d3c4d7f0d3e812cde706f95c53b399aa\",\"dweb:/ipfs/QmaNpbMazUf1n6hpXSMq7RDJix7ipPiALKE93fMmBtbS4A\"]},\"src/ERC1271.sol\":{\"keccak256\":\"0x75c3fe08b6e1789dab7714196704f425d1afea21d725fcb6c418a70ef5bf6fad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd292bcf9b1891abb517323636493499dbdd00bebc1f759c07fb26e103a1b71d\",\"dweb:/ipfs/QmWMT3C54pakfUCTkcPzFQAvE8nRnPqDDpFaDhY5A9fpEp\"]},\"src/GianoSmartWallet.sol\":{\"keccak256\":\"0x10f35f381fe7d934aa2f83dde5f50a69efbe49600679cb8cd7777fb07931e4e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a93eeba861ccaf70dfe6d9ed594f5ae55d37ee9feab8e4867c95657b36ae1b51\",\"dweb:/ipfs/QmTPuS5LuaW2Fx3QAXoUD4gSErZ8CoRQKFk8Nsy3vMe2PV\"]},\"src/MultiOwnable.sol\":{\"keccak256\":\"0x46a9fa25c7de87b56df47b67d61b6efd96ed3f382c5d440d04de55fa23bccadd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75ac03bdfdddec29b0b1f4f9c33add4b5b9d5400b1a54691a544a59ac710de5c\",\"dweb:/ipfs/QmXajkF7z8rqmDE89H4uVaKCDyQsdwphif8BHZLLu9MQ5k\"]},\"webauthn-sol/WebAuthn.sol\":{\"keccak256\":\"0x8b940975249f72155110e5e5b4611fc9031330538183862b9d8f12ea7c30ad25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://433957720c13a834b9aab98a5054e9dabe5c660a1a3fb267e6ad1a22b99b68ed\",\"dweb:/ipfs/QmTkQxCCf8kDAHa6rBwLT2mxFXN3tSAWyx4rLmgcLkFkRh\"]}},\"version\":1}" + } + }, + "src/GianoSmartWalletFactory.sol": { + "GianoSmartWalletFactory": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "implementation_", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "constructor" + }, + { + "inputs": [], + "name": "ImplementationUndeployed", + "type": "error" + }, + { + "inputs": [], + "name": "OwnerRequired", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes[]", + "name": "owners", + "type": "bytes[]" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "name": "AccountCreated", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "bytes[]", + "name": "owners", + "type": "bytes[]" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "name": "createAccount", + "outputs": [ + { + "internalType": "contract GianoSmartWallet", + "name": "account", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes[]", + "name": "owners", + "type": "bytes[]" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "name": "getAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "implementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "initCodeHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60a0601f6105fc38819003918201601f19168301916001600160401b038311848410176100955780849260209460405283398101031261009057516001600160a01b038116810361009057803b1561007f5760805260405161055090816100ac823960805181818160600152818160a50152818161014801526102d90152f35b63870dfeb760e01b60005260046000fd5b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604052600436101561001257600080fd5b6000803560e01c8063250b1b41146102bb5780633ffba36f146100d45780635c60da1b1461008f5763db4c545e1461004957600080fd5b3461008c578060031936011261008c5760206100847f00000000000000000000000000000000000000000000000000000000000000006104a7565b604051908152f35b80fd5b503461008c578060031936011261008c576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b506100de3661032d565b919080156102ac576100f1838284610479565b928490604051917fcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f36060527f5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e20766040526160096020527f0000000000000000000000000000000000000000000000000000000000000000601e5268603d3d8160223d3973600a52605f60212060358401523060581b835260ff83538560158401526055832090341596823b1561029057505060019561028b578638818034855af11561027e575b604083905260608790526001600160a01b031694156101dc575b602085604051908152f35b818061020c7ff8e246d8281c915feaf5c1ffd75d9a144f6dbdbbf545e286088661b19d8028f49386888a97610424565b0390a2823b1561027a57604051633796f38760e11b81526020600482015293918291859182916102419160248401919061038a565b038183865af192831561026d5760209361025d575b80806101d1565b8161026791610441565b38610256565b50604051903d90823e3d90fd5b8380fd5b63b12d13eb87526004601cfd5b6101b7565b91509550605f602134f5806101b757633011642587526004601cfd5b633c776be160e01b8452600484fd5b503461008c576020906103036102d03661032d565b906102fd9392937f00000000000000000000000000000000000000000000000000000000000000006104a7565b93610479565b9060ff83536035523060601b60015260155260558120906035526040519060018060a01b03168152f35b9060406003198301126103855760043567ffffffffffffffff811161038557826023820112156103855780600401359267ffffffffffffffff84116103855760248460051b8301011161038557602401919060243590565b600080fd5b90602083828152019060208160051b85010193836000915b8383106103b25750505050505090565b909192939495601f198282030186528635601e1984360301811215610385578301906020823592019167ffffffffffffffff8111610385578036038313610385576020828280600196849695859652848401376000828201840152601f01601f191601019801960194930191906103a2565b93929160209161043c9160408752604087019161038a565b930152565b90601f8019910116810190811067ffffffffffffffff82111761046357604052565b634e487b7160e01b600052604160045260246000fd5b91906104a190610493604051938492602084019687610424565b03601f198101835282610441565b51902090565b90604051917fcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f36060527f5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076604052616009602052601e5268603d3d8160223d3973600a52605f60212091604052600060605256fea26469706673582212209043ac39e0deda770cb1183dbc33f14b238e32f625441a810092deac30b2a90e64736f6c634300081c0033", + "opcodes": "PUSH1 0xA0 PUSH1 0x1F PUSH2 0x5FC CODESIZE DUP2 SWAP1 SUB SWAP2 DUP3 ADD PUSH1 0x1F NOT AND DUP4 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT DUP5 DUP5 LT OR PUSH2 0x95 JUMPI DUP1 DUP5 SWAP3 PUSH1 0x20 SWAP5 PUSH1 0x40 MSTORE DUP4 CODECOPY DUP2 ADD SUB SLT PUSH2 0x90 JUMPI MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x90 JUMPI DUP1 EXTCODESIZE ISZERO PUSH2 0x7F JUMPI PUSH1 0x80 MSTORE PUSH1 0x40 MLOAD PUSH2 0x550 SWAP1 DUP2 PUSH2 0xAC DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 DUP2 DUP2 PUSH1 0x60 ADD MSTORE DUP2 DUP2 PUSH1 0xA5 ADD MSTORE DUP2 DUP2 PUSH2 0x148 ADD MSTORE PUSH2 0x2D9 ADD MSTORE RETURN JUMPDEST PUSH4 0x870DFEB7 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x250B1B41 EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0x3FFBA36F EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x8F JUMPI PUSH4 0xDB4C545E EQ PUSH2 0x49 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x8C JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x8C JUMPI PUSH1 0x20 PUSH2 0x84 PUSH32 0x0 PUSH2 0x4A7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x8C JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x8C JUMPI PUSH1 0x40 MLOAD PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 SWAP1 RETURN JUMPDEST POP PUSH2 0xDE CALLDATASIZE PUSH2 0x32D JUMP JUMPDEST SWAP2 SWAP1 DUP1 ISZERO PUSH2 0x2AC JUMPI PUSH2 0xF1 DUP4 DUP3 DUP5 PUSH2 0x479 JUMP JUMPDEST SWAP3 DUP5 SWAP1 PUSH1 0x40 MLOAD SWAP2 PUSH32 0xCC3735A920A3CA505D382BBC545AF43D6000803E6038573D6000FD5B3D6000F3 PUSH1 0x60 MSTORE PUSH32 0x5155F3363D3D373D3D363D7F360894A13BA1A3210667C828492DB98DCA3E2076 PUSH1 0x40 MSTORE PUSH2 0x6009 PUSH1 0x20 MSTORE PUSH32 0x0 PUSH1 0x1E MSTORE PUSH9 0x603D3D8160223D3973 PUSH1 0xA MSTORE PUSH1 0x5F PUSH1 0x21 KECCAK256 PUSH1 0x35 DUP5 ADD MSTORE ADDRESS PUSH1 0x58 SHL DUP4 MSTORE PUSH1 0xFF DUP4 MSTORE8 DUP6 PUSH1 0x15 DUP5 ADD MSTORE PUSH1 0x55 DUP4 KECCAK256 SWAP1 CALLVALUE ISZERO SWAP7 DUP3 EXTCODESIZE ISZERO PUSH2 0x290 JUMPI POP POP PUSH1 0x1 SWAP6 PUSH2 0x28B JUMPI DUP7 CODESIZE DUP2 DUP1 CALLVALUE DUP6 GAS CALL ISZERO PUSH2 0x27E JUMPI JUMPDEST PUSH1 0x40 DUP4 SWAP1 MSTORE PUSH1 0x60 DUP8 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP5 ISZERO PUSH2 0x1DC JUMPI JUMPDEST PUSH1 0x20 DUP6 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP2 DUP1 PUSH2 0x20C PUSH32 0xF8E246D8281C915FEAF5C1FFD75D9A144F6DBDBBF545E286088661B19D8028F4 SWAP4 DUP7 DUP9 DUP11 SWAP8 PUSH2 0x424 JUMP JUMPDEST SUB SWAP1 LOG2 DUP3 EXTCODESIZE ISZERO PUSH2 0x27A JUMPI PUSH1 0x40 MLOAD PUSH4 0x3796F387 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE SWAP4 SWAP2 DUP3 SWAP2 DUP6 SWAP2 DUP3 SWAP2 PUSH2 0x241 SWAP2 PUSH1 0x24 DUP5 ADD SWAP2 SWAP1 PUSH2 0x38A JUMP JUMPDEST SUB DUP2 DUP4 DUP7 GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x26D JUMPI PUSH1 0x20 SWAP4 PUSH2 0x25D JUMPI JUMPDEST DUP1 DUP1 PUSH2 0x1D1 JUMP JUMPDEST DUP2 PUSH2 0x267 SWAP2 PUSH2 0x441 JUMP JUMPDEST CODESIZE PUSH2 0x256 JUMP JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 RETURNDATASIZE SWAP1 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP4 DUP1 REVERT JUMPDEST PUSH4 0xB12D13EB DUP8 MSTORE PUSH1 0x4 PUSH1 0x1C REVERT JUMPDEST PUSH2 0x1B7 JUMP JUMPDEST SWAP2 POP SWAP6 POP PUSH1 0x5F PUSH1 0x21 CALLVALUE CREATE2 DUP1 PUSH2 0x1B7 JUMPI PUSH4 0x30116425 DUP8 MSTORE PUSH1 0x4 PUSH1 0x1C REVERT JUMPDEST PUSH4 0x3C776BE1 PUSH1 0xE0 SHL DUP5 MSTORE PUSH1 0x4 DUP5 REVERT JUMPDEST POP CALLVALUE PUSH2 0x8C JUMPI PUSH1 0x20 SWAP1 PUSH2 0x303 PUSH2 0x2D0 CALLDATASIZE PUSH2 0x32D JUMP JUMPDEST SWAP1 PUSH2 0x2FD SWAP4 SWAP3 SWAP4 PUSH32 0x0 PUSH2 0x4A7 JUMP JUMPDEST SWAP4 PUSH2 0x479 JUMP JUMPDEST SWAP1 PUSH1 0xFF DUP4 MSTORE8 PUSH1 0x35 MSTORE ADDRESS PUSH1 0x60 SHL PUSH1 0x1 MSTORE PUSH1 0x15 MSTORE PUSH1 0x55 DUP2 KECCAK256 SWAP1 PUSH1 0x35 MSTORE PUSH1 0x40 MLOAD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE RETURN JUMPDEST SWAP1 PUSH1 0x40 PUSH1 0x3 NOT DUP4 ADD SLT PUSH2 0x385 JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x385 JUMPI DUP3 PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0x385 JUMPI DUP1 PUSH1 0x4 ADD CALLDATALOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP5 GT PUSH2 0x385 JUMPI PUSH1 0x24 DUP5 PUSH1 0x5 SHL DUP4 ADD ADD GT PUSH2 0x385 JUMPI PUSH1 0x24 ADD SWAP2 SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 PUSH1 0x20 DUP4 DUP3 DUP2 MSTORE ADD SWAP1 PUSH1 0x20 DUP2 PUSH1 0x5 SHL DUP6 ADD ADD SWAP4 DUP4 PUSH1 0x0 SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x3B2 JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 PUSH1 0x1F NOT DUP3 DUP3 SUB ADD DUP7 MSTORE DUP7 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT ISZERO PUSH2 0x385 JUMPI DUP4 ADD SWAP1 PUSH1 0x20 DUP3 CALLDATALOAD SWAP3 ADD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x385 JUMPI DUP1 CALLDATASIZE SUB DUP4 SGT PUSH2 0x385 JUMPI PUSH1 0x20 DUP3 DUP3 DUP1 PUSH1 0x1 SWAP7 DUP5 SWAP7 SWAP6 DUP6 SWAP7 MSTORE DUP5 DUP5 ADD CALLDATACOPY PUSH1 0x0 DUP3 DUP3 ADD DUP5 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND ADD ADD SWAP9 ADD SWAP7 ADD SWAP5 SWAP4 ADD SWAP2 SWAP1 PUSH2 0x3A2 JUMP JUMPDEST SWAP4 SWAP3 SWAP2 PUSH1 0x20 SWAP2 PUSH2 0x43C SWAP2 PUSH1 0x40 DUP8 MSTORE PUSH1 0x40 DUP8 ADD SWAP2 PUSH2 0x38A JUMP JUMPDEST SWAP4 ADD MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F DUP1 NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x463 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 PUSH2 0x4A1 SWAP1 PUSH2 0x493 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 PUSH1 0x20 DUP5 ADD SWAP7 DUP8 PUSH2 0x424 JUMP JUMPDEST SUB PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x441 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP2 PUSH32 0xCC3735A920A3CA505D382BBC545AF43D6000803E6038573D6000FD5B3D6000F3 PUSH1 0x60 MSTORE PUSH32 0x5155F3363D3D373D3D363D7F360894A13BA1A3210667C828492DB98DCA3E2076 PUSH1 0x40 MSTORE PUSH2 0x6009 PUSH1 0x20 MSTORE PUSH1 0x1E MSTORE PUSH9 0x603D3D8160223D3973 PUSH1 0xA MSTORE PUSH1 0x5F PUSH1 0x21 KECCAK256 SWAP2 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH1 0x60 MSTORE JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP1 NUMBER 0xAC CODECOPY 0xE0 0xDE 0xDA PUSH24 0xCB1183DBC33F14B238E32F625441A810092DEAC30B2A90E PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ", + "sourceMap": "525:3885:17:-:0;;;;;;;;;;-1:-1:-1;;525:3885:17;;;;-1:-1:-1;;;;;525:3885:17;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;525:3885:17;;;;;;1600:27;;:32;1596:71;;1677:32;;525:3885;;;;;;;;1677:32;525:3885;;;;;;;;;;;;;;;;;;;;;1596:71;1641:26;;;-1:-1:-1;1641:26:17;;-1:-1:-1;1641:26:17;525:3885;-1:-1:-1;525:3885:17;;;;;;-1:-1:-1;525:3885:17;;;;;-1:-1:-1;525:3885:17" + }, + "deployedBytecode": { + "functionDebugData": { + "abi_decode_array_bytes_calldata_dyn_calldatat_uint256": { + "entryPoint": 813, + "id": null, + "parameterSlots": 1, + "returnSlots": 3 + }, + "abi_encode_array_bytes_calldata_dyn_calldata": { + "entryPoint": 906, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_array_bytes_calldata_dyn_calldata_uint256": { + "entryPoint": 1060, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "finalize_allocation": { + "entryPoint": 1089, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "fun_getSalt": { + "entryPoint": 1145, + "id": 7564, + "parameterSlots": 3, + "returnSlots": 1 + }, + "fun_initCodeHashERC1967": { + "entryPoint": 1191, + "id": 3662, + "parameterSlots": 1, + "returnSlots": 1 + } + }, + "generatedSources": [], + "immutableReferences": { + "7408": [ + { + "length": 32, + "start": 96 + }, + { + "length": 32, + "start": 165 + }, + { + "length": 32, + "start": 328 + }, + { + "length": 32, + "start": 729 + } + ] + }, + "linkReferences": {}, + "object": "6080604052600436101561001257600080fd5b6000803560e01c8063250b1b41146102bb5780633ffba36f146100d45780635c60da1b1461008f5763db4c545e1461004957600080fd5b3461008c578060031936011261008c5760206100847f00000000000000000000000000000000000000000000000000000000000000006104a7565b604051908152f35b80fd5b503461008c578060031936011261008c576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b506100de3661032d565b919080156102ac576100f1838284610479565b928490604051917fcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f36060527f5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e20766040526160096020527f0000000000000000000000000000000000000000000000000000000000000000601e5268603d3d8160223d3973600a52605f60212060358401523060581b835260ff83538560158401526055832090341596823b1561029057505060019561028b578638818034855af11561027e575b604083905260608790526001600160a01b031694156101dc575b602085604051908152f35b818061020c7ff8e246d8281c915feaf5c1ffd75d9a144f6dbdbbf545e286088661b19d8028f49386888a97610424565b0390a2823b1561027a57604051633796f38760e11b81526020600482015293918291859182916102419160248401919061038a565b038183865af192831561026d5760209361025d575b80806101d1565b8161026791610441565b38610256565b50604051903d90823e3d90fd5b8380fd5b63b12d13eb87526004601cfd5b6101b7565b91509550605f602134f5806101b757633011642587526004601cfd5b633c776be160e01b8452600484fd5b503461008c576020906103036102d03661032d565b906102fd9392937f00000000000000000000000000000000000000000000000000000000000000006104a7565b93610479565b9060ff83536035523060601b60015260155260558120906035526040519060018060a01b03168152f35b9060406003198301126103855760043567ffffffffffffffff811161038557826023820112156103855780600401359267ffffffffffffffff84116103855760248460051b8301011161038557602401919060243590565b600080fd5b90602083828152019060208160051b85010193836000915b8383106103b25750505050505090565b909192939495601f198282030186528635601e1984360301811215610385578301906020823592019167ffffffffffffffff8111610385578036038313610385576020828280600196849695859652848401376000828201840152601f01601f191601019801960194930191906103a2565b93929160209161043c9160408752604087019161038a565b930152565b90601f8019910116810190811067ffffffffffffffff82111761046357604052565b634e487b7160e01b600052604160045260246000fd5b91906104a190610493604051938492602084019687610424565b03601f198101835282610441565b51902090565b90604051917fcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f36060527f5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076604052616009602052601e5268603d3d8160223d3973600a52605f60212091604052600060605256fea26469706673582212209043ac39e0deda770cb1183dbc33f14b238e32f625441a810092deac30b2a90e64736f6c634300081c0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x250B1B41 EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0x3FFBA36F EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x8F JUMPI PUSH4 0xDB4C545E EQ PUSH2 0x49 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x8C JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x8C JUMPI PUSH1 0x20 PUSH2 0x84 PUSH32 0x0 PUSH2 0x4A7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x8C JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x8C JUMPI PUSH1 0x40 MLOAD PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 SWAP1 RETURN JUMPDEST POP PUSH2 0xDE CALLDATASIZE PUSH2 0x32D JUMP JUMPDEST SWAP2 SWAP1 DUP1 ISZERO PUSH2 0x2AC JUMPI PUSH2 0xF1 DUP4 DUP3 DUP5 PUSH2 0x479 JUMP JUMPDEST SWAP3 DUP5 SWAP1 PUSH1 0x40 MLOAD SWAP2 PUSH32 0xCC3735A920A3CA505D382BBC545AF43D6000803E6038573D6000FD5B3D6000F3 PUSH1 0x60 MSTORE PUSH32 0x5155F3363D3D373D3D363D7F360894A13BA1A3210667C828492DB98DCA3E2076 PUSH1 0x40 MSTORE PUSH2 0x6009 PUSH1 0x20 MSTORE PUSH32 0x0 PUSH1 0x1E MSTORE PUSH9 0x603D3D8160223D3973 PUSH1 0xA MSTORE PUSH1 0x5F PUSH1 0x21 KECCAK256 PUSH1 0x35 DUP5 ADD MSTORE ADDRESS PUSH1 0x58 SHL DUP4 MSTORE PUSH1 0xFF DUP4 MSTORE8 DUP6 PUSH1 0x15 DUP5 ADD MSTORE PUSH1 0x55 DUP4 KECCAK256 SWAP1 CALLVALUE ISZERO SWAP7 DUP3 EXTCODESIZE ISZERO PUSH2 0x290 JUMPI POP POP PUSH1 0x1 SWAP6 PUSH2 0x28B JUMPI DUP7 CODESIZE DUP2 DUP1 CALLVALUE DUP6 GAS CALL ISZERO PUSH2 0x27E JUMPI JUMPDEST PUSH1 0x40 DUP4 SWAP1 MSTORE PUSH1 0x60 DUP8 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP5 ISZERO PUSH2 0x1DC JUMPI JUMPDEST PUSH1 0x20 DUP6 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP2 DUP1 PUSH2 0x20C PUSH32 0xF8E246D8281C915FEAF5C1FFD75D9A144F6DBDBBF545E286088661B19D8028F4 SWAP4 DUP7 DUP9 DUP11 SWAP8 PUSH2 0x424 JUMP JUMPDEST SUB SWAP1 LOG2 DUP3 EXTCODESIZE ISZERO PUSH2 0x27A JUMPI PUSH1 0x40 MLOAD PUSH4 0x3796F387 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE SWAP4 SWAP2 DUP3 SWAP2 DUP6 SWAP2 DUP3 SWAP2 PUSH2 0x241 SWAP2 PUSH1 0x24 DUP5 ADD SWAP2 SWAP1 PUSH2 0x38A JUMP JUMPDEST SUB DUP2 DUP4 DUP7 GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x26D JUMPI PUSH1 0x20 SWAP4 PUSH2 0x25D JUMPI JUMPDEST DUP1 DUP1 PUSH2 0x1D1 JUMP JUMPDEST DUP2 PUSH2 0x267 SWAP2 PUSH2 0x441 JUMP JUMPDEST CODESIZE PUSH2 0x256 JUMP JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 RETURNDATASIZE SWAP1 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP4 DUP1 REVERT JUMPDEST PUSH4 0xB12D13EB DUP8 MSTORE PUSH1 0x4 PUSH1 0x1C REVERT JUMPDEST PUSH2 0x1B7 JUMP JUMPDEST SWAP2 POP SWAP6 POP PUSH1 0x5F PUSH1 0x21 CALLVALUE CREATE2 DUP1 PUSH2 0x1B7 JUMPI PUSH4 0x30116425 DUP8 MSTORE PUSH1 0x4 PUSH1 0x1C REVERT JUMPDEST PUSH4 0x3C776BE1 PUSH1 0xE0 SHL DUP5 MSTORE PUSH1 0x4 DUP5 REVERT JUMPDEST POP CALLVALUE PUSH2 0x8C JUMPI PUSH1 0x20 SWAP1 PUSH2 0x303 PUSH2 0x2D0 CALLDATASIZE PUSH2 0x32D JUMP JUMPDEST SWAP1 PUSH2 0x2FD SWAP4 SWAP3 SWAP4 PUSH32 0x0 PUSH2 0x4A7 JUMP JUMPDEST SWAP4 PUSH2 0x479 JUMP JUMPDEST SWAP1 PUSH1 0xFF DUP4 MSTORE8 PUSH1 0x35 MSTORE ADDRESS PUSH1 0x60 SHL PUSH1 0x1 MSTORE PUSH1 0x15 MSTORE PUSH1 0x55 DUP2 KECCAK256 SWAP1 PUSH1 0x35 MSTORE PUSH1 0x40 MLOAD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE RETURN JUMPDEST SWAP1 PUSH1 0x40 PUSH1 0x3 NOT DUP4 ADD SLT PUSH2 0x385 JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x385 JUMPI DUP3 PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0x385 JUMPI DUP1 PUSH1 0x4 ADD CALLDATALOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP5 GT PUSH2 0x385 JUMPI PUSH1 0x24 DUP5 PUSH1 0x5 SHL DUP4 ADD ADD GT PUSH2 0x385 JUMPI PUSH1 0x24 ADD SWAP2 SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 PUSH1 0x20 DUP4 DUP3 DUP2 MSTORE ADD SWAP1 PUSH1 0x20 DUP2 PUSH1 0x5 SHL DUP6 ADD ADD SWAP4 DUP4 PUSH1 0x0 SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x3B2 JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 PUSH1 0x1F NOT DUP3 DUP3 SUB ADD DUP7 MSTORE DUP7 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT ISZERO PUSH2 0x385 JUMPI DUP4 ADD SWAP1 PUSH1 0x20 DUP3 CALLDATALOAD SWAP3 ADD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x385 JUMPI DUP1 CALLDATASIZE SUB DUP4 SGT PUSH2 0x385 JUMPI PUSH1 0x20 DUP3 DUP3 DUP1 PUSH1 0x1 SWAP7 DUP5 SWAP7 SWAP6 DUP6 SWAP7 MSTORE DUP5 DUP5 ADD CALLDATACOPY PUSH1 0x0 DUP3 DUP3 ADD DUP5 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND ADD ADD SWAP9 ADD SWAP7 ADD SWAP5 SWAP4 ADD SWAP2 SWAP1 PUSH2 0x3A2 JUMP JUMPDEST SWAP4 SWAP3 SWAP2 PUSH1 0x20 SWAP2 PUSH2 0x43C SWAP2 PUSH1 0x40 DUP8 MSTORE PUSH1 0x40 DUP8 ADD SWAP2 PUSH2 0x38A JUMP JUMPDEST SWAP4 ADD MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F DUP1 NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x463 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 PUSH2 0x4A1 SWAP1 PUSH2 0x493 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 PUSH1 0x20 DUP5 ADD SWAP7 DUP8 PUSH2 0x424 JUMP JUMPDEST SUB PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x441 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP2 PUSH32 0xCC3735A920A3CA505D382BBC545AF43D6000803E6038573D6000FD5B3D6000F3 PUSH1 0x60 MSTORE PUSH32 0x5155F3363D3D373D3D363D7F360894A13BA1A3210667C828492DB98DCA3E2076 PUSH1 0x40 MSTORE PUSH2 0x6009 PUSH1 0x20 MSTORE PUSH1 0x1E MSTORE PUSH9 0x603D3D8160223D3973 PUSH1 0xA MSTORE PUSH1 0x5F PUSH1 0x21 KECCAK256 SWAP2 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH1 0x60 MSTORE JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP1 NUMBER 0xAC CODECOPY 0xE0 0xDE 0xDA PUSH24 0xCB1183DBC33F14B238E32F625441A810092DEAC30B2A90E PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ", + "sourceMap": "525:3885:17:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;49637:1499:10;525:3885:17;49637:1499:10;;;525:3885:17;;;;;;;;;;;;;;;;;;;;3890:44;3919:14;3890:44;:::i;:::-;525:3885;;;;;;;;;;;;;;;;;;;;;;;;660:39;-1:-1:-1;;;;;525:3885:17;;;;;;;;;;;:::i;:::-;2602:18;;;;2598:71;;2791:23;;;;;:::i;:::-;2728:87;49540:20:10;49637:1499;525:3885:17;49637:1499:10;;;;;;525:3885:17;49637:1499:10;;;;2775:14:17;49637:1499:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;2764:9:17;;49637:1499:10;;;;;;;;;;;;;;;2764:9:17;;;49637:1499:10;;;;;;;525:3885:17;49637:1499:10;;;;;;;-1:-1:-1;;;;;525:3885:17;;2892:16;2888:137;;49637:1499:10;;525:3885:17;;;;;;;2888:137;2929:45;;;;;;;;;;:::i;:::-;;;;2988:26;;;;;525:3885;;-1:-1:-1;;;2988:26:17;;49637:1499:10;525:3885:17;2988:26;;525:3885;;;;;;;;;;;;;;;;;:::i;:::-;2988:26;;;;;;;;;;;49637:1499:10;2988:26:17;;;2888:137;;;;;2988:26;;;;;:::i;:::-;;;;;525:3885;;;;;;;;;;;2988:26;525:3885;;;49637:1499:10;;;;525:3885:17;49637:1499:10;;;;;;2764:9:17;;;;49637:1499:10;;2764:9:17;49637:1499:10;;;;;;;525:3885:17;49637:1499:10;;2598:71:17;-1:-1:-1;;;2643:15:17;;525:3885;2643:15;;525:3885;;;;;;;3556:23;525:3885;;;:::i;:::-;3919:14;3890:44;3919:14;;;;3890:44;:::i;:::-;3556:23;;:::i;:::-;155145:366:10;;;;;;3589:4:17;155145:366:10;;;;;;;;;;;;525:3885:17;;;;;;;;;;;;;;;-1:-1:-1;;525:3885:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;525:3885:17;;;;;;;;;;;;;;;;;;;;-1:-1:-1;525:3885:17;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;525:3885:17;;;;;;;;-1:-1:-1;;525:3885:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;525:3885:17;;;;;-1:-1:-1;525:3885:17;4258:150;;;4375:25;4258:150;4375:25;525:3885;;4375:25;;;;;;;;;:::i;:::-;;525:3885;;4375:25;;;;;;:::i;:::-;525:3885;4365:36;;4258:150;:::o;51982:703:10:-;;52125:554;;;;;;;;;;;;;;;;;;;;;;;;;;51982:703::o" + }, + "methodIdentifiers": { + "createAccount(bytes[],uint256)": "3ffba36f", + "getAddress(bytes[],uint256)": "250b1b41", + "implementation()": "5c60da1b", + "initCodeHash()": "db4c545e" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation_\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ImplementationUndeployed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OwnerRequired\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes[]\",\"name\":\"owners\",\"type\":\"bytes[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"AccountCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"owners\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"createAccount\",\"outputs\":[{\"internalType\":\"contract GianoSmartWallet\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"owners\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"getAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initCodeHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Applied Blockchain (https://github.com/appliedblockchain/giano)Coinbase (https://github.com/coinbase/smart-wallet)Solady (https://github.com/vectorized/solady/blob/main/src/accounts/ERC4337Factory.sol)\",\"events\":{\"AccountCreated(address,bytes[],uint256)\":{\"params\":{\"account\":\"The address of the created account.\",\"nonce\":\"The nonce of the created account.\",\"owners\":\"Array of initial owners.\"}}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"implementation_\":\"The address of the GianoSmartWallet implementation which new accounts will proxy to.\"}},\"createAccount(bytes[],uint256)\":{\"details\":\"Deployed as a ERC-1967 proxy that's implementation is `this.implementation`.\",\"params\":{\"nonce\":\"The nonce of the account, a caller defined value which allows multiple accounts with the same `owners` to exist at different addresses.\",\"owners\":\"Array of initial owners. Each item should be an ABI encoded address or 64 byte public key.\"},\"returns\":{\"account\":\"The address of the ERC-1967 proxy created with inputs `owners`, `nonce`, and `this.implementation`.\"}},\"getAddress(bytes[],uint256)\":{\"params\":{\"nonce\":\"The nonce provided to `createAccount()`.\",\"owners\":\"Array of initial owners. Each item should be an ABI encoded address or 64 byte public key.\"},\"returns\":{\"_0\":\"The predicted account deployment address.\"}},\"initCodeHash()\":{\"returns\":{\"_0\":\"The initialization code hash.\"}}},\"title\":\"Giano Smart Wallet Factory\",\"version\":1},\"userdoc\":{\"errors\":{\"ImplementationUndeployed()\":[{\"notice\":\"Thrown when trying to construct with an implementation that is not deployed.\"}],\"OwnerRequired()\":[{\"notice\":\"Thrown when trying to create a new `GianoSmartWallet` account without any owner.\"}]},\"events\":{\"AccountCreated(address,bytes[],uint256)\":{\"notice\":\"Emitted when a new account is created.\"}},\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Factory constructor used to initialize the implementation address to use for future GianoSmartWallet deployments.\"},\"createAccount(bytes[],uint256)\":{\"notice\":\"Returns the deterministic address for a GianoSmartWallet created with `owners` and `nonce` deploys and initializes contract if it has not yet been created.\"},\"getAddress(bytes[],uint256)\":{\"notice\":\"Returns the deterministic address of the account that would be created by `createAccount`.\"},\"implementation()\":{\"notice\":\"Address of the ERC-4337 implementation used as implementation for new accounts.\"},\"initCodeHash()\":{\"notice\":\"Returns the initialization code hash of the account: a ERC1967 proxy that's implementation is `this.implementation`.\"}},\"notice\":\"GianoSmartWallet factory, based on Solady's ERC4337Factory.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/GianoSmartWalletFactory.sol\":\"GianoSmartWalletFactory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@account-abstraction/contracts/core/Helpers.sol\":{\"keccak256\":\"0x6247e011a6cb0b263b3aa098822977181674d91b62e5bdfe04c6e66f72da25d6\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ca829a69b3fbc74fec8e140d42a2bf93bc3512609272f031c846470f61f0ab7e\",\"dweb:/ipfs/QmP3r3MBgAN39KeVB1rCGJWwcBcotNt26ALtAR54poQ1Jc\"]},\"@account-abstraction/contracts/core/UserOperationLib.sol\":{\"keccak256\":\"0x9d50ece985d35f82e33e5da417595c86fac10449e3d10895d08363d33aad454b\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b1d11cc364c8bf7ed5388268c895b5ffed16e87dfbcb320ddeeba5e7974315dc\",\"dweb:/ipfs/QmYSpvjxEjweietQrYZagwQ52ipy7eXx4rwvnTzXKeGeMS\"]},\"@account-abstraction/contracts/interfaces/IAccount.sol\":{\"keccak256\":\"0x38710bec0cb20ff4ceef46a80475b5bdabc27b7efd2687fd473db68332f61b78\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://dea7a723e1ef852e8764e69914a345d2e8bc5e13facfc9d5c29d791cb4ab0020\",\"dweb:/ipfs/QmU8dYgyF4DBJXFqjwLAtnE3q8q259ChfoEk9a6wyhHzEP\"]},\"@account-abstraction/contracts/interfaces/PackedUserOperation.sol\":{\"keccak256\":\"0x1129b46381db68eddbc5cb49e50664667b66b03c480453858e7b25eabe444359\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://499a948aba60480dba6e25c763b8d918f1c246eb7a3302e04f493e080f3295be\",\"dweb:/ipfs/QmeRhhswf4NACcBKam2PyjpTP2ddSm648kah5kkQJsvwz3\"]},\"FreshCryptoLib/FCL_ecdsa.sol\":{\"keccak256\":\"0x679d2e9a655cd7e156a0cfc24de0aca88d4e0b34a8e0dfe6a599f23af092f5a2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db31eb84c6f854f076d2501e3d8b5a606fb4924168bdfc6fc3de84e67ed8a80d\",\"dweb:/ipfs/QmWGAmc7B4aT6Ki52uF9QmPQKWipaptit7r3JknBHjUGfe\"]},\"FreshCryptoLib/FCL_elliptic.sol\":{\"keccak256\":\"0xac7bb3260a446851f45b8cb71e31d64ca469d7711ed04662092a9554f1283a38\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f9b0dc5a2306ad3f3a0ff4a5b947fe49422181e97c163ea237fc8bfc6736429d\",\"dweb:/ipfs/QmeruF7BvG5BNnqwqwdshoVXuXqXtajbUYB19KwPynHrQE\"]},\"openzeppelin-contracts/contracts/utils/Base64.sol\":{\"keccak256\":\"0xbee2b819e1b4bf569ffc1b1b9d560b4abd6a589575f3093edaab9244de18a0c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e478c0e9bbf3eb8cd3b7784f9b397603e34747f9ffd16571ed1d89ce102de389\",\"dweb:/ipfs/QmZ6zXpwy5xRxx9RkodJmDZSUTeEqPQUanAC5TUoYqW2VR\"]},\"solady/accounts/Receiver.sol\":{\"keccak256\":\"0xc879aa81dd5639f5fd97b31acd91658ffe33ae4b72b70ed7bd701c37addce43b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2e03a8d37d48644857d94f7432c1e2272bfd19649dfe80aba8f979f157f71f00\",\"dweb:/ipfs/QmWWS34bNWhiZgLXS9gtD8N2dxreRsVXxhvQRKqd4wKUuU\"]},\"solady/utils/CallContextChecker.sol\":{\"keccak256\":\"0xc54c743a03f4909826712e9c6b683ca95e8b0c120c55284a9e3572621ebd734b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3d3138009aba3d2fd310636f3cc1d6029e970c57ddb74693bebf2a02d3e6f12d\",\"dweb:/ipfs/QmauMpcVDyQqVnAUF75DXy831LvtxyFS7GND7kge1Zgw55\"]},\"solady/utils/LibBytes.sol\":{\"keccak256\":\"0x320c3c933df51e8fd6f1fc96de721c8cc6f1be1d4c586c11f1c472a23b86eba5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cec71f42247eda74535c6e695a2ac194268a342594a26c090bafd04434698b20\",\"dweb:/ipfs/QmXA8Qaw6DdWujdrNHMHpDLNGG4QCgC859ozivrxkxp7Ea\"]},\"solady/utils/LibClone.sol\":{\"keccak256\":\"0x1b96fd03a3948155bd2fe95dc4980930c759b174026e18f11bc8e88d55ae030e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://64998d16472a127031ee6a796ed9afcf13dd662afd30eb4d3e2a42c2bc9fd204\",\"dweb:/ipfs/QmTXHGy9t8YTW96tjiZ8RBqmijXUTqc1JznEBqHv8Duc4A\"]},\"solady/utils/LibString.sol\":{\"keccak256\":\"0x8a6b219f6ccda90c08e2debae62618d78d6f0cef086eb6c9503793d7f12815dd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d1301acbf7371cb51ab01fe3bee8a9b732ee0bcf6cc0db20ed5a3fb9241d675e\",\"dweb:/ipfs/QmXuM4tSfPDeFRvP3nEQmuezp1yEm4HxyWtU41FjiCdxAG\"]},\"solady/utils/SignatureCheckerLib.sol\":{\"keccak256\":\"0x098c7eb88b3048f227b240e0e5bf1da4a8f7622b30f6d7c06416bfcab3225e77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://50c2766f652916c5d6433665fb1c3b2f04c3d9292a35c12e0f8d7c71dd6438cb\",\"dweb:/ipfs/QmWTMwN2RDZUUPg7KkH1qFBjTSh84Zw8bbYwRBCQUtLN2h\"]},\"solady/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x63899eaf1a24713464b8084ada33a83c4b7db789fe83ae22f016e39646bee361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://617fa735ffa8ba31051745614a508abd69d2cfc1b1bc1eb3c772865db5f7ce65\",\"dweb:/ipfs/QmR1pQbHPyXcLbFm2vHrXBs1qRFrGC22gF7wWYamYy8aaE\"]},\"src/AuthenticatedStaticCaller.sol\":{\"keccak256\":\"0x06bb6bea86630eda0e5920c4fe4a5d51e89d18072faf7c4b5d7ae8ca82b87b94\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2920f02558ea8bbe8ca21cbe1bcbbea7d3c4d7f0d3e812cde706f95c53b399aa\",\"dweb:/ipfs/QmaNpbMazUf1n6hpXSMq7RDJix7ipPiALKE93fMmBtbS4A\"]},\"src/ERC1271.sol\":{\"keccak256\":\"0x75c3fe08b6e1789dab7714196704f425d1afea21d725fcb6c418a70ef5bf6fad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd292bcf9b1891abb517323636493499dbdd00bebc1f759c07fb26e103a1b71d\",\"dweb:/ipfs/QmWMT3C54pakfUCTkcPzFQAvE8nRnPqDDpFaDhY5A9fpEp\"]},\"src/GianoSmartWallet.sol\":{\"keccak256\":\"0x10f35f381fe7d934aa2f83dde5f50a69efbe49600679cb8cd7777fb07931e4e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a93eeba861ccaf70dfe6d9ed594f5ae55d37ee9feab8e4867c95657b36ae1b51\",\"dweb:/ipfs/QmTPuS5LuaW2Fx3QAXoUD4gSErZ8CoRQKFk8Nsy3vMe2PV\"]},\"src/GianoSmartWalletFactory.sol\":{\"keccak256\":\"0x047319a845313e24dd7d80263618e28075e3bb9ee3bbfbe68cbc2d3784e88114\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://14f9fcac74018f75d8f1ddc5aa790f4a93797fbcbb3c047f391142896ca69324\",\"dweb:/ipfs/QmZhpKteqQgt7Wt72pN7Ae9mk5J2W3k6cteaFbFzDBMcU9\"]},\"src/MultiOwnable.sol\":{\"keccak256\":\"0x46a9fa25c7de87b56df47b67d61b6efd96ed3f382c5d440d04de55fa23bccadd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75ac03bdfdddec29b0b1f4f9c33add4b5b9d5400b1a54691a544a59ac710de5c\",\"dweb:/ipfs/QmXajkF7z8rqmDE89H4uVaKCDyQsdwphif8BHZLLu9MQ5k\"]},\"webauthn-sol/WebAuthn.sol\":{\"keccak256\":\"0x8b940975249f72155110e5e5b4611fc9031330538183862b9d8f12ea7c30ad25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://433957720c13a834b9aab98a5054e9dabe5c660a1a3fb267e6ad1a22b99b68ed\",\"dweb:/ipfs/QmTkQxCCf8kDAHa6rBwLT2mxFXN3tSAWyx4rLmgcLkFkRh\"]}},\"version\":1}" + } + }, + "src/MultiOwnable.sol": { + "MultiOwnable": { + "abi": [ + { + "inputs": [ + { + "internalType": "bytes", + "name": "owner", + "type": "bytes" + } + ], + "name": "AlreadyOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "owner", + "type": "bytes" + } + ], + "name": "InvalidEthereumAddressOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "owner", + "type": "bytes" + } + ], + "name": "InvalidOwnerBytesLength", + "type": "error" + }, + { + "inputs": [], + "name": "LastOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "NoOwnerAtIndex", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "ownersRemaining", + "type": "uint256" + } + ], + "name": "NotLastOwner", + "type": "error" + }, + { + "inputs": [], + "name": "Unauthorized", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "expectedOwner", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "actualOwner", + "type": "bytes" + } + ], + "name": "WrongOwnerAtIndex", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "owner", + "type": "bytes" + } + ], + "name": "AddOwner", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "owner", + "type": "bytes" + } + ], + "name": "RemoveOwner", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "addOwnerAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "x", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "y", + "type": "bytes32" + } + ], + "name": "addOwnerPublicKey", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isOwnerAddress", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "account", + "type": "bytes" + } + ], + "name": "isOwnerBytes", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "x", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "y", + "type": "bytes32" + } + ], + "name": "isOwnerPublicKey", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "nextOwnerIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "ownerAtIndex", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "ownerCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "owner", + "type": "bytes" + } + ], + "name": "removeLastOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "owner", + "type": "bytes" + } + ], + "name": "removeOwnerAtIndex", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "removedOwnersCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60808060405234601557610aa4908161001b8239f35b600080fdfe608080604052600436101561001357600080fd5b60003560e01c908163066a1eb714610318575080630db02622146102f55780630f0f3f24146102ab5780631ca5393f1461025157806329565e3b146101ec57806336d9cf9b146101c157806389625b57146101815780638ea690291461014a578063a2e1a8d814610111578063b8197367146100c85763d948fd2e1461009857600080fd5b346100c35760003660031901126100c3576020600080516020610a2f83398151915254604051908152f35b600080fd5b346100c3576100d6366103dc565b906100df610643565b6100e76104bd565b92600184116100fc576100fa9350610886565b005b83631047e35560e31b60005260045260246000fd5b346100c35760203660031901126100c3576004356001600160a01b03811681036100c357610140602091610618565b6040519015158152f35b346100c35760203660031901126100c35761017d610169600435610548565b604051918291602083526020830190610453565b0390f35b346100c35761018f366103dc565b90610198610643565b60016101a26104bd565b146101b0576100fa92610886565b63948bf89760e01b60005260046000fd5b346100c35760003660031901126100c3576020600080516020610a4f83398151915254604051908152f35b346100c3576100fa6101fd36610347565b610205610643565b60405191602083015260408201526040815261022260608261035d565b600080516020610a2f833981519152549061023c826104ff565b600080516020610a2f83398151915255610689565b346100c35760203660031901126100c35760043567ffffffffffffffff81116100c357366023820112156100c35760ff61029f61029a6020933690602481600401359101610395565b610478565b54166040519015158152f35b346100c35760203660031901126100c3576004356001600160a01b038116908190036100c3576100fa906102dd610643565b6040519060208201526020815261022260408261035d565b346100c35760003660031901126100c35760206103106104bd565b604051908152f35b346100c35760ff61029f60209261032e36610347565b908583015260408201526040815261029a60608261035d565b60409060031901126100c3576004359060243590565b90601f8019910116810190811067ffffffffffffffff82111761037f57604052565b634e487b7160e01b600052604160045260246000fd5b92919267ffffffffffffffff821161037f57604051916103bf601f8201601f19166020018461035d565b8294818452818301116100c3578281602093846000960137010152565b60406003198201126100c3576004359160243567ffffffffffffffff81116100c357826023820112156100c35780600401359267ffffffffffffffff84116100c357602484830101116100c3576024019190565b60005b8381106104435750506000910152565b8181015183820152602001610433565b9060209161046c81518092818552858086019101610430565b601f01601f1916010190565b6020610491918160405193828580945193849201610430565b81017f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f50381520301902090565b600080516020610a2f83398151915254600080516020610a4f8339815191525481039081116104e95790565b634e487b7160e01b600052601160045260246000fd5b60001981146104e95760010190565b90600182811c9216801561053e575b602083101461052857565b634e487b7160e01b600052602260045260246000fd5b91607f169161051d565b6000527f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f5026020526040600020604051908160008254926105878461050e565b80845293600181169081156105f657506001146105af575b506105ac9250038261035d565b90565b90506000929192526020600020906000915b8183106105da5750509060206105ac928201013861059f565b60209193508060019154838588010152019101909183926105c1565b9050602092506105ac94915060ff191682840152151560051b8201013861059f565b61063e60ff916040519060018060a01b031660208201526020815261029a60408261035d565b541690565b61064c33610618565b8015610669575b610667576282b42960e81b60005260046000fd5b565b50303314610653565b81811061067d575050565b60008155600101610672565b60ff61069482610478565b541661083c576106a381610478565b600160ff19825416179055816000527f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f5026020526040600020815167ffffffffffffffff811161037f576106f6825461050e565b601f81116107ff575b506020601f82116001146107755791817f38109edc26e166b5579352ce56a50813177eb25208fd90d61f2f37838622022094926107659460009161076a575b508160011b916000199060031b1c1916179055604051918291602083526020830190610453565b0390a2565b90508301513861073e565b601f1982169083600052806000209160005b8181106107e75750926107659492600192827f38109edc26e166b5579352ce56a50813177eb25208fd90d61f2f3783862202209896106107ce575b5050811b019055610169565b85015160001960f88460031b161c1916905538806107c2565b9192602060018192868a015181550194019201610787565b61082c90836000526020600020601f840160051c81019160208510610832575b601f0160051c0190610672565b386106ff565b909150819061081f565b60405163468b12ad60e11b815260206004820152908190610861906024830190610453565b0390fd5b908060209392818452848401376000828201840152601f01601f1916010190565b9161089083610548565b805115610a1957805160208201206108a9368486610395565b60208151910120036109d85750907fcf95bbfe6f870f8cc40482dc3dccdafd268f0e9ce0a4f24ea1bea9be64e505ff91604051818382376020818381017f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f50381520301902060ff198154169055836000527f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f502602052604060002061094c815461050e565b9081610994575b505061096d600080516020610a4f833981519152546104ff565b600080516020610a4f83398151915255610765604051928392602084526020840191610865565b81601f600093116001146109ac5750555b3880610953565b818352602083206109c891601f0160051c810190600101610672565b80825281602081209155556109a5565b610a0761086192949360405195869563781f2e3960e01b87526004870152606060248701526064860191610865565b83810360031901604485015290610453565b8363340c473d60e11b60005260045260246000fdfe0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f5000627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f501a264697066735822122008bf9e3c9de7ba06546136e69ceefea4e48f805cfa106f7803c7fdf5277353a464736f6c634300081c0033", + "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x15 JUMPI PUSH2 0xAA4 SWAP1 DUP2 PUSH2 0x1B DUP3 CODECOPY RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x66A1EB7 EQ PUSH2 0x318 JUMPI POP DUP1 PUSH4 0xDB02622 EQ PUSH2 0x2F5 JUMPI DUP1 PUSH4 0xF0F3F24 EQ PUSH2 0x2AB JUMPI DUP1 PUSH4 0x1CA5393F EQ PUSH2 0x251 JUMPI DUP1 PUSH4 0x29565E3B EQ PUSH2 0x1EC JUMPI DUP1 PUSH4 0x36D9CF9B EQ PUSH2 0x1C1 JUMPI DUP1 PUSH4 0x89625B57 EQ PUSH2 0x181 JUMPI DUP1 PUSH4 0x8EA69029 EQ PUSH2 0x14A JUMPI DUP1 PUSH4 0xA2E1A8D8 EQ PUSH2 0x111 JUMPI DUP1 PUSH4 0xB8197367 EQ PUSH2 0xC8 JUMPI PUSH4 0xD948FD2E EQ PUSH2 0x98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xC3 JUMPI PUSH1 0x20 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA2F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH2 0xD6 CALLDATASIZE PUSH2 0x3DC JUMP JUMPDEST SWAP1 PUSH2 0xDF PUSH2 0x643 JUMP JUMPDEST PUSH2 0xE7 PUSH2 0x4BD JUMP JUMPDEST SWAP3 PUSH1 0x1 DUP5 GT PUSH2 0xFC JUMPI PUSH2 0xFA SWAP4 POP PUSH2 0x886 JUMP JUMPDEST STOP JUMPDEST DUP4 PUSH4 0x1047E355 PUSH1 0xE3 SHL PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xC3 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0xC3 JUMPI PUSH2 0x140 PUSH1 0x20 SWAP2 PUSH2 0x618 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xC3 JUMPI PUSH2 0x17D PUSH2 0x169 PUSH1 0x4 CALLDATALOAD PUSH2 0x548 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x453 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH2 0x18F CALLDATASIZE PUSH2 0x3DC JUMP JUMPDEST SWAP1 PUSH2 0x198 PUSH2 0x643 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x1A2 PUSH2 0x4BD JUMP JUMPDEST EQ PUSH2 0x1B0 JUMPI PUSH2 0xFA SWAP3 PUSH2 0x886 JUMP JUMPDEST PUSH4 0x948BF897 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xC3 JUMPI PUSH1 0x20 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA4F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH2 0xFA PUSH2 0x1FD CALLDATASIZE PUSH2 0x347 JUMP JUMPDEST PUSH2 0x205 PUSH2 0x643 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x40 DUP2 MSTORE PUSH2 0x222 PUSH1 0x60 DUP3 PUSH2 0x35D JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA2F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD SWAP1 PUSH2 0x23C DUP3 PUSH2 0x4FF JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA2F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE PUSH2 0x689 JUMP JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xC3 JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xC3 JUMPI CALLDATASIZE PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0xC3 JUMPI PUSH1 0xFF PUSH2 0x29F PUSH2 0x29A PUSH1 0x20 SWAP4 CALLDATASIZE SWAP1 PUSH1 0x24 DUP2 PUSH1 0x4 ADD CALLDATALOAD SWAP2 ADD PUSH2 0x395 JUMP JUMPDEST PUSH2 0x478 JUMP JUMPDEST SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xC3 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 DUP2 SWAP1 SUB PUSH2 0xC3 JUMPI PUSH2 0xFA SWAP1 PUSH2 0x2DD PUSH2 0x643 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x20 DUP2 MSTORE PUSH2 0x222 PUSH1 0x40 DUP3 PUSH2 0x35D JUMP JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xC3 JUMPI PUSH1 0x20 PUSH2 0x310 PUSH2 0x4BD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH1 0xFF PUSH2 0x29F PUSH1 0x20 SWAP3 PUSH2 0x32E CALLDATASIZE PUSH2 0x347 JUMP JUMPDEST SWAP1 DUP6 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x40 DUP2 MSTORE PUSH2 0x29A PUSH1 0x60 DUP3 PUSH2 0x35D JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH1 0x3 NOT ADD SLT PUSH2 0xC3 JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1F DUP1 NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x37F JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 SWAP2 SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x37F JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x3BF PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP5 PUSH2 0x35D JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0xC3 JUMPI DUP3 DUP2 PUSH1 0x20 SWAP4 DUP5 PUSH1 0x0 SWAP7 ADD CALLDATACOPY ADD ADD MSTORE JUMP JUMPDEST PUSH1 0x40 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0xC3 JUMPI PUSH1 0x4 CALLDATALOAD SWAP2 PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xC3 JUMPI DUP3 PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0xC3 JUMPI DUP1 PUSH1 0x4 ADD CALLDATALOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP5 GT PUSH2 0xC3 JUMPI PUSH1 0x24 DUP5 DUP4 ADD ADD GT PUSH2 0xC3 JUMPI PUSH1 0x24 ADD SWAP2 SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT PUSH2 0x443 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x433 JUMP JUMPDEST SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x46C DUP2 MLOAD DUP1 SWAP3 DUP2 DUP6 MSTORE DUP6 DUP1 DUP7 ADD SWAP2 ADD PUSH2 0x430 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x491 SWAP2 DUP2 PUSH1 0x40 MLOAD SWAP4 DUP3 DUP6 DUP1 SWAP5 MLOAD SWAP4 DUP5 SWAP3 ADD PUSH2 0x430 JUMP JUMPDEST DUP2 ADD PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F503 DUP2 MSTORE SUB ADD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA2F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA4F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD DUP2 SUB SWAP1 DUP2 GT PUSH2 0x4E9 JUMPI SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 NOT DUP2 EQ PUSH2 0x4E9 JUMPI PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x53E JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x528 JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x51D JUMP JUMPDEST PUSH1 0x0 MSTORE PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F502 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD SWAP1 DUP2 PUSH1 0x0 DUP3 SLOAD SWAP3 PUSH2 0x587 DUP5 PUSH2 0x50E JUMP JUMPDEST DUP1 DUP5 MSTORE SWAP4 PUSH1 0x1 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x5F6 JUMPI POP PUSH1 0x1 EQ PUSH2 0x5AF JUMPI JUMPDEST POP PUSH2 0x5AC SWAP3 POP SUB DUP3 PUSH2 0x35D JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 SWAP3 SWAP2 SWAP3 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x0 SWAP2 JUMPDEST DUP2 DUP4 LT PUSH2 0x5DA JUMPI POP POP SWAP1 PUSH1 0x20 PUSH2 0x5AC SWAP3 DUP3 ADD ADD CODESIZE PUSH2 0x59F JUMP JUMPDEST PUSH1 0x20 SWAP2 SWAP4 POP DUP1 PUSH1 0x1 SWAP2 SLOAD DUP4 DUP6 DUP9 ADD ADD MSTORE ADD SWAP2 ADD SWAP1 SWAP2 DUP4 SWAP3 PUSH2 0x5C1 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 SWAP3 POP PUSH2 0x5AC SWAP5 SWAP2 POP PUSH1 0xFF NOT AND DUP3 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD CODESIZE PUSH2 0x59F JUMP JUMPDEST PUSH2 0x63E PUSH1 0xFF SWAP2 PUSH1 0x40 MLOAD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x20 DUP2 MSTORE PUSH2 0x29A PUSH1 0x40 DUP3 PUSH2 0x35D JUMP JUMPDEST SLOAD AND SWAP1 JUMP JUMPDEST PUSH2 0x64C CALLER PUSH2 0x618 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x669 JUMPI JUMPDEST PUSH2 0x667 JUMPI PUSH3 0x82B429 PUSH1 0xE8 SHL PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST JUMP JUMPDEST POP ADDRESS CALLER EQ PUSH2 0x653 JUMP JUMPDEST DUP2 DUP2 LT PUSH2 0x67D JUMPI POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x672 JUMP JUMPDEST PUSH1 0xFF PUSH2 0x694 DUP3 PUSH2 0x478 JUMP JUMPDEST SLOAD AND PUSH2 0x83C JUMPI PUSH2 0x6A3 DUP2 PUSH2 0x478 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xFF NOT DUP3 SLOAD AND OR SWAP1 SSTORE DUP2 PUSH1 0x0 MSTORE PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F502 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x37F JUMPI PUSH2 0x6F6 DUP3 SLOAD PUSH2 0x50E JUMP JUMPDEST PUSH1 0x1F DUP2 GT PUSH2 0x7FF JUMPI JUMPDEST POP PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 EQ PUSH2 0x775 JUMPI SWAP2 DUP2 PUSH32 0x38109EDC26E166B5579352CE56A50813177EB25208FD90D61F2F378386220220 SWAP5 SWAP3 PUSH2 0x765 SWAP5 PUSH1 0x0 SWAP2 PUSH2 0x76A JUMPI JUMPDEST POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH1 0x0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x453 JUMP JUMPDEST SUB SWAP1 LOG2 JUMP JUMPDEST SWAP1 POP DUP4 ADD MLOAD CODESIZE PUSH2 0x73E JUMP JUMPDEST PUSH1 0x1F NOT DUP3 AND SWAP1 DUP4 PUSH1 0x0 MSTORE DUP1 PUSH1 0x0 KECCAK256 SWAP2 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0x7E7 JUMPI POP SWAP3 PUSH2 0x765 SWAP5 SWAP3 PUSH1 0x1 SWAP3 DUP3 PUSH32 0x38109EDC26E166B5579352CE56A50813177EB25208FD90D61F2F378386220220 SWAP9 SWAP7 LT PUSH2 0x7CE JUMPI JUMPDEST POP POP DUP2 SHL ADD SWAP1 SSTORE PUSH2 0x169 JUMP JUMPDEST DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE CODESIZE DUP1 PUSH2 0x7C2 JUMP JUMPDEST SWAP2 SWAP3 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP7 DUP11 ADD MLOAD DUP2 SSTORE ADD SWAP5 ADD SWAP3 ADD PUSH2 0x787 JUMP JUMPDEST PUSH2 0x82C SWAP1 DUP4 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD SWAP2 PUSH1 0x20 DUP6 LT PUSH2 0x832 JUMPI JUMPDEST PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP1 PUSH2 0x672 JUMP JUMPDEST CODESIZE PUSH2 0x6FF JUMP JUMPDEST SWAP1 SWAP2 POP DUP2 SWAP1 PUSH2 0x81F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x468B12AD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE SWAP1 DUP2 SWAP1 PUSH2 0x861 SWAP1 PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x453 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 DUP1 PUSH1 0x20 SWAP4 SWAP3 DUP2 DUP5 MSTORE DUP5 DUP5 ADD CALLDATACOPY PUSH1 0x0 DUP3 DUP3 ADD DUP5 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND ADD ADD SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x890 DUP4 PUSH2 0x548 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0xA19 JUMPI DUP1 MLOAD PUSH1 0x20 DUP3 ADD KECCAK256 PUSH2 0x8A9 CALLDATASIZE DUP5 DUP7 PUSH2 0x395 JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD KECCAK256 SUB PUSH2 0x9D8 JUMPI POP SWAP1 PUSH32 0xCF95BBFE6F870F8CC40482DC3DCCDAFD268F0E9CE0A4F24EA1BEA9BE64E505FF SWAP2 PUSH1 0x40 MLOAD DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x20 DUP2 DUP4 DUP2 ADD PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F503 DUP2 MSTORE SUB ADD SWAP1 KECCAK256 PUSH1 0xFF NOT DUP2 SLOAD AND SWAP1 SSTORE DUP4 PUSH1 0x0 MSTORE PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F502 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH2 0x94C DUP2 SLOAD PUSH2 0x50E JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x994 JUMPI JUMPDEST POP POP PUSH2 0x96D PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA4F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH2 0x4FF JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA4F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE PUSH2 0x765 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP3 PUSH1 0x20 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP2 PUSH2 0x865 JUMP JUMPDEST DUP2 PUSH1 0x1F PUSH1 0x0 SWAP4 GT PUSH1 0x1 EQ PUSH2 0x9AC JUMPI POP SSTORE JUMPDEST CODESIZE DUP1 PUSH2 0x953 JUMP JUMPDEST DUP2 DUP4 MSTORE PUSH1 0x20 DUP4 KECCAK256 PUSH2 0x9C8 SWAP2 PUSH1 0x1F ADD PUSH1 0x5 SHR DUP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x672 JUMP JUMPDEST DUP1 DUP3 MSTORE DUP2 PUSH1 0x20 DUP2 KECCAK256 SWAP2 SSTORE SSTORE PUSH2 0x9A5 JUMP JUMPDEST PUSH2 0xA07 PUSH2 0x861 SWAP3 SWAP5 SWAP4 PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP6 PUSH4 0x781F2E39 PUSH1 0xE0 SHL DUP8 MSTORE PUSH1 0x4 DUP8 ADD MSTORE PUSH1 0x60 PUSH1 0x24 DUP8 ADD MSTORE PUSH1 0x64 DUP7 ADD SWAP2 PUSH2 0x865 JUMP JUMPDEST DUP4 DUP2 SUB PUSH1 0x3 NOT ADD PUSH1 0x44 DUP6 ADD MSTORE SWAP1 PUSH2 0x453 JUMP JUMPDEST DUP4 PUSH4 0x340C473D PUSH1 0xE1 SHL PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID MOD 0x27 0xF7 0x2A CREATE 0xE6 DELEGATECALL SLT NOT JUMPDEST 0xD DUP11 0xCB 0xE4 CODESIZE 0xB2 DUP1 SWAP1 0xDD SLOAD JUMPDEST PUSH30 0x2331FCCF77723561F5000627F72AF0E6F412195B0D8ACBE438B28090DD54 JUMPDEST PUSH30 0x2331FCCF77723561F501A264697066735822122008BF9E3C9DE7BA065461 CALLDATASIZE 0xE6 SWAP13 0xEE INVALID LOG4 0xE4 DUP16 DUP1 TLOAD STATICCALL LT PUSH16 0x7803C7FDF5277353A464736F6C634300 ADDMOD SHR STOP CALLER ", + "sourceMap": "1427:10263:18:-:0;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "abi_decode_available_length_bytes": { + "entryPoint": 917, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_decode_bytes32t_bytes32": { + "entryPoint": 839, + "id": null, + "parameterSlots": 1, + "returnSlots": 2 + }, + "abi_decode_uint256t_bytes_calldata": { + "entryPoint": 988, + "id": null, + "parameterSlots": 1, + "returnSlots": 3 + }, + "abi_encode_bytes": { + "entryPoint": 1107, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_bytes_calldata": { + "entryPoint": 2149, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "clear_storage_range_bytes1": { + "entryPoint": 1650, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "copy_memory_to_memory_with_cleanup": { + "entryPoint": 1072, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "extract_byte_array_length": { + "entryPoint": 1294, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "finalize_allocation": { + "entryPoint": 861, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "fun_addOwnerAtIndex": { + "entryPoint": 1673, + "id": 8000, + "parameterSlots": 2, + "returnSlots": 0 + }, + "fun_checkOwner": { + "entryPoint": 1603, + "id": 8091, + "parameterSlots": 0, + "returnSlots": 0 + }, + "fun_isOwnerAddress": { + "entryPoint": 1560, + "id": 7768, + "parameterSlots": 1, + "returnSlots": 1 + }, + "fun_ownerAtIndex": { + "entryPoint": 1352, + "id": 7819, + "parameterSlots": 1, + "returnSlots": 1 + }, + "fun_ownerCount": { + "entryPoint": 1213, + "id": 7849, + "parameterSlots": 0, + "returnSlots": 1 + }, + "fun_removeOwnerAtIndex": { + "entryPoint": 2182, + "id": 8067, + "parameterSlots": 3, + "returnSlots": 0 + }, + "increment_uint256": { + "entryPoint": 1279, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "packed_hashed_bytes_uint256_to_bytes_uint": { + "entryPoint": 1144, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + } + }, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "608080604052600436101561001357600080fd5b60003560e01c908163066a1eb714610318575080630db02622146102f55780630f0f3f24146102ab5780631ca5393f1461025157806329565e3b146101ec57806336d9cf9b146101c157806389625b57146101815780638ea690291461014a578063a2e1a8d814610111578063b8197367146100c85763d948fd2e1461009857600080fd5b346100c35760003660031901126100c3576020600080516020610a2f83398151915254604051908152f35b600080fd5b346100c3576100d6366103dc565b906100df610643565b6100e76104bd565b92600184116100fc576100fa9350610886565b005b83631047e35560e31b60005260045260246000fd5b346100c35760203660031901126100c3576004356001600160a01b03811681036100c357610140602091610618565b6040519015158152f35b346100c35760203660031901126100c35761017d610169600435610548565b604051918291602083526020830190610453565b0390f35b346100c35761018f366103dc565b90610198610643565b60016101a26104bd565b146101b0576100fa92610886565b63948bf89760e01b60005260046000fd5b346100c35760003660031901126100c3576020600080516020610a4f83398151915254604051908152f35b346100c3576100fa6101fd36610347565b610205610643565b60405191602083015260408201526040815261022260608261035d565b600080516020610a2f833981519152549061023c826104ff565b600080516020610a2f83398151915255610689565b346100c35760203660031901126100c35760043567ffffffffffffffff81116100c357366023820112156100c35760ff61029f61029a6020933690602481600401359101610395565b610478565b54166040519015158152f35b346100c35760203660031901126100c3576004356001600160a01b038116908190036100c3576100fa906102dd610643565b6040519060208201526020815261022260408261035d565b346100c35760003660031901126100c35760206103106104bd565b604051908152f35b346100c35760ff61029f60209261032e36610347565b908583015260408201526040815261029a60608261035d565b60409060031901126100c3576004359060243590565b90601f8019910116810190811067ffffffffffffffff82111761037f57604052565b634e487b7160e01b600052604160045260246000fd5b92919267ffffffffffffffff821161037f57604051916103bf601f8201601f19166020018461035d565b8294818452818301116100c3578281602093846000960137010152565b60406003198201126100c3576004359160243567ffffffffffffffff81116100c357826023820112156100c35780600401359267ffffffffffffffff84116100c357602484830101116100c3576024019190565b60005b8381106104435750506000910152565b8181015183820152602001610433565b9060209161046c81518092818552858086019101610430565b601f01601f1916010190565b6020610491918160405193828580945193849201610430565b81017f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f50381520301902090565b600080516020610a2f83398151915254600080516020610a4f8339815191525481039081116104e95790565b634e487b7160e01b600052601160045260246000fd5b60001981146104e95760010190565b90600182811c9216801561053e575b602083101461052857565b634e487b7160e01b600052602260045260246000fd5b91607f169161051d565b6000527f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f5026020526040600020604051908160008254926105878461050e565b80845293600181169081156105f657506001146105af575b506105ac9250038261035d565b90565b90506000929192526020600020906000915b8183106105da5750509060206105ac928201013861059f565b60209193508060019154838588010152019101909183926105c1565b9050602092506105ac94915060ff191682840152151560051b8201013861059f565b61063e60ff916040519060018060a01b031660208201526020815261029a60408261035d565b541690565b61064c33610618565b8015610669575b610667576282b42960e81b60005260046000fd5b565b50303314610653565b81811061067d575050565b60008155600101610672565b60ff61069482610478565b541661083c576106a381610478565b600160ff19825416179055816000527f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f5026020526040600020815167ffffffffffffffff811161037f576106f6825461050e565b601f81116107ff575b506020601f82116001146107755791817f38109edc26e166b5579352ce56a50813177eb25208fd90d61f2f37838622022094926107659460009161076a575b508160011b916000199060031b1c1916179055604051918291602083526020830190610453565b0390a2565b90508301513861073e565b601f1982169083600052806000209160005b8181106107e75750926107659492600192827f38109edc26e166b5579352ce56a50813177eb25208fd90d61f2f3783862202209896106107ce575b5050811b019055610169565b85015160001960f88460031b161c1916905538806107c2565b9192602060018192868a015181550194019201610787565b61082c90836000526020600020601f840160051c81019160208510610832575b601f0160051c0190610672565b386106ff565b909150819061081f565b60405163468b12ad60e11b815260206004820152908190610861906024830190610453565b0390fd5b908060209392818452848401376000828201840152601f01601f1916010190565b9161089083610548565b805115610a1957805160208201206108a9368486610395565b60208151910120036109d85750907fcf95bbfe6f870f8cc40482dc3dccdafd268f0e9ce0a4f24ea1bea9be64e505ff91604051818382376020818381017f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f50381520301902060ff198154169055836000527f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f502602052604060002061094c815461050e565b9081610994575b505061096d600080516020610a4f833981519152546104ff565b600080516020610a4f83398151915255610765604051928392602084526020840191610865565b81601f600093116001146109ac5750555b3880610953565b818352602083206109c891601f0160051c810190600101610672565b80825281602081209155556109a5565b610a0761086192949360405195869563781f2e3960e01b87526004870152606060248701526064860191610865565b83810360031901604485015290610453565b8363340c473d60e11b60005260045260246000fdfe0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f5000627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f501a264697066735822122008bf9e3c9de7ba06546136e69ceefea4e48f805cfa106f7803c7fdf5277353a464736f6c634300081c0033", + "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x66A1EB7 EQ PUSH2 0x318 JUMPI POP DUP1 PUSH4 0xDB02622 EQ PUSH2 0x2F5 JUMPI DUP1 PUSH4 0xF0F3F24 EQ PUSH2 0x2AB JUMPI DUP1 PUSH4 0x1CA5393F EQ PUSH2 0x251 JUMPI DUP1 PUSH4 0x29565E3B EQ PUSH2 0x1EC JUMPI DUP1 PUSH4 0x36D9CF9B EQ PUSH2 0x1C1 JUMPI DUP1 PUSH4 0x89625B57 EQ PUSH2 0x181 JUMPI DUP1 PUSH4 0x8EA69029 EQ PUSH2 0x14A JUMPI DUP1 PUSH4 0xA2E1A8D8 EQ PUSH2 0x111 JUMPI DUP1 PUSH4 0xB8197367 EQ PUSH2 0xC8 JUMPI PUSH4 0xD948FD2E EQ PUSH2 0x98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xC3 JUMPI PUSH1 0x20 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA2F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH2 0xD6 CALLDATASIZE PUSH2 0x3DC JUMP JUMPDEST SWAP1 PUSH2 0xDF PUSH2 0x643 JUMP JUMPDEST PUSH2 0xE7 PUSH2 0x4BD JUMP JUMPDEST SWAP3 PUSH1 0x1 DUP5 GT PUSH2 0xFC JUMPI PUSH2 0xFA SWAP4 POP PUSH2 0x886 JUMP JUMPDEST STOP JUMPDEST DUP4 PUSH4 0x1047E355 PUSH1 0xE3 SHL PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xC3 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0xC3 JUMPI PUSH2 0x140 PUSH1 0x20 SWAP2 PUSH2 0x618 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xC3 JUMPI PUSH2 0x17D PUSH2 0x169 PUSH1 0x4 CALLDATALOAD PUSH2 0x548 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x453 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH2 0x18F CALLDATASIZE PUSH2 0x3DC JUMP JUMPDEST SWAP1 PUSH2 0x198 PUSH2 0x643 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x1A2 PUSH2 0x4BD JUMP JUMPDEST EQ PUSH2 0x1B0 JUMPI PUSH2 0xFA SWAP3 PUSH2 0x886 JUMP JUMPDEST PUSH4 0x948BF897 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xC3 JUMPI PUSH1 0x20 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA4F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH2 0xFA PUSH2 0x1FD CALLDATASIZE PUSH2 0x347 JUMP JUMPDEST PUSH2 0x205 PUSH2 0x643 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x40 DUP2 MSTORE PUSH2 0x222 PUSH1 0x60 DUP3 PUSH2 0x35D JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA2F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD SWAP1 PUSH2 0x23C DUP3 PUSH2 0x4FF JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA2F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE PUSH2 0x689 JUMP JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xC3 JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xC3 JUMPI CALLDATASIZE PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0xC3 JUMPI PUSH1 0xFF PUSH2 0x29F PUSH2 0x29A PUSH1 0x20 SWAP4 CALLDATASIZE SWAP1 PUSH1 0x24 DUP2 PUSH1 0x4 ADD CALLDATALOAD SWAP2 ADD PUSH2 0x395 JUMP JUMPDEST PUSH2 0x478 JUMP JUMPDEST SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xC3 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 DUP2 SWAP1 SUB PUSH2 0xC3 JUMPI PUSH2 0xFA SWAP1 PUSH2 0x2DD PUSH2 0x643 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x20 DUP2 MSTORE PUSH2 0x222 PUSH1 0x40 DUP3 PUSH2 0x35D JUMP JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xC3 JUMPI PUSH1 0x20 PUSH2 0x310 PUSH2 0x4BD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH1 0xFF PUSH2 0x29F PUSH1 0x20 SWAP3 PUSH2 0x32E CALLDATASIZE PUSH2 0x347 JUMP JUMPDEST SWAP1 DUP6 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x40 DUP2 MSTORE PUSH2 0x29A PUSH1 0x60 DUP3 PUSH2 0x35D JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH1 0x3 NOT ADD SLT PUSH2 0xC3 JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1F DUP1 NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x37F JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 SWAP2 SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x37F JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x3BF PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP5 PUSH2 0x35D JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0xC3 JUMPI DUP3 DUP2 PUSH1 0x20 SWAP4 DUP5 PUSH1 0x0 SWAP7 ADD CALLDATACOPY ADD ADD MSTORE JUMP JUMPDEST PUSH1 0x40 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0xC3 JUMPI PUSH1 0x4 CALLDATALOAD SWAP2 PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xC3 JUMPI DUP3 PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0xC3 JUMPI DUP1 PUSH1 0x4 ADD CALLDATALOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP5 GT PUSH2 0xC3 JUMPI PUSH1 0x24 DUP5 DUP4 ADD ADD GT PUSH2 0xC3 JUMPI PUSH1 0x24 ADD SWAP2 SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT PUSH2 0x443 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x433 JUMP JUMPDEST SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x46C DUP2 MLOAD DUP1 SWAP3 DUP2 DUP6 MSTORE DUP6 DUP1 DUP7 ADD SWAP2 ADD PUSH2 0x430 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x491 SWAP2 DUP2 PUSH1 0x40 MLOAD SWAP4 DUP3 DUP6 DUP1 SWAP5 MLOAD SWAP4 DUP5 SWAP3 ADD PUSH2 0x430 JUMP JUMPDEST DUP2 ADD PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F503 DUP2 MSTORE SUB ADD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA2F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA4F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD DUP2 SUB SWAP1 DUP2 GT PUSH2 0x4E9 JUMPI SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 NOT DUP2 EQ PUSH2 0x4E9 JUMPI PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x53E JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x528 JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x51D JUMP JUMPDEST PUSH1 0x0 MSTORE PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F502 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD SWAP1 DUP2 PUSH1 0x0 DUP3 SLOAD SWAP3 PUSH2 0x587 DUP5 PUSH2 0x50E JUMP JUMPDEST DUP1 DUP5 MSTORE SWAP4 PUSH1 0x1 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x5F6 JUMPI POP PUSH1 0x1 EQ PUSH2 0x5AF JUMPI JUMPDEST POP PUSH2 0x5AC SWAP3 POP SUB DUP3 PUSH2 0x35D JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 SWAP3 SWAP2 SWAP3 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x0 SWAP2 JUMPDEST DUP2 DUP4 LT PUSH2 0x5DA JUMPI POP POP SWAP1 PUSH1 0x20 PUSH2 0x5AC SWAP3 DUP3 ADD ADD CODESIZE PUSH2 0x59F JUMP JUMPDEST PUSH1 0x20 SWAP2 SWAP4 POP DUP1 PUSH1 0x1 SWAP2 SLOAD DUP4 DUP6 DUP9 ADD ADD MSTORE ADD SWAP2 ADD SWAP1 SWAP2 DUP4 SWAP3 PUSH2 0x5C1 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 SWAP3 POP PUSH2 0x5AC SWAP5 SWAP2 POP PUSH1 0xFF NOT AND DUP3 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD CODESIZE PUSH2 0x59F JUMP JUMPDEST PUSH2 0x63E PUSH1 0xFF SWAP2 PUSH1 0x40 MLOAD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x20 DUP2 MSTORE PUSH2 0x29A PUSH1 0x40 DUP3 PUSH2 0x35D JUMP JUMPDEST SLOAD AND SWAP1 JUMP JUMPDEST PUSH2 0x64C CALLER PUSH2 0x618 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x669 JUMPI JUMPDEST PUSH2 0x667 JUMPI PUSH3 0x82B429 PUSH1 0xE8 SHL PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST JUMP JUMPDEST POP ADDRESS CALLER EQ PUSH2 0x653 JUMP JUMPDEST DUP2 DUP2 LT PUSH2 0x67D JUMPI POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x672 JUMP JUMPDEST PUSH1 0xFF PUSH2 0x694 DUP3 PUSH2 0x478 JUMP JUMPDEST SLOAD AND PUSH2 0x83C JUMPI PUSH2 0x6A3 DUP2 PUSH2 0x478 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xFF NOT DUP3 SLOAD AND OR SWAP1 SSTORE DUP2 PUSH1 0x0 MSTORE PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F502 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x37F JUMPI PUSH2 0x6F6 DUP3 SLOAD PUSH2 0x50E JUMP JUMPDEST PUSH1 0x1F DUP2 GT PUSH2 0x7FF JUMPI JUMPDEST POP PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 EQ PUSH2 0x775 JUMPI SWAP2 DUP2 PUSH32 0x38109EDC26E166B5579352CE56A50813177EB25208FD90D61F2F378386220220 SWAP5 SWAP3 PUSH2 0x765 SWAP5 PUSH1 0x0 SWAP2 PUSH2 0x76A JUMPI JUMPDEST POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH1 0x0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x453 JUMP JUMPDEST SUB SWAP1 LOG2 JUMP JUMPDEST SWAP1 POP DUP4 ADD MLOAD CODESIZE PUSH2 0x73E JUMP JUMPDEST PUSH1 0x1F NOT DUP3 AND SWAP1 DUP4 PUSH1 0x0 MSTORE DUP1 PUSH1 0x0 KECCAK256 SWAP2 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0x7E7 JUMPI POP SWAP3 PUSH2 0x765 SWAP5 SWAP3 PUSH1 0x1 SWAP3 DUP3 PUSH32 0x38109EDC26E166B5579352CE56A50813177EB25208FD90D61F2F378386220220 SWAP9 SWAP7 LT PUSH2 0x7CE JUMPI JUMPDEST POP POP DUP2 SHL ADD SWAP1 SSTORE PUSH2 0x169 JUMP JUMPDEST DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE CODESIZE DUP1 PUSH2 0x7C2 JUMP JUMPDEST SWAP2 SWAP3 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP7 DUP11 ADD MLOAD DUP2 SSTORE ADD SWAP5 ADD SWAP3 ADD PUSH2 0x787 JUMP JUMPDEST PUSH2 0x82C SWAP1 DUP4 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD SWAP2 PUSH1 0x20 DUP6 LT PUSH2 0x832 JUMPI JUMPDEST PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP1 PUSH2 0x672 JUMP JUMPDEST CODESIZE PUSH2 0x6FF JUMP JUMPDEST SWAP1 SWAP2 POP DUP2 SWAP1 PUSH2 0x81F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x468B12AD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE SWAP1 DUP2 SWAP1 PUSH2 0x861 SWAP1 PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x453 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 DUP1 PUSH1 0x20 SWAP4 SWAP3 DUP2 DUP5 MSTORE DUP5 DUP5 ADD CALLDATACOPY PUSH1 0x0 DUP3 DUP3 ADD DUP5 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND ADD ADD SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x890 DUP4 PUSH2 0x548 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0xA19 JUMPI DUP1 MLOAD PUSH1 0x20 DUP3 ADD KECCAK256 PUSH2 0x8A9 CALLDATASIZE DUP5 DUP7 PUSH2 0x395 JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD KECCAK256 SUB PUSH2 0x9D8 JUMPI POP SWAP1 PUSH32 0xCF95BBFE6F870F8CC40482DC3DCCDAFD268F0E9CE0A4F24EA1BEA9BE64E505FF SWAP2 PUSH1 0x40 MLOAD DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x20 DUP2 DUP4 DUP2 ADD PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F503 DUP2 MSTORE SUB ADD SWAP1 KECCAK256 PUSH1 0xFF NOT DUP2 SLOAD AND SWAP1 SSTORE DUP4 PUSH1 0x0 MSTORE PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F502 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH2 0x94C DUP2 SLOAD PUSH2 0x50E JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x994 JUMPI JUMPDEST POP POP PUSH2 0x96D PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA4F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH2 0x4FF JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA4F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE PUSH2 0x765 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP3 PUSH1 0x20 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP2 PUSH2 0x865 JUMP JUMPDEST DUP2 PUSH1 0x1F PUSH1 0x0 SWAP4 GT PUSH1 0x1 EQ PUSH2 0x9AC JUMPI POP SSTORE JUMPDEST CODESIZE DUP1 PUSH2 0x953 JUMP JUMPDEST DUP2 DUP4 MSTORE PUSH1 0x20 DUP4 KECCAK256 PUSH2 0x9C8 SWAP2 PUSH1 0x1F ADD PUSH1 0x5 SHR DUP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x672 JUMP JUMPDEST DUP1 DUP3 MSTORE DUP2 PUSH1 0x20 DUP2 KECCAK256 SWAP2 SSTORE SSTORE PUSH2 0x9A5 JUMP JUMPDEST PUSH2 0xA07 PUSH2 0x861 SWAP3 SWAP5 SWAP4 PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP6 PUSH4 0x781F2E39 PUSH1 0xE0 SHL DUP8 MSTORE PUSH1 0x4 DUP8 ADD MSTORE PUSH1 0x60 PUSH1 0x24 DUP8 ADD MSTORE PUSH1 0x64 DUP7 ADD SWAP2 PUSH2 0x865 JUMP JUMPDEST DUP4 DUP2 SUB PUSH1 0x3 NOT ADD PUSH1 0x44 DUP6 ADD MSTORE SWAP1 PUSH2 0x453 JUMP JUMPDEST DUP4 PUSH4 0x340C473D PUSH1 0xE1 SHL PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID MOD 0x27 0xF7 0x2A CREATE 0xE6 DELEGATECALL SLT NOT JUMPDEST 0xD DUP11 0xCB 0xE4 CODESIZE 0xB2 DUP1 SWAP1 0xDD SLOAD JUMPDEST PUSH30 0x2331FCCF77723561F5000627F72AF0E6F412195B0D8ACBE438B28090DD54 JUMPDEST PUSH30 0x2331FCCF77723561F501A264697066735822122008BF9E3C9DE7BA065461 CALLDATASIZE 0xE6 SWAP13 0xEE INVALID LOG4 0xE4 DUP16 DUP1 TLOAD STATICCALL LT PUSH16 0x7803C7FDF5277353A464736F6C634300 ADDMOD SHR STOP CALLER ", + "sourceMap": "1427:10263:18:-:0;;;;;;;;;;;;;;;;;;;;;;;;6785:16;;1427:10263;6785:16;;;1427:10263;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1427:10263:18;;;;;-1:-1:-1;;;;;;;;;;;1427:10263:18;;;;;;;;;;;;;;;;;;:::i;:::-;4008:70;;;:::i;:::-;5864:12;;:::i;:::-;5890:19;5908:1;5890:19;;5886:86;;6009:5;;;;:::i;:::-;1427:10263;5886:86;5932:29;;;;1427:10263;5932:29;1427:10263;;;;5932:29;1427:10263;;;;;;-1:-1:-1;;1427:10263:18;;;;;;-1:-1:-1;;;;;1427:10263:18;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;1427:10263:18;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;4008:70;;;:::i;:::-;5200:1;5184:12;;:::i;:::-;:17;5180:66;;5283:5;;;:::i;5180:66::-;5224:11;;;1427:10263;5224:11;1427:10263;;5224:11;1427:10263;;;;;;-1:-1:-1;;1427:10263:18;;;;;-1:-1:-1;;;;;;;;;;;1427:10263:18;;;;;;;;;;;4630:42;1427:10263;;;:::i;:::-;4008:70;;:::i;:::-;1427:10263;;4612:16;;;;1427:10263;;;;;;4612:16;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1427:10263:18;4630:42;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1427:10263:18;4630:42;:::i;1427:10263::-;;;;;;-1:-1:-1;;1427:10263:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;;1427:10263:18;;;;;;-1:-1:-1;;;;;1427:10263:18;;;;;;;;4296:42;4008:70;;;:::i;:::-;1427:10263;;4277:17;1427:10263;4277:17;;1427:10263;;4277:17;;;1427:10263;4277:17;;:::i;1427:10263::-;;;;;;-1:-1:-1;;1427:10263:18;;;;;;;:::i;:::-;;;;;;;;;;;;;6785:16;1427:10263;;;;:::i;:::-;6785:16;;;;1427:10263;;;;;;6785:16;;;;;;:::i;1427:10263::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;1427:10263:18;;;;;-1:-1:-1;1427:10263:18;;;;;;;;;;;;;;;;;-1:-1:-1;;1427:10263:18;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;1427:10263:18;;;;;;:::o;:::-;;-1:-1:-1;;1427:10263:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;1427:10263:18;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;1427:10263:18;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;6751:33;1427:10263;;;;;;;:::o;7950:190::-;-1:-1:-1;;;;;;;;;;;1427:10263:18;-1:-1:-1;;;;;;;;;;;1427:10263:18;;;;;;;;7950:190;:::o;1427:10263::-;;;;-1:-1:-1;1427:10263:18;;;;;-1:-1:-1;1427:10263:18;;-1:-1:-1;;1427:10263:18;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;7406:149;-1:-1:-1;1427:10263:18;7503:38;1427:10263;;;-1:-1:-1;1427:10263:18;;;;;-1:-1:-1;1427:10263:18;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7406:149;:::o;1427:10263::-;;;-1:-1:-1;1427:10263:18;;;;;-1:-1:-1;1427:10263:18;;-1:-1:-1;1427:10263:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6239:154;1427:10263;;6239:154;1427:10263;;;;;;;;;6366:19;;;1427:10263;6366:19;;;;1427:10263;6366:19;;:::i;1427:10263::-;;;6239:154;:::o;11120:189::-;11179:26;11194:10;11179:26;:::i;:::-;:59;;;;11120:189;11175:96;;11288:14;;;;;;;;11175:96;11254:7::o;11179:59::-;11232:4;;11194:10;11210:27;11179:59;;1427:10263;;;;;;;;:::o;:::-;;;;;;;;9704:324;1427:10263;;;;:::i;:::-;;;9792:51;;1427:10263;;;:::i;:::-;9940:4;1427:10263;;;;;;;;;-1:-1:-1;1427:10263:18;9954:14;1427:10263;;;-1:-1:-1;1427:10263:18;;;;;;;;;;;;:::i;:::-;;;;;;9704:324;1427:10263;;;;;;;;;;;9999:22;1427:10263;;;;-1:-1:-1;1427:10263:18;;;;;;9940:4;1427:10263;;;;;7148:33;1427:10263;;;;;;;;;;;;;;;;;;;;:::i;:::-;9999:22;;;9704:324::o;1427:10263::-;;;;;;;;;;;;;;;;-1:-1:-1;1427:10263:18;;-1:-1:-1;1427:10263:18;;-1:-1:-1;1427:10263:18;;;;;;;;;;;9940:4;1427:10263;;9999:22;1427:10263;;;;;;;;;;;;;;;;;;;;;;;7148:33;1427:10263;;;;;;;;;;;;;;;9940:4;1427:10263;;;;;;;;;;;;;;;;;;;-1:-1:-1;1427:10263:18;;-1:-1:-1;1427:10263:18;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;1427:10263:18;;;;9792:51;1427:10263;;-1:-1:-1;;;9824:19:18;;1427:10263;9824:19;;;1427:10263;;;;;;;;;;;:::i;:::-;9824:19;;;1427:10263;;;;;;;;;;;;;-1:-1:-1;1427:10263:18;;;;;;;;-1:-1:-1;;1427:10263:18;;;;:::o;10367:575::-;;10482:19;;;:::i;:::-;1427:10263;;10515:18;10511:52;;1427:10263;;;;;10577:17;1427:10263;;;;;:::i;:::-;;;;;;10598:16;10577:37;10573:151;;1427:10263;;10910:25;1427:10263;;;;;;;;;;;;10808:9;1427:10263;;;;;;;;;;;;;;10532:1;1427:10263;10841:14;1427:10263;;;10532:1;1427:10263;;;;;:::i;:::-;;;;;10367:575;1427:10263;;10872:22;-1:-1:-1;;;;;;;;;;;1427:10263:18;10872:22;:::i;:::-;-1:-1:-1;;;;;;;;;;;1427:10263:18;;;;;;;;;;;;;;;:::i;:::-;;;10532:1;1427:10263;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;10573:151;1427:10263;;;;;;;10637:76;;;;;;;;;;;1427:10263;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1427:10263:18;;;;;;;:::i;10511:52::-;10542:21;;;;10532:1;10542:21;;1427:10263;;10532:1;10542:21" + }, + "methodIdentifiers": { + "addOwnerAddress(address)": "0f0f3f24", + "addOwnerPublicKey(bytes32,bytes32)": "29565e3b", + "isOwnerAddress(address)": "a2e1a8d8", + "isOwnerBytes(bytes)": "1ca5393f", + "isOwnerPublicKey(bytes32,bytes32)": "066a1eb7", + "nextOwnerIndex()": "d948fd2e", + "ownerAtIndex(uint256)": "8ea69029", + "ownerCount()": "0db02622", + "removeLastOwner(uint256,bytes)": "b8197367", + "removeOwnerAtIndex(uint256,bytes)": "89625b57", + "removedOwnersCount()": "36d9cf9b" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"owner\",\"type\":\"bytes\"}],\"name\":\"AlreadyOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"owner\",\"type\":\"bytes\"}],\"name\":\"InvalidEthereumAddressOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"owner\",\"type\":\"bytes\"}],\"name\":\"InvalidOwnerBytesLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LastOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"NoOwnerAtIndex\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ownersRemaining\",\"type\":\"uint256\"}],\"name\":\"NotLastOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"expectedOwner\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"actualOwner\",\"type\":\"bytes\"}],\"name\":\"WrongOwnerAtIndex\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"owner\",\"type\":\"bytes\"}],\"name\":\"AddOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"owner\",\"type\":\"bytes\"}],\"name\":\"RemoveOwner\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"addOwnerAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"name\":\"addOwnerPublicKey\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isOwnerAddress\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"account\",\"type\":\"bytes\"}],\"name\":\"isOwnerBytes\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"name\":\"isOwnerPublicKey\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextOwnerIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"ownerAtIndex\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ownerCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"owner\",\"type\":\"bytes\"}],\"name\":\"removeLastOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"owner\",\"type\":\"bytes\"}],\"name\":\"removeOwnerAtIndex\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"removedOwnersCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Applied Blockchain (https://github.com/appliedblockchain/giano)Coinbase (https://github.com/coinbase/smart-wallet)\",\"errors\":{\"AlreadyOwner(bytes)\":[{\"params\":{\"owner\":\"The owner bytes.\"}}],\"InvalidEthereumAddressOwner(bytes)\":[{\"params\":{\"owner\":\"The invalid owner.\"}}],\"InvalidOwnerBytesLength(bytes)\":[{\"params\":{\"owner\":\"The invalid owner.\"}}],\"NoOwnerAtIndex(uint256)\":[{\"params\":{\"index\":\"The targeted index for removal.\"}}],\"NotLastOwner(uint256)\":[{\"params\":{\"ownersRemaining\":\"The number of current owners.\"}}],\"WrongOwnerAtIndex(uint256,bytes,bytes)\":[{\"params\":{\"actualOwner\":\"The actual owner at `index`.\",\"expectedOwner\":\"The owner passed in the remove call.\",\"index\":\"The index of the owner to be removed.\"}}]},\"events\":{\"AddOwner(uint256,bytes)\":{\"params\":{\"index\":\"The owner index of the owner added.\",\"owner\":\"The owner added.\"}},\"RemoveOwner(uint256,bytes)\":{\"params\":{\"index\":\"The owner index of the owner removed.\",\"owner\":\"The owner removed.\"}}},\"kind\":\"dev\",\"methods\":{\"addOwnerAddress(address)\":{\"params\":{\"owner\":\"The owner address.\"}},\"addOwnerPublicKey(bytes32,bytes32)\":{\"params\":{\"x\":\"The owner public key x coordinate.\",\"y\":\"The owner public key y coordinate.\"}},\"isOwnerAddress(address)\":{\"params\":{\"account\":\"The account address to check.\"},\"returns\":{\"_0\":\"`true` if the account is an owner else `false`.\"}},\"isOwnerBytes(bytes)\":{\"params\":{\"account\":\"The account, should be ABI encoded address or public key.\"},\"returns\":{\"_0\":\"`true` if the account is an owner else `false`.\"}},\"isOwnerPublicKey(bytes32,bytes32)\":{\"params\":{\"x\":\"The public key x coordinate.\",\"y\":\"The public key y coordinate.\"},\"returns\":{\"_0\":\"`true` if the account is an owner else `false`.\"}},\"nextOwnerIndex()\":{\"returns\":{\"_0\":\"The next index that will be used to add a new owner.\"}},\"ownerAtIndex(uint256)\":{\"params\":{\"index\":\"The index to lookup.\"},\"returns\":{\"_0\":\"The owner bytes (empty if no owner is registered at this `index`).\"}},\"ownerCount()\":{\"returns\":{\"_0\":\"The current owner count\"}},\"removeLastOwner(uint256,bytes)\":{\"details\":\"Reverts if the owner is not registered at `index`.Reverts if there is currently more than one owner.Reverts if `owner` does not match bytes found at `index`.\",\"params\":{\"index\":\"The index of the owner to be removed.\",\"owner\":\"The ABI encoded bytes of the owner to be removed.\"}},\"removeOwnerAtIndex(uint256,bytes)\":{\"details\":\"Reverts if the owner is not registered at `index`.Reverts if there is currently only one owner.Reverts if `owner` does not match bytes found at `index`.\",\"params\":{\"index\":\"The index of the owner to be removed.\",\"owner\":\"The ABI encoded bytes of the owner to be removed.\"}},\"removedOwnersCount()\":{\"details\":\"Used with `this.nextOwnerIndex` to avoid removing all owners\",\"returns\":{\"_0\":\"The number of owners that have been removed.\"}}},\"stateVariables\":{\"MUTLI_OWNABLE_STORAGE_LOCATION\":{\"details\":\"Slot for the `MultiOwnableStorage` struct in storage. Computed from keccak256(abi.encode(uint256(keccak256(\\\"appliedblockchain.storage.MultiOwnable\\\")) - 1)) & ~bytes32(uint256(0xff)) Follows ERC-7201 (see https://eips.ethereum.org/EIPS/eip-7201).\"}},\"title\":\"Multi Ownable\",\"version\":1},\"userdoc\":{\"errors\":{\"AlreadyOwner(bytes)\":[{\"notice\":\"Thrown when trying to add an already registered owner.\"}],\"InvalidEthereumAddressOwner(bytes)\":[{\"notice\":\"Thrown if a provided owner is 32 bytes long but does not fit in an `address` type.\"}],\"InvalidOwnerBytesLength(bytes)\":[{\"notice\":\"Thrown when a provided owner is neither 64 bytes long (for public key) nor a ABI encoded address.\"}],\"LastOwner()\":[{\"notice\":\"Thrown when removeOwnerAtIndex is called and there is only one current owner.\"}],\"NoOwnerAtIndex(uint256)\":[{\"notice\":\"Thrown when trying to remove an owner from an index that is empty.\"}],\"NotLastOwner(uint256)\":[{\"notice\":\"Thrown when removeLastOwner is called and there is more than one current owner.\"}],\"Unauthorized()\":[{\"notice\":\"Thrown when the `msg.sender` is not an owner and is trying to call a privileged function.\"}],\"WrongOwnerAtIndex(uint256,bytes,bytes)\":[{\"notice\":\"Thrown when `owner` argument does not match owner found at index.\"}]},\"events\":{\"AddOwner(uint256,bytes)\":{\"notice\":\"Emitted when a new owner is registered.\"},\"RemoveOwner(uint256,bytes)\":{\"notice\":\"Emitted when an owner is removed.\"}},\"kind\":\"user\",\"methods\":{\"addOwnerAddress(address)\":{\"notice\":\"Adds a new Ethereum-address owner.\"},\"addOwnerPublicKey(bytes32,bytes32)\":{\"notice\":\"Adds a new public-key owner.\"},\"isOwnerAddress(address)\":{\"notice\":\"Checks if the given `account` address is registered as owner.\"},\"isOwnerBytes(bytes)\":{\"notice\":\"Checks if the given `account` bytes is registered as owner.\"},\"isOwnerPublicKey(bytes32,bytes32)\":{\"notice\":\"Checks if the given `x`, `y` public key is registered as owner.\"},\"nextOwnerIndex()\":{\"notice\":\"Returns the next index that will be used to add a new owner.\"},\"ownerAtIndex(uint256)\":{\"notice\":\"Returns the owner bytes at the given `index`.\"},\"ownerCount()\":{\"notice\":\"Returns the current number of owners\"},\"removeLastOwner(uint256,bytes)\":{\"notice\":\"Removes owner at the given `index`, which should be the only current owner.\"},\"removeOwnerAtIndex(uint256,bytes)\":{\"notice\":\"Removes owner at the given `index`.\"},\"removedOwnersCount()\":{\"notice\":\"Tracks the number of owners removed\"}},\"notice\":\"Auth contract allowing multiple owners, each identified as bytes.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MultiOwnable.sol\":\"MultiOwnable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"src/MultiOwnable.sol\":{\"keccak256\":\"0x46a9fa25c7de87b56df47b67d61b6efd96ed3f382c5d440d04de55fa23bccadd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75ac03bdfdddec29b0b1f4f9c33add4b5b9d5400b1a54691a544a59ac710de5c\",\"dweb:/ipfs/QmXajkF7z8rqmDE89H4uVaKCDyQsdwphif8BHZLLu9MQ5k\"]}},\"version\":1}" + } + }, + "src/utils/ERC1271InputGenerator.sol": { + "ERC1271InputGenerator": { + "abi": [ + { + "inputs": [ + { + "internalType": "contract GianoSmartWallet", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "accountFactory", + "type": "address" + }, + { + "internalType": "bytes", + "name": "factoryCalldata", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "AccountDeploymentFailed", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "returned", + "type": "address" + } + ], + "name": "ReturnedAddressDoesNotMatchAccount", + "type": "error" + } + ], + "evm": { + "bytecode": { + "functionDebugData": { + "abi_decode_address_payable_fromMemory": { + "entryPoint": 432, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_bytes32_fromMemory": { + "entryPoint": 357, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_address_address": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_bytes32": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "array_allocation_size_bytes": { + "entryPoint": 309, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "constructor_ERC1271InputGenerator": { + "entryPoint": 336, + "id": 8140, + "parameterSlots": 4, + "returnSlots": 0 + }, + "convert_contract_GianoSmartWallet_to_address": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "extract_returndata": { + "entryPoint": 384, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + }, + "finalize_allocation": { + "entryPoint": 257, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "finalize_allocation_991": { + "entryPoint": 214, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "fun_gianoSmartWallet1271Input": { + "entryPoint": 456, + "id": 8218, + "parameterSlots": 4, + "returnSlots": 1 + }, + "panic_error_0x41": { + "entryPoint": 192, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_forward": { + "entryPoint": 372, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "validator_revert_contract_GianoSmartWallet": { + "entryPoint": 292, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + } + }, + "generatedSources": [], + "linkReferences": {}, + "object": "6080604052346100bb576102ee803803809161001a826100d6565b608039608081810191126100bb5760805161003481610124565b60a05160c0519161004483610124565b60e0516001600160401b0381116100bb5784609f820112156100bb5780608001519061006f82610135565b9561007d6040519788610101565b82875260a083830101116100bb5760005b8281106100a5575050602060009186010152610150565b8060a06020928401015182828a0101520161008e565b600080fd5b634e487b7160e01b600052604160045260246000fd5b6080601f91909101601f19168101906001600160401b038211908210176100fc57604052565b6100c0565b601f909101601f19168101906001600160401b038211908210176100fc57604052565b6001600160a01b038116036100bb57565b6001600160401b0381116100fc57601f01601f191660200190565b9061015c9392916101c8565b60805260206080f35b908160209103126100bb575190565b6040513d6000823e3d90fd5b3d156101ab573d9061019182610135565b9161019f6040519384610101565b82523d6000602084013e565b606090565b908160209103126100bb57516101c581610124565b90565b90926001600160a01b0390911691823b6102c65781600092918360208194519301915af16101f4610180565b90156102b6576102108160208061021c945183010191016101b0565b6001600160a01b031690565b6001600160a01b038116829003610293575060405163670a835f60e11b8152600481019290925260209082908180602481015b03915afa90811561028e57600091610265575090565b6101c5915060203d602011610287575b61027f8183610101565b810190610165565b503d610275565b610174565b63c862438360e01b6000526001600160a01b039182166004521660245260446000fd5b6294555560e51b60005260046000fd5b505060405163670a835f60e11b81526004810192909252602090829081806024810161024f56fe", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE PUSH2 0xBB JUMPI PUSH2 0x2EE DUP1 CODESIZE SUB DUP1 SWAP2 PUSH2 0x1A DUP3 PUSH2 0xD6 JUMP JUMPDEST PUSH1 0x80 CODECOPY PUSH1 0x80 DUP2 DUP2 ADD SWAP2 SLT PUSH2 0xBB JUMPI PUSH1 0x80 MLOAD PUSH2 0x34 DUP2 PUSH2 0x124 JUMP JUMPDEST PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD SWAP2 PUSH2 0x44 DUP4 PUSH2 0x124 JUMP JUMPDEST PUSH1 0xE0 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0xBB JUMPI DUP5 PUSH1 0x9F DUP3 ADD SLT ISZERO PUSH2 0xBB JUMPI DUP1 PUSH1 0x80 ADD MLOAD SWAP1 PUSH2 0x6F DUP3 PUSH2 0x135 JUMP JUMPDEST SWAP6 PUSH2 0x7D PUSH1 0x40 MLOAD SWAP8 DUP9 PUSH2 0x101 JUMP JUMPDEST DUP3 DUP8 MSTORE PUSH1 0xA0 DUP4 DUP4 ADD ADD GT PUSH2 0xBB JUMPI PUSH1 0x0 JUMPDEST DUP3 DUP2 LT PUSH2 0xA5 JUMPI POP POP PUSH1 0x20 PUSH1 0x0 SWAP2 DUP7 ADD ADD MSTORE PUSH2 0x150 JUMP JUMPDEST DUP1 PUSH1 0xA0 PUSH1 0x20 SWAP3 DUP5 ADD ADD MLOAD DUP3 DUP3 DUP11 ADD ADD MSTORE ADD PUSH2 0x8E JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x80 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND DUP2 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT SWAP1 DUP3 LT OR PUSH2 0xFC JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0xC0 JUMP JUMPDEST PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND DUP2 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT SWAP1 DUP3 LT OR PUSH2 0xFC JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SUB PUSH2 0xBB JUMPI JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0xFC JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x15C SWAP4 SWAP3 SWAP2 PUSH2 0x1C8 JUMP JUMPDEST PUSH1 0x80 MSTORE PUSH1 0x20 PUSH1 0x80 RETURN JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0xBB JUMPI MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x1AB JUMPI RETURNDATASIZE SWAP1 PUSH2 0x191 DUP3 PUSH2 0x135 JUMP JUMPDEST SWAP2 PUSH2 0x19F PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x101 JUMP JUMPDEST DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0xBB JUMPI MLOAD PUSH2 0x1C5 DUP2 PUSH2 0x124 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 DUP3 EXTCODESIZE PUSH2 0x2C6 JUMPI DUP2 PUSH1 0x0 SWAP3 SWAP2 DUP4 PUSH1 0x20 DUP2 SWAP5 MLOAD SWAP4 ADD SWAP2 GAS CALL PUSH2 0x1F4 PUSH2 0x180 JUMP JUMPDEST SWAP1 ISZERO PUSH2 0x2B6 JUMPI PUSH2 0x210 DUP2 PUSH1 0x20 DUP1 PUSH2 0x21C SWAP5 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x1B0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP3 SWAP1 SUB PUSH2 0x293 JUMPI POP PUSH1 0x40 MLOAD PUSH4 0x670A835F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x20 SWAP1 DUP3 SWAP1 DUP2 DUP1 PUSH1 0x24 DUP2 ADD JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x28E JUMPI PUSH1 0x0 SWAP2 PUSH2 0x265 JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x1C5 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x287 JUMPI JUMPDEST PUSH2 0x27F DUP2 DUP4 PUSH2 0x101 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x165 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x275 JUMP JUMPDEST PUSH2 0x174 JUMP JUMPDEST PUSH4 0xC8624383 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 MSTORE AND PUSH1 0x24 MSTORE PUSH1 0x44 PUSH1 0x0 REVERT JUMPDEST PUSH3 0x945555 PUSH1 0xE5 SHL PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH4 0x670A835F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x20 SWAP1 DUP3 SWAP1 DUP2 DUP1 PUSH1 0x24 DUP2 ADD PUSH2 0x24F JUMP INVALID ", + "sourceMap": "832:3656:19:-:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;832:3656:19;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;832:3656:19;;;;;;;;;-1:-1:-1;832:3656:19;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;832:3656:19;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;832:3656:19;;;;-1:-1:-1;;;;;832:3656:19;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;-1:-1:-1;;832:3656:19;;;;-1:-1:-1;;;;;832:3656:19;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;832:3656:19;;;;;:::o;:::-;-1:-1:-1;;;;;832:3656:19;;;;;;-1:-1:-1;;832:3656:19;;;;:::o;2056:738::-;;2535:74;2056:738;;;2535:74;:::i;:::-;2619:169;;;;;832:3656;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;832:3656:19;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;:::o;3574:912::-;;;-1:-1:-1;;;;;832:3656:19;;;;3862:28;;3858:98;;4035:36;832:3656;4035:36;;;;;;;;;;;;;;:::i;:::-;4085:8;;4081:71;;4186:29;832:3656;4035:36;832:3656;4162:53;832:3656;;4186:29;;;;;;:::i;:::-;-1:-1:-1;;;;;832:3656:19;;;4162:53;-1:-1:-1;;;;;832:3656:19;;4229:33;;;4225:138;;-1:-1:-1;832:3656:19;;-1:-1:-1;;;4451:28:19;;;;;832:3656;;;;4035:36;;832:3656;;;;;;;4451:28;;;;;;;;;;832:3656;4451:28;;;4444:35;3574:912;:::o;4451:28::-;;;;4035:36;4451:28;4035:36;4451:28;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;4225:138::-;-1:-1:-1;;;832:3656:19;4285:67;-1:-1:-1;;;;;832:3656:19;;;4285:67;832:3656;;;;;;4285:67;4081:71;4116:25;;;832:3656;4116:25;;832:3656;4116:25;3858:98;-1:-1:-1;;832:3656:19;;-1:-1:-1;;;3917:28:19;;;;;832:3656;;;;3917:28;;832:3656;;;;;;;3917:28;832:3656" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "600080fdfea264697066735822122075b85d684d26100df94357202e9674d7360d22dd0f45f66c918a469fd3c920c764736f6c634300081c0033", + "opcodes": "PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH22 0xB85D684D26100DF94357202E9674D7360D22DD0F45F6 PUSH13 0x918A469FD3C920C764736F6C63 NUMBER STOP ADDMOD SHR STOP CALLER ", + "sourceMap": "832:3656:19:-:0;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract GianoSmartWallet\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"accountFactory\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"factoryCalldata\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccountDeploymentFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"returned\",\"type\":\"address\"}],\"name\":\"ReturnedAddressDoesNotMatchAccount\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"Applied Blockchain (https://github.com/appliedblockchain/giano)Coinbase (https://github.com/coinbase/smart-wallet)\",\"details\":\"This contract is not meant to ever actually be deployed, only mock deployed and used via a static eth_call.\",\"errors\":{\"ReturnedAddressDoesNotMatchAccount(address,address)\":[{\"params\":{\"account\":\"The passed account\",\"returned\":\"The returned account\"}}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"`accountFactory` can be any address if the account is already deployed.`factoryCalldata` can be 0x if the account is already deployed.If calling with solidity, the `replaySafeHash` will be `.code`.\",\"params\":{\"account\":\"The account that will receive the ERC-1271 `isValidSignature` call.\",\"accountFactory\":\"The factory that will be used to deploy the account (if not already deployed).\",\"factoryCalldata\":\"The calldata that will be used to deploy the account (if not already deployed).\",\"hash\":\"The hash the wallet was asked to sign.\"}}},\"title\":\"ERC1271 Input Generator\",\"version\":1},\"userdoc\":{\"errors\":{\"AccountDeploymentFailed()\":[{\"notice\":\"Thrown when call to `accountFactory` with `factoryCalldata` fails.\"}],\"ReturnedAddressDoesNotMatchAccount(address,address)\":[{\"notice\":\"Thrown when the address returned from call to `accountFactory` does not match passed account\"}]},\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Computes and returns the expected ERC-1271 replay-safe hash for a GianoSmartWallet.\"}},\"notice\":\"Helper contract for generating an ERC-1271 input hash to sign for deployed and undeployed GianoSmartWallet. May be useful for generating ERC-6492 compliant signatures. Inspired by Ambire's DeploylessUniversalSigValidator https://github.com/AmbireTech/signature-validator/blob/d5f84f5fc00bfdf79b80205b983a8258b6d1b3ea/contracts/DeploylessUniversalSigValidator.sol.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/utils/ERC1271InputGenerator.sol\":\"ERC1271InputGenerator\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@account-abstraction/contracts/core/Helpers.sol\":{\"keccak256\":\"0x6247e011a6cb0b263b3aa098822977181674d91b62e5bdfe04c6e66f72da25d6\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ca829a69b3fbc74fec8e140d42a2bf93bc3512609272f031c846470f61f0ab7e\",\"dweb:/ipfs/QmP3r3MBgAN39KeVB1rCGJWwcBcotNt26ALtAR54poQ1Jc\"]},\"@account-abstraction/contracts/core/UserOperationLib.sol\":{\"keccak256\":\"0x9d50ece985d35f82e33e5da417595c86fac10449e3d10895d08363d33aad454b\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b1d11cc364c8bf7ed5388268c895b5ffed16e87dfbcb320ddeeba5e7974315dc\",\"dweb:/ipfs/QmYSpvjxEjweietQrYZagwQ52ipy7eXx4rwvnTzXKeGeMS\"]},\"@account-abstraction/contracts/interfaces/IAccount.sol\":{\"keccak256\":\"0x38710bec0cb20ff4ceef46a80475b5bdabc27b7efd2687fd473db68332f61b78\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://dea7a723e1ef852e8764e69914a345d2e8bc5e13facfc9d5c29d791cb4ab0020\",\"dweb:/ipfs/QmU8dYgyF4DBJXFqjwLAtnE3q8q259ChfoEk9a6wyhHzEP\"]},\"@account-abstraction/contracts/interfaces/PackedUserOperation.sol\":{\"keccak256\":\"0x1129b46381db68eddbc5cb49e50664667b66b03c480453858e7b25eabe444359\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://499a948aba60480dba6e25c763b8d918f1c246eb7a3302e04f493e080f3295be\",\"dweb:/ipfs/QmeRhhswf4NACcBKam2PyjpTP2ddSm648kah5kkQJsvwz3\"]},\"FreshCryptoLib/FCL_ecdsa.sol\":{\"keccak256\":\"0x679d2e9a655cd7e156a0cfc24de0aca88d4e0b34a8e0dfe6a599f23af092f5a2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db31eb84c6f854f076d2501e3d8b5a606fb4924168bdfc6fc3de84e67ed8a80d\",\"dweb:/ipfs/QmWGAmc7B4aT6Ki52uF9QmPQKWipaptit7r3JknBHjUGfe\"]},\"FreshCryptoLib/FCL_elliptic.sol\":{\"keccak256\":\"0xac7bb3260a446851f45b8cb71e31d64ca469d7711ed04662092a9554f1283a38\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f9b0dc5a2306ad3f3a0ff4a5b947fe49422181e97c163ea237fc8bfc6736429d\",\"dweb:/ipfs/QmeruF7BvG5BNnqwqwdshoVXuXqXtajbUYB19KwPynHrQE\"]},\"openzeppelin-contracts/contracts/utils/Base64.sol\":{\"keccak256\":\"0xbee2b819e1b4bf569ffc1b1b9d560b4abd6a589575f3093edaab9244de18a0c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e478c0e9bbf3eb8cd3b7784f9b397603e34747f9ffd16571ed1d89ce102de389\",\"dweb:/ipfs/QmZ6zXpwy5xRxx9RkodJmDZSUTeEqPQUanAC5TUoYqW2VR\"]},\"solady/accounts/Receiver.sol\":{\"keccak256\":\"0xc879aa81dd5639f5fd97b31acd91658ffe33ae4b72b70ed7bd701c37addce43b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2e03a8d37d48644857d94f7432c1e2272bfd19649dfe80aba8f979f157f71f00\",\"dweb:/ipfs/QmWWS34bNWhiZgLXS9gtD8N2dxreRsVXxhvQRKqd4wKUuU\"]},\"solady/utils/CallContextChecker.sol\":{\"keccak256\":\"0xc54c743a03f4909826712e9c6b683ca95e8b0c120c55284a9e3572621ebd734b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3d3138009aba3d2fd310636f3cc1d6029e970c57ddb74693bebf2a02d3e6f12d\",\"dweb:/ipfs/QmauMpcVDyQqVnAUF75DXy831LvtxyFS7GND7kge1Zgw55\"]},\"solady/utils/LibBytes.sol\":{\"keccak256\":\"0x320c3c933df51e8fd6f1fc96de721c8cc6f1be1d4c586c11f1c472a23b86eba5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cec71f42247eda74535c6e695a2ac194268a342594a26c090bafd04434698b20\",\"dweb:/ipfs/QmXA8Qaw6DdWujdrNHMHpDLNGG4QCgC859ozivrxkxp7Ea\"]},\"solady/utils/LibString.sol\":{\"keccak256\":\"0x8a6b219f6ccda90c08e2debae62618d78d6f0cef086eb6c9503793d7f12815dd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d1301acbf7371cb51ab01fe3bee8a9b732ee0bcf6cc0db20ed5a3fb9241d675e\",\"dweb:/ipfs/QmXuM4tSfPDeFRvP3nEQmuezp1yEm4HxyWtU41FjiCdxAG\"]},\"solady/utils/SignatureCheckerLib.sol\":{\"keccak256\":\"0x098c7eb88b3048f227b240e0e5bf1da4a8f7622b30f6d7c06416bfcab3225e77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://50c2766f652916c5d6433665fb1c3b2f04c3d9292a35c12e0f8d7c71dd6438cb\",\"dweb:/ipfs/QmWTMwN2RDZUUPg7KkH1qFBjTSh84Zw8bbYwRBCQUtLN2h\"]},\"solady/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x63899eaf1a24713464b8084ada33a83c4b7db789fe83ae22f016e39646bee361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://617fa735ffa8ba31051745614a508abd69d2cfc1b1bc1eb3c772865db5f7ce65\",\"dweb:/ipfs/QmR1pQbHPyXcLbFm2vHrXBs1qRFrGC22gF7wWYamYy8aaE\"]},\"src/AuthenticatedStaticCaller.sol\":{\"keccak256\":\"0x06bb6bea86630eda0e5920c4fe4a5d51e89d18072faf7c4b5d7ae8ca82b87b94\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2920f02558ea8bbe8ca21cbe1bcbbea7d3c4d7f0d3e812cde706f95c53b399aa\",\"dweb:/ipfs/QmaNpbMazUf1n6hpXSMq7RDJix7ipPiALKE93fMmBtbS4A\"]},\"src/ERC1271.sol\":{\"keccak256\":\"0x75c3fe08b6e1789dab7714196704f425d1afea21d725fcb6c418a70ef5bf6fad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd292bcf9b1891abb517323636493499dbdd00bebc1f759c07fb26e103a1b71d\",\"dweb:/ipfs/QmWMT3C54pakfUCTkcPzFQAvE8nRnPqDDpFaDhY5A9fpEp\"]},\"src/GianoSmartWallet.sol\":{\"keccak256\":\"0x10f35f381fe7d934aa2f83dde5f50a69efbe49600679cb8cd7777fb07931e4e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a93eeba861ccaf70dfe6d9ed594f5ae55d37ee9feab8e4867c95657b36ae1b51\",\"dweb:/ipfs/QmTPuS5LuaW2Fx3QAXoUD4gSErZ8CoRQKFk8Nsy3vMe2PV\"]},\"src/MultiOwnable.sol\":{\"keccak256\":\"0x46a9fa25c7de87b56df47b67d61b6efd96ed3f382c5d440d04de55fa23bccadd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75ac03bdfdddec29b0b1f4f9c33add4b5b9d5400b1a54691a544a59ac710de5c\",\"dweb:/ipfs/QmXajkF7z8rqmDE89H4uVaKCDyQsdwphif8BHZLLu9MQ5k\"]},\"src/utils/ERC1271InputGenerator.sol\":{\"keccak256\":\"0xeedc1d0ae56555659e3c4242955fdb0ee3b4ab24495bcd58ed5fdf2711fcf62e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://83fad6dad1f69c6dcddacfd647bd6c329995a36614ab076d4a7d45b7a863e1ef\",\"dweb:/ipfs/QmanbjcevRe7YYv4hdofu59vuudwVLJaCXofjHY7wXiDPT\"]},\"webauthn-sol/WebAuthn.sol\":{\"keccak256\":\"0x8b940975249f72155110e5e5b4611fc9031330538183862b9d8f12ea7c30ad25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://433957720c13a834b9aab98a5054e9dabe5c660a1a3fb267e6ad1a22b99b68ed\",\"dweb:/ipfs/QmTkQxCCf8kDAHa6rBwLT2mxFXN3tSAWyx4rLmgcLkFkRh\"]}},\"version\":1}" + } + }, + "webauthn-sol/WebAuthn.sol": { + "WebAuthn": { + "abi": [], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea264697066735822122005e34eb23fb9c6a050d1789ffaa8d1e291a45b310524f395a5b9cd0ff332741b64736f6c634300081c0033", + "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x3A SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SDIV 0xE3 0x4E 0xB2 EXTCODEHASH 0xB9 0xC6 LOG0 POP 0xD1 PUSH25 0x9FFAA8D1E291A45B310524F395A5B9CD0FF332741B64736F6C PUSH4 0x4300081C STOP CALLER ", + "sourceMap": "761:8886:20:-:0;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "600080fdfea264697066735822122005e34eb23fb9c6a050d1789ffaa8d1e291a45b310524f395a5b9cd0ff332741b64736f6c634300081c0033", + "opcodes": "PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SDIV 0xE3 0x4E 0xB2 EXTCODEHASH 0xB9 0xC6 LOG0 POP 0xD1 PUSH25 0x9FFAA8D1E291A45B310524F395A5B9CD0FF332741B64736F6C PUSH4 0x4300081C STOP CALLER ", + "sourceMap": "761:8886:20:-:0;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Coinbase (https://github.com/base-org/webauthn-sol)Daimo (https://github.com/daimo-eth/p256-verifier/blob/master/src/WebAuthn.sol)\",\"details\":\"Attempts to use the RIP-7212 precompile for signature verification. If precompile verification fails, it falls back to FreshCryptoLib.\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"_AUTH_DATA_FLAGS_UP\":{\"details\":\"Bit 0 of the authenticator data struct, corresponding to the \\\"User Present\\\" bit. See https://www.w3.org/TR/webauthn-2/#flags.\"},\"_AUTH_DATA_FLAGS_UV\":{\"details\":\"Bit 2 of the authenticator data struct, corresponding to the \\\"User Verified\\\" bit. See https://www.w3.org/TR/webauthn-2/#flags.\"},\"_EXPECTED_TYPE_HASH\":{\"details\":\"The expected type (hash) in the client data JSON when verifying assertion signatures. See https://www.w3.org/TR/webauthn-2/#dom-collectedclientdata-type\"},\"_P256_N_DIV_2\":{\"details\":\"Secp256r1 curve order / 2 used as guard to prevent signature malleability issue.\"},\"_VERIFIER\":{\"details\":\"The precompiled contract address to use for signature verification in the \\u201csecp256r1\\u201d elliptic curve. See https://github.com/ethereum/RIPs/blob/master/RIPS/rip-7212.md.\"}},\"title\":\"WebAuthn\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"A library for verifying WebAuthn Authentication Assertions, built off the work of Daimo.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"webauthn-sol/WebAuthn.sol\":\"WebAuthn\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"FreshCryptoLib/FCL_ecdsa.sol\":{\"keccak256\":\"0x679d2e9a655cd7e156a0cfc24de0aca88d4e0b34a8e0dfe6a599f23af092f5a2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db31eb84c6f854f076d2501e3d8b5a606fb4924168bdfc6fc3de84e67ed8a80d\",\"dweb:/ipfs/QmWGAmc7B4aT6Ki52uF9QmPQKWipaptit7r3JknBHjUGfe\"]},\"FreshCryptoLib/FCL_elliptic.sol\":{\"keccak256\":\"0xac7bb3260a446851f45b8cb71e31d64ca469d7711ed04662092a9554f1283a38\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f9b0dc5a2306ad3f3a0ff4a5b947fe49422181e97c163ea237fc8bfc6736429d\",\"dweb:/ipfs/QmeruF7BvG5BNnqwqwdshoVXuXqXtajbUYB19KwPynHrQE\"]},\"openzeppelin-contracts/contracts/utils/Base64.sol\":{\"keccak256\":\"0xbee2b819e1b4bf569ffc1b1b9d560b4abd6a589575f3093edaab9244de18a0c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e478c0e9bbf3eb8cd3b7784f9b397603e34747f9ffd16571ed1d89ce102de389\",\"dweb:/ipfs/QmZ6zXpwy5xRxx9RkodJmDZSUTeEqPQUanAC5TUoYqW2VR\"]},\"solady/utils/LibBytes.sol\":{\"keccak256\":\"0x320c3c933df51e8fd6f1fc96de721c8cc6f1be1d4c586c11f1c472a23b86eba5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cec71f42247eda74535c6e695a2ac194268a342594a26c090bafd04434698b20\",\"dweb:/ipfs/QmXA8Qaw6DdWujdrNHMHpDLNGG4QCgC859ozivrxkxp7Ea\"]},\"solady/utils/LibString.sol\":{\"keccak256\":\"0x8a6b219f6ccda90c08e2debae62618d78d6f0cef086eb6c9503793d7f12815dd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d1301acbf7371cb51ab01fe3bee8a9b732ee0bcf6cc0db20ed5a3fb9241d675e\",\"dweb:/ipfs/QmXuM4tSfPDeFRvP3nEQmuezp1yEm4HxyWtU41FjiCdxAG\"]},\"webauthn-sol/WebAuthn.sol\":{\"keccak256\":\"0x8b940975249f72155110e5e5b4611fc9031330538183862b9d8f12ea7c30ad25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://433957720c13a834b9aab98a5054e9dabe5c660a1a3fb267e6ad1a22b99b68ed\",\"dweb:/ipfs/QmTkQxCCf8kDAHa6rBwLT2mxFXN3tSAWyx4rLmgcLkFkRh\"]}},\"version\":1}" + } + } + } + } +} \ No newline at end of file diff --git a/packages/contracts/ignition/deployments/chain-8453/deployed_addresses.json b/packages/contracts/ignition/deployments/chain-8453/deployed_addresses.json index 4e5b3fe..63793f8 100644 --- a/packages/contracts/ignition/deployments/chain-8453/deployed_addresses.json +++ b/packages/contracts/ignition/deployments/chain-8453/deployed_addresses.json @@ -1,4 +1,4 @@ { - "GianoAccountFactory#GianoSmartWallet": "0x7bE6A8bE4b6e182f7066d99fbfd8f3636842eB79", - "GianoAccountFactory#GianoSmartWalletFactory": "0xb968dde9C231908ea255600Da0c9b6F73493BFBB" + "GianoAccountFactory#GianoSmartWallet": "0x15cC758f7D3188c2361f6141CEaa9Ab2792bea56", + "GianoAccountFactory#GianoSmartWalletFactory": "0x26dCd29390eba3B22BcCbd2143989E5994Ac7050" } diff --git a/packages/contracts/ignition/deployments/chain-8453/journal.jsonl b/packages/contracts/ignition/deployments/chain-8453/journal.jsonl index e41a21b..61d2057 100644 --- a/packages/contracts/ignition/deployments/chain-8453/journal.jsonl +++ b/packages/contracts/ignition/deployments/chain-8453/journal.jsonl @@ -1,14 +1,14 @@ {"chainId":8453,"type":"DEPLOYMENT_INITIALIZE"} -{"artifactId":"GianoAccountFactory#GianoSmartWallet","constructorArgs":[],"contractName":"GianoSmartWallet","dependencies":[],"from":"0x7abe7bd7889041e46f21491feba3c2117aba8d20","futureId":"GianoAccountFactory#GianoSmartWallet","futureType":"NAMED_ARTIFACT_CONTRACT_DEPLOYMENT","libraries":{},"strategy":"create2","strategyConfig":{"salt":"0xAB000000000000000000000000000000000000000000000000000000000000AB"},"type":"DEPLOYMENT_EXECUTION_STATE_INITIALIZE","value":{"_kind":"bigint","value":"0"}} -{"futureId":"GianoAccountFactory#GianoSmartWallet","networkInteraction":{"data":"0x26307668ab000000000000000000000000000000000000000000000000000000000000ab0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000337860a0604052346103de57306080526040805161001b82826103e3565b60018152601f19820160005b8181106103cd5750508151600060208201526020815261004783826103e3565b61005082610406565b5261005a81610406565b507f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f5005460005b825181101561038c5760206100958285610429565b5151141580610377575b6103505760206100af8285610429565b51511480610312575b6102eb576100c68184610429565b51918060001981146102d5576001019260ff6100e18261048c565b54166102b5576100f08161048c565b805460ff1916600117905560008281527f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f50260205286902081516001600160401b03811161029f578154600181811c91168015610295575b602082101461027f57601f8111610237575b506020601f82116001146101bc579260008051602061335883398151915292826101a89360019897966000916101b1575b50600019600383901b1c191690881b1790555b885191829182610460565b0390a201610080565b90508301513861018a565b601f1982169083600052806000209160005b81811061021f57508360019897969360008051602061335883398151915296936101a8968b9410610206575b5050811b01905561019d565b85015160001960f88460031b161c1916905538806101fa565b9192602060018192868a0151815501940192016101ce565b826000526020600020601f830160051c81019160208410610275575b601f0160051c01905b8181106102695750610159565b6000815560010161025c565b9091508190610253565b634e487b7160e01b600052602260045260246000fd5b90607f1690610147565b634e487b7160e01b600052604160045260246000fd5b855163468b12ad60e11b81529081906102d19060048301610460565b0390fd5b634e487b7160e01b600052601160045260246000fd5b836102f96102d19285610429565b51905163bff1ac6560e01b815291829160048301610460565b5061031d8184610429565b5160208151910151906020811061033e575b506001600160a01b03106100b8565b6000199060200360031b1b163861032f565b8361035e6102d19285610429565b5190516327755b9160e11b815291829160048301610460565b50836103838285610429565b5151141561009f565b83827f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f5005551612e8690816104d2823960805181818161076c015261085a0152f35b806060602080938601015201610027565b600080fd5b601f909101601f19168101906001600160401b0382119082101761029f57604052565b8051156104135760200190565b634e487b7160e01b600052603260045260246000fd5b80518210156104135760209160051b010190565b60005b8381106104505750506000910152565b8181015183820152602001610440565b60409160208252610480815180928160208601526020868601910161043d565b601f01601f1916010190565b60206104a591816040519382858094519384920161043d565b81017f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f5038152030190209056fe60806040526004361015610015575b3661142757005b60003560e01c8063066a1eb7146101e55780630db02622146101e05780630f0f3f24146101db5780631626ba7e146101d657806317452caa146101d157806319822f7c146101cc5780631ca5393f146101c757806329565e3b146101c25780632c2abd1e146101bd57806334fcd5be146101b857806336d9cf9b146101b35780634f1ef286146101ae57806352d1902d146101a95780635c60da1b146101a45780636f2de70e1461019f578063737bebdd1461019a57806384b0196e1461019557806388ce4c7c1461019057806389625b571461018b5780638ea69029146101865780639f9bcb3414610181578063a05bd44e1461017c578063a2e1a8d814610177578063b0d691fe14610172578063b61d27f61461016d578063b819736714610168578063ce1506be14610163578063d948fd2e1461015e5763f698da250361000e57610df3565b610dc8565b610daa565b610d63565b610cf7565b610ccc565b610ca5565b610c6b565b610c31565b610bfe565b610bbe565b610b6e565b610acd565b6109c7565b6108cc565b610896565b610846565b610731565b610706565b610673565b6105cb565b61052d565b6104f6565b6103a1565b610375565b610323565b61027d565b610249565b3461024457604036600319011261024457602060ff6102386004356102336024359161022560405193849288840160209093929193604081019481520152565b03601f19810183528261044f565b610e25565b54166040519015158152f35b600080fd5b34610244576000366003190112610244576020610264610ead565b604051908152f35b6001600160a01b0381160361024457565b34610244576020366003190112610244576102f460043561029d8161026c565b6102a561145f565b6040519060018060a01b03166020820152602081526102c560408261044f565b600080516020612dd183398151915254906102df82610ed9565b600080516020612dd1833981519152556114e8565b005b9181601f84011215610244578235916001600160401b038311610244576020838186019501011161024457565b34610244576040366003190112610244576004356024356001600160401b0381116102445760209161035c6103629236906004016102f6565b91610ee8565b6040516001600160e01b03199091168152f35b346102445760003660031901126102445760206040516107088152f35b90816101209103126102445790565b34610244576060366003190112610244576004356001600160401b038111610244576103d1903690600401610392565b6044356024356f71727de22e5e9d8baf0edac6f37da031193301610429576103fd829161041494610f7e565b91610418575b506040519081529081906020820190565b0390f35b60009081803892335af15038610403565b6282b42960e81b60005260046000fd5b634e487b7160e01b600052604160045260246000fd5b90601f801991011681019081106001600160401b0382111761047057604052565b610439565b6040519061048460c08361044f565b565b6001600160401b03811161047057601f01601f191660200190565b9291926104ad82610486565b916104bb604051938461044f565b829481845281830111610244578281602093846000960137010152565b9080601f83011215610244578160206104f3933591016104a1565b90565b34610244576020366003190112610244576004356001600160401b0381116102445760ff61023861023360209336906004016104d8565b34610244576040366003190112610244576102f46024356102c560043561055261145f565b6040805160208101929092528101929092528160608101610225565b906020600319830112610244576004356001600160401b0381116102445760040160009280601f830112156105c7578135936001600160401b0385116105c457506020808301928560051b010111610244579190565b80fd5b8380fd5b6105d43661056e565b906f71727de22e5e9d8baf0edac6f37da03233036104295760005b828110156102f45760006106088260051b840184610f16565b6106128183610f48565b61061b81611228565b156106575750829161062e9136916104a1565b60208151910182305af16106406110f1565b901561064f57506001016105ef565b602081519101fd5b631d8370a360e11b84526001600160e01b031916600452602483fd5b61067c3661056e565b906f71727de22e5e9d8baf0edac6f37da03233036106f9575b60005b8281106106a157005b806106f36106b2600193868661103f565b356106bc8161026c565b60206106c984888861103f565b01356106ed6106e66106dc868a8a61103f565b6040810190610f16565b36916104a1565b9161190f565b01610698565b61070161145f565b610695565b34610244576000366003190112610244576020600080516020612e3183398151915254604051908152f35b6040366003190112610244576004356107498161026c565b6024356001600160401b038111610244576107689036906004016102f6565b90917f000000000000000000000000000000000000000000000000000000000000000030146108385761079961145f565b60018060a01b03163d6000526352d1902d600152600080516020612e11833981519152602060016004601d855afa510361082a57807fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a28181600080516020612e118339815191525561080b57005b816000926040519485378338925af41561082157005b3d6000823e3d90fd5b6355299b496001526004601dfd5b639f03a0266000526004601cfd5b3461024457600036600319011261024457307f000000000000000000000000000000000000000000000000000000000000000003610838576020604051600080516020612e118339815191528152f35b3461024457600036600319011261024457600080516020612e11833981519152546040516001600160a01b039091168152602090f35b6108d53661056e565b600080516020612dd18339815191525461095d576001600160401b038111610470578060051b916040519161090d602085018461044f565b825260208201928101903682116102445780935b828510610931576102f484611943565b84356001600160401b038111610244576020916109528392369086016104d8565b815201940193610921565b6302ed543d60e51b60005260046000fd5b60005b8381106109815750506000910152565b8181015183820152602001610971565b906020916109aa8151809281855285808601910161096e565b601f01601f1916010190565b9060206104f3928181520190610991565b34610244576020366003190112610244576004356001600160401b038111610244578060040160806003198336030112610244576044820135610a0981611070565b4211610aa657610a40610a2d610a21610a44936110a8565b60208151910120611cc6565b610a3a6064860185610f16565b9161181d565b1590565b610a9557600091610a63826024610a5b8695611066565b930190610f16565b90610a73604051809381936110ce565b03915afa610a7f6110f1565b901561064f5761041490604051918291826109b6565b638baa579f60e01b60005260046000fd5b610ab2610ac991611070565b630f88f04960e41b60005260045242602452604490565b6000fd5b3461024457600036600319011261024457610b0d610b1b610aec611a55565b604092919251938493600f60f81b855260e0602086015260e0850190610991565b908382036040850152610991565b466060830152306080830152600060a083015281810360c0830152602060605191828152019060809060005b818110610b55575050500390f35b8251845285945060209384019390920191600101610b47565b346102445760003660031901126102445760206040516121058152f35b9060406003198301126102445760043591602435906001600160401b03821161024457610bba916004016102f6565b9091565b3461024457610bcc36610b8b565b90610bd561145f565b6001610bdf610ead565b14610bed576102f492611baf565b63948bf89760e01b60005260046000fd5b3461024457602036600319011261024457610414610c1d60043561115b565b604051918291602083526020830190610991565b34610244576020366003190112610244576004356001600160e01b03198116810361024457610c61602091611228565b6040519015158152f35b34610244576020366003190112610244576004356001600160401b03811161024457610264610ca06020923690600401610392565b6112ab565b34610244576020366003190112610244576020610c61600435610cc78161026c565b611398565b346102445760003660031901126102445760206040516f71727de22e5e9d8baf0edac6f37da0328152f35b606036600319011261024457600435610d0f8161026c565b604435906024356001600160401b038311610244576106ed610d386102f49436906004016102f6565b6f71727de22e5e9d8baf0edac6f37da0323303610d565736916104a1565b610d5e61145f565b6106e6565b3461024457610d7136610b8b565b90610d7a61145f565b610d82610ead565b9260018411610d95576102f49350611baf565b83631047e35560e31b60005260045260246000fd5b34610244576020366003190112610244576020610264600435611cc6565b34610244576000366003190112610244576020600080516020612dd183398151915254604051908152f35b346102445760003660031901126102445760206102646113be565b90610e216020928281519485920161096e565b0190565b6020610e3e91816040519382858094519384920161096e565b81017f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f50381520301902090565b634e487b7160e01b600052601160045260246000fd5b600080516020612df18339815191520390600080516020612df18339815191528211610ea857565b610e6a565b600080516020612dd183398151915254600080516020612e31833981519152548103908111610ea85790565b6000198114610ea85760010190565b90610ef6610efb9392611cc6565b61181d565b610f0b576001600160e01b031990565b630b135d3f60e11b90565b903590601e198136030182121561024457018035906001600160401b0382116102445760200191813603831361024457565b356001600160e01b0319811692919060048210610f63575050565b6001600160e01b031960049290920360031b82901b16169150565b602081013560401c91610f946060830183610f16565b6316155e8f60e11b916001600160e01b031991610fb091610f48565b16036110015750610fc0816112ab565b916121058103610fed575090610a3a610fdf925b610100810190610f16565b610fe857600190565b600090565b632ef3781360e01b60005260045260246000fd5b916121058114610fed575090610a3a610fdf92610fd4565b61102460ff91610e25565b541690565b634e487b7160e01b600052603260045260246000fd5b91908110156110615760051b81013590605e1981360301821215610244570190565b611029565b356104f38161026c565b906107088201809211610ea857565b9060158201809211610ea857565b9060028201809211610ea857565b91908201809211610ea857565b906040519163737bebdd60e01b602084015260248301526024825261048460448361044f565b908092918237016000815290565b604051906110eb60208361044f565b60008252565b3d1561111c573d9061110282610486565b91611110604051938461044f565b82523d6000602084013e565b606090565b90600182811c92168015611151575b602083101461113b57565b634e487b7160e01b600052602260045260246000fd5b91607f1691611130565b6000527f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f50260205260406000206040519081600082549261119a84611121565b808452936001811690811561120657506001146111bf575b506104f39250038261044f565b90506000929192526020600020906000915b8183106111ea5750509060206104f392820101386111b2565b60209193508060019154838588010152019101909183926111d1565b9050602092506104f394915060ff191682840152151560051b820101386111b2565b63ffffffff60e01b166329565e3b60e01b811490811561129a575b8115611289575b8115611278575b8115611267575b5061126257600090565b600190565b63278f794360e11b14905038611258565b63b819736760e01b81149150611251565b6389625b5760e01b8114915061124a565b6303c3cfc960e21b81149150611243565b602081013561135f6112c06040840184610f16565b908160405191823720916102256112da6060860186610f16565b90816040519182372060c086013560a0870135608088013561130861130260e08b018b610f16565b90612227565b604080519a356001600160a01b031660208c01908152908b019790975260608a0198909852608089019390935260a088019290925260c087019190915260e086015261010085019390935292918290610120820190565b51902060408051602081019283526f71727de22e5e9d8baf0edac6f37da032918101919091526113928160608101610225565b51902090565b61102460ff916040519060018060a01b031660208201526020815261023360408261044f565b6113c6611a55565b906020815191012090602081519101206040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815261139260c08261044f565b60003560e01c63bc197c81811463f23a6e6182141763150b7a0282141761145657633c10b94e6000526004601cfd5b6020526020603cf35b61146833611398565b8015611483575b610484576282b42960e81b60005260046000fd5b5030331461146f565b818110611497575050565b6000815560010161148c565b9190601f81116114b257505050565b610484926000526020600020906020601f840160051c830193106114de575b601f0160051c019061148c565b90915081906114d1565b6114f181611019565b61165f576114fe81610e25565b600160ff19825416179055816000527f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f502602052604060002081516001600160401b0381116104705761155a816115548454611121565b846114a3565b6020601f82116001146115ce57916115af827f38109edc26e166b5579352ce56a50813177eb25208fd90d61f2f37838622022095936115be956000916115c3575b508160011b916000199060031b1c19161790565b90555b604051918291826109b6565b0390a2565b90508401513861159b565b601f198216906115e384600052602060002090565b9160005b8181106116475750926115be9492600192827f38109edc26e166b5579352ce56a50813177eb25208fd90d61f2f37838622022098961061162e575b5050811b0190556115b2565b85015160001960f88460031b161c191690553880611622565b9192602060018192868a0151815501940192016115e7565b60405163468b12ad60e11b815290819061167c90600483016109b6565b0390fd5b602081830312610244578035906001600160401b03821161024457016040818303126102445760405191604083018381106001600160401b038211176104705760405281356001600160401b03811161024457816116df9184016104d8565b835260208201356001600160401b038111610244576116fe92016104d8565b602082015290565b60208151910151906020811061171a575090565b6000199060200360031b1b1690565b9190826040910312610244576020825192015190565b81601f82011215610244576020815191019061175a81610486565b92611768604051948561044f565b81845281830111610244576104f391602084019061096e565b602081830312610244578051906001600160401b03821161024457019060c082820312610244576117b0610475565b9180516001600160401b03811161024457826117cd91830161173f565b835260208101516001600160401b0381116102445760a0926117f091830161173f565b6020840152604081015160408401526060810151606084015260808101516080840152015160a082015290565b92919061182c91810190611680565b9081519161183c610a4084611019565b6119065760208351146118bd578251936040851461186f576040516327755b9160e11b81528061167c86600483016109b6565b6102256118b86118a361188f8760208080999b6104f39b01019101611729565b969095015160208082518301019101611781565b92604051928391602083019190602083019252565b611ec8565b91929091906001600160a01b036118d385611706565b116118eb576020806104f39495015192015191611d3b565b60405163bff1ac6560e01b81528061167c86600483016109b6565b50915050600090565b916000928392602083519301915af16119266110f1565b901561064f5750565b80518210156110615760209160051b010190565b90600080516020612dd18339815191525460005b8351811015611a4057602061196c828661192f565b5151141580611a2a575b611a03576020611986828661192f565b515114806119e1575b6119ba57806119b46119a36001938761192f565b51936119ae81610ed9565b946114e8565b01611957565b6119c761167c918561192f565b5160405163bff1ac6560e01b8152918291600483016109b6565b506001600160a01b036119fd6119f7838761192f565b51611706565b1161198f565b611a1061167c918561192f565b516040516327755b9160e11b8152918291600483016109b6565b506040611a37828661192f565b51511415611976565b50600080516020612dd1833981519152559050565b6040908151611a64838261044f565b601281527111da585b9bc814db585c9d0815d85b1b195d60721b602082015291611a908151918261044f565b60018152603160f81b602082015290565b908060209392818452848401376000828201840152601f01601f1916010190565b92916104f39492611ae0928552606060208601526060850191611aa1565b916040818403910152610991565b60209082604051938492833781017f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f50381520301902090565b600281901b91906001600160fe1b03811603610ea857565b611b488154611121565b9081611b52575050565b81601f60009311600114611b64575055565b81835260208320611b8091601f0160051c81019060010161148c565b808252602082209081548360011b9084198560031b1c191617905555565b9160206104f3938181520191611aa1565b9190611bba8361115b565b805115611cb05780516020820120611bd33685856104a1565b6020815191012003611c9157509081611c1a611c10837fcf95bbfe6f870f8cc40482dc3dccdafd268f0e9ce0a4f24ea1bea9be64e505ff95611aee565b805460ff19169055565b611c55611c50856000527f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f502602052604060002090565b611b3e565b611c82611c70600080516020612e3183398151915254610ed9565b600080516020612e3183398151915255565b6115be60405192839283611b9e565b60405163781f2e3960e01b815293849361167c93909160048601611ac2565b63340c473d60e11b600052600484905260246000fd5b611cce6113be565b9060405160208101917f37f248f492286ab572e2a1ee0bd5315f2aae54a08b5871b294d657f3a1f1d0078352604082015260408152611d0e60608261044f565b51902060405190602082019261190160f01b8452602283015260428201526042815261139260628261044f565b9091600091906001600160a01b03821615611e255760405192600484019460248501956044860192853b15611da557509186939160209593630b135d3f60e11b8852526040845281518501809260045afa9360443d01915afa9151630b135d3f60e11b1491161690565b979650509050815180604014611e0057604114611dc25750505050565b602092939550606082015160001a835260408201516060525b60005201516040526020600160806000825afa511860601b3d11916000606052604052565b506020929395506040820151601b8160ff1c01845260018060ff1b0316606052611ddb565b50505050600090565b906104846001602d60405180956c1131b430b63632b733b2911d1160991b6020830152611e64815180926020868601910161096e565b8101601160f91b838201520301601e1981018552018361044f565b8051602010156110615760400190565b6040513d6000823e3d90fd5b6020929190611eb184928281519485920161096e565b019081520190565b90816020910312610244575190565b92919060009360a082019485517f7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8106120a55760208301917fff1a2a9176d650e4a99dedb58f1793003935130579fe17b5a3f698ac5b00e634611f3a84516060870151611f348161107f565b91612232565b60208151910120036120ae57611f52611f57916120b8565b611e2e565b611f6c83516040860151611f3484518261109b565b602081519101209060208151910120036120a557600160f81b600160f81b611fa5611f978651611e7f565b516001600160f81b03191690565b16036120a557611fc2602092600092505160405191828092610e0e565b039060025afa156120a05760206000611ff88151611fec8551610225604051938492888401611e9b565b60405191828092610e0e565b039060025afa156120a057608060005191019360008086518561204b85516102258a60405194859360208501978c899192608093969594919660a084019784526020840152604083015260608201520152565b51906101005afa9461205b6110f1565b80519680612097575b61207757506104f395505190519161211f565b6001966120939650810160209081019550019250611eb9915050565b1490565b50861515612064565b611e8f565b94505050505090565b5094505050505090565b6040516104f3916120ca60608361044f565b604082527f4142434445464748494a4b4c4d4e4f505152535455565758595a61626364656660208301527f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f60408301526122de565b93919092938315801561220f575b8015612207575b80156121ef575b6121e5576121498386612386565b156121e55760405191602083526020808401526020604084015260608301527fffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254f6080830152600080516020612df183398151915260a083015260208260c0816005600019fa1561024457600080516020612df1833981519152946121df93866121d9945181818909940991612461565b91610e80565b90081590565b5050505050600090565b50600080516020612df183398151915282101561213b565b508115612134565b50600080516020612df183398151915284101561212d565b816040519182372090565b8051606094939290838111156122a4575b8181111561229c575b5082811061225957505050565b6040519450918290039101601f8201601f19165b8181015185820152601f1901908115612286579061226d565b5050604081840160006020820152016040528252565b90503861224c565b925082612243565b906122b682610486565b6122c3604051918261044f565b82815280926122d4601f1991610486565b0190602036910137565b9081511561237c579061230b6123066122ff6122fa8451611b26565b61108d565b6003900490565b6122ac565b91602083019082805101906020820192835194600085525b83811061233257505050505290565b600360049101916001603f845182828260121c16880101518453828282600c1c16880101518385015382828260061c16880101516002850153168501015160038201530190612323565b50506104f36110dc565b600160601b63ffffffff60c01b03198110801590612449575b8015612438575b61243157600160601b63ffffffff60c01b0319907f5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b908290817fffffffff00000001000000000000000000000000fffffffffffffffffffffffc820990600160601b63ffffffff60c01b0319908181800909080890600160601b63ffffffff60c01b03199080091490565b5050600090565b50801580156123a6575081156123a6565b50600160601b63ffffffff60c01b031982101561239f565b9092600092908360ff81841580612a58575b612a4d576124818887612a60565b929091821580612a45575b612a0a575b5085811c60028660fe1c16015b156129f157600186821c16600286831c60011b1601600181146129a6575b60028114612999575b60031461298c575b600198600019919091019694959489949392915b886000191161255f5750505050505050505060405191606083015260208252602080830152602060408301526002600160601b0363ffffffff60c01b03196080830152600163ffffffff60601b0360601b1960a083015260208260c0816005600019fa15610244579051600160601b63ffffffff60c01b0319910990565b909192939495969798600163ffffffff60601b0360601b198660020990600160601b63ffffffff60c01b0319828009600160601b63ffffffff60c01b031981830992600160601b63ffffffff60c01b03199082900991600160601b63ffffffff60c01b03199081908f8281830891600160601b63ffffffff60c01b031991820390080960030998600160601b63ffffffff60c01b03199083099c600160601b63ffffffff60c01b0319910991600160601b63ffffffff60c01b031980826002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b03198b80090898600160601b63ffffffff60c01b031991829081038b08900996600160601b63ffffffff60c01b03199088908290840908968b60028c60018d841c16921c60011b1601801561296f5760018114612924575b60028114612919575b600314612910575b82156128fd57600160601b63ffffffff60c01b031990889082908f90090890600160601b63ffffffff60c01b031990898203908290859009089781156127c3575b600160601b63ffffffff60c01b031989800998600160601b63ffffffff60c01b0319908a0992600160601b63ffffffff60c01b0319908a90099c600160601b63ffffffff60c01b03199084900998600160601b63ffffffff60c01b03199109600160601b63ffffffff60c01b031980826002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b031985810381868009080897600160601b63ffffffff60c01b03199384910991600160601b63ffffffff60c01b03199182908a82039008090894985b6000190197969594939291906124e1565b886126e6579a91975090959050600160601b63ffffffff60c01b0319816002600160601b0363ffffffff60c01b0319099a600160601b63ffffffff60c01b03198c8009600160601b63ffffffff60c01b0319818d099c600160601b63ffffffff60c01b0319908290099b600160601b63ffffffff60c01b031990818b8103820890600160601b63ffffffff60c01b0319908c900809600160601b63ffffffff60c01b03199060030991600160601b63ffffffff60c01b0319908d0998600160601b63ffffffff60c01b031991099b600160601b63ffffffff60c01b031980826002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b0319848009089b600160601b63ffffffff60c01b03199384910991600160601b63ffffffff60c01b03199182908e82039008900908946127b2565b60019c50909a8c985090965090506127b2565b505083856126a5565b85925084915061269d565b7f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c29692507f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f59150612694565b50505099959894600163ffffffff60601b0360601b1903946127b2565b92508096509581926124cd565b96975087968994506124c5565b7f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c29698507f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f594506124bc565b60001901600186821c16600286831c60011b160161249e565b9495600080516020612df18339815191529196820390089484861580612a3d575b15612491579850505050505050505090565b506001612a2b565b50831561248c565b965050505050505090565b508315612473565b91907f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c2967f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5918015612c145784610bba9495831480612c0b575b15612bf65750600160601b63ffffffff60c01b0319905082600209600160601b63ffffffff60c01b031981800992600160601b63ffffffff60c01b031984840991600160601b63ffffffff60c01b03199085900992600160601b63ffffffff60c01b0319908190816001820890600160601b63ffffffff60c01b0319907fffffffff00000001000000000000000000000000fffffffffffffffffffffffe900809600309600160601b63ffffffff60c01b031980846002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b03198380090892600160601b63ffffffff60c01b03196001860995600160601b63ffffffff60c01b0319906001900994600160601b63ffffffff60c01b031993849109600160601b63ffffffff60c01b03199081039290918290868203900890090890612d36565b909192612c0293612c1a565b92909190612d36565b50818414612ab9565b50925090565b9193908015612d2d57600160601b63ffffffff60c01b03199081039384908290600190090893600160601b63ffffffff60c01b031990838203908290600190090892600160601b63ffffffff60c01b031984800993600160601b63ffffffff60c01b031990850992600160601b63ffffffff60c01b03199085900994600160601b63ffffffff60c01b031980876002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b031986810381858009080895600160601b63ffffffff60c01b031992839086900991600160601b63ffffffff60c01b03199182908982039008090892600160601b63ffffffff60c01b03199060010991600160601b63ffffffff60c01b03199060010990565b50600191508190565b91909260405190602082526020808301526020604083015260608201526002600160601b0363ffffffff60c01b03196080820152600163ffffffff60601b0360601b1960a082015260208160c0816005600019fa15610244575192600160601b63ffffffff60c01b03199084900992600160601b63ffffffff60c01b03199109600160601b63ffffffff60c01b031991908290800990099156fe0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f500ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f501a2646970667358221220ac1aff29649c8c9a6db23bb5a5c75ab7ff3cdee8bdeec537b0715e21e4e27df164736f6c634300081c003338109edc26e166b5579352ce56a50813177eb25208fd90d61f2f3783862202200000000000000000","id":1,"to":"0xba5Ed099633D3B313e4D5F7bdc1305d3c28ba5Ed","type":"ONCHAIN_INTERACTION","value":{"_kind":"bigint","value":"0"}},"type":"NETWORK_INTERACTION_REQUEST"} +{"artifactId":"GianoAccountFactory#GianoSmartWallet","constructorArgs":[],"contractName":"GianoSmartWallet","dependencies":[],"from":"0x13f1576bc02215d837dbcd37bc986c4e1de2d918","futureId":"GianoAccountFactory#GianoSmartWallet","futureType":"NAMED_ARTIFACT_CONTRACT_DEPLOYMENT","libraries":{},"strategy":"create2","strategyConfig":{"salt":"0xAB000000000000000000000000000000000000000000000000000000000000AB"},"type":"DEPLOYMENT_EXECUTION_STATE_INITIALIZE","value":{"_kind":"bigint","value":"0"}} +{"futureId":"GianoAccountFactory#GianoSmartWallet","networkInteraction":{"data":"0x26307668ab000000000000000000000000000000000000000000000000000000000000ab0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000348660a0604052346103de57306080526040805161001b82826103e3565b60018152601f19820160005b8181106103cd5750508151600060208201526020815261004783826103e3565b61005082610406565b5261005a81610406565b507f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f5005460005b825181101561038c5760206100958285610429565b5151141580610377575b6103505760206100af8285610429565b51511480610312575b6102eb576100c68184610429565b51918060001981146102d5576001019260ff6100e18261048c565b54166102b5576100f08161048c565b805460ff1916600117905560008281527f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f50260205286902081516001600160401b03811161029f578154600181811c91168015610295575b602082101461027f57601f8111610237575b506020601f82116001146101bc579260008051602061346683398151915292826101a89360019897966000916101b1575b50600019600383901b1c191690881b1790555b885191829182610460565b0390a201610080565b90508301513861018a565b601f1982169083600052806000209160005b81811061021f57508360019897969360008051602061346683398151915296936101a8968b9410610206575b5050811b01905561019d565b85015160001960f88460031b161c1916905538806101fa565b9192602060018192868a0151815501940192016101ce565b826000526020600020601f830160051c81019160208410610275575b601f0160051c01905b8181106102695750610159565b6000815560010161025c565b9091508190610253565b634e487b7160e01b600052602260045260246000fd5b90607f1690610147565b634e487b7160e01b600052604160045260246000fd5b855163468b12ad60e11b81529081906102d19060048301610460565b0390fd5b634e487b7160e01b600052601160045260246000fd5b836102f96102d19285610429565b51905163bff1ac6560e01b815291829160048301610460565b5061031d8184610429565b5160208151910151906020811061033e575b506001600160a01b03106100b8565b6000199060200360031b1b163861032f565b8361035e6102d19285610429565b5190516327755b9160e11b815291829160048301610460565b50836103838285610429565b5151141561009f565b83827f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f5005551612f9490816104d2823960805181818161076c015261085a0152f35b806060602080938601015201610027565b600080fd5b601f909101601f19168101906001600160401b0382119082101761029f57604052565b8051156104135760200190565b634e487b7160e01b600052603260045260246000fd5b80518210156104135760209160051b010190565b60005b8381106104505750506000910152565b8181015183820152602001610440565b60409160208252610480815180928160208601526020868601910161043d565b601f01601f1916010190565b60206104a591816040519382858094519384920161043d565b81017f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f5038152030190209056fe60806040526004361015610015575b3661165f57005b60003560e01c8063066a1eb7146101e55780630db02622146101e05780630f0f3f24146101db5780631626ba7e146101d657806317452caa146101d157806319822f7c146101cc5780631ca5393f146101c757806329565e3b146101c25780632c2abd1e146101bd57806334fcd5be146101b857806336d9cf9b146101b35780634f1ef286146101ae57806352d1902d146101a95780635c60da1b146101a45780636f2de70e1461019f578063737bebdd1461019a57806384b0196e1461019557806388ce4c7c1461019057806389625b571461018b5780638ea69029146101865780639f9bcb3414610181578063a05bd44e1461017c578063a2e1a8d814610177578063b0d691fe14610172578063b61d27f61461016d578063b819736714610168578063ce1506be14610163578063d948fd2e1461015e5763f698da250361000e57610e93565b610e68565b610e4a565b610e03565b610d97565b610d6c565b610d45565b610d0b565b610cd1565b610c9e565b610c5e565b610c0e565b610b6d565b610a67565b6108cc565b610896565b610846565b610731565b610706565b610673565b6105cb565b61052d565b6104f6565b6103a1565b610375565b610323565b61027d565b610249565b3461024457604036600319011261024457602060ff6102386004356102336024359161022560405193849288840160209093929193604081019481520152565b03601f19810183528261044f565b610ec5565b54166040519015158152f35b600080fd5b34610244576000366003190112610244576020610264610f4d565b604051908152f35b6001600160a01b0381160361024457565b34610244576020366003190112610244576102f460043561029d8161026c565b6102a5611697565b6040519060018060a01b03166020820152602081526102c560408261044f565b600080516020612edf83398151915254906102df82610f79565b600080516020612edf83398151915255611720565b005b9181601f84011215610244578235916001600160401b038311610244576020838186019501011161024457565b34610244576040366003190112610244576004356024356001600160401b0381116102445760209161035c6103629236906004016102f6565b91610f88565b6040516001600160e01b03199091168152f35b346102445760003660031901126102445760206040516107088152f35b90816101209103126102445790565b34610244576060366003190112610244576004356001600160401b038111610244576103d1903690600401610392565b6044356024356f71727de22e5e9d8baf0edac6f37da031193301610429576103fd829161041494611137565b91610418575b506040519081529081906020820190565b0390f35b60009081803892335af15038610403565b6282b42960e81b60005260046000fd5b634e487b7160e01b600052604160045260246000fd5b90601f801991011681019081106001600160401b0382111761047057604052565b610439565b6040519061048460c08361044f565b565b6001600160401b03811161047057601f01601f191660200190565b9291926104ad82610486565b916104bb604051938461044f565b829481845281830111610244578281602093846000960137010152565b9080601f83011215610244578160206104f3933591016104a1565b90565b34610244576020366003190112610244576004356001600160401b0381116102445760ff61023861023360209336906004016104d8565b34610244576040366003190112610244576102f46024356102c5600435610552611697565b6040805160208101929092528101929092528160608101610225565b906020600319830112610244576004356001600160401b0381116102445760040160009280601f830112156105c7578135936001600160401b0385116105c457506020808301928560051b010111610244579190565b80fd5b8380fd5b6105d43661056e565b906f71727de22e5e9d8baf0edac6f37da03233036104295760005b828110156102f45760006106088260051b840184610fb6565b6106128183610fe8565b61061b81611460565b156106575750829161062e9136916104a1565b60208151910182305af1610640611329565b901561064f57506001016105ef565b602081519101fd5b631d8370a360e11b84526001600160e01b031916600452602483fd5b61067c3661056e565b906f71727de22e5e9d8baf0edac6f37da03233036106f9575b60005b8281106106a157005b806106f36106b2600193868661127c565b356106bc8161026c565b60206106c984888861127c565b01356106ed6106e66106dc868a8a61127c565b6040810190610fb6565b36916104a1565b91611b43565b01610698565b610701611697565b610695565b34610244576000366003190112610244576020600080516020612f3f83398151915254604051908152f35b6040366003190112610244576004356107498161026c565b6024356001600160401b038111610244576107689036906004016102f6565b90917f0000000000000000000000000000000000000000000000000000000000000000301461083857610799611697565b60018060a01b03163d6000526352d1902d600152600080516020612f1f833981519152602060016004601d855afa510361082a57807fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a28181600080516020612f1f8339815191525561080b57005b816000926040519485378338925af41561082157005b3d6000823e3d90fd5b6355299b496001526004601dfd5b639f03a0266000526004601cfd5b3461024457600036600319011261024457307f000000000000000000000000000000000000000000000000000000000000000003610838576020604051600080516020612f1f8339815191528152f35b3461024457600036600319011261024457600080516020612f1f833981519152546040516001600160a01b039091168152602090f35b6108d53661056e565b600080516020612edf8339815191525491826109fd576108f691369161103b565b9060005b82518110156109e757602061090f82856110fc565b51511415806109d1575b6109aa57602061092982856110fc565b51511480610988575b61095d5780610957610946600193866110fc565b519361095181610f79565b94611720565b016108fa565b61096a61098491846110fc565b5160405163bff1ac6560e01b815291829160048301610a56565b0390fd5b506001600160a01b036109a461099e83866110fc565b5161193a565b11610932565b6109b761098491846110fc565b516040516327755b9160e11b815291829160048301610a56565b5060406109de82856110fc565b51511415610919565b6102f482600080516020612edf83398151915255565b6302ed543d60e51b60005260046000fd5b60005b838110610a215750506000910152565b8181015183820152602001610a11565b90602091610a4a81518092818552858086019101610a0e565b601f01601f1916010190565b9060206104f3928181520190610a31565b34610244576020366003190112610244576004356001600160401b038111610244578060040160806003198336030112610244576044820135610aa9816112a8565b4211610b4657610ae0610acd610ac1610ae4936112e0565b60208151910120611dd4565b610ada6064860185610fb6565b91611a51565b1590565b610b3557600091610b03826024610afb869561129e565b930190610fb6565b90610b1360405180938193611306565b03915afa610b1f611329565b901561064f576104149060405191829182610a56565b638baa579f60e01b60005260046000fd5b610b52610b69916112a8565b630f88f04960e41b60005260045242602452604490565b6000fd5b3461024457600036600319011261024457610bad610bbb610b8c611b63565b604092919251938493600f60f81b855260e0602086015260e0850190610a31565b908382036040850152610a31565b466060830152306080830152600060a083015281810360c0830152602060605191828152019060809060005b818110610bf5575050500390f35b8251845285945060209384019390920191600101610be7565b346102445760003660031901126102445760206040516121058152f35b9060406003198301126102445760043591602435906001600160401b03821161024457610c5a916004016102f6565b9091565b3461024457610c6c36610c2b565b90610c75611697565b6001610c7f610f4d565b14610c8d576102f492611cbd565b63948bf89760e01b60005260046000fd5b3461024457602036600319011261024457610414610cbd600435611393565b604051918291602083526020830190610a31565b34610244576020366003190112610244576004356001600160e01b03198116810361024457610d01602091611460565b6040519015158152f35b34610244576020366003190112610244576004356001600160401b03811161024457610264610d406020923690600401610392565b6114e3565b34610244576020366003190112610244576020610d01600435610d678161026c565b6115d0565b346102445760003660031901126102445760206040516f71727de22e5e9d8baf0edac6f37da0328152f35b606036600319011261024457600435610daf8161026c565b604435906024356001600160401b038311610244576106ed610dd86102f49436906004016102f6565b6f71727de22e5e9d8baf0edac6f37da0323303610df65736916104a1565b610dfe611697565b6106e6565b3461024457610e1136610c2b565b90610e1a611697565b610e22610f4d565b9260018411610e35576102f49350611cbd565b83631047e35560e31b60005260045260246000fd5b34610244576020366003190112610244576020610264600435611dd4565b34610244576000366003190112610244576020600080516020612edf83398151915254604051908152f35b346102445760003660031901126102445760206102646115f6565b90610ec160209282815194859201610a0e565b0190565b6020610ede918160405193828580945193849201610a0e565b81017f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f50381520301902090565b634e487b7160e01b600052601160045260246000fd5b600080516020612eff8339815191520390600080516020612eff8339815191528211610f4857565b610f0a565b600080516020612edf83398151915254600080516020612f3f833981519152548103908111610f485790565b6000198114610f485760010190565b90610f96610f9b9392611dd4565b611a51565b610fab576001600160e01b031990565b630b135d3f60e11b90565b903590601e198136030182121561024457018035906001600160401b0382116102445760200191813603831361024457565b356001600160e01b0319811692919060048210611003575050565b6001600160e01b031960049290920360031b82901b16169150565b909291928360041161024457831161024457600401916003190190565b929190926001600160401b038411610470578360051b9060206040516110638285018261044f565b8096815201918101918383116102445781905b838210611084575050505050565b81356001600160401b038111610244576020916110a487849387016104d8565b815201910190611076565b602081830312610244578035906001600160401b03821161024457019080601f83011215610244578160206104f39335910161103b565b634e487b7160e01b600052603260045260246000fd5b80518210156111105760209160051b010190565b6110e6565b80516020909101516001600160e01b0319811692919060048210611003575050565b91602083013560401c9160608401906111508286610fb6565b6316155e8f60e11b916001600160e01b03199161116c91610fe8565b160361124f575061117c846114e3565b92612105810361123b575061119e6111976111a69286610fb6565b809161101e565b8101906110af565b9160005b8351811015611215576111bd81856110fc565b5163278f794360e11b6111df6111d283611115565b6001600160e01b03191690565b146111ee575b506001016111aa565b60240151803b6111e557630c76093760e01b6000526001600160a01b031660045260246000fd5b50909261122d9250610ada905b610100810190610fb6565b61123657600190565b600090565b632ef3781360e01b60005260045260246000fd5b929050612105819492941461123b575090610ada61122d92611222565b61127760ff91610ec5565b541690565b91908110156111105760051b81013590605e1981360301821215610244570190565b356104f38161026c565b906107088201809211610f4857565b9060158201809211610f4857565b9060028201809211610f4857565b91908201809211610f4857565b906040519163737bebdd60e01b602084015260248301526024825261048460448361044f565b908092918237016000815290565b6040519061132360208361044f565b60008252565b3d15611354573d9061133a82610486565b91611348604051938461044f565b82523d6000602084013e565b606090565b90600182811c92168015611389575b602083101461137357565b634e487b7160e01b600052602260045260246000fd5b91607f1691611368565b6000527f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f5026020526040600020604051908160008254926113d284611359565b808452936001811690811561143e57506001146113f7575b506104f39250038261044f565b90506000929192526020600020906000915b8183106114225750509060206104f392820101386113ea565b6020919350806001915483858801015201910190918392611409565b9050602092506104f394915060ff191682840152151560051b820101386113ea565b63ffffffff60e01b166329565e3b60e01b81149081156114d2575b81156114c1575b81156114b0575b811561149f575b5061149a57600090565b600190565b63278f794360e11b14905038611490565b63b819736760e01b81149150611489565b6389625b5760e01b81149150611482565b6303c3cfc960e21b8114915061147b565b60208101356115976114f86040840184610fb6565b908160405191823720916102256115126060860186610fb6565b90816040519182372060c086013560a0870135608088013561154061153a60e08b018b610fb6565b90612335565b604080519a356001600160a01b031660208c01908152908b019790975260608a0198909852608089019390935260a088019290925260c087019190915260e086015261010085019390935292918290610120820190565b51902060408051602081019283526f71727de22e5e9d8baf0edac6f37da032918101919091526115ca8160608101610225565b51902090565b61127760ff916040519060018060a01b031660208201526020815261023360408261044f565b6115fe611b63565b906020815191012090602081519101206040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a081526115ca60c08261044f565b60003560e01c63bc197c81811463f23a6e6182141763150b7a0282141761168e57633c10b94e6000526004601cfd5b6020526020603cf35b6116a0336115d0565b80156116bb575b610484576282b42960e81b60005260046000fd5b503033146116a7565b8181106116cf575050565b600081556001016116c4565b9190601f81116116ea57505050565b610484926000526020600020906020601f840160051c83019310611716575b601f0160051c01906116c4565b9091508190611709565b6117298161126c565b6118975761173681610ec5565b600160ff19825416179055816000527f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f502602052604060002081516001600160401b038111610470576117928161178c8454611359565b846116db565b6020601f821160011461180657916117e7827f38109edc26e166b5579352ce56a50813177eb25208fd90d61f2f37838622022095936117f6956000916117fb575b508160011b916000199060031b1c19161790565b90555b60405191829182610a56565b0390a2565b9050840151386117d3565b601f1982169061181b84600052602060002090565b9160005b81811061187f5750926117f69492600192827f38109edc26e166b5579352ce56a50813177eb25208fd90d61f2f378386220220989610611866575b5050811b0190556117ea565b85015160001960f88460031b161c19169055388061185a565b9192602060018192868a01518155019401920161181f565b60405163468b12ad60e11b81529081906109849060048301610a56565b602081830312610244578035906001600160401b03821161024457016040818303126102445760405191604083018381106001600160401b038211176104705760405281356001600160401b03811161024457816119139184016104d8565b835260208201356001600160401b0381116102445761193292016104d8565b602082015290565b60208151910151906020811061194e575090565b6000199060200360031b1b1690565b9190826040910312610244576020825192015190565b81601f82011215610244576020815191019061198e81610486565b9261199c604051948561044f565b81845281830111610244576104f3916020840190610a0e565b602081830312610244578051906001600160401b03821161024457019060c082820312610244576119e4610475565b9180516001600160401b0381116102445782611a01918301611973565b835260208101516001600160401b0381116102445760a092611a24918301611973565b6020840152604081015160408401526060810151606084015260808101516080840152015160a082015290565b929190611a60918101906118b4565b90815191611a70610ae08461126c565b611b3a576020835114611af15782519360408514611aa3576040516327755b9160e11b8152806109848660048301610a56565b610225611aec611ad7611ac38760208080999b6104f39b0101910161195d565b9690950151602080825183010191016119b5565b92604051928391602083019190602083019252565b611fd6565b91929091906001600160a01b03611b078561193a565b11611b1f576020806104f39495015192015191611e49565b60405163bff1ac6560e01b8152806109848660048301610a56565b50915050600090565b916000928392602083519301915af1611b5a611329565b901561064f5750565b6040908151611b72838261044f565b601281527111da585b9bc814db585c9d0815d85b1b195d60721b602082015291611b9e8151918261044f565b60018152603160f81b602082015290565b908060209392818452848401376000828201840152601f01601f1916010190565b92916104f39492611bee928552606060208601526060850191611baf565b916040818403910152610a31565b60209082604051938492833781017f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f50381520301902090565b600281901b91906001600160fe1b03811603610f4857565b611c568154611359565b9081611c60575050565b81601f60009311600114611c72575055565b81835260208320611c8e91601f0160051c8101906001016116c4565b808252602082209081548360011b9084198560031b1c191617905555565b9160206104f3938181520191611baf565b9190611cc883611393565b805115611dbe5780516020820120611ce13685856104a1565b6020815191012003611d9f57509081611d28611d1e837fcf95bbfe6f870f8cc40482dc3dccdafd268f0e9ce0a4f24ea1bea9be64e505ff95611bfc565b805460ff19169055565b611d63611d5e856000527f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f502602052604060002090565b611c4c565b611d90611d7e600080516020612f3f83398151915254610f79565b600080516020612f3f83398151915255565b6117f660405192839283611cac565b60405163781f2e3960e01b815293849361098493909160048601611bd0565b63340c473d60e11b600052600484905260246000fd5b611ddc6115f6565b9060405160208101917f37f248f492286ab572e2a1ee0bd5315f2aae54a08b5871b294d657f3a1f1d0078352604082015260408152611e1c60608261044f565b51902060405190602082019261190160f01b845260228301526042820152604281526115ca60628261044f565b9091600091906001600160a01b03821615611f335760405192600484019460248501956044860192853b15611eb357509186939160209593630b135d3f60e11b8852526040845281518501809260045afa9360443d01915afa9151630b135d3f60e11b1491161690565b979650509050815180604014611f0e57604114611ed05750505050565b602092939550606082015160001a835260408201516060525b60005201516040526020600160806000825afa511860601b3d11916000606052604052565b506020929395506040820151601b8160ff1c01845260018060ff1b0316606052611ee9565b50505050600090565b906104846001602d60405180956c1131b430b63632b733b2911d1160991b6020830152611f728151809260208686019101610a0e565b8101601160f91b838201520301601e1981018552018361044f565b8051602010156111105760400190565b6040513d6000823e3d90fd5b6020929190611fbf849282815194859201610a0e565b019081520190565b90816020910312610244575190565b92919060009360a082019485517f7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8106121b35760208301917fff1a2a9176d650e4a99dedb58f1793003935130579fe17b5a3f698ac5b00e63461204884516060870151612042816112b7565b91612340565b60208151910120036121bc57612060612065916121c6565b611f3c565b61207a835160408601516120428451826112d3565b602081519101209060208151910120036121b357600160f81b600160f81b6120b36120a58651611f8d565b516001600160f81b03191690565b16036121b3576120d0602092600092505160405191828092610eae565b039060025afa156121ae576020600061210681516120fa8551610225604051938492888401611fa9565b60405191828092610eae565b039060025afa156121ae57608060005191019360008086518561215985516102258a60405194859360208501978c899192608093969594919660a084019784526020840152604083015260608201520152565b51906101005afa94612169611329565b805196806121a5575b61218557506104f395505190519161222d565b6001966121a19650810160209081019550019250611fc7915050565b1490565b50861515612172565b611f9d565b94505050505090565b5094505050505090565b6040516104f3916121d860608361044f565b604082527f4142434445464748494a4b4c4d4e4f505152535455565758595a61626364656660208301527f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f60408301526123ec565b93919092938315801561231d575b8015612315575b80156122fd575b6122f3576122578386612494565b156122f35760405191602083526020808401526020604084015260608301527fffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254f6080830152600080516020612eff83398151915260a083015260208260c0816005600019fa1561024457600080516020612eff833981519152946122ed93866122e794518181890994099161256f565b91610f20565b90081590565b5050505050600090565b50600080516020612eff833981519152821015612249565b508115612242565b50600080516020612eff83398151915284101561223b565b816040519182372090565b8051606094939290838111156123b2575b818111156123aa575b5082811061236757505050565b6040519450918290039101601f8201601f19165b8181015185820152601f1901908115612394579061237b565b5050604081840160006020820152016040528252565b90503861235a565b925082612351565b906123c482610486565b6123d1604051918261044f565b82815280926123e2601f1991610486565b0190602036910137565b9081511561248a579061241961241461240d6124088451611c34565b6112c5565b6003900490565b6123ba565b91602083019082805101906020820192835194600085525b83811061244057505050505290565b600360049101916001603f845182828260121c16880101518453828282600c1c16880101518385015382828260061c16880101516002850153168501015160038201530190612431565b50506104f3611314565b600160601b63ffffffff60c01b03198110801590612557575b8015612546575b61253f57600160601b63ffffffff60c01b0319907f5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b908290817fffffffff00000001000000000000000000000000fffffffffffffffffffffffc820990600160601b63ffffffff60c01b0319908181800909080890600160601b63ffffffff60c01b03199080091490565b5050600090565b50801580156124b4575081156124b4565b50600160601b63ffffffff60c01b03198210156124ad565b9092600092908360ff81841580612b66575b612b5b5761258f8887612b6e565b929091821580612b53575b612b18575b5085811c60028660fe1c16015b15612aff57600186821c16600286831c60011b160160018114612ab4575b60028114612aa7575b600314612a9a575b600198600019919091019694959489949392915b886000191161266d5750505050505050505060405191606083015260208252602080830152602060408301526002600160601b0363ffffffff60c01b03196080830152600163ffffffff60601b0360601b1960a083015260208260c0816005600019fa15610244579051600160601b63ffffffff60c01b0319910990565b909192939495969798600163ffffffff60601b0360601b198660020990600160601b63ffffffff60c01b0319828009600160601b63ffffffff60c01b031981830992600160601b63ffffffff60c01b03199082900991600160601b63ffffffff60c01b03199081908f8281830891600160601b63ffffffff60c01b031991820390080960030998600160601b63ffffffff60c01b03199083099c600160601b63ffffffff60c01b0319910991600160601b63ffffffff60c01b031980826002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b03198b80090898600160601b63ffffffff60c01b031991829081038b08900996600160601b63ffffffff60c01b03199088908290840908968b60028c60018d841c16921c60011b16018015612a7d5760018114612a32575b60028114612a27575b600314612a1e575b8215612a0b57600160601b63ffffffff60c01b031990889082908f90090890600160601b63ffffffff60c01b031990898203908290859009089781156128d1575b600160601b63ffffffff60c01b031989800998600160601b63ffffffff60c01b0319908a0992600160601b63ffffffff60c01b0319908a90099c600160601b63ffffffff60c01b03199084900998600160601b63ffffffff60c01b03199109600160601b63ffffffff60c01b031980826002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b031985810381868009080897600160601b63ffffffff60c01b03199384910991600160601b63ffffffff60c01b03199182908a82039008090894985b6000190197969594939291906125ef565b886127f4579a91975090959050600160601b63ffffffff60c01b0319816002600160601b0363ffffffff60c01b0319099a600160601b63ffffffff60c01b03198c8009600160601b63ffffffff60c01b0319818d099c600160601b63ffffffff60c01b0319908290099b600160601b63ffffffff60c01b031990818b8103820890600160601b63ffffffff60c01b0319908c900809600160601b63ffffffff60c01b03199060030991600160601b63ffffffff60c01b0319908d0998600160601b63ffffffff60c01b031991099b600160601b63ffffffff60c01b031980826002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b0319848009089b600160601b63ffffffff60c01b03199384910991600160601b63ffffffff60c01b03199182908e82039008900908946128c0565b60019c50909a8c985090965090506128c0565b505083856127b3565b8592508491506127ab565b7f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c29692507f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f591506127a2565b50505099959894600163ffffffff60601b0360601b1903946128c0565b92508096509581926125db565b96975087968994506125d3565b7f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c29698507f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f594506125ca565b60001901600186821c16600286831c60011b16016125ac565b9495600080516020612eff8339815191529196820390089484861580612b4b575b1561259f579850505050505050505090565b506001612b39565b50831561259a565b965050505050505090565b508315612581565b91907f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c2967f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5918015612d225784610c5a9495831480612d19575b15612d045750600160601b63ffffffff60c01b0319905082600209600160601b63ffffffff60c01b031981800992600160601b63ffffffff60c01b031984840991600160601b63ffffffff60c01b03199085900992600160601b63ffffffff60c01b0319908190816001820890600160601b63ffffffff60c01b0319907fffffffff00000001000000000000000000000000fffffffffffffffffffffffe900809600309600160601b63ffffffff60c01b031980846002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b03198380090892600160601b63ffffffff60c01b03196001860995600160601b63ffffffff60c01b0319906001900994600160601b63ffffffff60c01b031993849109600160601b63ffffffff60c01b03199081039290918290868203900890090890612e44565b909192612d1093612d28565b92909190612e44565b50818414612bc7565b50925090565b9193908015612e3b57600160601b63ffffffff60c01b03199081039384908290600190090893600160601b63ffffffff60c01b031990838203908290600190090892600160601b63ffffffff60c01b031984800993600160601b63ffffffff60c01b031990850992600160601b63ffffffff60c01b03199085900994600160601b63ffffffff60c01b031980876002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b031986810381858009080895600160601b63ffffffff60c01b031992839086900991600160601b63ffffffff60c01b03199182908982039008090892600160601b63ffffffff60c01b03199060010991600160601b63ffffffff60c01b03199060010990565b50600191508190565b91909260405190602082526020808301526020604083015260608201526002600160601b0363ffffffff60c01b03196080820152600163ffffffff60601b0360601b1960a082015260208160c0816005600019fa15610244575192600160601b63ffffffff60c01b03199084900992600160601b63ffffffff60c01b03199109600160601b63ffffffff60c01b031991908290800990099156fe0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f500ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f501a2646970667358221220890c9d20b5fc4df99bded2544912158a1d933f168e2e843d0c1a15a2ff32ce8c64736f6c634300081c003338109edc26e166b5579352ce56a50813177eb25208fd90d61f2f3783862202200000000000000000000000000000000000000000000000000000","id":1,"to":"0xba5Ed099633D3B313e4D5F7bdc1305d3c28ba5Ed","type":"ONCHAIN_INTERACTION","value":{"_kind":"bigint","value":"0"}},"type":"NETWORK_INTERACTION_REQUEST"} {"futureId":"GianoAccountFactory#GianoSmartWallet","networkInteractionId":1,"nonce":0,"type":"TRANSACTION_PREPARE_SEND"} -{"futureId":"GianoAccountFactory#GianoSmartWallet","networkInteractionId":1,"nonce":0,"transaction":{"fees":{"maxFeePerGas":{"_kind":"bigint","value":"5245762"},"maxPriorityFeePerGas":{"_kind":"bigint","value":"50"}},"hash":"0x6719a5b1517ae78a1b9b2ab5e6bec2a8366ae74801787a11f92b7e44b79ddad1"},"type":"TRANSACTION_SEND"} -{"futureId":"GianoAccountFactory#GianoSmartWallet","hash":"0x6719a5b1517ae78a1b9b2ab5e6bec2a8366ae74801787a11f92b7e44b79ddad1","networkInteractionId":1,"receipt":{"blockHash":"0x08117c0889258e54a9a91381d2e36932a84b1ba7cad0cf9b6ea2c4091f9d3e5e","blockNumber":32938393,"logs":[{"address":"0x7bE6A8bE4b6e182f7066d99fbfd8f3636842eB79","data":"0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000","logIndex":179,"topics":["0x38109edc26e166b5579352ce56a50813177eb25208fd90d61f2f378386220220","0x0000000000000000000000000000000000000000000000000000000000000000"]},{"address":"0xba5Ed099633D3B313e4D5F7bdc1305d3c28ba5Ed","data":"0x","logIndex":180,"topics":["0xb8fda7e00c6b06a2b54e58521bc5894fee35f1090e5a3bb6390bfe2b98b497f7","0x0000000000000000000000007be6a8be4b6e182f7066d99fbfd8f3636842eb79","0x05181ba0bcd64d2da7b68686d9a8814ef0f459a40e4ed876a6297477e17bd11c"]}],"status":"SUCCESS"},"type":"TRANSACTION_CONFIRM"} -{"futureId":"GianoAccountFactory#GianoSmartWallet","result":{"address":"0x7bE6A8bE4b6e182f7066d99fbfd8f3636842eB79","type":"SUCCESS"},"type":"DEPLOYMENT_EXECUTION_STATE_COMPLETE"} -{"artifactId":"GianoAccountFactory#GianoSmartWalletFactory","constructorArgs":["0x7bE6A8bE4b6e182f7066d99fbfd8f3636842eB79"],"contractName":"GianoSmartWalletFactory","dependencies":["GianoAccountFactory#GianoSmartWallet"],"from":"0x7abe7bd7889041e46f21491feba3c2117aba8d20","futureId":"GianoAccountFactory#GianoSmartWalletFactory","futureType":"NAMED_ARTIFACT_CONTRACT_DEPLOYMENT","libraries":{},"strategy":"create2","strategyConfig":{"salt":"0xAB000000000000000000000000000000000000000000000000000000000000AB"},"type":"DEPLOYMENT_EXECUTION_STATE_INITIALIZE","value":{"_kind":"bigint","value":"0"}} -{"futureId":"GianoAccountFactory#GianoSmartWalletFactory","networkInteraction":{"data":"0x26307668ab000000000000000000000000000000000000000000000000000000000000ab000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000005b960a0601f61059938819003918201601f19168301916001600160401b0383118484101761007d5780849260209460405283398101031261007857516001600160a01b0381168103610078576080526040516105059081610094823960805181818160600152818160a501528181610148015261029d0152f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604052600436101561001257600080fd5b6000803560e01c8063250b1b411461027f5780633ffba36f146100d45780635c60da1b1461008f5763db4c545e1461004957600080fd5b3461008c578060031936011261008c5760206100847f000000000000000000000000000000000000000000000000000000000000000061045c565b604051908152f35b80fd5b503461008c578060031936011261008c576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b506100de366102f1565b81939115610270576100f1908484610420565b918193604051947fcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f36060527f5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e20766040526160096020527f0000000000000000000000000000000000000000000000000000000000000000601e5268603d3d8160223d3973600a52605f60212060358701523060581b865260ff86538460158701526055862090341595823b1561025457505060019461024f578338818034855af115610242575b604086905260608490526001600160a01b031693156101dc575b602084604051908152f35b833b1561023e578461020684938293633796f38760e11b8452602060048501526024840191610386565b038183865af192831561023157602093610221575b806101d1565b8161022b9161034e565b3861021b565b50604051903d90823e3d90fd5b8280fd5b63b12d13eb84526004601cfd5b6101b7565b91509450605f602134f5806101b757633011642584526004601cfd5b633c776be160e01b8252600482fd5b503461008c576020906102c7610294366102f1565b906102c19392937f000000000000000000000000000000000000000000000000000000000000000061045c565b93610420565b9060ff83536035523060601b60015260155260558120906035526040519060018060a01b03168152f35b9060406003198301126103495760043567ffffffffffffffff811161034957826023820112156103495780600401359267ffffffffffffffff84116103495760248460051b8301011161034957602401919060243590565b600080fd5b90601f8019910116810190811067ffffffffffffffff82111761037057604052565b634e487b7160e01b600052604160045260246000fd5b90602083828152019060208160051b85010193836000915b8383106103ae5750505050505090565b909192939495601f198282030186528635601e1984360301811215610349578301906020823592019167ffffffffffffffff8111610349578036038313610349576020828280600196849695859652848401376000828201840152601f01601f1916010198019601949301919061039e565b6104569061044292936040519384926020840196604088526060850191610386565b90604083015203601f19810183528261034e565b51902090565b90604051917fcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f36060527f5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076604052616009602052601e5268603d3d8160223d3973600a52605f60212091604052600060605256fea26469706673582212206ac9fa44034008e428618ea8d7eb623e22f8dbc8990351514326cfe7b30d5c4364736f6c634300081c00330000000000000000000000007be6a8be4b6e182f7066d99fbfd8f3636842eb7900000000000000","id":1,"to":"0xba5Ed099633D3B313e4D5F7bdc1305d3c28ba5Ed","type":"ONCHAIN_INTERACTION","value":{"_kind":"bigint","value":"0"}},"type":"NETWORK_INTERACTION_REQUEST"} +{"futureId":"GianoAccountFactory#GianoSmartWallet","networkInteractionId":1,"nonce":0,"transaction":{"fees":{"maxFeePerGas":{"_kind":"bigint","value":"5920968"},"maxPriorityFeePerGas":{"_kind":"bigint","value":"1000000"}},"hash":"0x6060d540aa61116efd51060c9f72847c3610dac91d2d1f5249d1795652e07fc8"},"type":"TRANSACTION_SEND"} +{"futureId":"GianoAccountFactory#GianoSmartWallet","hash":"0x6060d540aa61116efd51060c9f72847c3610dac91d2d1f5249d1795652e07fc8","networkInteractionId":1,"receipt":{"blockHash":"0x07d4fe16b41c3d1499641b0f1698ac2de91796e2cf937aad86c9e2dcaa099ab3","blockNumber":34789893,"logs":[{"address":"0x15cC758f7D3188c2361f6141CEaa9Ab2792bea56","data":"0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000","logIndex":437,"topics":["0x38109edc26e166b5579352ce56a50813177eb25208fd90d61f2f378386220220","0x0000000000000000000000000000000000000000000000000000000000000000"]},{"address":"0xba5Ed099633D3B313e4D5F7bdc1305d3c28ba5Ed","data":"0x","logIndex":438,"topics":["0xb8fda7e00c6b06a2b54e58521bc5894fee35f1090e5a3bb6390bfe2b98b497f7","0x00000000000000000000000015cc758f7d3188c2361f6141ceaa9ab2792bea56","0x05181ba0bcd64d2da7b68686d9a8814ef0f459a40e4ed876a6297477e17bd11c"]}],"status":"SUCCESS"},"type":"TRANSACTION_CONFIRM"} +{"futureId":"GianoAccountFactory#GianoSmartWallet","result":{"address":"0x15cC758f7D3188c2361f6141CEaa9Ab2792bea56","type":"SUCCESS"},"type":"DEPLOYMENT_EXECUTION_STATE_COMPLETE"} +{"artifactId":"GianoAccountFactory#GianoSmartWalletFactory","constructorArgs":["0x15cC758f7D3188c2361f6141CEaa9Ab2792bea56"],"contractName":"GianoSmartWalletFactory","dependencies":["GianoAccountFactory#GianoSmartWallet"],"from":"0x13f1576bc02215d837dbcd37bc986c4e1de2d918","futureId":"GianoAccountFactory#GianoSmartWalletFactory","futureType":"NAMED_ARTIFACT_CONTRACT_DEPLOYMENT","libraries":{},"strategy":"create2","strategyConfig":{"salt":"0xAB000000000000000000000000000000000000000000000000000000000000AB"},"type":"DEPLOYMENT_EXECUTION_STATE_INITIALIZE","value":{"_kind":"bigint","value":"0"}} +{"futureId":"GianoAccountFactory#GianoSmartWalletFactory","networkInteraction":{"data":"0x26307668ab000000000000000000000000000000000000000000000000000000000000ab0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000061c60a0601f6105fc38819003918201601f19168301916001600160401b038311848410176100955780849260209460405283398101031261009057516001600160a01b038116810361009057803b1561007f5760805260405161055090816100ac823960805181818160600152818160a50152818161014801526102d90152f35b63870dfeb760e01b60005260046000fd5b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604052600436101561001257600080fd5b6000803560e01c8063250b1b41146102bb5780633ffba36f146100d45780635c60da1b1461008f5763db4c545e1461004957600080fd5b3461008c578060031936011261008c5760206100847f00000000000000000000000000000000000000000000000000000000000000006104a7565b604051908152f35b80fd5b503461008c578060031936011261008c576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b506100de3661032d565b919080156102ac576100f1838284610479565b928490604051917fcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f36060527f5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e20766040526160096020527f0000000000000000000000000000000000000000000000000000000000000000601e5268603d3d8160223d3973600a52605f60212060358401523060581b835260ff83538560158401526055832090341596823b1561029057505060019561028b578638818034855af11561027e575b604083905260608790526001600160a01b031694156101dc575b602085604051908152f35b818061020c7ff8e246d8281c915feaf5c1ffd75d9a144f6dbdbbf545e286088661b19d8028f49386888a97610424565b0390a2823b1561027a57604051633796f38760e11b81526020600482015293918291859182916102419160248401919061038a565b038183865af192831561026d5760209361025d575b80806101d1565b8161026791610441565b38610256565b50604051903d90823e3d90fd5b8380fd5b63b12d13eb87526004601cfd5b6101b7565b91509550605f602134f5806101b757633011642587526004601cfd5b633c776be160e01b8452600484fd5b503461008c576020906103036102d03661032d565b906102fd9392937f00000000000000000000000000000000000000000000000000000000000000006104a7565b93610479565b9060ff83536035523060601b60015260155260558120906035526040519060018060a01b03168152f35b9060406003198301126103855760043567ffffffffffffffff811161038557826023820112156103855780600401359267ffffffffffffffff84116103855760248460051b8301011161038557602401919060243590565b600080fd5b90602083828152019060208160051b85010193836000915b8383106103b25750505050505090565b909192939495601f198282030186528635601e1984360301811215610385578301906020823592019167ffffffffffffffff8111610385578036038313610385576020828280600196849695859652848401376000828201840152601f01601f191601019801960194930191906103a2565b93929160209161043c9160408752604087019161038a565b930152565b90601f8019910116810190811067ffffffffffffffff82111761046357604052565b634e487b7160e01b600052604160045260246000fd5b91906104a190610493604051938492602084019687610424565b03601f198101835282610441565b51902090565b90604051917fcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f36060527f5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076604052616009602052601e5268603d3d8160223d3973600a52605f60212091604052600060605256fea26469706673582212209043ac39e0deda770cb1183dbc33f14b238e32f625441a810092deac30b2a90e64736f6c634300081c003300000000000000000000000015cc758f7d3188c2361f6141ceaa9ab2792bea5600000000","id":1,"to":"0xba5Ed099633D3B313e4D5F7bdc1305d3c28ba5Ed","type":"ONCHAIN_INTERACTION","value":{"_kind":"bigint","value":"0"}},"type":"NETWORK_INTERACTION_REQUEST"} {"futureId":"GianoAccountFactory#GianoSmartWalletFactory","networkInteractionId":1,"nonce":1,"type":"TRANSACTION_PREPARE_SEND"} -{"futureId":"GianoAccountFactory#GianoSmartWalletFactory","networkInteractionId":1,"nonce":1,"transaction":{"fees":{"maxFeePerGas":{"_kind":"bigint","value":"5257812"},"maxPriorityFeePerGas":{"_kind":"bigint","value":"50"}},"hash":"0x333a120b0d6cadb0ac373cc39cb91402744ba2e097ecee71343f6d7ff27e18aa"},"type":"TRANSACTION_SEND"} -{"futureId":"GianoAccountFactory#GianoSmartWalletFactory","hash":"0x333a120b0d6cadb0ac373cc39cb91402744ba2e097ecee71343f6d7ff27e18aa","networkInteractionId":1,"receipt":{"blockHash":"0xaee576f5b1a50d307dc6ebbcb7262f828f0c61b127a605d752fedad619f44ee7","blockNumber":32938400,"logs":[{"address":"0xba5Ed099633D3B313e4D5F7bdc1305d3c28ba5Ed","data":"0x","logIndex":222,"topics":["0xb8fda7e00c6b06a2b54e58521bc5894fee35f1090e5a3bb6390bfe2b98b497f7","0x000000000000000000000000b968dde9c231908ea255600da0c9b6f73493bfbb","0x05181ba0bcd64d2da7b68686d9a8814ef0f459a40e4ed876a6297477e17bd11c"]}],"status":"SUCCESS"},"type":"TRANSACTION_CONFIRM"} -{"futureId":"GianoAccountFactory#GianoSmartWalletFactory","result":{"address":"0xb968dde9C231908ea255600Da0c9b6F73493BFBB","type":"SUCCESS"},"type":"DEPLOYMENT_EXECUTION_STATE_COMPLETE"} \ No newline at end of file +{"futureId":"GianoAccountFactory#GianoSmartWalletFactory","networkInteractionId":1,"nonce":1,"transaction":{"fees":{"maxFeePerGas":{"_kind":"bigint","value":"6021400"},"maxPriorityFeePerGas":{"_kind":"bigint","value":"1000000"}},"hash":"0x47d16c15b040657d2015eb8a48f5f7d4f7067da847ad800f4d579381a99110a7"},"type":"TRANSACTION_SEND"} +{"futureId":"GianoAccountFactory#GianoSmartWalletFactory","hash":"0x47d16c15b040657d2015eb8a48f5f7d4f7067da847ad800f4d579381a99110a7","networkInteractionId":1,"receipt":{"blockHash":"0xc61c8c951056c074cadca34156173fde03d5de6b3a32651b92d10c7e821c8912","blockNumber":34789899,"logs":[{"address":"0xba5Ed099633D3B313e4D5F7bdc1305d3c28ba5Ed","data":"0x","logIndex":749,"topics":["0xb8fda7e00c6b06a2b54e58521bc5894fee35f1090e5a3bb6390bfe2b98b497f7","0x00000000000000000000000026dcd29390eba3b22bccbd2143989e5994ac7050","0x05181ba0bcd64d2da7b68686d9a8814ef0f459a40e4ed876a6297477e17bd11c"]}],"status":"SUCCESS"},"type":"TRANSACTION_CONFIRM"} +{"futureId":"GianoAccountFactory#GianoSmartWalletFactory","result":{"address":"0x26dCd29390eba3B22BcCbd2143989E5994Ac7050","type":"SUCCESS"},"type":"DEPLOYMENT_EXECUTION_STATE_COMPLETE"} \ No newline at end of file diff --git a/packages/contracts/ignition/deployments/chain-84532/build-info/7a666ce27bb9e35ebaa3dab6aa458c3e.json b/packages/contracts/ignition/deployments/chain-84532/build-info/7a666ce27bb9e35ebaa3dab6aa458c3e.json new file mode 100644 index 0000000..6c6fcc6 --- /dev/null +++ b/packages/contracts/ignition/deployments/chain-84532/build-info/7a666ce27bb9e35ebaa3dab6aa458c3e.json @@ -0,0 +1,237447 @@ +{ + "id": "7a666ce27bb9e35ebaa3dab6aa458c3e", + "_format": "hh-sol-build-info-1", + "solcVersion": "0.8.28", + "solcLongVersion": "0.8.28+commit.7893614a", + "input": { + "language": "Solidity", + "sources": { + "@account-abstraction/contracts/core/Helpers.sol": { + "content": "// SPDX-License-Identifier: GPL-3.0\npragma solidity ^0.8.23;\n\n/* solhint-disable no-inline-assembly */\n\n\n /*\n * For simulation purposes, validateUserOp (and validatePaymasterUserOp)\n * must return this value in case of signature failure, instead of revert.\n */\nuint256 constant SIG_VALIDATION_FAILED = 1;\n\n\n/*\n * For simulation purposes, validateUserOp (and validatePaymasterUserOp)\n * return this value on success.\n */\nuint256 constant SIG_VALIDATION_SUCCESS = 0;\n\n\n/**\n * Returned data from validateUserOp.\n * validateUserOp returns a uint256, which is created by `_packedValidationData` and\n * parsed by `_parseValidationData`.\n * @param aggregator - address(0) - The account validated the signature by itself.\n * address(1) - The account failed to validate the signature.\n * otherwise - This is an address of a signature aggregator that must\n * be used to validate the signature.\n * @param validAfter - This UserOp is valid only after this timestamp.\n * @param validaUntil - This UserOp is valid only up to this timestamp.\n */\nstruct ValidationData {\n address aggregator;\n uint48 validAfter;\n uint48 validUntil;\n}\n\n/**\n * Extract sigFailed, validAfter, validUntil.\n * Also convert zero validUntil to type(uint48).max.\n * @param validationData - The packed validation data.\n */\nfunction _parseValidationData(\n uint256 validationData\n) pure returns (ValidationData memory data) {\n address aggregator = address(uint160(validationData));\n uint48 validUntil = uint48(validationData >> 160);\n if (validUntil == 0) {\n validUntil = type(uint48).max;\n }\n uint48 validAfter = uint48(validationData >> (48 + 160));\n return ValidationData(aggregator, validAfter, validUntil);\n}\n\n/**\n * Helper to pack the return value for validateUserOp.\n * @param data - The ValidationData to pack.\n */\nfunction _packValidationData(\n ValidationData memory data\n) pure returns (uint256) {\n return\n uint160(data.aggregator) |\n (uint256(data.validUntil) << 160) |\n (uint256(data.validAfter) << (160 + 48));\n}\n\n/**\n * Helper to pack the return value for validateUserOp, when not using an aggregator.\n * @param sigFailed - True for signature failure, false for success.\n * @param validUntil - Last timestamp this UserOperation is valid (or zero for infinite).\n * @param validAfter - First timestamp this UserOperation is valid.\n */\nfunction _packValidationData(\n bool sigFailed,\n uint48 validUntil,\n uint48 validAfter\n) pure returns (uint256) {\n return\n (sigFailed ? 1 : 0) |\n (uint256(validUntil) << 160) |\n (uint256(validAfter) << (160 + 48));\n}\n\n/**\n * keccak function over calldata.\n * @dev copy calldata into memory, do keccak and drop allocated memory. Strangely, this is more efficient than letting solidity do it.\n */\n function calldataKeccak(bytes calldata data) pure returns (bytes32 ret) {\n assembly (\"memory-safe\") {\n let mem := mload(0x40)\n let len := data.length\n calldatacopy(mem, data.offset, len)\n ret := keccak256(mem, len)\n }\n }\n\n\n/**\n * The minimum of two numbers.\n * @param a - First number.\n * @param b - Second number.\n */\n function min(uint256 a, uint256 b) pure returns (uint256) {\n return a < b ? a : b;\n }\n" + }, + "@account-abstraction/contracts/core/UserOperationLib.sol": { + "content": "// SPDX-License-Identifier: GPL-3.0\npragma solidity ^0.8.23;\n\n/* solhint-disable no-inline-assembly */\n\nimport \"../interfaces/PackedUserOperation.sol\";\nimport {calldataKeccak, min} from \"./Helpers.sol\";\n\n/**\n * Utility functions helpful when working with UserOperation structs.\n */\nlibrary UserOperationLib {\n\n uint256 public constant PAYMASTER_VALIDATION_GAS_OFFSET = 20;\n uint256 public constant PAYMASTER_POSTOP_GAS_OFFSET = 36;\n uint256 public constant PAYMASTER_DATA_OFFSET = 52;\n /**\n * Get sender from user operation data.\n * @param userOp - The user operation data.\n */\n function getSender(\n PackedUserOperation calldata userOp\n ) internal pure returns (address) {\n address data;\n //read sender from userOp, which is first userOp member (saves 800 gas...)\n assembly {\n data := calldataload(userOp)\n }\n return address(uint160(data));\n }\n\n /**\n * Relayer/block builder might submit the TX with higher priorityFee,\n * but the user should not pay above what he signed for.\n * @param userOp - The user operation data.\n */\n function gasPrice(\n PackedUserOperation calldata userOp\n ) internal view returns (uint256) {\n unchecked {\n (uint256 maxPriorityFeePerGas, uint256 maxFeePerGas) = unpackUints(userOp.gasFees);\n if (maxFeePerGas == maxPriorityFeePerGas) {\n //legacy mode (for networks that don't support basefee opcode)\n return maxFeePerGas;\n }\n return min(maxFeePerGas, maxPriorityFeePerGas + block.basefee);\n }\n }\n\n /**\n * Pack the user operation data into bytes for hashing.\n * @param userOp - The user operation data.\n */\n function encode(\n PackedUserOperation calldata userOp\n ) internal pure returns (bytes memory ret) {\n address sender = getSender(userOp);\n uint256 nonce = userOp.nonce;\n bytes32 hashInitCode = calldataKeccak(userOp.initCode);\n bytes32 hashCallData = calldataKeccak(userOp.callData);\n bytes32 accountGasLimits = userOp.accountGasLimits;\n uint256 preVerificationGas = userOp.preVerificationGas;\n bytes32 gasFees = userOp.gasFees;\n bytes32 hashPaymasterAndData = calldataKeccak(userOp.paymasterAndData);\n\n return abi.encode(\n sender, nonce,\n hashInitCode, hashCallData,\n accountGasLimits, preVerificationGas, gasFees,\n hashPaymasterAndData\n );\n }\n\n function unpackUints(\n bytes32 packed\n ) internal pure returns (uint256 high128, uint256 low128) {\n return (uint128(bytes16(packed)), uint128(uint256(packed)));\n }\n\n //unpack just the high 128-bits from a packed value\n function unpackHigh128(bytes32 packed) internal pure returns (uint256) {\n return uint256(packed) >> 128;\n }\n\n // unpack just the low 128-bits from a packed value\n function unpackLow128(bytes32 packed) internal pure returns (uint256) {\n return uint128(uint256(packed));\n }\n\n function unpackMaxPriorityFeePerGas(PackedUserOperation calldata userOp)\n internal pure returns (uint256) {\n return unpackHigh128(userOp.gasFees);\n }\n\n function unpackMaxFeePerGas(PackedUserOperation calldata userOp)\n internal pure returns (uint256) {\n return unpackLow128(userOp.gasFees);\n }\n\n function unpackVerificationGasLimit(PackedUserOperation calldata userOp)\n internal pure returns (uint256) {\n return unpackHigh128(userOp.accountGasLimits);\n }\n\n function unpackCallGasLimit(PackedUserOperation calldata userOp)\n internal pure returns (uint256) {\n return unpackLow128(userOp.accountGasLimits);\n }\n\n function unpackPaymasterVerificationGasLimit(PackedUserOperation calldata userOp)\n internal pure returns (uint256) {\n return uint128(bytes16(userOp.paymasterAndData[PAYMASTER_VALIDATION_GAS_OFFSET : PAYMASTER_POSTOP_GAS_OFFSET]));\n }\n\n function unpackPostOpGasLimit(PackedUserOperation calldata userOp)\n internal pure returns (uint256) {\n return uint128(bytes16(userOp.paymasterAndData[PAYMASTER_POSTOP_GAS_OFFSET : PAYMASTER_DATA_OFFSET]));\n }\n\n function unpackPaymasterStaticFields(\n bytes calldata paymasterAndData\n ) internal pure returns (address paymaster, uint256 validationGasLimit, uint256 postOpGasLimit) {\n return (\n address(bytes20(paymasterAndData[: PAYMASTER_VALIDATION_GAS_OFFSET])),\n uint128(bytes16(paymasterAndData[PAYMASTER_VALIDATION_GAS_OFFSET : PAYMASTER_POSTOP_GAS_OFFSET])),\n uint128(bytes16(paymasterAndData[PAYMASTER_POSTOP_GAS_OFFSET : PAYMASTER_DATA_OFFSET]))\n );\n }\n\n /**\n * Hash the user operation data.\n * @param userOp - The user operation data.\n */\n function hash(\n PackedUserOperation calldata userOp\n ) internal pure returns (bytes32) {\n return keccak256(encode(userOp));\n }\n}\n" + }, + "@account-abstraction/contracts/interfaces/IAccount.sol": { + "content": "// SPDX-License-Identifier: GPL-3.0\npragma solidity >=0.7.5;\n\nimport \"./PackedUserOperation.sol\";\n\ninterface IAccount {\n /**\n * Validate user's signature and nonce\n * the entryPoint will make the call to the recipient only if this validation call returns successfully.\n * signature failure should be reported by returning SIG_VALIDATION_FAILED (1).\n * This allows making a \"simulation call\" without a valid signature\n * Other failures (e.g. nonce mismatch, or invalid signature format) should still revert to signal failure.\n *\n * @dev Must validate caller is the entryPoint.\n * Must validate the signature and nonce\n * @param userOp - The operation that is about to be executed.\n * @param userOpHash - Hash of the user's request data. can be used as the basis for signature.\n * @param missingAccountFunds - Missing funds on the account's deposit in the entrypoint.\n * This is the minimum amount to transfer to the sender(entryPoint) to be\n * able to make the call. The excess is left as a deposit in the entrypoint\n * for future calls. Can be withdrawn anytime using \"entryPoint.withdrawTo()\".\n * In case there is a paymaster in the request (or the current deposit is high\n * enough), this value will be zero.\n * @return validationData - Packaged ValidationData structure. use `_packValidationData` and\n * `_unpackValidationData` to encode and decode.\n * <20-byte> sigAuthorizer - 0 for valid signature, 1 to mark signature failure,\n * otherwise, an address of an \"authorizer\" contract.\n * <6-byte> validUntil - Last timestamp this operation is valid. 0 for \"indefinite\"\n * <6-byte> validAfter - First timestamp this operation is valid\n * If an account doesn't use time-range, it is enough to\n * return SIG_VALIDATION_FAILED value (1) for signature failure.\n * Note that the validation code cannot use block.timestamp (or block.number) directly.\n */\n function validateUserOp(\n PackedUserOperation calldata userOp,\n bytes32 userOpHash,\n uint256 missingAccountFunds\n ) external returns (uint256 validationData);\n}\n" + }, + "@account-abstraction/contracts/interfaces/PackedUserOperation.sol": { + "content": "// SPDX-License-Identifier: GPL-3.0\npragma solidity >=0.7.5;\n\n/**\n * User Operation struct\n * @param sender - The sender account of this request.\n * @param nonce - Unique value the sender uses to verify it is not a replay.\n * @param initCode - If set, the account contract will be created by this constructor/\n * @param callData - The method call to execute on this account.\n * @param accountGasLimits - Packed gas limits for validateUserOp and gas limit passed to the callData method call.\n * @param preVerificationGas - Gas not calculated by the handleOps method, but added to the gas paid.\n * Covers batch overhead.\n * @param gasFees - packed gas fields maxPriorityFeePerGas and maxFeePerGas - Same as EIP-1559 gas parameters.\n * @param paymasterAndData - If set, this field holds the paymaster address, verification gas limit, postOp gas limit and paymaster-specific extra data\n * The paymaster will pay for the transaction instead of the sender.\n * @param signature - Sender-verified signature over the entire request, the EntryPoint address and the chain ID.\n */\nstruct PackedUserOperation {\n address sender;\n uint256 nonce;\n bytes initCode;\n bytes callData;\n bytes32 accountGasLimits;\n uint256 preVerificationGas;\n bytes32 gasFees;\n bytes paymasterAndData;\n bytes signature;\n}\n" + }, + "FreshCryptoLib/FCL_ecdsa.sol": { + "content": "//********************************************************************************************/\n// ___ _ ___ _ _ _ _\n// | __| _ ___ __| |_ / __|_ _ _ _ _ __| |_ ___ | | (_) |__\n// | _| '_/ -_|_-< ' \\ | (__| '_| || | '_ \\ _/ _ \\ | |__| | '_ \\\n// |_||_| \\___/__/_||_| \\___|_| \\_, | .__/\\__\\___/ |____|_|_.__/\n// |__/|_|\n///* Copyright (C) 2022 - Renaud Dubois - This file is part of FCL (Fresh CryptoLib) project\n///* License: This software is licensed under MIT License\n///* This Code may be reused including license and copyright notice.\n///* See LICENSE file at the root folder of the project.\n///* FILE: FCL_ecdsa.sol\n///*\n///*\n///* DESCRIPTION: ecdsa verification implementation\n///*\n//**************************************************************************************/\n//* WARNING: this code SHALL not be used for non prime order curves for security reasons.\n// Code is optimized for a=-3 only curves with prime order, constant like -1, -2 shall be replaced\n// if ever used for other curve than sec256R1\n// SPDX-License-Identifier: MIT\npragma solidity >=0.8.19 <0.9.0;\n\n\nimport {FCL_Elliptic_ZZ} from \"./FCL_elliptic.sol\";\n\n\n\nlibrary FCL_ecdsa {\n // Set parameters for curve sec256r1.public\n //curve order (number of points)\n uint256 constant n = FCL_Elliptic_ZZ.n;\n \n /**\n * @dev ECDSA verification, given , signature, and public key.\n */\n\n /**\n * @dev ECDSA verification, given , signature, and public key, no calldata version\n */\n function ecdsa_verify(bytes32 message, uint256 r, uint256 s, uint256 Qx, uint256 Qy) internal view returns (bool){\n\n if (r == 0 || r >= FCL_Elliptic_ZZ.n || s == 0 || s >= FCL_Elliptic_ZZ.n) {\n return false;\n }\n \n if (!FCL_Elliptic_ZZ.ecAff_isOnCurve(Qx, Qy)) {\n return false;\n }\n\n uint256 sInv = FCL_Elliptic_ZZ.FCL_nModInv(s);\n\n uint256 scalar_u = mulmod(uint256(message), sInv, FCL_Elliptic_ZZ.n);\n uint256 scalar_v = mulmod(r, sInv, FCL_Elliptic_ZZ.n);\n uint256 x1;\n\n x1 = FCL_Elliptic_ZZ.ecZZ_mulmuladd_S_asm(Qx, Qy, scalar_u, scalar_v);\n\n x1= addmod(x1, n-r,n );\n \n return x1 == 0;\n }\n\n function ec_recover_r1(uint256 h, uint256 v, uint256 r, uint256 s) internal view returns (address)\n {\n if (r == 0 || r >= FCL_Elliptic_ZZ.n || s == 0 || s >= FCL_Elliptic_ZZ.n) {\n return address(0);\n }\n uint256 y=FCL_Elliptic_ZZ.ec_Decompress(r, v-27);\n uint256 rinv=FCL_Elliptic_ZZ.FCL_nModInv(r);\n uint256 u1=mulmod(FCL_Elliptic_ZZ.n-addmod(0,h,FCL_Elliptic_ZZ.n), rinv,FCL_Elliptic_ZZ.n);//-hr^-1\n uint256 u2=mulmod(s, rinv,FCL_Elliptic_ZZ.n);//sr^-1\n\n uint256 Qx;\n uint256 Qy;\n (Qx,Qy)=FCL_Elliptic_ZZ.ecZZ_mulmuladd(r,y, u1, u2);\n\n return address(uint160(uint256(keccak256(abi.encodePacked(Qx, Qy)))));\n }\n\n function ecdsa_precomputed_verify(bytes32 message, uint256 r, uint256 s, address Shamir8)\n internal view\n returns (bool)\n {\n \n if (r == 0 || r >= n || s == 0 || s >= n) {\n return false;\n }\n /* Q is pushed via the contract at address Shamir8 assumed to be correct\n if (!isOnCurve(Q[0], Q[1])) {\n return false;\n }*/\n\n uint256 sInv = FCL_Elliptic_ZZ.FCL_nModInv(s);\n\n uint256 X;\n\n //Shamir 8 dimensions\n X = FCL_Elliptic_ZZ.ecZZ_mulmuladd_S8_extcode(mulmod(uint256(message), sInv, n), mulmod(r, sInv, n), Shamir8);\n\n X= addmod(X, n-r,n );\n\n return X == 0;\n } //end ecdsa_precomputed_verify()\n\n function ecdsa_precomputed_verify(bytes32 message, uint256[2] calldata rs, address Shamir8)\n internal view\n returns (bool)\n {\n uint256 r = rs[0];\n uint256 s = rs[1];\n if (r == 0 || r >= n || s == 0 || s >= n) {\n return false;\n }\n /* Q is pushed via the contract at address Shamir8 assumed to be correct\n if (!isOnCurve(Q[0], Q[1])) {\n return false;\n }*/\n\n uint256 sInv = FCL_Elliptic_ZZ.FCL_nModInv(s);\n\n uint256 X;\n\n //Shamir 8 dimensions\n X = FCL_Elliptic_ZZ.ecZZ_mulmuladd_S8_extcode(mulmod(uint256(message), sInv, n), mulmod(r, sInv, n), Shamir8);\n\n X= addmod(X, n-r,n );\n\n return X == 0;\n } //end ecdsa_precomputed_verify()\n\n}\n" + }, + "FreshCryptoLib/FCL_elliptic.sol": { + "content": "//********************************************************************************************/\n// ___ _ ___ _ _ _ _\n// | __| _ ___ __| |_ / __|_ _ _ _ _ __| |_ ___ | | (_) |__\n// | _| '_/ -_|_-< ' \\ | (__| '_| || | '_ \\ _/ _ \\ | |__| | '_ \\\n// |_||_| \\___/__/_||_| \\___|_| \\_, | .__/\\__\\___/ |____|_|_.__/\n// |__/|_|\n///* Copyright (C) 2022 - Renaud Dubois - This file is part of FCL (Fresh CryptoLib) project\n///* License: This software is licensed under MIT License\n///* This Code may be reused including license and copyright notice.\n///* See LICENSE file at the root folder of the project.\n///* FILE: FCL_elliptic.sol\n///*\n///*\n///* DESCRIPTION: modified XYZZ system coordinates for EVM elliptic point multiplication\n///* optimization\n///*\n//**************************************************************************************/\n//* WARNING: this code SHALL not be used for non prime order curves for security reasons.\n// Code is optimized for a=-3 only curves with prime order, constant like -1, -2 shall be replaced\n// if ever used for other curve than sec256R1\n// SPDX-License-Identifier: MIT\npragma solidity >=0.8.19 <0.9.0;\n\nlibrary FCL_Elliptic_ZZ {\n // Set parameters for curve sec256r1.\n\n // address of the ModExp precompiled contract (Arbitrary-precision exponentiation under modulo)\n address constant MODEXP_PRECOMPILE = 0x0000000000000000000000000000000000000005;\n //curve prime field modulus\n uint256 constant p = 0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF;\n //short weierstrass first coefficient\n uint256 constant a = 0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC;\n //short weierstrass second coefficient\n uint256 constant b = 0x5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B;\n //generating point affine coordinates\n uint256 constant gx = 0x6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296;\n uint256 constant gy = 0x4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5;\n //curve order (number of points)\n uint256 constant n = 0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551;\n /* -2 mod p constant, used to speed up inversion and doubling (avoid negation)*/\n uint256 constant minus_2 = 0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFD;\n /* -2 mod n constant, used to speed up inversion*/\n uint256 constant minus_2modn = 0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC63254F;\n\n uint256 constant minus_1 = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF;\n //P+1 div 4\n uint256 constant pp1div4=0x3fffffffc0000000400000000000000000000000400000000000000000000000;\n //arbitrary constant to express no quadratic residuosity\n uint256 constant _NOTSQUARE=0xFFFFFFFF00000002000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF;\n uint256 constant _NOTONCURVE=0xFFFFFFFF00000003000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF;\n\n /**\n * /* inversion mod n via a^(n-2), use of precompiled using little Fermat theorem\n */\n function FCL_nModInv(uint256 u) internal view returns (uint256 result) {\n assembly {\n let pointer := mload(0x40)\n // Define length of base, exponent and modulus. 0x20 == 32 bytes\n mstore(pointer, 0x20)\n mstore(add(pointer, 0x20), 0x20)\n mstore(add(pointer, 0x40), 0x20)\n // Define variables base, exponent and modulus\n mstore(add(pointer, 0x60), u)\n mstore(add(pointer, 0x80), minus_2modn)\n mstore(add(pointer, 0xa0), n)\n\n // Call the precompiled contract 0x05 = ModExp\n if iszero(staticcall(not(0), 0x05, pointer, 0xc0, pointer, 0x20)) { revert(0, 0) }\n result := mload(pointer)\n }\n }\n /**\n * /* @dev inversion mod nusing little Fermat theorem via a^(n-2), use of precompiled\n */\n\n function FCL_pModInv(uint256 u) internal view returns (uint256 result) {\n assembly {\n let pointer := mload(0x40)\n // Define length of base, exponent and modulus. 0x20 == 32 bytes\n mstore(pointer, 0x20)\n mstore(add(pointer, 0x20), 0x20)\n mstore(add(pointer, 0x40), 0x20)\n // Define variables base, exponent and modulus\n mstore(add(pointer, 0x60), u)\n mstore(add(pointer, 0x80), minus_2)\n mstore(add(pointer, 0xa0), p)\n\n // Call the precompiled contract 0x05 = ModExp\n if iszero(staticcall(not(0), 0x05, pointer, 0xc0, pointer, 0x20)) { revert(0, 0) }\n result := mload(pointer)\n }\n }\n\n //Coron projective shuffling, take as input alpha as blinding factor\n function ecZZ_Coronize(uint256 alpha, uint256 x, uint256 y, uint256 zz, uint256 zzz) internal pure returns (uint256 x3, uint256 y3, uint256 zz3, uint256 zzz3)\n {\n \n uint256 alpha2=mulmod(alpha,alpha,p);\n \n x3=mulmod(alpha2, x,p); //alpha^-2.x\n y3=mulmod(mulmod(alpha, alpha2,p), y,p);\n\n zz3=mulmod(zz,alpha2,p);//alpha^2 zz\n zzz3=mulmod(zzz,mulmod(alpha, alpha2,p),p);//alpha^3 zzz\n \n return (x3, y3, zz3, zzz3);\n }\n\n\n function ecZZ_Add(uint256 x1, uint256 y1, uint256 zz1, uint256 zzz1, uint256 x2, uint256 y2, uint256 zz2, uint256 zzz2) internal pure returns (uint256 x3, uint256 y3, uint256 zz3, uint256 zzz3)\n {\n uint256 u1=mulmod(x1,zz2,p); // U1 = X1*ZZ2\n uint256 u2=mulmod(x2, zz1,p); // U2 = X2*ZZ1\n u2=addmod(u2, p-u1, p);// P = U2-U1\n x1=mulmod(u2, u2, p);//PP\n x2=mulmod(x1, u2, p);//PPP\n \n zz3=mulmod(x1, mulmod(zz1, zz2, p),p);//ZZ3 = ZZ1*ZZ2*PP \n zzz3=mulmod(zzz1, mulmod(zzz2, x2, p),p);//ZZZ3 = ZZZ1*ZZZ2*PPP\n\n zz1=mulmod(y1, zzz2,p); // S1 = Y1*ZZZ2\n zz2=mulmod(y2, zzz1, p); // S2 = Y2*ZZZ1 \n zz2=addmod(zz2, p-zz1, p);//R = S2-S1\n zzz1=mulmod(u1, x1,p); //Q = U1*PP\n x3= addmod(addmod(mulmod(zz2, zz2, p), p-x2,p), mulmod(minus_2, zzz1,p),p); //X3 = R2-PPP-2*Q\n y3=addmod( mulmod(zz2, addmod(zzz1, p-x3, p),p), p-mulmod(zz1, x2, p),p);//R*(Q-X3)-S1*PPP\n\n return (x3, y3, zz3, zzz3);\n }\n\n/// @notice Calculate one modular square root of a given integer. Assume that p=3 mod 4.\n/// @dev Uses the ModExp precompiled contract at address 0x05 for fast computation using little Fermat theorem\n/// @param self The integer of which to find the modular inverse\n/// @return result The modular inverse of the input integer. If the modular inverse doesn't exist, it revert the tx\n\nfunction SqrtMod(uint256 self) internal view returns (uint256 result){\n assembly (\"memory-safe\") {\n // load the free memory pointer value\n let pointer := mload(0x40)\n\n // Define length of base (Bsize)\n mstore(pointer, 0x20)\n // Define the exponent size (Esize)\n mstore(add(pointer, 0x20), 0x20)\n // Define the modulus size (Msize)\n mstore(add(pointer, 0x40), 0x20)\n // Define variables base (B)\n mstore(add(pointer, 0x60), self)\n // Define the exponent (E)\n mstore(add(pointer, 0x80), pp1div4)\n // We save the point of the last argument, it will be override by the result\n // of the precompile call in order to avoid paying for the memory expansion properly\n let _result := add(pointer, 0xa0)\n // Define the modulus (M)\n mstore(_result, p)\n\n // Call the precompiled ModExp (0x05) https://www.evm.codes/precompiled#0x05\n if iszero(\n staticcall(\n not(0), // amount of gas to send\n MODEXP_PRECOMPILE, // target\n pointer, // argsOffset\n 0xc0, // argsSize (6 * 32 bytes)\n _result, // retOffset (we override M to avoid paying for the memory expansion)\n 0x20 // retSize (32 bytes)\n )\n ) { revert(0, 0) }\n\n result := mload(_result)\n// result :=addmod(result,0,p)\n }\n if(mulmod(result,result,p)!=self){\n result=_NOTSQUARE;\n }\n \n return result;\n}\n /**\n * /* @dev Convert from affine rep to XYZZ rep\n */\n function ecAff_SetZZ(uint256 x0, uint256 y0) internal pure returns (uint256[4] memory P) {\n unchecked {\n P[2] = 1; //ZZ\n P[3] = 1; //ZZZ\n P[0] = x0;\n P[1] = y0;\n }\n }\n\n function ec_Decompress(uint256 x, uint256 parity) internal view returns(uint256 y){ \n\n uint256 y2=mulmod(x,mulmod(x,x,p),p);//x3\n y2=addmod(b,addmod(y2,mulmod(x,a,p),p),p);//x3+ax+b\n\n y=SqrtMod(y2);\n if(y==_NOTSQUARE){\n return _NOTONCURVE;\n }\n if((y&1)!=(parity&1)){\n y=p-y;\n }\n }\n\n /**\n * /* @dev Convert from XYZZ rep to affine rep\n */\n /* https://hyperelliptic.org/EFD/g1p/auto-shortw-xyzz-3.html#addition-add-2008-s*/\n function ecZZ_SetAff(uint256 x, uint256 y, uint256 zz, uint256 zzz) internal view returns (uint256 x1, uint256 y1) {\n uint256 zzzInv = FCL_pModInv(zzz); //1/zzz\n y1 = mulmod(y, zzzInv, p); //Y/zzz\n uint256 _b = mulmod(zz, zzzInv, p); //1/z\n zzzInv = mulmod(_b, _b, p); //1/zz\n x1 = mulmod(x, zzzInv, p); //X/zz\n }\n\n /**\n * /* @dev Sutherland2008 doubling\n */\n /* The \"dbl-2008-s-1\" doubling formulas */\n\n function ecZZ_Dbl(uint256 x, uint256 y, uint256 zz, uint256 zzz)\n internal\n pure\n returns (uint256 P0, uint256 P1, uint256 P2, uint256 P3)\n {\n unchecked {\n assembly {\n P0 := mulmod(2, y, p) //U = 2*Y1\n P2 := mulmod(P0, P0, p) // V=U^2\n P3 := mulmod(x, P2, p) // S = X1*V\n P1 := mulmod(P0, P2, p) // W=UV\n P2 := mulmod(P2, zz, p) //zz3=V*ZZ1\n zz := mulmod(3, mulmod(addmod(x, sub(p, zz), p), addmod(x, zz, p), p), p) //M=3*(X1-ZZ1)*(X1+ZZ1)\n P0 := addmod(mulmod(zz, zz, p), mulmod(minus_2, P3, p), p) //X3=M^2-2S\n x := mulmod(zz, addmod(P3, sub(p, P0), p), p) //M(S-X3)\n P3 := mulmod(P1, zzz, p) //zzz3=W*zzz1\n P1 := addmod(x, sub(p, mulmod(P1, y, p)), p) //Y3= M(S-X3)-W*Y1\n }\n }\n return (P0, P1, P2, P3);\n }\n\n /**\n * @dev Sutherland2008 add a ZZ point with a normalized point and greedy formulae\n * warning: assume that P1(x1,y1)!=P2(x2,y2), true in multiplication loop with prime order (cofactor 1)\n */\n\n function ecZZ_AddN(uint256 x1, uint256 y1, uint256 zz1, uint256 zzz1, uint256 x2, uint256 y2)\n internal\n pure\n returns (uint256 P0, uint256 P1, uint256 P2, uint256 P3)\n {\n unchecked {\n if (y1 == 0) {\n return (x2, y2, 1, 1);\n }\n\n assembly {\n y1 := sub(p, y1)\n y2 := addmod(mulmod(y2, zzz1, p), y1, p)\n x2 := addmod(mulmod(x2, zz1, p), sub(p, x1), p)\n P0 := mulmod(x2, x2, p) //PP = P^2\n P1 := mulmod(P0, x2, p) //PPP = P*PP\n P2 := mulmod(zz1, P0, p) ////ZZ3 = ZZ1*PP\n P3 := mulmod(zzz1, P1, p) ////ZZZ3 = ZZZ1*PPP\n zz1 := mulmod(x1, P0, p) //Q = X1*PP\n P0 := addmod(addmod(mulmod(y2, y2, p), sub(p, P1), p), mulmod(minus_2, zz1, p), p) //R^2-PPP-2*Q\n P1 := addmod(mulmod(addmod(zz1, sub(p, P0), p), y2, p), mulmod(y1, P1, p), p) //R*(Q-X3)\n }\n //end assembly\n } //end unchecked\n return (P0, P1, P2, P3);\n }\n\n /**\n * @dev Return the zero curve in XYZZ coordinates.\n */\n function ecZZ_SetZero() internal pure returns (uint256 x, uint256 y, uint256 zz, uint256 zzz) {\n return (0, 0, 0, 0);\n }\n /**\n * @dev Check if point is the neutral of the curve\n */\n\n // uint256 x0, uint256 y0, uint256 zz0, uint256 zzz0\n function ecZZ_IsZero(uint256, uint256 y0, uint256, uint256) internal pure returns (bool) {\n return y0 == 0;\n }\n /**\n * @dev Return the zero curve in affine coordinates. Compatible with the double formulae (no special case)\n */\n\n function ecAff_SetZero() internal pure returns (uint256 x, uint256 y) {\n return (0, 0);\n }\n\n /**\n * @dev Check if the curve is the zero curve in affine rep.\n */\n // uint256 x, uint256 y)\n function ecAff_IsZero(uint256, uint256 y) internal pure returns (bool flag) {\n return (y == 0);\n }\n\n /**\n * @dev Check if a point in affine coordinates is on the curve (reject Neutral that is indeed on the curve).\n */\n function ecAff_isOnCurve(uint256 x, uint256 y) internal pure returns (bool) {\n if (x >= p || y >= p || ((x == 0) && (y == 0))) {\n return false;\n }\n unchecked {\n uint256 LHS = mulmod(y, y, p); // y^2\n uint256 RHS = addmod(mulmod(mulmod(x, x, p), x, p), mulmod(x, a, p), p); // x^3+ax\n RHS = addmod(RHS, b, p); // x^3 + a*x + b\n\n return LHS == RHS;\n }\n }\n\n /**\n * @dev Add two elliptic curve points in affine coordinates. Deal with P=Q\n */\n\n function ecAff_add(uint256 x0, uint256 y0, uint256 x1, uint256 y1) internal view returns (uint256, uint256) {\n uint256 zz0;\n uint256 zzz0;\n\n if (ecAff_IsZero(x0, y0)) return (x1, y1);\n if (ecAff_IsZero(x1, y1)) return (x0, y0);\n if((x0==x1)&&(y0==y1)) {\n (x0, y0, zz0, zzz0) = ecZZ_Dbl(x0, y0,1,1);\n }\n else{\n (x0, y0, zz0, zzz0) = ecZZ_AddN(x0, y0, 1, 1, x1, y1);\n }\n\n return ecZZ_SetAff(x0, y0, zz0, zzz0);\n }\n\n /**\n * @dev Computation of uG+vQ using Strauss-Shamir's trick, G basepoint, Q public key\n * Returns only x for ECDSA use \n * */\n function ecZZ_mulmuladd_S_asm(\n uint256 Q0,\n uint256 Q1, //affine rep for input point Q\n uint256 scalar_u,\n uint256 scalar_v\n ) internal view returns (uint256 X) {\n uint256 zz;\n uint256 zzz;\n uint256 Y;\n uint256 index = 255;\n uint256 H0;\n uint256 H1;\n\n unchecked {\n if (scalar_u == 0 && scalar_v == 0) return 0;\n\n (H0, H1) = ecAff_add(gx, gy, Q0, Q1); \n if((H0==0)&&(H1==0))//handling Q=-G\n {\n scalar_u=addmod(scalar_u, n-scalar_v, n);\n scalar_v=0;\n if (scalar_u == 0 && scalar_v == 0) return 0;\n }\n assembly {\n for { let T4 := add(shl(1, and(shr(index, scalar_v), 1)), and(shr(index, scalar_u), 1)) } eq(T4, 0) {\n index := sub(index, 1)\n T4 := add(shl(1, and(shr(index, scalar_v), 1)), and(shr(index, scalar_u), 1))\n } {}\n zz := add(shl(1, and(shr(index, scalar_v), 1)), and(shr(index, scalar_u), 1))\n\n if eq(zz, 1) {\n X := gx\n Y := gy\n }\n if eq(zz, 2) {\n X := Q0\n Y := Q1\n }\n if eq(zz, 3) {\n X := H0\n Y := H1\n }\n\n index := sub(index, 1)\n zz := 1\n zzz := 1\n\n for {} gt(minus_1, index) { index := sub(index, 1) } {\n // inlined EcZZ_Dbl\n let T1 := mulmod(2, Y, p) //U = 2*Y1, y free\n let T2 := mulmod(T1, T1, p) // V=U^2\n let T3 := mulmod(X, T2, p) // S = X1*V\n T1 := mulmod(T1, T2, p) // W=UV\n let T4 := mulmod(3, mulmod(addmod(X, sub(p, zz), p), addmod(X, zz, p), p), p) //M=3*(X1-ZZ1)*(X1+ZZ1)\n zzz := mulmod(T1, zzz, p) //zzz3=W*zzz1\n zz := mulmod(T2, zz, p) //zz3=V*ZZ1, V free\n\n X := addmod(mulmod(T4, T4, p), mulmod(minus_2, T3, p), p) //X3=M^2-2S\n T2 := mulmod(T4, addmod(X, sub(p, T3), p), p) //-M(S-X3)=M(X3-S)\n Y := addmod(mulmod(T1, Y, p), T2, p) //-Y3= W*Y1-M(S-X3), we replace Y by -Y to avoid a sub in ecAdd\n\n {\n //value of dibit\n T4 := add(shl(1, and(shr(index, scalar_v), 1)), and(shr(index, scalar_u), 1))\n\n if iszero(T4) {\n Y := sub(p, Y) //restore the -Y inversion\n continue\n } // if T4!=0\n\n if eq(T4, 1) {\n T1 := gx\n T2 := gy\n }\n if eq(T4, 2) {\n T1 := Q0\n T2 := Q1\n }\n if eq(T4, 3) {\n T1 := H0\n T2 := H1\n }\n if iszero(zz) {\n X := T1\n Y := T2\n zz := 1\n zzz := 1\n continue\n }\n // inlined EcZZ_AddN\n\n //T3:=sub(p, Y)\n //T3:=Y\n let y2 := addmod(mulmod(T2, zzz, p), Y, p) //R\n T2 := addmod(mulmod(T1, zz, p), sub(p, X), p) //P\n\n //special extremely rare case accumulator where EcAdd is replaced by EcDbl, no need to optimize this\n //todo : construct edge vector case\n if iszero(y2) {\n if iszero(T2) {\n T1 := mulmod(minus_2, Y, p) //U = 2*Y1, y free\n T2 := mulmod(T1, T1, p) // V=U^2\n T3 := mulmod(X, T2, p) // S = X1*V\n\n T1 := mulmod(T1, T2, p) // W=UV\n y2 := mulmod(addmod(X, zz, p), addmod(X, sub(p, zz), p), p) //(X-ZZ)(X+ZZ)\n T4 := mulmod(3, y2, p) //M=3*(X-ZZ)(X+ZZ)\n\n zzz := mulmod(T1, zzz, p) //zzz3=W*zzz1\n zz := mulmod(T2, zz, p) //zz3=V*ZZ1, V free\n\n X := addmod(mulmod(T4, T4, p), mulmod(minus_2, T3, p), p) //X3=M^2-2S\n T2 := mulmod(T4, addmod(T3, sub(p, X), p), p) //M(S-X3)\n\n Y := addmod(T2, mulmod(T1, Y, p), p) //Y3= M(S-X3)-W*Y1\n\n continue\n }\n }\n\n T4 := mulmod(T2, T2, p) //PP\n let TT1 := mulmod(T4, T2, p) //PPP, this one could be spared, but adding this register spare gas\n zz := mulmod(zz, T4, p)\n zzz := mulmod(zzz, TT1, p) //zz3=V*ZZ1\n let TT2 := mulmod(X, T4, p)\n T4 := addmod(addmod(mulmod(y2, y2, p), sub(p, TT1), p), mulmod(minus_2, TT2, p), p)\n Y := addmod(mulmod(addmod(TT2, sub(p, T4), p), y2, p), mulmod(Y, TT1, p), p)\n\n X := T4\n }\n } //end loop\n let T := mload(0x40)\n mstore(add(T, 0x60), zz)\n //(X,Y)=ecZZ_SetAff(X,Y,zz, zzz);\n //T[0] = inverseModp_Hard(T[0], p); //1/zzz, inline modular inversion using precompile:\n // Define length of base, exponent and modulus. 0x20 == 32 bytes\n mstore(T, 0x20)\n mstore(add(T, 0x20), 0x20)\n mstore(add(T, 0x40), 0x20)\n // Define variables base, exponent and modulus\n //mstore(add(pointer, 0x60), u)\n mstore(add(T, 0x80), minus_2)\n mstore(add(T, 0xa0), p)\n\n // Call the precompiled contract 0x05 = ModExp\n if iszero(staticcall(not(0), 0x05, T, 0xc0, T, 0x20)) { revert(0, 0) }\n\n //Y:=mulmod(Y,zzz,p)//Y/zzz\n //zz :=mulmod(zz, mload(T),p) //1/z\n //zz:= mulmod(zz,zz,p) //1/zz\n X := mulmod(X, mload(T), p) //X/zz\n } //end assembly\n } //end unchecked\n\n return X;\n }\n\n\n /**\n * @dev Computation of uG+vQ using Strauss-Shamir's trick, G basepoint, Q public key\n * Returns affine representation of point (normalized) \n * */\n function ecZZ_mulmuladd(\n uint256 Q0,\n uint256 Q1, //affine rep for input point Q\n uint256 scalar_u,\n uint256 scalar_v\n ) internal view returns (uint256 X, uint256 Y) {\n uint256 zz;\n uint256 zzz;\n uint256 index = 255;\n uint256[6] memory T;\n uint256[2] memory H;\n \n unchecked {\n if (scalar_u == 0 && scalar_v == 0) return (0,0);\n\n (H[0], H[1]) = ecAff_add(gx, gy, Q0, Q1); //will not work if Q=P, obvious forbidden private key\n\n assembly {\n for { let T4 := add(shl(1, and(shr(index, scalar_v), 1)), and(shr(index, scalar_u), 1)) } eq(T4, 0) {\n index := sub(index, 1)\n T4 := add(shl(1, and(shr(index, scalar_v), 1)), and(shr(index, scalar_u), 1))\n } {}\n zz := add(shl(1, and(shr(index, scalar_v), 1)), and(shr(index, scalar_u), 1))\n\n if eq(zz, 1) {\n X := gx\n Y := gy\n }\n if eq(zz, 2) {\n X := Q0\n Y := Q1\n }\n if eq(zz, 3) {\n Y := mload(add(H,32))\n X := mload(H)\n }\n\n index := sub(index, 1)\n zz := 1\n zzz := 1\n\n for {} gt(minus_1, index) { index := sub(index, 1) } {\n // inlined EcZZ_Dbl\n let T1 := mulmod(2, Y, p) //U = 2*Y1, y free\n let T2 := mulmod(T1, T1, p) // V=U^2\n let T3 := mulmod(X, T2, p) // S = X1*V\n T1 := mulmod(T1, T2, p) // W=UV\n let T4 := mulmod(3, mulmod(addmod(X, sub(p, zz), p), addmod(X, zz, p), p), p) //M=3*(X1-ZZ1)*(X1+ZZ1)\n zzz := mulmod(T1, zzz, p) //zzz3=W*zzz1\n zz := mulmod(T2, zz, p) //zz3=V*ZZ1, V free\n\n X := addmod(mulmod(T4, T4, p), mulmod(minus_2, T3, p), p) //X3=M^2-2S\n T2 := mulmod(T4, addmod(X, sub(p, T3), p), p) //-M(S-X3)=M(X3-S)\n Y := addmod(mulmod(T1, Y, p), T2, p) //-Y3= W*Y1-M(S-X3), we replace Y by -Y to avoid a sub in ecAdd\n\n {\n //value of dibit\n T4 := add(shl(1, and(shr(index, scalar_v), 1)), and(shr(index, scalar_u), 1))\n\n if iszero(T4) {\n Y := sub(p, Y) //restore the -Y inversion\n continue\n } // if T4!=0\n\n if eq(T4, 1) {\n T1 := gx\n T2 := gy\n }\n if eq(T4, 2) {\n T1 := Q0\n T2 := Q1\n }\n if eq(T4, 3) {\n T1 := mload(H)\n T2 := mload(add(H,32))\n }\n if iszero(zz) {\n X := T1\n Y := T2\n zz := 1\n zzz := 1\n continue\n }\n // inlined EcZZ_AddN\n\n //T3:=sub(p, Y)\n //T3:=Y\n let y2 := addmod(mulmod(T2, zzz, p), Y, p) //R\n T2 := addmod(mulmod(T1, zz, p), sub(p, X), p) //P\n\n //special extremely rare case accumulator where EcAdd is replaced by EcDbl, no need to optimize this\n //todo : construct edge vector case\n if iszero(y2) {\n if iszero(T2) {\n T1 := mulmod(minus_2, Y, p) //U = 2*Y1, y free\n T2 := mulmod(T1, T1, p) // V=U^2\n T3 := mulmod(X, T2, p) // S = X1*V\n\n T1 := mulmod(T1, T2, p) // W=UV\n y2 := mulmod(addmod(X, zz, p), addmod(X, sub(p, zz), p), p) //(X-ZZ)(X+ZZ)\n T4 := mulmod(3, y2, p) //M=3*(X-ZZ)(X+ZZ)\n\n zzz := mulmod(T1, zzz, p) //zzz3=W*zzz1\n zz := mulmod(T2, zz, p) //zz3=V*ZZ1, V free\n\n X := addmod(mulmod(T4, T4, p), mulmod(minus_2, T3, p), p) //X3=M^2-2S\n T2 := mulmod(T4, addmod(T3, sub(p, X), p), p) //M(S-X3)\n\n Y := addmod(T2, mulmod(T1, Y, p), p) //Y3= M(S-X3)-W*Y1\n\n continue\n }\n }\n\n T4 := mulmod(T2, T2, p) //PP\n let TT1 := mulmod(T4, T2, p) //PPP, this one could be spared, but adding this register spare gas\n zz := mulmod(zz, T4, p)\n zzz := mulmod(zzz, TT1, p) //zz3=V*ZZ1\n let TT2 := mulmod(X, T4, p)\n T4 := addmod(addmod(mulmod(y2, y2, p), sub(p, TT1), p), mulmod(minus_2, TT2, p), p)\n Y := addmod(mulmod(addmod(TT2, sub(p, T4), p), y2, p), mulmod(Y, TT1, p), p)\n\n X := T4\n }\n } //end loop\n mstore(add(T, 0x60), zzz)\n //(X,Y)=ecZZ_SetAff(X,Y,zz, zzz);\n //T[0] = inverseModp_Hard(T[0], p); //1/zzz, inline modular inversion using precompile:\n // Define length of base, exponent and modulus. 0x20 == 32 bytes\n mstore(T, 0x20)\n mstore(add(T, 0x20), 0x20)\n mstore(add(T, 0x40), 0x20)\n // Define variables base, exponent and modulus\n //mstore(add(pointer, 0x60), u)\n mstore(add(T, 0x80), minus_2)\n mstore(add(T, 0xa0), p)\n\n // Call the precompiled contract 0x05 = ModExp\n if iszero(staticcall(not(0), 0x05, T, 0xc0, T, 0x20)) { revert(0, 0) }\n\n Y:=mulmod(Y,mload(T),p)//Y/zzz\n zz :=mulmod(zz, mload(T),p) //1/z\n zz:= mulmod(zz,zz,p) //1/zz\n X := mulmod(X, zz, p) //X/zz\n } //end assembly\n } //end unchecked\n\n return (X,Y);\n }\n\n //8 dimensions Shamir's trick, using precomputations stored in Shamir8, stored as Bytecode of an external\n //contract at given address dataPointer\n //(thx to Lakhdar https://github.com/Kelvyne for EVM storage explanations and tricks)\n // the external tool to generate tables from public key is in the /sage directory\n function ecZZ_mulmuladd_S8_extcode(uint256 scalar_u, uint256 scalar_v, address dataPointer)\n internal view\n returns (uint256 X /*, uint Y*/ )\n {\n unchecked {\n uint256 zz; // third and coordinates of the point\n\n uint256[6] memory T;\n zz = 256; //start index\n\n while (T[0] == 0) {\n zz = zz - 1;\n //tbd case of msb octobit is null\n T[0] = 64\n * (\n 128 * ((scalar_v >> zz) & 1) + 64 * ((scalar_v >> (zz - 64)) & 1)\n + 32 * ((scalar_v >> (zz - 128)) & 1) + 16 * ((scalar_v >> (zz - 192)) & 1)\n + 8 * ((scalar_u >> zz) & 1) + 4 * ((scalar_u >> (zz - 64)) & 1)\n + 2 * ((scalar_u >> (zz - 128)) & 1) + ((scalar_u >> (zz - 192)) & 1)\n );\n }\n assembly {\n extcodecopy(dataPointer, T, mload(T), 64)\n let index := sub(zz, 1)\n X := mload(T)\n let Y := mload(add(T, 32))\n let zzz := 1\n zz := 1\n\n //loop over 1/4 of scalars thx to Shamir's trick over 8 points\n for {} gt(index, 191) { index := add(index, 191) } {\n //inline Double\n {\n let TT1 := mulmod(2, Y, p) //U = 2*Y1, y free\n let T2 := mulmod(TT1, TT1, p) // V=U^2\n let T3 := mulmod(X, T2, p) // S = X1*V\n let T1 := mulmod(TT1, T2, p) // W=UV\n let T4 := mulmod(3, mulmod(addmod(X, sub(p, zz), p), addmod(X, zz, p), p), p) //M=3*(X1-ZZ1)*(X1+ZZ1)\n zzz := mulmod(T1, zzz, p) //zzz3=W*zzz1\n zz := mulmod(T2, zz, p) //zz3=V*ZZ1, V free\n\n X := addmod(mulmod(T4, T4, p), mulmod(minus_2, T3, p), p) //X3=M^2-2S\n //T2:=mulmod(T4,addmod(T3, sub(p, X),p),p)//M(S-X3)\n let T5 := mulmod(T4, addmod(X, sub(p, T3), p), p) //-M(S-X3)=M(X3-S)\n\n //Y:= addmod(T2, sub(p, mulmod(T1, Y ,p)),p )//Y3= M(S-X3)-W*Y1\n Y := addmod(mulmod(T1, Y, p), T5, p) //-Y3= W*Y1-M(S-X3), we replace Y by -Y to avoid a sub in ecAdd\n\n /* compute element to access in precomputed table */\n }\n {\n let T4 := add(shl(13, and(shr(index, scalar_v), 1)), shl(9, and(shr(index, scalar_u), 1)))\n let index2 := sub(index, 64)\n let T3 :=\n add(T4, add(shl(12, and(shr(index2, scalar_v), 1)), shl(8, and(shr(index2, scalar_u), 1))))\n let index3 := sub(index2, 64)\n let T2 :=\n add(T3, add(shl(11, and(shr(index3, scalar_v), 1)), shl(7, and(shr(index3, scalar_u), 1))))\n index := sub(index3, 64)\n let T1 :=\n add(T2, add(shl(10, and(shr(index, scalar_v), 1)), shl(6, and(shr(index, scalar_u), 1))))\n\n //tbd: check validity of formulae with (0,1) to remove conditional jump\n if iszero(T1) {\n Y := sub(p, Y)\n\n continue\n }\n extcodecopy(dataPointer, T, T1, 64)\n }\n\n {\n /* Access to precomputed table using extcodecopy hack */\n\n // inlined EcZZ_AddN\n if iszero(zz) {\n X := mload(T)\n Y := mload(add(T, 32))\n zz := 1\n zzz := 1\n\n continue\n }\n\n let y2 := addmod(mulmod(mload(add(T, 32)), zzz, p), Y, p)\n let T2 := addmod(mulmod(mload(T), zz, p), sub(p, X), p)\n\n //special case ecAdd(P,P)=EcDbl\n if iszero(y2) {\n if iszero(T2) {\n let T1 := mulmod(minus_2, Y, p) //U = 2*Y1, y free\n T2 := mulmod(T1, T1, p) // V=U^2\n let T3 := mulmod(X, T2, p) // S = X1*V\n\n T1 := mulmod(T1, T2, p) // W=UV\n y2 := mulmod(addmod(X, zz, p), addmod(X, sub(p, zz), p), p) //(X-ZZ)(X+ZZ)\n let T4 := mulmod(3, y2, p) //M=3*(X-ZZ)(X+ZZ)\n\n zzz := mulmod(T1, zzz, p) //zzz3=W*zzz1\n zz := mulmod(T2, zz, p) //zz3=V*ZZ1, V free\n\n X := addmod(mulmod(T4, T4, p), mulmod(minus_2, T3, p), p) //X3=M^2-2S\n T2 := mulmod(T4, addmod(T3, sub(p, X), p), p) //M(S-X3)\n\n Y := addmod(T2, mulmod(T1, Y, p), p) //Y3= M(S-X3)-W*Y1\n\n continue\n }\n }\n\n let T4 := mulmod(T2, T2, p)\n let T1 := mulmod(T4, T2, p) //\n zz := mulmod(zz, T4, p)\n //zzz3=V*ZZ1\n zzz := mulmod(zzz, T1, p) // W=UV/\n let zz1 := mulmod(X, T4, p)\n X := addmod(addmod(mulmod(y2, y2, p), sub(p, T1), p), mulmod(minus_2, zz1, p), p)\n Y := addmod(mulmod(addmod(zz1, sub(p, X), p), y2, p), mulmod(Y, T1, p), p)\n }\n } //end loop\n mstore(add(T, 0x60), zz)\n\n //(X,Y)=ecZZ_SetAff(X,Y,zz, zzz);\n //T[0] = inverseModp_Hard(T[0], p); //1/zzz, inline modular inversion using precompile:\n // Define length of base, exponent and modulus. 0x20 == 32 bytes\n mstore(T, 0x20)\n mstore(add(T, 0x20), 0x20)\n mstore(add(T, 0x40), 0x20)\n // Define variables base, exponent and modulus\n //mstore(add(pointer, 0x60), u)\n mstore(add(T, 0x80), minus_2)\n mstore(add(T, 0xa0), p)\n\n // Call the precompiled contract 0x05 = ModExp\n if iszero(staticcall(not(0), 0x05, T, 0xc0, T, 0x20)) { revert(0, 0) }\n\n zz := mload(T)\n X := mulmod(X, zz, p) //X/zz\n }\n } //end unchecked\n }\n\n \n\n // improving the extcodecopy trick : append array at end of contract\n function ecZZ_mulmuladd_S8_hackmem(uint256 scalar_u, uint256 scalar_v, uint256 dataPointer)\n internal view\n returns (uint256 X /*, uint Y*/ )\n {\n uint256 zz; // third and coordinates of the point\n\n uint256[6] memory T;\n zz = 256; //start index\n\n unchecked {\n while (T[0] == 0) {\n zz = zz - 1;\n //tbd case of msb octobit is null\n T[0] = 64\n * (\n 128 * ((scalar_v >> zz) & 1) + 64 * ((scalar_v >> (zz - 64)) & 1)\n + 32 * ((scalar_v >> (zz - 128)) & 1) + 16 * ((scalar_v >> (zz - 192)) & 1)\n + 8 * ((scalar_u >> zz) & 1) + 4 * ((scalar_u >> (zz - 64)) & 1)\n + 2 * ((scalar_u >> (zz - 128)) & 1) + ((scalar_u >> (zz - 192)) & 1)\n );\n }\n assembly {\n codecopy(T, add(mload(T), dataPointer), 64)\n X := mload(T)\n let Y := mload(add(T, 32))\n let zzz := 1\n zz := 1\n\n //loop over 1/4 of scalars thx to Shamir's trick over 8 points\n for { let index := 254 } gt(index, 191) { index := add(index, 191) } {\n let T1 := mulmod(2, Y, p) //U = 2*Y1, y free\n let T2 := mulmod(T1, T1, p) // V=U^2\n let T3 := mulmod(X, T2, p) // S = X1*V\n T1 := mulmod(T1, T2, p) // W=UV\n let T4 := mulmod(3, mulmod(addmod(X, sub(p, zz), p), addmod(X, zz, p), p), p) //M=3*(X1-ZZ1)*(X1+ZZ1)\n zzz := mulmod(T1, zzz, p) //zzz3=W*zzz1\n zz := mulmod(T2, zz, p) //zz3=V*ZZ1, V free\n\n X := addmod(mulmod(T4, T4, p), mulmod(minus_2, T3, p), p) //X3=M^2-2S\n //T2:=mulmod(T4,addmod(T3, sub(p, X),p),p)//M(S-X3)\n T2 := mulmod(T4, addmod(X, sub(p, T3), p), p) //-M(S-X3)=M(X3-S)\n\n //Y:= addmod(T2, sub(p, mulmod(T1, Y ,p)),p )//Y3= M(S-X3)-W*Y1\n Y := addmod(mulmod(T1, Y, p), T2, p) //-Y3= W*Y1-M(S-X3), we replace Y by -Y to avoid a sub in ecAdd\n\n /* compute element to access in precomputed table */\n T4 := add(shl(13, and(shr(index, scalar_v), 1)), shl(9, and(shr(index, scalar_u), 1)))\n index := sub(index, 64)\n T4 := add(T4, add(shl(12, and(shr(index, scalar_v), 1)), shl(8, and(shr(index, scalar_u), 1))))\n index := sub(index, 64)\n T4 := add(T4, add(shl(11, and(shr(index, scalar_v), 1)), shl(7, and(shr(index, scalar_u), 1))))\n index := sub(index, 64)\n T4 := add(T4, add(shl(10, and(shr(index, scalar_v), 1)), shl(6, and(shr(index, scalar_u), 1))))\n //index:=add(index,192), restore index, interleaved with loop\n\n //tbd: check validity of formulae with (0,1) to remove conditional jump\n if iszero(T4) {\n Y := sub(p, Y)\n\n continue\n }\n {\n /* Access to precomputed table using extcodecopy hack */\n codecopy(T, add(T4, dataPointer), 64)\n\n // inlined EcZZ_AddN\n\n let y2 := addmod(mulmod(mload(add(T, 32)), zzz, p), Y, p)\n T2 := addmod(mulmod(mload(T), zz, p), sub(p, X), p)\n T4 := mulmod(T2, T2, p)\n T1 := mulmod(T4, T2, p)\n T2 := mulmod(zz, T4, p) // W=UV\n zzz := mulmod(zzz, T1, p) //zz3=V*ZZ1\n let zz1 := mulmod(X, T4, p)\n T4 := addmod(addmod(mulmod(y2, y2, p), sub(p, T1), p), mulmod(minus_2, zz1, p), p)\n Y := addmod(mulmod(addmod(zz1, sub(p, T4), p), y2, p), mulmod(Y, T1, p), p)\n zz := T2\n X := T4\n }\n } //end loop\n mstore(add(T, 0x60), zz)\n\n //(X,Y)=ecZZ_SetAff(X,Y,zz, zzz);\n //T[0] = inverseModp_Hard(T[0], p); //1/zzz, inline modular inversion using precompile:\n // Define length of base, exponent and modulus. 0x20 == 32 bytes\n mstore(T, 0x20)\n mstore(add(T, 0x20), 0x20)\n mstore(add(T, 0x40), 0x20)\n // Define variables base, exponent and modulus\n //mstore(add(pointer, 0x60), u)\n mstore(add(T, 0x80), minus_2)\n mstore(add(T, 0xa0), p)\n\n // Call the precompiled contract 0x05 = ModExp\n if iszero(staticcall(not(0), 0x05, T, 0xc0, T, 0x20)) { revert(0, 0) }\n\n zz := mload(T)\n X := mulmod(X, zz, p) //X/zz\n }\n } //end unchecked\n }\n\n\n /**\n * @dev ECDSA verification using a precomputed table of multiples of P and Q stored in contract at address Shamir8\n * generation of contract bytecode for precomputations is done using sagemath code\n * (see sage directory, WebAuthn_precompute.sage)\n */\n\n /**\n * @dev ECDSA verification using a precomputed table of multiples of P and Q appended at end of contract at address endcontract\n * generation of contract bytecode for precomputations is done using sagemath code\n * (see sage directory, WebAuthn_precompute.sage)\n */\n\n function ecdsa_precomputed_hackmem(bytes32 message, uint256[2] calldata rs, uint256 endcontract)\n internal view\n returns (bool)\n {\n uint256 r = rs[0];\n uint256 s = rs[1];\n if (r == 0 || r >= n || s == 0 || s >= n) {\n return false;\n }\n /* Q is pushed via bytecode assumed to be correct\n if (!isOnCurve(Q[0], Q[1])) {\n return false;\n }*/\n\n uint256 sInv = FCL_nModInv(s);\n uint256 X;\n\n //Shamir 8 dimensions\n X = ecZZ_mulmuladd_S8_hackmem(mulmod(uint256(message), sInv, n), mulmod(r, sInv, n), endcontract);\n\n assembly {\n X := addmod(X, sub(n, r), n)\n }\n return X == 0;\n } //end ecdsa_precomputed_verify()\n\n\n\n} //EOF\n" + }, + "openzeppelin-contracts/contracts/utils/Base64.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Base64.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Provides a set of functions to operate with Base64 strings.\n */\nlibrary Base64 {\n /**\n * @dev Base64 Encoding/Decoding Table\n * See sections 4 and 5 of https://datatracker.ietf.org/doc/html/rfc4648\n */\n string internal constant _TABLE = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n string internal constant _TABLE_URL = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_\";\n\n /**\n * @dev Converts a `bytes` to its Bytes64 `string` representation.\n */\n function encode(bytes memory data) internal pure returns (string memory) {\n return _encode(data, _TABLE, true);\n }\n\n /**\n * @dev Converts a `bytes` to its Bytes64Url `string` representation.\n * Output is not padded with `=` as specified in https://www.rfc-editor.org/rfc/rfc4648[rfc4648].\n */\n function encodeURL(bytes memory data) internal pure returns (string memory) {\n return _encode(data, _TABLE_URL, false);\n }\n\n /**\n * @dev Internal table-agnostic conversion\n */\n function _encode(bytes memory data, string memory table, bool withPadding) private pure returns (string memory) {\n /**\n * Inspired by Brecht Devos (Brechtpd) implementation - MIT licence\n * https://github.com/Brechtpd/base64/blob/e78d9fd951e7b0977ddca77d92dc85183770daf4/base64.sol\n */\n if (data.length == 0) return \"\";\n\n // If padding is enabled, the final length should be `bytes` data length divided by 3 rounded up and then\n // multiplied by 4 so that it leaves room for padding the last chunk\n // - `data.length + 2` -> Prepare for division rounding up\n // - `/ 3` -> Number of 3-bytes chunks (rounded up)\n // - `4 *` -> 4 characters for each chunk\n // This is equivalent to: 4 * Math.ceil(data.length / 3)\n //\n // If padding is disabled, the final length should be `bytes` data length multiplied by 4/3 rounded up as\n // opposed to when padding is required to fill the last chunk.\n // - `4 * data.length` -> 4 characters for each chunk\n // - ` + 2` -> Prepare for division rounding up\n // - `/ 3` -> Number of 3-bytes chunks (rounded up)\n // This is equivalent to: Math.ceil((4 * data.length) / 3)\n uint256 resultLength = withPadding ? 4 * ((data.length + 2) / 3) : (4 * data.length + 2) / 3;\n\n string memory result = new string(resultLength);\n\n assembly (\"memory-safe\") {\n // Prepare the lookup table (skip the first \"length\" byte)\n let tablePtr := add(table, 1)\n\n // Prepare result pointer, jump over length\n let resultPtr := add(result, 0x20)\n let dataPtr := data\n let endPtr := add(data, mload(data))\n\n // In some cases, the last iteration will read bytes after the end of the data. We cache the value, and\n // set it to zero to make sure no dirty bytes are read in that section.\n let afterPtr := add(endPtr, 0x20)\n let afterCache := mload(afterPtr)\n mstore(afterPtr, 0x00)\n\n // Run over the input, 3 bytes at a time\n for {\n\n } lt(dataPtr, endPtr) {\n\n } {\n // Advance 3 bytes\n dataPtr := add(dataPtr, 3)\n let input := mload(dataPtr)\n\n // To write each character, shift the 3 byte (24 bits) chunk\n // 4 times in blocks of 6 bits for each character (18, 12, 6, 0)\n // and apply logical AND with 0x3F to bitmask the least significant 6 bits.\n // Use this as an index into the lookup table, mload an entire word\n // so the desired character is in the least significant byte, and\n // mstore8 this least significant byte into the result and continue.\n\n mstore8(resultPtr, mload(add(tablePtr, and(shr(18, input), 0x3F))))\n resultPtr := add(resultPtr, 1) // Advance\n\n mstore8(resultPtr, mload(add(tablePtr, and(shr(12, input), 0x3F))))\n resultPtr := add(resultPtr, 1) // Advance\n\n mstore8(resultPtr, mload(add(tablePtr, and(shr(6, input), 0x3F))))\n resultPtr := add(resultPtr, 1) // Advance\n\n mstore8(resultPtr, mload(add(tablePtr, and(input, 0x3F))))\n resultPtr := add(resultPtr, 1) // Advance\n }\n\n // Reset the value that was cached\n mstore(afterPtr, afterCache)\n\n if withPadding {\n // When data `bytes` is not exactly 3 bytes long\n // it is padded with `=` characters at the end\n switch mod(mload(data), 3)\n case 1 {\n mstore8(sub(resultPtr, 1), 0x3d)\n mstore8(sub(resultPtr, 2), 0x3d)\n }\n case 2 {\n mstore8(sub(resultPtr, 1), 0x3d)\n }\n }\n }\n\n return result;\n }\n}\n" + }, + "solady/accounts/Receiver.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.4;\n\n/// @notice Receiver mixin for ETH and safe-transferred ERC721 and ERC1155 tokens.\n/// @author Solady (https://github.com/Vectorized/solady/blob/main/src/accounts/Receiver.sol)\n///\n/// @dev Note:\n/// - Handles all ERC721 and ERC1155 token safety callbacks.\n/// - Collapses function table gas overhead and code size.\n/// - Utilizes fallback so unknown calldata will pass on.\nabstract contract Receiver {\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* CUSTOM ERRORS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev The function selector is not recognized.\n error FnSelectorNotRecognized();\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* RECEIVE / FALLBACK */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev For receiving ETH.\n receive() external payable virtual {}\n\n /// @dev Fallback function with the `receiverFallback` modifier.\n fallback() external payable virtual receiverFallback {\n /// @solidity memory-safe-assembly\n assembly {\n mstore(0x00, 0x3c10b94e) // `FnSelectorNotRecognized()`.\n revert(0x1c, 0x04)\n }\n }\n\n /// @dev Modifier for the fallback function to handle token callbacks.\n modifier receiverFallback() virtual {\n _beforeReceiverFallbackBody();\n if (_useReceiverFallbackBody()) {\n /// @solidity memory-safe-assembly\n assembly {\n let s := shr(224, calldataload(0))\n // 0x150b7a02: `onERC721Received(address,address,uint256,bytes)`.\n // 0xf23a6e61: `onERC1155Received(address,address,uint256,uint256,bytes)`.\n // 0xbc197c81: `onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)`.\n if or(eq(s, 0x150b7a02), or(eq(s, 0xf23a6e61), eq(s, 0xbc197c81))) {\n // Assumes `mload(0x40) <= 0xffffffff` to save gas on cleaning lower bytes.\n mstore(0x20, s) // Store `msg.sig`.\n return(0x3c, 0x20) // Return `msg.sig`.\n }\n }\n }\n _afterReceiverFallbackBody();\n _;\n }\n\n /// @dev Whether we want to use the body of the `receiverFallback` modifier.\n function _useReceiverFallbackBody() internal view virtual returns (bool) {\n return true;\n }\n\n /// @dev Called before the body of the `receiverFallback` modifier.\n function _beforeReceiverFallbackBody() internal virtual {}\n\n /// @dev Called after the body of the `receiverFallback` modifier.\n function _afterReceiverFallbackBody() internal virtual {}\n}\n" + }, + "solady/utils/CallContextChecker.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.4;\n\n/// @notice Call context checker mixin.\n/// @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/CallContextChecker.sol)\ncontract CallContextChecker {\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* CUSTOM ERRORS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev The call is from an unauthorized call context.\n error UnauthorizedCallContext();\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* IMMUTABLES */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev For checking if the context is a delegate call.\n ///\n /// Note: To enable use cases with an immutable default implementation in the bytecode,\n /// (see: ERC6551Proxy), we don't require that the proxy address must match the\n /// value stored in the implementation slot, which may not be initialized.\n uint256 private immutable __self = uint256(uint160(address(this)));\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* CALL CONTEXT CHECKS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n // A proxy call can be either via a `delegatecall` to an implementation,\n // or a 7702 call on an authority that points to a delegation.\n\n /// @dev Returns whether the current call context is on a EIP7702 authority\n /// (i.e. externally owned account).\n function _onEIP7702Authority() internal view virtual returns (bool result) {\n /// @solidity memory-safe-assembly\n assembly {\n extcodecopy(address(), 0x00, 0x00, 0x20)\n // Note: Checking that it starts with hex\"ef01\" is the most general and futureproof.\n // 7702 bytecode is `abi.encodePacked(hex\"ef01\", uint8(version), address(delegation))`.\n result := eq(0xef01, shr(240, mload(0x00)))\n }\n }\n\n /// @dev Returns the implementation of this contract.\n function _selfImplementation() internal view virtual returns (address) {\n return address(uint160(__self));\n }\n\n /// @dev Returns whether the current call context is on the implementation itself.\n function _onImplementation() internal view virtual returns (bool) {\n return __self == uint160(address(this));\n }\n\n /// @dev Requires that the current call context is performed via a EIP7702 authority.\n function _checkOnlyEIP7702Authority() internal view virtual {\n if (!_onEIP7702Authority()) _revertUnauthorizedCallContext();\n }\n\n /// @dev Requires that the current call context is performed via a proxy.\n function _checkOnlyProxy() internal view virtual {\n if (_onImplementation()) _revertUnauthorizedCallContext();\n }\n\n /// @dev Requires that the current call context is NOT performed via a proxy.\n /// This is the opposite of `checkOnlyProxy`.\n function _checkNotDelegated() internal view virtual {\n if (!_onImplementation()) _revertUnauthorizedCallContext();\n }\n\n /// @dev Requires that the current call context is performed via a EIP7702 authority.\n modifier onlyEIP7702Authority() virtual {\n _checkOnlyEIP7702Authority();\n _;\n }\n\n /// @dev Requires that the current call context is performed via a proxy.\n modifier onlyProxy() virtual {\n _checkOnlyProxy();\n _;\n }\n\n /// @dev Requires that the current call context is NOT performed via a proxy.\n /// This is the opposite of `onlyProxy`.\n modifier notDelegated() virtual {\n _checkNotDelegated();\n _;\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* PRIVATE HELPERS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n function _revertUnauthorizedCallContext() private pure {\n /// @solidity memory-safe-assembly\n assembly {\n mstore(0x00, 0x9f03a026) // `UnauthorizedCallContext()`.\n revert(0x1c, 0x04)\n }\n }\n}\n" + }, + "solady/utils/LibBytes.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.4;\n\n/// @notice Library for byte related operations.\n/// @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/LibBytes.sol)\nlibrary LibBytes {\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* STRUCTS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Goated bytes storage struct that totally MOGs, no cap, fr.\n /// Uses less gas and bytecode than Solidity's native bytes storage. It's meta af.\n /// Packs length with the first 31 bytes if <255 bytes, so it’s mad tight.\n struct BytesStorage {\n bytes32 _spacer;\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* CONSTANTS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev The constant returned when the `search` is not found in the bytes.\n uint256 internal constant NOT_FOUND = type(uint256).max;\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* BYTE STORAGE OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Sets the value of the bytes storage `$` to `s`.\n function set(BytesStorage storage $, bytes memory s) internal {\n /// @solidity memory-safe-assembly\n assembly {\n let n := mload(s)\n let packed := or(0xff, shl(8, n))\n for { let i := 0 } 1 {} {\n if iszero(gt(n, 0xfe)) {\n i := 0x1f\n packed := or(n, shl(8, mload(add(s, i))))\n if iszero(gt(n, i)) { break }\n }\n let o := add(s, 0x20)\n mstore(0x00, $.slot)\n for { let p := keccak256(0x00, 0x20) } 1 {} {\n sstore(add(p, shr(5, i)), mload(add(o, i)))\n i := add(i, 0x20)\n if iszero(lt(i, n)) { break }\n }\n break\n }\n sstore($.slot, packed)\n }\n }\n\n /// @dev Sets the value of the bytes storage `$` to `s`.\n function setCalldata(BytesStorage storage $, bytes calldata s) internal {\n /// @solidity memory-safe-assembly\n assembly {\n let packed := or(0xff, shl(8, s.length))\n for { let i := 0 } 1 {} {\n if iszero(gt(s.length, 0xfe)) {\n i := 0x1f\n packed := or(s.length, shl(8, shr(8, calldataload(s.offset))))\n if iszero(gt(s.length, i)) { break }\n }\n mstore(0x00, $.slot)\n for { let p := keccak256(0x00, 0x20) } 1 {} {\n sstore(add(p, shr(5, i)), calldataload(add(s.offset, i)))\n i := add(i, 0x20)\n if iszero(lt(i, s.length)) { break }\n }\n break\n }\n sstore($.slot, packed)\n }\n }\n\n /// @dev Sets the value of the bytes storage `$` to the empty bytes.\n function clear(BytesStorage storage $) internal {\n delete $._spacer;\n }\n\n /// @dev Returns whether the value stored is `$` is the empty bytes \"\".\n function isEmpty(BytesStorage storage $) internal view returns (bool) {\n return uint256($._spacer) & 0xff == uint256(0);\n }\n\n /// @dev Returns the length of the value stored in `$`.\n function length(BytesStorage storage $) internal view returns (uint256 result) {\n result = uint256($._spacer);\n /// @solidity memory-safe-assembly\n assembly {\n let n := and(0xff, result)\n result := or(mul(shr(8, result), eq(0xff, n)), mul(n, iszero(eq(0xff, n))))\n }\n }\n\n /// @dev Returns the value stored in `$`.\n function get(BytesStorage storage $) internal view returns (bytes memory result) {\n /// @solidity memory-safe-assembly\n assembly {\n result := mload(0x40)\n let o := add(result, 0x20)\n let packed := sload($.slot)\n let n := shr(8, packed)\n for { let i := 0 } 1 {} {\n if iszero(eq(or(packed, 0xff), packed)) {\n mstore(o, packed)\n n := and(0xff, packed)\n i := 0x1f\n if iszero(gt(n, i)) { break }\n }\n mstore(0x00, $.slot)\n for { let p := keccak256(0x00, 0x20) } 1 {} {\n mstore(add(o, i), sload(add(p, shr(5, i))))\n i := add(i, 0x20)\n if iszero(lt(i, n)) { break }\n }\n break\n }\n mstore(result, n) // Store the length of the memory.\n mstore(add(o, n), 0) // Zeroize the slot after the bytes.\n mstore(0x40, add(add(o, n), 0x20)) // Allocate memory.\n }\n }\n\n /// @dev Returns the uint8 at index `i`. If out-of-bounds, returns 0.\n function uint8At(BytesStorage storage $, uint256 i) internal view returns (uint8 result) {\n /// @solidity memory-safe-assembly\n assembly {\n for { let packed := sload($.slot) } 1 {} {\n if iszero(eq(or(packed, 0xff), packed)) {\n if iszero(gt(i, 0x1e)) {\n result := byte(i, packed)\n break\n }\n if iszero(gt(i, and(0xff, packed))) {\n mstore(0x00, $.slot)\n let j := sub(i, 0x1f)\n result := byte(and(j, 0x1f), sload(add(keccak256(0x00, 0x20), shr(5, j))))\n }\n break\n }\n if iszero(gt(i, shr(8, packed))) {\n mstore(0x00, $.slot)\n result := byte(and(i, 0x1f), sload(add(keccak256(0x00, 0x20), shr(5, i))))\n }\n break\n }\n }\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* BYTES OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Returns `subject` all occurrences of `needle` replaced with `replacement`.\n function replace(bytes memory subject, bytes memory needle, bytes memory replacement)\n internal\n pure\n returns (bytes memory result)\n {\n /// @solidity memory-safe-assembly\n assembly {\n result := mload(0x40)\n let needleLen := mload(needle)\n let replacementLen := mload(replacement)\n let d := sub(result, subject) // Memory difference.\n let i := add(subject, 0x20) // Subject bytes pointer.\n mstore(0x00, add(i, mload(subject))) // End of subject.\n if iszero(gt(needleLen, mload(subject))) {\n let subjectSearchEnd := add(sub(mload(0x00), needleLen), 1)\n let h := 0 // The hash of `needle`.\n if iszero(lt(needleLen, 0x20)) { h := keccak256(add(needle, 0x20), needleLen) }\n let s := mload(add(needle, 0x20))\n for { let m := shl(3, sub(0x20, and(needleLen, 0x1f))) } 1 {} {\n let t := mload(i)\n // Whether the first `needleLen % 32` bytes of `subject` and `needle` matches.\n if iszero(shr(m, xor(t, s))) {\n if h {\n if iszero(eq(keccak256(i, needleLen), h)) {\n mstore(add(i, d), t)\n i := add(i, 1)\n if iszero(lt(i, subjectSearchEnd)) { break }\n continue\n }\n }\n // Copy the `replacement` one word at a time.\n for { let j := 0 } 1 {} {\n mstore(add(add(i, d), j), mload(add(add(replacement, 0x20), j)))\n j := add(j, 0x20)\n if iszero(lt(j, replacementLen)) { break }\n }\n d := sub(add(d, replacementLen), needleLen)\n if needleLen {\n i := add(i, needleLen)\n if iszero(lt(i, subjectSearchEnd)) { break }\n continue\n }\n }\n mstore(add(i, d), t)\n i := add(i, 1)\n if iszero(lt(i, subjectSearchEnd)) { break }\n }\n }\n let end := mload(0x00)\n let n := add(sub(d, add(result, 0x20)), end)\n // Copy the rest of the bytes one word at a time.\n for {} lt(i, end) { i := add(i, 0x20) } { mstore(add(i, d), mload(i)) }\n let o := add(i, d)\n mstore(o, 0) // Zeroize the slot after the bytes.\n mstore(0x40, add(o, 0x20)) // Allocate memory.\n mstore(result, n) // Store the length.\n }\n }\n\n /// @dev Returns the byte index of the first location of `needle` in `subject`,\n /// needleing from left to right, starting from `from`.\n /// Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `needle` is not found.\n function indexOf(bytes memory subject, bytes memory needle, uint256 from)\n internal\n pure\n returns (uint256 result)\n {\n /// @solidity memory-safe-assembly\n assembly {\n result := not(0) // Initialize to `NOT_FOUND`.\n for { let subjectLen := mload(subject) } 1 {} {\n if iszero(mload(needle)) {\n result := from\n if iszero(gt(from, subjectLen)) { break }\n result := subjectLen\n break\n }\n let needleLen := mload(needle)\n let subjectStart := add(subject, 0x20)\n\n subject := add(subjectStart, from)\n let end := add(sub(add(subjectStart, subjectLen), needleLen), 1)\n let m := shl(3, sub(0x20, and(needleLen, 0x1f)))\n let s := mload(add(needle, 0x20))\n\n if iszero(and(lt(subject, end), lt(from, subjectLen))) { break }\n\n if iszero(lt(needleLen, 0x20)) {\n for { let h := keccak256(add(needle, 0x20), needleLen) } 1 {} {\n if iszero(shr(m, xor(mload(subject), s))) {\n if eq(keccak256(subject, needleLen), h) {\n result := sub(subject, subjectStart)\n break\n }\n }\n subject := add(subject, 1)\n if iszero(lt(subject, end)) { break }\n }\n break\n }\n for {} 1 {} {\n if iszero(shr(m, xor(mload(subject), s))) {\n result := sub(subject, subjectStart)\n break\n }\n subject := add(subject, 1)\n if iszero(lt(subject, end)) { break }\n }\n break\n }\n }\n }\n\n /// @dev Returns the byte index of the first location of `needle` in `subject`,\n /// needleing from left to right.\n /// Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `needle` is not found.\n function indexOf(bytes memory subject, bytes memory needle) internal pure returns (uint256) {\n return indexOf(subject, needle, 0);\n }\n\n /// @dev Returns the byte index of the first location of `needle` in `subject`,\n /// needleing from right to left, starting from `from`.\n /// Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `needle` is not found.\n function lastIndexOf(bytes memory subject, bytes memory needle, uint256 from)\n internal\n pure\n returns (uint256 result)\n {\n /// @solidity memory-safe-assembly\n assembly {\n for {} 1 {} {\n result := not(0) // Initialize to `NOT_FOUND`.\n let needleLen := mload(needle)\n if gt(needleLen, mload(subject)) { break }\n let w := result\n\n let fromMax := sub(mload(subject), needleLen)\n if iszero(gt(fromMax, from)) { from := fromMax }\n\n let end := add(add(subject, 0x20), w)\n subject := add(add(subject, 0x20), from)\n if iszero(gt(subject, end)) { break }\n // As this function is not too often used,\n // we shall simply use keccak256 for smaller bytecode size.\n for { let h := keccak256(add(needle, 0x20), needleLen) } 1 {} {\n if eq(keccak256(subject, needleLen), h) {\n result := sub(subject, add(end, 1))\n break\n }\n subject := add(subject, w) // `sub(subject, 1)`.\n if iszero(gt(subject, end)) { break }\n }\n break\n }\n }\n }\n\n /// @dev Returns the byte index of the first location of `needle` in `subject`,\n /// needleing from right to left.\n /// Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `needle` is not found.\n function lastIndexOf(bytes memory subject, bytes memory needle)\n internal\n pure\n returns (uint256)\n {\n return lastIndexOf(subject, needle, type(uint256).max);\n }\n\n /// @dev Returns true if `needle` is found in `subject`, false otherwise.\n function contains(bytes memory subject, bytes memory needle) internal pure returns (bool) {\n return indexOf(subject, needle) != NOT_FOUND;\n }\n\n /// @dev Returns whether `subject` starts with `needle`.\n function startsWith(bytes memory subject, bytes memory needle)\n internal\n pure\n returns (bool result)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let n := mload(needle)\n // Just using keccak256 directly is actually cheaper.\n let t := eq(keccak256(add(subject, 0x20), n), keccak256(add(needle, 0x20), n))\n result := lt(gt(n, mload(subject)), t)\n }\n }\n\n /// @dev Returns whether `subject` ends with `needle`.\n function endsWith(bytes memory subject, bytes memory needle)\n internal\n pure\n returns (bool result)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let n := mload(needle)\n let notInRange := gt(n, mload(subject))\n // `subject + 0x20 + max(subject.length - needle.length, 0)`.\n let t := add(add(subject, 0x20), mul(iszero(notInRange), sub(mload(subject), n)))\n // Just using keccak256 directly is actually cheaper.\n result := gt(eq(keccak256(t, n), keccak256(add(needle, 0x20), n)), notInRange)\n }\n }\n\n /// @dev Returns `subject` repeated `times`.\n function repeat(bytes memory subject, uint256 times)\n internal\n pure\n returns (bytes memory result)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let l := mload(subject) // Subject length.\n if iszero(or(iszero(times), iszero(l))) {\n result := mload(0x40)\n subject := add(subject, 0x20)\n let o := add(result, 0x20)\n for {} 1 {} {\n // Copy the `subject` one word at a time.\n for { let j := 0 } 1 {} {\n mstore(add(o, j), mload(add(subject, j)))\n j := add(j, 0x20)\n if iszero(lt(j, l)) { break }\n }\n o := add(o, l)\n times := sub(times, 1)\n if iszero(times) { break }\n }\n mstore(o, 0) // Zeroize the slot after the bytes.\n mstore(0x40, add(o, 0x20)) // Allocate memory.\n mstore(result, sub(o, add(result, 0x20))) // Store the length.\n }\n }\n }\n\n /// @dev Returns a copy of `subject` sliced from `start` to `end` (exclusive).\n /// `start` and `end` are byte offsets.\n function slice(bytes memory subject, uint256 start, uint256 end)\n internal\n pure\n returns (bytes memory result)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let l := mload(subject) // Subject length.\n if iszero(gt(l, end)) { end := l }\n if iszero(gt(l, start)) { start := l }\n if lt(start, end) {\n result := mload(0x40)\n let n := sub(end, start)\n let i := add(subject, start)\n let w := not(0x1f)\n // Copy the `subject` one word at a time, backwards.\n for { let j := and(add(n, 0x1f), w) } 1 {} {\n mstore(add(result, j), mload(add(i, j)))\n j := add(j, w) // `sub(j, 0x20)`.\n if iszero(j) { break }\n }\n let o := add(add(result, 0x20), n)\n mstore(o, 0) // Zeroize the slot after the bytes.\n mstore(0x40, add(o, 0x20)) // Allocate memory.\n mstore(result, n) // Store the length.\n }\n }\n }\n\n /// @dev Returns a copy of `subject` sliced from `start` to the end of the bytes.\n /// `start` is a byte offset.\n function slice(bytes memory subject, uint256 start)\n internal\n pure\n returns (bytes memory result)\n {\n result = slice(subject, start, type(uint256).max);\n }\n\n /// @dev Returns a copy of `subject` sliced from `start` to `end` (exclusive).\n /// `start` and `end` are byte offsets. Faster than Solidity's native slicing.\n function sliceCalldata(bytes calldata subject, uint256 start, uint256 end)\n internal\n pure\n returns (bytes calldata result)\n {\n /// @solidity memory-safe-assembly\n assembly {\n end := xor(end, mul(xor(end, subject.length), lt(subject.length, end)))\n start := xor(start, mul(xor(start, subject.length), lt(subject.length, start)))\n result.offset := add(subject.offset, start)\n result.length := mul(lt(start, end), sub(end, start))\n }\n }\n\n /// @dev Returns a copy of `subject` sliced from `start` to the end of the bytes.\n /// `start` is a byte offset. Faster than Solidity's native slicing.\n function sliceCalldata(bytes calldata subject, uint256 start)\n internal\n pure\n returns (bytes calldata result)\n {\n /// @solidity memory-safe-assembly\n assembly {\n start := xor(start, mul(xor(start, subject.length), lt(subject.length, start)))\n result.offset := add(subject.offset, start)\n result.length := mul(lt(start, subject.length), sub(subject.length, start))\n }\n }\n\n /// @dev Reduces the size of `subject` to `n`.\n /// If `n` is greater than the size of `subject`, this will be a no-op.\n function truncate(bytes memory subject, uint256 n)\n internal\n pure\n returns (bytes memory result)\n {\n /// @solidity memory-safe-assembly\n assembly {\n result := subject\n mstore(mul(lt(n, mload(result)), result), n)\n }\n }\n\n /// @dev Returns a copy of `subject`, with the length reduced to `n`.\n /// If `n` is greater than the size of `subject`, this will be a no-op.\n function truncatedCalldata(bytes calldata subject, uint256 n)\n internal\n pure\n returns (bytes calldata result)\n {\n /// @solidity memory-safe-assembly\n assembly {\n result.offset := subject.offset\n result.length := xor(n, mul(xor(n, subject.length), lt(subject.length, n)))\n }\n }\n\n /// @dev Returns all the indices of `needle` in `subject`.\n /// The indices are byte offsets.\n function indicesOf(bytes memory subject, bytes memory needle)\n internal\n pure\n returns (uint256[] memory result)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let searchLen := mload(needle)\n if iszero(gt(searchLen, mload(subject))) {\n result := mload(0x40)\n let i := add(subject, 0x20)\n let o := add(result, 0x20)\n let subjectSearchEnd := add(sub(add(i, mload(subject)), searchLen), 1)\n let h := 0 // The hash of `needle`.\n if iszero(lt(searchLen, 0x20)) { h := keccak256(add(needle, 0x20), searchLen) }\n let s := mload(add(needle, 0x20))\n for { let m := shl(3, sub(0x20, and(searchLen, 0x1f))) } 1 {} {\n let t := mload(i)\n // Whether the first `searchLen % 32` bytes of `subject` and `needle` matches.\n if iszero(shr(m, xor(t, s))) {\n if h {\n if iszero(eq(keccak256(i, searchLen), h)) {\n i := add(i, 1)\n if iszero(lt(i, subjectSearchEnd)) { break }\n continue\n }\n }\n mstore(o, sub(i, add(subject, 0x20))) // Append to `result`.\n o := add(o, 0x20)\n i := add(i, searchLen) // Advance `i` by `searchLen`.\n if searchLen {\n if iszero(lt(i, subjectSearchEnd)) { break }\n continue\n }\n }\n i := add(i, 1)\n if iszero(lt(i, subjectSearchEnd)) { break }\n }\n mstore(result, shr(5, sub(o, add(result, 0x20)))) // Store the length of `result`.\n // Allocate memory for result.\n // We allocate one more word, so this array can be recycled for {split}.\n mstore(0x40, add(o, 0x20))\n }\n }\n }\n\n /// @dev Returns an arrays of bytess based on the `delimiter` inside of the `subject` bytes.\n function split(bytes memory subject, bytes memory delimiter)\n internal\n pure\n returns (bytes[] memory result)\n {\n uint256[] memory indices = indicesOf(subject, delimiter);\n /// @solidity memory-safe-assembly\n assembly {\n let w := not(0x1f)\n let indexPtr := add(indices, 0x20)\n let indicesEnd := add(indexPtr, shl(5, add(mload(indices), 1)))\n mstore(add(indicesEnd, w), mload(subject))\n mstore(indices, add(mload(indices), 1))\n for { let prevIndex := 0 } 1 {} {\n let index := mload(indexPtr)\n mstore(indexPtr, 0x60)\n if iszero(eq(index, prevIndex)) {\n let element := mload(0x40)\n let l := sub(index, prevIndex)\n mstore(element, l) // Store the length of the element.\n // Copy the `subject` one word at a time, backwards.\n for { let o := and(add(l, 0x1f), w) } 1 {} {\n mstore(add(element, o), mload(add(add(subject, prevIndex), o)))\n o := add(o, w) // `sub(o, 0x20)`.\n if iszero(o) { break }\n }\n mstore(add(add(element, 0x20), l), 0) // Zeroize the slot after the bytes.\n // Allocate memory for the length and the bytes, rounded up to a multiple of 32.\n mstore(0x40, add(element, and(add(l, 0x3f), w)))\n mstore(indexPtr, element) // Store the `element` into the array.\n }\n prevIndex := add(index, mload(delimiter))\n indexPtr := add(indexPtr, 0x20)\n if iszero(lt(indexPtr, indicesEnd)) { break }\n }\n result := indices\n if iszero(mload(delimiter)) {\n result := add(indices, 0x20)\n mstore(result, sub(mload(indices), 2))\n }\n }\n }\n\n /// @dev Returns a concatenated bytes of `a` and `b`.\n /// Cheaper than `bytes.concat()` and does not de-align the free memory pointer.\n function concat(bytes memory a, bytes memory b) internal pure returns (bytes memory result) {\n /// @solidity memory-safe-assembly\n assembly {\n result := mload(0x40)\n let w := not(0x1f)\n let aLen := mload(a)\n // Copy `a` one word at a time, backwards.\n for { let o := and(add(aLen, 0x20), w) } 1 {} {\n mstore(add(result, o), mload(add(a, o)))\n o := add(o, w) // `sub(o, 0x20)`.\n if iszero(o) { break }\n }\n let bLen := mload(b)\n let output := add(result, aLen)\n // Copy `b` one word at a time, backwards.\n for { let o := and(add(bLen, 0x20), w) } 1 {} {\n mstore(add(output, o), mload(add(b, o)))\n o := add(o, w) // `sub(o, 0x20)`.\n if iszero(o) { break }\n }\n let totalLen := add(aLen, bLen)\n let last := add(add(result, 0x20), totalLen)\n mstore(last, 0) // Zeroize the slot after the bytes.\n mstore(result, totalLen) // Store the length.\n mstore(0x40, add(last, 0x20)) // Allocate memory.\n }\n }\n\n /// @dev Returns whether `a` equals `b`.\n function eq(bytes memory a, bytes memory b) internal pure returns (bool result) {\n /// @solidity memory-safe-assembly\n assembly {\n result := eq(keccak256(add(a, 0x20), mload(a)), keccak256(add(b, 0x20), mload(b)))\n }\n }\n\n /// @dev Returns whether `a` equals `b`, where `b` is a null-terminated small bytes.\n function eqs(bytes memory a, bytes32 b) internal pure returns (bool result) {\n /// @solidity memory-safe-assembly\n assembly {\n // These should be evaluated on compile time, as far as possible.\n let m := not(shl(7, div(not(iszero(b)), 255))) // `0x7f7f ...`.\n let x := not(or(m, or(b, add(m, and(b, m)))))\n let r := shl(7, iszero(iszero(shr(128, x))))\n r := or(r, shl(6, iszero(iszero(shr(64, shr(r, x))))))\n r := or(r, shl(5, lt(0xffffffff, shr(r, x))))\n r := or(r, shl(4, lt(0xffff, shr(r, x))))\n r := or(r, shl(3, lt(0xff, shr(r, x))))\n // forgefmt: disable-next-item\n result := gt(eq(mload(a), add(iszero(x), xor(31, shr(3, r)))),\n xor(shr(add(8, r), b), shr(add(8, r), mload(add(a, 0x20)))))\n }\n }\n\n /// @dev Returns 0 if `a == b`, -1 if `a < b`, +1 if `a > b`.\n /// If `a` == b[:a.length]`, and `a.length < b.length`, returns -1.\n function cmp(bytes memory a, bytes memory b) internal pure returns (int256 result) {\n /// @solidity memory-safe-assembly\n assembly {\n let aLen := mload(a)\n let bLen := mload(b)\n let n := and(xor(aLen, mul(xor(aLen, bLen), lt(bLen, aLen))), not(0x1f))\n if n {\n for { let i := 0x20 } 1 {} {\n let x := mload(add(a, i))\n let y := mload(add(b, i))\n if iszero(or(xor(x, y), eq(i, n))) {\n i := add(i, 0x20)\n continue\n }\n result := sub(gt(x, y), lt(x, y))\n break\n }\n }\n // forgefmt: disable-next-item\n if iszero(result) {\n let l := 0x201f1e1d1c1b1a191817161514131211100f0e0d0c0b0a090807060504030201\n let x := and(mload(add(add(a, 0x20), n)), shl(shl(3, byte(sub(aLen, n), l)), not(0)))\n let y := and(mload(add(add(b, 0x20), n)), shl(shl(3, byte(sub(bLen, n), l)), not(0)))\n result := sub(gt(x, y), lt(x, y))\n if iszero(result) { result := sub(gt(aLen, bLen), lt(aLen, bLen)) }\n }\n }\n }\n\n /// @dev Directly returns `a` without copying.\n function directReturn(bytes memory a) internal pure {\n /// @solidity memory-safe-assembly\n assembly {\n // Assumes that the bytes does not start from the scratch space.\n let retStart := sub(a, 0x20)\n let retUnpaddedSize := add(mload(a), 0x40)\n // Right pad with zeroes. Just in case the bytes is produced\n // by a method that doesn't zero right pad.\n mstore(add(retStart, retUnpaddedSize), 0)\n mstore(retStart, 0x20) // Store the return offset.\n // End the transaction, returning the bytes.\n return(retStart, and(not(0x1f), add(0x1f, retUnpaddedSize)))\n }\n }\n\n /// @dev Directly returns `a` with minimal copying.\n function directReturn(bytes[] memory a) internal pure {\n /// @solidity memory-safe-assembly\n assembly {\n let n := mload(a) // `a.length`.\n let o := add(a, 0x20) // Start of elements in `a`.\n let u := a // Highest memory slot.\n let w := not(0x1f)\n for { let i := 0 } iszero(eq(i, n)) { i := add(i, 1) } {\n let c := add(o, shl(5, i)) // Location of pointer to `a[i]`.\n let s := mload(c) // `a[i]`.\n let l := mload(s) // `a[i].length`.\n let r := and(l, 0x1f) // `a[i].length % 32`.\n let z := add(0x20, and(l, w)) // Offset of last word in `a[i]` from `s`.\n // If `s` comes before `o`, or `s` is not zero right padded.\n if iszero(lt(lt(s, o), or(iszero(r), iszero(shl(shl(3, r), mload(add(s, z))))))) {\n let m := mload(0x40)\n mstore(m, l) // Copy `a[i].length`.\n for {} 1 {} {\n mstore(add(m, z), mload(add(s, z))) // Copy `a[i]`, backwards.\n z := add(z, w) // `sub(z, 0x20)`.\n if iszero(z) { break }\n }\n let e := add(add(m, 0x20), l)\n mstore(e, 0) // Zeroize the slot after the copied bytes.\n mstore(0x40, add(e, 0x20)) // Allocate memory.\n s := m\n }\n mstore(c, sub(s, o)) // Convert to calldata offset.\n let t := add(l, add(s, 0x20))\n if iszero(lt(t, u)) { u := t }\n }\n let retStart := add(a, w) // Assumes `a` doesn't start from scratch space.\n mstore(retStart, 0x20) // Store the return offset.\n return(retStart, add(0x40, sub(u, retStart))) // End the transaction.\n }\n }\n\n /// @dev Returns the word at `offset`, without any bounds checks.\n function load(bytes memory a, uint256 offset) internal pure returns (bytes32 result) {\n /// @solidity memory-safe-assembly\n assembly {\n result := mload(add(add(a, 0x20), offset))\n }\n }\n\n /// @dev Returns the word at `offset`, without any bounds checks.\n function loadCalldata(bytes calldata a, uint256 offset)\n internal\n pure\n returns (bytes32 result)\n {\n /// @solidity memory-safe-assembly\n assembly {\n result := calldataload(add(a.offset, offset))\n }\n }\n\n /// @dev Returns a slice representing a static struct in the calldata. Performs bounds checks.\n function staticStructInCalldata(bytes calldata a, uint256 offset)\n internal\n pure\n returns (bytes calldata result)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let l := sub(a.length, 0x20)\n result.offset := add(a.offset, offset)\n result.length := sub(a.length, offset)\n if or(shr(64, or(l, a.offset)), gt(offset, l)) { revert(l, 0x00) }\n }\n }\n\n /// @dev Returns a slice representing a dynamic struct in the calldata. Performs bounds checks.\n function dynamicStructInCalldata(bytes calldata a, uint256 offset)\n internal\n pure\n returns (bytes calldata result)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let l := sub(a.length, 0x20)\n let s := calldataload(add(a.offset, offset)) // Relative offset of `result` from `a.offset`.\n result.offset := add(a.offset, s)\n result.length := sub(a.length, s)\n if or(shr(64, or(s, or(l, a.offset))), gt(offset, l)) { revert(l, 0x00) }\n }\n }\n\n /// @dev Returns bytes in calldata. Performs bounds checks.\n function bytesInCalldata(bytes calldata a, uint256 offset)\n internal\n pure\n returns (bytes calldata result)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let l := sub(a.length, 0x20)\n let s := calldataload(add(a.offset, offset)) // Relative offset of `result` from `a.offset`.\n result.offset := add(add(a.offset, s), 0x20)\n result.length := calldataload(add(a.offset, s))\n // forgefmt: disable-next-item\n if or(shr(64, or(result.length, or(s, or(l, a.offset)))),\n or(gt(add(s, result.length), l), gt(offset, l))) { revert(l, 0x00) }\n }\n }\n\n /// @dev Returns empty calldata bytes. For silencing the compiler.\n function emptyCalldata() internal pure returns (bytes calldata result) {\n /// @solidity memory-safe-assembly\n assembly {\n result.length := 0\n }\n }\n}\n" + }, + "solady/utils/LibClone.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.4;\n\n/// @notice Minimal proxy library.\n/// @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/LibClone.sol)\n/// @author Minimal proxy by 0age (https://github.com/0age)\n/// @author Clones with immutable args by wighawag, zefram.eth, Saw-mon & Natalie\n/// (https://github.com/Saw-mon-and-Natalie/clones-with-immutable-args)\n/// @author Minimal ERC1967 proxy by jtriley-eth (https://github.com/jtriley-eth/minimum-viable-proxy)\n///\n/// @dev Minimal proxy:\n/// Although the sw0nt pattern saves 5 gas over the ERC1167 pattern during runtime,\n/// it is not supported out-of-the-box on Etherscan. Hence, we choose to use the 0age pattern,\n/// which saves 4 gas over the ERC1167 pattern during runtime, and has the smallest bytecode.\n/// - Automatically verified on Etherscan.\n///\n/// @dev Minimal proxy (PUSH0 variant):\n/// This is a new minimal proxy that uses the PUSH0 opcode introduced during Shanghai.\n/// It is optimized first for minimal runtime gas, then for minimal bytecode.\n/// The PUSH0 clone functions are intentionally postfixed with a jarring \"_PUSH0\" as\n/// many EVM chains may not support the PUSH0 opcode in the early months after Shanghai.\n/// Please use with caution.\n/// - Automatically verified on Etherscan.\n///\n/// @dev Clones with immutable args (CWIA):\n/// The implementation of CWIA here does NOT append the immutable args into the calldata\n/// passed into delegatecall. It is simply an ERC1167 minimal proxy with the immutable arguments\n/// appended to the back of the runtime bytecode.\n/// - Uses the identity precompile (0x4) to copy args during deployment.\n///\n/// @dev Minimal ERC1967 proxy:\n/// A minimal ERC1967 proxy, intended to be upgraded with UUPS.\n/// This is NOT the same as ERC1967Factory's transparent proxy, which includes admin logic.\n/// - Automatically verified on Etherscan.\n///\n/// @dev Minimal ERC1967 proxy with immutable args:\n/// - Uses the identity precompile (0x4) to copy args during deployment.\n/// - Automatically verified on Etherscan.\n///\n/// @dev ERC1967I proxy:\n/// A variant of the minimal ERC1967 proxy, with a special code path that activates\n/// if `calldatasize() == 1`. This code path skips the delegatecall and directly returns the\n/// `implementation` address. The returned implementation is guaranteed to be valid if the\n/// keccak256 of the proxy's code is equal to `ERC1967I_CODE_HASH`.\n///\n/// @dev ERC1967I proxy with immutable args:\n/// A variant of the minimal ERC1967 proxy, with a special code path that activates\n/// if `calldatasize() == 1`. This code path skips the delegatecall and directly returns the\n/// - Uses the identity precompile (0x4) to copy args during deployment.\n///\n/// @dev Minimal ERC1967 beacon proxy:\n/// A minimal beacon proxy, intended to be upgraded with an upgradable beacon.\n/// - Automatically verified on Etherscan.\n///\n/// @dev Minimal ERC1967 beacon proxy with immutable args:\n/// - Uses the identity precompile (0x4) to copy args during deployment.\n/// - Automatically verified on Etherscan.\n///\n/// @dev ERC1967I beacon proxy:\n/// A variant of the minimal ERC1967 beacon proxy, with a special code path that activates\n/// if `calldatasize() == 1`. This code path skips the delegatecall and directly returns the\n/// `implementation` address. The returned implementation is guaranteed to be valid if the\n/// keccak256 of the proxy's code is equal to `ERC1967I_CODE_HASH`.\n///\n/// @dev ERC1967I proxy with immutable args:\n/// A variant of the minimal ERC1967 beacon proxy, with a special code path that activates\n/// if `calldatasize() == 1`. This code path skips the delegatecall and directly returns the\n/// - Uses the identity precompile (0x4) to copy args during deployment.\nlibrary LibClone {\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* CONSTANTS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev The keccak256 of deployed code for the clone proxy,\n /// with the implementation set to `address(0)`.\n bytes32 internal constant CLONE_CODE_HASH =\n 0x48db2cfdb2853fce0b464f1f93a1996469459df3ab6c812106074c4106a1eb1f;\n\n /// @dev The keccak256 of deployed code for the PUSH0 proxy,\n /// with the implementation set to `address(0)`.\n bytes32 internal constant PUSH0_CLONE_CODE_HASH =\n 0x67bc6bde1b84d66e267c718ba44cf3928a615d29885537955cb43d44b3e789dc;\n\n /// @dev The keccak256 of deployed code for the ERC-1167 CWIA proxy,\n /// with the implementation set to `address(0)`.\n bytes32 internal constant CWIA_CODE_HASH =\n 0x3cf92464268225a4513da40a34d967354684c32cd0edd67b5f668dfe3550e940;\n\n /// @dev The keccak256 of the deployed code for the ERC1967 proxy.\n bytes32 internal constant ERC1967_CODE_HASH =\n 0xaaa52c8cc8a0e3fd27ce756cc6b4e70c51423e9b597b11f32d3e49f8b1fc890d;\n\n /// @dev The keccak256 of the deployed code for the ERC1967I proxy.\n bytes32 internal constant ERC1967I_CODE_HASH =\n 0xce700223c0d4cea4583409accfc45adac4a093b3519998a9cbbe1504dadba6f7;\n\n /// @dev The keccak256 of the deployed code for the ERC1967 beacon proxy.\n bytes32 internal constant ERC1967_BEACON_PROXY_CODE_HASH =\n 0x14044459af17bc4f0f5aa2f658cb692add77d1302c29fe2aebab005eea9d1162;\n\n /// @dev The keccak256 of the deployed code for the ERC1967 beacon proxy.\n bytes32 internal constant ERC1967I_BEACON_PROXY_CODE_HASH =\n 0xf8c46d2793d5aa984eb827aeaba4b63aedcab80119212fce827309788735519a;\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* CUSTOM ERRORS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Unable to deploy the clone.\n error DeploymentFailed();\n\n /// @dev The salt must start with either the zero address or `by`.\n error SaltDoesNotStartWith();\n\n /// @dev The ETH transfer has failed.\n error ETHTransferFailed();\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* MINIMAL PROXY OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Deploys a clone of `implementation`.\n function clone(address implementation) internal returns (address instance) {\n instance = clone(0, implementation);\n }\n\n /// @dev Deploys a clone of `implementation`.\n /// Deposits `value` ETH during deployment.\n function clone(uint256 value, address implementation) internal returns (address instance) {\n /// @solidity memory-safe-assembly\n assembly {\n /**\n * --------------------------------------------------------------------------+\n * CREATION (9 bytes) |\n * --------------------------------------------------------------------------|\n * Opcode | Mnemonic | Stack | Memory |\n * --------------------------------------------------------------------------|\n * 60 runSize | PUSH1 runSize | r | |\n * 3d | RETURNDATASIZE | 0 r | |\n * 81 | DUP2 | r 0 r | |\n * 60 offset | PUSH1 offset | o r 0 r | |\n * 3d | RETURNDATASIZE | 0 o r 0 r | |\n * 39 | CODECOPY | 0 r | [0..runSize): runtime code |\n * f3 | RETURN | | [0..runSize): runtime code |\n * --------------------------------------------------------------------------|\n * RUNTIME (44 bytes) |\n * --------------------------------------------------------------------------|\n * Opcode | Mnemonic | Stack | Memory |\n * --------------------------------------------------------------------------|\n * |\n * ::: keep some values in stack ::::::::::::::::::::::::::::::::::::::::::: |\n * 3d | RETURNDATASIZE | 0 | |\n * 3d | RETURNDATASIZE | 0 0 | |\n * 3d | RETURNDATASIZE | 0 0 0 | |\n * 3d | RETURNDATASIZE | 0 0 0 0 | |\n * |\n * ::: copy calldata to memory ::::::::::::::::::::::::::::::::::::::::::::: |\n * 36 | CALLDATASIZE | cds 0 0 0 0 | |\n * 3d | RETURNDATASIZE | 0 cds 0 0 0 0 | |\n * 3d | RETURNDATASIZE | 0 0 cds 0 0 0 0 | |\n * 37 | CALLDATACOPY | 0 0 0 0 | [0..cds): calldata |\n * |\n * ::: delegate call to the implementation contract :::::::::::::::::::::::: |\n * 36 | CALLDATASIZE | cds 0 0 0 0 | [0..cds): calldata |\n * 3d | RETURNDATASIZE | 0 cds 0 0 0 0 | [0..cds): calldata |\n * 73 addr | PUSH20 addr | addr 0 cds 0 0 0 0 | [0..cds): calldata |\n * 5a | GAS | gas addr 0 cds 0 0 0 0 | [0..cds): calldata |\n * f4 | DELEGATECALL | success 0 0 | [0..cds): calldata |\n * |\n * ::: copy return data to memory :::::::::::::::::::::::::::::::::::::::::: |\n * 3d | RETURNDATASIZE | rds success 0 0 | [0..cds): calldata |\n * 3d | RETURNDATASIZE | rds rds success 0 0 | [0..cds): calldata |\n * 93 | SWAP4 | 0 rds success 0 rds | [0..cds): calldata |\n * 80 | DUP1 | 0 0 rds success 0 rds | [0..cds): calldata |\n * 3e | RETURNDATACOPY | success 0 rds | [0..rds): returndata |\n * |\n * 60 0x2a | PUSH1 0x2a | 0x2a success 0 rds | [0..rds): returndata |\n * 57 | JUMPI | 0 rds | [0..rds): returndata |\n * |\n * ::: revert :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: |\n * fd | REVERT | | [0..rds): returndata |\n * |\n * ::: return :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: |\n * 5b | JUMPDEST | 0 rds | [0..rds): returndata |\n * f3 | RETURN | | [0..rds): returndata |\n * --------------------------------------------------------------------------+\n */\n mstore(0x21, 0x5af43d3d93803e602a57fd5bf3)\n mstore(0x14, implementation)\n mstore(0x00, 0x602c3d8160093d39f33d3d3d3d363d3d37363d73)\n instance := create(value, 0x0c, 0x35)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n mstore(0x21, 0) // Restore the overwritten part of the free memory pointer.\n }\n }\n\n /// @dev Deploys a deterministic clone of `implementation` with `salt`.\n function cloneDeterministic(address implementation, bytes32 salt)\n internal\n returns (address instance)\n {\n instance = cloneDeterministic(0, implementation, salt);\n }\n\n /// @dev Deploys a deterministic clone of `implementation` with `salt`.\n /// Deposits `value` ETH during deployment.\n function cloneDeterministic(uint256 value, address implementation, bytes32 salt)\n internal\n returns (address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n mstore(0x21, 0x5af43d3d93803e602a57fd5bf3)\n mstore(0x14, implementation)\n mstore(0x00, 0x602c3d8160093d39f33d3d3d3d363d3d37363d73)\n instance := create2(value, 0x0c, 0x35, salt)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n mstore(0x21, 0) // Restore the overwritten part of the free memory pointer.\n }\n }\n\n /// @dev Returns the initialization code of the clone of `implementation`.\n function initCode(address implementation) internal pure returns (bytes memory c) {\n /// @solidity memory-safe-assembly\n assembly {\n c := mload(0x40)\n mstore(add(c, 0x40), 0x5af43d3d93803e602a57fd5bf30000000000000000000000)\n mstore(add(c, 0x28), implementation)\n mstore(add(c, 0x14), 0x602c3d8160093d39f33d3d3d3d363d3d37363d73)\n mstore(c, 0x35) // Store the length.\n mstore(0x40, add(c, 0x60)) // Allocate memory.\n }\n }\n\n /// @dev Returns the initialization code hash of the clone of `implementation`.\n function initCodeHash(address implementation) internal pure returns (bytes32 hash) {\n /// @solidity memory-safe-assembly\n assembly {\n mstore(0x21, 0x5af43d3d93803e602a57fd5bf3)\n mstore(0x14, implementation)\n mstore(0x00, 0x602c3d8160093d39f33d3d3d3d363d3d37363d73)\n hash := keccak256(0x0c, 0x35)\n mstore(0x21, 0) // Restore the overwritten part of the free memory pointer.\n }\n }\n\n /// @dev Returns the address of the clone of `implementation`, with `salt` by `deployer`.\n /// Note: The returned result has dirty upper 96 bits. Please clean if used in assembly.\n function predictDeterministicAddress(address implementation, bytes32 salt, address deployer)\n internal\n pure\n returns (address predicted)\n {\n bytes32 hash = initCodeHash(implementation);\n predicted = predictDeterministicAddress(hash, salt, deployer);\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* MINIMAL PROXY OPERATIONS (PUSH0 VARIANT) */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Deploys a PUSH0 clone of `implementation`.\n function clone_PUSH0(address implementation) internal returns (address instance) {\n instance = clone_PUSH0(0, implementation);\n }\n\n /// @dev Deploys a PUSH0 clone of `implementation`.\n /// Deposits `value` ETH during deployment.\n function clone_PUSH0(uint256 value, address implementation)\n internal\n returns (address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n /**\n * --------------------------------------------------------------------------+\n * CREATION (9 bytes) |\n * --------------------------------------------------------------------------|\n * Opcode | Mnemonic | Stack | Memory |\n * --------------------------------------------------------------------------|\n * 60 runSize | PUSH1 runSize | r | |\n * 5f | PUSH0 | 0 r | |\n * 81 | DUP2 | r 0 r | |\n * 60 offset | PUSH1 offset | o r 0 r | |\n * 5f | PUSH0 | 0 o r 0 r | |\n * 39 | CODECOPY | 0 r | [0..runSize): runtime code |\n * f3 | RETURN | | [0..runSize): runtime code |\n * --------------------------------------------------------------------------|\n * RUNTIME (45 bytes) |\n * --------------------------------------------------------------------------|\n * Opcode | Mnemonic | Stack | Memory |\n * --------------------------------------------------------------------------|\n * |\n * ::: keep some values in stack ::::::::::::::::::::::::::::::::::::::::::: |\n * 5f | PUSH0 | 0 | |\n * 5f | PUSH0 | 0 0 | |\n * |\n * ::: copy calldata to memory ::::::::::::::::::::::::::::::::::::::::::::: |\n * 36 | CALLDATASIZE | cds 0 0 | |\n * 5f | PUSH0 | 0 cds 0 0 | |\n * 5f | PUSH0 | 0 0 cds 0 0 | |\n * 37 | CALLDATACOPY | 0 0 | [0..cds): calldata |\n * |\n * ::: delegate call to the implementation contract :::::::::::::::::::::::: |\n * 36 | CALLDATASIZE | cds 0 0 | [0..cds): calldata |\n * 5f | PUSH0 | 0 cds 0 0 | [0..cds): calldata |\n * 73 addr | PUSH20 addr | addr 0 cds 0 0 | [0..cds): calldata |\n * 5a | GAS | gas addr 0 cds 0 0 | [0..cds): calldata |\n * f4 | DELEGATECALL | success | [0..cds): calldata |\n * |\n * ::: copy return data to memory :::::::::::::::::::::::::::::::::::::::::: |\n * 3d | RETURNDATASIZE | rds success | [0..cds): calldata |\n * 5f | PUSH0 | 0 rds success | [0..cds): calldata |\n * 5f | PUSH0 | 0 0 rds success | [0..cds): calldata |\n * 3e | RETURNDATACOPY | success | [0..rds): returndata |\n * |\n * 60 0x29 | PUSH1 0x29 | 0x29 success | [0..rds): returndata |\n * 57 | JUMPI | | [0..rds): returndata |\n * |\n * ::: revert :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: |\n * 3d | RETURNDATASIZE | rds | [0..rds): returndata |\n * 5f | PUSH0 | 0 rds | [0..rds): returndata |\n * fd | REVERT | | [0..rds): returndata |\n * |\n * ::: return :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: |\n * 5b | JUMPDEST | | [0..rds): returndata |\n * 3d | RETURNDATASIZE | rds | [0..rds): returndata |\n * 5f | PUSH0 | 0 rds | [0..rds): returndata |\n * f3 | RETURN | | [0..rds): returndata |\n * --------------------------------------------------------------------------+\n */\n mstore(0x24, 0x5af43d5f5f3e6029573d5ffd5b3d5ff3) // 16\n mstore(0x14, implementation) // 20\n mstore(0x00, 0x602d5f8160095f39f35f5f365f5f37365f73) // 9 + 9\n instance := create(value, 0x0e, 0x36)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n mstore(0x24, 0) // Restore the overwritten part of the free memory pointer.\n }\n }\n\n /// @dev Deploys a deterministic PUSH0 clone of `implementation` with `salt`.\n function cloneDeterministic_PUSH0(address implementation, bytes32 salt)\n internal\n returns (address instance)\n {\n instance = cloneDeterministic_PUSH0(0, implementation, salt);\n }\n\n /// @dev Deploys a deterministic PUSH0 clone of `implementation` with `salt`.\n /// Deposits `value` ETH during deployment.\n function cloneDeterministic_PUSH0(uint256 value, address implementation, bytes32 salt)\n internal\n returns (address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n mstore(0x24, 0x5af43d5f5f3e6029573d5ffd5b3d5ff3) // 16\n mstore(0x14, implementation) // 20\n mstore(0x00, 0x602d5f8160095f39f35f5f365f5f37365f73) // 9 + 9\n instance := create2(value, 0x0e, 0x36, salt)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n mstore(0x24, 0) // Restore the overwritten part of the free memory pointer.\n }\n }\n\n /// @dev Returns the initialization code of the PUSH0 clone of `implementation`.\n function initCode_PUSH0(address implementation) internal pure returns (bytes memory c) {\n /// @solidity memory-safe-assembly\n assembly {\n c := mload(0x40)\n mstore(add(c, 0x40), 0x5af43d5f5f3e6029573d5ffd5b3d5ff300000000000000000000) // 16\n mstore(add(c, 0x26), implementation) // 20\n mstore(add(c, 0x12), 0x602d5f8160095f39f35f5f365f5f37365f73) // 9 + 9\n mstore(c, 0x36) // Store the length.\n mstore(0x40, add(c, 0x60)) // Allocate memory.\n }\n }\n\n /// @dev Returns the initialization code hash of the PUSH0 clone of `implementation`.\n function initCodeHash_PUSH0(address implementation) internal pure returns (bytes32 hash) {\n /// @solidity memory-safe-assembly\n assembly {\n mstore(0x24, 0x5af43d5f5f3e6029573d5ffd5b3d5ff3) // 16\n mstore(0x14, implementation) // 20\n mstore(0x00, 0x602d5f8160095f39f35f5f365f5f37365f73) // 9 + 9\n hash := keccak256(0x0e, 0x36)\n mstore(0x24, 0) // Restore the overwritten part of the free memory pointer.\n }\n }\n\n /// @dev Returns the address of the PUSH0 clone of `implementation`, with `salt` by `deployer`.\n /// Note: The returned result has dirty upper 96 bits. Please clean if used in assembly.\n function predictDeterministicAddress_PUSH0(\n address implementation,\n bytes32 salt,\n address deployer\n ) internal pure returns (address predicted) {\n bytes32 hash = initCodeHash_PUSH0(implementation);\n predicted = predictDeterministicAddress(hash, salt, deployer);\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* CLONES WITH IMMUTABLE ARGS OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Deploys a clone of `implementation` with immutable arguments encoded in `args`.\n function clone(address implementation, bytes memory args) internal returns (address instance) {\n instance = clone(0, implementation, args);\n }\n\n /// @dev Deploys a clone of `implementation` with immutable arguments encoded in `args`.\n /// Deposits `value` ETH during deployment.\n function clone(uint256 value, address implementation, bytes memory args)\n internal\n returns (address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n /**\n * ---------------------------------------------------------------------------+\n * CREATION (10 bytes) |\n * ---------------------------------------------------------------------------|\n * Opcode | Mnemonic | Stack | Memory |\n * ---------------------------------------------------------------------------|\n * 61 runSize | PUSH2 runSize | r | |\n * 3d | RETURNDATASIZE | 0 r | |\n * 81 | DUP2 | r 0 r | |\n * 60 offset | PUSH1 offset | o r 0 r | |\n * 3d | RETURNDATASIZE | 0 o r 0 r | |\n * 39 | CODECOPY | 0 r | [0..runSize): runtime code |\n * f3 | RETURN | | [0..runSize): runtime code |\n * ---------------------------------------------------------------------------|\n * RUNTIME (45 bytes + extraLength) |\n * ---------------------------------------------------------------------------|\n * Opcode | Mnemonic | Stack | Memory |\n * ---------------------------------------------------------------------------|\n * |\n * ::: copy calldata to memory :::::::::::::::::::::::::::::::::::::::::::::: |\n * 36 | CALLDATASIZE | cds | |\n * 3d | RETURNDATASIZE | 0 cds | |\n * 3d | RETURNDATASIZE | 0 0 cds | |\n * 37 | CALLDATACOPY | | [0..cds): calldata |\n * |\n * ::: delegate call to the implementation contract ::::::::::::::::::::::::: |\n * 3d | RETURNDATASIZE | 0 | [0..cds): calldata |\n * 3d | RETURNDATASIZE | 0 0 | [0..cds): calldata |\n * 3d | RETURNDATASIZE | 0 0 0 | [0..cds): calldata |\n * 36 | CALLDATASIZE | cds 0 0 0 | [0..cds): calldata |\n * 3d | RETURNDATASIZE | 0 cds 0 0 0 0 | [0..cds): calldata |\n * 73 addr | PUSH20 addr | addr 0 cds 0 0 0 0 | [0..cds): calldata |\n * 5a | GAS | gas addr 0 cds 0 0 0 0 | [0..cds): calldata |\n * f4 | DELEGATECALL | success 0 0 | [0..cds): calldata |\n * |\n * ::: copy return data to memory ::::::::::::::::::::::::::::::::::::::::::: |\n * 3d | RETURNDATASIZE | rds success 0 | [0..cds): calldata |\n * 82 | DUP3 | 0 rds success 0 | [0..cds): calldata |\n * 80 | DUP1 | 0 0 rds success 0 | [0..cds): calldata |\n * 3e | RETURNDATACOPY | success 0 | [0..rds): returndata |\n * 90 | SWAP1 | 0 success | [0..rds): returndata |\n * 3d | RETURNDATASIZE | rds 0 success | [0..rds): returndata |\n * 91 | SWAP2 | success 0 rds | [0..rds): returndata |\n * |\n * 60 0x2b | PUSH1 0x2b | 0x2b success 0 rds | [0..rds): returndata |\n * 57 | JUMPI | 0 rds | [0..rds): returndata |\n * |\n * ::: revert ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: |\n * fd | REVERT | | [0..rds): returndata |\n * |\n * ::: return ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: |\n * 5b | JUMPDEST | 0 rds | [0..rds): returndata |\n * f3 | RETURN | | [0..rds): returndata |\n * ---------------------------------------------------------------------------+\n */\n let m := mload(0x40)\n let n := mload(args)\n pop(staticcall(gas(), 4, add(args, 0x20), n, add(m, 0x43), n))\n mstore(add(m, 0x23), 0x5af43d82803e903d91602b57fd5bf3)\n mstore(add(m, 0x14), implementation)\n mstore(m, add(0xfe61002d3d81600a3d39f3363d3d373d3d3d363d73, shl(136, n)))\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x2d = 0xffd2`.\n instance := create(value, add(m, add(0x0b, lt(n, 0xffd3))), add(n, 0x37))\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n }\n }\n\n /// @dev Deploys a deterministic clone of `implementation`\n /// with immutable arguments encoded in `args` and `salt`.\n function cloneDeterministic(address implementation, bytes memory args, bytes32 salt)\n internal\n returns (address instance)\n {\n instance = cloneDeterministic(0, implementation, args, salt);\n }\n\n /// @dev Deploys a deterministic clone of `implementation`\n /// with immutable arguments encoded in `args` and `salt`.\n function cloneDeterministic(\n uint256 value,\n address implementation,\n bytes memory args,\n bytes32 salt\n ) internal returns (address instance) {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n let n := mload(args)\n pop(staticcall(gas(), 4, add(args, 0x20), n, add(m, 0x43), n))\n mstore(add(m, 0x23), 0x5af43d82803e903d91602b57fd5bf3)\n mstore(add(m, 0x14), implementation)\n mstore(m, add(0xfe61002d3d81600a3d39f3363d3d373d3d3d363d73, shl(136, n)))\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x2d = 0xffd2`.\n instance := create2(value, add(m, add(0x0b, lt(n, 0xffd3))), add(n, 0x37), salt)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n }\n }\n\n /// @dev Deploys a deterministic clone of `implementation`\n /// with immutable arguments encoded in `args` and `salt`.\n /// This method does not revert if the clone has already been deployed.\n function createDeterministicClone(address implementation, bytes memory args, bytes32 salt)\n internal\n returns (bool alreadyDeployed, address instance)\n {\n return createDeterministicClone(0, implementation, args, salt);\n }\n\n /// @dev Deploys a deterministic clone of `implementation`\n /// with immutable arguments encoded in `args` and `salt`.\n /// This method does not revert if the clone has already been deployed.\n function createDeterministicClone(\n uint256 value,\n address implementation,\n bytes memory args,\n bytes32 salt\n ) internal returns (bool alreadyDeployed, address instance) {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n let n := mload(args)\n pop(staticcall(gas(), 4, add(args, 0x20), n, add(m, 0x43), n))\n mstore(add(m, 0x23), 0x5af43d82803e903d91602b57fd5bf3)\n mstore(add(m, 0x14), implementation)\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x2d = 0xffd2`.\n // forgefmt: disable-next-item\n mstore(add(m, gt(n, 0xffd2)), add(0xfe61002d3d81600a3d39f3363d3d373d3d3d363d73, shl(136, n)))\n // Compute and store the bytecode hash.\n mstore8(0x00, 0xff) // Write the prefix.\n mstore(0x35, keccak256(add(m, 0x0c), add(n, 0x37)))\n mstore(0x01, shl(96, address()))\n mstore(0x15, salt)\n instance := keccak256(0x00, 0x55)\n for {} 1 {} {\n if iszero(extcodesize(instance)) {\n instance := create2(value, add(m, 0x0c), add(n, 0x37), salt)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n break\n }\n alreadyDeployed := 1\n if iszero(value) { break }\n if iszero(call(gas(), instance, value, codesize(), 0x00, codesize(), 0x00)) {\n mstore(0x00, 0xb12d13eb) // `ETHTransferFailed()`.\n revert(0x1c, 0x04)\n }\n break\n }\n mstore(0x35, 0) // Restore the overwritten part of the free memory pointer.\n }\n }\n\n /// @dev Returns the initialization code of the clone of `implementation`\n /// using immutable arguments encoded in `args`.\n function initCode(address implementation, bytes memory args)\n internal\n pure\n returns (bytes memory c)\n {\n /// @solidity memory-safe-assembly\n assembly {\n c := mload(0x40)\n let n := mload(args)\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x2d = 0xffd2`.\n returndatacopy(returndatasize(), returndatasize(), gt(n, 0xffd2))\n for { let i := 0 } lt(i, n) { i := add(i, 0x20) } {\n mstore(add(add(c, 0x57), i), mload(add(add(args, 0x20), i)))\n }\n mstore(add(c, 0x37), 0x5af43d82803e903d91602b57fd5bf3)\n mstore(add(c, 0x28), implementation)\n mstore(add(c, 0x14), add(0x61002d3d81600a3d39f3363d3d373d3d3d363d73, shl(136, n)))\n mstore(c, add(0x37, n)) // Store the length.\n mstore(add(c, add(n, 0x57)), 0) // Zeroize the slot after the bytes.\n mstore(0x40, add(c, add(n, 0x77))) // Allocate memory.\n }\n }\n\n /// @dev Returns the initialization code hash of the clone of `implementation`\n /// using immutable arguments encoded in `args`.\n function initCodeHash(address implementation, bytes memory args)\n internal\n pure\n returns (bytes32 hash)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n let n := mload(args)\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x2d = 0xffd2`.\n returndatacopy(returndatasize(), returndatasize(), gt(n, 0xffd2))\n for { let i := 0 } lt(i, n) { i := add(i, 0x20) } {\n mstore(add(add(m, 0x43), i), mload(add(add(args, 0x20), i)))\n }\n mstore(add(m, 0x23), 0x5af43d82803e903d91602b57fd5bf3)\n mstore(add(m, 0x14), implementation)\n mstore(m, add(0x61002d3d81600a3d39f3363d3d373d3d3d363d73, shl(136, n)))\n hash := keccak256(add(m, 0x0c), add(n, 0x37))\n }\n }\n\n /// @dev Returns the address of the clone of\n /// `implementation` using immutable arguments encoded in `args`, with `salt`, by `deployer`.\n /// Note: The returned result has dirty upper 96 bits. Please clean if used in assembly.\n function predictDeterministicAddress(\n address implementation,\n bytes memory data,\n bytes32 salt,\n address deployer\n ) internal pure returns (address predicted) {\n bytes32 hash = initCodeHash(implementation, data);\n predicted = predictDeterministicAddress(hash, salt, deployer);\n }\n\n /// @dev Equivalent to `argsOnClone(instance, 0, 2 ** 256 - 1)`.\n function argsOnClone(address instance) internal view returns (bytes memory args) {\n /// @solidity memory-safe-assembly\n assembly {\n args := mload(0x40)\n mstore(args, and(0xffffffffff, sub(extcodesize(instance), 0x2d))) // Store the length.\n extcodecopy(instance, add(args, 0x20), 0x2d, add(mload(args), 0x20))\n mstore(0x40, add(mload(args), add(args, 0x40))) // Allocate memory.\n }\n }\n\n /// @dev Equivalent to `argsOnClone(instance, start, 2 ** 256 - 1)`.\n function argsOnClone(address instance, uint256 start)\n internal\n view\n returns (bytes memory args)\n {\n /// @solidity memory-safe-assembly\n assembly {\n args := mload(0x40)\n let n := and(0xffffffffff, sub(extcodesize(instance), 0x2d))\n let l := sub(n, and(0xffffff, mul(lt(start, n), start)))\n extcodecopy(instance, args, add(start, 0x0d), add(l, 0x40))\n mstore(args, mul(sub(n, start), lt(start, n))) // Store the length.\n mstore(0x40, add(args, add(0x40, mload(args)))) // Allocate memory.\n }\n }\n\n /// @dev Returns a slice of the immutable arguments on `instance` from `start` to `end`.\n /// `start` and `end` will be clamped to the range `[0, args.length]`.\n /// The `instance` MUST be deployed via the clone with immutable args functions.\n /// Otherwise, the behavior is undefined.\n /// Out-of-gas reverts if `instance` does not have any code.\n function argsOnClone(address instance, uint256 start, uint256 end)\n internal\n view\n returns (bytes memory args)\n {\n /// @solidity memory-safe-assembly\n assembly {\n args := mload(0x40)\n if iszero(lt(end, 0xffff)) { end := 0xffff }\n let d := mul(sub(end, start), lt(start, end))\n extcodecopy(instance, args, add(start, 0x0d), add(d, 0x20))\n if iszero(and(0xff, mload(add(args, d)))) {\n let n := sub(extcodesize(instance), 0x2d)\n returndatacopy(returndatasize(), returndatasize(), shr(40, n))\n d := mul(gt(n, start), sub(d, mul(gt(end, n), sub(end, n))))\n }\n mstore(args, d) // Store the length.\n mstore(add(add(args, 0x20), d), 0) // Zeroize the slot after the bytes.\n mstore(0x40, add(add(args, 0x40), d)) // Allocate memory.\n }\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* MINIMAL ERC1967 PROXY OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n // Note: The ERC1967 proxy here is intended to be upgraded with UUPS.\n // This is NOT the same as ERC1967Factory's transparent proxy, which includes admin logic.\n\n /// @dev Deploys a minimal ERC1967 proxy with `implementation`.\n function deployERC1967(address implementation) internal returns (address instance) {\n instance = deployERC1967(0, implementation);\n }\n\n /// @dev Deploys a minimal ERC1967 proxy with `implementation`.\n /// Deposits `value` ETH during deployment.\n function deployERC1967(uint256 value, address implementation)\n internal\n returns (address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n /**\n * ---------------------------------------------------------------------------------+\n * CREATION (34 bytes) |\n * ---------------------------------------------------------------------------------|\n * Opcode | Mnemonic | Stack | Memory |\n * ---------------------------------------------------------------------------------|\n * 60 runSize | PUSH1 runSize | r | |\n * 3d | RETURNDATASIZE | 0 r | |\n * 81 | DUP2 | r 0 r | |\n * 60 offset | PUSH1 offset | o r 0 r | |\n * 3d | RETURNDATASIZE | 0 o r 0 r | |\n * 39 | CODECOPY | 0 r | [0..runSize): runtime code |\n * 73 impl | PUSH20 impl | impl 0 r | [0..runSize): runtime code |\n * 60 slotPos | PUSH1 slotPos | slotPos impl 0 r | [0..runSize): runtime code |\n * 51 | MLOAD | slot impl 0 r | [0..runSize): runtime code |\n * 55 | SSTORE | 0 r | [0..runSize): runtime code |\n * f3 | RETURN | | [0..runSize): runtime code |\n * ---------------------------------------------------------------------------------|\n * RUNTIME (61 bytes) |\n * ---------------------------------------------------------------------------------|\n * Opcode | Mnemonic | Stack | Memory |\n * ---------------------------------------------------------------------------------|\n * |\n * ::: copy calldata to memory :::::::::::::::::::::::::::::::::::::::::::::::::::: |\n * 36 | CALLDATASIZE | cds | |\n * 3d | RETURNDATASIZE | 0 cds | |\n * 3d | RETURNDATASIZE | 0 0 cds | |\n * 37 | CALLDATACOPY | | [0..calldatasize): calldata |\n * |\n * ::: delegatecall to implementation ::::::::::::::::::::::::::::::::::::::::::::: |\n * 3d | RETURNDATASIZE | 0 | |\n * 3d | RETURNDATASIZE | 0 0 | |\n * 36 | CALLDATASIZE | cds 0 0 | [0..calldatasize): calldata |\n * 3d | RETURNDATASIZE | 0 cds 0 0 | [0..calldatasize): calldata |\n * 7f slot | PUSH32 slot | s 0 cds 0 0 | [0..calldatasize): calldata |\n * 54 | SLOAD | i 0 cds 0 0 | [0..calldatasize): calldata |\n * 5a | GAS | g i 0 cds 0 0 | [0..calldatasize): calldata |\n * f4 | DELEGATECALL | succ | [0..calldatasize): calldata |\n * |\n * ::: copy returndata to memory :::::::::::::::::::::::::::::::::::::::::::::::::: |\n * 3d | RETURNDATASIZE | rds succ | [0..calldatasize): calldata |\n * 60 0x00 | PUSH1 0x00 | 0 rds succ | [0..calldatasize): calldata |\n * 80 | DUP1 | 0 0 rds succ | [0..calldatasize): calldata |\n * 3e | RETURNDATACOPY | succ | [0..returndatasize): returndata |\n * |\n * ::: branch on delegatecall status :::::::::::::::::::::::::::::::::::::::::::::: |\n * 60 0x38 | PUSH1 0x38 | dest succ | [0..returndatasize): returndata |\n * 57 | JUMPI | | [0..returndatasize): returndata |\n * |\n * ::: delegatecall failed, revert :::::::::::::::::::::::::::::::::::::::::::::::: |\n * 3d | RETURNDATASIZE | rds | [0..returndatasize): returndata |\n * 60 0x00 | PUSH1 0x00 | 0 rds | [0..returndatasize): returndata |\n * fd | REVERT | | [0..returndatasize): returndata |\n * |\n * ::: delegatecall succeeded, return ::::::::::::::::::::::::::::::::::::::::::::: |\n * 5b | JUMPDEST | | [0..returndatasize): returndata |\n * 3d | RETURNDATASIZE | rds | [0..returndatasize): returndata |\n * 60 0x00 | PUSH1 0x00 | 0 rds | [0..returndatasize): returndata |\n * f3 | RETURN | | [0..returndatasize): returndata |\n * ---------------------------------------------------------------------------------+\n */\n let m := mload(0x40) // Cache the free memory pointer.\n mstore(0x60, 0xcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f3)\n mstore(0x40, 0x5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076)\n mstore(0x20, 0x6009)\n mstore(0x1e, implementation)\n mstore(0x0a, 0x603d3d8160223d3973)\n instance := create(value, 0x21, 0x5f)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n mstore(0x40, m) // Restore the free memory pointer.\n mstore(0x60, 0) // Restore the zero slot.\n }\n }\n\n /// @dev Deploys a deterministic minimal ERC1967 proxy with `implementation` and `salt`.\n function deployDeterministicERC1967(address implementation, bytes32 salt)\n internal\n returns (address instance)\n {\n instance = deployDeterministicERC1967(0, implementation, salt);\n }\n\n /// @dev Deploys a deterministic minimal ERC1967 proxy with `implementation` and `salt`.\n /// Deposits `value` ETH during deployment.\n function deployDeterministicERC1967(uint256 value, address implementation, bytes32 salt)\n internal\n returns (address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40) // Cache the free memory pointer.\n mstore(0x60, 0xcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f3)\n mstore(0x40, 0x5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076)\n mstore(0x20, 0x6009)\n mstore(0x1e, implementation)\n mstore(0x0a, 0x603d3d8160223d3973)\n instance := create2(value, 0x21, 0x5f, salt)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n mstore(0x40, m) // Restore the free memory pointer.\n mstore(0x60, 0) // Restore the zero slot.\n }\n }\n\n /// @dev Creates a deterministic minimal ERC1967 proxy with `implementation` and `salt`.\n /// Note: This method is intended for use in ERC4337 factories,\n /// which are expected to NOT revert if the proxy is already deployed.\n function createDeterministicERC1967(address implementation, bytes32 salt)\n internal\n returns (bool alreadyDeployed, address instance)\n {\n return createDeterministicERC1967(0, implementation, salt);\n }\n\n /// @dev Creates a deterministic minimal ERC1967 proxy with `implementation` and `salt`.\n /// Deposits `value` ETH during deployment.\n /// Note: This method is intended for use in ERC4337 factories,\n /// which are expected to NOT revert if the proxy is already deployed.\n function createDeterministicERC1967(uint256 value, address implementation, bytes32 salt)\n internal\n returns (bool alreadyDeployed, address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40) // Cache the free memory pointer.\n mstore(0x60, 0xcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f3)\n mstore(0x40, 0x5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076)\n mstore(0x20, 0x6009)\n mstore(0x1e, implementation)\n mstore(0x0a, 0x603d3d8160223d3973)\n // Compute and store the bytecode hash.\n mstore(add(m, 0x35), keccak256(0x21, 0x5f))\n mstore(m, shl(88, address()))\n mstore8(m, 0xff) // Write the prefix.\n mstore(add(m, 0x15), salt)\n instance := keccak256(m, 0x55)\n for {} 1 {} {\n if iszero(extcodesize(instance)) {\n instance := create2(value, 0x21, 0x5f, salt)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n break\n }\n alreadyDeployed := 1\n if iszero(value) { break }\n if iszero(call(gas(), instance, value, codesize(), 0x00, codesize(), 0x00)) {\n mstore(0x00, 0xb12d13eb) // `ETHTransferFailed()`.\n revert(0x1c, 0x04)\n }\n break\n }\n mstore(0x40, m) // Restore the free memory pointer.\n mstore(0x60, 0) // Restore the zero slot.\n }\n }\n\n /// @dev Returns the initialization code of the minimal ERC1967 proxy of `implementation`.\n function initCodeERC1967(address implementation) internal pure returns (bytes memory c) {\n /// @solidity memory-safe-assembly\n assembly {\n c := mload(0x40)\n mstore(add(c, 0x60), 0x3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f300)\n mstore(add(c, 0x40), 0x55f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076cc)\n mstore(add(c, 0x20), or(shl(24, implementation), 0x600951))\n mstore(add(c, 0x09), 0x603d3d8160223d3973)\n mstore(c, 0x5f) // Store the length.\n mstore(0x40, add(c, 0x80)) // Allocate memory.\n }\n }\n\n /// @dev Returns the initialization code hash of the minimal ERC1967 proxy of `implementation`.\n function initCodeHashERC1967(address implementation) internal pure returns (bytes32 hash) {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40) // Cache the free memory pointer.\n mstore(0x60, 0xcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f3)\n mstore(0x40, 0x5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076)\n mstore(0x20, 0x6009)\n mstore(0x1e, implementation)\n mstore(0x0a, 0x603d3d8160223d3973)\n hash := keccak256(0x21, 0x5f)\n mstore(0x40, m) // Restore the free memory pointer.\n mstore(0x60, 0) // Restore the zero slot.\n }\n }\n\n /// @dev Returns the address of the ERC1967 proxy of `implementation`, with `salt` by `deployer`.\n /// Note: The returned result has dirty upper 96 bits. Please clean if used in assembly.\n function predictDeterministicAddressERC1967(\n address implementation,\n bytes32 salt,\n address deployer\n ) internal pure returns (address predicted) {\n bytes32 hash = initCodeHashERC1967(implementation);\n predicted = predictDeterministicAddress(hash, salt, deployer);\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* MINIMAL ERC1967 PROXY WITH IMMUTABLE ARGS OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Deploys a minimal ERC1967 proxy with `implementation` and `args`.\n function deployERC1967(address implementation, bytes memory args)\n internal\n returns (address instance)\n {\n instance = deployERC1967(0, implementation, args);\n }\n\n /// @dev Deploys a minimal ERC1967 proxy with `implementation` and `args`.\n /// Deposits `value` ETH during deployment.\n function deployERC1967(uint256 value, address implementation, bytes memory args)\n internal\n returns (address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n let n := mload(args)\n pop(staticcall(gas(), 4, add(args, 0x20), n, add(m, 0x60), n))\n mstore(add(m, 0x40), 0xcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f3)\n mstore(add(m, 0x20), 0x5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076)\n mstore(0x16, 0x6009)\n mstore(0x14, implementation)\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x3d = 0xffc2`.\n mstore(gt(n, 0xffc2), add(0xfe61003d3d8160233d3973, shl(56, n)))\n mstore(m, mload(0x16))\n instance := create(value, m, add(n, 0x60))\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n }\n }\n\n /// @dev Deploys a deterministic minimal ERC1967 proxy with `implementation`, `args` and `salt`.\n function deployDeterministicERC1967(address implementation, bytes memory args, bytes32 salt)\n internal\n returns (address instance)\n {\n instance = deployDeterministicERC1967(0, implementation, args, salt);\n }\n\n /// @dev Deploys a deterministic minimal ERC1967 proxy with `implementation`, `args` and `salt`.\n /// Deposits `value` ETH during deployment.\n function deployDeterministicERC1967(\n uint256 value,\n address implementation,\n bytes memory args,\n bytes32 salt\n ) internal returns (address instance) {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n let n := mload(args)\n pop(staticcall(gas(), 4, add(args, 0x20), n, add(m, 0x60), n))\n mstore(add(m, 0x40), 0xcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f3)\n mstore(add(m, 0x20), 0x5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076)\n mstore(0x16, 0x6009)\n mstore(0x14, implementation)\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x3d = 0xffc2`.\n mstore(gt(n, 0xffc2), add(0xfe61003d3d8160233d3973, shl(56, n)))\n mstore(m, mload(0x16))\n instance := create2(value, m, add(n, 0x60), salt)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n }\n }\n\n /// @dev Creates a deterministic minimal ERC1967 proxy with `implementation`, `args` and `salt`.\n /// Note: This method is intended for use in ERC4337 factories,\n /// which are expected to NOT revert if the proxy is already deployed.\n function createDeterministicERC1967(address implementation, bytes memory args, bytes32 salt)\n internal\n returns (bool alreadyDeployed, address instance)\n {\n return createDeterministicERC1967(0, implementation, args, salt);\n }\n\n /// @dev Creates a deterministic minimal ERC1967 proxy with `implementation`, `args` and `salt`.\n /// Deposits `value` ETH during deployment.\n /// Note: This method is intended for use in ERC4337 factories,\n /// which are expected to NOT revert if the proxy is already deployed.\n function createDeterministicERC1967(\n uint256 value,\n address implementation,\n bytes memory args,\n bytes32 salt\n ) internal returns (bool alreadyDeployed, address instance) {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n let n := mload(args)\n pop(staticcall(gas(), 4, add(args, 0x20), n, add(m, 0x60), n))\n mstore(add(m, 0x40), 0xcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f3)\n mstore(add(m, 0x20), 0x5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076)\n mstore(0x16, 0x6009)\n mstore(0x14, implementation)\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x3d = 0xffc2`.\n mstore(gt(n, 0xffc2), add(0xfe61003d3d8160233d3973, shl(56, n)))\n mstore(m, mload(0x16))\n // Compute and store the bytecode hash.\n mstore8(0x00, 0xff) // Write the prefix.\n mstore(0x35, keccak256(m, add(n, 0x60)))\n mstore(0x01, shl(96, address()))\n mstore(0x15, salt)\n instance := keccak256(0x00, 0x55)\n for {} 1 {} {\n if iszero(extcodesize(instance)) {\n instance := create2(value, m, add(n, 0x60), salt)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n break\n }\n alreadyDeployed := 1\n if iszero(value) { break }\n if iszero(call(gas(), instance, value, codesize(), 0x00, codesize(), 0x00)) {\n mstore(0x00, 0xb12d13eb) // `ETHTransferFailed()`.\n revert(0x1c, 0x04)\n }\n break\n }\n mstore(0x35, 0) // Restore the overwritten part of the free memory pointer.\n }\n }\n\n /// @dev Returns the initialization code of the minimal ERC1967 proxy of `implementation` and `args`.\n function initCodeERC1967(address implementation, bytes memory args)\n internal\n pure\n returns (bytes memory c)\n {\n /// @solidity memory-safe-assembly\n assembly {\n c := mload(0x40)\n let n := mload(args)\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x3d = 0xffc2`.\n returndatacopy(returndatasize(), returndatasize(), gt(n, 0xffc2))\n for { let i := 0 } lt(i, n) { i := add(i, 0x20) } {\n mstore(add(add(c, 0x80), i), mload(add(add(args, 0x20), i)))\n }\n mstore(add(c, 0x60), 0xcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f3)\n mstore(add(c, 0x40), 0x5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076)\n mstore(add(c, 0x20), 0x6009)\n mstore(add(c, 0x1e), implementation)\n mstore(add(c, 0x0a), add(0x61003d3d8160233d3973, shl(56, n)))\n mstore(c, add(n, 0x60)) // Store the length.\n mstore(add(c, add(n, 0x80)), 0) // Zeroize the slot after the bytes.\n mstore(0x40, add(c, add(n, 0xa0))) // Allocate memory.\n }\n }\n\n /// @dev Returns the initialization code hash of the minimal ERC1967 proxy of `implementation` and `args`.\n function initCodeHashERC1967(address implementation, bytes memory args)\n internal\n pure\n returns (bytes32 hash)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n let n := mload(args)\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x3d = 0xffc2`.\n returndatacopy(returndatasize(), returndatasize(), gt(n, 0xffc2))\n for { let i := 0 } lt(i, n) { i := add(i, 0x20) } {\n mstore(add(add(m, 0x60), i), mload(add(add(args, 0x20), i)))\n }\n mstore(add(m, 0x40), 0xcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f3)\n mstore(add(m, 0x20), 0x5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076)\n mstore(0x16, 0x6009)\n mstore(0x14, implementation)\n mstore(0x00, add(0x61003d3d8160233d3973, shl(56, n)))\n mstore(m, mload(0x16))\n hash := keccak256(m, add(n, 0x60))\n }\n }\n\n /// @dev Returns the address of the ERC1967 proxy of `implementation`, `args`, with `salt` by `deployer`.\n /// Note: The returned result has dirty upper 96 bits. Please clean if used in assembly.\n function predictDeterministicAddressERC1967(\n address implementation,\n bytes memory args,\n bytes32 salt,\n address deployer\n ) internal pure returns (address predicted) {\n bytes32 hash = initCodeHashERC1967(implementation, args);\n predicted = predictDeterministicAddress(hash, salt, deployer);\n }\n\n /// @dev Equivalent to `argsOnERC1967(instance, start, 2 ** 256 - 1)`.\n function argsOnERC1967(address instance) internal view returns (bytes memory args) {\n /// @solidity memory-safe-assembly\n assembly {\n args := mload(0x40)\n mstore(args, and(0xffffffffff, sub(extcodesize(instance), 0x3d))) // Store the length.\n extcodecopy(instance, add(args, 0x20), 0x3d, add(mload(args), 0x20))\n mstore(0x40, add(mload(args), add(args, 0x40))) // Allocate memory.\n }\n }\n\n /// @dev Equivalent to `argsOnERC1967(instance, start, 2 ** 256 - 1)`.\n function argsOnERC1967(address instance, uint256 start)\n internal\n view\n returns (bytes memory args)\n {\n /// @solidity memory-safe-assembly\n assembly {\n args := mload(0x40)\n let n := and(0xffffffffff, sub(extcodesize(instance), 0x3d))\n let l := sub(n, and(0xffffff, mul(lt(start, n), start)))\n extcodecopy(instance, args, add(start, 0x1d), add(l, 0x40))\n mstore(args, mul(sub(n, start), lt(start, n))) // Store the length.\n mstore(0x40, add(args, add(0x40, mload(args)))) // Allocate memory.\n }\n }\n\n /// @dev Returns a slice of the immutable arguments on `instance` from `start` to `end`.\n /// `start` and `end` will be clamped to the range `[0, args.length]`.\n /// The `instance` MUST be deployed via the ERC1967 with immutable args functions.\n /// Otherwise, the behavior is undefined.\n /// Out-of-gas reverts if `instance` does not have any code.\n function argsOnERC1967(address instance, uint256 start, uint256 end)\n internal\n view\n returns (bytes memory args)\n {\n /// @solidity memory-safe-assembly\n assembly {\n args := mload(0x40)\n if iszero(lt(end, 0xffff)) { end := 0xffff }\n let d := mul(sub(end, start), lt(start, end))\n extcodecopy(instance, args, add(start, 0x1d), add(d, 0x20))\n if iszero(and(0xff, mload(add(args, d)))) {\n let n := sub(extcodesize(instance), 0x3d)\n returndatacopy(returndatasize(), returndatasize(), shr(40, n))\n d := mul(gt(n, start), sub(d, mul(gt(end, n), sub(end, n))))\n }\n mstore(args, d) // Store the length.\n mstore(add(add(args, 0x20), d), 0) // Zeroize the slot after the bytes.\n mstore(0x40, add(add(args, 0x40), d)) // Allocate memory.\n }\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* ERC1967I PROXY OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n // Note: This proxy has a special code path that activates if `calldatasize() == 1`.\n // This code path skips the delegatecall and directly returns the `implementation` address.\n // The returned implementation is guaranteed to be valid if the keccak256 of the\n // proxy's code is equal to `ERC1967I_CODE_HASH`.\n\n /// @dev Deploys a ERC1967I proxy with `implementation`.\n function deployERC1967I(address implementation) internal returns (address instance) {\n instance = deployERC1967I(0, implementation);\n }\n\n /// @dev Deploys a ERC1967I proxy with `implementation`.\n /// Deposits `value` ETH during deployment.\n function deployERC1967I(uint256 value, address implementation)\n internal\n returns (address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n /**\n * ---------------------------------------------------------------------------------+\n * CREATION (34 bytes) |\n * ---------------------------------------------------------------------------------|\n * Opcode | Mnemonic | Stack | Memory |\n * ---------------------------------------------------------------------------------|\n * 60 runSize | PUSH1 runSize | r | |\n * 3d | RETURNDATASIZE | 0 r | |\n * 81 | DUP2 | r 0 r | |\n * 60 offset | PUSH1 offset | o r 0 r | |\n * 3d | RETURNDATASIZE | 0 o r 0 r | |\n * 39 | CODECOPY | 0 r | [0..runSize): runtime code |\n * 73 impl | PUSH20 impl | impl 0 r | [0..runSize): runtime code |\n * 60 slotPos | PUSH1 slotPos | slotPos impl 0 r | [0..runSize): runtime code |\n * 51 | MLOAD | slot impl 0 r | [0..runSize): runtime code |\n * 55 | SSTORE | 0 r | [0..runSize): runtime code |\n * f3 | RETURN | | [0..runSize): runtime code |\n * ---------------------------------------------------------------------------------|\n * RUNTIME (82 bytes) |\n * ---------------------------------------------------------------------------------|\n * Opcode | Mnemonic | Stack | Memory |\n * ---------------------------------------------------------------------------------|\n * |\n * ::: check calldatasize ::::::::::::::::::::::::::::::::::::::::::::::::::::::::: |\n * 36 | CALLDATASIZE | cds | |\n * 58 | PC | 1 cds | |\n * 14 | EQ | eqs | |\n * 60 0x43 | PUSH1 0x43 | dest eqs | |\n * 57 | JUMPI | | |\n * |\n * ::: copy calldata to memory :::::::::::::::::::::::::::::::::::::::::::::::::::: |\n * 36 | CALLDATASIZE | cds | |\n * 3d | RETURNDATASIZE | 0 cds | |\n * 3d | RETURNDATASIZE | 0 0 cds | |\n * 37 | CALLDATACOPY | | [0..calldatasize): calldata |\n * |\n * ::: delegatecall to implementation ::::::::::::::::::::::::::::::::::::::::::::: |\n * 3d | RETURNDATASIZE | 0 | |\n * 3d | RETURNDATASIZE | 0 0 | |\n * 36 | CALLDATASIZE | cds 0 0 | [0..calldatasize): calldata |\n * 3d | RETURNDATASIZE | 0 cds 0 0 | [0..calldatasize): calldata |\n * 7f slot | PUSH32 slot | s 0 cds 0 0 | [0..calldatasize): calldata |\n * 54 | SLOAD | i 0 cds 0 0 | [0..calldatasize): calldata |\n * 5a | GAS | g i 0 cds 0 0 | [0..calldatasize): calldata |\n * f4 | DELEGATECALL | succ | [0..calldatasize): calldata |\n * |\n * ::: copy returndata to memory :::::::::::::::::::::::::::::::::::::::::::::::::: |\n * 3d | RETURNDATASIZE | rds succ | [0..calldatasize): calldata |\n * 60 0x00 | PUSH1 0x00 | 0 rds succ | [0..calldatasize): calldata |\n * 80 | DUP1 | 0 0 rds succ | [0..calldatasize): calldata |\n * 3e | RETURNDATACOPY | succ | [0..returndatasize): returndata |\n * |\n * ::: branch on delegatecall status :::::::::::::::::::::::::::::::::::::::::::::: |\n * 60 0x3E | PUSH1 0x3E | dest succ | [0..returndatasize): returndata |\n * 57 | JUMPI | | [0..returndatasize): returndata |\n * |\n * ::: delegatecall failed, revert :::::::::::::::::::::::::::::::::::::::::::::::: |\n * 3d | RETURNDATASIZE | rds | [0..returndatasize): returndata |\n * 60 0x00 | PUSH1 0x00 | 0 rds | [0..returndatasize): returndata |\n * fd | REVERT | | [0..returndatasize): returndata |\n * |\n * ::: delegatecall succeeded, return ::::::::::::::::::::::::::::::::::::::::::::: |\n * 5b | JUMPDEST | | [0..returndatasize): returndata |\n * 3d | RETURNDATASIZE | rds | [0..returndatasize): returndata |\n * 60 0x00 | PUSH1 0x00 | 0 rds | [0..returndatasize): returndata |\n * f3 | RETURN | | [0..returndatasize): returndata |\n * |\n * ::: implementation , return :::::::::::::::::::::::::::::::::::::::::::::::::::: |\n * 5b | JUMPDEST | | |\n * 60 0x20 | PUSH1 0x20 | 32 | |\n * 60 0x0F | PUSH1 0x0F | o 32 | |\n * 3d | RETURNDATASIZE | 0 o 32 | |\n * 39 | CODECOPY | | [0..32): implementation slot |\n * 3d | RETURNDATASIZE | 0 | [0..32): implementation slot |\n * 51 | MLOAD | slot | [0..32): implementation slot |\n * 54 | SLOAD | impl | [0..32): implementation slot |\n * 3d | RETURNDATASIZE | 0 impl | [0..32): implementation slot |\n * 52 | MSTORE | | [0..32): implementation address |\n * 59 | MSIZE | 32 | [0..32): implementation address |\n * 3d | RETURNDATASIZE | 0 32 | [0..32): implementation address |\n * f3 | RETURN | | [0..32): implementation address |\n * ---------------------------------------------------------------------------------+\n */\n let m := mload(0x40) // Cache the free memory pointer.\n mstore(0x60, 0x3d6000803e603e573d6000fd5b3d6000f35b6020600f3d393d51543d52593df3)\n mstore(0x40, 0xa13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af4)\n mstore(0x20, 0x600f5155f3365814604357363d3d373d3d363d7f360894)\n mstore(0x09, or(shl(160, 0x60523d8160223d3973), shr(96, shl(96, implementation))))\n instance := create(value, 0x0c, 0x74)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n mstore(0x40, m) // Restore the free memory pointer.\n mstore(0x60, 0) // Restore the zero slot.\n }\n }\n\n /// @dev Deploys a deterministic ERC1967I proxy with `implementation` and `salt`.\n function deployDeterministicERC1967I(address implementation, bytes32 salt)\n internal\n returns (address instance)\n {\n instance = deployDeterministicERC1967I(0, implementation, salt);\n }\n\n /// @dev Deploys a deterministic ERC1967I proxy with `implementation` and `salt`.\n /// Deposits `value` ETH during deployment.\n function deployDeterministicERC1967I(uint256 value, address implementation, bytes32 salt)\n internal\n returns (address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40) // Cache the free memory pointer.\n mstore(0x60, 0x3d6000803e603e573d6000fd5b3d6000f35b6020600f3d393d51543d52593df3)\n mstore(0x40, 0xa13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af4)\n mstore(0x20, 0x600f5155f3365814604357363d3d373d3d363d7f360894)\n mstore(0x09, or(shl(160, 0x60523d8160223d3973), shr(96, shl(96, implementation))))\n instance := create2(value, 0x0c, 0x74, salt)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n mstore(0x40, m) // Restore the free memory pointer.\n mstore(0x60, 0) // Restore the zero slot.\n }\n }\n\n /// @dev Creates a deterministic ERC1967I proxy with `implementation` and `salt`.\n /// Note: This method is intended for use in ERC4337 factories,\n /// which are expected to NOT revert if the proxy is already deployed.\n function createDeterministicERC1967I(address implementation, bytes32 salt)\n internal\n returns (bool alreadyDeployed, address instance)\n {\n return createDeterministicERC1967I(0, implementation, salt);\n }\n\n /// @dev Creates a deterministic ERC1967I proxy with `implementation` and `salt`.\n /// Deposits `value` ETH during deployment.\n /// Note: This method is intended for use in ERC4337 factories,\n /// which are expected to NOT revert if the proxy is already deployed.\n function createDeterministicERC1967I(uint256 value, address implementation, bytes32 salt)\n internal\n returns (bool alreadyDeployed, address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40) // Cache the free memory pointer.\n mstore(0x60, 0x3d6000803e603e573d6000fd5b3d6000f35b6020600f3d393d51543d52593df3)\n mstore(0x40, 0xa13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af4)\n mstore(0x20, 0x600f5155f3365814604357363d3d373d3d363d7f360894)\n mstore(0x09, or(shl(160, 0x60523d8160223d3973), shr(96, shl(96, implementation))))\n // Compute and store the bytecode hash.\n mstore(add(m, 0x35), keccak256(0x0c, 0x74))\n mstore(m, shl(88, address()))\n mstore8(m, 0xff) // Write the prefix.\n mstore(add(m, 0x15), salt)\n instance := keccak256(m, 0x55)\n for {} 1 {} {\n if iszero(extcodesize(instance)) {\n instance := create2(value, 0x0c, 0x74, salt)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n break\n }\n alreadyDeployed := 1\n if iszero(value) { break }\n if iszero(call(gas(), instance, value, codesize(), 0x00, codesize(), 0x00)) {\n mstore(0x00, 0xb12d13eb) // `ETHTransferFailed()`.\n revert(0x1c, 0x04)\n }\n break\n }\n mstore(0x40, m) // Restore the free memory pointer.\n mstore(0x60, 0) // Restore the zero slot.\n }\n }\n\n /// @dev Returns the initialization code of the ERC1967I proxy of `implementation`.\n function initCodeERC1967I(address implementation) internal pure returns (bytes memory c) {\n /// @solidity memory-safe-assembly\n assembly {\n c := mload(0x40)\n mstore(add(c, 0x74), 0x3d6000803e603e573d6000fd5b3d6000f35b6020600f3d393d51543d52593df3)\n mstore(add(c, 0x54), 0xa13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af4)\n mstore(add(c, 0x34), 0x600f5155f3365814604357363d3d373d3d363d7f360894)\n mstore(add(c, 0x1d), implementation)\n mstore(add(c, 0x09), 0x60523d8160223d3973)\n mstore(add(c, 0x94), 0)\n mstore(c, 0x74) // Store the length.\n mstore(0x40, add(c, 0xa0)) // Allocate memory.\n }\n }\n\n /// @dev Returns the initialization code hash of the ERC1967I proxy of `implementation`.\n function initCodeHashERC1967I(address implementation) internal pure returns (bytes32 hash) {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40) // Cache the free memory pointer.\n mstore(0x60, 0x3d6000803e603e573d6000fd5b3d6000f35b6020600f3d393d51543d52593df3)\n mstore(0x40, 0xa13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af4)\n mstore(0x20, 0x600f5155f3365814604357363d3d373d3d363d7f360894)\n mstore(0x09, or(shl(160, 0x60523d8160223d3973), shr(96, shl(96, implementation))))\n hash := keccak256(0x0c, 0x74)\n mstore(0x40, m) // Restore the free memory pointer.\n mstore(0x60, 0) // Restore the zero slot.\n }\n }\n\n /// @dev Returns the address of the ERC1967I proxy of `implementation`, with `salt` by `deployer`.\n /// Note: The returned result has dirty upper 96 bits. Please clean if used in assembly.\n function predictDeterministicAddressERC1967I(\n address implementation,\n bytes32 salt,\n address deployer\n ) internal pure returns (address predicted) {\n bytes32 hash = initCodeHashERC1967I(implementation);\n predicted = predictDeterministicAddress(hash, salt, deployer);\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* ERC1967I PROXY WITH IMMUTABLE ARGS OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Deploys a minimal ERC1967I proxy with `implementation` and `args`.\n function deployERC1967I(address implementation, bytes memory args) internal returns (address) {\n return deployERC1967I(0, implementation, args);\n }\n\n /// @dev Deploys a minimal ERC1967I proxy with `implementation` and `args`.\n /// Deposits `value` ETH during deployment.\n function deployERC1967I(uint256 value, address implementation, bytes memory args)\n internal\n returns (address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n let n := mload(args)\n pop(staticcall(gas(), 4, add(args, 0x20), n, add(m, 0x8b), n))\n\n mstore(add(m, 0x6b), 0x3d6000803e603e573d6000fd5b3d6000f35b6020600f3d393d51543d52593df3)\n mstore(add(m, 0x4b), 0xa13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af4)\n mstore(add(m, 0x2b), 0x600f5155f3365814604357363d3d373d3d363d7f360894)\n mstore(add(m, 0x14), implementation)\n mstore(m, add(0xfe6100523d8160233d3973, shl(56, n)))\n\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x52 = 0xffad`.\n instance := create(value, add(m, add(0x15, lt(n, 0xffae))), add(0x75, n))\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n }\n }\n\n /// @dev Deploys a deterministic ERC1967I proxy with `implementation`, `args`, and `salt`.\n function deployDeterministicERC1967I(address implementation, bytes memory args, bytes32 salt)\n internal\n returns (address instance)\n {\n instance = deployDeterministicERC1967I(0, implementation, args, salt);\n }\n\n /// @dev Deploys a deterministic ERC1967I proxy with `implementation`, `args`, and `salt`.\n /// Deposits `value` ETH during deployment.\n function deployDeterministicERC1967I(\n uint256 value,\n address implementation,\n bytes memory args,\n bytes32 salt\n ) internal returns (address instance) {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n let n := mload(args)\n pop(staticcall(gas(), 4, add(args, 0x20), n, add(m, 0x8b), n))\n\n mstore(add(m, 0x6b), 0x3d6000803e603e573d6000fd5b3d6000f35b6020600f3d393d51543d52593df3)\n mstore(add(m, 0x4b), 0xa13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af4)\n mstore(add(m, 0x2b), 0x600f5155f3365814604357363d3d373d3d363d7f360894)\n mstore(add(m, 0x14), implementation)\n mstore(m, add(0xfe6100523d8160233d3973, shl(56, n)))\n\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x52 = 0xffad`.\n instance := create2(value, add(m, add(0x15, lt(n, 0xffae))), add(0x75, n), salt)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n }\n }\n\n /// @dev Creates a deterministic ERC1967I proxy with `implementation`, `args` and `salt`.\n /// Note: This method is intended for use in ERC4337 factories,\n /// which are expected to NOT revert if the proxy is already deployed.\n function createDeterministicERC1967I(address implementation, bytes memory args, bytes32 salt)\n internal\n returns (bool alreadyDeployed, address instance)\n {\n return createDeterministicERC1967I(0, implementation, args, salt);\n }\n\n /// @dev Creates a deterministic ERC1967I proxy with `implementation`, `args` and `salt`.\n /// Deposits `value` ETH during deployment.\n /// Note: This method is intended for use in ERC4337 factories,\n /// which are expected to NOT revert if the proxy is already deployed.\n function createDeterministicERC1967I(\n uint256 value,\n address implementation,\n bytes memory args,\n bytes32 salt\n ) internal returns (bool alreadyDeployed, address instance) {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n let n := mload(args)\n pop(staticcall(gas(), 4, add(args, 0x20), n, add(m, 0x75), n))\n mstore(add(m, 0x55), 0x3d6000803e603e573d6000fd5b3d6000f35b6020600f3d393d51543d52593df3)\n mstore(add(m, 0x35), 0xa13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af4)\n mstore(add(m, 0x15), 0x5155f3365814604357363d3d373d3d363d7f360894)\n mstore(0x16, 0x600f)\n mstore(0x14, implementation)\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x52 = 0xffad`.\n mstore(gt(n, 0xffad), add(0xfe6100523d8160233d3973, shl(56, n)))\n mstore(m, mload(0x16))\n // Compute and store the bytecode hash.\n mstore8(0x00, 0xff) // Write the prefix.\n mstore(0x35, keccak256(m, add(n, 0x75)))\n mstore(0x01, shl(96, address()))\n mstore(0x15, salt)\n instance := keccak256(0x00, 0x55)\n for {} 1 {} {\n if iszero(extcodesize(instance)) {\n instance := create2(value, m, add(0x75, n), salt)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n break\n }\n alreadyDeployed := 1\n if iszero(value) { break }\n if iszero(call(gas(), instance, value, codesize(), 0x00, codesize(), 0x00)) {\n mstore(0x00, 0xb12d13eb) // `ETHTransferFailed()`.\n revert(0x1c, 0x04)\n }\n break\n }\n mstore(0x35, 0) // Restore the overwritten part of the free memory pointer.\n }\n }\n\n /// @dev Returns the initialization code of the ERC1967I proxy of `implementation` and `args`.\n function initCodeERC1967I(address implementation, bytes memory args)\n internal\n pure\n returns (bytes memory c)\n {\n /// @solidity memory-safe-assembly\n assembly {\n c := mload(0x40)\n let n := mload(args)\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x52 = 0xffad`.\n returndatacopy(returndatasize(), returndatasize(), gt(n, 0xffad))\n for { let i := 0 } lt(i, n) { i := add(i, 0x20) } {\n mstore(add(add(c, 0x95), i), mload(add(add(args, 0x20), i)))\n }\n\n mstore(add(c, 0x75), 0x3d6000803e603e573d6000fd5b3d6000f35b6020600f3d393d51543d52593df3)\n mstore(add(c, 0x55), 0xa13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af4)\n mstore(add(c, 0x35), 0x600f5155f3365814604357363d3d373d3d363d7f360894)\n mstore(add(c, 0x1e), implementation)\n mstore(add(c, 0x0a), add(0x6100523d8160233d3973, shl(56, n)))\n mstore(add(c, add(n, 0x95)), 0)\n mstore(c, add(0x75, n)) // Store the length.\n mstore(0x40, add(c, add(n, 0xb5))) // Allocate memory.\n }\n }\n\n /// @dev Returns the initialization code hash of the ERC1967I proxy of `implementation` and `args.\n function initCodeHashERC1967I(address implementation, bytes memory args)\n internal\n pure\n returns (bytes32 hash)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40) // Cache the free memory pointer.\n let n := mload(args)\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x52 = 0xffad`.\n returndatacopy(returndatasize(), returndatasize(), gt(n, 0xffad))\n\n for { let i := 0 } lt(i, n) { i := add(i, 0x20) } {\n mstore(add(add(m, 0x75), i), mload(add(add(args, 0x20), i)))\n }\n\n mstore(add(m, 0x55), 0x3d6000803e603e573d6000fd5b3d6000f35b6020600f3d393d51543d52593df3)\n mstore(add(m, 0x35), 0xa13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af4)\n mstore(add(m, 0x15), 0x5155f3365814604357363d3d373d3d363d7f360894)\n mstore(0x16, 0x600f)\n mstore(0x14, implementation)\n mstore(0x00, add(0x6100523d8160233d3973, shl(56, n)))\n mstore(m, mload(0x16))\n hash := keccak256(m, add(0x75, n))\n }\n }\n\n /// @dev Returns the address of the ERC1967I proxy of `implementation`, `args` with `salt` by `deployer`.\n /// Note: The returned result has dirty upper 96 bits. Please clean if used in assembly.\n function predictDeterministicAddressERC1967I(\n address implementation,\n bytes memory args,\n bytes32 salt,\n address deployer\n ) internal pure returns (address predicted) {\n bytes32 hash = initCodeHashERC1967I(implementation, args);\n predicted = predictDeterministicAddress(hash, salt, deployer);\n }\n\n /// @dev Equivalent to `argsOnERC1967I(instance, start, 2 ** 256 - 1)`.\n function argsOnERC1967I(address instance) internal view returns (bytes memory args) {\n /// @solidity memory-safe-assembly\n assembly {\n args := mload(0x40)\n mstore(args, and(0xffffffffff, sub(extcodesize(instance), 0x52))) // Store the length.\n extcodecopy(instance, add(args, 0x20), 0x52, add(mload(args), 0x20))\n mstore(0x40, add(mload(args), add(args, 0x40))) // Allocate memory.\n }\n }\n\n /// @dev Equivalent to `argsOnERC1967I(instance, start, 2 ** 256 - 1)`.\n function argsOnERC1967I(address instance, uint256 start)\n internal\n view\n returns (bytes memory args)\n {\n /// @solidity memory-safe-assembly\n assembly {\n args := mload(0x40)\n let n := and(0xffffffffff, sub(extcodesize(instance), 0x52))\n let l := sub(n, and(0xffffff, mul(lt(start, n), start)))\n extcodecopy(instance, args, add(start, 0x32), add(l, 0x40))\n mstore(args, mul(sub(n, start), lt(start, n))) // Store the length.\n mstore(0x40, add(mload(args), add(args, 0x40))) // Allocate memory.\n }\n }\n\n /// @dev Returns a slice of the immutable arguments on `instance` from `start` to `end`.\n /// `start` and `end` will be clamped to the range `[0, args.length]`.\n /// The `instance` MUST be deployed via the ERC1967 with immutable args functions.\n /// Otherwise, the behavior is undefined.\n /// Out-of-gas reverts if `instance` does not have any code.\n function argsOnERC1967I(address instance, uint256 start, uint256 end)\n internal\n view\n returns (bytes memory args)\n {\n /// @solidity memory-safe-assembly\n assembly {\n args := mload(0x40)\n if iszero(lt(end, 0xffff)) { end := 0xffff }\n let d := mul(sub(end, start), lt(start, end))\n extcodecopy(instance, args, add(start, 0x32), add(d, 0x20))\n if iszero(and(0xff, mload(add(args, d)))) {\n let n := sub(extcodesize(instance), 0x52)\n returndatacopy(returndatasize(), returndatasize(), shr(40, n))\n d := mul(gt(n, start), sub(d, mul(gt(end, n), sub(end, n))))\n }\n mstore(args, d) // Store the length.\n mstore(add(add(args, 0x20), d), 0) // Zeroize the slot after the bytes.\n mstore(0x40, add(add(args, 0x40), d)) // Allocate memory.\n }\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* ERC1967 BOOTSTRAP OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n // A bootstrap is a minimal UUPS implementation that allows an ERC1967 proxy\n // pointing to it to be upgraded. The ERC1967 proxy can then be deployed to a\n // deterministic address independent of the implementation:\n // ```\n // address bootstrap = LibClone.erc1967Bootstrap();\n // address instance = LibClone.deployDeterministicERC1967(0, bootstrap, salt);\n // LibClone.bootstrapERC1967(bootstrap, implementation);\n // ```\n\n /// @dev Deploys the ERC1967 bootstrap if it has not been deployed.\n function erc1967Bootstrap() internal returns (address) {\n return erc1967Bootstrap(address(this));\n }\n\n /// @dev Deploys the ERC1967 bootstrap if it has not been deployed.\n function erc1967Bootstrap(address authorizedUpgrader) internal returns (address bootstrap) {\n bytes memory c = initCodeERC1967Bootstrap(authorizedUpgrader);\n bootstrap = predictDeterministicAddress(keccak256(c), bytes32(0), address(this));\n /// @solidity memory-safe-assembly\n assembly {\n if iszero(extcodesize(bootstrap)) {\n if iszero(create2(0, add(c, 0x20), mload(c), 0)) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n }\n }\n }\n\n /// @dev Replaces the implementation at `instance`.\n function bootstrapERC1967(address instance, address implementation) internal {\n /// @solidity memory-safe-assembly\n assembly {\n mstore(0x00, implementation)\n if iszero(call(gas(), instance, 0, 0x0c, 0x14, codesize(), 0x00)) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n }\n }\n\n /// @dev Replaces the implementation at `instance`, and then call it with `data`.\n function bootstrapERC1967AndCall(address instance, address implementation, bytes memory data)\n internal\n {\n /// @solidity memory-safe-assembly\n assembly {\n let n := mload(data)\n mstore(data, implementation)\n if iszero(call(gas(), instance, 0, add(data, 0x0c), add(n, 0x14), codesize(), 0x00)) {\n if iszero(returndatasize()) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n returndatacopy(mload(0x40), 0x00, returndatasize())\n revert(mload(0x40), returndatasize())\n }\n mstore(data, n) // Restore the length of `data`.\n }\n }\n\n /// @dev Returns the implementation address of the ERC1967 bootstrap for this contract.\n function predictDeterministicAddressERC1967Bootstrap() internal view returns (address) {\n return predictDeterministicAddressERC1967Bootstrap(address(this), address(this));\n }\n\n /// @dev Returns the implementation address of the ERC1967 bootstrap for this contract.\n function predictDeterministicAddressERC1967Bootstrap(\n address authorizedUpgrader,\n address deployer\n ) internal pure returns (address) {\n bytes32 hash = initCodeHashERC1967Bootstrap(authorizedUpgrader);\n return predictDeterministicAddress(hash, bytes32(0), deployer);\n }\n\n /// @dev Returns the initialization code of the ERC1967 bootstrap.\n function initCodeERC1967Bootstrap(address authorizedUpgrader)\n internal\n pure\n returns (bytes memory c)\n {\n /// @solidity memory-safe-assembly\n assembly {\n c := mload(0x40)\n mstore(add(c, 0x80), 0x3d3560601c5af46047573d6000383e3d38fd0000000000000000000000000000)\n mstore(add(c, 0x60), 0xa920a3ca505d382bbc55601436116049575b005b363d3d373d3d601436036014)\n mstore(add(c, 0x40), 0x0338573d3560601c7f360894a13ba1a3210667c828492db98dca3e2076cc3735)\n mstore(add(c, 0x20), authorizedUpgrader)\n mstore(add(c, 0x0c), 0x606880600a3d393df3fe3373)\n mstore(c, 0x72)\n mstore(0x40, add(c, 0xa0))\n }\n }\n\n /// @dev Returns the initialization code hash of the ERC1967 bootstrap.\n function initCodeHashERC1967Bootstrap(address authorizedUpgrader)\n internal\n pure\n returns (bytes32)\n {\n return keccak256(initCodeERC1967Bootstrap(authorizedUpgrader));\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* MINIMAL ERC1967 BEACON PROXY OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n // Note: If you use this proxy, you MUST make sure that the beacon is a\n // valid ERC1967 beacon. This means that the beacon must always return a valid\n // address upon a staticcall to `implementation()`, given sufficient gas.\n // For performance, the deployment operations and the proxy assumes that the\n // beacon is always valid and will NOT validate it.\n\n /// @dev Deploys a minimal ERC1967 beacon proxy.\n function deployERC1967BeaconProxy(address beacon) internal returns (address instance) {\n instance = deployERC1967BeaconProxy(0, beacon);\n }\n\n /// @dev Deploys a minimal ERC1967 beacon proxy.\n /// Deposits `value` ETH during deployment.\n function deployERC1967BeaconProxy(uint256 value, address beacon)\n internal\n returns (address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n /**\n * ---------------------------------------------------------------------------------+\n * CREATION (34 bytes) |\n * ---------------------------------------------------------------------------------|\n * Opcode | Mnemonic | Stack | Memory |\n * ---------------------------------------------------------------------------------|\n * 60 runSize | PUSH1 runSize | r | |\n * 3d | RETURNDATASIZE | 0 r | |\n * 81 | DUP2 | r 0 r | |\n * 60 offset | PUSH1 offset | o r 0 r | |\n * 3d | RETURNDATASIZE | 0 o r 0 r | |\n * 39 | CODECOPY | 0 r | [0..runSize): runtime code |\n * 73 beac | PUSH20 beac | beac 0 r | [0..runSize): runtime code |\n * 60 slotPos | PUSH1 slotPos | slotPos beac 0 r | [0..runSize): runtime code |\n * 51 | MLOAD | slot beac 0 r | [0..runSize): runtime code |\n * 55 | SSTORE | 0 r | [0..runSize): runtime code |\n * f3 | RETURN | | [0..runSize): runtime code |\n * ---------------------------------------------------------------------------------|\n * RUNTIME (82 bytes) |\n * ---------------------------------------------------------------------------------|\n * Opcode | Mnemonic | Stack | Memory |\n * ---------------------------------------------------------------------------------|\n * |\n * ::: copy calldata to memory :::::::::::::::::::::::::::::::::::::::::::::::::::: |\n * 36 | CALLDATASIZE | cds | |\n * 3d | RETURNDATASIZE | 0 cds | |\n * 3d | RETURNDATASIZE | 0 0 cds | |\n * 37 | CALLDATACOPY | | [0..calldatasize): calldata |\n * |\n * ::: delegatecall to implementation ::::::::::::::::::::::::::::::::::::::::::::: |\n * 3d | RETURNDATASIZE | 0 | |\n * 3d | RETURNDATASIZE | 0 0 | |\n * 36 | CALLDATASIZE | cds 0 0 | [0..calldatasize): calldata |\n * 3d | RETURNDATASIZE | 0 cds 0 0 | [0..calldatasize): calldata |\n * |\n * ~~~~~~~ beacon staticcall sub procedure ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |\n * 60 0x20 | PUSH1 0x20 | 32 | |\n * 36 | CALLDATASIZE | cds 32 | |\n * 60 0x04 | PUSH1 0x04 | 4 cds 32 | |\n * 36 | CALLDATASIZE | cds 4 cds 32 | |\n * 63 0x5c60da1b | PUSH4 0x5c60da1b | 0x5c60da1b cds 4 cds 32 | |\n * 60 0xe0 | PUSH1 0xe0 | 224 0x5c60da1b cds 4 cds 32 | |\n * 1b | SHL | sel cds 4 cds 32 | |\n * 36 | CALLDATASIZE | cds sel cds 4 cds 32 | |\n * 52 | MSTORE | cds 4 cds 32 | sel |\n * 7f slot | PUSH32 slot | s cds 4 cds 32 | sel |\n * 54 | SLOAD | beac cds 4 cds 32 | sel |\n * 5a | GAS | g beac cds 4 cds 32 | sel |\n * fa | STATICCALL | succ | impl |\n * 50 | POP | | impl |\n * 36 | CALLDATASIZE | cds | impl |\n * 51 | MLOAD | impl | impl |\n * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |\n * 5a | GAS | g impl 0 cds 0 0 | [0..calldatasize): calldata |\n * f4 | DELEGATECALL | succ | [0..calldatasize): calldata |\n * |\n * ::: copy returndata to memory :::::::::::::::::::::::::::::::::::::::::::::::::: |\n * 3d | RETURNDATASIZE | rds succ | [0..calldatasize): calldata |\n * 60 0x00 | PUSH1 0x00 | 0 rds succ | [0..calldatasize): calldata |\n * 80 | DUP1 | 0 0 rds succ | [0..calldatasize): calldata |\n * 3e | RETURNDATACOPY | succ | [0..returndatasize): returndata |\n * |\n * ::: branch on delegatecall status :::::::::::::::::::::::::::::::::::::::::::::: |\n * 60 0x4d | PUSH1 0x4d | dest succ | [0..returndatasize): returndata |\n * 57 | JUMPI | | [0..returndatasize): returndata |\n * |\n * ::: delegatecall failed, revert :::::::::::::::::::::::::::::::::::::::::::::::: |\n * 3d | RETURNDATASIZE | rds | [0..returndatasize): returndata |\n * 60 0x00 | PUSH1 0x00 | 0 rds | [0..returndatasize): returndata |\n * fd | REVERT | | [0..returndatasize): returndata |\n * |\n * ::: delegatecall succeeded, return ::::::::::::::::::::::::::::::::::::::::::::: |\n * 5b | JUMPDEST | | [0..returndatasize): returndata |\n * 3d | RETURNDATASIZE | rds | [0..returndatasize): returndata |\n * 60 0x00 | PUSH1 0x00 | 0 rds | [0..returndatasize): returndata |\n * f3 | RETURN | | [0..returndatasize): returndata |\n * ---------------------------------------------------------------------------------+\n */\n let m := mload(0x40) // Cache the free memory pointer.\n mstore(0x60, 0xb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f3)\n mstore(0x40, 0x1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c)\n mstore(0x20, 0x60195155f3363d3d373d3d363d602036600436635c60da)\n mstore(0x09, or(shl(160, 0x60523d8160223d3973), shr(96, shl(96, beacon))))\n instance := create(value, 0x0c, 0x74)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n mstore(0x40, m) // Restore the free memory pointer.\n mstore(0x60, 0) // Restore the zero slot.\n }\n }\n\n /// @dev Deploys a deterministic minimal ERC1967 beacon proxy with `salt`.\n function deployDeterministicERC1967BeaconProxy(address beacon, bytes32 salt)\n internal\n returns (address instance)\n {\n instance = deployDeterministicERC1967BeaconProxy(0, beacon, salt);\n }\n\n /// @dev Deploys a deterministic minimal ERC1967 beacon proxy with `salt`.\n /// Deposits `value` ETH during deployment.\n function deployDeterministicERC1967BeaconProxy(uint256 value, address beacon, bytes32 salt)\n internal\n returns (address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40) // Cache the free memory pointer.\n mstore(0x60, 0xb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f3)\n mstore(0x40, 0x1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c)\n mstore(0x20, 0x60195155f3363d3d373d3d363d602036600436635c60da)\n mstore(0x09, or(shl(160, 0x60523d8160223d3973), shr(96, shl(96, beacon))))\n instance := create2(value, 0x0c, 0x74, salt)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n mstore(0x40, m) // Restore the free memory pointer.\n mstore(0x60, 0) // Restore the zero slot.\n }\n }\n\n /// @dev Creates a deterministic minimal ERC1967 beacon proxy with `salt`.\n /// Note: This method is intended for use in ERC4337 factories,\n /// which are expected to NOT revert if the proxy is already deployed.\n function createDeterministicERC1967BeaconProxy(address beacon, bytes32 salt)\n internal\n returns (bool alreadyDeployed, address instance)\n {\n return createDeterministicERC1967BeaconProxy(0, beacon, salt);\n }\n\n /// @dev Creates a deterministic minimal ERC1967 beacon proxy with `salt`.\n /// Deposits `value` ETH during deployment.\n /// Note: This method is intended for use in ERC4337 factories,\n /// which are expected to NOT revert if the proxy is already deployed.\n function createDeterministicERC1967BeaconProxy(uint256 value, address beacon, bytes32 salt)\n internal\n returns (bool alreadyDeployed, address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40) // Cache the free memory pointer.\n mstore(0x60, 0xb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f3)\n mstore(0x40, 0x1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c)\n mstore(0x20, 0x60195155f3363d3d373d3d363d602036600436635c60da)\n mstore(0x09, or(shl(160, 0x60523d8160223d3973), shr(96, shl(96, beacon))))\n // Compute and store the bytecode hash.\n mstore(add(m, 0x35), keccak256(0x0c, 0x74))\n mstore(m, shl(88, address()))\n mstore8(m, 0xff) // Write the prefix.\n mstore(add(m, 0x15), salt)\n instance := keccak256(m, 0x55)\n for {} 1 {} {\n if iszero(extcodesize(instance)) {\n instance := create2(value, 0x0c, 0x74, salt)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n break\n }\n alreadyDeployed := 1\n if iszero(value) { break }\n if iszero(call(gas(), instance, value, codesize(), 0x00, codesize(), 0x00)) {\n mstore(0x00, 0xb12d13eb) // `ETHTransferFailed()`.\n revert(0x1c, 0x04)\n }\n break\n }\n mstore(0x40, m) // Restore the free memory pointer.\n mstore(0x60, 0) // Restore the zero slot.\n }\n }\n\n /// @dev Returns the initialization code of the minimal ERC1967 beacon proxy.\n function initCodeERC1967BeaconProxy(address beacon) internal pure returns (bytes memory c) {\n /// @solidity memory-safe-assembly\n assembly {\n c := mload(0x40)\n mstore(add(c, 0x74), 0xb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f3)\n mstore(add(c, 0x54), 0x1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c)\n mstore(add(c, 0x34), 0x60195155f3363d3d373d3d363d602036600436635c60da)\n mstore(add(c, 0x1d), beacon)\n mstore(add(c, 0x09), 0x60523d8160223d3973)\n mstore(add(c, 0x94), 0)\n mstore(c, 0x74) // Store the length.\n mstore(0x40, add(c, 0xa0)) // Allocate memory.\n }\n }\n\n /// @dev Returns the initialization code hash of the minimal ERC1967 beacon proxy.\n function initCodeHashERC1967BeaconProxy(address beacon) internal pure returns (bytes32 hash) {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40) // Cache the free memory pointer.\n mstore(0x60, 0xb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f3)\n mstore(0x40, 0x1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c)\n mstore(0x20, 0x60195155f3363d3d373d3d363d602036600436635c60da)\n mstore(0x09, or(shl(160, 0x60523d8160223d3973), shr(96, shl(96, beacon))))\n hash := keccak256(0x0c, 0x74)\n mstore(0x40, m) // Restore the free memory pointer.\n mstore(0x60, 0) // Restore the zero slot.\n }\n }\n\n /// @dev Returns the address of the ERC1967 beacon proxy, with `salt` by `deployer`.\n /// Note: The returned result has dirty upper 96 bits. Please clean if used in assembly.\n function predictDeterministicAddressERC1967BeaconProxy(\n address beacon,\n bytes32 salt,\n address deployer\n ) internal pure returns (address predicted) {\n bytes32 hash = initCodeHashERC1967BeaconProxy(beacon);\n predicted = predictDeterministicAddress(hash, salt, deployer);\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* ERC1967 BEACON PROXY WITH IMMUTABLE ARGS OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Deploys a minimal ERC1967 beacon proxy with `args`.\n function deployERC1967BeaconProxy(address beacon, bytes memory args)\n internal\n returns (address instance)\n {\n instance = deployERC1967BeaconProxy(0, beacon, args);\n }\n\n /// @dev Deploys a minimal ERC1967 beacon proxy with `args`.\n /// Deposits `value` ETH during deployment.\n function deployERC1967BeaconProxy(uint256 value, address beacon, bytes memory args)\n internal\n returns (address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n let n := mload(args)\n pop(staticcall(gas(), 4, add(args, 0x20), n, add(m, 0x8b), n))\n mstore(add(m, 0x6b), 0xb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f3)\n mstore(add(m, 0x4b), 0x1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c)\n mstore(add(m, 0x2b), 0x60195155f3363d3d373d3d363d602036600436635c60da)\n mstore(add(m, 0x14), beacon)\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x52 = 0xffad`.\n mstore(add(m, gt(n, 0xffad)), add(0xfe6100523d8160233d3973, shl(56, n)))\n instance := create(value, add(m, 0x16), add(n, 0x75))\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n }\n }\n\n /// @dev Deploys a deterministic minimal ERC1967 beacon proxy with `args` and `salt`.\n function deployDeterministicERC1967BeaconProxy(address beacon, bytes memory args, bytes32 salt)\n internal\n returns (address instance)\n {\n instance = deployDeterministicERC1967BeaconProxy(0, beacon, args, salt);\n }\n\n /// @dev Deploys a deterministic minimal ERC1967 beacon proxy with `args` and `salt`.\n /// Deposits `value` ETH during deployment.\n function deployDeterministicERC1967BeaconProxy(\n uint256 value,\n address beacon,\n bytes memory args,\n bytes32 salt\n ) internal returns (address instance) {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n let n := mload(args)\n pop(staticcall(gas(), 4, add(args, 0x20), n, add(m, 0x8b), n))\n mstore(add(m, 0x6b), 0xb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f3)\n mstore(add(m, 0x4b), 0x1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c)\n mstore(add(m, 0x2b), 0x60195155f3363d3d373d3d363d602036600436635c60da)\n mstore(add(m, 0x14), beacon)\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x52 = 0xffad`.\n mstore(add(m, gt(n, 0xffad)), add(0xfe6100523d8160233d3973, shl(56, n)))\n instance := create2(value, add(m, 0x16), add(n, 0x75), salt)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n }\n }\n\n /// @dev Creates a deterministic minimal ERC1967 beacon proxy with `args` and `salt`.\n /// Note: This method is intended for use in ERC4337 factories,\n /// which are expected to NOT revert if the proxy is already deployed.\n function createDeterministicERC1967BeaconProxy(address beacon, bytes memory args, bytes32 salt)\n internal\n returns (bool alreadyDeployed, address instance)\n {\n return createDeterministicERC1967BeaconProxy(0, beacon, args, salt);\n }\n\n /// @dev Creates a deterministic minimal ERC1967 beacon proxy with `args` and `salt`.\n /// Deposits `value` ETH during deployment.\n /// Note: This method is intended for use in ERC4337 factories,\n /// which are expected to NOT revert if the proxy is already deployed.\n function createDeterministicERC1967BeaconProxy(\n uint256 value,\n address beacon,\n bytes memory args,\n bytes32 salt\n ) internal returns (bool alreadyDeployed, address instance) {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n let n := mload(args)\n pop(staticcall(gas(), 4, add(args, 0x20), n, add(m, 0x8b), n))\n mstore(add(m, 0x6b), 0xb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f3)\n mstore(add(m, 0x4b), 0x1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c)\n mstore(add(m, 0x2b), 0x60195155f3363d3d373d3d363d602036600436635c60da)\n mstore(add(m, 0x14), beacon)\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x52 = 0xffad`.\n mstore(add(m, gt(n, 0xffad)), add(0xfe6100523d8160233d3973, shl(56, n)))\n // Compute and store the bytecode hash.\n mstore8(0x00, 0xff) // Write the prefix.\n mstore(0x35, keccak256(add(m, 0x16), add(n, 0x75)))\n mstore(0x01, shl(96, address()))\n mstore(0x15, salt)\n instance := keccak256(0x00, 0x55)\n for {} 1 {} {\n if iszero(extcodesize(instance)) {\n instance := create2(value, add(m, 0x16), add(n, 0x75), salt)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n break\n }\n alreadyDeployed := 1\n if iszero(value) { break }\n if iszero(call(gas(), instance, value, codesize(), 0x00, codesize(), 0x00)) {\n mstore(0x00, 0xb12d13eb) // `ETHTransferFailed()`.\n revert(0x1c, 0x04)\n }\n break\n }\n mstore(0x35, 0) // Restore the overwritten part of the free memory pointer.\n }\n }\n\n /// @dev Returns the initialization code of the minimal ERC1967 beacon proxy.\n function initCodeERC1967BeaconProxy(address beacon, bytes memory args)\n internal\n pure\n returns (bytes memory c)\n {\n /// @solidity memory-safe-assembly\n assembly {\n c := mload(0x40)\n let n := mload(args)\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x52 = 0xffad`.\n returndatacopy(returndatasize(), returndatasize(), gt(n, 0xffad))\n for { let i := 0 } lt(i, n) { i := add(i, 0x20) } {\n mstore(add(add(c, 0x95), i), mload(add(add(args, 0x20), i)))\n }\n mstore(add(c, 0x75), 0xb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f3)\n mstore(add(c, 0x55), 0x1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c)\n mstore(add(c, 0x35), 0x60195155f3363d3d373d3d363d602036600436635c60da)\n mstore(add(c, 0x1e), beacon)\n mstore(add(c, 0x0a), add(0x6100523d8160233d3973, shl(56, n)))\n mstore(c, add(n, 0x75)) // Store the length.\n mstore(add(c, add(n, 0x95)), 0) // Zeroize the slot after the bytes.\n mstore(0x40, add(c, add(n, 0xb5))) // Allocate memory.\n }\n }\n\n /// @dev Returns the initialization code hash of the minimal ERC1967 beacon proxy with `args`.\n function initCodeHashERC1967BeaconProxy(address beacon, bytes memory args)\n internal\n pure\n returns (bytes32 hash)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n let n := mload(args)\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x52 = 0xffad`.\n returndatacopy(returndatasize(), returndatasize(), gt(n, 0xffad))\n for { let i := 0 } lt(i, n) { i := add(i, 0x20) } {\n mstore(add(add(m, 0x8b), i), mload(add(add(args, 0x20), i)))\n }\n mstore(add(m, 0x6b), 0xb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f3)\n mstore(add(m, 0x4b), 0x1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c)\n mstore(add(m, 0x2b), 0x60195155f3363d3d373d3d363d602036600436635c60da)\n mstore(add(m, 0x14), beacon)\n mstore(m, add(0x6100523d8160233d3973, shl(56, n)))\n hash := keccak256(add(m, 0x16), add(n, 0x75))\n }\n }\n\n /// @dev Returns the address of the ERC1967 beacon proxy with `args`, with `salt` by `deployer`.\n /// Note: The returned result has dirty upper 96 bits. Please clean if used in assembly.\n function predictDeterministicAddressERC1967BeaconProxy(\n address beacon,\n bytes memory args,\n bytes32 salt,\n address deployer\n ) internal pure returns (address predicted) {\n bytes32 hash = initCodeHashERC1967BeaconProxy(beacon, args);\n predicted = predictDeterministicAddress(hash, salt, deployer);\n }\n\n /// @dev Equivalent to `argsOnERC1967BeaconProxy(instance, start, 2 ** 256 - 1)`.\n function argsOnERC1967BeaconProxy(address instance) internal view returns (bytes memory args) {\n /// @solidity memory-safe-assembly\n assembly {\n args := mload(0x40)\n mstore(args, and(0xffffffffff, sub(extcodesize(instance), 0x52))) // Store the length.\n extcodecopy(instance, add(args, 0x20), 0x52, add(mload(args), 0x20))\n mstore(0x40, add(mload(args), add(args, 0x40))) // Allocate memory.\n }\n }\n\n /// @dev Equivalent to `argsOnERC1967BeaconProxy(instance, start, 2 ** 256 - 1)`.\n function argsOnERC1967BeaconProxy(address instance, uint256 start)\n internal\n view\n returns (bytes memory args)\n {\n /// @solidity memory-safe-assembly\n assembly {\n args := mload(0x40)\n let n := and(0xffffffffff, sub(extcodesize(instance), 0x52))\n let l := sub(n, and(0xffffff, mul(lt(start, n), start)))\n extcodecopy(instance, args, add(start, 0x32), add(l, 0x40))\n mstore(args, mul(sub(n, start), lt(start, n))) // Store the length.\n mstore(0x40, add(args, add(0x40, mload(args)))) // Allocate memory.\n }\n }\n\n /// @dev Returns a slice of the immutable arguments on `instance` from `start` to `end`.\n /// `start` and `end` will be clamped to the range `[0, args.length]`.\n /// The `instance` MUST be deployed via the ERC1967 beacon proxy with immutable args functions.\n /// Otherwise, the behavior is undefined.\n /// Out-of-gas reverts if `instance` does not have any code.\n function argsOnERC1967BeaconProxy(address instance, uint256 start, uint256 end)\n internal\n view\n returns (bytes memory args)\n {\n /// @solidity memory-safe-assembly\n assembly {\n args := mload(0x40)\n if iszero(lt(end, 0xffff)) { end := 0xffff }\n let d := mul(sub(end, start), lt(start, end))\n extcodecopy(instance, args, add(start, 0x32), add(d, 0x20))\n if iszero(and(0xff, mload(add(args, d)))) {\n let n := sub(extcodesize(instance), 0x52)\n returndatacopy(returndatasize(), returndatasize(), shr(40, n))\n d := mul(gt(n, start), sub(d, mul(gt(end, n), sub(end, n))))\n }\n mstore(args, d) // Store the length.\n mstore(add(add(args, 0x20), d), 0) // Zeroize the slot after the bytes.\n mstore(0x40, add(add(args, 0x40), d)) // Allocate memory.\n }\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* ERC1967I BEACON PROXY OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n // Note: This proxy has a special code path that activates if `calldatasize() == 1`.\n // This code path skips the delegatecall and directly returns the `implementation` address.\n // The returned implementation is guaranteed to be valid if the keccak256 of the\n // proxy's code is equal to `ERC1967_BEACON_PROXY_CODE_HASH`.\n //\n // If you use this proxy, you MUST make sure that the beacon is a\n // valid ERC1967 beacon. This means that the beacon must always return a valid\n // address upon a staticcall to `implementation()`, given sufficient gas.\n // For performance, the deployment operations and the proxy assumes that the\n // beacon is always valid and will NOT validate it.\n\n /// @dev Deploys a ERC1967I beacon proxy.\n function deployERC1967IBeaconProxy(address beacon) internal returns (address instance) {\n instance = deployERC1967IBeaconProxy(0, beacon);\n }\n\n /// @dev Deploys a ERC1967I beacon proxy.\n /// Deposits `value` ETH during deployment.\n function deployERC1967IBeaconProxy(uint256 value, address beacon)\n internal\n returns (address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n /**\n * ---------------------------------------------------------------------------------+\n * CREATION (34 bytes) |\n * ---------------------------------------------------------------------------------|\n * Opcode | Mnemonic | Stack | Memory |\n * ---------------------------------------------------------------------------------|\n * 60 runSize | PUSH1 runSize | r | |\n * 3d | RETURNDATASIZE | 0 r | |\n * 81 | DUP2 | r 0 r | |\n * 60 offset | PUSH1 offset | o r 0 r | |\n * 3d | RETURNDATASIZE | 0 o r 0 r | |\n * 39 | CODECOPY | 0 r | [0..runSize): runtime code |\n * 73 beac | PUSH20 beac | beac 0 r | [0..runSize): runtime code |\n * 60 slotPos | PUSH1 slotPos | slotPos beac 0 r | [0..runSize): runtime code |\n * 51 | MLOAD | slot beac 0 r | [0..runSize): runtime code |\n * 55 | SSTORE | 0 r | [0..runSize): runtime code |\n * f3 | RETURN | | [0..runSize): runtime code |\n * ---------------------------------------------------------------------------------|\n * RUNTIME (87 bytes) |\n * ---------------------------------------------------------------------------------|\n * Opcode | Mnemonic | Stack | Memory |\n * ---------------------------------------------------------------------------------|\n * |\n * ::: copy calldata to memory :::::::::::::::::::::::::::::::::::::::::::::::::::: |\n * 36 | CALLDATASIZE | cds | |\n * 3d | RETURNDATASIZE | 0 cds | |\n * 3d | RETURNDATASIZE | 0 0 cds | |\n * 37 | CALLDATACOPY | | [0..calldatasize): calldata |\n * |\n * ::: delegatecall to implementation ::::::::::::::::::::::::::::::::::::::::::::: |\n * 3d | RETURNDATASIZE | 0 | |\n * 3d | RETURNDATASIZE | 0 0 | |\n * 36 | CALLDATASIZE | cds 0 0 | [0..calldatasize): calldata |\n * 3d | RETURNDATASIZE | 0 cds 0 0 | [0..calldatasize): calldata |\n * |\n * ~~~~~~~ beacon staticcall sub procedure ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |\n * 60 0x20 | PUSH1 0x20 | 32 | |\n * 36 | CALLDATASIZE | cds 32 | |\n * 60 0x04 | PUSH1 0x04 | 4 cds 32 | |\n * 36 | CALLDATASIZE | cds 4 cds 32 | |\n * 63 0x5c60da1b | PUSH4 0x5c60da1b | 0x5c60da1b cds 4 cds 32 | |\n * 60 0xe0 | PUSH1 0xe0 | 224 0x5c60da1b cds 4 cds 32 | |\n * 1b | SHL | sel cds 4 cds 32 | |\n * 36 | CALLDATASIZE | cds sel cds 4 cds 32 | |\n * 52 | MSTORE | cds 4 cds 32 | sel |\n * 7f slot | PUSH32 slot | s cds 4 cds 32 | sel |\n * 54 | SLOAD | beac cds 4 cds 32 | sel |\n * 5a | GAS | g beac cds 4 cds 32 | sel |\n * fa | STATICCALL | succ | impl |\n * ~~~~~~ check calldatasize ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |\n * 36 | CALLDATASIZE | cds succ | |\n * 14 | EQ | | impl |\n * 60 0x52 | PUSH1 0x52 | | impl |\n * 57 | JUMPI | | impl |\n * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |\n * 36 | CALLDATASIZE | cds | impl |\n * 51 | MLOAD | impl | impl |\n * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |\n * 5a | GAS | g impl 0 cds 0 0 | [0..calldatasize): calldata |\n * f4 | DELEGATECALL | succ | [0..calldatasize): calldata |\n * |\n * ::: copy returndata to memory :::::::::::::::::::::::::::::::::::::::::::::::::: |\n * 3d | RETURNDATASIZE | rds succ | [0..calldatasize): calldata |\n * 60 0x00 | PUSH1 0x00 | 0 rds succ | [0..calldatasize): calldata |\n * 60 0x01 | PUSH1 0x01 | 1 0 rds succ | [0..calldatasize): calldata |\n * 3e | RETURNDATACOPY | succ | [1..returndatasize): returndata |\n * |\n * ::: branch on delegatecall status :::::::::::::::::::::::::::::::::::::::::::::: |\n * 60 0x52 | PUSH1 0x52 | dest succ | [1..returndatasize): returndata |\n * 57 | JUMPI | | [1..returndatasize): returndata |\n * |\n * ::: delegatecall failed, revert :::::::::::::::::::::::::::::::::::::::::::::::: |\n * 3d | RETURNDATASIZE | rds | [1..returndatasize): returndata |\n * 60 0x01 | PUSH1 0x01 | 1 rds | [1..returndatasize): returndata |\n * fd | REVERT | | [1..returndatasize): returndata |\n * |\n * ::: delegatecall succeeded, return ::::::::::::::::::::::::::::::::::::::::::::: |\n * 5b | JUMPDEST | | [1..returndatasize): returndata |\n * 3d | RETURNDATASIZE | rds | [1..returndatasize): returndata |\n * 60 0x01 | PUSH1 0x01 | 1 rds | [1..returndatasize): returndata |\n * f3 | RETURN | | [1..returndatasize): returndata |\n * ---------------------------------------------------------------------------------+\n */\n let m := mload(0x40) // Cache the free memory pointer.\n mstore(0x60, 0x3d50545afa361460525736515af43d600060013e6052573d6001fd5b3d6001f3)\n mstore(0x40, 0x527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b3513)\n mstore(0x20, 0x60195155f3363d3d373d3d363d602036600436635c60da1b60e01b36)\n mstore(0x04, or(shl(160, 0x60573d8160223d3973), shr(96, shl(96, beacon))))\n instance := create(value, 0x07, 0x79)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n mstore(0x40, m) // Restore the free memory pointer.\n mstore(0x60, 0) // Restore the zero slot.\n }\n }\n\n /// @dev Deploys a deterministic ERC1967I beacon proxy with `salt`.\n function deployDeterministicERC1967IBeaconProxy(address beacon, bytes32 salt)\n internal\n returns (address instance)\n {\n instance = deployDeterministicERC1967IBeaconProxy(0, beacon, salt);\n }\n\n /// @dev Deploys a deterministic ERC1967I beacon proxy with `salt`.\n /// Deposits `value` ETH during deployment.\n function deployDeterministicERC1967IBeaconProxy(uint256 value, address beacon, bytes32 salt)\n internal\n returns (address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40) // Cache the free memory pointer.\n mstore(0x60, 0x3d50545afa361460525736515af43d600060013e6052573d6001fd5b3d6001f3)\n mstore(0x40, 0x527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b3513)\n mstore(0x20, 0x60195155f3363d3d373d3d363d602036600436635c60da1b60e01b36)\n mstore(0x04, or(shl(160, 0x60573d8160223d3973), shr(96, shl(96, beacon))))\n instance := create2(value, 0x07, 0x79, salt)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n mstore(0x40, m) // Restore the free memory pointer.\n mstore(0x60, 0) // Restore the zero slot.\n }\n }\n\n /// @dev Creates a deterministic ERC1967I beacon proxy with `salt`.\n /// Note: This method is intended for use in ERC4337 factories,\n /// which are expected to NOT revert if the proxy is already deployed.\n function createDeterministicERC1967IBeaconProxy(address beacon, bytes32 salt)\n internal\n returns (bool alreadyDeployed, address instance)\n {\n return createDeterministicERC1967IBeaconProxy(0, beacon, salt);\n }\n\n /// @dev Creates a deterministic ERC1967I beacon proxy with `salt`.\n /// Deposits `value` ETH during deployment.\n /// Note: This method is intended for use in ERC4337 factories,\n /// which are expected to NOT revert if the proxy is already deployed.\n function createDeterministicERC1967IBeaconProxy(uint256 value, address beacon, bytes32 salt)\n internal\n returns (bool alreadyDeployed, address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40) // Cache the free memory pointer.\n mstore(0x60, 0x3d50545afa361460525736515af43d600060013e6052573d6001fd5b3d6001f3)\n mstore(0x40, 0x527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b3513)\n mstore(0x20, 0x60195155f3363d3d373d3d363d602036600436635c60da1b60e01b36)\n mstore(0x04, or(shl(160, 0x60573d8160223d3973), shr(96, shl(96, beacon))))\n // Compute and store the bytecode hash.\n mstore(add(m, 0x35), keccak256(0x07, 0x79))\n mstore(m, shl(88, address()))\n mstore8(m, 0xff) // Write the prefix.\n mstore(add(m, 0x15), salt)\n instance := keccak256(m, 0x55)\n for {} 1 {} {\n if iszero(extcodesize(instance)) {\n instance := create2(value, 0x07, 0x79, salt)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n break\n }\n alreadyDeployed := 1\n if iszero(value) { break }\n if iszero(call(gas(), instance, value, codesize(), 0x00, codesize(), 0x00)) {\n mstore(0x00, 0xb12d13eb) // `ETHTransferFailed()`.\n revert(0x1c, 0x04)\n }\n break\n }\n mstore(0x40, m) // Restore the free memory pointer.\n mstore(0x60, 0) // Restore the zero slot.\n }\n }\n\n /// @dev Returns the initialization code of the ERC1967I beacon proxy.\n function initCodeERC1967IBeaconProxy(address beacon) internal pure returns (bytes memory c) {\n /// @solidity memory-safe-assembly\n assembly {\n c := mload(0x40)\n mstore(add(c, 0x79), 0x3d50545afa361460525736515af43d600060013e6052573d6001fd5b3d6001f3)\n mstore(add(c, 0x59), 0x527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b3513)\n mstore(add(c, 0x39), 0x60195155f3363d3d373d3d363d602036600436635c60da1b60e01b36)\n mstore(add(c, 0x1d), beacon)\n mstore(add(c, 0x09), 0x60573d8160223d3973)\n mstore(add(c, 0x99), 0)\n mstore(c, 0x79) // Store the length.\n mstore(0x40, add(c, 0xa0)) // Allocate memory.\n }\n }\n\n /// @dev Returns the initialization code hash of the ERC1967I beacon proxy.\n function initCodeHashERC1967IBeaconProxy(address beacon) internal pure returns (bytes32 hash) {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40) // Cache the free memory pointer.\n mstore(0x60, 0x3d50545afa361460525736515af43d600060013e6052573d6001fd5b3d6001f3)\n mstore(0x40, 0x527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b3513)\n mstore(0x20, 0x60195155f3363d3d373d3d363d602036600436635c60da1b60e01b36)\n mstore(0x04, or(shl(160, 0x60573d8160223d3973), shr(96, shl(96, beacon))))\n hash := keccak256(0x07, 0x79)\n mstore(0x40, m) // Restore the free memory pointer.\n mstore(0x60, 0) // Restore the zero slot.\n }\n }\n\n /// @dev Returns the address of the ERC1967I beacon proxy, with `salt` by `deployer`.\n /// Note: The returned result has dirty upper 96 bits. Please clean if used in assembly.\n function predictDeterministicAddressERC1967IBeaconProxy(\n address beacon,\n bytes32 salt,\n address deployer\n ) internal pure returns (address predicted) {\n bytes32 hash = initCodeHashERC1967IBeaconProxy(beacon);\n predicted = predictDeterministicAddress(hash, salt, deployer);\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* ERC1967I BEACON PROXY WITH IMMUTABLE ARGS OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Deploys a ERC1967I beacon proxy with `args.\n function deployERC1967IBeaconProxy(address beacon, bytes memory args)\n internal\n returns (address instance)\n {\n instance = deployERC1967IBeaconProxy(0, beacon, args);\n }\n\n /// @dev Deploys a ERC1967I beacon proxy with `args.\n /// Deposits `value` ETH during deployment.\n function deployERC1967IBeaconProxy(uint256 value, address beacon, bytes memory args)\n internal\n returns (address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40) // Cache the free memory pointer.\n let n := mload(args)\n pop(staticcall(gas(), 4, add(args, 0x20), n, add(m, 0x90), n))\n mstore(add(m, 0x70), 0x3d50545afa361460525736515af43d600060013e6052573d6001fd5b3d6001f3)\n mstore(add(m, 0x50), 0x527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b3513)\n mstore(add(m, 0x30), 0x60195155f3363d3d373d3d363d602036600436635c60da1b60e01b36)\n mstore(add(m, 0x14), beacon)\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x57 = 0xffa8`.\n mstore(add(m, gt(n, 0xffa8)), add(0xfe6100573d8160233d3973, shl(56, n)))\n instance := create(value, add(m, 0x16), add(n, 0x7a))\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n }\n }\n\n /// @dev Deploys a deterministic ERC1967I beacon proxy with `args` and `salt`.\n function deployDeterministicERC1967IBeaconProxy(address beacon, bytes memory args, bytes32 salt)\n internal\n returns (address instance)\n {\n instance = deployDeterministicERC1967IBeaconProxy(0, beacon, args, salt);\n }\n\n /// @dev Deploys a deterministic ERC1967I beacon proxy with `args` and `salt`.\n /// Deposits `value` ETH during deployment.\n function deployDeterministicERC1967IBeaconProxy(\n uint256 value,\n address beacon,\n bytes memory args,\n bytes32 salt\n ) internal returns (address instance) {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40) // Cache the free memory pointer.\n let n := mload(args)\n pop(staticcall(gas(), 4, add(args, 0x20), n, add(m, 0x90), n))\n mstore(add(m, 0x70), 0x3d50545afa361460525736515af43d600060013e6052573d6001fd5b3d6001f3)\n mstore(add(m, 0x50), 0x527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b3513)\n mstore(add(m, 0x30), 0x60195155f3363d3d373d3d363d602036600436635c60da1b60e01b36)\n mstore(add(m, 0x14), beacon)\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x57 = 0xffa8`.\n mstore(add(m, gt(n, 0xffa8)), add(0xfe6100573d8160233d3973, shl(56, n)))\n instance := create2(value, add(m, 0x16), add(n, 0x7a), salt)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n }\n }\n\n /// @dev Creates a deterministic ERC1967I beacon proxy with `args` and `salt`.\n /// Note: This method is intended for use in ERC4337 factories,\n /// which are expected to NOT revert if the proxy is already deployed.\n function createDeterministicERC1967IBeaconProxy(address beacon, bytes memory args, bytes32 salt)\n internal\n returns (bool alreadyDeployed, address instance)\n {\n return createDeterministicERC1967IBeaconProxy(0, beacon, args, salt);\n }\n\n /// @dev Creates a deterministic ERC1967I beacon proxy with `args` and `salt`.\n /// Deposits `value` ETH during deployment.\n /// Note: This method is intended for use in ERC4337 factories,\n /// which are expected to NOT revert if the proxy is already deployed.\n function createDeterministicERC1967IBeaconProxy(\n uint256 value,\n address beacon,\n bytes memory args,\n bytes32 salt\n ) internal returns (bool alreadyDeployed, address instance) {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n let n := mload(args)\n pop(staticcall(gas(), 4, add(args, 0x20), n, add(m, 0x90), n))\n mstore(add(m, 0x70), 0x3d50545afa361460525736515af43d600060013e6052573d6001fd5b3d6001f3)\n mstore(add(m, 0x50), 0x527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b3513)\n mstore(add(m, 0x30), 0x60195155f3363d3d373d3d363d602036600436635c60da1b60e01b36)\n mstore(add(m, 0x14), beacon)\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x57 = 0xffa8`.\n mstore(add(m, gt(n, 0xffa8)), add(0xfe6100573d8160233d3973, shl(56, n)))\n // Compute and store the bytecode hash.\n mstore8(0x00, 0xff) // Write the prefix.\n mstore(0x35, keccak256(add(m, 0x16), add(n, 0x7a)))\n mstore(0x01, shl(96, address()))\n mstore(0x15, salt)\n instance := keccak256(0x00, 0x55)\n for {} 1 {} {\n if iszero(extcodesize(instance)) {\n instance := create2(value, add(m, 0x16), add(n, 0x7a), salt)\n if iszero(instance) {\n mstore(0x00, 0x30116425) // `DeploymentFailed()`.\n revert(0x1c, 0x04)\n }\n break\n }\n alreadyDeployed := 1\n if iszero(value) { break }\n if iszero(call(gas(), instance, value, codesize(), 0x00, codesize(), 0x00)) {\n mstore(0x00, 0xb12d13eb) // `ETHTransferFailed()`.\n revert(0x1c, 0x04)\n }\n break\n }\n mstore(0x35, 0) // Restore the overwritten part of the free memory pointer.\n }\n }\n\n /// @dev Returns the initialization code of the ERC1967I beacon proxy with `args`.\n function initCodeERC1967IBeaconProxy(address beacon, bytes memory args)\n internal\n pure\n returns (bytes memory c)\n {\n /// @solidity memory-safe-assembly\n assembly {\n c := mload(0x40)\n let n := mload(args)\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x57 = 0xffa8`.\n returndatacopy(returndatasize(), returndatasize(), gt(n, 0xffa8))\n for { let i := 0 } lt(i, n) { i := add(i, 0x20) } {\n mstore(add(add(c, 0x9a), i), mload(add(add(args, 0x20), i)))\n }\n mstore(add(c, 0x7a), 0x3d50545afa361460525736515af43d600060013e6052573d6001fd5b3d6001f3)\n mstore(add(c, 0x5a), 0x527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b3513)\n mstore(add(c, 0x3a), 0x60195155f3363d3d373d3d363d602036600436635c60da1b60e01b36)\n mstore(add(c, 0x1e), beacon)\n mstore(add(c, 0x0a), add(0x6100573d8160233d3973, shl(56, n)))\n mstore(add(c, add(n, 0x9a)), 0)\n mstore(c, add(n, 0x7a)) // Store the length.\n mstore(0x40, add(c, add(n, 0xba))) // Allocate memory.\n }\n }\n\n /// @dev Returns the initialization code hash of the ERC1967I beacon proxy with `args`.\n function initCodeHashERC1967IBeaconProxy(address beacon, bytes memory args)\n internal\n pure\n returns (bytes32 hash)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let c := mload(0x40) // Cache the free memory pointer.\n let n := mload(args)\n // Do a out-of-gas revert if `n` is greater than `0xffff - 0x57 = 0xffa8`.\n returndatacopy(returndatasize(), returndatasize(), gt(n, 0xffa8))\n for { let i := 0 } lt(i, n) { i := add(i, 0x20) } {\n mstore(add(add(c, 0x90), i), mload(add(add(args, 0x20), i)))\n }\n mstore(add(c, 0x70), 0x3d50545afa361460525736515af43d600060013e6052573d6001fd5b3d6001f3)\n mstore(add(c, 0x50), 0x527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b3513)\n mstore(add(c, 0x30), 0x60195155f3363d3d373d3d363d602036600436635c60da1b60e01b36)\n mstore(add(c, 0x14), beacon)\n mstore(c, add(0x6100573d8160233d3973, shl(56, n)))\n hash := keccak256(add(c, 0x16), add(n, 0x7a))\n }\n }\n\n /// @dev Returns the address of the ERC1967I beacon proxy, with `args` and salt` by `deployer`.\n /// Note: The returned result has dirty upper 96 bits. Please clean if used in assembly.\n function predictDeterministicAddressERC1967IBeaconProxy(\n address beacon,\n bytes memory args,\n bytes32 salt,\n address deployer\n ) internal pure returns (address predicted) {\n bytes32 hash = initCodeHashERC1967IBeaconProxy(beacon, args);\n predicted = predictDeterministicAddress(hash, salt, deployer);\n }\n\n /// @dev Equivalent to `argsOnERC1967IBeaconProxy(instance, start, 2 ** 256 - 1)`.\n function argsOnERC1967IBeaconProxy(address instance)\n internal\n view\n returns (bytes memory args)\n {\n /// @solidity memory-safe-assembly\n assembly {\n args := mload(0x40)\n mstore(args, and(0xffffffffff, sub(extcodesize(instance), 0x57))) // Store the length.\n extcodecopy(instance, add(args, 0x20), 0x57, add(mload(args), 0x20))\n mstore(0x40, add(mload(args), add(args, 0x40))) // Allocate memory.\n }\n }\n\n /// @dev Equivalent to `argsOnERC1967IBeaconProxy(instance, start, 2 ** 256 - 1)`.\n function argsOnERC1967IBeaconProxy(address instance, uint256 start)\n internal\n view\n returns (bytes memory args)\n {\n /// @solidity memory-safe-assembly\n assembly {\n args := mload(0x40)\n let n := and(0xffffffffff, sub(extcodesize(instance), 0x57))\n let l := sub(n, and(0xffffff, mul(lt(start, n), start)))\n extcodecopy(instance, args, add(start, 0x37), add(l, 0x40))\n mstore(args, mul(sub(n, start), lt(start, n))) // Store the length.\n mstore(0x40, add(args, add(0x40, mload(args)))) // Allocate memory.\n }\n }\n\n /// @dev Returns a slice of the immutable arguments on `instance` from `start` to `end`.\n /// `start` and `end` will be clamped to the range `[0, args.length]`.\n /// The `instance` MUST be deployed via the ERC1967I beacon proxy with immutable args functions.\n /// Otherwise, the behavior is undefined.\n /// Out-of-gas reverts if `instance` does not have any code.\n function argsOnERC1967IBeaconProxy(address instance, uint256 start, uint256 end)\n internal\n view\n returns (bytes memory args)\n {\n /// @solidity memory-safe-assembly\n assembly {\n args := mload(0x40)\n if iszero(lt(end, 0xffff)) { end := 0xffff }\n let d := mul(sub(end, start), lt(start, end))\n extcodecopy(instance, args, add(start, 0x37), add(d, 0x20))\n if iszero(and(0xff, mload(add(args, d)))) {\n let n := sub(extcodesize(instance), 0x57)\n returndatacopy(returndatasize(), returndatasize(), shr(40, n))\n d := mul(gt(n, start), sub(d, mul(gt(end, n), sub(end, n))))\n }\n mstore(args, d) // Store the length.\n mstore(add(add(args, 0x20), d), 0) // Zeroize the slot after the bytes.\n mstore(0x40, add(add(args, 0x40), d)) // Allocate memory.\n }\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* OTHER OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Returns `address(0)` if the implementation address cannot be determined.\n function implementationOf(address instance) internal view returns (address result) {\n /// @solidity memory-safe-assembly\n assembly {\n for { extcodecopy(instance, 0x00, 0x00, 0x57) } 1 {} {\n if mload(0x2d) {\n // ERC1967I and ERC1967IBeaconProxy detection.\n if or(\n eq(keccak256(0x00, 0x52), ERC1967I_CODE_HASH),\n eq(keccak256(0x00, 0x57), ERC1967I_BEACON_PROXY_CODE_HASH)\n ) {\n pop(staticcall(gas(), instance, 0x00, 0x01, 0x00, 0x20))\n result := mload(0x0c)\n break\n }\n }\n // 0age clone detection.\n result := mload(0x0b)\n codecopy(0x0b, codesize(), 0x14) // Zeroize the 20 bytes for the address.\n if iszero(xor(keccak256(0x00, 0x2c), CLONE_CODE_HASH)) { break }\n mstore(0x0b, result) // Restore the zeroized memory.\n // CWIA detection.\n result := mload(0x0a)\n codecopy(0x0a, codesize(), 0x14) // Zeroize the 20 bytes for the address.\n if iszero(xor(keccak256(0x00, 0x2d), CWIA_CODE_HASH)) { break }\n mstore(0x0a, result) // Restore the zeroized memory.\n // PUSH0 clone detection.\n result := mload(0x09)\n codecopy(0x09, codesize(), 0x14) // Zeroize the 20 bytes for the address.\n result := shr(xor(keccak256(0x00, 0x2d), PUSH0_CLONE_CODE_HASH), result)\n break\n }\n result := shr(96, result)\n mstore(0x37, 0) // Restore the overwritten part of the free memory pointer.\n }\n }\n\n /// @dev Returns the address when a contract with initialization code hash,\n /// `hash`, is deployed with `salt`, by `deployer`.\n /// Note: The returned result has dirty upper 96 bits. Please clean if used in assembly.\n function predictDeterministicAddress(bytes32 hash, bytes32 salt, address deployer)\n internal\n pure\n returns (address predicted)\n {\n /// @solidity memory-safe-assembly\n assembly {\n // Compute and store the bytecode hash.\n mstore8(0x00, 0xff) // Write the prefix.\n mstore(0x35, hash)\n mstore(0x01, shl(96, deployer))\n mstore(0x15, salt)\n predicted := keccak256(0x00, 0x55)\n mstore(0x35, 0) // Restore the overwritten part of the free memory pointer.\n }\n }\n\n /// @dev Requires that `salt` starts with either the zero address or `by`.\n function checkStartsWith(bytes32 salt, address by) internal pure {\n /// @solidity memory-safe-assembly\n assembly {\n // If the salt does not start with the zero address or `by`.\n if iszero(or(iszero(shr(96, salt)), eq(shr(96, shl(96, by)), shr(96, salt)))) {\n mstore(0x00, 0x0c4549ef) // `SaltDoesNotStartWith()`.\n revert(0x1c, 0x04)\n }\n }\n }\n\n /// @dev Returns the `bytes32` at `offset` in `args`, without any bounds checks.\n /// To load an address, you can use `address(bytes20(argLoad(args, offset)))`.\n function argLoad(bytes memory args, uint256 offset) internal pure returns (bytes32 result) {\n /// @solidity memory-safe-assembly\n assembly {\n result := mload(add(add(args, 0x20), offset))\n }\n }\n}\n" + }, + "solady/utils/LibString.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.4;\n\nimport {LibBytes} from \"./LibBytes.sol\";\n\n/// @notice Library for converting numbers into strings and other string operations.\n/// @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/LibString.sol)\n/// @author Modified from Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/LibString.sol)\n///\n/// @dev Note:\n/// For performance and bytecode compactness, most of the string operations are restricted to\n/// byte strings (7-bit ASCII), except where otherwise specified.\n/// Usage of byte string operations on charsets with runes spanning two or more bytes\n/// can lead to undefined behavior.\nlibrary LibString {\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* STRUCTS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Goated string storage struct that totally MOGs, no cap, fr.\n /// Uses less gas and bytecode than Solidity's native string storage. It's meta af.\n /// Packs length with the first 31 bytes if <255 bytes, so it’s mad tight.\n struct StringStorage {\n bytes32 _spacer;\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* CUSTOM ERRORS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev The length of the output is too small to contain all the hex digits.\n error HexLengthInsufficient();\n\n /// @dev The length of the string is more than 32 bytes.\n error TooBigForSmallString();\n\n /// @dev The input string must be a 7-bit ASCII.\n error StringNot7BitASCII();\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* CONSTANTS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev The constant returned when the `search` is not found in the string.\n uint256 internal constant NOT_FOUND = type(uint256).max;\n\n /// @dev Lookup for '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.\n uint128 internal constant ALPHANUMERIC_7_BIT_ASCII = 0x7fffffe07fffffe03ff000000000000;\n\n /// @dev Lookup for 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.\n uint128 internal constant LETTERS_7_BIT_ASCII = 0x7fffffe07fffffe0000000000000000;\n\n /// @dev Lookup for 'abcdefghijklmnopqrstuvwxyz'.\n uint128 internal constant LOWERCASE_7_BIT_ASCII = 0x7fffffe000000000000000000000000;\n\n /// @dev Lookup for 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.\n uint128 internal constant UPPERCASE_7_BIT_ASCII = 0x7fffffe0000000000000000;\n\n /// @dev Lookup for '0123456789'.\n uint128 internal constant DIGITS_7_BIT_ASCII = 0x3ff000000000000;\n\n /// @dev Lookup for '0123456789abcdefABCDEF'.\n uint128 internal constant HEXDIGITS_7_BIT_ASCII = 0x7e0000007e03ff000000000000;\n\n /// @dev Lookup for '01234567'.\n uint128 internal constant OCTDIGITS_7_BIT_ASCII = 0xff000000000000;\n\n /// @dev Lookup for '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!\"#$%&\\'()*+,-./:;<=>?@[\\\\]^_`{|}~ \\t\\n\\r\\x0b\\x0c'.\n uint128 internal constant PRINTABLE_7_BIT_ASCII = 0x7fffffffffffffffffffffff00003e00;\n\n /// @dev Lookup for '!\"#$%&\\'()*+,-./:;<=>?@[\\\\]^_`{|}~'.\n uint128 internal constant PUNCTUATION_7_BIT_ASCII = 0x78000001f8000001fc00fffe00000000;\n\n /// @dev Lookup for ' \\t\\n\\r\\x0b\\x0c'.\n uint128 internal constant WHITESPACE_7_BIT_ASCII = 0x100003e00;\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* STRING STORAGE OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Sets the value of the string storage `$` to `s`.\n function set(StringStorage storage $, string memory s) internal {\n LibBytes.set(bytesStorage($), bytes(s));\n }\n\n /// @dev Sets the value of the string storage `$` to `s`.\n function setCalldata(StringStorage storage $, string calldata s) internal {\n LibBytes.setCalldata(bytesStorage($), bytes(s));\n }\n\n /// @dev Sets the value of the string storage `$` to the empty string.\n function clear(StringStorage storage $) internal {\n delete $._spacer;\n }\n\n /// @dev Returns whether the value stored is `$` is the empty string \"\".\n function isEmpty(StringStorage storage $) internal view returns (bool) {\n return uint256($._spacer) & 0xff == uint256(0);\n }\n\n /// @dev Returns the length of the value stored in `$`.\n function length(StringStorage storage $) internal view returns (uint256) {\n return LibBytes.length(bytesStorage($));\n }\n\n /// @dev Returns the value stored in `$`.\n function get(StringStorage storage $) internal view returns (string memory) {\n return string(LibBytes.get(bytesStorage($)));\n }\n\n /// @dev Returns the uint8 at index `i`. If out-of-bounds, returns 0.\n function uint8At(StringStorage storage $, uint256 i) internal view returns (uint8) {\n return LibBytes.uint8At(bytesStorage($), i);\n }\n\n /// @dev Helper to cast `$` to a `BytesStorage`.\n function bytesStorage(StringStorage storage $)\n internal\n pure\n returns (LibBytes.BytesStorage storage casted)\n {\n /// @solidity memory-safe-assembly\n assembly {\n casted.slot := $.slot\n }\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* DECIMAL OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Returns the base 10 decimal representation of `value`.\n function toString(uint256 value) internal pure returns (string memory result) {\n /// @solidity memory-safe-assembly\n assembly {\n // The maximum value of a uint256 contains 78 digits (1 byte per digit), but\n // we allocate 0xa0 bytes to keep the free memory pointer 32-byte word aligned.\n // We will need 1 word for the trailing zeros padding, 1 word for the length,\n // and 3 words for a maximum of 78 digits.\n result := add(mload(0x40), 0x80)\n mstore(0x40, add(result, 0x20)) // Allocate memory.\n mstore(result, 0) // Zeroize the slot after the string.\n\n let end := result // Cache the end of the memory to calculate the length later.\n let w := not(0) // Tsk.\n // We write the string from rightmost digit to leftmost digit.\n // The following is essentially a do-while loop that also handles the zero case.\n for { let temp := value } 1 {} {\n result := add(result, w) // `sub(result, 1)`.\n // Store the character to the pointer.\n // The ASCII index of the '0' character is 48.\n mstore8(result, add(48, mod(temp, 10)))\n temp := div(temp, 10) // Keep dividing `temp` until zero.\n if iszero(temp) { break }\n }\n let n := sub(end, result)\n result := sub(result, 0x20) // Move the pointer 32 bytes back to make room for the length.\n mstore(result, n) // Store the length.\n }\n }\n\n /// @dev Returns the base 10 decimal representation of `value`.\n function toString(int256 value) internal pure returns (string memory result) {\n if (value >= 0) return toString(uint256(value));\n unchecked {\n result = toString(~uint256(value) + 1);\n }\n /// @solidity memory-safe-assembly\n assembly {\n // We still have some spare memory space on the left,\n // as we have allocated 3 words (96 bytes) for up to 78 digits.\n let n := mload(result) // Load the string length.\n mstore(result, 0x2d) // Store the '-' character.\n result := sub(result, 1) // Move back the string pointer by a byte.\n mstore(result, add(n, 1)) // Update the string length.\n }\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* HEXADECIMAL OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Returns the hexadecimal representation of `value`,\n /// left-padded to an input length of `byteCount` bytes.\n /// The output is prefixed with \"0x\" encoded using 2 hexadecimal digits per byte,\n /// giving a total length of `byteCount * 2 + 2` bytes.\n /// Reverts if `byteCount` is too small for the output to contain all the digits.\n function toHexString(uint256 value, uint256 byteCount)\n internal\n pure\n returns (string memory result)\n {\n result = toHexStringNoPrefix(value, byteCount);\n /// @solidity memory-safe-assembly\n assembly {\n let n := add(mload(result), 2) // Compute the length.\n mstore(result, 0x3078) // Store the \"0x\" prefix.\n result := sub(result, 2) // Move the pointer.\n mstore(result, n) // Store the length.\n }\n }\n\n /// @dev Returns the hexadecimal representation of `value`,\n /// left-padded to an input length of `byteCount` bytes.\n /// The output is not prefixed with \"0x\" and is encoded using 2 hexadecimal digits per byte,\n /// giving a total length of `byteCount * 2` bytes.\n /// Reverts if `byteCount` is too small for the output to contain all the digits.\n function toHexStringNoPrefix(uint256 value, uint256 byteCount)\n internal\n pure\n returns (string memory result)\n {\n /// @solidity memory-safe-assembly\n assembly {\n // We need 0x20 bytes for the trailing zeros padding, `byteCount * 2` bytes\n // for the digits, 0x02 bytes for the prefix, and 0x20 bytes for the length.\n // We add 0x20 to the total and round down to a multiple of 0x20.\n // (0x20 + 0x20 + 0x02 + 0x20) = 0x62.\n result := add(mload(0x40), and(add(shl(1, byteCount), 0x42), not(0x1f)))\n mstore(0x40, add(result, 0x20)) // Allocate memory.\n mstore(result, 0) // Zeroize the slot after the string.\n\n let end := result // Cache the end to calculate the length later.\n // Store \"0123456789abcdef\" in scratch space.\n mstore(0x0f, 0x30313233343536373839616263646566)\n\n let start := sub(result, add(byteCount, byteCount))\n let w := not(1) // Tsk.\n let temp := value\n // We write the string from rightmost digit to leftmost digit.\n // The following is essentially a do-while loop that also handles the zero case.\n for {} 1 {} {\n result := add(result, w) // `sub(result, 2)`.\n mstore8(add(result, 1), mload(and(temp, 15)))\n mstore8(result, mload(and(shr(4, temp), 15)))\n temp := shr(8, temp)\n if iszero(xor(result, start)) { break }\n }\n if temp {\n mstore(0x00, 0x2194895a) // `HexLengthInsufficient()`.\n revert(0x1c, 0x04)\n }\n let n := sub(end, result)\n result := sub(result, 0x20)\n mstore(result, n) // Store the length.\n }\n }\n\n /// @dev Returns the hexadecimal representation of `value`.\n /// The output is prefixed with \"0x\" and encoded using 2 hexadecimal digits per byte.\n /// As address are 20 bytes long, the output will left-padded to have\n /// a length of `20 * 2 + 2` bytes.\n function toHexString(uint256 value) internal pure returns (string memory result) {\n result = toHexStringNoPrefix(value);\n /// @solidity memory-safe-assembly\n assembly {\n let n := add(mload(result), 2) // Compute the length.\n mstore(result, 0x3078) // Store the \"0x\" prefix.\n result := sub(result, 2) // Move the pointer.\n mstore(result, n) // Store the length.\n }\n }\n\n /// @dev Returns the hexadecimal representation of `value`.\n /// The output is prefixed with \"0x\".\n /// The output excludes leading \"0\" from the `toHexString` output.\n /// `0x00: \"0x0\", 0x01: \"0x1\", 0x12: \"0x12\", 0x123: \"0x123\"`.\n function toMinimalHexString(uint256 value) internal pure returns (string memory result) {\n result = toHexStringNoPrefix(value);\n /// @solidity memory-safe-assembly\n assembly {\n let o := eq(byte(0, mload(add(result, 0x20))), 0x30) // Whether leading zero is present.\n let n := add(mload(result), 2) // Compute the length.\n mstore(add(result, o), 0x3078) // Store the \"0x\" prefix, accounting for leading zero.\n result := sub(add(result, o), 2) // Move the pointer, accounting for leading zero.\n mstore(result, sub(n, o)) // Store the length, accounting for leading zero.\n }\n }\n\n /// @dev Returns the hexadecimal representation of `value`.\n /// The output excludes leading \"0\" from the `toHexStringNoPrefix` output.\n /// `0x00: \"0\", 0x01: \"1\", 0x12: \"12\", 0x123: \"123\"`.\n function toMinimalHexStringNoPrefix(uint256 value)\n internal\n pure\n returns (string memory result)\n {\n result = toHexStringNoPrefix(value);\n /// @solidity memory-safe-assembly\n assembly {\n let o := eq(byte(0, mload(add(result, 0x20))), 0x30) // Whether leading zero is present.\n let n := mload(result) // Get the length.\n result := add(result, o) // Move the pointer, accounting for leading zero.\n mstore(result, sub(n, o)) // Store the length, accounting for leading zero.\n }\n }\n\n /// @dev Returns the hexadecimal representation of `value`.\n /// The output is encoded using 2 hexadecimal digits per byte.\n /// As address are 20 bytes long, the output will left-padded to have\n /// a length of `20 * 2` bytes.\n function toHexStringNoPrefix(uint256 value) internal pure returns (string memory result) {\n /// @solidity memory-safe-assembly\n assembly {\n // We need 0x20 bytes for the trailing zeros padding, 0x20 bytes for the length,\n // 0x02 bytes for the prefix, and 0x40 bytes for the digits.\n // The next multiple of 0x20 above (0x20 + 0x20 + 0x02 + 0x40) is 0xa0.\n result := add(mload(0x40), 0x80)\n mstore(0x40, add(result, 0x20)) // Allocate memory.\n mstore(result, 0) // Zeroize the slot after the string.\n\n let end := result // Cache the end to calculate the length later.\n mstore(0x0f, 0x30313233343536373839616263646566) // Store the \"0123456789abcdef\" lookup.\n\n let w := not(1) // Tsk.\n // We write the string from rightmost digit to leftmost digit.\n // The following is essentially a do-while loop that also handles the zero case.\n for { let temp := value } 1 {} {\n result := add(result, w) // `sub(result, 2)`.\n mstore8(add(result, 1), mload(and(temp, 15)))\n mstore8(result, mload(and(shr(4, temp), 15)))\n temp := shr(8, temp)\n if iszero(temp) { break }\n }\n let n := sub(end, result)\n result := sub(result, 0x20)\n mstore(result, n) // Store the length.\n }\n }\n\n /// @dev Returns the hexadecimal representation of `value`.\n /// The output is prefixed with \"0x\", encoded using 2 hexadecimal digits per byte,\n /// and the alphabets are capitalized conditionally according to\n /// https://eips.ethereum.org/EIPS/eip-55\n function toHexStringChecksummed(address value) internal pure returns (string memory result) {\n result = toHexString(value);\n /// @solidity memory-safe-assembly\n assembly {\n let mask := shl(6, div(not(0), 255)) // `0b010000000100000000 ...`\n let o := add(result, 0x22)\n let hashed := and(keccak256(o, 40), mul(34, mask)) // `0b10001000 ... `\n let t := shl(240, 136) // `0b10001000 << 240`\n for { let i := 0 } 1 {} {\n mstore(add(i, i), mul(t, byte(i, hashed)))\n i := add(i, 1)\n if eq(i, 20) { break }\n }\n mstore(o, xor(mload(o), shr(1, and(mload(0x00), and(mload(o), mask)))))\n o := add(o, 0x20)\n mstore(o, xor(mload(o), shr(1, and(mload(0x20), and(mload(o), mask)))))\n }\n }\n\n /// @dev Returns the hexadecimal representation of `value`.\n /// The output is prefixed with \"0x\" and encoded using 2 hexadecimal digits per byte.\n function toHexString(address value) internal pure returns (string memory result) {\n result = toHexStringNoPrefix(value);\n /// @solidity memory-safe-assembly\n assembly {\n let n := add(mload(result), 2) // Compute the length.\n mstore(result, 0x3078) // Store the \"0x\" prefix.\n result := sub(result, 2) // Move the pointer.\n mstore(result, n) // Store the length.\n }\n }\n\n /// @dev Returns the hexadecimal representation of `value`.\n /// The output is encoded using 2 hexadecimal digits per byte.\n function toHexStringNoPrefix(address value) internal pure returns (string memory result) {\n /// @solidity memory-safe-assembly\n assembly {\n result := mload(0x40)\n // Allocate memory.\n // We need 0x20 bytes for the trailing zeros padding, 0x20 bytes for the length,\n // 0x02 bytes for the prefix, and 0x28 bytes for the digits.\n // The next multiple of 0x20 above (0x20 + 0x20 + 0x02 + 0x28) is 0x80.\n mstore(0x40, add(result, 0x80))\n mstore(0x0f, 0x30313233343536373839616263646566) // Store the \"0123456789abcdef\" lookup.\n\n result := add(result, 2)\n mstore(result, 40) // Store the length.\n let o := add(result, 0x20)\n mstore(add(o, 40), 0) // Zeroize the slot after the string.\n value := shl(96, value)\n // We write the string from rightmost digit to leftmost digit.\n // The following is essentially a do-while loop that also handles the zero case.\n for { let i := 0 } 1 {} {\n let p := add(o, add(i, i))\n let temp := byte(i, value)\n mstore8(add(p, 1), mload(and(temp, 15)))\n mstore8(p, mload(shr(4, temp)))\n i := add(i, 1)\n if eq(i, 20) { break }\n }\n }\n }\n\n /// @dev Returns the hex encoded string from the raw bytes.\n /// The output is encoded using 2 hexadecimal digits per byte.\n function toHexString(bytes memory raw) internal pure returns (string memory result) {\n result = toHexStringNoPrefix(raw);\n /// @solidity memory-safe-assembly\n assembly {\n let n := add(mload(result), 2) // Compute the length.\n mstore(result, 0x3078) // Store the \"0x\" prefix.\n result := sub(result, 2) // Move the pointer.\n mstore(result, n) // Store the length.\n }\n }\n\n /// @dev Returns the hex encoded string from the raw bytes.\n /// The output is encoded using 2 hexadecimal digits per byte.\n function toHexStringNoPrefix(bytes memory raw) internal pure returns (string memory result) {\n /// @solidity memory-safe-assembly\n assembly {\n let n := mload(raw)\n result := add(mload(0x40), 2) // Skip 2 bytes for the optional prefix.\n mstore(result, add(n, n)) // Store the length of the output.\n\n mstore(0x0f, 0x30313233343536373839616263646566) // Store the \"0123456789abcdef\" lookup.\n let o := add(result, 0x20)\n let end := add(raw, n)\n for {} iszero(eq(raw, end)) {} {\n raw := add(raw, 1)\n mstore8(add(o, 1), mload(and(mload(raw), 15)))\n mstore8(o, mload(and(shr(4, mload(raw)), 15)))\n o := add(o, 2)\n }\n mstore(o, 0) // Zeroize the slot after the string.\n mstore(0x40, add(o, 0x20)) // Allocate memory.\n }\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* RUNE STRING OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Returns the number of UTF characters in the string.\n function runeCount(string memory s) internal pure returns (uint256 result) {\n /// @solidity memory-safe-assembly\n assembly {\n if mload(s) {\n mstore(0x00, div(not(0), 255))\n mstore(0x20, 0x0202020202020202020202020202020202020202020202020303030304040506)\n let o := add(s, 0x20)\n let end := add(o, mload(s))\n for { result := 1 } 1 { result := add(result, 1) } {\n o := add(o, byte(0, mload(shr(250, mload(o)))))\n if iszero(lt(o, end)) { break }\n }\n }\n }\n }\n\n /// @dev Returns if this string is a 7-bit ASCII string.\n /// (i.e. all characters codes are in [0..127])\n function is7BitASCII(string memory s) internal pure returns (bool result) {\n /// @solidity memory-safe-assembly\n assembly {\n result := 1\n let mask := shl(7, div(not(0), 255))\n let n := mload(s)\n if n {\n let o := add(s, 0x20)\n let end := add(o, n)\n let last := mload(end)\n mstore(end, 0)\n for {} 1 {} {\n if and(mask, mload(o)) {\n result := 0\n break\n }\n o := add(o, 0x20)\n if iszero(lt(o, end)) { break }\n }\n mstore(end, last)\n }\n }\n }\n\n /// @dev Returns if this string is a 7-bit ASCII string,\n /// AND all characters are in the `allowed` lookup.\n /// Note: If `s` is empty, returns true regardless of `allowed`.\n function is7BitASCII(string memory s, uint128 allowed) internal pure returns (bool result) {\n /// @solidity memory-safe-assembly\n assembly {\n result := 1\n if mload(s) {\n let allowed_ := shr(128, shl(128, allowed))\n let o := add(s, 0x20)\n for { let end := add(o, mload(s)) } 1 {} {\n result := and(result, shr(byte(0, mload(o)), allowed_))\n o := add(o, 1)\n if iszero(and(result, lt(o, end))) { break }\n }\n }\n }\n }\n\n /// @dev Converts the bytes in the 7-bit ASCII string `s` to\n /// an allowed lookup for use in `is7BitASCII(s, allowed)`.\n /// To save runtime gas, you can cache the result in an immutable variable.\n function to7BitASCIIAllowedLookup(string memory s) internal pure returns (uint128 result) {\n /// @solidity memory-safe-assembly\n assembly {\n if mload(s) {\n let o := add(s, 0x20)\n for { let end := add(o, mload(s)) } 1 {} {\n result := or(result, shl(byte(0, mload(o)), 1))\n o := add(o, 1)\n if iszero(lt(o, end)) { break }\n }\n if shr(128, result) {\n mstore(0x00, 0xc9807e0d) // `StringNot7BitASCII()`.\n revert(0x1c, 0x04)\n }\n }\n }\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* BYTE STRING OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n // For performance and bytecode compactness, byte string operations are restricted\n // to 7-bit ASCII strings. All offsets are byte offsets, not UTF character offsets.\n // Usage of byte string operations on charsets with runes spanning two or more bytes\n // can lead to undefined behavior.\n\n /// @dev Returns `subject` all occurrences of `needle` replaced with `replacement`.\n function replace(string memory subject, string memory needle, string memory replacement)\n internal\n pure\n returns (string memory)\n {\n return string(LibBytes.replace(bytes(subject), bytes(needle), bytes(replacement)));\n }\n\n /// @dev Returns the byte index of the first location of `needle` in `subject`,\n /// needleing from left to right, starting from `from`.\n /// Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `needle` is not found.\n function indexOf(string memory subject, string memory needle, uint256 from)\n internal\n pure\n returns (uint256)\n {\n return LibBytes.indexOf(bytes(subject), bytes(needle), from);\n }\n\n /// @dev Returns the byte index of the first location of `needle` in `subject`,\n /// needleing from left to right.\n /// Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `needle` is not found.\n function indexOf(string memory subject, string memory needle) internal pure returns (uint256) {\n return LibBytes.indexOf(bytes(subject), bytes(needle), 0);\n }\n\n /// @dev Returns the byte index of the first location of `needle` in `subject`,\n /// needleing from right to left, starting from `from`.\n /// Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `needle` is not found.\n function lastIndexOf(string memory subject, string memory needle, uint256 from)\n internal\n pure\n returns (uint256)\n {\n return LibBytes.lastIndexOf(bytes(subject), bytes(needle), from);\n }\n\n /// @dev Returns the byte index of the first location of `needle` in `subject`,\n /// needleing from right to left.\n /// Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `needle` is not found.\n function lastIndexOf(string memory subject, string memory needle)\n internal\n pure\n returns (uint256)\n {\n return LibBytes.lastIndexOf(bytes(subject), bytes(needle), type(uint256).max);\n }\n\n /// @dev Returns true if `needle` is found in `subject`, false otherwise.\n function contains(string memory subject, string memory needle) internal pure returns (bool) {\n return LibBytes.contains(bytes(subject), bytes(needle));\n }\n\n /// @dev Returns whether `subject` starts with `needle`.\n function startsWith(string memory subject, string memory needle) internal pure returns (bool) {\n return LibBytes.startsWith(bytes(subject), bytes(needle));\n }\n\n /// @dev Returns whether `subject` ends with `needle`.\n function endsWith(string memory subject, string memory needle) internal pure returns (bool) {\n return LibBytes.endsWith(bytes(subject), bytes(needle));\n }\n\n /// @dev Returns `subject` repeated `times`.\n function repeat(string memory subject, uint256 times) internal pure returns (string memory) {\n return string(LibBytes.repeat(bytes(subject), times));\n }\n\n /// @dev Returns a copy of `subject` sliced from `start` to `end` (exclusive).\n /// `start` and `end` are byte offsets.\n function slice(string memory subject, uint256 start, uint256 end)\n internal\n pure\n returns (string memory)\n {\n return string(LibBytes.slice(bytes(subject), start, end));\n }\n\n /// @dev Returns a copy of `subject` sliced from `start` to the end of the string.\n /// `start` is a byte offset.\n function slice(string memory subject, uint256 start) internal pure returns (string memory) {\n return string(LibBytes.slice(bytes(subject), start, type(uint256).max));\n }\n\n /// @dev Returns all the indices of `needle` in `subject`.\n /// The indices are byte offsets.\n function indicesOf(string memory subject, string memory needle)\n internal\n pure\n returns (uint256[] memory)\n {\n return LibBytes.indicesOf(bytes(subject), bytes(needle));\n }\n\n /// @dev Returns an arrays of strings based on the `delimiter` inside of the `subject` string.\n function split(string memory subject, string memory delimiter)\n internal\n pure\n returns (string[] memory result)\n {\n bytes[] memory a = LibBytes.split(bytes(subject), bytes(delimiter));\n /// @solidity memory-safe-assembly\n assembly {\n result := a\n }\n }\n\n /// @dev Returns a concatenated string of `a` and `b`.\n /// Cheaper than `string.concat()` and does not de-align the free memory pointer.\n function concat(string memory a, string memory b) internal pure returns (string memory) {\n return string(LibBytes.concat(bytes(a), bytes(b)));\n }\n\n /// @dev Returns a copy of the string in either lowercase or UPPERCASE.\n /// WARNING! This function is only compatible with 7-bit ASCII strings.\n function toCase(string memory subject, bool toUpper)\n internal\n pure\n returns (string memory result)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let n := mload(subject)\n if n {\n result := mload(0x40)\n let o := add(result, 0x20)\n let d := sub(subject, result)\n let flags := shl(add(70, shl(5, toUpper)), 0x3ffffff)\n for { let end := add(o, n) } 1 {} {\n let b := byte(0, mload(add(d, o)))\n mstore8(o, xor(and(shr(b, flags), 0x20), b))\n o := add(o, 1)\n if eq(o, end) { break }\n }\n mstore(result, n) // Store the length.\n mstore(o, 0) // Zeroize the slot after the string.\n mstore(0x40, add(o, 0x20)) // Allocate memory.\n }\n }\n }\n\n /// @dev Returns a string from a small bytes32 string.\n /// `s` must be null-terminated, or behavior will be undefined.\n function fromSmallString(bytes32 s) internal pure returns (string memory result) {\n /// @solidity memory-safe-assembly\n assembly {\n result := mload(0x40)\n let n := 0\n for {} byte(n, s) { n := add(n, 1) } {} // Scan for '\\0'.\n mstore(result, n) // Store the length.\n let o := add(result, 0x20)\n mstore(o, s) // Store the bytes of the string.\n mstore(add(o, n), 0) // Zeroize the slot after the string.\n mstore(0x40, add(result, 0x40)) // Allocate memory.\n }\n }\n\n /// @dev Returns the small string, with all bytes after the first null byte zeroized.\n function normalizeSmallString(bytes32 s) internal pure returns (bytes32 result) {\n /// @solidity memory-safe-assembly\n assembly {\n for {} byte(result, s) { result := add(result, 1) } {} // Scan for '\\0'.\n mstore(0x00, s)\n mstore(result, 0x00)\n result := mload(0x00)\n }\n }\n\n /// @dev Returns the string as a normalized null-terminated small string.\n function toSmallString(string memory s) internal pure returns (bytes32 result) {\n /// @solidity memory-safe-assembly\n assembly {\n result := mload(s)\n if iszero(lt(result, 33)) {\n mstore(0x00, 0xec92f9a3) // `TooBigForSmallString()`.\n revert(0x1c, 0x04)\n }\n result := shl(shl(3, sub(32, result)), mload(add(s, result)))\n }\n }\n\n /// @dev Returns a lowercased copy of the string.\n /// WARNING! This function is only compatible with 7-bit ASCII strings.\n function lower(string memory subject) internal pure returns (string memory result) {\n result = toCase(subject, false);\n }\n\n /// @dev Returns an UPPERCASED copy of the string.\n /// WARNING! This function is only compatible with 7-bit ASCII strings.\n function upper(string memory subject) internal pure returns (string memory result) {\n result = toCase(subject, true);\n }\n\n /// @dev Escapes the string to be used within HTML tags.\n function escapeHTML(string memory s) internal pure returns (string memory result) {\n /// @solidity memory-safe-assembly\n assembly {\n result := mload(0x40)\n let end := add(s, mload(s))\n let o := add(result, 0x20)\n // Store the bytes of the packed offsets and strides into the scratch space.\n // `packed = (stride << 5) | offset`. Max offset is 20. Max stride is 6.\n mstore(0x1f, 0x900094)\n mstore(0x08, 0xc0000000a6ab)\n // Store \""&'<>\" into the scratch space.\n mstore(0x00, shl(64, 0x2671756f743b26616d703b262333393b266c743b2667743b))\n for {} iszero(eq(s, end)) {} {\n s := add(s, 1)\n let c := and(mload(s), 0xff)\n // Not in `[\"\\\"\",\"'\",\"&\",\"<\",\">\"]`.\n if iszero(and(shl(c, 1), 0x500000c400000000)) {\n mstore8(o, c)\n o := add(o, 1)\n continue\n }\n let t := shr(248, mload(c))\n mstore(o, mload(and(t, 0x1f)))\n o := add(o, shr(5, t))\n }\n mstore(o, 0) // Zeroize the slot after the string.\n mstore(result, sub(o, add(result, 0x20))) // Store the length.\n mstore(0x40, add(o, 0x20)) // Allocate memory.\n }\n }\n\n /// @dev Escapes the string to be used within double-quotes in a JSON.\n /// If `addDoubleQuotes` is true, the result will be enclosed in double-quotes.\n function escapeJSON(string memory s, bool addDoubleQuotes)\n internal\n pure\n returns (string memory result)\n {\n /// @solidity memory-safe-assembly\n assembly {\n result := mload(0x40)\n let o := add(result, 0x20)\n if addDoubleQuotes {\n mstore8(o, 34)\n o := add(1, o)\n }\n // Store \"\\\\u0000\" in scratch space.\n // Store \"0123456789abcdef\" in scratch space.\n // Also, store `{0x08:\"b\", 0x09:\"t\", 0x0a:\"n\", 0x0c:\"f\", 0x0d:\"r\"}`.\n // into the scratch space.\n mstore(0x15, 0x5c75303030303031323334353637383961626364656662746e006672)\n // Bitmask for detecting `[\"\\\"\",\"\\\\\"]`.\n let e := or(shl(0x22, 1), shl(0x5c, 1))\n for { let end := add(s, mload(s)) } iszero(eq(s, end)) {} {\n s := add(s, 1)\n let c := and(mload(s), 0xff)\n if iszero(lt(c, 0x20)) {\n if iszero(and(shl(c, 1), e)) {\n // Not in `[\"\\\"\",\"\\\\\"]`.\n mstore8(o, c)\n o := add(o, 1)\n continue\n }\n mstore8(o, 0x5c) // \"\\\\\".\n mstore8(add(o, 1), c)\n o := add(o, 2)\n continue\n }\n if iszero(and(shl(c, 1), 0x3700)) {\n // Not in `[\"\\b\",\"\\t\",\"\\n\",\"\\f\",\"\\d\"]`.\n mstore8(0x1d, mload(shr(4, c))) // Hex value.\n mstore8(0x1e, mload(and(c, 15))) // Hex value.\n mstore(o, mload(0x19)) // \"\\\\u00XX\".\n o := add(o, 6)\n continue\n }\n mstore8(o, 0x5c) // \"\\\\\".\n mstore8(add(o, 1), mload(add(c, 8)))\n o := add(o, 2)\n }\n if addDoubleQuotes {\n mstore8(o, 34)\n o := add(1, o)\n }\n mstore(o, 0) // Zeroize the slot after the string.\n mstore(result, sub(o, add(result, 0x20))) // Store the length.\n mstore(0x40, add(o, 0x20)) // Allocate memory.\n }\n }\n\n /// @dev Escapes the string to be used within double-quotes in a JSON.\n function escapeJSON(string memory s) internal pure returns (string memory result) {\n result = escapeJSON(s, false);\n }\n\n /// @dev Encodes `s` so that it can be safely used in a URI,\n /// just like `encodeURIComponent` in JavaScript.\n /// See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent\n /// See: https://datatracker.ietf.org/doc/html/rfc2396\n /// See: https://datatracker.ietf.org/doc/html/rfc3986\n function encodeURIComponent(string memory s) internal pure returns (string memory result) {\n /// @solidity memory-safe-assembly\n assembly {\n result := mload(0x40)\n // Store \"0123456789ABCDEF\" in scratch space.\n // Uppercased to be consistent with JavaScript's implementation.\n mstore(0x0f, 0x30313233343536373839414243444546)\n let o := add(result, 0x20)\n for { let end := add(s, mload(s)) } iszero(eq(s, end)) {} {\n s := add(s, 1)\n let c := and(mload(s), 0xff)\n // If not in `[0-9A-Z-a-z-_.!~*'()]`.\n if iszero(and(1, shr(c, 0x47fffffe87fffffe03ff678200000000))) {\n mstore8(o, 0x25) // '%'.\n mstore8(add(o, 1), mload(and(shr(4, c), 15)))\n mstore8(add(o, 2), mload(and(c, 15)))\n o := add(o, 3)\n continue\n }\n mstore8(o, c)\n o := add(o, 1)\n }\n mstore(result, sub(o, add(result, 0x20))) // Store the length.\n mstore(o, 0) // Zeroize the slot after the string.\n mstore(0x40, add(o, 0x20)) // Allocate memory.\n }\n }\n\n /// @dev Returns whether `a` equals `b`.\n function eq(string memory a, string memory b) internal pure returns (bool result) {\n /// @solidity memory-safe-assembly\n assembly {\n result := eq(keccak256(add(a, 0x20), mload(a)), keccak256(add(b, 0x20), mload(b)))\n }\n }\n\n /// @dev Returns whether `a` equals `b`, where `b` is a null-terminated small string.\n function eqs(string memory a, bytes32 b) internal pure returns (bool result) {\n /// @solidity memory-safe-assembly\n assembly {\n // These should be evaluated on compile time, as far as possible.\n let m := not(shl(7, div(not(iszero(b)), 255))) // `0x7f7f ...`.\n let x := not(or(m, or(b, add(m, and(b, m)))))\n let r := shl(7, iszero(iszero(shr(128, x))))\n r := or(r, shl(6, iszero(iszero(shr(64, shr(r, x))))))\n r := or(r, shl(5, lt(0xffffffff, shr(r, x))))\n r := or(r, shl(4, lt(0xffff, shr(r, x))))\n r := or(r, shl(3, lt(0xff, shr(r, x))))\n // forgefmt: disable-next-item\n result := gt(eq(mload(a), add(iszero(x), xor(31, shr(3, r)))),\n xor(shr(add(8, r), b), shr(add(8, r), mload(add(a, 0x20)))))\n }\n }\n\n /// @dev Returns 0 if `a == b`, -1 if `a < b`, +1 if `a > b`.\n /// If `a` == b[:a.length]`, and `a.length < b.length`, returns -1.\n function cmp(string memory a, string memory b) internal pure returns (int256) {\n return LibBytes.cmp(bytes(a), bytes(b));\n }\n\n /// @dev Packs a single string with its length into a single word.\n /// Returns `bytes32(0)` if the length is zero or greater than 31.\n function packOne(string memory a) internal pure returns (bytes32 result) {\n /// @solidity memory-safe-assembly\n assembly {\n // We don't need to zero right pad the string,\n // since this is our own custom non-standard packing scheme.\n result :=\n mul(\n // Load the length and the bytes.\n mload(add(a, 0x1f)),\n // `length != 0 && length < 32`. Abuses underflow.\n // Assumes that the length is valid and within the block gas limit.\n lt(sub(mload(a), 1), 0x1f)\n )\n }\n }\n\n /// @dev Unpacks a string packed using {packOne}.\n /// Returns the empty string if `packed` is `bytes32(0)`.\n /// If `packed` is not an output of {packOne}, the output behavior is undefined.\n function unpackOne(bytes32 packed) internal pure returns (string memory result) {\n /// @solidity memory-safe-assembly\n assembly {\n result := mload(0x40) // Grab the free memory pointer.\n mstore(0x40, add(result, 0x40)) // Allocate 2 words (1 for the length, 1 for the bytes).\n mstore(result, 0) // Zeroize the length slot.\n mstore(add(result, 0x1f), packed) // Store the length and bytes.\n mstore(add(add(result, 0x20), mload(result)), 0) // Right pad with zeroes.\n }\n }\n\n /// @dev Packs two strings with their lengths into a single word.\n /// Returns `bytes32(0)` if combined length is zero or greater than 30.\n function packTwo(string memory a, string memory b) internal pure returns (bytes32 result) {\n /// @solidity memory-safe-assembly\n assembly {\n let aLen := mload(a)\n // We don't need to zero right pad the strings,\n // since this is our own custom non-standard packing scheme.\n result :=\n mul(\n or( // Load the length and the bytes of `a` and `b`.\n shl(shl(3, sub(0x1f, aLen)), mload(add(a, aLen))), mload(sub(add(b, 0x1e), aLen))),\n // `totalLen != 0 && totalLen < 31`. Abuses underflow.\n // Assumes that the lengths are valid and within the block gas limit.\n lt(sub(add(aLen, mload(b)), 1), 0x1e)\n )\n }\n }\n\n /// @dev Unpacks strings packed using {packTwo}.\n /// Returns the empty strings if `packed` is `bytes32(0)`.\n /// If `packed` is not an output of {packTwo}, the output behavior is undefined.\n function unpackTwo(bytes32 packed)\n internal\n pure\n returns (string memory resultA, string memory resultB)\n {\n /// @solidity memory-safe-assembly\n assembly {\n resultA := mload(0x40) // Grab the free memory pointer.\n resultB := add(resultA, 0x40)\n // Allocate 2 words for each string (1 for the length, 1 for the byte). Total 4 words.\n mstore(0x40, add(resultB, 0x40))\n // Zeroize the length slots.\n mstore(resultA, 0)\n mstore(resultB, 0)\n // Store the lengths and bytes.\n mstore(add(resultA, 0x1f), packed)\n mstore(add(resultB, 0x1f), mload(add(add(resultA, 0x20), mload(resultA))))\n // Right pad with zeroes.\n mstore(add(add(resultA, 0x20), mload(resultA)), 0)\n mstore(add(add(resultB, 0x20), mload(resultB)), 0)\n }\n }\n\n /// @dev Directly returns `a` without copying.\n function directReturn(string memory a) internal pure {\n /// @solidity memory-safe-assembly\n assembly {\n // Assumes that the string does not start from the scratch space.\n let retStart := sub(a, 0x20)\n let retUnpaddedSize := add(mload(a), 0x40)\n // Right pad with zeroes. Just in case the string is produced\n // by a method that doesn't zero right pad.\n mstore(add(retStart, retUnpaddedSize), 0)\n mstore(retStart, 0x20) // Store the return offset.\n // End the transaction, returning the string.\n return(retStart, and(not(0x1f), add(0x1f, retUnpaddedSize)))\n }\n }\n}\n" + }, + "solady/utils/SignatureCheckerLib.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.4;\n\n/// @notice Signature verification helper that supports both ECDSA signatures from EOAs\n/// and ERC1271 signatures from smart contract wallets like Argent and Gnosis safe.\n/// @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/SignatureCheckerLib.sol)\n/// @author Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/SignatureChecker.sol)\n///\n/// @dev Note:\n/// - The signature checking functions use the ecrecover precompile (0x1).\n/// - The `bytes memory signature` variants use the identity precompile (0x4)\n/// to copy memory internally.\n/// - Unlike ECDSA signatures, contract signatures are revocable.\n/// - As of Solady version 0.0.134, all `bytes signature` variants accept both\n/// regular 65-byte `(r, s, v)` and EIP-2098 `(r, vs)` short form signatures.\n/// See: https://eips.ethereum.org/EIPS/eip-2098\n/// This is for calldata efficiency on smart accounts prevalent on L2s.\n///\n/// WARNING! Do NOT use signatures as unique identifiers:\n/// - Use a nonce in the digest to prevent replay attacks on the same contract.\n/// - Use EIP-712 for the digest to prevent replay attacks across different chains and contracts.\n/// EIP-712 also enables readable signing of typed data for better user safety.\n/// This implementation does NOT check if a signature is non-malleable.\nlibrary SignatureCheckerLib {\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* SIGNATURE CHECKING OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Returns whether `signature` is valid for `signer` and `hash`.\n /// If `signer.code.length == 0`, then validate with `ecrecover`, else\n /// it will validate with ERC1271 on `signer`.\n function isValidSignatureNow(address signer, bytes32 hash, bytes memory signature)\n internal\n view\n returns (bool isValid)\n {\n if (signer == address(0)) return isValid;\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n for {} 1 {} {\n if iszero(extcodesize(signer)) {\n switch mload(signature)\n case 64 {\n let vs := mload(add(signature, 0x40))\n mstore(0x20, add(shr(255, vs), 27)) // `v`.\n mstore(0x60, shr(1, shl(1, vs))) // `s`.\n }\n case 65 {\n mstore(0x20, byte(0, mload(add(signature, 0x60)))) // `v`.\n mstore(0x60, mload(add(signature, 0x40))) // `s`.\n }\n default { break }\n mstore(0x00, hash)\n mstore(0x40, mload(add(signature, 0x20))) // `r`.\n let recovered := mload(staticcall(gas(), 1, 0x00, 0x80, 0x01, 0x20))\n isValid := gt(returndatasize(), shl(96, xor(signer, recovered)))\n mstore(0x60, 0) // Restore the zero slot.\n mstore(0x40, m) // Restore the free memory pointer.\n break\n }\n let f := shl(224, 0x1626ba7e)\n mstore(m, f) // `bytes4(keccak256(\"isValidSignature(bytes32,bytes)\"))`.\n mstore(add(m, 0x04), hash)\n let d := add(m, 0x24)\n mstore(d, 0x40) // The offset of the `signature` in the calldata.\n // Copy the `signature` over.\n let n := add(0x20, mload(signature))\n let copied := staticcall(gas(), 4, signature, n, add(m, 0x44), n)\n isValid := staticcall(gas(), signer, m, add(returndatasize(), 0x44), d, 0x20)\n isValid := and(eq(mload(d), f), and(isValid, copied))\n break\n }\n }\n }\n\n /// @dev Returns whether `signature` is valid for `signer` and `hash`.\n /// If `signer.code.length == 0`, then validate with `ecrecover`, else\n /// it will validate with ERC1271 on `signer`.\n function isValidSignatureNowCalldata(address signer, bytes32 hash, bytes calldata signature)\n internal\n view\n returns (bool isValid)\n {\n if (signer == address(0)) return isValid;\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n for {} 1 {} {\n if iszero(extcodesize(signer)) {\n switch signature.length\n case 64 {\n let vs := calldataload(add(signature.offset, 0x20))\n mstore(0x20, add(shr(255, vs), 27)) // `v`.\n mstore(0x40, calldataload(signature.offset)) // `r`.\n mstore(0x60, shr(1, shl(1, vs))) // `s`.\n }\n case 65 {\n mstore(0x20, byte(0, calldataload(add(signature.offset, 0x40)))) // `v`.\n calldatacopy(0x40, signature.offset, 0x40) // `r`, `s`.\n }\n default { break }\n mstore(0x00, hash)\n let recovered := mload(staticcall(gas(), 1, 0x00, 0x80, 0x01, 0x20))\n isValid := gt(returndatasize(), shl(96, xor(signer, recovered)))\n mstore(0x60, 0) // Restore the zero slot.\n mstore(0x40, m) // Restore the free memory pointer.\n break\n }\n let f := shl(224, 0x1626ba7e)\n mstore(m, f) // `bytes4(keccak256(\"isValidSignature(bytes32,bytes)\"))`.\n mstore(add(m, 0x04), hash)\n let d := add(m, 0x24)\n mstore(d, 0x40) // The offset of the `signature` in the calldata.\n mstore(add(m, 0x44), signature.length)\n // Copy the `signature` over.\n calldatacopy(add(m, 0x64), signature.offset, signature.length)\n isValid := staticcall(gas(), signer, m, add(signature.length, 0x64), d, 0x20)\n isValid := and(eq(mload(d), f), isValid)\n break\n }\n }\n }\n\n /// @dev Returns whether the signature (`r`, `vs`) is valid for `signer` and `hash`.\n /// If `signer.code.length == 0`, then validate with `ecrecover`, else\n /// it will validate with ERC1271 on `signer`.\n function isValidSignatureNow(address signer, bytes32 hash, bytes32 r, bytes32 vs)\n internal\n view\n returns (bool isValid)\n {\n if (signer == address(0)) return isValid;\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n for {} 1 {} {\n if iszero(extcodesize(signer)) {\n mstore(0x00, hash)\n mstore(0x20, add(shr(255, vs), 27)) // `v`.\n mstore(0x40, r) // `r`.\n mstore(0x60, shr(1, shl(1, vs))) // `s`.\n let recovered := mload(staticcall(gas(), 1, 0x00, 0x80, 0x01, 0x20))\n isValid := gt(returndatasize(), shl(96, xor(signer, recovered)))\n mstore(0x60, 0) // Restore the zero slot.\n mstore(0x40, m) // Restore the free memory pointer.\n break\n }\n let f := shl(224, 0x1626ba7e)\n mstore(m, f) // `bytes4(keccak256(\"isValidSignature(bytes32,bytes)\"))`.\n mstore(add(m, 0x04), hash)\n let d := add(m, 0x24)\n mstore(d, 0x40) // The offset of the `signature` in the calldata.\n mstore(add(m, 0x44), 65) // Length of the signature.\n mstore(add(m, 0x64), r) // `r`.\n mstore(add(m, 0x84), shr(1, shl(1, vs))) // `s`.\n mstore8(add(m, 0xa4), add(shr(255, vs), 27)) // `v`.\n isValid := staticcall(gas(), signer, m, 0xa5, d, 0x20)\n isValid := and(eq(mload(d), f), isValid)\n break\n }\n }\n }\n\n /// @dev Returns whether the signature (`v`, `r`, `s`) is valid for `signer` and `hash`.\n /// If `signer.code.length == 0`, then validate with `ecrecover`, else\n /// it will validate with ERC1271 on `signer`.\n function isValidSignatureNow(address signer, bytes32 hash, uint8 v, bytes32 r, bytes32 s)\n internal\n view\n returns (bool isValid)\n {\n if (signer == address(0)) return isValid;\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n for {} 1 {} {\n if iszero(extcodesize(signer)) {\n mstore(0x00, hash)\n mstore(0x20, and(v, 0xff)) // `v`.\n mstore(0x40, r) // `r`.\n mstore(0x60, s) // `s`.\n let recovered := mload(staticcall(gas(), 1, 0x00, 0x80, 0x01, 0x20))\n isValid := gt(returndatasize(), shl(96, xor(signer, recovered)))\n mstore(0x60, 0) // Restore the zero slot.\n mstore(0x40, m) // Restore the free memory pointer.\n break\n }\n let f := shl(224, 0x1626ba7e)\n mstore(m, f) // `bytes4(keccak256(\"isValidSignature(bytes32,bytes)\"))`.\n mstore(add(m, 0x04), hash)\n let d := add(m, 0x24)\n mstore(d, 0x40) // The offset of the `signature` in the calldata.\n mstore(add(m, 0x44), 65) // Length of the signature.\n mstore(add(m, 0x64), r) // `r`.\n mstore(add(m, 0x84), s) // `s`.\n mstore8(add(m, 0xa4), v) // `v`.\n isValid := staticcall(gas(), signer, m, 0xa5, d, 0x20)\n isValid := and(eq(mload(d), f), isValid)\n break\n }\n }\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* ERC1271 OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n // Note: These ERC1271 operations do NOT have an ECDSA fallback.\n\n /// @dev Returns whether `signature` is valid for `hash` for an ERC1271 `signer` contract.\n function isValidERC1271SignatureNow(address signer, bytes32 hash, bytes memory signature)\n internal\n view\n returns (bool isValid)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n let f := shl(224, 0x1626ba7e)\n mstore(m, f) // `bytes4(keccak256(\"isValidSignature(bytes32,bytes)\"))`.\n mstore(add(m, 0x04), hash)\n let d := add(m, 0x24)\n mstore(d, 0x40) // The offset of the `signature` in the calldata.\n // Copy the `signature` over.\n let n := add(0x20, mload(signature))\n let copied := staticcall(gas(), 4, signature, n, add(m, 0x44), n)\n isValid := staticcall(gas(), signer, m, add(returndatasize(), 0x44), d, 0x20)\n isValid := and(eq(mload(d), f), and(isValid, copied))\n }\n }\n\n /// @dev Returns whether `signature` is valid for `hash` for an ERC1271 `signer` contract.\n function isValidERC1271SignatureNowCalldata(\n address signer,\n bytes32 hash,\n bytes calldata signature\n ) internal view returns (bool isValid) {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n let f := shl(224, 0x1626ba7e)\n mstore(m, f) // `bytes4(keccak256(\"isValidSignature(bytes32,bytes)\"))`.\n mstore(add(m, 0x04), hash)\n let d := add(m, 0x24)\n mstore(d, 0x40) // The offset of the `signature` in the calldata.\n mstore(add(m, 0x44), signature.length)\n // Copy the `signature` over.\n calldatacopy(add(m, 0x64), signature.offset, signature.length)\n isValid := staticcall(gas(), signer, m, add(signature.length, 0x64), d, 0x20)\n isValid := and(eq(mload(d), f), isValid)\n }\n }\n\n /// @dev Returns whether the signature (`r`, `vs`) is valid for `hash`\n /// for an ERC1271 `signer` contract.\n function isValidERC1271SignatureNow(address signer, bytes32 hash, bytes32 r, bytes32 vs)\n internal\n view\n returns (bool isValid)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n let f := shl(224, 0x1626ba7e)\n mstore(m, f) // `bytes4(keccak256(\"isValidSignature(bytes32,bytes)\"))`.\n mstore(add(m, 0x04), hash)\n let d := add(m, 0x24)\n mstore(d, 0x40) // The offset of the `signature` in the calldata.\n mstore(add(m, 0x44), 65) // Length of the signature.\n mstore(add(m, 0x64), r) // `r`.\n mstore(add(m, 0x84), shr(1, shl(1, vs))) // `s`.\n mstore8(add(m, 0xa4), add(shr(255, vs), 27)) // `v`.\n isValid := staticcall(gas(), signer, m, 0xa5, d, 0x20)\n isValid := and(eq(mload(d), f), isValid)\n }\n }\n\n /// @dev Returns whether the signature (`v`, `r`, `s`) is valid for `hash`\n /// for an ERC1271 `signer` contract.\n function isValidERC1271SignatureNow(address signer, bytes32 hash, uint8 v, bytes32 r, bytes32 s)\n internal\n view\n returns (bool isValid)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let m := mload(0x40)\n let f := shl(224, 0x1626ba7e)\n mstore(m, f) // `bytes4(keccak256(\"isValidSignature(bytes32,bytes)\"))`.\n mstore(add(m, 0x04), hash)\n let d := add(m, 0x24)\n mstore(d, 0x40) // The offset of the `signature` in the calldata.\n mstore(add(m, 0x44), 65) // Length of the signature.\n mstore(add(m, 0x64), r) // `r`.\n mstore(add(m, 0x84), s) // `s`.\n mstore8(add(m, 0xa4), v) // `v`.\n isValid := staticcall(gas(), signer, m, 0xa5, d, 0x20)\n isValid := and(eq(mload(d), f), isValid)\n }\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* ERC6492 OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n // Note: These ERC6492 operations now include an ECDSA fallback at the very end.\n // The calldata variants are excluded for brevity.\n\n /// @dev Returns whether `signature` is valid for `hash`.\n /// If the signature is postfixed with the ERC6492 magic number, it will attempt to\n /// deploy / prepare the `signer` smart account before doing a regular ERC1271 check.\n /// Note: This function is NOT reentrancy safe.\n /// The verifier must be deployed.\n /// Otherwise, the function will return false if `signer` is not yet deployed / prepared.\n /// See: https://gist.github.com/Vectorized/011d6becff6e0a73e42fe100f8d7ef04\n /// With a dedicated verifier, this function is safe to use in contracts\n /// that have been granted special permissions.\n function isValidERC6492SignatureNowAllowSideEffects(\n address signer,\n bytes32 hash,\n bytes memory signature\n ) internal returns (bool isValid) {\n /// @solidity memory-safe-assembly\n assembly {\n function callIsValidSignature(signer_, hash_, signature_) -> _isValid {\n let m_ := mload(0x40)\n let f_ := shl(224, 0x1626ba7e)\n mstore(m_, f_) // `bytes4(keccak256(\"isValidSignature(bytes32,bytes)\"))`.\n mstore(add(m_, 0x04), hash_)\n let d_ := add(m_, 0x24)\n mstore(d_, 0x40) // The offset of the `signature` in the calldata.\n let n_ := add(0x20, mload(signature_))\n let copied_ := staticcall(gas(), 4, signature_, n_, add(m_, 0x44), n_)\n _isValid := staticcall(gas(), signer_, m_, add(returndatasize(), 0x44), d_, 0x20)\n _isValid := and(eq(mload(d_), f_), and(_isValid, copied_))\n }\n let noCode := iszero(extcodesize(signer))\n let n := mload(signature)\n for {} 1 {} {\n if iszero(eq(mload(add(signature, n)), mul(0x6492, div(not(isValid), 0xffff)))) {\n if iszero(noCode) { isValid := callIsValidSignature(signer, hash, signature) }\n break\n }\n if iszero(noCode) {\n let o := add(signature, 0x20) // Signature bytes.\n isValid := callIsValidSignature(signer, hash, add(o, mload(add(o, 0x40))))\n if isValid { break }\n }\n let m := mload(0x40)\n mstore(m, signer)\n mstore(add(m, 0x20), hash)\n pop(\n call(\n gas(), // Remaining gas.\n 0x0000bc370E4DC924F427d84e2f4B9Ec81626ba7E, // Non-reverting verifier.\n 0, // Send zero ETH.\n m, // Start of memory.\n add(returndatasize(), 0x40), // Length of calldata in memory.\n staticcall(gas(), 4, add(signature, 0x20), n, add(m, 0x40), n), // 1.\n 0x00 // Length of returndata to write.\n )\n )\n isValid := returndatasize()\n break\n }\n // Do `ecrecover` fallback if `noCode && !isValid`.\n for {} gt(noCode, isValid) {} {\n switch n\n case 64 {\n let vs := mload(add(signature, 0x40))\n mstore(0x20, add(shr(255, vs), 27)) // `v`.\n mstore(0x60, shr(1, shl(1, vs))) // `s`.\n }\n case 65 {\n mstore(0x20, byte(0, mload(add(signature, 0x60)))) // `v`.\n mstore(0x60, mload(add(signature, 0x40))) // `s`.\n }\n default { break }\n let m := mload(0x40)\n mstore(0x00, hash)\n mstore(0x40, mload(add(signature, 0x20))) // `r`.\n let recovered := mload(staticcall(gas(), 1, 0x00, 0x80, 0x01, 0x20))\n isValid := gt(returndatasize(), shl(96, xor(signer, recovered)))\n mstore(0x60, 0) // Restore the zero slot.\n mstore(0x40, m) // Restore the free memory pointer.\n break\n }\n }\n }\n\n /// @dev Returns whether `signature` is valid for `hash`.\n /// If the signature is postfixed with the ERC6492 magic number, it will attempt\n /// to use a reverting verifier to deploy / prepare the `signer` smart account\n /// and do a `isValidSignature` check via the reverting verifier.\n /// Note: This function is reentrancy safe.\n /// The reverting verifier must be deployed.\n /// Otherwise, the function will return false if `signer` is not yet deployed / prepared.\n /// See: https://gist.github.com/Vectorized/846a474c855eee9e441506676800a9ad\n function isValidERC6492SignatureNow(address signer, bytes32 hash, bytes memory signature)\n internal\n returns (bool isValid)\n {\n /// @solidity memory-safe-assembly\n assembly {\n function callIsValidSignature(signer_, hash_, signature_) -> _isValid {\n let m_ := mload(0x40)\n let f_ := shl(224, 0x1626ba7e)\n mstore(m_, f_) // `bytes4(keccak256(\"isValidSignature(bytes32,bytes)\"))`.\n mstore(add(m_, 0x04), hash_)\n let d_ := add(m_, 0x24)\n mstore(d_, 0x40) // The offset of the `signature` in the calldata.\n let n_ := add(0x20, mload(signature_))\n let copied_ := staticcall(gas(), 4, signature_, n_, add(m_, 0x44), n_)\n _isValid := staticcall(gas(), signer_, m_, add(returndatasize(), 0x44), d_, 0x20)\n _isValid := and(eq(mload(d_), f_), and(_isValid, copied_))\n }\n let noCode := iszero(extcodesize(signer))\n let n := mload(signature)\n for {} 1 {} {\n if iszero(eq(mload(add(signature, n)), mul(0x6492, div(not(isValid), 0xffff)))) {\n if iszero(noCode) { isValid := callIsValidSignature(signer, hash, signature) }\n break\n }\n if iszero(noCode) {\n let o := add(signature, 0x20) // Signature bytes.\n isValid := callIsValidSignature(signer, hash, add(o, mload(add(o, 0x40))))\n if isValid { break }\n }\n let m := mload(0x40)\n mstore(m, signer)\n mstore(add(m, 0x20), hash)\n let willBeZeroIfRevertingVerifierExists :=\n call(\n gas(), // Remaining gas.\n 0x00007bd799e4A591FeA53f8A8a3E9f931626Ba7e, // Reverting verifier.\n 0, // Send zero ETH.\n m, // Start of memory.\n add(returndatasize(), 0x40), // Length of calldata in memory.\n staticcall(gas(), 4, add(signature, 0x20), n, add(m, 0x40), n), // 1.\n 0x00 // Length of returndata to write.\n )\n isValid := gt(returndatasize(), willBeZeroIfRevertingVerifierExists)\n break\n }\n // Do `ecrecover` fallback if `noCode && !isValid`.\n for {} gt(noCode, isValid) {} {\n switch n\n case 64 {\n let vs := mload(add(signature, 0x40))\n mstore(0x20, add(shr(255, vs), 27)) // `v`.\n mstore(0x60, shr(1, shl(1, vs))) // `s`.\n }\n case 65 {\n mstore(0x20, byte(0, mload(add(signature, 0x60)))) // `v`.\n mstore(0x60, mload(add(signature, 0x40))) // `s`.\n }\n default { break }\n let m := mload(0x40)\n mstore(0x00, hash)\n mstore(0x40, mload(add(signature, 0x20))) // `r`.\n let recovered := mload(staticcall(gas(), 1, 0x00, 0x80, 0x01, 0x20))\n isValid := gt(returndatasize(), shl(96, xor(signer, recovered)))\n mstore(0x60, 0) // Restore the zero slot.\n mstore(0x40, m) // Restore the free memory pointer.\n break\n }\n }\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* HASHING OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Returns an Ethereum Signed Message, created from a `hash`.\n /// This produces a hash corresponding to the one signed with the\n /// [`eth_sign`](https://eth.wiki/json-rpc/API#eth_sign)\n /// JSON-RPC method as part of EIP-191.\n function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32 result) {\n /// @solidity memory-safe-assembly\n assembly {\n mstore(0x20, hash) // Store into scratch space for keccak256.\n mstore(0x00, \"\\x00\\x00\\x00\\x00\\x19Ethereum Signed Message:\\n32\") // 28 bytes.\n result := keccak256(0x04, 0x3c) // `32 * 2 - (32 - 28) = 60 = 0x3c`.\n }\n }\n\n /// @dev Returns an Ethereum Signed Message, created from `s`.\n /// This produces a hash corresponding to the one signed with the\n /// [`eth_sign`](https://eth.wiki/json-rpc/API#eth_sign)\n /// JSON-RPC method as part of EIP-191.\n /// Note: Supports lengths of `s` up to 999999 bytes.\n function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32 result) {\n /// @solidity memory-safe-assembly\n assembly {\n let sLength := mload(s)\n let o := 0x20\n mstore(o, \"\\x19Ethereum Signed Message:\\n\") // 26 bytes, zero-right-padded.\n mstore(0x00, 0x00)\n // Convert the `s.length` to ASCII decimal representation: `base10(s.length)`.\n for { let temp := sLength } 1 {} {\n o := sub(o, 1)\n mstore8(o, add(48, mod(temp, 10)))\n temp := div(temp, 10)\n if iszero(temp) { break }\n }\n let n := sub(0x3a, o) // Header length: `26 + 32 - o`.\n // Throw an out-of-offset error (consumes all gas) if the header exceeds 32 bytes.\n returndatacopy(returndatasize(), returndatasize(), gt(n, 0x20))\n mstore(s, or(mload(0x00), mload(n))) // Temporarily store the header.\n result := keccak256(add(s, sub(0x20, n)), add(n, sLength))\n mstore(s, sLength) // Restore the length.\n }\n }\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* EMPTY CALLDATA HELPERS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Returns an empty calldata bytes.\n function emptySignature() internal pure returns (bytes calldata signature) {\n /// @solidity memory-safe-assembly\n assembly {\n signature.length := 0\n }\n }\n}\n" + }, + "solady/utils/UUPSUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.4;\n\nimport {CallContextChecker} from \"./CallContextChecker.sol\";\n\n/// @notice UUPS proxy mixin.\n/// @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/UUPSUpgradeable.sol)\n/// @author Modified from OpenZeppelin\n/// (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/proxy/utils/UUPSUpgradeable.sol)\n///\n/// @dev Note:\n/// - This implementation is intended to be used with ERC1967 proxies.\n/// See: `LibClone.deployERC1967` and related functions.\n/// - This implementation is NOT compatible with legacy OpenZeppelin proxies\n/// which do not store the implementation at `_ERC1967_IMPLEMENTATION_SLOT`.\nabstract contract UUPSUpgradeable is CallContextChecker {\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* CUSTOM ERRORS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev The upgrade failed.\n error UpgradeFailed();\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* EVENTS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Emitted when the proxy's implementation is upgraded.\n event Upgraded(address indexed implementation);\n\n /// @dev `keccak256(bytes(\"Upgraded(address)\"))`.\n uint256 private constant _UPGRADED_EVENT_SIGNATURE =\n 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b;\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* STORAGE */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev The ERC-1967 storage slot for the implementation in the proxy.\n /// `uint256(keccak256(\"eip1967.proxy.implementation\")) - 1`.\n bytes32 internal constant _ERC1967_IMPLEMENTATION_SLOT =\n 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n\n /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n /* UUPS OPERATIONS */\n /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n /// @dev Please override this function to check if `msg.sender` is authorized\n /// to upgrade the proxy to `newImplementation`, reverting if not.\n /// ```\n /// function _authorizeUpgrade(address) internal override onlyOwner {}\n /// ```\n function _authorizeUpgrade(address newImplementation) internal virtual;\n\n /// @dev Returns the storage slot used by the implementation,\n /// as specified in [ERC1822](https://eips.ethereum.org/EIPS/eip-1822).\n ///\n /// Note: The `notDelegated` modifier prevents accidental upgrades to\n /// an implementation that is a proxy contract.\n function proxiableUUID() public view virtual notDelegated returns (bytes32) {\n // This function must always return `_ERC1967_IMPLEMENTATION_SLOT` to comply with ERC1967.\n return _ERC1967_IMPLEMENTATION_SLOT;\n }\n\n /// @dev Upgrades the proxy's implementation to `newImplementation`.\n /// Emits a {Upgraded} event.\n ///\n /// Note: Passing in empty `data` skips the delegatecall to `newImplementation`.\n function upgradeToAndCall(address newImplementation, bytes calldata data)\n public\n payable\n virtual\n onlyProxy\n {\n _authorizeUpgrade(newImplementation);\n /// @solidity memory-safe-assembly\n assembly {\n newImplementation := shr(96, shl(96, newImplementation)) // Clears upper 96 bits.\n mstore(0x00, returndatasize())\n mstore(0x01, 0x52d1902d) // `proxiableUUID()`.\n let s := _ERC1967_IMPLEMENTATION_SLOT\n // Check if `newImplementation` implements `proxiableUUID` correctly.\n if iszero(eq(mload(staticcall(gas(), newImplementation, 0x1d, 0x04, 0x01, 0x20)), s)) {\n mstore(0x01, 0x55299b49) // `UpgradeFailed()`.\n revert(0x1d, 0x04)\n }\n // Emit the {Upgraded} event.\n log2(codesize(), 0x00, _UPGRADED_EVENT_SIGNATURE, newImplementation)\n sstore(s, newImplementation) // Updates the implementation.\n\n // Perform a delegatecall to `newImplementation` if `data` is non-empty.\n if data.length {\n // Forwards the `data` to `newImplementation` via delegatecall.\n let m := mload(0x40)\n calldatacopy(m, data.offset, data.length)\n if iszero(delegatecall(gas(), newImplementation, m, data.length, codesize(), 0x00))\n {\n // Bubble up the revert if the call reverts.\n returndatacopy(m, 0x00, returndatasize())\n revert(m, returndatasize())\n }\n }\n }\n }\n}\n" + }, + "src/AuthenticatedStaticCaller.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.28;\nimport {ERC1271} from './ERC1271.sol';\n\nstruct StaticCall {\n address target;\n bytes data;\n uint256 signedAt;\n bytes signature;\n}\n\nabstract contract AuthenticatedStaticCaller is ERC1271 {\n error SignatureExpired(uint256 expiredAt, uint256 currentTimestamp);\n error InvalidSignature();\n\n //TODO: Make this configurable?\n uint256 constant signatureLifetime = 30 minutes;\n\n function getSignatureLifetime() external view returns (uint256) {\n return signatureLifetime;\n }\n\n function signedStaticCall(StaticCall calldata call) external view returns (bytes memory) {\n if (call.signedAt + signatureLifetime < block.timestamp) {\n revert SignatureExpired(call.signedAt + signatureLifetime, block.timestamp);\n }\n bytes32 hash = keccak256(bytes.concat(this.signedStaticCall.selector, bytes32(call.signedAt)));\n if (!_isValidSignature(replaySafeHash(hash), call.signature)) {\n revert InvalidSignature();\n }\n (bool success, bytes memory result) = call.target.staticcall(call.data);\n if (!success) {\n assembly {\n revert(add(result, 32), mload(result))\n }\n }\n return result;\n }\n}\n" + }, + "src/ERC1271.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.4;\n\n/// @title ERC-1271\n///\n/// @notice Abstract ERC-1271 implementation (based on Solady's) with guards to handle the same\n/// signer being used on multiple accounts.\n///\n/// @dev To prevent the same signature from being validated on different accounts owned by the samer signer,\n/// we introduce an anti cross-account-replay layer: the original hash is input into a new EIP-712 compliant\n/// hash. The domain separator of this outer hash contains the chain id and address of this contract, so that\n/// it cannot be used on two accounts (see `replaySafeHash()` for the implementation details).\n///\n/// @author Applied Blockchain (https://github.com/appliedblockchain/giano)\n/// @author Coinbase (https://github.com/coinbase/smart-wallet)\n/// @author Solady (https://github.com/vectorized/solady/blob/main/src/accounts/ERC1271.sol)\nabstract contract ERC1271 {\n /// @dev Precomputed `typeHash` used to produce EIP-712 compliant hash when applying the anti\n /// cross-account-replay layer.\n ///\n /// The original hash must either be:\n /// - An EIP-191 hash: keccak256(\"\\x19Ethereum Signed Message:\\n\" || len(someMessage) || someMessage)\n /// - An EIP-712 hash: keccak256(\"\\x19\\x01\" || someDomainSeparator || hashStruct(someStruct))\n bytes32 private constant _MESSAGE_TYPEHASH = keccak256(\"GianoSmartWalletMessage(bytes32 hash)\");\n\n /// @notice Returns information about the `EIP712Domain` used to create EIP-712 compliant hashes.\n ///\n /// @dev Follows ERC-5267 (see https://eips.ethereum.org/EIPS/eip-5267).\n ///\n /// @return fields The bitmap of used fields.\n /// @return name The value of the `EIP712Domain.name` field.\n /// @return version The value of the `EIP712Domain.version` field.\n /// @return chainId The value of the `EIP712Domain.chainId` field.\n /// @return verifyingContract The value of the `EIP712Domain.verifyingContract` field.\n /// @return salt The value of the `EIP712Domain.salt` field.\n /// @return extensions The list of EIP numbers, that extends EIP-712 with new domain fields.\n function eip712Domain()\n external\n view\n virtual\n returns (\n bytes1 fields,\n string memory name,\n string memory version,\n uint256 chainId,\n address verifyingContract,\n bytes32 salt,\n uint256[] memory extensions\n )\n {\n fields = hex\"0f\"; // `0b1111`.\n (name, version) = _domainNameAndVersion();\n chainId = block.chainid;\n verifyingContract = address(this);\n salt = salt; // `bytes32(0)`.\n extensions = extensions; // `new uint256[](0)`.\n }\n\n /// @notice Validates the `signature` against the given `hash`.\n ///\n /// @dev This implementation follows ERC-1271. See https://eips.ethereum.org/EIPS/eip-1271.\n /// @dev IMPORTANT: Signature verification is performed on the hash produced AFTER applying the anti\n /// cross-account-replay layer on the given `hash` (i.e., verification is run on the replay-safe\n /// hash version).\n ///\n /// @param hash The original hash.\n /// @param signature The signature of the replay-safe hash to validate.\n ///\n /// @return result `0x1626ba7e` if validation succeeded, else `0xffffffff`.\n function isValidSignature(bytes32 hash, bytes calldata signature) public view virtual returns (bytes4 result) {\n if (_isValidSignature({hash: replaySafeHash(hash), signature: signature})) {\n // bytes4(keccak256(\"isValidSignature(bytes32,bytes)\"))\n return 0x1626ba7e;\n }\n\n return 0xffffffff;\n }\n\n /// @notice Wrapper around `_eip712Hash()` to produce a replay-safe hash fron the given `hash`.\n ///\n /// @dev The returned EIP-712 compliant replay-safe hash is the result of:\n /// keccak256(\n /// \\x19\\x01 ||\n /// this.domainSeparator ||\n /// hashStruct(GianoSmartWalletMessage({ hash: `hash`}))\n /// )\n ///\n /// @param hash The original hash.\n ///\n /// @return The corresponding replay-safe hash.\n function replaySafeHash(bytes32 hash) public view virtual returns (bytes32) {\n return _eip712Hash(hash);\n }\n\n /// @notice Returns the `domainSeparator` used to create EIP-712 compliant hashes.\n ///\n /// @dev Implements domainSeparator = hashStruct(eip712Domain).\n /// See https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator.\n ///\n /// @return The 32 bytes domain separator result.\n function domainSeparator() public view returns (bytes32) {\n (string memory name, string memory version) = _domainNameAndVersion();\n return keccak256(\n abi.encode(\n keccak256(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"),\n keccak256(bytes(name)),\n keccak256(bytes(version)),\n block.chainid,\n address(this)\n )\n );\n }\n\n /// @notice Returns the EIP-712 typed hash of the `GianoSmartWalletMessage(bytes32 hash)` data structure.\n ///\n /// @dev Implements encode(domainSeparator : 𝔹²⁵⁶, message : 𝕊) = \"\\x19\\x01\" || domainSeparator ||\n /// hashStruct(message).\n /// @dev See https://eips.ethereum.org/EIPS/eip-712#specification.\n ///\n /// @param hash The `GianoSmartWalletMessage.hash` field to hash.\n ////\n /// @return The resulting EIP-712 hash.\n function _eip712Hash(bytes32 hash) internal view virtual returns (bytes32) {\n return keccak256(abi.encodePacked(\"\\x19\\x01\", domainSeparator(), _hashStruct(hash)));\n }\n\n /// @notice Returns the EIP-712 `hashStruct` result of the `GianoSmartWalletMessage(bytes32 hash)` data\n /// structure.\n ///\n /// @dev Implements hashStruct(s : 𝕊) = keccak256(typeHash || encodeData(s)).\n /// @dev See https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct.\n ///\n /// @param hash The `GianoSmartWalletMessage.hash` field.\n ///\n /// @return The EIP-712 `hashStruct` result.\n function _hashStruct(bytes32 hash) internal view virtual returns (bytes32) {\n return keccak256(abi.encode(_MESSAGE_TYPEHASH, hash));\n }\n\n /// @notice Returns the domain name and version to use when creating EIP-712 signatures.\n ///\n /// @dev MUST be defined by the implementation.\n ///\n /// @return name The user readable name of signing domain.\n /// @return version The current major version of the signing domain.\n function _domainNameAndVersion() internal view virtual returns (string memory name, string memory version);\n\n /// @notice Validates the `signature` against the given `hash`.\n ///\n /// @dev MUST be defined by the implementation.\n ///\n /// @param hash The hash whose signature has been performed on.\n /// @param signature The signature associated with `hash`.\n ///\n /// @return `true` is the signature is valid, else `false`.\n function _isValidSignature(bytes32 hash, bytes calldata signature) internal view virtual returns (bool);\n}\n" + }, + "src/GianoSmartWallet.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.28;\n\nimport {IAccount} from '@account-abstraction/contracts/interfaces/IAccount.sol';\n\nimport {PackedUserOperation} from '@account-abstraction/contracts/interfaces/PackedUserOperation.sol';\nimport {UserOperationLib} from '@account-abstraction/contracts/core/UserOperationLib.sol';\nimport {Receiver} from 'solady/accounts/Receiver.sol';\nimport {SignatureCheckerLib} from 'solady/utils/SignatureCheckerLib.sol';\nimport {UUPSUpgradeable} from 'solady/utils/UUPSUpgradeable.sol';\nimport {WebAuthn} from 'webauthn-sol/WebAuthn.sol';\nimport {AuthenticatedStaticCaller} from './AuthenticatedStaticCaller.sol';\n\nimport {ERC1271} from './ERC1271.sol';\nimport {MultiOwnable} from './MultiOwnable.sol';\n\n/// @title Giano Smart Wallet\n///\n/// @notice ERC-4337-compatible smart account, based on Solady's ERC4337 account implementation\n/// with inspiration from Alchemy's LightAccount and Daimo's DaimoAccount.\n///\n/// @author Applied Blockchain (https://github.com/appliedblockchain/giano)\n/// @author Coinbase (https://github.com/coinbase/smart-wallet)\n/// @author Solady (https://github.com/vectorized/solady/blob/main/src/accounts/ERC4337.sol)\ncontract GianoSmartWallet is ERC1271, IAccount, MultiOwnable, UUPSUpgradeable, Receiver, AuthenticatedStaticCaller {\n /// @notice A wrapper struct used for signature validation so that callers\n /// can identify the owner that signed.\n struct SignatureWrapper {\n /// @dev The owner bytes that signed, should be ABI encoded address (32 bytes) or public key (64 bytes)\n bytes ownerBytes;\n /// @dev If `ownerBytes` is an Ethereum address, this should be `abi.encodePacked(r, s, v)`\n /// If `ownerBytes` is a public key, this should be `abi.encode(WebAuthnAuth)`.\n bytes signatureData;\n }\n\n /// @notice Represents a call to make.\n struct Call {\n /// @dev The address to call.\n address target;\n /// @dev The value to send when making the call.\n uint256 value;\n /// @dev The data of the call.\n bytes data;\n }\n\n /// @notice Reserved nonce key (upper 192 bits of `UserOperation.nonce`) for cross-chain replayable\n /// transactions.\n ///\n /// @dev MUST BE the `UserOperation.nonce` key when `UserOperation.calldata` is calling\n /// `executeWithoutChainIdValidation`and MUST NOT BE `UserOperation.nonce` key when `UserOperation.calldata` is\n /// NOT calling `executeWithoutChainIdValidation`.\n ///\n /// @dev Helps enforce sequential sequencing of replayable transactions.\n uint256 public constant REPLAYABLE_NONCE_KEY = 8453;\n\n /// @notice Thrown when `initialize` is called but the account already has had at least one owner.\n error Initialized();\n\n /// @notice Thrown when a call is passed to `executeWithoutChainIdValidation` that is not allowed by\n /// `canSkipChainIdValidation`\n ///\n /// @param selector The selector of the call.\n error SelectorNotAllowed(bytes4 selector);\n\n /// @notice Thrown in validateUserOp if the key of `UserOperation.nonce` does not match the calldata.\n ///\n /// @dev Calls to `this.executeWithoutChainIdValidation` MUST use `REPLAYABLE_NONCE_KEY` and\n /// calls NOT to `this.executeWithoutChainIdValidation` MUST NOT use `REPLAYABLE_NONCE_KEY`.\n ///\n /// @param key The invalid `UserOperation.nonce` key.\n error InvalidNonceKey(uint256 key);\n\n /// @notice Thrown when an upgrade is attempted to an implementation that does not exist.\n ///\n /// @param implementation The address of the implementation that has no code.\n error InvalidImplementation(address implementation);\n\n /// @notice Reverts if the caller is not the EntryPoint.\n modifier onlyEntryPoint() virtual {\n if (msg.sender != entryPoint()) {\n revert Unauthorized();\n }\n\n _;\n }\n\n /// @notice Reverts if the caller is neither the EntryPoint, the owner, nor the account itself.\n modifier onlyEntryPointOrOwner() virtual {\n if (msg.sender != entryPoint()) {\n _checkOwner();\n }\n\n _;\n }\n\n /// @notice Sends to the EntryPoint (i.e. `msg.sender`) the missing funds for this transaction.\n ///\n /// @dev Subclass MAY override this modifier for better funds management (e.g. send to the\n /// EntryPoint more than the minimum required, so that in future transactions it will not\n /// be required to send again).\n ///\n /// @param missingAccountFunds The minimum value this modifier should send the EntryPoint which\n /// MAY be zero, in case there is enough deposit, or the userOp has a\n /// paymaster.\n modifier payPrefund(uint256 missingAccountFunds) virtual {\n _;\n\n assembly ('memory-safe') {\n if missingAccountFunds {\n // Ignore failure (it's EntryPoint's job to verify, not the account's).\n pop(call(gas(), caller(), missingAccountFunds, codesize(), 0x00, codesize(), 0x00))\n }\n }\n }\n\n constructor() {\n // Implementation should not be initializable (does not affect proxies which use their own storage).\n bytes[] memory owners = new bytes[](1);\n owners[0] = abi.encode(address(0));\n _initializeOwners(owners);\n }\n\n /// @notice Initializes the account with the `owners`.\n ///\n /// @dev Reverts if the account has had at least one owner, i.e. has been initialized.\n ///\n /// @param owners Array of initial owners for this account. Each item should be\n /// an ABI encoded Ethereum address, i.e. 32 bytes with 12 leading 0 bytes,\n /// or a 64 byte public key.\n function initialize(bytes[] calldata owners) external payable virtual {\n if (nextOwnerIndex() != 0) {\n revert Initialized();\n }\n\n _initializeOwners(owners);\n }\n\n /// @inheritdoc IAccount\n ///\n /// @notice ERC-4337 `validateUserOp` method. The EntryPoint will\n /// call `UserOperation.sender.call(UserOperation.callData)` only if this validation call returns\n /// successfully.\n ///\n /// @dev Signature failure should be reported by returning 1 (see: `this._isValidSignature`). This\n /// allows making a \"simulation call\" without a valid signature. Other failures (e.g. invalid signature format)\n /// should still revert to signal failure.\n /// @dev Reverts if the `UserOperation.nonce` key is invalid for `UserOperation.calldata`.\n /// @dev Reverts if the signature format is incorrect or invalid for owner type.\n ///\n /// @param userOp The `UserOperation` to validate.\n /// @param userOpHash The `UserOperation` hash, as computed by `EntryPoint.getUserOpHash(UserOperation)`.\n /// @param missingAccountFunds The missing account funds that must be deposited on the Entrypoint.\n ///\n /// @return validationData The encoded `ValidationData` structure:\n /// `(uint256(validAfter) << (160 + 48)) | (uint256(validUntil) << 160) | (success ? 0 : 1)`\n /// where `validUntil` is 0 (indefinite) and `validAfter` is 0.\n function validateUserOp(\n PackedUserOperation calldata userOp,\n bytes32 userOpHash,\n uint256 missingAccountFunds\n ) external virtual onlyEntryPoint payPrefund(missingAccountFunds) returns (uint256 validationData) {\n uint256 key = userOp.nonce >> 64;\n\n if (bytes4(userOp.callData) == this.executeWithoutChainIdValidation.selector) {\n userOpHash = getUserOpHashWithoutChainId(userOp);\n if (key != REPLAYABLE_NONCE_KEY) {\n revert InvalidNonceKey(key);\n }\n\n // Check for upgrade calls in the batch and validate implementation has code\n bytes[] memory calls = abi.decode(userOp.callData[4:], (bytes[]));\n for (uint256 i; i < calls.length; i++) {\n bytes memory callData = calls[i];\n bytes4 selector = bytes4(callData);\n\n if (selector == UUPSUpgradeable.upgradeToAndCall.selector) {\n address newImplementation;\n assembly {\n // Skip reading the first 32 bytes (length prefix) + 4 bytes (function selector)\n newImplementation := mload(add(callData, 36))\n }\n if (newImplementation.code.length == 0) revert InvalidImplementation(newImplementation);\n }\n }\n } else {\n if (key == REPLAYABLE_NONCE_KEY) {\n revert InvalidNonceKey(key);\n }\n }\n\n // Return 0 if the recovered address matches the owner.\n if (_isValidSignature(userOpHash, userOp.signature)) {\n return 0;\n }\n\n // Else return 1\n return 1;\n }\n\n /// @notice Executes `calls` on this account (i.e. self call).\n ///\n /// @dev Can only be called by the Entrypoint.\n /// @dev Reverts if the given call is not authorized to skip the chain ID validtion.\n /// @dev `validateUserOp()` will recompute the `userOpHash` without the chain ID before validating\n /// it if the `UserOperation.calldata` is calling this function. This allows certain UserOperations\n /// to be replayed for all accounts sharing the same address across chains. E.g. This may be\n /// useful for syncing owner changes.\n ///\n /// @param calls An array of calldata to use for separate self calls.\n function executeWithoutChainIdValidation(bytes[] calldata calls) external payable virtual onlyEntryPoint {\n for (uint256 i; i < calls.length; i++) {\n bytes calldata call = calls[i];\n bytes4 selector = bytes4(call);\n if (!canSkipChainIdValidation(selector)) {\n revert SelectorNotAllowed(selector);\n }\n\n _call(address(this), 0, call);\n }\n }\n\n /// @notice Executes the given call from this account.\n ///\n /// @dev Can only be called by the Entrypoint or an owner of this account (including itself).\n ///\n /// @param target The address to call.\n /// @param value The value to send with the call.\n /// @param data The data of the call.\n function execute(address target, uint256 value, bytes calldata data) external payable virtual onlyEntryPointOrOwner {\n _call(target, value, data);\n }\n\n /// @notice Executes batch of `Call`s.\n ///\n /// @dev Can only be called by the Entrypoint or an owner of this account (including itself).\n ///\n /// @param calls The list of `Call`s to execute.\n function executeBatch(Call[] calldata calls) external payable virtual onlyEntryPointOrOwner {\n for (uint256 i; i < calls.length; i++) {\n _call(calls[i].target, calls[i].value, calls[i].data);\n }\n }\n\n /// @notice Returns the address of the EntryPoint v0.7.\n ///\n /// @return The address of the EntryPoint v0.7\n function entryPoint() public view virtual returns (address) {\n return 0x0000000071727De22E5E9d8BAf0edAc6f37da032;\n }\n\n /// @notice Computes the hash of the `UserOperation` in the same way as EntryPoint v0.6, but\n /// leaves out the chain ID.\n ///\n /// @dev This allows accounts to sign a hash that can be used on many chains.\n ///\n /// @param userOp The `UserOperation` to compute the hash for.\n ///\n /// @return The `UserOperation` hash, which does not depend on chain ID.\n function getUserOpHashWithoutChainId(PackedUserOperation calldata userOp) public view virtual returns (bytes32) {\n return keccak256(abi.encode(UserOperationLib.hash(userOp), entryPoint()));\n }\n\n /// @notice Returns the implementation of the ERC1967 proxy.\n ///\n /// @return $ The address of implementation contract.\n function implementation() public view returns (address $) {\n assembly {\n $ := sload(_ERC1967_IMPLEMENTATION_SLOT)\n }\n }\n\n /// @notice Returns whether `functionSelector` can be called in `executeWithoutChainIdValidation`.\n ///\n /// @param functionSelector The function selector to check.\n ////\n /// @return `true` is the function selector is allowed to skip the chain ID validation, else `false`.\n function canSkipChainIdValidation(bytes4 functionSelector) public pure returns (bool) {\n if (\n functionSelector == MultiOwnable.addOwnerPublicKey.selector ||\n functionSelector == MultiOwnable.addOwnerAddress.selector ||\n functionSelector == MultiOwnable.removeOwnerAtIndex.selector ||\n functionSelector == MultiOwnable.removeLastOwner.selector ||\n functionSelector == UUPSUpgradeable.upgradeToAndCall.selector\n ) {\n return true;\n }\n return false;\n }\n\n /// @notice Executes the given call from this account.\n ///\n /// @dev Reverts if the call reverted.\n /// @dev Implementation taken from\n /// https://github.com/alchemyplatform/light-account/blob/43f625afdda544d5e5af9c370c9f4be0943e4e90/src/common/BaseLightAccount.sol#L125\n ///\n /// @param target The target call address.\n /// @param value The call value to user.\n /// @param data The raw call data.\n function _call(address target, uint256 value, bytes memory data) internal {\n (bool success, bytes memory result) = target.call{value: value}(data);\n if (!success) {\n assembly ('memory-safe') {\n revert(add(result, 32), mload(result))\n }\n }\n }\n\n /// @inheritdoc ERC1271\n ///\n /// @dev Used by both `ERC1271.isValidSignature` AND `IAccount.validateUserOp` signature validation.\n /// @dev Reverts if `ownerBytes` is not compatible with `signature` format.\n ///\n /// @param signature ABI encoded `SignatureWrapper`.\n function _isValidSignature(bytes32 hash, bytes calldata signature) internal view virtual override returns (bool) {\n SignatureWrapper memory sigWrapper = abi.decode(signature, (SignatureWrapper));\n bytes memory ownerBytes = sigWrapper.ownerBytes;\n\n // First validate that the provided owner bytes are actually an owner\n if (!isOwnerBytes(ownerBytes)) {\n return false;\n }\n\n if (ownerBytes.length == 32) {\n if (uint256(bytes32(ownerBytes)) > type(uint160).max) {\n // technically should be impossible given owners can only be added with\n // addOwnerAddress and addOwnerPublicKey, but we leave incase of future changes.\n revert InvalidEthereumAddressOwner(ownerBytes);\n }\n\n address owner;\n assembly ('memory-safe') {\n owner := mload(add(ownerBytes, 32))\n }\n\n return SignatureCheckerLib.isValidSignatureNow(owner, hash, sigWrapper.signatureData);\n }\n\n if (ownerBytes.length == 64) {\n (uint256 x, uint256 y) = abi.decode(ownerBytes, (uint256, uint256));\n\n WebAuthn.WebAuthnAuth memory auth = abi.decode(sigWrapper.signatureData, (WebAuthn.WebAuthnAuth));\n\n return WebAuthn.verify({challenge: abi.encode(hash), requireUV: false, webAuthnAuth: auth, x: x, y: y});\n }\n\n revert InvalidOwnerBytesLength(ownerBytes);\n }\n\n /// @inheritdoc UUPSUpgradeable\n ///\n /// @dev Authorization logic is only based on the `msg.sender` being an owner of this account,\n /// or `address(this)`.\n function _authorizeUpgrade(address) internal view virtual override(UUPSUpgradeable) onlyOwner {}\n\n /// @inheritdoc ERC1271\n function _domainNameAndVersion() internal pure override(ERC1271) returns (string memory, string memory) {\n return ('Giano Smart Wallet', '1');\n }\n}\n" + }, + "src/GianoSmartWalletFactory.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.4;\n\nimport {GianoSmartWallet} from './GianoSmartWallet.sol';\nimport {LibClone} from 'solady/utils/LibClone.sol';\n\n/// @title Giano Smart Wallet Factory\n///\n/// @notice GianoSmartWallet factory, based on Solady's ERC4337Factory.\n///\n/// @author Applied Blockchain (https://github.com/appliedblockchain/giano)\n/// @author Coinbase (https://github.com/coinbase/smart-wallet)\n/// @author Solady (https://github.com/vectorized/solady/blob/main/src/accounts/ERC4337Factory.sol)\ncontract GianoSmartWalletFactory {\n /// @notice Address of the ERC-4337 implementation used as implementation for new accounts.\n address public immutable implementation;\n\n /// @notice Emitted when a new account is created.\n ///\n /// @param account The address of the created account.\n /// @param owners Array of initial owners.\n /// @param nonce The nonce of the created account.\n event AccountCreated(address indexed account, bytes[] owners, uint256 nonce);\n\n /// @notice Thrown when trying to construct with an implementation that is not deployed.\n error ImplementationUndeployed();\n\n\n /// @notice Thrown when trying to create a new `GianoSmartWallet` account without any owner.\n error OwnerRequired();\n\n /// @notice Factory constructor used to initialize the implementation address to use for future\n /// GianoSmartWallet deployments.\n ///\n /// @param implementation_ The address of the GianoSmartWallet implementation which new accounts will proxy to.\n constructor(address implementation_) payable {\n if (implementation_.code.length == 0) revert ImplementationUndeployed();\n implementation = implementation_;\n }\n\n /// @notice Returns the deterministic address for a GianoSmartWallet created with `owners` and `nonce`\n /// deploys and initializes contract if it has not yet been created.\n ///\n /// @dev Deployed as a ERC-1967 proxy that's implementation is `this.implementation`.\n ///\n /// @param owners Array of initial owners. Each item should be an ABI encoded address or 64 byte public key.\n /// @param nonce The nonce of the account, a caller defined value which allows multiple accounts\n /// with the same `owners` to exist at different addresses.\n ///\n /// @return account The address of the ERC-1967 proxy created with inputs `owners`, `nonce`, and\n /// `this.implementation`.\n function createAccount(bytes[] calldata owners, uint256 nonce) external payable virtual returns (GianoSmartWallet account) {\n if (owners.length == 0) {\n revert OwnerRequired();\n }\n\n (bool alreadyDeployed, address accountAddress) = LibClone.createDeterministicERC1967(msg.value, implementation, _getSalt(owners, nonce));\n\n account = GianoSmartWallet(payable(accountAddress));\n\n if (!alreadyDeployed) {\n emit AccountCreated(accountAddress, owners, nonce);\n account.initialize(owners);\n }\n }\n\n /// @notice Returns the deterministic address of the account that would be created by `createAccount`.\n ///\n /// @param owners Array of initial owners. Each item should be an ABI encoded address or 64 byte public key.\n /// @param nonce The nonce provided to `createAccount()`.\n ///\n /// @return The predicted account deployment address.\n function getAddress(bytes[] calldata owners, uint256 nonce) external view returns (address) {\n return LibClone.predictDeterministicAddress(initCodeHash(), _getSalt(owners, nonce), address(this));\n }\n\n /// @notice Returns the initialization code hash of the account:\n /// a ERC1967 proxy that's implementation is `this.implementation`.\n ///\n /// @return The initialization code hash.\n function initCodeHash() public view virtual returns (bytes32) {\n return LibClone.initCodeHashERC1967(implementation);\n }\n\n /// @notice Returns the create2 salt for `LibClone.predictDeterministicAddress`\n ///\n /// @param owners Array of initial owners. Each item should be an ABI encoded address or 64 byte public key.\n /// @param nonce The nonce provided to `createAccount()`.\n ///\n /// @return The computed salt.\n function _getSalt(bytes[] calldata owners, uint256 nonce) internal pure returns (bytes32) {\n return keccak256(abi.encode(owners, nonce));\n }\n}\n" + }, + "src/MultiOwnable.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.18;\n\n/// @notice Storage layout used by this contract.\n///\n/// @custom:storage-location erc7201:appliedblockchain.storage.MultiOwnable\nstruct MultiOwnableStorage {\n /// @dev Tracks the index of the next owner to add.\n uint256 nextOwnerIndex;\n /// @dev Tracks number of owners that have been removed.\n uint256 removedOwnersCount;\n /// @dev Maps index to owner bytes, used to idenfitied owners via a uint256 index.\n ///\n /// Some uses—-such as signature validation for secp256r1 public key owners—-\n /// requires the caller to assert the public key of the caller. To economize calldata,\n /// we allow an index to identify an owner, so that the full owner bytes do\n /// not need to be passed.\n ///\n /// The `owner` bytes should either be\n /// - An ABI encoded Ethereum address\n /// - An ABI encoded public key\n mapping(uint256 index => bytes owner) ownerAtIndex;\n /// @dev Mapping of bytes to booleans indicating whether or not\n /// bytes_ is an owner of this contract.\n mapping(bytes bytes_ => bool isOwner_) isOwner;\n}\n\n/// @title Multi Ownable\n///\n/// @notice Auth contract allowing multiple owners, each identified as bytes.\n///\n/// @author Applied Blockchain (https://github.com/appliedblockchain/giano)\n/// @author Coinbase (https://github.com/coinbase/smart-wallet)\ncontract MultiOwnable {\n /// @dev Slot for the `MultiOwnableStorage` struct in storage.\n /// Computed from\n /// keccak256(abi.encode(uint256(keccak256(\"appliedblockchain.storage.MultiOwnable\")) - 1)) & ~bytes32(uint256(0xff))\n /// Follows ERC-7201 (see https://eips.ethereum.org/EIPS/eip-7201).\n bytes32 private constant MUTLI_OWNABLE_STORAGE_LOCATION =\n 0x0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f500;\n\n /// @notice Thrown when the `msg.sender` is not an owner and is trying to call a privileged function.\n error Unauthorized();\n\n /// @notice Thrown when trying to add an already registered owner.\n ///\n /// @param owner The owner bytes.\n error AlreadyOwner(bytes owner);\n\n /// @notice Thrown when trying to remove an owner from an index that is empty.\n ///\n /// @param index The targeted index for removal.\n error NoOwnerAtIndex(uint256 index);\n\n /// @notice Thrown when `owner` argument does not match owner found at index.\n ///\n /// @param index The index of the owner to be removed.\n /// @param expectedOwner The owner passed in the remove call.\n /// @param actualOwner The actual owner at `index`.\n error WrongOwnerAtIndex(uint256 index, bytes expectedOwner, bytes actualOwner);\n\n /// @notice Thrown when a provided owner is neither 64 bytes long (for public key)\n /// nor a ABI encoded address.\n ///\n /// @param owner The invalid owner.\n error InvalidOwnerBytesLength(bytes owner);\n\n /// @notice Thrown if a provided owner is 32 bytes long but does not fit in an `address` type.\n ///\n /// @param owner The invalid owner.\n error InvalidEthereumAddressOwner(bytes owner);\n\n /// @notice Thrown when removeOwnerAtIndex is called and there is only one current owner.\n error LastOwner();\n\n /// @notice Thrown when removeLastOwner is called and there is more than one current owner.\n ///\n /// @param ownersRemaining The number of current owners.\n error NotLastOwner(uint256 ownersRemaining);\n\n /// @notice Emitted when a new owner is registered.\n ///\n /// @param index The owner index of the owner added.\n /// @param owner The owner added.\n event AddOwner(uint256 indexed index, bytes owner);\n\n /// @notice Emitted when an owner is removed.\n ///\n /// @param index The owner index of the owner removed.\n /// @param owner The owner removed.\n event RemoveOwner(uint256 indexed index, bytes owner);\n\n /// @notice Access control modifier ensuring the caller is an authorized owner\n modifier onlyOwner() virtual {\n _checkOwner();\n _;\n }\n\n /// @notice Adds a new Ethereum-address owner.\n ///\n /// @param owner The owner address.\n function addOwnerAddress(address owner) external virtual onlyOwner {\n _addOwnerAtIndex(abi.encode(owner), _getMultiOwnableStorage().nextOwnerIndex++);\n }\n\n /// @notice Adds a new public-key owner.\n ///\n /// @param x The owner public key x coordinate.\n /// @param y The owner public key y coordinate.\n function addOwnerPublicKey(bytes32 x, bytes32 y) external virtual onlyOwner {\n _addOwnerAtIndex(abi.encode(x, y), _getMultiOwnableStorage().nextOwnerIndex++);\n }\n\n /// @notice Removes owner at the given `index`.\n ///\n /// @dev Reverts if the owner is not registered at `index`.\n /// @dev Reverts if there is currently only one owner.\n /// @dev Reverts if `owner` does not match bytes found at `index`.\n ///\n /// @param index The index of the owner to be removed.\n /// @param owner The ABI encoded bytes of the owner to be removed.\n function removeOwnerAtIndex(uint256 index, bytes calldata owner) external virtual onlyOwner {\n if (ownerCount() == 1) {\n revert LastOwner();\n }\n\n _removeOwnerAtIndex(index, owner);\n }\n\n /// @notice Removes owner at the given `index`, which should be the only current owner.\n ///\n /// @dev Reverts if the owner is not registered at `index`.\n /// @dev Reverts if there is currently more than one owner.\n /// @dev Reverts if `owner` does not match bytes found at `index`.\n ///\n /// @param index The index of the owner to be removed.\n /// @param owner The ABI encoded bytes of the owner to be removed.\n function removeLastOwner(uint256 index, bytes calldata owner) external virtual onlyOwner {\n uint256 ownersRemaining = ownerCount();\n if (ownersRemaining > 1) {\n revert NotLastOwner(ownersRemaining);\n }\n\n _removeOwnerAtIndex(index, owner);\n }\n\n /// @notice Checks if the given `account` address is registered as owner.\n ///\n /// @param account The account address to check.\n ///\n /// @return `true` if the account is an owner else `false`.\n function isOwnerAddress(address account) public view virtual returns (bool) {\n return _getMultiOwnableStorage().isOwner[abi.encode(account)];\n }\n\n /// @notice Checks if the given `x`, `y` public key is registered as owner.\n ///\n /// @param x The public key x coordinate.\n /// @param y The public key y coordinate.\n ///\n /// @return `true` if the account is an owner else `false`.\n function isOwnerPublicKey(bytes32 x, bytes32 y) public view virtual returns (bool) {\n return _getMultiOwnableStorage().isOwner[abi.encode(x, y)];\n }\n\n /// @notice Checks if the given `account` bytes is registered as owner.\n ///\n /// @param account The account, should be ABI encoded address or public key.\n ///\n /// @return `true` if the account is an owner else `false`.\n function isOwnerBytes(bytes memory account) public view virtual returns (bool) {\n return _getMultiOwnableStorage().isOwner[account];\n }\n\n /// @notice Returns the owner bytes at the given `index`.\n ///\n /// @param index The index to lookup.\n ///\n /// @return The owner bytes (empty if no owner is registered at this `index`).\n function ownerAtIndex(uint256 index) public view virtual returns (bytes memory) {\n return _getMultiOwnableStorage().ownerAtIndex[index];\n }\n\n /// @notice Returns the next index that will be used to add a new owner.\n ///\n /// @return The next index that will be used to add a new owner.\n function nextOwnerIndex() public view virtual returns (uint256) {\n return _getMultiOwnableStorage().nextOwnerIndex;\n }\n\n /// @notice Returns the current number of owners\n ///\n /// @return The current owner count\n function ownerCount() public view virtual returns (uint256) {\n MultiOwnableStorage storage $ = _getMultiOwnableStorage();\n return $.nextOwnerIndex - $.removedOwnersCount;\n }\n\n /// @notice Tracks the number of owners removed\n ///\n /// @dev Used with `this.nextOwnerIndex` to avoid removing all owners\n ///\n /// @return The number of owners that have been removed.\n function removedOwnersCount() public view virtual returns (uint256) {\n return _getMultiOwnableStorage().removedOwnersCount;\n }\n\n /// @notice Initialize the owners of this contract.\n ///\n /// @dev Intended to be called contract is first deployed and never again.\n /// @dev Reverts if a provided owner is neither 64 bytes long (for public key) nor a valid address.\n ///\n /// @param owners The initial set of owners.\n function _initializeOwners(bytes[] memory owners) internal virtual {\n MultiOwnableStorage storage $ = _getMultiOwnableStorage();\n uint256 nextOwnerIndex_ = $.nextOwnerIndex;\n for (uint256 i; i < owners.length; i++) {\n if (owners[i].length != 32 && owners[i].length != 64) {\n revert InvalidOwnerBytesLength(owners[i]);\n }\n\n if (owners[i].length == 32 && uint256(bytes32(owners[i])) > type(uint160).max) {\n revert InvalidEthereumAddressOwner(owners[i]);\n }\n\n _addOwnerAtIndex(owners[i], nextOwnerIndex_++);\n }\n $.nextOwnerIndex = nextOwnerIndex_;\n }\n\n /// @notice Adds an owner at the given `index`.\n ///\n /// @dev Reverts if `owner` is already registered as an owner.\n ///\n /// @param owner The owner raw bytes to register.\n /// @param index The index to write to.\n function _addOwnerAtIndex(bytes memory owner, uint256 index) internal virtual {\n if (isOwnerBytes(owner)) revert AlreadyOwner(owner);\n\n MultiOwnableStorage storage $ = _getMultiOwnableStorage();\n $.isOwner[owner] = true;\n $.ownerAtIndex[index] = owner;\n\n emit AddOwner(index, owner);\n }\n\n /// @notice Removes owner at the given `index`.\n ///\n /// @dev Reverts if the owner is not registered at `index`.\n /// @dev Reverts if `owner` does not match bytes found at `index`.\n ///\n /// @param index The index of the owner to be removed.\n /// @param owner The ABI encoded bytes of the owner to be removed.\n function _removeOwnerAtIndex(uint256 index, bytes calldata owner) internal virtual {\n bytes memory owner_ = ownerAtIndex(index);\n if (owner_.length == 0) revert NoOwnerAtIndex(index);\n if (keccak256(owner_) != keccak256(owner)) {\n revert WrongOwnerAtIndex({index: index, expectedOwner: owner, actualOwner: owner_});\n }\n\n MultiOwnableStorage storage $ = _getMultiOwnableStorage();\n delete $.isOwner[owner];\n delete $.ownerAtIndex[index];\n $.removedOwnersCount++;\n\n emit RemoveOwner(index, owner);\n }\n\n /// @notice Checks if the sender is an owner of this contract or the contract itself.\n ///\n /// @dev Revert if the sender is not an owner fo the contract itself.\n function _checkOwner() internal view virtual {\n if (isOwnerAddress(msg.sender) || (msg.sender == address(this))) {\n return;\n }\n\n revert Unauthorized();\n }\n\n /// @notice Helper function to get a storage reference to the `MultiOwnableStorage` struct.\n ///\n /// @return $ A storage reference to the `MultiOwnableStorage` struct.\n function _getMultiOwnableStorage() internal pure returns (MultiOwnableStorage storage $) {\n assembly (\"memory-safe\") {\n $.slot := MUTLI_OWNABLE_STORAGE_LOCATION\n }\n }\n}\n" + }, + "src/utils/ERC1271InputGenerator.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {GianoSmartWallet} from \"../GianoSmartWallet.sol\";\n\n/// @title ERC1271 Input Generator\n///\n/// @notice Helper contract for generating an ERC-1271 input hash to sign for deployed and undeployed\n/// GianoSmartWallet. May be useful for generating ERC-6492 compliant signatures.\n/// Inspired by Ambire's DeploylessUniversalSigValidator\n/// https://github.com/AmbireTech/signature-validator/blob/d5f84f5fc00bfdf79b80205b983a8258b6d1b3ea/contracts/DeploylessUniversalSigValidator.sol.\n///\n/// @dev This contract is not meant to ever actually be deployed, only mock deployed and used via a static eth_call.\n///\n/// @author Applied Blockchain (https://github.com/appliedblockchain/giano)\n/// @author Coinbase (https://github.com/coinbase/smart-wallet)\ncontract ERC1271InputGenerator {\n /// @notice Thrown when call to `accountFactory` with `factoryCalldata` fails.\n error AccountDeploymentFailed();\n\n /// @notice Thrown when the address returned from call to `accountFactory` does not\n /// match passed account\n ///\n /// @param account The passed account\n /// @param returned The returned account\n error ReturnedAddressDoesNotMatchAccount(address account, address returned);\n\n /// @notice Computes and returns the expected ERC-1271 replay-safe hash for a GianoSmartWallet.\n ///\n /// @dev `accountFactory` can be any address if the account is already deployed.\n /// @dev `factoryCalldata` can be 0x if the account is already deployed.\n /// @dev If calling with solidity, the `replaySafeHash` will be `.code`.\n ///\n /// @param account The account that will receive the ERC-1271 `isValidSignature` call.\n /// @param hash The hash the wallet was asked to sign.\n /// @param accountFactory The factory that will be used to deploy the account (if not already deployed).\n /// @param factoryCalldata The calldata that will be used to deploy the account (if not already deployed).\n constructor(GianoSmartWallet account, bytes32 hash, address accountFactory, bytes memory factoryCalldata) {\n // This allows us to get a replay-safe hash on any deployed or undeployed account\n // in a single eth_call, i.e. without deploying the contract. We do this by calling replaySafeHash on a deployed\n // account,\n // or by simulating the deployment of an undeployed account and then calling replaySafeHash on it.\n bytes32 replaySafeHash = _gianoSmartWallet1271Input(account, hash, accountFactory, factoryCalldata);\n assembly {\n // store replay safe hash\n mstore(0x80, replaySafeHash)\n // return replay safe hash\n return(0x80, 0x20)\n }\n }\n\n /// @notice Helper method to get a replay-safe hash from the given `account` by calling its `replaySafeHash()`\n /// method.\n ///\n ///\n /// @dev Deploys the account if not already deployed before calling `replaySafeHash` on it.\n /// @dev Implements ERC-6492, see https://eips.ethereum.org/EIPS/eip-6492.\n ///\n /// @param account The account that will receive the ERC-1271 `isValidSignature` call.\n /// @param hash The hash the wallet was asked to sign.\n /// @param accountFactory The factory that will be used to deploy the account (if not already deployed).\n /// @param factoryCalldata The calldata that will be used to deploy the account (if not already deployed).\n ///\n /// @return The replay-safe hash.\n function _gianoSmartWallet1271Input(\n GianoSmartWallet account,\n bytes32 hash,\n address accountFactory,\n bytes memory factoryCalldata\n ) internal returns (bytes32) {\n // If the account is already deployed, call and return replaySafeHash.\n if (address(account).code.length > 0) {\n return account.replaySafeHash(hash);\n }\n\n // Deploy the account.\n (bool success, bytes memory result) = accountFactory.call(factoryCalldata);\n if (!success) {\n revert AccountDeploymentFailed();\n }\n\n address returnAddress = abi.decode(result, (address));\n if (returnAddress != address(account)) {\n revert ReturnedAddressDoesNotMatchAccount(address(account), returnAddress);\n }\n\n // Call and return replaySafeHash on the now-deployed account.\n return account.replaySafeHash(hash);\n }\n}\n" + }, + "webauthn-sol/WebAuthn.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {FCL_ecdsa} from \"FreshCryptoLib/FCL_ecdsa.sol\";\nimport {FCL_Elliptic_ZZ} from \"FreshCryptoLib/FCL_elliptic.sol\";\nimport {Base64} from \"openzeppelin-contracts/contracts/utils/Base64.sol\";\nimport {LibString} from \"solady/utils/LibString.sol\";\n\n/// @title WebAuthn\n///\n/// @notice A library for verifying WebAuthn Authentication Assertions, built off the work\n/// of Daimo.\n///\n/// @dev Attempts to use the RIP-7212 precompile for signature verification.\n/// If precompile verification fails, it falls back to FreshCryptoLib.\n///\n/// @author Coinbase (https://github.com/base-org/webauthn-sol)\n/// @author Daimo (https://github.com/daimo-eth/p256-verifier/blob/master/src/WebAuthn.sol)\nlibrary WebAuthn {\n using LibString for string;\n\n struct WebAuthnAuth {\n /// @dev The WebAuthn authenticator data.\n /// See https://www.w3.org/TR/webauthn-2/#dom-authenticatorassertionresponse-authenticatordata.\n bytes authenticatorData;\n /// @dev The WebAuthn client data JSON.\n /// See https://www.w3.org/TR/webauthn-2/#dom-authenticatorresponse-clientdatajson.\n string clientDataJSON;\n /// @dev The index at which \"challenge\":\"...\" occurs in `clientDataJSON`.\n uint256 challengeIndex;\n /// @dev The index at which \"type\":\"...\" occurs in `clientDataJSON`.\n uint256 typeIndex;\n /// @dev The r value of secp256r1 signature\n uint256 r;\n /// @dev The s value of secp256r1 signature\n uint256 s;\n }\n\n /// @dev Bit 0 of the authenticator data struct, corresponding to the \"User Present\" bit.\n /// See https://www.w3.org/TR/webauthn-2/#flags.\n bytes1 private constant _AUTH_DATA_FLAGS_UP = 0x01;\n\n /// @dev Bit 2 of the authenticator data struct, corresponding to the \"User Verified\" bit.\n /// See https://www.w3.org/TR/webauthn-2/#flags.\n bytes1 private constant _AUTH_DATA_FLAGS_UV = 0x04;\n\n /// @dev Secp256r1 curve order / 2 used as guard to prevent signature malleability issue.\n uint256 private constant _P256_N_DIV_2 = FCL_Elliptic_ZZ.n / 2;\n\n /// @dev The precompiled contract address to use for signature verification in the “secp256r1” elliptic curve.\n /// See https://github.com/ethereum/RIPs/blob/master/RIPS/rip-7212.md.\n address private constant _VERIFIER = address(0x100);\n\n /// @dev The expected type (hash) in the client data JSON when verifying assertion signatures.\n /// See https://www.w3.org/TR/webauthn-2/#dom-collectedclientdata-type\n bytes32 private constant _EXPECTED_TYPE_HASH = keccak256('\"type\":\"webauthn.get\"');\n\n ///\n /// @notice Verifies a Webauthn Authentication Assertion as described\n /// in https://www.w3.org/TR/webauthn-2/#sctn-verifying-assertion.\n ///\n /// @dev We do not verify all the steps as described in the specification, only ones relevant to our context.\n /// Please carefully read through this list before usage.\n ///\n /// Specifically, we do verify the following:\n /// - Verify that authenticatorData (which comes from the authenticator, such as iCloud Keychain) indicates\n /// a well-formed assertion with the user present bit set. If `requireUV` is set, checks that the authenticator\n /// enforced user verification. User verification should be required if, and only if, options.userVerification\n /// is set to required in the request.\n /// - Verifies that the client JSON is of type \"webauthn.get\", i.e. the client was responding to a request to\n /// assert authentication.\n /// - Verifies that the client JSON contains the requested challenge.\n /// - Verifies that (r, s) constitute a valid signature over both the authenicatorData and client JSON, for public\n /// key (x, y).\n ///\n /// We make some assumptions about the particular use case of this verifier, so we do NOT verify the following:\n /// - Does NOT verify that the origin in the `clientDataJSON` matches the Relying Party's origin: tt is considered\n /// the authenticator's responsibility to ensure that the user is interacting with the correct RP. This is\n /// enforced by most high quality authenticators properly, particularly the iCloud Keychain and Google Password\n /// Manager were tested.\n /// - Does NOT verify That `topOrigin` in `clientDataJSON` is well-formed: We assume it would never be present, i.e.\n /// the credentials are never used in a cross-origin/iframe context. The website/app set up should disallow\n /// cross-origin usage of the credentials. This is the default behaviour for created credentials in common settings.\n /// - Does NOT verify that the `rpIdHash` in `authenticatorData` is the SHA-256 hash of the RP ID expected by the Relying\n /// Party: this means that we rely on the authenticator to properly enforce credentials to be used only by the correct RP.\n /// This is generally enforced with features like Apple App Site Association and Google Asset Links. To protect from\n /// edge cases in which a previously-linked RP ID is removed from the authorised RP IDs, we recommend that messages\n /// signed by the authenticator include some expiry mechanism.\n /// - Does NOT verify the credential backup state: this assumes the credential backup state is NOT used as part of Relying\n /// Party business logic or policy.\n /// - Does NOT verify the values of the client extension outputs: this assumes that the Relying Party does not use client\n /// extension outputs.\n /// - Does NOT verify the signature counter: signature counters are intended to enable risk scoring for the Relying Party.\n /// This assumes risk scoring is not used as part of Relying Party business logic or policy.\n /// - Does NOT verify the attestation object: this assumes that response.attestationObject is NOT present in the response,\n /// i.e. the RP does not intend to verify an attestation.\n ///\n /// @param challenge The challenge that was provided by the relying party.\n /// @param requireUV A boolean indicating whether user verification is required.\n /// @param webAuthnAuth The `WebAuthnAuth` struct.\n /// @param x The x coordinate of the public key.\n /// @param y The y coordinate of the public key.\n ///\n /// @return `true` if the authentication assertion passed validation, else `false`.\n function verify(bytes memory challenge, bool requireUV, WebAuthnAuth memory webAuthnAuth, uint256 x, uint256 y)\n internal\n view\n returns (bool)\n {\n if (webAuthnAuth.s > _P256_N_DIV_2) {\n // guard against signature malleability\n return false;\n }\n\n // 11. Verify that the value of C.type is the string webauthn.get.\n // bytes(\"type\":\"webauthn.get\").length = 21\n string memory _type = webAuthnAuth.clientDataJSON.slice(webAuthnAuth.typeIndex, webAuthnAuth.typeIndex + 21);\n if (keccak256(bytes(_type)) != _EXPECTED_TYPE_HASH) {\n return false;\n }\n\n // 12. Verify that the value of C.challenge equals the base64url encoding of options.challenge.\n bytes memory expectedChallenge = bytes(string.concat('\"challenge\":\"', Base64.encodeURL(challenge), '\"'));\n string memory actualChallenge =\n webAuthnAuth.clientDataJSON.slice(webAuthnAuth.challengeIndex, webAuthnAuth.challengeIndex + expectedChallenge.length);\n if (keccak256(bytes(actualChallenge)) != keccak256(expectedChallenge)) {\n return false;\n }\n\n // Skip 13., 14., 15.\n\n // 16. Verify that the UP bit of the flags in authData is set.\n if (webAuthnAuth.authenticatorData[32] & _AUTH_DATA_FLAGS_UP != _AUTH_DATA_FLAGS_UP) {\n return false;\n }\n\n // 17. If user verification is required for this assertion, verify that the User Verified bit of the flags in\n // authData is set.\n if (requireUV && (webAuthnAuth.authenticatorData[32] & _AUTH_DATA_FLAGS_UV) != _AUTH_DATA_FLAGS_UV) {\n return false;\n }\n\n // skip 18.\n\n // 19. Let hash be the result of computing a hash over the cData using SHA-256.\n bytes32 clientDataJSONHash = sha256(bytes(webAuthnAuth.clientDataJSON));\n\n // 20. Using credentialPublicKey, verify that sig is a valid signature over the binary concatenation of authData\n // and hash.\n bytes32 messageHash = sha256(abi.encodePacked(webAuthnAuth.authenticatorData, clientDataJSONHash));\n bytes memory args = abi.encode(messageHash, webAuthnAuth.r, webAuthnAuth.s, x, y);\n // try the RIP-7212 precompile address\n (bool success, bytes memory ret) = _VERIFIER.staticcall(args);\n // staticcall will not revert if address has no code\n // check return length\n // note that even if precompile exists, ret.length is 0 when verification returns false\n // so an invalid signature will be checked twice: once by the precompile and once by FCL.\n // Ideally this signature failure is simulated offchain and no one actually pay this gas.\n bool valid = ret.length > 0;\n if (success && valid) return abi.decode(ret, (uint256)) == 1;\n\n return FCL_ecdsa.ecdsa_verify(messageHash, webAuthnAuth.r, webAuthnAuth.s, x, y);\n }\n}\n" + } + }, + "settings": { + "optimizer": { + "enabled": true, + "runs": 200 + }, + "viaIR": true, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "output": { + "errors": [ + { + "component": "general", + "errorCode": "2018", + "formattedMessage": "Warning: Function state mutability can be restricted to pure\n --> src/AuthenticatedStaticCaller.sol:19:5:\n |\n19 | function getSignatureLifetime() external view returns (uint256) {\n | ^ (Relevant source part starts here and spans across multiple lines).\n\n", + "message": "Function state mutability can be restricted to pure", + "severity": "warning", + "sourceLocation": { + "end": 559, + "file": "src/AuthenticatedStaticCaller.sol", + "start": 454 + }, + "type": "Warning" + } + ], + "sources": { + "@account-abstraction/contracts/core/Helpers.sol": { + "ast": { + "absolutePath": "@account-abstraction/contracts/core/Helpers.sol", + "exportedSymbols": { + "SIG_VALIDATION_FAILED": [ + 4 + ], + "SIG_VALIDATION_SUCCESS": [ + 7 + ], + "ValidationData": [ + 15 + ], + "_packValidationData": [ + 112, + 150 + ], + "_parseValidationData": [ + 75 + ], + "calldataKeccak": [ + 160 + ], + "min": [ + 178 + ] + }, + "id": 179, + "license": "GPL-3.0", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "^", + "0.8", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "36:24:0" + }, + { + "constant": true, + "id": 4, + "mutability": "constant", + "name": "SIG_VALIDATION_FAILED", + "nameLocation": "281:21:0", + "nodeType": "VariableDeclaration", + "scope": 179, + "src": "264:42:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "264:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "31", + "id": 3, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "305:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 7, + "mutability": "constant", + "name": "SIG_VALIDATION_SUCCESS", + "nameLocation": "440:22:0", + "nodeType": "VariableDeclaration", + "scope": 179, + "src": "423:43:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "423:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "30", + "id": 6, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "465:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "visibility": "internal" + }, + { + "canonicalName": "ValidationData", + "documentation": { + "id": 8, + "nodeType": "StructuredDocumentation", + "src": "470:640:0", + "text": " Returned data from validateUserOp.\n validateUserOp returns a uint256, which is created by `_packedValidationData` and\n parsed by `_parseValidationData`.\n @param aggregator - address(0) - The account validated the signature by itself.\n address(1) - The account failed to validate the signature.\n otherwise - This is an address of a signature aggregator that must\n be used to validate the signature.\n @param validAfter - This UserOp is valid only after this timestamp.\n @param validaUntil - This UserOp is valid only up to this timestamp." + }, + "id": 15, + "members": [ + { + "constant": false, + "id": 10, + "mutability": "mutable", + "name": "aggregator", + "nameLocation": "1147:10:0", + "nodeType": "VariableDeclaration", + "scope": 15, + "src": "1139:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1139:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12, + "mutability": "mutable", + "name": "validAfter", + "nameLocation": "1170:10:0", + "nodeType": "VariableDeclaration", + "scope": 15, + "src": "1163:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + }, + "typeName": { + "id": 11, + "name": "uint48", + "nodeType": "ElementaryTypeName", + "src": "1163:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14, + "mutability": "mutable", + "name": "validUntil", + "nameLocation": "1193:10:0", + "nodeType": "VariableDeclaration", + "scope": 15, + "src": "1186:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + }, + "typeName": { + "id": 13, + "name": "uint48", + "nodeType": "ElementaryTypeName", + "src": "1186:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "visibility": "internal" + } + ], + "name": "ValidationData", + "nameLocation": "1118:14:0", + "nodeType": "StructDefinition", + "scope": 179, + "src": "1111:95:0", + "visibility": "public" + }, + { + "body": { + "id": 74, + "nodeType": "Block", + "src": "1472:314:0", + "statements": [ + { + "assignments": [ + 25 + ], + "declarations": [ + { + "constant": false, + "id": 25, + "mutability": "mutable", + "name": "aggregator", + "nameLocation": "1486:10:0", + "nodeType": "VariableDeclaration", + "scope": 74, + "src": "1478:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 24, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1478:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 33, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 30, + "name": "validationData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18, + "src": "1515:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 29, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1507:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 28, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "1507:7:0", + "typeDescriptions": {} + } + }, + "id": 31, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1507:23:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 27, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1499:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 26, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1499:7:0", + "typeDescriptions": {} + } + }, + "id": 32, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1499:32:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1478:53:0" + }, + { + "assignments": [ + 35 + ], + "declarations": [ + { + "constant": false, + "id": 35, + "mutability": "mutable", + "name": "validUntil", + "nameLocation": "1544:10:0", + "nodeType": "VariableDeclaration", + "scope": 74, + "src": "1537:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + }, + "typeName": { + "id": 34, + "name": "uint48", + "nodeType": "ElementaryTypeName", + "src": "1537:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "visibility": "internal" + } + ], + "id": 42, + "initialValue": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 40, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 38, + "name": "validationData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18, + "src": "1564:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "313630", + "id": 39, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1582:3:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_160_by_1", + "typeString": "int_const 160" + }, + "value": "160" + }, + "src": "1564:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 37, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1557:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint48_$", + "typeString": "type(uint48)" + }, + "typeName": { + "id": 36, + "name": "uint48", + "nodeType": "ElementaryTypeName", + "src": "1557:6:0", + "typeDescriptions": {} + } + }, + "id": 41, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1557:29:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1537:49:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + }, + "id": 45, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 43, + "name": "validUntil", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "1596:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 44, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1610:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1596:15:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 55, + "nodeType": "IfStatement", + "src": "1592:67:0", + "trueBody": { + "id": 54, + "nodeType": "Block", + "src": "1613:46:0", + "statements": [ + { + "expression": { + "id": 52, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 46, + "name": "validUntil", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "1623:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "arguments": [ + { + "id": 49, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1641:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint48_$", + "typeString": "type(uint48)" + }, + "typeName": { + "id": 48, + "name": "uint48", + "nodeType": "ElementaryTypeName", + "src": "1641:6:0", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint48_$", + "typeString": "type(uint48)" + } + ], + "id": 47, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "1636:4:0", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 50, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1636:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint48", + "typeString": "type(uint48)" + } + }, + "id": 51, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1649:3:0", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "1636:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "src": "1623:29:0", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "id": 53, + "nodeType": "ExpressionStatement", + "src": "1623:29:0" + } + ] + } + }, + { + "assignments": [ + 57 + ], + "declarations": [ + { + "constant": false, + "id": 57, + "mutability": "mutable", + "name": "validAfter", + "nameLocation": "1671:10:0", + "nodeType": "VariableDeclaration", + "scope": 74, + "src": "1664:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + }, + "typeName": { + "id": 56, + "name": "uint48", + "nodeType": "ElementaryTypeName", + "src": "1664:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "visibility": "internal" + } + ], + "id": 67, + "initialValue": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 65, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 60, + "name": "validationData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18, + "src": "1691:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_rational_208_by_1", + "typeString": "int_const 208" + }, + "id": 63, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3438", + "id": 61, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1710:2:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_48_by_1", + "typeString": "int_const 48" + }, + "value": "48" + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "313630", + "id": 62, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1715:3:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_160_by_1", + "typeString": "int_const 160" + }, + "value": "160" + }, + "src": "1710:8:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_208_by_1", + "typeString": "int_const 208" + } + } + ], + "id": 64, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1709:10:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_208_by_1", + "typeString": "int_const 208" + } + }, + "src": "1691:28:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 59, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1684:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint48_$", + "typeString": "type(uint48)" + }, + "typeName": { + "id": 58, + "name": "uint48", + "nodeType": "ElementaryTypeName", + "src": "1684:6:0", + "typeDescriptions": {} + } + }, + "id": 66, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1684:36:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1664:56:0" + }, + { + "expression": { + "arguments": [ + { + "id": 69, + "name": "aggregator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 25, + "src": "1748:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 70, + "name": "validAfter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57, + "src": "1760:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + { + "id": 71, + "name": "validUntil", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "1772:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + }, + { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + ], + "id": 68, + "name": "ValidationData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15, + "src": "1733:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_ValidationData_$15_storage_ptr_$", + "typeString": "type(struct ValidationData storage pointer)" + } + }, + "id": 72, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1733:50:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ValidationData_$15_memory_ptr", + "typeString": "struct ValidationData memory" + } + }, + "functionReturnParameters": 23, + "id": 73, + "nodeType": "Return", + "src": "1726:57:0" + } + ] + }, + "documentation": { + "id": 16, + "nodeType": "StructuredDocumentation", + "src": "1208:161:0", + "text": " Extract sigFailed, validAfter, validUntil.\n Also convert zero validUntil to type(uint48).max.\n @param validationData - The packed validation data." + }, + "id": 75, + "implemented": true, + "kind": "freeFunction", + "modifiers": [], + "name": "_parseValidationData", + "nameLocation": "1379:20:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 19, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 18, + "mutability": "mutable", + "name": "validationData", + "nameLocation": "1413:14:0", + "nodeType": "VariableDeclaration", + "scope": 75, + "src": "1405:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 17, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1405:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1399:30:0" + }, + "returnParameters": { + "id": 23, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 22, + "mutability": "mutable", + "name": "data", + "nameLocation": "1466:4:0", + "nodeType": "VariableDeclaration", + "scope": 75, + "src": "1444:26:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ValidationData_$15_memory_ptr", + "typeString": "struct ValidationData" + }, + "typeName": { + "id": 21, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 20, + "name": "ValidationData", + "nameLocations": [ + "1444:14:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 15, + "src": "1444:14:0" + }, + "referencedDeclaration": 15, + "src": "1444:14:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ValidationData_$15_storage_ptr", + "typeString": "struct ValidationData" + } + }, + "visibility": "internal" + } + ], + "src": "1443:28:0" + }, + "scope": 179, + "src": "1370:416:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 111, + "nodeType": "Block", + "src": "1982:143:0", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 109, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 97, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "expression": { + "id": 86, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 79, + "src": "2011:4:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ValidationData_$15_memory_ptr", + "typeString": "struct ValidationData memory" + } + }, + "id": 87, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2016:10:0", + "memberName": "aggregator", + "nodeType": "MemberAccess", + "referencedDeclaration": 10, + "src": "2011:15:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 85, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2003:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 84, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "2003:7:0", + "typeDescriptions": {} + } + }, + "id": 88, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2003:24:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "nodeType": "BinaryOperation", + "operator": "|", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 95, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "expression": { + "id": 91, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 79, + "src": "2047:4:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ValidationData_$15_memory_ptr", + "typeString": "struct ValidationData memory" + } + }, + "id": 92, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2052:10:0", + "memberName": "validUntil", + "nodeType": "MemberAccess", + "referencedDeclaration": 14, + "src": "2047:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + ], + "id": 90, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2039:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 89, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2039:7:0", + "typeDescriptions": {} + } + }, + "id": 93, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2039:24:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "313630", + "id": 94, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2067:3:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_160_by_1", + "typeString": "int_const 160" + }, + "value": "160" + }, + "src": "2039:31:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 96, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2038:33:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2003:68:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "|", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 107, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "expression": { + "id": 100, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 79, + "src": "2091:4:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ValidationData_$15_memory_ptr", + "typeString": "struct ValidationData memory" + } + }, + "id": 101, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2096:10:0", + "memberName": "validAfter", + "nodeType": "MemberAccess", + "referencedDeclaration": 12, + "src": "2091:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + ], + "id": 99, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2083:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 98, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2083:7:0", + "typeDescriptions": {} + } + }, + "id": 102, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2083:24:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_rational_208_by_1", + "typeString": "int_const 208" + }, + "id": 105, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "313630", + "id": 103, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2112:3:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_160_by_1", + "typeString": "int_const 160" + }, + "value": "160" + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "3438", + "id": 104, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2118:2:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_48_by_1", + "typeString": "int_const 48" + }, + "value": "48" + }, + "src": "2112:8:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_208_by_1", + "typeString": "int_const 208" + } + } + ], + "id": 106, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2111:10:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_208_by_1", + "typeString": "int_const 208" + } + }, + "src": "2083:38:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 108, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2082:40:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2003:119:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 83, + "id": 110, + "nodeType": "Return", + "src": "1988:134:0" + } + ] + }, + "documentation": { + "id": 76, + "nodeType": "StructuredDocumentation", + "src": "1788:107:0", + "text": " Helper to pack the return value for validateUserOp.\n @param data - The ValidationData to pack." + }, + "id": 112, + "implemented": true, + "kind": "freeFunction", + "modifiers": [], + "name": "_packValidationData", + "nameLocation": "1905:19:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 80, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 79, + "mutability": "mutable", + "name": "data", + "nameLocation": "1952:4:0", + "nodeType": "VariableDeclaration", + "scope": 112, + "src": "1930:26:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ValidationData_$15_memory_ptr", + "typeString": "struct ValidationData" + }, + "typeName": { + "id": 78, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 77, + "name": "ValidationData", + "nameLocations": [ + "1930:14:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 15, + "src": "1930:14:0" + }, + "referencedDeclaration": 15, + "src": "1930:14:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ValidationData_$15_storage_ptr", + "typeString": "struct ValidationData" + } + }, + "visibility": "internal" + } + ], + "src": "1924:34:0" + }, + "returnParameters": { + "id": 83, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 82, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 112, + "src": "1973:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 81, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1973:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1972:9:0" + }, + "scope": 179, + "src": "1896:229:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 149, + "nodeType": "Block", + "src": "2568:128:0", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 147, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 136, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "condition": { + "id": 124, + "name": "sigFailed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 115, + "src": "2590:9:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "hexValue": "30", + "id": 126, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2606:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "id": 127, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "2590:17:0", + "trueExpression": { + "hexValue": "31", + "id": 125, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2602:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "id": 128, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2589:19:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "|", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 134, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 131, + "name": "validUntil", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 117, + "src": "2628:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + ], + "id": 130, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2620:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 129, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2620:7:0", + "typeDescriptions": {} + } + }, + "id": 132, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2620:19:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "313630", + "id": 133, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2643:3:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_160_by_1", + "typeString": "int_const 160" + }, + "value": "160" + }, + "src": "2620:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 135, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2619:28:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2589:58:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "|", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 139, + "name": "validAfter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "2667:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + ], + "id": 138, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2659:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 137, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2659:7:0", + "typeDescriptions": {} + } + }, + "id": 140, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2659:19:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_rational_208_by_1", + "typeString": "int_const 208" + }, + "id": 143, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "313630", + "id": 141, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2683:3:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_160_by_1", + "typeString": "int_const 160" + }, + "value": "160" + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "3438", + "id": 142, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2689:2:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_48_by_1", + "typeString": "int_const 48" + }, + "value": "48" + }, + "src": "2683:8:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_208_by_1", + "typeString": "int_const 208" + } + } + ], + "id": 144, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2682:10:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_208_by_1", + "typeString": "int_const 208" + } + }, + "src": "2659:33:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 146, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2658:35:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2589:104:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 123, + "id": 148, + "nodeType": "Return", + "src": "2574:119:0" + } + ] + }, + "documentation": { + "id": 113, + "nodeType": "StructuredDocumentation", + "src": "2127:320:0", + "text": " Helper to pack the return value for validateUserOp, when not using an aggregator.\n @param sigFailed - True for signature failure, false for success.\n @param validUntil - Last timestamp this UserOperation is valid (or zero for infinite).\n @param validAfter - First timestamp this UserOperation is valid." + }, + "id": 150, + "implemented": true, + "kind": "freeFunction", + "modifiers": [], + "name": "_packValidationData", + "nameLocation": "2457:19:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 120, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 115, + "mutability": "mutable", + "name": "sigFailed", + "nameLocation": "2487:9:0", + "nodeType": "VariableDeclaration", + "scope": 150, + "src": "2482:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 114, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2482:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 117, + "mutability": "mutable", + "name": "validUntil", + "nameLocation": "2509:10:0", + "nodeType": "VariableDeclaration", + "scope": 150, + "src": "2502:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + }, + "typeName": { + "id": 116, + "name": "uint48", + "nodeType": "ElementaryTypeName", + "src": "2502:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 119, + "mutability": "mutable", + "name": "validAfter", + "nameLocation": "2532:10:0", + "nodeType": "VariableDeclaration", + "scope": 150, + "src": "2525:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + }, + "typeName": { + "id": 118, + "name": "uint48", + "nodeType": "ElementaryTypeName", + "src": "2525:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "visibility": "internal" + } + ], + "src": "2476:68:0" + }, + "returnParameters": { + "id": 123, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 122, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 150, + "src": "2559:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 121, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2559:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2558:9:0" + }, + "scope": 179, + "src": "2448:248:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 159, + "nodeType": "Block", + "src": "2951:209:0", + "statements": [ + { + "AST": { + "nativeSrc": "2986:168:0", + "nodeType": "YulBlock", + "src": "2986:168:0", + "statements": [ + { + "nativeSrc": "3000:22:0", + "nodeType": "YulVariableDeclaration", + "src": "3000:22:0", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3017:4:0", + "nodeType": "YulLiteral", + "src": "3017:4:0", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "3011:5:0", + "nodeType": "YulIdentifier", + "src": "3011:5:0" + }, + "nativeSrc": "3011:11:0", + "nodeType": "YulFunctionCall", + "src": "3011:11:0" + }, + "variables": [ + { + "name": "mem", + "nativeSrc": "3004:3:0", + "nodeType": "YulTypedName", + "src": "3004:3:0", + "type": "" + } + ] + }, + { + "nativeSrc": "3035:22:0", + "nodeType": "YulVariableDeclaration", + "src": "3035:22:0", + "value": { + "name": "data.length", + "nativeSrc": "3046:11:0", + "nodeType": "YulIdentifier", + "src": "3046:11:0" + }, + "variables": [ + { + "name": "len", + "nativeSrc": "3039:3:0", + "nodeType": "YulTypedName", + "src": "3039:3:0", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "mem", + "nativeSrc": "3083:3:0", + "nodeType": "YulIdentifier", + "src": "3083:3:0" + }, + { + "name": "data.offset", + "nativeSrc": "3088:11:0", + "nodeType": "YulIdentifier", + "src": "3088:11:0" + }, + { + "name": "len", + "nativeSrc": "3101:3:0", + "nodeType": "YulIdentifier", + "src": "3101:3:0" + } + ], + "functionName": { + "name": "calldatacopy", + "nativeSrc": "3070:12:0", + "nodeType": "YulIdentifier", + "src": "3070:12:0" + }, + "nativeSrc": "3070:35:0", + "nodeType": "YulFunctionCall", + "src": "3070:35:0" + }, + "nativeSrc": "3070:35:0", + "nodeType": "YulExpressionStatement", + "src": "3070:35:0" + }, + { + "nativeSrc": "3118:26:0", + "nodeType": "YulAssignment", + "src": "3118:26:0", + "value": { + "arguments": [ + { + "name": "mem", + "nativeSrc": "3135:3:0", + "nodeType": "YulIdentifier", + "src": "3135:3:0" + }, + { + "name": "len", + "nativeSrc": "3140:3:0", + "nodeType": "YulIdentifier", + "src": "3140:3:0" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "3125:9:0", + "nodeType": "YulIdentifier", + "src": "3125:9:0" + }, + "nativeSrc": "3125:19:0", + "nodeType": "YulFunctionCall", + "src": "3125:19:0" + }, + "variableNames": [ + { + "name": "ret", + "nativeSrc": "3118:3:0", + "nodeType": "YulIdentifier", + "src": "3118:3:0" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 153, + "isOffset": false, + "isSlot": false, + "src": "3046:11:0", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 153, + "isOffset": true, + "isSlot": false, + "src": "3088:11:0", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 156, + "isOffset": false, + "isSlot": false, + "src": "3118:3:0", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 158, + "nodeType": "InlineAssembly", + "src": "2961:193:0" + } + ] + }, + "documentation": { + "id": 151, + "nodeType": "StructuredDocumentation", + "src": "2698:176:0", + "text": " keccak function over calldata.\n @dev copy calldata into memory, do keccak and drop allocated memory. Strangely, this is more efficient than letting solidity do it." + }, + "id": 160, + "implemented": true, + "kind": "freeFunction", + "modifiers": [], + "name": "calldataKeccak", + "nameLocation": "2888:14:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 154, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 153, + "mutability": "mutable", + "name": "data", + "nameLocation": "2918:4:0", + "nodeType": "VariableDeclaration", + "scope": 160, + "src": "2903:19:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 152, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2903:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "2902:21:0" + }, + "returnParameters": { + "id": 157, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 156, + "mutability": "mutable", + "name": "ret", + "nameLocation": "2946:3:0", + "nodeType": "VariableDeclaration", + "scope": 160, + "src": "2938:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 155, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2938:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2937:13:0" + }, + "scope": 179, + "src": "2879:281:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 177, + "nodeType": "Block", + "src": "3321:37:0", + "statements": [ + { + "expression": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 170, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "3338:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 171, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "3342:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3338:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "id": 174, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "3350:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 175, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "3338:13:0", + "trueExpression": { + "id": 173, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "3346:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 169, + "id": 176, + "nodeType": "Return", + "src": "3331:20:0" + } + ] + }, + "documentation": { + "id": 161, + "nodeType": "StructuredDocumentation", + "src": "3163:95:0", + "text": " The minimum of two numbers.\n @param a - First number.\n @param b - Second number." + }, + "id": 178, + "implemented": true, + "kind": "freeFunction", + "modifiers": [], + "name": "min", + "nameLocation": "3272:3:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 166, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 163, + "mutability": "mutable", + "name": "a", + "nameLocation": "3284:1:0", + "nodeType": "VariableDeclaration", + "scope": 178, + "src": "3276:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 162, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3276:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 165, + "mutability": "mutable", + "name": "b", + "nameLocation": "3295:1:0", + "nodeType": "VariableDeclaration", + "scope": 178, + "src": "3287:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 164, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3287:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3275:22:0" + }, + "returnParameters": { + "id": 169, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 168, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 178, + "src": "3312:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 167, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3312:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3311:9:0" + }, + "scope": 179, + "src": "3263:95:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "src": "36:3323:0" + }, + "id": 0 + }, + "@account-abstraction/contracts/core/UserOperationLib.sol": { + "ast": { + "absolutePath": "@account-abstraction/contracts/core/UserOperationLib.sol", + "exportedSymbols": { + "PackedUserOperation": [ + 574 + ], + "UserOperationLib": [ + 535 + ], + "calldataKeccak": [ + 160 + ], + "min": [ + 178 + ] + }, + "id": 536, + "license": "GPL-3.0", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 180, + "literals": [ + "solidity", + "^", + "0.8", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "36:24:1" + }, + { + "absolutePath": "@account-abstraction/contracts/interfaces/PackedUserOperation.sol", + "file": "../interfaces/PackedUserOperation.sol", + "id": 181, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 536, + "sourceUnit": 575, + "src": "104:47:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@account-abstraction/contracts/core/Helpers.sol", + "file": "./Helpers.sol", + "id": 184, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 536, + "sourceUnit": 179, + "src": "152:50:1", + "symbolAliases": [ + { + "foreign": { + "id": 182, + "name": "calldataKeccak", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 160, + "src": "160:14:1", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 183, + "name": "min", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 178, + "src": "176:3:1", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "UserOperationLib", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 185, + "nodeType": "StructuredDocumentation", + "src": "204:77:1", + "text": " Utility functions helpful when working with UserOperation structs." + }, + "fullyImplemented": true, + "id": 535, + "linearizedBaseContracts": [ + 535 + ], + "name": "UserOperationLib", + "nameLocation": "290:16:1", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "functionSelector": "b29a8ff4", + "id": 188, + "mutability": "constant", + "name": "PAYMASTER_VALIDATION_GAS_OFFSET", + "nameLocation": "338:31:1", + "nodeType": "VariableDeclaration", + "scope": 535, + "src": "314:60:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 186, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "314:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "3230", + "id": 187, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "372:2:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_20_by_1", + "typeString": "int_const 20" + }, + "value": "20" + }, + "visibility": "public" + }, + { + "constant": true, + "functionSelector": "25093e1b", + "id": 191, + "mutability": "constant", + "name": "PAYMASTER_POSTOP_GAS_OFFSET", + "nameLocation": "404:27:1", + "nodeType": "VariableDeclaration", + "scope": 535, + "src": "380:56:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 189, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "380:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "3336", + "id": 190, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "434:2:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_36_by_1", + "typeString": "int_const 36" + }, + "value": "36" + }, + "visibility": "public" + }, + { + "constant": true, + "functionSelector": "ede31502", + "id": 194, + "mutability": "constant", + "name": "PAYMASTER_DATA_OFFSET", + "nameLocation": "466:21:1", + "nodeType": "VariableDeclaration", + "scope": 535, + "src": "442:50:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 192, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "442:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "3532", + "id": 193, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "490:2:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_52_by_1", + "typeString": "int_const 52" + }, + "value": "52" + }, + "visibility": "public" + }, + { + "body": { + "id": 215, + "nodeType": "Block", + "src": "708:221:1", + "statements": [ + { + "assignments": [ + 204 + ], + "declarations": [ + { + "constant": false, + "id": 204, + "mutability": "mutable", + "name": "data", + "nameLocation": "726:4:1", + "nodeType": "VariableDeclaration", + "scope": 215, + "src": "718:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 203, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "718:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 205, + "nodeType": "VariableDeclarationStatement", + "src": "718:12:1" + }, + { + "AST": { + "nativeSrc": "832:52:1", + "nodeType": "YulBlock", + "src": "832:52:1", + "statements": [ + { + "nativeSrc": "846:28:1", + "nodeType": "YulAssignment", + "src": "846:28:1", + "value": { + "arguments": [ + { + "name": "userOp", + "nativeSrc": "867:6:1", + "nodeType": "YulIdentifier", + "src": "867:6:1" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "854:12:1", + "nodeType": "YulIdentifier", + "src": "854:12:1" + }, + "nativeSrc": "854:20:1", + "nodeType": "YulFunctionCall", + "src": "854:20:1" + }, + "variableNames": [ + { + "name": "data", + "nativeSrc": "846:4:1", + "nodeType": "YulIdentifier", + "src": "846:4:1" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 204, + "isOffset": false, + "isSlot": false, + "src": "846:4:1", + "valueSize": 1 + }, + { + "declaration": 198, + "isOffset": false, + "isSlot": false, + "src": "867:6:1", + "valueSize": 1 + } + ], + "id": 206, + "nodeType": "InlineAssembly", + "src": "823:61:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 211, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 204, + "src": "916:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 210, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "908:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 209, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "908:7:1", + "typeDescriptions": {} + } + }, + "id": 212, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "908:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 208, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "900:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 207, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "900:7:1", + "typeDescriptions": {} + } + }, + "id": 213, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "900:22:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 202, + "id": 214, + "nodeType": "Return", + "src": "893:29:1" + } + ] + }, + "documentation": { + "id": 195, + "nodeType": "StructuredDocumentation", + "src": "498:103:1", + "text": " Get sender from user operation data.\n @param userOp - The user operation data." + }, + "id": 216, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getSender", + "nameLocation": "615:9:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 199, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 198, + "mutability": "mutable", + "name": "userOp", + "nameLocation": "663:6:1", + "nodeType": "VariableDeclaration", + "scope": 216, + "src": "634:35:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation" + }, + "typeName": { + "id": 197, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 196, + "name": "PackedUserOperation", + "nameLocations": [ + "634:19:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 574, + "src": "634:19:1" + }, + "referencedDeclaration": 574, + "src": "634:19:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_storage_ptr", + "typeString": "struct PackedUserOperation" + } + }, + "visibility": "internal" + } + ], + "src": "624:51:1" + }, + "returnParameters": { + "id": 202, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 201, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 216, + "src": "699:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 200, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "699:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "698:9:1" + }, + "scope": 535, + "src": "606:323:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 250, + "nodeType": "Block", + "src": "1235:395:1", + "statements": [ + { + "id": 249, + "nodeType": "UncheckedBlock", + "src": "1245:379:1", + "statements": [ + { + "assignments": [ + 226, + 228 + ], + "declarations": [ + { + "constant": false, + "id": 226, + "mutability": "mutable", + "name": "maxPriorityFeePerGas", + "nameLocation": "1278:20:1", + "nodeType": "VariableDeclaration", + "scope": 249, + "src": "1270:28:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 225, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1270:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 228, + "mutability": "mutable", + "name": "maxFeePerGas", + "nameLocation": "1308:12:1", + "nodeType": "VariableDeclaration", + "scope": 249, + "src": "1300:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 227, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1300:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 233, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 230, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "1336:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + }, + "id": 231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1343:7:1", + "memberName": "gasFees", + "nodeType": "MemberAccess", + "referencedDeclaration": 569, + "src": "1336:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 229, + "name": "unpackUints", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 346, + "src": "1324:11:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (bytes32) pure returns (uint256,uint256)" + } + }, + "id": 232, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1324:27:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1269:82:1" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 236, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 234, + "name": "maxFeePerGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 228, + "src": "1369:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 235, + "name": "maxPriorityFeePerGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 226, + "src": "1385:20:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1369:36:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 240, + "nodeType": "IfStatement", + "src": "1365:173:1", + "trueBody": { + "id": 239, + "nodeType": "Block", + "src": "1407:131:1", + "statements": [ + { + "expression": { + "id": 237, + "name": "maxFeePerGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 228, + "src": "1511:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 224, + "id": 238, + "nodeType": "Return", + "src": "1504:19:1" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 242, + "name": "maxFeePerGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 228, + "src": "1562:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 246, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 243, + "name": "maxPriorityFeePerGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 226, + "src": "1576:20:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "expression": { + "id": 244, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "1599:5:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 245, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1605:7:1", + "memberName": "basefee", + "nodeType": "MemberAccess", + "src": "1599:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1576:36:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 241, + "name": "min", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 178, + "src": "1558:3:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 247, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1558:55:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 224, + "id": 248, + "nodeType": "Return", + "src": "1551:62:1" + } + ] + } + ] + }, + "documentation": { + "id": 217, + "nodeType": "StructuredDocumentation", + "src": "935:194:1", + "text": " Relayer/block builder might submit the TX with higher priorityFee,\n but the user should not pay above what he signed for.\n @param userOp - The user operation data." + }, + "id": 251, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "gasPrice", + "nameLocation": "1143:8:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 221, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 220, + "mutability": "mutable", + "name": "userOp", + "nameLocation": "1190:6:1", + "nodeType": "VariableDeclaration", + "scope": 251, + "src": "1161:35:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation" + }, + "typeName": { + "id": 219, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 218, + "name": "PackedUserOperation", + "nameLocations": [ + "1161:19:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 574, + "src": "1161:19:1" + }, + "referencedDeclaration": 574, + "src": "1161:19:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_storage_ptr", + "typeString": "struct PackedUserOperation" + } + }, + "visibility": "internal" + } + ], + "src": "1151:51:1" + }, + "returnParameters": { + "id": 224, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 223, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 251, + "src": "1226:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 222, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1226:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1225:9:1" + }, + "scope": 535, + "src": "1134:496:1", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 319, + "nodeType": "Block", + "src": "1868:661:1", + "statements": [ + { + "assignments": [ + 261 + ], + "declarations": [ + { + "constant": false, + "id": 261, + "mutability": "mutable", + "name": "sender", + "nameLocation": "1886:6:1", + "nodeType": "VariableDeclaration", + "scope": 319, + "src": "1878:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 260, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1878:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 265, + "initialValue": { + "arguments": [ + { + "id": 263, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 255, + "src": "1905:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + ], + "id": 262, + "name": "getSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 216, + "src": "1895:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_PackedUserOperation_$574_calldata_ptr_$returns$_t_address_$", + "typeString": "function (struct PackedUserOperation calldata) pure returns (address)" + } + }, + "id": 264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1895:17:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1878:34:1" + }, + { + "assignments": [ + 267 + ], + "declarations": [ + { + "constant": false, + "id": 267, + "mutability": "mutable", + "name": "nonce", + "nameLocation": "1930:5:1", + "nodeType": "VariableDeclaration", + "scope": 319, + "src": "1922:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 266, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1922:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 270, + "initialValue": { + "expression": { + "id": 268, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 255, + "src": "1938:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + }, + "id": 269, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1945:5:1", + "memberName": "nonce", + "nodeType": "MemberAccess", + "referencedDeclaration": 559, + "src": "1938:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1922:28:1" + }, + { + "assignments": [ + 272 + ], + "declarations": [ + { + "constant": false, + "id": 272, + "mutability": "mutable", + "name": "hashInitCode", + "nameLocation": "1968:12:1", + "nodeType": "VariableDeclaration", + "scope": 319, + "src": "1960:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 271, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1960:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 277, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 274, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 255, + "src": "1998:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + }, + "id": 275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2005:8:1", + "memberName": "initCode", + "nodeType": "MemberAccess", + "referencedDeclaration": 561, + "src": "1998:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 273, + "name": "calldataKeccak", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 160, + "src": "1983:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes calldata) pure returns (bytes32)" + } + }, + "id": 276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1983:31:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1960:54:1" + }, + { + "assignments": [ + 279 + ], + "declarations": [ + { + "constant": false, + "id": 279, + "mutability": "mutable", + "name": "hashCallData", + "nameLocation": "2032:12:1", + "nodeType": "VariableDeclaration", + "scope": 319, + "src": "2024:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 278, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2024:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 284, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 281, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 255, + "src": "2062:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + }, + "id": 282, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2069:8:1", + "memberName": "callData", + "nodeType": "MemberAccess", + "referencedDeclaration": 563, + "src": "2062:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 280, + "name": "calldataKeccak", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 160, + "src": "2047:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes calldata) pure returns (bytes32)" + } + }, + "id": 283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2047:31:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2024:54:1" + }, + { + "assignments": [ + 286 + ], + "declarations": [ + { + "constant": false, + "id": 286, + "mutability": "mutable", + "name": "accountGasLimits", + "nameLocation": "2096:16:1", + "nodeType": "VariableDeclaration", + "scope": 319, + "src": "2088:24:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 285, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2088:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 289, + "initialValue": { + "expression": { + "id": 287, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 255, + "src": "2115:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + }, + "id": 288, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2122:16:1", + "memberName": "accountGasLimits", + "nodeType": "MemberAccess", + "referencedDeclaration": 565, + "src": "2115:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2088:50:1" + }, + { + "assignments": [ + 291 + ], + "declarations": [ + { + "constant": false, + "id": 291, + "mutability": "mutable", + "name": "preVerificationGas", + "nameLocation": "2156:18:1", + "nodeType": "VariableDeclaration", + "scope": 319, + "src": "2148:26:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 290, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2148:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 294, + "initialValue": { + "expression": { + "id": 292, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 255, + "src": "2177:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + }, + "id": 293, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2184:18:1", + "memberName": "preVerificationGas", + "nodeType": "MemberAccess", + "referencedDeclaration": 567, + "src": "2177:25:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2148:54:1" + }, + { + "assignments": [ + 296 + ], + "declarations": [ + { + "constant": false, + "id": 296, + "mutability": "mutable", + "name": "gasFees", + "nameLocation": "2220:7:1", + "nodeType": "VariableDeclaration", + "scope": 319, + "src": "2212:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 295, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2212:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 299, + "initialValue": { + "expression": { + "id": 297, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 255, + "src": "2230:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + }, + "id": 298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2237:7:1", + "memberName": "gasFees", + "nodeType": "MemberAccess", + "referencedDeclaration": 569, + "src": "2230:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2212:32:1" + }, + { + "assignments": [ + 301 + ], + "declarations": [ + { + "constant": false, + "id": 301, + "mutability": "mutable", + "name": "hashPaymasterAndData", + "nameLocation": "2262:20:1", + "nodeType": "VariableDeclaration", + "scope": 319, + "src": "2254:28:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 300, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2254:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 306, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 303, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 255, + "src": "2300:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + }, + "id": 304, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2307:16:1", + "memberName": "paymasterAndData", + "nodeType": "MemberAccess", + "referencedDeclaration": 571, + "src": "2300:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 302, + "name": "calldataKeccak", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 160, + "src": "2285:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes calldata) pure returns (bytes32)" + } + }, + "id": 305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2285:39:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2254:70:1" + }, + { + "expression": { + "arguments": [ + { + "id": 309, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 261, + "src": "2366:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 310, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 267, + "src": "2374:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 311, + "name": "hashInitCode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 272, + "src": "2393:12:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 312, + "name": "hashCallData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 279, + "src": "2407:12:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 313, + "name": "accountGasLimits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 286, + "src": "2433:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 314, + "name": "preVerificationGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 291, + "src": "2451:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 315, + "name": "gasFees", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 296, + "src": "2471:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 316, + "name": "hashPaymasterAndData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 301, + "src": "2492:20:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 307, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "2342:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 308, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2346:6:1", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "2342:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 317, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2342:180:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 259, + "id": 318, + "nodeType": "Return", + "src": "2335:187:1" + } + ] + }, + "documentation": { + "id": 252, + "nodeType": "StructuredDocumentation", + "src": "1636:119:1", + "text": " Pack the user operation data into bytes for hashing.\n @param userOp - The user operation data." + }, + "id": 320, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "encode", + "nameLocation": "1769:6:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 256, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 255, + "mutability": "mutable", + "name": "userOp", + "nameLocation": "1814:6:1", + "nodeType": "VariableDeclaration", + "scope": 320, + "src": "1785:35:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation" + }, + "typeName": { + "id": 254, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 253, + "name": "PackedUserOperation", + "nameLocations": [ + "1785:19:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 574, + "src": "1785:19:1" + }, + "referencedDeclaration": 574, + "src": "1785:19:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_storage_ptr", + "typeString": "struct PackedUserOperation" + } + }, + "visibility": "internal" + } + ], + "src": "1775:51:1" + }, + "returnParameters": { + "id": 259, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 258, + "mutability": "mutable", + "name": "ret", + "nameLocation": "1863:3:1", + "nodeType": "VariableDeclaration", + "scope": 320, + "src": "1850:16:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 257, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1850:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "1849:18:1" + }, + "scope": 535, + "src": "1760:769:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 345, + "nodeType": "Block", + "src": "2642:76:1", + "statements": [ + { + "expression": { + "components": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 333, + "name": "packed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 322, + "src": "2676:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 332, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2668:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes16_$", + "typeString": "type(bytes16)" + }, + "typeName": { + "id": 331, + "name": "bytes16", + "nodeType": "ElementaryTypeName", + "src": "2668:7:1", + "typeDescriptions": {} + } + }, + "id": 334, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2668:15:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + ], + "id": 330, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2660:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + }, + "typeName": { + "id": 329, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "2660:7:1", + "typeDescriptions": {} + } + }, + "id": 335, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2660:24:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "id": 340, + "name": "packed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 322, + "src": "2702:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 339, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2694:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 338, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2694:7:1", + "typeDescriptions": {} + } + }, + "id": 341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2694:15:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 337, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2686:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + }, + "typeName": { + "id": 336, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "2686:7:1", + "typeDescriptions": {} + } + }, + "id": 342, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2686:24:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "id": 343, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2659:52:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint128_$_t_uint128_$", + "typeString": "tuple(uint128,uint128)" + } + }, + "functionReturnParameters": 328, + "id": 344, + "nodeType": "Return", + "src": "2652:59:1" + } + ] + }, + "id": 346, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "unpackUints", + "nameLocation": "2544:11:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 323, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 322, + "mutability": "mutable", + "name": "packed", + "nameLocation": "2573:6:1", + "nodeType": "VariableDeclaration", + "scope": 346, + "src": "2565:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 321, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2565:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2555:30:1" + }, + "returnParameters": { + "id": 328, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 325, + "mutability": "mutable", + "name": "high128", + "nameLocation": "2617:7:1", + "nodeType": "VariableDeclaration", + "scope": 346, + "src": "2609:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 324, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2609:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 327, + "mutability": "mutable", + "name": "low128", + "nameLocation": "2634:6:1", + "nodeType": "VariableDeclaration", + "scope": 346, + "src": "2626:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 326, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2626:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2608:33:1" + }, + "scope": 535, + "src": "2535:183:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 360, + "nodeType": "Block", + "src": "2851:46:1", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 355, + "name": "packed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 348, + "src": "2876:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 354, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2868:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 353, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2868:7:1", + "typeDescriptions": {} + } + }, + "id": 356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2868:15:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "313238", + "id": 357, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2887:3:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "2868:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 352, + "id": 359, + "nodeType": "Return", + "src": "2861:29:1" + } + ] + }, + "id": 361, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "unpackHigh128", + "nameLocation": "2789:13:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 349, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 348, + "mutability": "mutable", + "name": "packed", + "nameLocation": "2811:6:1", + "nodeType": "VariableDeclaration", + "scope": 361, + "src": "2803:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 347, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2803:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2802:16:1" + }, + "returnParameters": { + "id": 352, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 351, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 361, + "src": "2842:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 350, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2842:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2841:9:1" + }, + "scope": 535, + "src": "2780:117:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 376, + "nodeType": "Block", + "src": "3029:48:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 372, + "name": "packed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 363, + "src": "3062:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 371, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3054:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 370, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3054:7:1", + "typeDescriptions": {} + } + }, + "id": 373, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3054:15:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 369, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3046:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + }, + "typeName": { + "id": 368, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "3046:7:1", + "typeDescriptions": {} + } + }, + "id": 374, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3046:24:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "functionReturnParameters": 367, + "id": 375, + "nodeType": "Return", + "src": "3039:31:1" + } + ] + }, + "id": 377, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "unpackLow128", + "nameLocation": "2968:12:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 364, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 363, + "mutability": "mutable", + "name": "packed", + "nameLocation": "2989:6:1", + "nodeType": "VariableDeclaration", + "scope": 377, + "src": "2981:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 362, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2981:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2980:16:1" + }, + "returnParameters": { + "id": 367, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 366, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 377, + "src": "3020:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 365, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3020:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3019:9:1" + }, + "scope": 535, + "src": "2959:118:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 390, + "nodeType": "Block", + "src": "3192:53:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 386, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 380, + "src": "3223:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + }, + "id": 387, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3230:7:1", + "memberName": "gasFees", + "nodeType": "MemberAccess", + "referencedDeclaration": 569, + "src": "3223:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 385, + "name": "unpackHigh128", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 361, + "src": "3209:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$", + "typeString": "function (bytes32) pure returns (uint256)" + } + }, + "id": 388, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3209:29:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 384, + "id": 389, + "nodeType": "Return", + "src": "3202:36:1" + } + ] + }, + "id": 391, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "unpackMaxPriorityFeePerGas", + "nameLocation": "3092:26:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 381, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 380, + "mutability": "mutable", + "name": "userOp", + "nameLocation": "3148:6:1", + "nodeType": "VariableDeclaration", + "scope": 391, + "src": "3119:35:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation" + }, + "typeName": { + "id": 379, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 378, + "name": "PackedUserOperation", + "nameLocations": [ + "3119:19:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 574, + "src": "3119:19:1" + }, + "referencedDeclaration": 574, + "src": "3119:19:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_storage_ptr", + "typeString": "struct PackedUserOperation" + } + }, + "visibility": "internal" + } + ], + "src": "3118:37:1" + }, + "returnParameters": { + "id": 384, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 383, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 391, + "src": "3183:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 382, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3183:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3182:9:1" + }, + "scope": 535, + "src": "3083:162:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 404, + "nodeType": "Block", + "src": "3352:52:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 400, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 394, + "src": "3382:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + }, + "id": 401, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3389:7:1", + "memberName": "gasFees", + "nodeType": "MemberAccess", + "referencedDeclaration": 569, + "src": "3382:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 399, + "name": "unpackLow128", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 377, + "src": "3369:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$", + "typeString": "function (bytes32) pure returns (uint256)" + } + }, + "id": 402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3369:28:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 398, + "id": 403, + "nodeType": "Return", + "src": "3362:35:1" + } + ] + }, + "id": 405, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "unpackMaxFeePerGas", + "nameLocation": "3260:18:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 395, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 394, + "mutability": "mutable", + "name": "userOp", + "nameLocation": "3308:6:1", + "nodeType": "VariableDeclaration", + "scope": 405, + "src": "3279:35:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation" + }, + "typeName": { + "id": 393, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 392, + "name": "PackedUserOperation", + "nameLocations": [ + "3279:19:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 574, + "src": "3279:19:1" + }, + "referencedDeclaration": 574, + "src": "3279:19:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_storage_ptr", + "typeString": "struct PackedUserOperation" + } + }, + "visibility": "internal" + } + ], + "src": "3278:37:1" + }, + "returnParameters": { + "id": 398, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 397, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 405, + "src": "3343:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 396, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3343:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3342:9:1" + }, + "scope": 535, + "src": "3251:153:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 418, + "nodeType": "Block", + "src": "3519:62:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 414, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 408, + "src": "3550:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + }, + "id": 415, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3557:16:1", + "memberName": "accountGasLimits", + "nodeType": "MemberAccess", + "referencedDeclaration": 565, + "src": "3550:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 413, + "name": "unpackHigh128", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 361, + "src": "3536:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$", + "typeString": "function (bytes32) pure returns (uint256)" + } + }, + "id": 416, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3536:38:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 412, + "id": 417, + "nodeType": "Return", + "src": "3529:45:1" + } + ] + }, + "id": 419, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "unpackVerificationGasLimit", + "nameLocation": "3419:26:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 409, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 408, + "mutability": "mutable", + "name": "userOp", + "nameLocation": "3475:6:1", + "nodeType": "VariableDeclaration", + "scope": 419, + "src": "3446:35:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation" + }, + "typeName": { + "id": 407, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 406, + "name": "PackedUserOperation", + "nameLocations": [ + "3446:19:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 574, + "src": "3446:19:1" + }, + "referencedDeclaration": 574, + "src": "3446:19:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_storage_ptr", + "typeString": "struct PackedUserOperation" + } + }, + "visibility": "internal" + } + ], + "src": "3445:37:1" + }, + "returnParameters": { + "id": 412, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 411, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 419, + "src": "3510:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 410, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3510:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3509:9:1" + }, + "scope": 535, + "src": "3410:171:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 432, + "nodeType": "Block", + "src": "3688:61:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 428, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 422, + "src": "3718:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + }, + "id": 429, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3725:16:1", + "memberName": "accountGasLimits", + "nodeType": "MemberAccess", + "referencedDeclaration": 565, + "src": "3718:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 427, + "name": "unpackLow128", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 377, + "src": "3705:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$", + "typeString": "function (bytes32) pure returns (uint256)" + } + }, + "id": 430, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3705:37:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 426, + "id": 431, + "nodeType": "Return", + "src": "3698:44:1" + } + ] + }, + "id": 433, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "unpackCallGasLimit", + "nameLocation": "3596:18:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 423, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 422, + "mutability": "mutable", + "name": "userOp", + "nameLocation": "3644:6:1", + "nodeType": "VariableDeclaration", + "scope": 433, + "src": "3615:35:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation" + }, + "typeName": { + "id": 421, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 420, + "name": "PackedUserOperation", + "nameLocations": [ + "3615:19:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 574, + "src": "3615:19:1" + }, + "referencedDeclaration": 574, + "src": "3615:19:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_storage_ptr", + "typeString": "struct PackedUserOperation" + } + }, + "visibility": "internal" + } + ], + "src": "3614:37:1" + }, + "returnParameters": { + "id": 426, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 425, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 433, + "src": "3679:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 424, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3679:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3678:9:1" + }, + "scope": 535, + "src": "3587:162:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 453, + "nodeType": "Block", + "src": "3873:128:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "baseExpression": { + "expression": { + "id": 445, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 436, + "src": "3906:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + }, + "id": 446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3913:16:1", + "memberName": "paymasterAndData", + "nodeType": "MemberAccess", + "referencedDeclaration": 571, + "src": "3906:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "endExpression": { + "id": 448, + "name": "PAYMASTER_POSTOP_GAS_OFFSET", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 191, + "src": "3964:27:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 449, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexRangeAccess", + "src": "3906:86:1", + "startExpression": { + "id": 447, + "name": "PAYMASTER_VALIDATION_GAS_OFFSET", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 188, + "src": "3930:31:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr_slice", + "typeString": "bytes calldata slice" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr_slice", + "typeString": "bytes calldata slice" + } + ], + "id": 444, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3898:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes16_$", + "typeString": "type(bytes16)" + }, + "typeName": { + "id": 443, + "name": "bytes16", + "nodeType": "ElementaryTypeName", + "src": "3898:7:1", + "typeDescriptions": {} + } + }, + "id": 450, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3898:95:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + ], + "id": 442, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3890:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + }, + "typeName": { + "id": 441, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "3890:7:1", + "typeDescriptions": {} + } + }, + "id": 451, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3890:104:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "functionReturnParameters": 440, + "id": 452, + "nodeType": "Return", + "src": "3883:111:1" + } + ] + }, + "id": 454, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "unpackPaymasterVerificationGasLimit", + "nameLocation": "3764:35:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 437, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 436, + "mutability": "mutable", + "name": "userOp", + "nameLocation": "3829:6:1", + "nodeType": "VariableDeclaration", + "scope": 454, + "src": "3800:35:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation" + }, + "typeName": { + "id": 435, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 434, + "name": "PackedUserOperation", + "nameLocations": [ + "3800:19:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 574, + "src": "3800:19:1" + }, + "referencedDeclaration": 574, + "src": "3800:19:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_storage_ptr", + "typeString": "struct PackedUserOperation" + } + }, + "visibility": "internal" + } + ], + "src": "3799:37:1" + }, + "returnParameters": { + "id": 440, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 439, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 454, + "src": "3864:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 438, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3864:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3863:9:1" + }, + "scope": 535, + "src": "3755:246:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 474, + "nodeType": "Block", + "src": "4110:118:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "baseExpression": { + "expression": { + "id": 466, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 457, + "src": "4143:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + }, + "id": 467, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4150:16:1", + "memberName": "paymasterAndData", + "nodeType": "MemberAccess", + "referencedDeclaration": 571, + "src": "4143:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "endExpression": { + "id": 469, + "name": "PAYMASTER_DATA_OFFSET", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 194, + "src": "4197:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 470, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexRangeAccess", + "src": "4143:76:1", + "startExpression": { + "id": 468, + "name": "PAYMASTER_POSTOP_GAS_OFFSET", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 191, + "src": "4167:27:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr_slice", + "typeString": "bytes calldata slice" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr_slice", + "typeString": "bytes calldata slice" + } + ], + "id": 465, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4135:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes16_$", + "typeString": "type(bytes16)" + }, + "typeName": { + "id": 464, + "name": "bytes16", + "nodeType": "ElementaryTypeName", + "src": "4135:7:1", + "typeDescriptions": {} + } + }, + "id": 471, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4135:85:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + ], + "id": 463, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4127:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + }, + "typeName": { + "id": 462, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "4127:7:1", + "typeDescriptions": {} + } + }, + "id": 472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4127:94:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "functionReturnParameters": 461, + "id": 473, + "nodeType": "Return", + "src": "4120:101:1" + } + ] + }, + "id": 475, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "unpackPostOpGasLimit", + "nameLocation": "4016:20:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 458, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 457, + "mutability": "mutable", + "name": "userOp", + "nameLocation": "4066:6:1", + "nodeType": "VariableDeclaration", + "scope": 475, + "src": "4037:35:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation" + }, + "typeName": { + "id": 456, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 455, + "name": "PackedUserOperation", + "nameLocations": [ + "4037:19:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 574, + "src": "4037:19:1" + }, + "referencedDeclaration": 574, + "src": "4037:19:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_storage_ptr", + "typeString": "struct PackedUserOperation" + } + }, + "visibility": "internal" + } + ], + "src": "4036:37:1" + }, + "returnParameters": { + "id": 461, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 460, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 475, + "src": "4101:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 459, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4101:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4100:9:1" + }, + "scope": 535, + "src": "4007:221:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 517, + "nodeType": "Block", + "src": "4412:329:1", + "statements": [ + { + "expression": { + "components": [ + { + "arguments": [ + { + "arguments": [ + { + "baseExpression": { + "id": 490, + "name": "paymasterAndData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 477, + "src": "4459:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "endExpression": { + "id": 491, + "name": "PAYMASTER_VALIDATION_GAS_OFFSET", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 188, + "src": "4478:31:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 492, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexRangeAccess", + "src": "4459:51:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr_slice", + "typeString": "bytes calldata slice" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr_slice", + "typeString": "bytes calldata slice" + } + ], + "id": 489, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4451:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes20_$", + "typeString": "type(bytes20)" + }, + "typeName": { + "id": 488, + "name": "bytes20", + "nodeType": "ElementaryTypeName", + "src": "4451:7:1", + "typeDescriptions": {} + } + }, + "id": 493, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4451:60:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes20", + "typeString": "bytes20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes20", + "typeString": "bytes20" + } + ], + "id": 487, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4443:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 486, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4443:7:1", + "typeDescriptions": {} + } + }, + "id": 494, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4443:69:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "baseExpression": { + "id": 499, + "name": "paymasterAndData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 477, + "src": "4542:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "endExpression": { + "id": 501, + "name": "PAYMASTER_POSTOP_GAS_OFFSET", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 191, + "src": "4593:27:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 502, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexRangeAccess", + "src": "4542:79:1", + "startExpression": { + "id": 500, + "name": "PAYMASTER_VALIDATION_GAS_OFFSET", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 188, + "src": "4559:31:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr_slice", + "typeString": "bytes calldata slice" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr_slice", + "typeString": "bytes calldata slice" + } + ], + "id": 498, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4534:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes16_$", + "typeString": "type(bytes16)" + }, + "typeName": { + "id": 497, + "name": "bytes16", + "nodeType": "ElementaryTypeName", + "src": "4534:7:1", + "typeDescriptions": {} + } + }, + "id": 503, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4534:88:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + ], + "id": 496, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4526:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + }, + "typeName": { + "id": 495, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "4526:7:1", + "typeDescriptions": {} + } + }, + "id": 504, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4526:97:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "baseExpression": { + "id": 509, + "name": "paymasterAndData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 477, + "src": "4653:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "endExpression": { + "id": 511, + "name": "PAYMASTER_DATA_OFFSET", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 194, + "src": "4700:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexRangeAccess", + "src": "4653:69:1", + "startExpression": { + "id": 510, + "name": "PAYMASTER_POSTOP_GAS_OFFSET", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 191, + "src": "4670:27:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr_slice", + "typeString": "bytes calldata slice" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr_slice", + "typeString": "bytes calldata slice" + } + ], + "id": 508, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4645:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes16_$", + "typeString": "type(bytes16)" + }, + "typeName": { + "id": 507, + "name": "bytes16", + "nodeType": "ElementaryTypeName", + "src": "4645:7:1", + "typeDescriptions": {} + } + }, + "id": 513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4645:78:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + ], + "id": 506, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4637:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + }, + "typeName": { + "id": 505, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "4637:7:1", + "typeDescriptions": {} + } + }, + "id": 514, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4637:87:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "id": 515, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4429:305:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_uint128_$_t_uint128_$", + "typeString": "tuple(address,uint128,uint128)" + } + }, + "functionReturnParameters": 485, + "id": 516, + "nodeType": "Return", + "src": "4422:312:1" + } + ] + }, + "id": 518, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "unpackPaymasterStaticFields", + "nameLocation": "4243:27:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 478, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 477, + "mutability": "mutable", + "name": "paymasterAndData", + "nameLocation": "4295:16:1", + "nodeType": "VariableDeclaration", + "scope": 518, + "src": "4280:31:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 476, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4280:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4270:47:1" + }, + "returnParameters": { + "id": 485, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 480, + "mutability": "mutable", + "name": "paymaster", + "nameLocation": "4349:9:1", + "nodeType": "VariableDeclaration", + "scope": 518, + "src": "4341:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 479, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4341:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 482, + "mutability": "mutable", + "name": "validationGasLimit", + "nameLocation": "4368:18:1", + "nodeType": "VariableDeclaration", + "scope": 518, + "src": "4360:26:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 481, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4360:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 484, + "mutability": "mutable", + "name": "postOpGasLimit", + "nameLocation": "4396:14:1", + "nodeType": "VariableDeclaration", + "scope": 518, + "src": "4388:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 483, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4388:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4340:71:1" + }, + "scope": 535, + "src": "4234:507:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 533, + "nodeType": "Block", + "src": "4945:49:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 529, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 522, + "src": "4979:6:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + ], + "id": 528, + "name": "encode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 320, + "src": "4972:6:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_PackedUserOperation_$574_calldata_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (struct PackedUserOperation calldata) pure returns (bytes memory)" + } + }, + "id": 530, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4972:14:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 527, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "4962:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 531, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4962:25:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 526, + "id": 532, + "nodeType": "Return", + "src": "4955:32:1" + } + ] + }, + "documentation": { + "id": 519, + "nodeType": "StructuredDocumentation", + "src": "4747:96:1", + "text": " Hash the user operation data.\n @param userOp - The user operation data." + }, + "id": 534, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "hash", + "nameLocation": "4857:4:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 523, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 522, + "mutability": "mutable", + "name": "userOp", + "nameLocation": "4900:6:1", + "nodeType": "VariableDeclaration", + "scope": 534, + "src": "4871:35:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation" + }, + "typeName": { + "id": 521, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 520, + "name": "PackedUserOperation", + "nameLocations": [ + "4871:19:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 574, + "src": "4871:19:1" + }, + "referencedDeclaration": 574, + "src": "4871:19:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_storage_ptr", + "typeString": "struct PackedUserOperation" + } + }, + "visibility": "internal" + } + ], + "src": "4861:51:1" + }, + "returnParameters": { + "id": 526, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 525, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 534, + "src": "4936:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 524, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4936:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4935:9:1" + }, + "scope": 535, + "src": "4848:146:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 536, + "src": "282:4714:1", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "36:4961:1" + }, + "id": 1 + }, + "@account-abstraction/contracts/interfaces/IAccount.sol": { + "ast": { + "absolutePath": "@account-abstraction/contracts/interfaces/IAccount.sol", + "exportedSymbols": { + "IAccount": [ + 552 + ], + "PackedUserOperation": [ + 574 + ] + }, + "id": 553, + "license": "GPL-3.0", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 537, + "literals": [ + "solidity", + ">=", + "0.7", + ".5" + ], + "nodeType": "PragmaDirective", + "src": "36:24:2" + }, + { + "absolutePath": "@account-abstraction/contracts/interfaces/PackedUserOperation.sol", + "file": "./PackedUserOperation.sol", + "id": 538, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 553, + "sourceUnit": 575, + "src": "62:35:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IAccount", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 552, + "linearizedBaseContracts": [ + 552 + ], + "name": "IAccount", + "nameLocation": "109:8:2", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 539, + "nodeType": "StructuredDocumentation", + "src": "124:2290:2", + "text": " Validate user's signature and nonce\n the entryPoint will make the call to the recipient only if this validation call returns successfully.\n signature failure should be reported by returning SIG_VALIDATION_FAILED (1).\n This allows making a \"simulation call\" without a valid signature\n Other failures (e.g. nonce mismatch, or invalid signature format) should still revert to signal failure.\n @dev Must validate caller is the entryPoint.\n Must validate the signature and nonce\n @param userOp - The operation that is about to be executed.\n @param userOpHash - Hash of the user's request data. can be used as the basis for signature.\n @param missingAccountFunds - Missing funds on the account's deposit in the entrypoint.\n This is the minimum amount to transfer to the sender(entryPoint) to be\n able to make the call. The excess is left as a deposit in the entrypoint\n for future calls. Can be withdrawn anytime using \"entryPoint.withdrawTo()\".\n In case there is a paymaster in the request (or the current deposit is high\n enough), this value will be zero.\n @return validationData - Packaged ValidationData structure. use `_packValidationData` and\n `_unpackValidationData` to encode and decode.\n <20-byte> sigAuthorizer - 0 for valid signature, 1 to mark signature failure,\n otherwise, an address of an \"authorizer\" contract.\n <6-byte> validUntil - Last timestamp this operation is valid. 0 for \"indefinite\"\n <6-byte> validAfter - First timestamp this operation is valid\n If an account doesn't use time-range, it is enough to\n return SIG_VALIDATION_FAILED value (1) for signature failure.\n Note that the validation code cannot use block.timestamp (or block.number) directly." + }, + "functionSelector": "19822f7c", + "id": 551, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "validateUserOp", + "nameLocation": "2428:14:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 547, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 542, + "mutability": "mutable", + "name": "userOp", + "nameLocation": "2481:6:2", + "nodeType": "VariableDeclaration", + "scope": 551, + "src": "2452:35:2", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation" + }, + "typeName": { + "id": 541, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 540, + "name": "PackedUserOperation", + "nameLocations": [ + "2452:19:2" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 574, + "src": "2452:19:2" + }, + "referencedDeclaration": 574, + "src": "2452:19:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_storage_ptr", + "typeString": "struct PackedUserOperation" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 544, + "mutability": "mutable", + "name": "userOpHash", + "nameLocation": "2505:10:2", + "nodeType": "VariableDeclaration", + "scope": 551, + "src": "2497:18:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 543, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2497:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 546, + "mutability": "mutable", + "name": "missingAccountFunds", + "nameLocation": "2533:19:2", + "nodeType": "VariableDeclaration", + "scope": 551, + "src": "2525:27:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 545, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2525:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2442:116:2" + }, + "returnParameters": { + "id": 550, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 549, + "mutability": "mutable", + "name": "validationData", + "nameLocation": "2585:14:2", + "nodeType": "VariableDeclaration", + "scope": 551, + "src": "2577:22:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 548, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2577:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2576:24:2" + }, + "scope": 552, + "src": "2419:182:2", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 553, + "src": "99:2504:2", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "36:2568:2" + }, + "id": 2 + }, + "@account-abstraction/contracts/interfaces/PackedUserOperation.sol": { + "ast": { + "absolutePath": "@account-abstraction/contracts/interfaces/PackedUserOperation.sol", + "exportedSymbols": { + "PackedUserOperation": [ + 574 + ] + }, + "id": 575, + "license": "GPL-3.0", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 554, + "literals": [ + "solidity", + ">=", + "0.7", + ".5" + ], + "nodeType": "PragmaDirective", + "src": "36:24:3" + }, + { + "canonicalName": "PackedUserOperation", + "documentation": { + "id": 555, + "nodeType": "StructuredDocumentation", + "src": "62:1164:3", + "text": " User Operation struct\n @param sender - The sender account of this request.\n @param nonce - Unique value the sender uses to verify it is not a replay.\n @param initCode - If set, the account contract will be created by this constructor/\n @param callData - The method call to execute on this account.\n @param accountGasLimits - Packed gas limits for validateUserOp and gas limit passed to the callData method call.\n @param preVerificationGas - Gas not calculated by the handleOps method, but added to the gas paid.\n Covers batch overhead.\n @param gasFees - packed gas fields maxPriorityFeePerGas and maxFeePerGas - Same as EIP-1559 gas parameters.\n @param paymasterAndData - If set, this field holds the paymaster address, verification gas limit, postOp gas limit and paymaster-specific extra data\n The paymaster will pay for the transaction instead of the sender.\n @param signature - Sender-verified signature over the entire request, the EntryPoint address and the chain ID." + }, + "id": 574, + "members": [ + { + "constant": false, + "id": 557, + "mutability": "mutable", + "name": "sender", + "nameLocation": "1268:6:3", + "nodeType": "VariableDeclaration", + "scope": 574, + "src": "1260:14:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 556, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1260:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 559, + "mutability": "mutable", + "name": "nonce", + "nameLocation": "1288:5:3", + "nodeType": "VariableDeclaration", + "scope": 574, + "src": "1280:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 558, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1280:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 561, + "mutability": "mutable", + "name": "initCode", + "nameLocation": "1305:8:3", + "nodeType": "VariableDeclaration", + "scope": 574, + "src": "1299:14:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 560, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1299:5:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 563, + "mutability": "mutable", + "name": "callData", + "nameLocation": "1325:8:3", + "nodeType": "VariableDeclaration", + "scope": 574, + "src": "1319:14:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 562, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1319:5:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 565, + "mutability": "mutable", + "name": "accountGasLimits", + "nameLocation": "1347:16:3", + "nodeType": "VariableDeclaration", + "scope": 574, + "src": "1339:24:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 564, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1339:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 567, + "mutability": "mutable", + "name": "preVerificationGas", + "nameLocation": "1377:18:3", + "nodeType": "VariableDeclaration", + "scope": 574, + "src": "1369:26:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 566, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1369:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 569, + "mutability": "mutable", + "name": "gasFees", + "nameLocation": "1409:7:3", + "nodeType": "VariableDeclaration", + "scope": 574, + "src": "1401:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 568, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1401:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 571, + "mutability": "mutable", + "name": "paymasterAndData", + "nameLocation": "1428:16:3", + "nodeType": "VariableDeclaration", + "scope": 574, + "src": "1422:22:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 570, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1422:5:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 573, + "mutability": "mutable", + "name": "signature", + "nameLocation": "1456:9:3", + "nodeType": "VariableDeclaration", + "scope": 574, + "src": "1450:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 572, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1450:5:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "name": "PackedUserOperation", + "nameLocation": "1234:19:3", + "nodeType": "StructDefinition", + "scope": 575, + "src": "1227:241:3", + "visibility": "public" + } + ], + "src": "36:1433:3" + }, + "id": 3 + }, + "FreshCryptoLib/FCL_ecdsa.sol": { + "ast": { + "absolutePath": "FreshCryptoLib/FCL_ecdsa.sol", + "exportedSymbols": { + "FCL_Elliptic_ZZ": [ + 2309 + ], + "FCL_ecdsa": [ + 968 + ] + }, + "id": 969, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 576, + "literals": [ + "solidity", + ">=", + "0.8", + ".19", + "<", + "0.9", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "1127:32:4" + }, + { + "absolutePath": "FreshCryptoLib/FCL_elliptic.sol", + "file": "./FCL_elliptic.sol", + "id": 578, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 969, + "sourceUnit": 2310, + "src": "1162:51:4", + "symbolAliases": [ + { + "foreign": { + "id": 577, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "1170:15:4", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "FCL_ecdsa", + "contractDependencies": [], + "contractKind": "library", + "fullyImplemented": true, + "id": 968, + "linearizedBaseContracts": [ + 968 + ], + "name": "FCL_ecdsa", + "nameLocation": "1225:9:4", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 582, + "mutability": "constant", + "name": "n", + "nameLocation": "1345:1:4", + "nodeType": "VariableDeclaration", + "scope": 968, + "src": "1328:38:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 579, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1328:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "expression": { + "id": 580, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "1349:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 581, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1365:1:4", + "memberName": "n", + "nodeType": "MemberAccess", + "referencedDeclaration": 991, + "src": "1349:17:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "body": { + "id": 684, + "nodeType": "Block", + "src": "1676:589:4", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 614, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 609, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 598, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 587, + "src": "1691:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 599, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1696:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1691:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 604, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 601, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 587, + "src": "1701:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "expression": { + "id": 602, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "1706:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 603, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1722:1:4", + "memberName": "n", + "nodeType": "MemberAccess", + "referencedDeclaration": 991, + "src": "1706:17:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1701:22:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1691:32:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 606, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 589, + "src": "1727:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 607, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1732:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1727:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1691:42:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 613, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 610, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 589, + "src": "1737:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "expression": { + "id": 611, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "1742:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 612, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1758:1:4", + "memberName": "n", + "nodeType": "MemberAccess", + "referencedDeclaration": 991, + "src": "1742:17:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1737:22:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1691:68:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 618, + "nodeType": "IfStatement", + "src": "1687:111:4", + "trueBody": { + "id": 617, + "nodeType": "Block", + "src": "1761:37:4", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 615, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1782:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 597, + "id": 616, + "nodeType": "Return", + "src": "1775:12:4" + } + ] + } + }, + { + "condition": { + "id": 624, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1820:40:4", + "subExpression": { + "arguments": [ + { + "id": 621, + "name": "Qx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 591, + "src": "1853:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 622, + "name": "Qy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "1857:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 619, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "1821:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 620, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1837:15:4", + "memberName": "ecAff_isOnCurve", + "nodeType": "MemberAccess", + "referencedDeclaration": 1685, + "src": "1821:31:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256,uint256) pure returns (bool)" + } + }, + "id": 623, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1821:39:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 628, + "nodeType": "IfStatement", + "src": "1816:83:4", + "trueBody": { + "id": 627, + "nodeType": "Block", + "src": "1862:37:4", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 625, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1883:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 597, + "id": 626, + "nodeType": "Return", + "src": "1876:12:4" + } + ] + } + }, + { + "assignments": [ + 630 + ], + "declarations": [ + { + "constant": false, + "id": 630, + "mutability": "mutable", + "name": "sInv", + "nameLocation": "1917:4:4", + "nodeType": "VariableDeclaration", + "scope": 684, + "src": "1909:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 629, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1909:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 635, + "initialValue": { + "arguments": [ + { + "id": 633, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 589, + "src": "1952:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 631, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "1924:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 632, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1940:11:4", + "memberName": "FCL_nModInv", + "nodeType": "MemberAccess", + "referencedDeclaration": 1019, + "src": "1924:27:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) view returns (uint256)" + } + }, + "id": 634, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1924:30:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1909:45:4" + }, + { + "assignments": [ + 637 + ], + "declarations": [ + { + "constant": false, + "id": 637, + "mutability": "mutable", + "name": "scalar_u", + "nameLocation": "1973:8:4", + "nodeType": "VariableDeclaration", + "scope": 684, + "src": "1965:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 636, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1965:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 647, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 641, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 585, + "src": "1999:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 640, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1991:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 639, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1991:7:4", + "typeDescriptions": {} + } + }, + "id": 642, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1991:16:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 643, + "name": "sInv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 630, + "src": "2009:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 644, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "2015:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 645, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2031:1:4", + "memberName": "n", + "nodeType": "MemberAccess", + "referencedDeclaration": 991, + "src": "2015:17:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 638, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "1984:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 646, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1984:49:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1965:68:4" + }, + { + "assignments": [ + 649 + ], + "declarations": [ + { + "constant": false, + "id": 649, + "mutability": "mutable", + "name": "scalar_v", + "nameLocation": "2051:8:4", + "nodeType": "VariableDeclaration", + "scope": 684, + "src": "2043:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 648, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2043:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 656, + "initialValue": { + "arguments": [ + { + "id": 651, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 587, + "src": "2069:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 652, + "name": "sInv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 630, + "src": "2072:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 653, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "2078:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 654, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2094:1:4", + "memberName": "n", + "nodeType": "MemberAccess", + "referencedDeclaration": 991, + "src": "2078:17:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 650, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "2062:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 655, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2062:34:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2043:53:4" + }, + { + "assignments": [ + 658 + ], + "declarations": [ + { + "constant": false, + "id": 658, + "mutability": "mutable", + "name": "x1", + "nameLocation": "2114:2:4", + "nodeType": "VariableDeclaration", + "scope": 684, + "src": "2106:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 657, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2106:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 659, + "nodeType": "VariableDeclarationStatement", + "src": "2106:10:4" + }, + { + "expression": { + "id": 668, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 660, + "name": "x1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 658, + "src": "2127:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 663, + "name": "Qx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 591, + "src": "2169:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 664, + "name": "Qy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "2173:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 665, + "name": "scalar_u", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 637, + "src": "2177:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 666, + "name": "scalar_v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 649, + "src": "2187:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 661, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "2132:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 662, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2148:20:4", + "memberName": "ecZZ_mulmuladd_S_asm", + "nodeType": "MemberAccess", + "referencedDeclaration": 1867, + "src": "2132:36:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256,uint256) view returns (uint256)" + } + }, + "id": 667, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2132:64:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2127:69:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 669, + "nodeType": "ExpressionStatement", + "src": "2127:69:4" + }, + { + "expression": { + "id": 678, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 670, + "name": "x1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 658, + "src": "2207:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 672, + "name": "x1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 658, + "src": "2218:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 675, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 673, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 582, + "src": "2222:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 674, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 587, + "src": "2224:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2222:3:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 676, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 582, + "src": "2226:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 671, + "name": "addmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -2, + "src": "2211:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 677, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2211:18:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2207:22:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 679, + "nodeType": "ExpressionStatement", + "src": "2207:22:4" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 682, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 680, + "name": "x1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 658, + "src": "2251:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 681, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2257:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2251:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 597, + "id": 683, + "nodeType": "Return", + "src": "2244:14:4" + } + ] + }, + "documentation": { + "id": 583, + "nodeType": "StructuredDocumentation", + "src": "1459:98:4", + "text": " @dev ECDSA verification, given , signature, and public key, no calldata version" + }, + "id": 685, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ecdsa_verify", + "nameLocation": "1571:12:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 594, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 585, + "mutability": "mutable", + "name": "message", + "nameLocation": "1592:7:4", + "nodeType": "VariableDeclaration", + "scope": 685, + "src": "1584:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 584, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1584:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 587, + "mutability": "mutable", + "name": "r", + "nameLocation": "1609:1:4", + "nodeType": "VariableDeclaration", + "scope": 685, + "src": "1601:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 586, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1601:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 589, + "mutability": "mutable", + "name": "s", + "nameLocation": "1620:1:4", + "nodeType": "VariableDeclaration", + "scope": 685, + "src": "1612:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 588, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1612:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 591, + "mutability": "mutable", + "name": "Qx", + "nameLocation": "1631:2:4", + "nodeType": "VariableDeclaration", + "scope": 685, + "src": "1623:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 590, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1623:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 593, + "mutability": "mutable", + "name": "Qy", + "nameLocation": "1643:2:4", + "nodeType": "VariableDeclaration", + "scope": 685, + "src": "1635:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 592, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1635:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1583:63:4" + }, + "returnParameters": { + "id": 597, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 596, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 685, + "src": "1671:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 595, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1671:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1670:6:4" + }, + "scope": 968, + "src": "1562:703:4", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 800, + "nodeType": "Block", + "src": "2374:595:4", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 714, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 709, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 705, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 700, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 698, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 691, + "src": "2389:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 699, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2394:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2389:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 704, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 701, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 691, + "src": "2399:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "expression": { + "id": 702, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "2404:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 703, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2420:1:4", + "memberName": "n", + "nodeType": "MemberAccess", + "referencedDeclaration": 991, + "src": "2404:17:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2399:22:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2389:32:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 708, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 706, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 693, + "src": "2425:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 707, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2430:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2425:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2389:42:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 713, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 710, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 693, + "src": "2435:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "expression": { + "id": 711, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "2440:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 712, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2456:1:4", + "memberName": "n", + "nodeType": "MemberAccess", + "referencedDeclaration": 991, + "src": "2440:17:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2435:22:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2389:68:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 721, + "nodeType": "IfStatement", + "src": "2385:116:4", + "trueBody": { + "id": 720, + "nodeType": "Block", + "src": "2459:42:4", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "30", + "id": 717, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2488:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 716, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2480:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 715, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2480:7:4", + "typeDescriptions": {} + } + }, + "id": 718, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2480:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 697, + "id": 719, + "nodeType": "Return", + "src": "2473:17:4" + } + ] + } + }, + { + "assignments": [ + 723 + ], + "declarations": [ + { + "constant": false, + "id": 723, + "mutability": "mutable", + "name": "y", + "nameLocation": "2518:1:4", + "nodeType": "VariableDeclaration", + "scope": 800, + "src": "2510:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 722, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2510:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 731, + "initialValue": { + "arguments": [ + { + "id": 726, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 691, + "src": "2550:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 729, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 727, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 689, + "src": "2553:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "3237", + "id": 728, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2555:2:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_27_by_1", + "typeString": "int_const 27" + }, + "value": "27" + }, + "src": "2553:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 724, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "2520:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 725, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2536:13:4", + "memberName": "ec_Decompress", + "nodeType": "MemberAccess", + "referencedDeclaration": 1416, + "src": "2520:29:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) view returns (uint256)" + } + }, + "id": 730, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2520:38:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2510:48:4" + }, + { + "assignments": [ + 733 + ], + "declarations": [ + { + "constant": false, + "id": 733, + "mutability": "mutable", + "name": "rinv", + "nameLocation": "2576:4:4", + "nodeType": "VariableDeclaration", + "scope": 800, + "src": "2568:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 732, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2568:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 738, + "initialValue": { + "arguments": [ + { + "id": 736, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 691, + "src": "2609:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 734, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "2581:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 735, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2597:11:4", + "memberName": "FCL_nModInv", + "nodeType": "MemberAccess", + "referencedDeclaration": 1019, + "src": "2581:27:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) view returns (uint256)" + } + }, + "id": 737, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2581:30:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2568:43:4" + }, + { + "assignments": [ + 740 + ], + "declarations": [ + { + "constant": false, + "id": 740, + "mutability": "mutable", + "name": "u1", + "nameLocation": "2629:2:4", + "nodeType": "VariableDeclaration", + "scope": 800, + "src": "2621:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 739, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2621:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 755, + "initialValue": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 750, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 742, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "2639:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 743, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2655:1:4", + "memberName": "n", + "nodeType": "MemberAccess", + "referencedDeclaration": 991, + "src": "2639:17:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 745, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2664:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 746, + "name": "h", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 687, + "src": "2666:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 747, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "2668:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 748, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2684:1:4", + "memberName": "n", + "nodeType": "MemberAccess", + "referencedDeclaration": 991, + "src": "2668:17:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 744, + "name": "addmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -2, + "src": "2657:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 749, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2657:29:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2639:47:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 751, + "name": "rinv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 733, + "src": "2688:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 752, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "2693:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 753, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2709:1:4", + "memberName": "n", + "nodeType": "MemberAccess", + "referencedDeclaration": 991, + "src": "2693:17:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 741, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "2632:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2632:79:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2621:90:4" + }, + { + "assignments": [ + 757 + ], + "declarations": [ + { + "constant": false, + "id": 757, + "mutability": "mutable", + "name": "u2", + "nameLocation": "2737:2:4", + "nodeType": "VariableDeclaration", + "scope": 800, + "src": "2729:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 756, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2729:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 764, + "initialValue": { + "arguments": [ + { + "id": 759, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 693, + "src": "2747:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 760, + "name": "rinv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 733, + "src": "2750:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 761, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "2755:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 762, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2771:1:4", + "memberName": "n", + "nodeType": "MemberAccess", + "referencedDeclaration": 991, + "src": "2755:17:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 758, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "2740:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2740:33:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2729:44:4" + }, + { + "assignments": [ + 766 + ], + "declarations": [ + { + "constant": false, + "id": 766, + "mutability": "mutable", + "name": "Qx", + "nameLocation": "2799:2:4", + "nodeType": "VariableDeclaration", + "scope": 800, + "src": "2791:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 765, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2791:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 767, + "nodeType": "VariableDeclarationStatement", + "src": "2791:10:4" + }, + { + "assignments": [ + 769 + ], + "declarations": [ + { + "constant": false, + "id": 769, + "mutability": "mutable", + "name": "Qy", + "nameLocation": "2819:2:4", + "nodeType": "VariableDeclaration", + "scope": 800, + "src": "2811:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 768, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2811:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 770, + "nodeType": "VariableDeclarationStatement", + "src": "2811:10:4" + }, + { + "expression": { + "id": 781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "components": [ + { + "id": 771, + "name": "Qx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 766, + "src": "2832:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 772, + "name": "Qy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 769, + "src": "2835:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 773, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "2831:7:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 776, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 691, + "src": "2870:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 777, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 723, + "src": "2872:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 778, + "name": "u1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 740, + "src": "2875:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 779, + "name": "u2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 757, + "src": "2879:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 774, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "2839:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2855:14:4", + "memberName": "ecZZ_mulmuladd", + "nodeType": "MemberAccess", + "referencedDeclaration": 1941, + "src": "2839:30:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256,uint256) view returns (uint256,uint256)" + } + }, + "id": 780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2839:43:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "src": "2831:51:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 782, + "nodeType": "ExpressionStatement", + "src": "2831:51:4" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 792, + "name": "Qx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 766, + "src": "2951:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 793, + "name": "Qy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 769, + "src": "2955:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 790, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "2934:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 791, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2938:12:4", + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "2934:16:4", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 794, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2934:24:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 789, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "2924:9:4", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 795, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2924:35:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 788, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2916:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 787, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2916:7:4", + "typeDescriptions": {} + } + }, + "id": 796, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2916:44:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 786, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2908:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 785, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "2908:7:4", + "typeDescriptions": {} + } + }, + "id": 797, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2908:53:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 784, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2900:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 783, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2900:7:4", + "typeDescriptions": {} + } + }, + "id": 798, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2900:62:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 697, + "id": 799, + "nodeType": "Return", + "src": "2893:69:4" + } + ] + }, + "id": 801, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ec_recover_r1", + "nameLocation": "2280:13:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 694, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 687, + "mutability": "mutable", + "name": "h", + "nameLocation": "2302:1:4", + "nodeType": "VariableDeclaration", + "scope": 801, + "src": "2294:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 686, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2294:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 689, + "mutability": "mutable", + "name": "v", + "nameLocation": "2313:1:4", + "nodeType": "VariableDeclaration", + "scope": 801, + "src": "2305:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 688, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2305:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 691, + "mutability": "mutable", + "name": "r", + "nameLocation": "2324:1:4", + "nodeType": "VariableDeclaration", + "scope": 801, + "src": "2316:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 690, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2316:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 693, + "mutability": "mutable", + "name": "s", + "nameLocation": "2335:1:4", + "nodeType": "VariableDeclaration", + "scope": 801, + "src": "2327:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 692, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2327:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2293:44:4" + }, + "returnParameters": { + "id": 697, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 696, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 801, + "src": "2361:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 695, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2361:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2360:9:4" + }, + "scope": 968, + "src": "2271:698:4", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 877, + "nodeType": "Block", + "src": "3114:541:4", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 828, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 824, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 820, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 816, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 814, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 805, + "src": "3136:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 815, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3141:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3136:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 819, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 817, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 805, + "src": "3146:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 818, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 582, + "src": "3151:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3146:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3136:16:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 823, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 821, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 807, + "src": "3156:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 822, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3161:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3156:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3136:26:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 827, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 825, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 807, + "src": "3166:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 826, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 582, + "src": "3171:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3166:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3136:36:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 832, + "nodeType": "IfStatement", + "src": "3132:79:4", + "trueBody": { + "id": 831, + "nodeType": "Block", + "src": "3174:37:4", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 829, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3195:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 813, + "id": 830, + "nodeType": "Return", + "src": "3188:12:4" + } + ] + } + }, + { + "assignments": [ + 834 + ], + "declarations": [ + { + "constant": false, + "id": 834, + "mutability": "mutable", + "name": "sInv", + "nameLocation": "3386:4:4", + "nodeType": "VariableDeclaration", + "scope": 877, + "src": "3378:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 833, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3378:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 839, + "initialValue": { + "arguments": [ + { + "id": 837, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 807, + "src": "3421:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 835, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "3393:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 836, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3409:11:4", + "memberName": "FCL_nModInv", + "nodeType": "MemberAccess", + "referencedDeclaration": 1019, + "src": "3393:27:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) view returns (uint256)" + } + }, + "id": 838, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3393:30:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3378:45:4" + }, + { + "assignments": [ + 841 + ], + "declarations": [ + { + "constant": false, + "id": 841, + "mutability": "mutable", + "name": "X", + "nameLocation": "3442:1:4", + "nodeType": "VariableDeclaration", + "scope": 877, + "src": "3434:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 840, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3434:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 842, + "nodeType": "VariableDeclarationStatement", + "src": "3434:9:4" + }, + { + "expression": { + "id": 861, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 843, + "name": "X", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 841, + "src": "3484:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 849, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 803, + "src": "3545:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 848, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3537:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 847, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3537:7:4", + "typeDescriptions": {} + } + }, + "id": 850, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3537:16:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 851, + "name": "sInv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 834, + "src": "3555:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 852, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 582, + "src": "3561:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 846, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "3530:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 853, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3530:33:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 855, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 805, + "src": "3572:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 856, + "name": "sInv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 834, + "src": "3575:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 857, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 582, + "src": "3581:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 854, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "3565:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 858, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3565:18:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 859, + "name": "Shamir8", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 809, + "src": "3585:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 844, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "3488:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 845, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3504:25:4", + "memberName": "ecZZ_mulmuladd_S8_extcode", + "nodeType": "MemberAccess", + "referencedDeclaration": 2085, + "src": "3488:41:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_address_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,address) view returns (uint256)" + } + }, + "id": 860, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3488:105:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3484:109:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 862, + "nodeType": "ExpressionStatement", + "src": "3484:109:4" + }, + { + "expression": { + "id": 871, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 863, + "name": "X", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 841, + "src": "3604:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 865, + "name": "X", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 841, + "src": "3614:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 866, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 582, + "src": "3617:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 867, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 805, + "src": "3619:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3617:3:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 869, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 582, + "src": "3621:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 864, + "name": "addmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -2, + "src": "3607:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 870, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3607:17:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3604:20:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 872, + "nodeType": "ExpressionStatement", + "src": "3604:20:4" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 875, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 873, + "name": "X", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 841, + "src": "3642:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 874, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3647:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3642:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 813, + "id": 876, + "nodeType": "Return", + "src": "3635:13:4" + } + ] + }, + "id": 878, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ecdsa_precomputed_verify", + "nameLocation": "2984:24:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 810, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 803, + "mutability": "mutable", + "name": "message", + "nameLocation": "3017:7:4", + "nodeType": "VariableDeclaration", + "scope": 878, + "src": "3009:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 802, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3009:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 805, + "mutability": "mutable", + "name": "r", + "nameLocation": "3034:1:4", + "nodeType": "VariableDeclaration", + "scope": 878, + "src": "3026:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 804, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3026:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 807, + "mutability": "mutable", + "name": "s", + "nameLocation": "3045:1:4", + "nodeType": "VariableDeclaration", + "scope": 878, + "src": "3037:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 806, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3037:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 809, + "mutability": "mutable", + "name": "Shamir8", + "nameLocation": "3056:7:4", + "nodeType": "VariableDeclaration", + "scope": 878, + "src": "3048:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 808, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3048:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3008:56:4" + }, + "returnParameters": { + "id": 813, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 812, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 878, + "src": "3104:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 811, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3104:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3103:6:4" + }, + "scope": 968, + "src": "2975:680:4", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 966, + "nodeType": "Block", + "src": "3837:587:4", + "statements": [ + { + "assignments": [ + 892 + ], + "declarations": [ + { + "constant": false, + "id": 892, + "mutability": "mutable", + "name": "r", + "nameLocation": "3855:1:4", + "nodeType": "VariableDeclaration", + "scope": 966, + "src": "3847:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 891, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3847:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 896, + "initialValue": { + "baseExpression": { + "id": 893, + "name": "rs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 884, + "src": "3859:2:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_calldata_ptr", + "typeString": "uint256[2] calldata" + } + }, + "id": 895, + "indexExpression": { + "hexValue": "30", + "id": 894, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3862:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3859:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3847:17:4" + }, + { + "assignments": [ + 898 + ], + "declarations": [ + { + "constant": false, + "id": 898, + "mutability": "mutable", + "name": "s", + "nameLocation": "3882:1:4", + "nodeType": "VariableDeclaration", + "scope": 966, + "src": "3874:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 897, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3874:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 902, + "initialValue": { + "baseExpression": { + "id": 899, + "name": "rs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 884, + "src": "3886:2:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_calldata_ptr", + "typeString": "uint256[2] calldata" + } + }, + "id": 901, + "indexExpression": { + "hexValue": "31", + "id": 900, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3889:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3886:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3874:17:4" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 917, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 913, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 909, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 905, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 903, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 892, + "src": "3905:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 904, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3910:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3905:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 908, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 906, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 892, + "src": "3915:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 907, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 582, + "src": "3920:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3915:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3905:16:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 912, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 910, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 898, + "src": "3925:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 911, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3930:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3925:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3905:26:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 916, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 914, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 898, + "src": "3935:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 915, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 582, + "src": "3940:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3935:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3905:36:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 921, + "nodeType": "IfStatement", + "src": "3901:79:4", + "trueBody": { + "id": 920, + "nodeType": "Block", + "src": "3943:37:4", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 918, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3964:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 890, + "id": 919, + "nodeType": "Return", + "src": "3957:12:4" + } + ] + } + }, + { + "assignments": [ + 923 + ], + "declarations": [ + { + "constant": false, + "id": 923, + "mutability": "mutable", + "name": "sInv", + "nameLocation": "4155:4:4", + "nodeType": "VariableDeclaration", + "scope": 966, + "src": "4147:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 922, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4147:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 928, + "initialValue": { + "arguments": [ + { + "id": 926, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 898, + "src": "4190:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 924, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "4162:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 925, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4178:11:4", + "memberName": "FCL_nModInv", + "nodeType": "MemberAccess", + "referencedDeclaration": 1019, + "src": "4162:27:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) view returns (uint256)" + } + }, + "id": 927, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4162:30:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4147:45:4" + }, + { + "assignments": [ + 930 + ], + "declarations": [ + { + "constant": false, + "id": 930, + "mutability": "mutable", + "name": "X", + "nameLocation": "4211:1:4", + "nodeType": "VariableDeclaration", + "scope": 966, + "src": "4203:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 929, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4203:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 931, + "nodeType": "VariableDeclarationStatement", + "src": "4203:9:4" + }, + { + "expression": { + "id": 950, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 932, + "name": "X", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 930, + "src": "4253:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 938, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 880, + "src": "4314:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 937, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4306:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 936, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4306:7:4", + "typeDescriptions": {} + } + }, + "id": 939, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4306:16:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 940, + "name": "sInv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 923, + "src": "4324:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 941, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 582, + "src": "4330:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 935, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "4299:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 942, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4299:33:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 944, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 892, + "src": "4341:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 945, + "name": "sInv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 923, + "src": "4344:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 946, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 582, + "src": "4350:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 943, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "4334:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 947, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4334:18:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 948, + "name": "Shamir8", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 886, + "src": "4354:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 933, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "4257:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 934, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4273:25:4", + "memberName": "ecZZ_mulmuladd_S8_extcode", + "nodeType": "MemberAccess", + "referencedDeclaration": 2085, + "src": "4257:41:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_address_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,address) view returns (uint256)" + } + }, + "id": 949, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4257:105:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4253:109:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 951, + "nodeType": "ExpressionStatement", + "src": "4253:109:4" + }, + { + "expression": { + "id": 960, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 952, + "name": "X", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 930, + "src": "4373:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 954, + "name": "X", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 930, + "src": "4383:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 957, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 955, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 582, + "src": "4386:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 956, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 892, + "src": "4388:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4386:3:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 958, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 582, + "src": "4390:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 953, + "name": "addmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -2, + "src": "4376:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 959, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4376:17:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4373:20:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 961, + "nodeType": "ExpressionStatement", + "src": "4373:20:4" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 964, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 962, + "name": "X", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 930, + "src": "4411:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 963, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4416:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4411:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 890, + "id": 965, + "nodeType": "Return", + "src": "4404:13:4" + } + ] + }, + "id": 967, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ecdsa_precomputed_verify", + "nameLocation": "3705:24:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 887, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 880, + "mutability": "mutable", + "name": "message", + "nameLocation": "3738:7:4", + "nodeType": "VariableDeclaration", + "scope": 967, + "src": "3730:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 879, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3730:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 884, + "mutability": "mutable", + "name": "rs", + "nameLocation": "3767:2:4", + "nodeType": "VariableDeclaration", + "scope": 967, + "src": "3747:22:4", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_calldata_ptr", + "typeString": "uint256[2]" + }, + "typeName": { + "baseType": { + "id": 881, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3747:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 883, + "length": { + "hexValue": "32", + "id": 882, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3755:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "ArrayTypeName", + "src": "3747:10:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr", + "typeString": "uint256[2]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 886, + "mutability": "mutable", + "name": "Shamir8", + "nameLocation": "3779:7:4", + "nodeType": "VariableDeclaration", + "scope": 967, + "src": "3771:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 885, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3771:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3729:58:4" + }, + "returnParameters": { + "id": 890, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 889, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 967, + "src": "3827:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 888, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3827:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3826:6:4" + }, + "scope": 968, + "src": "3696:728:4", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 969, + "src": "1217:3244:4", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "1127:3335:4" + }, + "id": 4 + }, + "FreshCryptoLib/FCL_elliptic.sol": { + "ast": { + "absolutePath": "FreshCryptoLib/FCL_elliptic.sol", + "exportedSymbols": { + "FCL_Elliptic_ZZ": [ + 2309 + ] + }, + "id": 2310, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 970, + "literals": [ + "solidity", + ">=", + "0.8", + ".19", + "<", + "0.9", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "1186:32:5" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "FCL_Elliptic_ZZ", + "contractDependencies": [], + "contractKind": "library", + "fullyImplemented": true, + "id": 2309, + "linearizedBaseContracts": [ + 2309 + ], + "name": "FCL_Elliptic_ZZ", + "nameLocation": "1228:15:5", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 973, + "mutability": "constant", + "name": "MODEXP_PRECOMPILE", + "nameLocation": "1410:17:5", + "nodeType": "VariableDeclaration", + "scope": 2309, + "src": "1393:79:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 971, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1393:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": { + "hexValue": "307830303030303030303030303030303030303030303030303030303030303030303030303030303035", + "id": 972, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1430:42:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "value": "0x0000000000000000000000000000000000000005" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 976, + "mutability": "constant", + "name": "p", + "nameLocation": "1527:1:5", + "nodeType": "VariableDeclaration", + "scope": 2309, + "src": "1510:87:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 974, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1510:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "307846464646464646463030303030303031303030303030303030303030303030303030303030303030464646464646464646464646464646464646464646464646", + "id": 975, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1531:66:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_115792089210356248762697446949407573530086143415290314195533631308867097853951_by_1", + "typeString": "int_const 1157...(70 digits omitted)...3951" + }, + "value": "0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 979, + "mutability": "constant", + "name": "a", + "nameLocation": "1662:1:5", + "nodeType": "VariableDeclaration", + "scope": 2309, + "src": "1645:87:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 977, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1645:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "307846464646464646463030303030303031303030303030303030303030303030303030303030303030464646464646464646464646464646464646464646464643", + "id": 978, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1666:66:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_115792089210356248762697446949407573530086143415290314195533631308867097853948_by_1", + "typeString": "int_const 1157...(70 digits omitted)...3948" + }, + "value": "0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 982, + "mutability": "constant", + "name": "b", + "nameLocation": "1798:1:5", + "nodeType": "VariableDeclaration", + "scope": 2309, + "src": "1781:87:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 980, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1781:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "307835414336333544384141334139334537423345424244353537363938383642433635314430364230434335334230463633424345334333453237443236303442", + "id": 981, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1802:66:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_41058363725152142129326129780047268409114441015993725554835256314039467401291_by_1", + "typeString": "int_const 4105...(69 digits omitted)...1291" + }, + "value": "0x5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 985, + "mutability": "constant", + "name": "gx", + "nameLocation": "1933:2:5", + "nodeType": "VariableDeclaration", + "scope": 2309, + "src": "1916:88:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 983, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1916:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "307836423137443146324531324334323437463842434536453536334134343046323737303337443831324445423333413046344131333934354438393843323936", + "id": 984, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1938:66:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_48439561293906451759052585252797914202762949526041747995844080717082404635286_by_1", + "typeString": "int_const 4843...(69 digits omitted)...5286" + }, + "value": "0x6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 988, + "mutability": "constant", + "name": "gy", + "nameLocation": "2027:2:5", + "nodeType": "VariableDeclaration", + "scope": 2309, + "src": "2010:88:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 986, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2010:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "307834464533343245324645314137463942384545374542344137433046394531363242434533333537364233313545434543424236343036383337424635314635", + "id": 987, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2032:66:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_36134250956749795798585127919587881956611106672985015071877198253568414405109_by_1", + "typeString": "int_const 3613...(69 digits omitted)...5109" + }, + "value": "0x4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 991, + "mutability": "constant", + "name": "n", + "nameLocation": "2158:1:5", + "nodeType": "VariableDeclaration", + "scope": 2309, + "src": "2141:87:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 989, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2141:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "307846464646464646463030303030303030464646464646464646464646464646464243453646414144413731373945383446334239434143324643363332353531", + "id": 990, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2162:66:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_115792089210356248762697446949407573529996955224135760342422259061068512044369_by_1", + "typeString": "int_const 1157...(70 digits omitted)...4369" + }, + "value": "0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 994, + "mutability": "constant", + "name": "minus_2", + "nameLocation": "2336:7:5", + "nodeType": "VariableDeclaration", + "scope": 2309, + "src": "2319:93:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 992, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2319:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "307846464646464646463030303030303031303030303030303030303030303030303030303030303030464646464646464646464646464646464646464646464644", + "id": 993, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2346:66:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_115792089210356248762697446949407573530086143415290314195533631308867097853949_by_1", + "typeString": "int_const 1157...(70 digits omitted)...3949" + }, + "value": "0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFD" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 997, + "mutability": "constant", + "name": "minus_2modn", + "nameLocation": "2490:11:5", + "nodeType": "VariableDeclaration", + "scope": 2309, + "src": "2473:97:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 995, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2473:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "307846464646464646463030303030303030464646464646464646464646464646464243453646414144413731373945383446334239434143324643363332353446", + "id": 996, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2504:66:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_115792089210356248762697446949407573529996955224135760342422259061068512044367_by_1", + "typeString": "int_const 1157...(70 digits omitted)...4367" + }, + "value": "0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC63254F" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 1000, + "mutability": "constant", + "name": "minus_1", + "nameLocation": "2594:7:5", + "nodeType": "VariableDeclaration", + "scope": 2309, + "src": "2577:93:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 998, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2577:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "307846464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646", + "id": 999, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2604:66:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639935_by_1", + "typeString": "int_const 1157...(70 digits omitted)...9935" + }, + "value": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 1003, + "mutability": "constant", + "name": "pp1div4", + "nameLocation": "2709:7:5", + "nodeType": "VariableDeclaration", + "scope": 2309, + "src": "2692:91:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1001, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2692:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "307833666666666666666330303030303030343030303030303030303030303030303030303030303030343030303030303030303030303030303030303030303030", + "id": 1002, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2717:66:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_28948022302589062190674361737351893382521535853822578548883407827216774463488_by_1", + "typeString": "int_const 2894...(69 digits omitted)...3488" + }, + "value": "0x3fffffffc0000000400000000000000000000000400000000000000000000000" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 1006, + "mutability": "constant", + "name": "_NOTSQUARE", + "nameLocation": "2867:10:5", + "nodeType": "VariableDeclaration", + "scope": 2309, + "src": "2850:94:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1004, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2850:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "307846464646464646463030303030303032303030303030303030303030303030303030303030303030464646464646464646464646464646464646464646464646", + "id": 1005, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2878:66:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_115792089210356248768974548684794254293921932838497980611635986753331132366847_by_1", + "typeString": "int_const 1157...(70 digits omitted)...6847" + }, + "value": "0xFFFFFFFF00000002000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 1009, + "mutability": "constant", + "name": "_NOTONCURVE", + "nameLocation": "2967:11:5", + "nodeType": "VariableDeclaration", + "scope": 2309, + "src": "2950:95:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1007, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2950:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "307846464646464646463030303030303033303030303030303030303030303030303030303030303030464646464646464646464646464646464646464646464646", + "id": 1008, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2979:66:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_115792089210356248775251650420180935057757722261705647027738342197795166879743_by_1", + "typeString": "int_const 1157...(70 digits omitted)...9743" + }, + "value": "0xFFFFFFFF00000003000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF" + }, + "visibility": "internal" + }, + { + "body": { + "id": 1018, + "nodeType": "Block", + "src": "3225:663:5", + "statements": [ + { + "AST": { + "nativeSrc": "3244:638:5", + "nodeType": "YulBlock", + "src": "3244:638:5", + "statements": [ + { + "nativeSrc": "3258:26:5", + "nodeType": "YulVariableDeclaration", + "src": "3258:26:5", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3279:4:5", + "nodeType": "YulLiteral", + "src": "3279:4:5", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "3273:5:5", + "nodeType": "YulIdentifier", + "src": "3273:5:5" + }, + "nativeSrc": "3273:11:5", + "nodeType": "YulFunctionCall", + "src": "3273:11:5" + }, + "variables": [ + { + "name": "pointer", + "nativeSrc": "3262:7:5", + "nodeType": "YulTypedName", + "src": "3262:7:5", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pointer", + "nativeSrc": "3381:7:5", + "nodeType": "YulIdentifier", + "src": "3381:7:5" + }, + { + "kind": "number", + "nativeSrc": "3390:4:5", + "nodeType": "YulLiteral", + "src": "3390:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3374:6:5", + "nodeType": "YulIdentifier", + "src": "3374:6:5" + }, + "nativeSrc": "3374:21:5", + "nodeType": "YulFunctionCall", + "src": "3374:21:5" + }, + "nativeSrc": "3374:21:5", + "nodeType": "YulExpressionStatement", + "src": "3374:21:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pointer", + "nativeSrc": "3419:7:5", + "nodeType": "YulIdentifier", + "src": "3419:7:5" + }, + { + "kind": "number", + "nativeSrc": "3428:4:5", + "nodeType": "YulLiteral", + "src": "3428:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3415:3:5", + "nodeType": "YulIdentifier", + "src": "3415:3:5" + }, + "nativeSrc": "3415:18:5", + "nodeType": "YulFunctionCall", + "src": "3415:18:5" + }, + { + "kind": "number", + "nativeSrc": "3435:4:5", + "nodeType": "YulLiteral", + "src": "3435:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3408:6:5", + "nodeType": "YulIdentifier", + "src": "3408:6:5" + }, + "nativeSrc": "3408:32:5", + "nodeType": "YulFunctionCall", + "src": "3408:32:5" + }, + "nativeSrc": "3408:32:5", + "nodeType": "YulExpressionStatement", + "src": "3408:32:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pointer", + "nativeSrc": "3464:7:5", + "nodeType": "YulIdentifier", + "src": "3464:7:5" + }, + { + "kind": "number", + "nativeSrc": "3473:4:5", + "nodeType": "YulLiteral", + "src": "3473:4:5", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3460:3:5", + "nodeType": "YulIdentifier", + "src": "3460:3:5" + }, + "nativeSrc": "3460:18:5", + "nodeType": "YulFunctionCall", + "src": "3460:18:5" + }, + { + "kind": "number", + "nativeSrc": "3480:4:5", + "nodeType": "YulLiteral", + "src": "3480:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3453:6:5", + "nodeType": "YulIdentifier", + "src": "3453:6:5" + }, + "nativeSrc": "3453:32:5", + "nodeType": "YulFunctionCall", + "src": "3453:32:5" + }, + "nativeSrc": "3453:32:5", + "nodeType": "YulExpressionStatement", + "src": "3453:32:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pointer", + "nativeSrc": "3568:7:5", + "nodeType": "YulIdentifier", + "src": "3568:7:5" + }, + { + "kind": "number", + "nativeSrc": "3577:4:5", + "nodeType": "YulLiteral", + "src": "3577:4:5", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3564:3:5", + "nodeType": "YulIdentifier", + "src": "3564:3:5" + }, + "nativeSrc": "3564:18:5", + "nodeType": "YulFunctionCall", + "src": "3564:18:5" + }, + { + "name": "u", + "nativeSrc": "3584:1:5", + "nodeType": "YulIdentifier", + "src": "3584:1:5" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3557:6:5", + "nodeType": "YulIdentifier", + "src": "3557:6:5" + }, + "nativeSrc": "3557:29:5", + "nodeType": "YulFunctionCall", + "src": "3557:29:5" + }, + "nativeSrc": "3557:29:5", + "nodeType": "YulExpressionStatement", + "src": "3557:29:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pointer", + "nativeSrc": "3610:7:5", + "nodeType": "YulIdentifier", + "src": "3610:7:5" + }, + { + "kind": "number", + "nativeSrc": "3619:4:5", + "nodeType": "YulLiteral", + "src": "3619:4:5", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3606:3:5", + "nodeType": "YulIdentifier", + "src": "3606:3:5" + }, + "nativeSrc": "3606:18:5", + "nodeType": "YulFunctionCall", + "src": "3606:18:5" + }, + { + "name": "minus_2modn", + "nativeSrc": "3626:11:5", + "nodeType": "YulIdentifier", + "src": "3626:11:5" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3599:6:5", + "nodeType": "YulIdentifier", + "src": "3599:6:5" + }, + "nativeSrc": "3599:39:5", + "nodeType": "YulFunctionCall", + "src": "3599:39:5" + }, + "nativeSrc": "3599:39:5", + "nodeType": "YulExpressionStatement", + "src": "3599:39:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pointer", + "nativeSrc": "3662:7:5", + "nodeType": "YulIdentifier", + "src": "3662:7:5" + }, + { + "kind": "number", + "nativeSrc": "3671:4:5", + "nodeType": "YulLiteral", + "src": "3671:4:5", + "type": "", + "value": "0xa0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3658:3:5", + "nodeType": "YulIdentifier", + "src": "3658:3:5" + }, + "nativeSrc": "3658:18:5", + "nodeType": "YulFunctionCall", + "src": "3658:18:5" + }, + { + "name": "n", + "nativeSrc": "3678:1:5", + "nodeType": "YulIdentifier", + "src": "3678:1:5" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3651:6:5", + "nodeType": "YulIdentifier", + "src": "3651:6:5" + }, + "nativeSrc": "3651:29:5", + "nodeType": "YulFunctionCall", + "src": "3651:29:5" + }, + "nativeSrc": "3651:29:5", + "nodeType": "YulExpressionStatement", + "src": "3651:29:5" + }, + { + "body": { + "nativeSrc": "3819:16:5", + "nodeType": "YulBlock", + "src": "3819:16:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3828:1:5", + "nodeType": "YulLiteral", + "src": "3828:1:5", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "3831:1:5", + "nodeType": "YulLiteral", + "src": "3831:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "3821:6:5", + "nodeType": "YulIdentifier", + "src": "3821:6:5" + }, + "nativeSrc": "3821:12:5", + "nodeType": "YulFunctionCall", + "src": "3821:12:5" + }, + "nativeSrc": "3821:12:5", + "nodeType": "YulExpressionStatement", + "src": "3821:12:5" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3778:1:5", + "nodeType": "YulLiteral", + "src": "3778:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "3774:3:5", + "nodeType": "YulIdentifier", + "src": "3774:3:5" + }, + "nativeSrc": "3774:6:5", + "nodeType": "YulFunctionCall", + "src": "3774:6:5" + }, + { + "kind": "number", + "nativeSrc": "3782:4:5", + "nodeType": "YulLiteral", + "src": "3782:4:5", + "type": "", + "value": "0x05" + }, + { + "name": "pointer", + "nativeSrc": "3788:7:5", + "nodeType": "YulIdentifier", + "src": "3788:7:5" + }, + { + "kind": "number", + "nativeSrc": "3797:4:5", + "nodeType": "YulLiteral", + "src": "3797:4:5", + "type": "", + "value": "0xc0" + }, + { + "name": "pointer", + "nativeSrc": "3803:7:5", + "nodeType": "YulIdentifier", + "src": "3803:7:5" + }, + { + "kind": "number", + "nativeSrc": "3812:4:5", + "nodeType": "YulLiteral", + "src": "3812:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "3763:10:5", + "nodeType": "YulIdentifier", + "src": "3763:10:5" + }, + "nativeSrc": "3763:54:5", + "nodeType": "YulFunctionCall", + "src": "3763:54:5" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "3756:6:5", + "nodeType": "YulIdentifier", + "src": "3756:6:5" + }, + "nativeSrc": "3756:62:5", + "nodeType": "YulFunctionCall", + "src": "3756:62:5" + }, + "nativeSrc": "3753:82:5", + "nodeType": "YulIf", + "src": "3753:82:5" + }, + { + "nativeSrc": "3848:24:5", + "nodeType": "YulAssignment", + "src": "3848:24:5", + "value": { + "arguments": [ + { + "name": "pointer", + "nativeSrc": "3864:7:5", + "nodeType": "YulIdentifier", + "src": "3864:7:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "3858:5:5", + "nodeType": "YulIdentifier", + "src": "3858:5:5" + }, + "nativeSrc": "3858:14:5", + "nodeType": "YulFunctionCall", + "src": "3858:14:5" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "3848:6:5", + "nodeType": "YulIdentifier", + "src": "3848:6:5" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 997, + "isOffset": false, + "isSlot": false, + "src": "3626:11:5", + "valueSize": 1 + }, + { + "declaration": 991, + "isOffset": false, + "isSlot": false, + "src": "3678:1:5", + "valueSize": 1 + }, + { + "declaration": 1015, + "isOffset": false, + "isSlot": false, + "src": "3848:6:5", + "valueSize": 1 + }, + { + "declaration": 1012, + "isOffset": false, + "isSlot": false, + "src": "3584:1:5", + "valueSize": 1 + } + ], + "id": 1017, + "nodeType": "InlineAssembly", + "src": "3235:647:5" + } + ] + }, + "documentation": { + "id": 1010, + "nodeType": "StructuredDocumentation", + "src": "3052:97:5", + "text": " /* inversion mod n via a^(n-2), use of precompiled using little Fermat theorem" + }, + "id": 1019, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "FCL_nModInv", + "nameLocation": "3163:11:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1013, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1012, + "mutability": "mutable", + "name": "u", + "nameLocation": "3183:1:5", + "nodeType": "VariableDeclaration", + "scope": 1019, + "src": "3175:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1011, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3175:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3174:11:5" + }, + "returnParameters": { + "id": 1016, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1015, + "mutability": "mutable", + "name": "result", + "nameLocation": "3217:6:5", + "nodeType": "VariableDeclaration", + "scope": 1019, + "src": "3209:14:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1014, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3209:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3208:16:5" + }, + "scope": 2309, + "src": "3154:734:5", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1028, + "nodeType": "Block", + "src": "4071:659:5", + "statements": [ + { + "AST": { + "nativeSrc": "4090:634:5", + "nodeType": "YulBlock", + "src": "4090:634:5", + "statements": [ + { + "nativeSrc": "4104:26:5", + "nodeType": "YulVariableDeclaration", + "src": "4104:26:5", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4125:4:5", + "nodeType": "YulLiteral", + "src": "4125:4:5", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "4119:5:5", + "nodeType": "YulIdentifier", + "src": "4119:5:5" + }, + "nativeSrc": "4119:11:5", + "nodeType": "YulFunctionCall", + "src": "4119:11:5" + }, + "variables": [ + { + "name": "pointer", + "nativeSrc": "4108:7:5", + "nodeType": "YulTypedName", + "src": "4108:7:5", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pointer", + "nativeSrc": "4227:7:5", + "nodeType": "YulIdentifier", + "src": "4227:7:5" + }, + { + "kind": "number", + "nativeSrc": "4236:4:5", + "nodeType": "YulLiteral", + "src": "4236:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4220:6:5", + "nodeType": "YulIdentifier", + "src": "4220:6:5" + }, + "nativeSrc": "4220:21:5", + "nodeType": "YulFunctionCall", + "src": "4220:21:5" + }, + "nativeSrc": "4220:21:5", + "nodeType": "YulExpressionStatement", + "src": "4220:21:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pointer", + "nativeSrc": "4265:7:5", + "nodeType": "YulIdentifier", + "src": "4265:7:5" + }, + { + "kind": "number", + "nativeSrc": "4274:4:5", + "nodeType": "YulLiteral", + "src": "4274:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4261:3:5", + "nodeType": "YulIdentifier", + "src": "4261:3:5" + }, + "nativeSrc": "4261:18:5", + "nodeType": "YulFunctionCall", + "src": "4261:18:5" + }, + { + "kind": "number", + "nativeSrc": "4281:4:5", + "nodeType": "YulLiteral", + "src": "4281:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4254:6:5", + "nodeType": "YulIdentifier", + "src": "4254:6:5" + }, + "nativeSrc": "4254:32:5", + "nodeType": "YulFunctionCall", + "src": "4254:32:5" + }, + "nativeSrc": "4254:32:5", + "nodeType": "YulExpressionStatement", + "src": "4254:32:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pointer", + "nativeSrc": "4310:7:5", + "nodeType": "YulIdentifier", + "src": "4310:7:5" + }, + { + "kind": "number", + "nativeSrc": "4319:4:5", + "nodeType": "YulLiteral", + "src": "4319:4:5", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4306:3:5", + "nodeType": "YulIdentifier", + "src": "4306:3:5" + }, + "nativeSrc": "4306:18:5", + "nodeType": "YulFunctionCall", + "src": "4306:18:5" + }, + { + "kind": "number", + "nativeSrc": "4326:4:5", + "nodeType": "YulLiteral", + "src": "4326:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4299:6:5", + "nodeType": "YulIdentifier", + "src": "4299:6:5" + }, + "nativeSrc": "4299:32:5", + "nodeType": "YulFunctionCall", + "src": "4299:32:5" + }, + "nativeSrc": "4299:32:5", + "nodeType": "YulExpressionStatement", + "src": "4299:32:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pointer", + "nativeSrc": "4414:7:5", + "nodeType": "YulIdentifier", + "src": "4414:7:5" + }, + { + "kind": "number", + "nativeSrc": "4423:4:5", + "nodeType": "YulLiteral", + "src": "4423:4:5", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4410:3:5", + "nodeType": "YulIdentifier", + "src": "4410:3:5" + }, + "nativeSrc": "4410:18:5", + "nodeType": "YulFunctionCall", + "src": "4410:18:5" + }, + { + "name": "u", + "nativeSrc": "4430:1:5", + "nodeType": "YulIdentifier", + "src": "4430:1:5" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4403:6:5", + "nodeType": "YulIdentifier", + "src": "4403:6:5" + }, + "nativeSrc": "4403:29:5", + "nodeType": "YulFunctionCall", + "src": "4403:29:5" + }, + "nativeSrc": "4403:29:5", + "nodeType": "YulExpressionStatement", + "src": "4403:29:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pointer", + "nativeSrc": "4456:7:5", + "nodeType": "YulIdentifier", + "src": "4456:7:5" + }, + { + "kind": "number", + "nativeSrc": "4465:4:5", + "nodeType": "YulLiteral", + "src": "4465:4:5", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4452:3:5", + "nodeType": "YulIdentifier", + "src": "4452:3:5" + }, + "nativeSrc": "4452:18:5", + "nodeType": "YulFunctionCall", + "src": "4452:18:5" + }, + { + "name": "minus_2", + "nativeSrc": "4472:7:5", + "nodeType": "YulIdentifier", + "src": "4472:7:5" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4445:6:5", + "nodeType": "YulIdentifier", + "src": "4445:6:5" + }, + "nativeSrc": "4445:35:5", + "nodeType": "YulFunctionCall", + "src": "4445:35:5" + }, + "nativeSrc": "4445:35:5", + "nodeType": "YulExpressionStatement", + "src": "4445:35:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pointer", + "nativeSrc": "4504:7:5", + "nodeType": "YulIdentifier", + "src": "4504:7:5" + }, + { + "kind": "number", + "nativeSrc": "4513:4:5", + "nodeType": "YulLiteral", + "src": "4513:4:5", + "type": "", + "value": "0xa0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4500:3:5", + "nodeType": "YulIdentifier", + "src": "4500:3:5" + }, + "nativeSrc": "4500:18:5", + "nodeType": "YulFunctionCall", + "src": "4500:18:5" + }, + { + "name": "p", + "nativeSrc": "4520:1:5", + "nodeType": "YulIdentifier", + "src": "4520:1:5" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4493:6:5", + "nodeType": "YulIdentifier", + "src": "4493:6:5" + }, + "nativeSrc": "4493:29:5", + "nodeType": "YulFunctionCall", + "src": "4493:29:5" + }, + "nativeSrc": "4493:29:5", + "nodeType": "YulExpressionStatement", + "src": "4493:29:5" + }, + { + "body": { + "nativeSrc": "4661:16:5", + "nodeType": "YulBlock", + "src": "4661:16:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4670:1:5", + "nodeType": "YulLiteral", + "src": "4670:1:5", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "4673:1:5", + "nodeType": "YulLiteral", + "src": "4673:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "4663:6:5", + "nodeType": "YulIdentifier", + "src": "4663:6:5" + }, + "nativeSrc": "4663:12:5", + "nodeType": "YulFunctionCall", + "src": "4663:12:5" + }, + "nativeSrc": "4663:12:5", + "nodeType": "YulExpressionStatement", + "src": "4663:12:5" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4620:1:5", + "nodeType": "YulLiteral", + "src": "4620:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "4616:3:5", + "nodeType": "YulIdentifier", + "src": "4616:3:5" + }, + "nativeSrc": "4616:6:5", + "nodeType": "YulFunctionCall", + "src": "4616:6:5" + }, + { + "kind": "number", + "nativeSrc": "4624:4:5", + "nodeType": "YulLiteral", + "src": "4624:4:5", + "type": "", + "value": "0x05" + }, + { + "name": "pointer", + "nativeSrc": "4630:7:5", + "nodeType": "YulIdentifier", + "src": "4630:7:5" + }, + { + "kind": "number", + "nativeSrc": "4639:4:5", + "nodeType": "YulLiteral", + "src": "4639:4:5", + "type": "", + "value": "0xc0" + }, + { + "name": "pointer", + "nativeSrc": "4645:7:5", + "nodeType": "YulIdentifier", + "src": "4645:7:5" + }, + { + "kind": "number", + "nativeSrc": "4654:4:5", + "nodeType": "YulLiteral", + "src": "4654:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "4605:10:5", + "nodeType": "YulIdentifier", + "src": "4605:10:5" + }, + "nativeSrc": "4605:54:5", + "nodeType": "YulFunctionCall", + "src": "4605:54:5" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "4598:6:5", + "nodeType": "YulIdentifier", + "src": "4598:6:5" + }, + "nativeSrc": "4598:62:5", + "nodeType": "YulFunctionCall", + "src": "4598:62:5" + }, + "nativeSrc": "4595:82:5", + "nodeType": "YulIf", + "src": "4595:82:5" + }, + { + "nativeSrc": "4690:24:5", + "nodeType": "YulAssignment", + "src": "4690:24:5", + "value": { + "arguments": [ + { + "name": "pointer", + "nativeSrc": "4706:7:5", + "nodeType": "YulIdentifier", + "src": "4706:7:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "4700:5:5", + "nodeType": "YulIdentifier", + "src": "4700:5:5" + }, + "nativeSrc": "4700:14:5", + "nodeType": "YulFunctionCall", + "src": "4700:14:5" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "4690:6:5", + "nodeType": "YulIdentifier", + "src": "4690:6:5" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 994, + "isOffset": false, + "isSlot": false, + "src": "4472:7:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "4520:1:5", + "valueSize": 1 + }, + { + "declaration": 1025, + "isOffset": false, + "isSlot": false, + "src": "4690:6:5", + "valueSize": 1 + }, + { + "declaration": 1022, + "isOffset": false, + "isSlot": false, + "src": "4430:1:5", + "valueSize": 1 + } + ], + "id": 1027, + "nodeType": "InlineAssembly", + "src": "4081:643:5" + } + ] + }, + "documentation": { + "id": 1020, + "nodeType": "StructuredDocumentation", + "src": "3893:101:5", + "text": " /* @dev inversion mod nusing little Fermat theorem via a^(n-2), use of precompiled" + }, + "id": 1029, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "FCL_pModInv", + "nameLocation": "4009:11:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1023, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1022, + "mutability": "mutable", + "name": "u", + "nameLocation": "4029:1:5", + "nodeType": "VariableDeclaration", + "scope": 1029, + "src": "4021:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1021, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4021:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4020:11:5" + }, + "returnParameters": { + "id": 1026, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1025, + "mutability": "mutable", + "name": "result", + "nameLocation": "4063:6:5", + "nodeType": "VariableDeclaration", + "scope": 1029, + "src": "4055:14:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1024, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4055:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4054:16:5" + }, + "scope": 2309, + "src": "4000:730:5", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1104, + "nodeType": "Block", + "src": "4972:318:5", + "statements": [ + { + "assignments": [ + 1051 + ], + "declarations": [ + { + "constant": false, + "id": 1051, + "mutability": "mutable", + "name": "alpha2", + "nameLocation": "4998:6:5", + "nodeType": "VariableDeclaration", + "scope": 1104, + "src": "4990:14:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1050, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4990:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1057, + "initialValue": { + "arguments": [ + { + "id": 1053, + "name": "alpha", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1031, + "src": "5012:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1054, + "name": "alpha", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1031, + "src": "5018:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1055, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "5024:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1052, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "5005:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1056, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5005:21:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4990:36:5" + }, + { + "expression": { + "id": 1064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1058, + "name": "x3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1042, + "src": "5044:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1060, + "name": "alpha2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1051, + "src": "5054:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1061, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1033, + "src": "5062:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1062, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "5064:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1059, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "5047:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1063, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5047:19:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5044:22:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1065, + "nodeType": "ExpressionStatement", + "src": "5044:22:5" + }, + { + "expression": { + "id": 1076, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1066, + "name": "y3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1044, + "src": "5089:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 1069, + "name": "alpha", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1031, + "src": "5106:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1070, + "name": "alpha2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1051, + "src": "5113:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1071, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "5120:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1068, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "5099:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1072, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5099:23:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1073, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1035, + "src": "5124:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1074, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "5126:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1067, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "5092:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1075, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5092:36:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5089:39:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1077, + "nodeType": "ExpressionStatement", + "src": "5089:39:5" + }, + { + "expression": { + "id": 1084, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1078, + "name": "zz3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1046, + "src": "5139:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1080, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1037, + "src": "5150:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1081, + "name": "alpha2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1051, + "src": "5153:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1082, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "5160:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1079, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "5143:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1083, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5143:19:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5139:23:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1085, + "nodeType": "ExpressionStatement", + "src": "5139:23:5" + }, + { + "expression": { + "id": 1096, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1086, + "name": "zzz3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1048, + "src": "5184:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1088, + "name": "zzz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1039, + "src": "5196:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 1090, + "name": "alpha", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1031, + "src": "5207:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1091, + "name": "alpha2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1051, + "src": "5214:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1092, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "5221:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1089, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "5200:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1093, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5200:23:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1094, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "5224:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1087, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "5189:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1095, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5189:37:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5184:42:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1097, + "nodeType": "ExpressionStatement", + "src": "5184:42:5" + }, + { + "expression": { + "components": [ + { + "id": 1098, + "name": "x3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1042, + "src": "5266:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1099, + "name": "y3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1044, + "src": "5270:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1100, + "name": "zz3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1046, + "src": "5274:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1101, + "name": "zzz3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1048, + "src": "5279:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1102, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5265:19:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256,uint256,uint256)" + } + }, + "functionReturnParameters": 1049, + "id": 1103, + "nodeType": "Return", + "src": "5258:26:5" + } + ] + }, + "id": 1105, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ecZZ_Coronize", + "nameLocation": "4817:13:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1040, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1031, + "mutability": "mutable", + "name": "alpha", + "nameLocation": "4839:5:5", + "nodeType": "VariableDeclaration", + "scope": 1105, + "src": "4831:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1030, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4831:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1033, + "mutability": "mutable", + "name": "x", + "nameLocation": "4854:1:5", + "nodeType": "VariableDeclaration", + "scope": 1105, + "src": "4846:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1032, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4846:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1035, + "mutability": "mutable", + "name": "y", + "nameLocation": "4865:1:5", + "nodeType": "VariableDeclaration", + "scope": 1105, + "src": "4857:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1034, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4857:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1037, + "mutability": "mutable", + "name": "zz", + "nameLocation": "4877:2:5", + "nodeType": "VariableDeclaration", + "scope": 1105, + "src": "4869:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1036, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4869:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1039, + "mutability": "mutable", + "name": "zzz", + "nameLocation": "4889:3:5", + "nodeType": "VariableDeclaration", + "scope": 1105, + "src": "4881:11:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1038, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4881:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4830:63:5" + }, + "returnParameters": { + "id": 1049, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1042, + "mutability": "mutable", + "name": "x3", + "nameLocation": "4926:2:5", + "nodeType": "VariableDeclaration", + "scope": 1105, + "src": "4918:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1041, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4918:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1044, + "mutability": "mutable", + "name": "y3", + "nameLocation": "4938:2:5", + "nodeType": "VariableDeclaration", + "scope": 1105, + "src": "4930:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1043, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4930:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1046, + "mutability": "mutable", + "name": "zz3", + "nameLocation": "4950:3:5", + "nodeType": "VariableDeclaration", + "scope": 1105, + "src": "4942:11:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1045, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4942:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1048, + "mutability": "mutable", + "name": "zzz3", + "nameLocation": "4963:4:5", + "nodeType": "VariableDeclaration", + "scope": 1105, + "src": "4955:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1047, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4955:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4917:51:5" + }, + "scope": 2309, + "src": "4808:482:5", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1284, + "nodeType": "Block", + "src": "5491:757:5", + "statements": [ + { + "assignments": [ + 1133 + ], + "declarations": [ + { + "constant": false, + "id": 1133, + "mutability": "mutable", + "name": "u1", + "nameLocation": "5505:2:5", + "nodeType": "VariableDeclaration", + "scope": 1284, + "src": "5497:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1132, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5497:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1139, + "initialValue": { + "arguments": [ + { + "id": 1135, + "name": "x1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1107, + "src": "5515:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1136, + "name": "zz2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1119, + "src": "5518:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1137, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "5522:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1134, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "5508:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5508:16:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5497:27:5" + }, + { + "assignments": [ + 1141 + ], + "declarations": [ + { + "constant": false, + "id": 1141, + "mutability": "mutable", + "name": "u2", + "nameLocation": "5553:2:5", + "nodeType": "VariableDeclaration", + "scope": 1284, + "src": "5545:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1140, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5545:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1147, + "initialValue": { + "arguments": [ + { + "id": 1143, + "name": "x2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1115, + "src": "5563:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1144, + "name": "zz1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1111, + "src": "5567:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1145, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "5571:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1142, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "5556:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1146, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5556:17:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5545:28:5" + }, + { + "expression": { + "id": 1156, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1148, + "name": "u2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1141, + "src": "5609:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1150, + "name": "u2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1141, + "src": "5619:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1153, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1151, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "5623:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 1152, + "name": "u1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1133, + "src": "5625:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5623:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1154, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "5629:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1149, + "name": "addmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -2, + "src": "5612:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5612:19:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5609:22:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1157, + "nodeType": "ExpressionStatement", + "src": "5609:22:5" + }, + { + "expression": { + "id": 1164, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1158, + "name": "x1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1107, + "src": "5650:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1160, + "name": "u2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1141, + "src": "5660:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1161, + "name": "u2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1141, + "src": "5664:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1162, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "5668:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1159, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "5653:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1163, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5653:17:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5650:20:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1165, + "nodeType": "ExpressionStatement", + "src": "5650:20:5" + }, + { + "expression": { + "id": 1172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1166, + "name": "x2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1115, + "src": "5680:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1168, + "name": "x1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1107, + "src": "5690:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1169, + "name": "u2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1141, + "src": "5694:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1170, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "5698:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1167, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "5683:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1171, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5683:17:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5680:20:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1173, + "nodeType": "ExpressionStatement", + "src": "5680:20:5" + }, + { + "expression": { + "id": 1184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1174, + "name": "zz3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1128, + "src": "5716:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1176, + "name": "x1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1107, + "src": "5727:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 1178, + "name": "zz1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1111, + "src": "5738:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1179, + "name": "zz2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1119, + "src": "5743:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1180, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "5748:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1177, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "5731:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5731:19:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1182, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "5751:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1175, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "5720:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1183, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5720:33:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5716:37:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1185, + "nodeType": "ExpressionStatement", + "src": "5716:37:5" + }, + { + "expression": { + "id": 1196, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1186, + "name": "zzz3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1130, + "src": "5779:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1188, + "name": "zzz1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1113, + "src": "5791:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 1190, + "name": "zzz2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1121, + "src": "5804:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1191, + "name": "x2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1115, + "src": "5810:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1192, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "5814:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1189, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "5797:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1193, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5797:19:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1194, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "5817:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1187, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "5784:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1195, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5784:35:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5779:40:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1197, + "nodeType": "ExpressionStatement", + "src": "5779:40:5" + }, + { + "expression": { + "id": 1204, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1198, + "name": "zz1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1111, + "src": "5848:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1200, + "name": "y1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1109, + "src": "5859:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1201, + "name": "zzz2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1121, + "src": "5863:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1202, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "5868:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1199, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "5852:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1203, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5852:18:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5848:22:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1205, + "nodeType": "ExpressionStatement", + "src": "5848:22:5" + }, + { + "expression": { + "id": 1212, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1206, + "name": "zz2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1119, + "src": "5893:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1208, + "name": "y2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1117, + "src": "5904:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1209, + "name": "zzz1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1113, + "src": "5908:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1210, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "5914:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1207, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "5897:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1211, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5897:19:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5893:23:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1213, + "nodeType": "ExpressionStatement", + "src": "5893:23:5" + }, + { + "expression": { + "id": 1222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1214, + "name": "zz2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1119, + "src": "5942:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1216, + "name": "zz2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1119, + "src": "5953:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1217, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "5958:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 1218, + "name": "zz1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1111, + "src": "5960:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5958:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1220, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "5965:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1215, + "name": "addmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -2, + "src": "5946:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1221, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5946:21:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5942:25:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1223, + "nodeType": "ExpressionStatement", + "src": "5942:25:5" + }, + { + "expression": { + "id": 1230, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1224, + "name": "zzz1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1113, + "src": "5984:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1226, + "name": "u1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1133, + "src": "5996:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1227, + "name": "x1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1107, + "src": "6000:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1228, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "6003:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1225, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "5989:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5989:16:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5984:21:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1231, + "nodeType": "ExpressionStatement", + "src": "5984:21:5" + }, + { + "expression": { + "id": 1252, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1232, + "name": "x3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1124, + "src": "6023:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 1236, + "name": "zz2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1119, + "src": "6048:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1237, + "name": "zz2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1119, + "src": "6053:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1238, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "6058:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1235, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "6041:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1239, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6041:19:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1240, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "6062:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 1241, + "name": "x2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1115, + "src": "6064:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6062:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1243, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "6067:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1234, + "name": "addmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -2, + "src": "6034:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1244, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6034:35:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 1246, + "name": "minus_2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 994, + "src": "6078:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1247, + "name": "zzz1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1113, + "src": "6087:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1248, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "6092:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1245, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "6071:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1249, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6071:23:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1250, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "6095:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1233, + "name": "addmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -2, + "src": "6027:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1251, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6027:70:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6023:74:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1253, + "nodeType": "ExpressionStatement", + "src": "6023:74:5" + }, + { + "expression": { + "id": 1276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1254, + "name": "y3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1126, + "src": "6121:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 1257, + "name": "zz2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1119, + "src": "6139:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 1259, + "name": "zzz1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1113, + "src": "6151:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1262, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1260, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "6157:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 1261, + "name": "x3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1124, + "src": "6159:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6157:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1263, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "6163:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1258, + "name": "addmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -2, + "src": "6144:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6144:21:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1265, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "6166:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1256, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "6132:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6132:36:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1273, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1267, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "6170:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "arguments": [ + { + "id": 1269, + "name": "zz1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1111, + "src": "6179:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1270, + "name": "x2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1115, + "src": "6184:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1271, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "6188:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1268, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "6172:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1272, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6172:18:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6170:20:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1274, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "6191:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1255, + "name": "addmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -2, + "src": "6124:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6124:69:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6121:72:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1277, + "nodeType": "ExpressionStatement", + "src": "6121:72:5" + }, + { + "expression": { + "components": [ + { + "id": 1278, + "name": "x3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1124, + "src": "6225:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1279, + "name": "y3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1126, + "src": "6229:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1280, + "name": "zz3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1128, + "src": "6233:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1281, + "name": "zzz3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1130, + "src": "6238:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1282, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "6224:19:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256,uint256,uint256)" + } + }, + "functionReturnParameters": 1131, + "id": 1283, + "nodeType": "Return", + "src": "6217:26:5" + } + ] + }, + "id": 1285, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ecZZ_Add", + "nameLocation": "5303:8:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1122, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1107, + "mutability": "mutable", + "name": "x1", + "nameLocation": "5320:2:5", + "nodeType": "VariableDeclaration", + "scope": 1285, + "src": "5312:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1106, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5312:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1109, + "mutability": "mutable", + "name": "y1", + "nameLocation": "5332:2:5", + "nodeType": "VariableDeclaration", + "scope": 1285, + "src": "5324:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1108, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5324:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1111, + "mutability": "mutable", + "name": "zz1", + "nameLocation": "5344:3:5", + "nodeType": "VariableDeclaration", + "scope": 1285, + "src": "5336:11:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1110, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5336:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1113, + "mutability": "mutable", + "name": "zzz1", + "nameLocation": "5357:4:5", + "nodeType": "VariableDeclaration", + "scope": 1285, + "src": "5349:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1112, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5349:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1115, + "mutability": "mutable", + "name": "x2", + "nameLocation": "5371:2:5", + "nodeType": "VariableDeclaration", + "scope": 1285, + "src": "5363:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1114, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5363:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1117, + "mutability": "mutable", + "name": "y2", + "nameLocation": "5383:2:5", + "nodeType": "VariableDeclaration", + "scope": 1285, + "src": "5375:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1116, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5375:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1119, + "mutability": "mutable", + "name": "zz2", + "nameLocation": "5395:3:5", + "nodeType": "VariableDeclaration", + "scope": 1285, + "src": "5387:11:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1118, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5387:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1121, + "mutability": "mutable", + "name": "zzz2", + "nameLocation": "5408:4:5", + "nodeType": "VariableDeclaration", + "scope": 1285, + "src": "5400:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1120, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5400:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5311:102:5" + }, + "returnParameters": { + "id": 1131, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1124, + "mutability": "mutable", + "name": "x3", + "nameLocation": "5446:2:5", + "nodeType": "VariableDeclaration", + "scope": 1285, + "src": "5438:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1123, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5438:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1126, + "mutability": "mutable", + "name": "y3", + "nameLocation": "5458:2:5", + "nodeType": "VariableDeclaration", + "scope": 1285, + "src": "5450:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1125, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5450:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1128, + "mutability": "mutable", + "name": "zz3", + "nameLocation": "5470:3:5", + "nodeType": "VariableDeclaration", + "scope": 1285, + "src": "5462:11:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1127, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5462:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1130, + "mutability": "mutable", + "name": "zzz3", + "nameLocation": "5483:4:5", + "nodeType": "VariableDeclaration", + "scope": 1285, + "src": "5475:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1129, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5475:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5437:51:5" + }, + "scope": 2309, + "src": "5294:954:5", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1309, + "nodeType": "Block", + "src": "6701:1432:5", + "statements": [ + { + "AST": { + "nativeSrc": "6729:1314:5", + "nodeType": "YulBlock", + "src": "6729:1314:5", + "statements": [ + { + "nativeSrc": "6785:26:5", + "nodeType": "YulVariableDeclaration", + "src": "6785:26:5", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6806:4:5", + "nodeType": "YulLiteral", + "src": "6806:4:5", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "6800:5:5", + "nodeType": "YulIdentifier", + "src": "6800:5:5" + }, + "nativeSrc": "6800:11:5", + "nodeType": "YulFunctionCall", + "src": "6800:11:5" + }, + "variables": [ + { + "name": "pointer", + "nativeSrc": "6789:7:5", + "nodeType": "YulTypedName", + "src": "6789:7:5", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pointer", + "nativeSrc": "6869:7:5", + "nodeType": "YulIdentifier", + "src": "6869:7:5" + }, + { + "kind": "number", + "nativeSrc": "6878:4:5", + "nodeType": "YulLiteral", + "src": "6878:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6862:6:5", + "nodeType": "YulIdentifier", + "src": "6862:6:5" + }, + "nativeSrc": "6862:21:5", + "nodeType": "YulFunctionCall", + "src": "6862:21:5" + }, + "nativeSrc": "6862:21:5", + "nodeType": "YulExpressionStatement", + "src": "6862:21:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pointer", + "nativeSrc": "6947:7:5", + "nodeType": "YulIdentifier", + "src": "6947:7:5" + }, + { + "kind": "number", + "nativeSrc": "6956:4:5", + "nodeType": "YulLiteral", + "src": "6956:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6943:3:5", + "nodeType": "YulIdentifier", + "src": "6943:3:5" + }, + "nativeSrc": "6943:18:5", + "nodeType": "YulFunctionCall", + "src": "6943:18:5" + }, + { + "kind": "number", + "nativeSrc": "6963:4:5", + "nodeType": "YulLiteral", + "src": "6963:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6936:6:5", + "nodeType": "YulIdentifier", + "src": "6936:6:5" + }, + "nativeSrc": "6936:32:5", + "nodeType": "YulFunctionCall", + "src": "6936:32:5" + }, + "nativeSrc": "6936:32:5", + "nodeType": "YulExpressionStatement", + "src": "6936:32:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pointer", + "nativeSrc": "7031:7:5", + "nodeType": "YulIdentifier", + "src": "7031:7:5" + }, + { + "kind": "number", + "nativeSrc": "7040:4:5", + "nodeType": "YulLiteral", + "src": "7040:4:5", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7027:3:5", + "nodeType": "YulIdentifier", + "src": "7027:3:5" + }, + "nativeSrc": "7027:18:5", + "nodeType": "YulFunctionCall", + "src": "7027:18:5" + }, + { + "kind": "number", + "nativeSrc": "7047:4:5", + "nodeType": "YulLiteral", + "src": "7047:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7020:6:5", + "nodeType": "YulIdentifier", + "src": "7020:6:5" + }, + "nativeSrc": "7020:32:5", + "nodeType": "YulFunctionCall", + "src": "7020:32:5" + }, + "nativeSrc": "7020:32:5", + "nodeType": "YulExpressionStatement", + "src": "7020:32:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pointer", + "nativeSrc": "7109:7:5", + "nodeType": "YulIdentifier", + "src": "7109:7:5" + }, + { + "kind": "number", + "nativeSrc": "7118:4:5", + "nodeType": "YulLiteral", + "src": "7118:4:5", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7105:3:5", + "nodeType": "YulIdentifier", + "src": "7105:3:5" + }, + "nativeSrc": "7105:18:5", + "nodeType": "YulFunctionCall", + "src": "7105:18:5" + }, + { + "name": "self", + "nativeSrc": "7125:4:5", + "nodeType": "YulIdentifier", + "src": "7125:4:5" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7098:6:5", + "nodeType": "YulIdentifier", + "src": "7098:6:5" + }, + "nativeSrc": "7098:32:5", + "nodeType": "YulFunctionCall", + "src": "7098:32:5" + }, + "nativeSrc": "7098:32:5", + "nodeType": "YulExpressionStatement", + "src": "7098:32:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pointer", + "nativeSrc": "7185:7:5", + "nodeType": "YulIdentifier", + "src": "7185:7:5" + }, + { + "kind": "number", + "nativeSrc": "7194:4:5", + "nodeType": "YulLiteral", + "src": "7194:4:5", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7181:3:5", + "nodeType": "YulIdentifier", + "src": "7181:3:5" + }, + "nativeSrc": "7181:18:5", + "nodeType": "YulFunctionCall", + "src": "7181:18:5" + }, + { + "name": "pp1div4", + "nativeSrc": "7201:7:5", + "nodeType": "YulIdentifier", + "src": "7201:7:5" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7174:6:5", + "nodeType": "YulIdentifier", + "src": "7174:6:5" + }, + "nativeSrc": "7174:35:5", + "nodeType": "YulFunctionCall", + "src": "7174:35:5" + }, + "nativeSrc": "7174:35:5", + "nodeType": "YulExpressionStatement", + "src": "7174:35:5" + }, + { + "nativeSrc": "7396:33:5", + "nodeType": "YulVariableDeclaration", + "src": "7396:33:5", + "value": { + "arguments": [ + { + "name": "pointer", + "nativeSrc": "7415:7:5", + "nodeType": "YulIdentifier", + "src": "7415:7:5" + }, + { + "kind": "number", + "nativeSrc": "7424:4:5", + "nodeType": "YulLiteral", + "src": "7424:4:5", + "type": "", + "value": "0xa0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7411:3:5", + "nodeType": "YulIdentifier", + "src": "7411:3:5" + }, + "nativeSrc": "7411:18:5", + "nodeType": "YulFunctionCall", + "src": "7411:18:5" + }, + "variables": [ + { + "name": "_result", + "nativeSrc": "7400:7:5", + "nodeType": "YulTypedName", + "src": "7400:7:5", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "_result", + "nativeSrc": "7479:7:5", + "nodeType": "YulIdentifier", + "src": "7479:7:5" + }, + { + "name": "p", + "nativeSrc": "7488:1:5", + "nodeType": "YulIdentifier", + "src": "7488:1:5" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7472:6:5", + "nodeType": "YulIdentifier", + "src": "7472:6:5" + }, + "nativeSrc": "7472:18:5", + "nodeType": "YulFunctionCall", + "src": "7472:18:5" + }, + "nativeSrc": "7472:18:5", + "nodeType": "YulExpressionStatement", + "src": "7472:18:5" + }, + { + "body": { + "nativeSrc": "7964:16:5", + "nodeType": "YulBlock", + "src": "7964:16:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7973:1:5", + "nodeType": "YulLiteral", + "src": "7973:1:5", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "7976:1:5", + "nodeType": "YulLiteral", + "src": "7976:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "7966:6:5", + "nodeType": "YulIdentifier", + "src": "7966:6:5" + }, + "nativeSrc": "7966:12:5", + "nodeType": "YulFunctionCall", + "src": "7966:12:5" + }, + "nativeSrc": "7966:12:5", + "nodeType": "YulExpressionStatement", + "src": "7966:12:5" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7640:1:5", + "nodeType": "YulLiteral", + "src": "7640:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "7636:3:5", + "nodeType": "YulIdentifier", + "src": "7636:3:5" + }, + "nativeSrc": "7636:6:5", + "nodeType": "YulFunctionCall", + "src": "7636:6:5" + }, + { + "name": "MODEXP_PRECOMPILE", + "nativeSrc": "7685:17:5", + "nodeType": "YulIdentifier", + "src": "7685:17:5" + }, + { + "name": "pointer", + "nativeSrc": "7730:7:5", + "nodeType": "YulIdentifier", + "src": "7730:7:5" + }, + { + "kind": "number", + "nativeSrc": "7769:4:5", + "nodeType": "YulLiteral", + "src": "7769:4:5", + "type": "", + "value": "0xc0" + }, + { + "name": "_result", + "nativeSrc": "7818:7:5", + "nodeType": "YulIdentifier", + "src": "7818:7:5" + }, + { + "kind": "number", + "nativeSrc": "7913:4:5", + "nodeType": "YulLiteral", + "src": "7913:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "7608:10:5", + "nodeType": "YulIdentifier", + "src": "7608:10:5" + }, + "nativeSrc": "7608:345:5", + "nodeType": "YulFunctionCall", + "src": "7608:345:5" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "7588:6:5", + "nodeType": "YulIdentifier", + "src": "7588:6:5" + }, + "nativeSrc": "7588:375:5", + "nodeType": "YulFunctionCall", + "src": "7588:375:5" + }, + "nativeSrc": "7585:395:5", + "nodeType": "YulIf", + "src": "7585:395:5" + }, + { + "nativeSrc": "7984:24:5", + "nodeType": "YulAssignment", + "src": "7984:24:5", + "value": { + "arguments": [ + { + "name": "_result", + "nativeSrc": "8000:7:5", + "nodeType": "YulIdentifier", + "src": "8000:7:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "7994:5:5", + "nodeType": "YulIdentifier", + "src": "7994:5:5" + }, + "nativeSrc": "7994:14:5", + "nodeType": "YulFunctionCall", + "src": "7994:14:5" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "7984:6:5", + "nodeType": "YulIdentifier", + "src": "7984:6:5" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 973, + "isOffset": false, + "isSlot": false, + "src": "7685:17:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "7488:1:5", + "valueSize": 1 + }, + { + "declaration": 1003, + "isOffset": false, + "isSlot": false, + "src": "7201:7:5", + "valueSize": 1 + }, + { + "declaration": 1291, + "isOffset": false, + "isSlot": false, + "src": "7984:6:5", + "valueSize": 1 + }, + { + "declaration": 1288, + "isOffset": false, + "isSlot": false, + "src": "7125:4:5", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 1293, + "nodeType": "InlineAssembly", + "src": "6704:1339:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1300, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 1295, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1291, + "src": "8057:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1296, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1291, + "src": "8064:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1297, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "8071:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1294, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "8050:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8050:23:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 1299, + "name": "self", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1288, + "src": "8075:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8050:29:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1306, + "nodeType": "IfStatement", + "src": "8047:63:5", + "trueBody": { + "id": 1305, + "nodeType": "Block", + "src": "8080:30:5", + "statements": [ + { + "expression": { + "id": 1303, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1301, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1291, + "src": "8087:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1302, + "name": "_NOTSQUARE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1006, + "src": "8094:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8087:17:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1304, + "nodeType": "ExpressionStatement", + "src": "8087:17:5" + } + ] + } + }, + { + "expression": { + "id": 1307, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1291, + "src": "8124:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1292, + "id": 1308, + "nodeType": "Return", + "src": "8117:13:5" + } + ] + }, + "documentation": { + "id": 1286, + "nodeType": "StructuredDocumentation", + "src": "6250:381:5", + "text": "@notice Calculate one modular square root of a given integer. Assume that p=3 mod 4.\n @dev Uses the ModExp precompiled contract at address 0x05 for fast computation using little Fermat theorem\n @param self The integer of which to find the modular inverse\n @return result The modular inverse of the input integer. If the modular inverse doesn't exist, it revert the tx" + }, + "id": 1310, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "SqrtMod", + "nameLocation": "6641:7:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1289, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1288, + "mutability": "mutable", + "name": "self", + "nameLocation": "6657:4:5", + "nodeType": "VariableDeclaration", + "scope": 1310, + "src": "6649:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1287, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6649:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6648:14:5" + }, + "returnParameters": { + "id": 1292, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1291, + "mutability": "mutable", + "name": "result", + "nameLocation": "6694:6:5", + "nodeType": "VariableDeclaration", + "scope": 1310, + "src": "6686:14:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1290, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6686:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6685:16:5" + }, + "scope": 2309, + "src": "6632:1501:5", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1347, + "nodeType": "Block", + "src": "8294:138:5", + "statements": [ + { + "id": 1346, + "nodeType": "UncheckedBlock", + "src": "8304:122:5", + "statements": [ + { + "expression": { + "id": 1326, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 1322, + "name": "P", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1320, + "src": "8328:1:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", + "typeString": "uint256[4] memory" + } + }, + "id": 1324, + "indexExpression": { + "hexValue": "32", + "id": 1323, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8330:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8328:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "31", + "id": 1325, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8335:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "8328:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1327, + "nodeType": "ExpressionStatement", + "src": "8328:8:5" + }, + { + "expression": { + "id": 1332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 1328, + "name": "P", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1320, + "src": "8355:1:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", + "typeString": "uint256[4] memory" + } + }, + "id": 1330, + "indexExpression": { + "hexValue": "33", + "id": 1329, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8357:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8355:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "31", + "id": 1331, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8362:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "8355:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1333, + "nodeType": "ExpressionStatement", + "src": "8355:8:5" + }, + { + "expression": { + "id": 1338, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 1334, + "name": "P", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1320, + "src": "8383:1:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", + "typeString": "uint256[4] memory" + } + }, + "id": 1336, + "indexExpression": { + "hexValue": "30", + "id": 1335, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8385:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8383:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1337, + "name": "x0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1313, + "src": "8390:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8383:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1339, + "nodeType": "ExpressionStatement", + "src": "8383:9:5" + }, + { + "expression": { + "id": 1344, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 1340, + "name": "P", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1320, + "src": "8406:1:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", + "typeString": "uint256[4] memory" + } + }, + "id": 1342, + "indexExpression": { + "hexValue": "31", + "id": 1341, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8408:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8406:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1343, + "name": "y0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1315, + "src": "8413:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8406:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1345, + "nodeType": "ExpressionStatement", + "src": "8406:9:5" + } + ] + } + ] + }, + "documentation": { + "id": 1311, + "nodeType": "StructuredDocumentation", + "src": "8138:62:5", + "text": " /* @dev Convert from affine rep to XYZZ rep" + }, + "id": 1348, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ecAff_SetZZ", + "nameLocation": "8214:11:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1316, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1313, + "mutability": "mutable", + "name": "x0", + "nameLocation": "8234:2:5", + "nodeType": "VariableDeclaration", + "scope": 1348, + "src": "8226:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1312, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8226:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1315, + "mutability": "mutable", + "name": "y0", + "nameLocation": "8246:2:5", + "nodeType": "VariableDeclaration", + "scope": 1348, + "src": "8238:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1314, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8238:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8225:24:5" + }, + "returnParameters": { + "id": 1321, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1320, + "mutability": "mutable", + "name": "P", + "nameLocation": "8291:1:5", + "nodeType": "VariableDeclaration", + "scope": 1348, + "src": "8273:19:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$4_memory_ptr", + "typeString": "uint256[4]" + }, + "typeName": { + "baseType": { + "id": 1317, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8273:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1319, + "length": { + "hexValue": "34", + "id": 1318, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8281:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "nodeType": "ArrayTypeName", + "src": "8273:10:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$4_storage_ptr", + "typeString": "uint256[4]" + } + }, + "visibility": "internal" + } + ], + "src": "8272:21:5" + }, + "scope": 2309, + "src": "8205:227:5", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1415, + "nodeType": "Block", + "src": "8520:271:5", + "statements": [ + { + "assignments": [ + 1358 + ], + "declarations": [ + { + "constant": false, + "id": 1358, + "mutability": "mutable", + "name": "y2", + "nameLocation": "8540:2:5", + "nodeType": "VariableDeclaration", + "scope": 1415, + "src": "8532:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1357, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8532:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1368, + "initialValue": { + "arguments": [ + { + "id": 1360, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1350, + "src": "8550:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 1362, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1350, + "src": "8559:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1363, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1350, + "src": "8561:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1364, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "8563:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1361, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "8552:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1365, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8552:13:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1366, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "8566:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1359, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "8543:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1367, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8543:25:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8532:36:5" + }, + { + "expression": { + "id": 1383, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1369, + "name": "y2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1358, + "src": "8582:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1371, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 982, + "src": "8592:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 1373, + "name": "y2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1358, + "src": "8601:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 1375, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1350, + "src": "8611:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1376, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 979, + "src": "8613:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1377, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "8615:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1374, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "8604:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1378, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8604:13:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1379, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "8618:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1372, + "name": "addmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -2, + "src": "8594:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1380, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8594:26:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1381, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "8621:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1370, + "name": "addmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -2, + "src": "8585:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8585:38:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8582:41:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1384, + "nodeType": "ExpressionStatement", + "src": "8582:41:5" + }, + { + "expression": { + "id": 1389, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1385, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1355, + "src": "8643:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1387, + "name": "y2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1358, + "src": "8653:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1386, + "name": "SqrtMod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1310, + "src": "8645:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) view returns (uint256)" + } + }, + "id": 1388, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8645:11:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8643:13:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1390, + "nodeType": "ExpressionStatement", + "src": "8643:13:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1393, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1391, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1355, + "src": "8669:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 1392, + "name": "_NOTSQUARE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1006, + "src": "8672:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8669:13:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1397, + "nodeType": "IfStatement", + "src": "8666:59:5", + "trueBody": { + "id": 1396, + "nodeType": "Block", + "src": "8683:42:5", + "statements": [ + { + "expression": { + "id": 1394, + "name": "_NOTONCURVE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1009, + "src": "8703:11:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1356, + "id": 1395, + "nodeType": "Return", + "src": "8696:18:5" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1406, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1400, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1398, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1355, + "src": "8738:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "31", + "id": 1399, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8740:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "8738:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1401, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8737:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1404, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1402, + "name": "parity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1352, + "src": "8745:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "31", + "id": 1403, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8752:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "8745:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1405, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8744:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8737:17:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1414, + "nodeType": "IfStatement", + "src": "8734:51:5", + "trueBody": { + "id": 1413, + "nodeType": "Block", + "src": "8755:30:5", + "statements": [ + { + "expression": { + "id": 1411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1407, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1355, + "src": "8769:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1410, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1408, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "8771:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 1409, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1355, + "src": "8773:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8771:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8769:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1412, + "nodeType": "ExpressionStatement", + "src": "8769:5:5" + } + ] + } + } + ] + }, + "id": 1416, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ec_Decompress", + "nameLocation": "8447:13:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1353, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1350, + "mutability": "mutable", + "name": "x", + "nameLocation": "8469:1:5", + "nodeType": "VariableDeclaration", + "scope": 1416, + "src": "8461:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1349, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8461:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1352, + "mutability": "mutable", + "name": "parity", + "nameLocation": "8480:6:5", + "nodeType": "VariableDeclaration", + "scope": 1416, + "src": "8472:14:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1351, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8472:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8460:27:5" + }, + "returnParameters": { + "id": 1356, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1355, + "mutability": "mutable", + "name": "y", + "nameLocation": "8518:1:5", + "nodeType": "VariableDeclaration", + "scope": 1416, + "src": "8510:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1354, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8510:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8509:11:5" + }, + "scope": 2309, + "src": "8438:353:5", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1470, + "nodeType": "Block", + "src": "9069:236:5", + "statements": [ + { + "assignments": [ + 1433 + ], + "declarations": [ + { + "constant": false, + "id": 1433, + "mutability": "mutable", + "name": "zzzInv", + "nameLocation": "9087:6:5", + "nodeType": "VariableDeclaration", + "scope": 1470, + "src": "9079:14:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1432, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9079:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1437, + "initialValue": { + "arguments": [ + { + "id": 1435, + "name": "zzz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1425, + "src": "9108:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1434, + "name": "FCL_pModInv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1029, + "src": "9096:11:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) view returns (uint256)" + } + }, + "id": 1436, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9096:16:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9079:33:5" + }, + { + "expression": { + "id": 1444, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1438, + "name": "y1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1430, + "src": "9130:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1440, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1421, + "src": "9142:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1441, + "name": "zzzInv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1433, + "src": "9145:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1442, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "9153:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1439, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "9135:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1443, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9135:20:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9130:25:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1445, + "nodeType": "ExpressionStatement", + "src": "9130:25:5" + }, + { + "assignments": [ + 1447 + ], + "declarations": [ + { + "constant": false, + "id": 1447, + "mutability": "mutable", + "name": "_b", + "nameLocation": "9181:2:5", + "nodeType": "VariableDeclaration", + "scope": 1470, + "src": "9173:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1446, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9173:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1453, + "initialValue": { + "arguments": [ + { + "id": 1449, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1423, + "src": "9193:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1450, + "name": "zzzInv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1433, + "src": "9197:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1451, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "9205:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1448, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "9186:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1452, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9186:21:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9173:34:5" + }, + { + "expression": { + "id": 1460, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1454, + "name": "zzzInv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1433, + "src": "9223:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1456, + "name": "_b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1447, + "src": "9239:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1457, + "name": "_b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1447, + "src": "9243:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1458, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "9247:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1455, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "9232:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1459, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9232:17:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9223:26:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1461, + "nodeType": "ExpressionStatement", + "src": "9223:26:5" + }, + { + "expression": { + "id": 1468, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1462, + "name": "x1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1428, + "src": "9266:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1464, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1419, + "src": "9278:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1465, + "name": "zzzInv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1433, + "src": "9281:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1466, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "9289:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1463, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "9271:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1467, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9271:20:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9266:25:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1469, + "nodeType": "ExpressionStatement", + "src": "9266:25:5" + } + ] + }, + "documentation": { + "id": 1417, + "nodeType": "StructuredDocumentation", + "src": "8797:62:5", + "text": " /* @dev Convert from XYZZ rep to affine rep" + }, + "id": 1471, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ecZZ_SetAff", + "nameLocation": "8963:11:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1426, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1419, + "mutability": "mutable", + "name": "x", + "nameLocation": "8983:1:5", + "nodeType": "VariableDeclaration", + "scope": 1471, + "src": "8975:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1418, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8975:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1421, + "mutability": "mutable", + "name": "y", + "nameLocation": "8994:1:5", + "nodeType": "VariableDeclaration", + "scope": 1471, + "src": "8986:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1420, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8986:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1423, + "mutability": "mutable", + "name": "zz", + "nameLocation": "9005:2:5", + "nodeType": "VariableDeclaration", + "scope": 1471, + "src": "8997:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1422, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8997:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1425, + "mutability": "mutable", + "name": "zzz", + "nameLocation": "9017:3:5", + "nodeType": "VariableDeclaration", + "scope": 1471, + "src": "9009:11:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1424, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9009:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8974:47:5" + }, + "returnParameters": { + "id": 1431, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1428, + "mutability": "mutable", + "name": "x1", + "nameLocation": "9053:2:5", + "nodeType": "VariableDeclaration", + "scope": 1471, + "src": "9045:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1427, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9045:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1430, + "mutability": "mutable", + "name": "y1", + "nameLocation": "9065:2:5", + "nodeType": "VariableDeclaration", + "scope": 1471, + "src": "9057:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1429, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9057:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9044:24:5" + }, + "scope": 2309, + "src": "8954:351:5", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1499, + "nodeType": "Block", + "src": "9578:764:5", + "statements": [ + { + "id": 1492, + "nodeType": "UncheckedBlock", + "src": "9588:715:5", + "statements": [ + { + "AST": { + "nativeSrc": "9621:672:5", + "nodeType": "YulBlock", + "src": "9621:672:5", + "statements": [ + { + "nativeSrc": "9639:21:5", + "nodeType": "YulAssignment", + "src": "9639:21:5", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9652:1:5", + "nodeType": "YulLiteral", + "src": "9652:1:5", + "type": "", + "value": "2" + }, + { + "name": "y", + "nativeSrc": "9655:1:5", + "nodeType": "YulIdentifier", + "src": "9655:1:5" + }, + { + "name": "p", + "nativeSrc": "9658:1:5", + "nodeType": "YulIdentifier", + "src": "9658:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "9645:6:5", + "nodeType": "YulIdentifier", + "src": "9645:6:5" + }, + "nativeSrc": "9645:15:5", + "nodeType": "YulFunctionCall", + "src": "9645:15:5" + }, + "variableNames": [ + { + "name": "P0", + "nativeSrc": "9639:2:5", + "nodeType": "YulIdentifier", + "src": "9639:2:5" + } + ] + }, + { + "nativeSrc": "9688:23:5", + "nodeType": "YulAssignment", + "src": "9688:23:5", + "value": { + "arguments": [ + { + "name": "P0", + "nativeSrc": "9701:2:5", + "nodeType": "YulIdentifier", + "src": "9701:2:5" + }, + { + "name": "P0", + "nativeSrc": "9705:2:5", + "nodeType": "YulIdentifier", + "src": "9705:2:5" + }, + { + "name": "p", + "nativeSrc": "9709:1:5", + "nodeType": "YulIdentifier", + "src": "9709:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "9694:6:5", + "nodeType": "YulIdentifier", + "src": "9694:6:5" + }, + "nativeSrc": "9694:17:5", + "nodeType": "YulFunctionCall", + "src": "9694:17:5" + }, + "variableNames": [ + { + "name": "P2", + "nativeSrc": "9688:2:5", + "nodeType": "YulIdentifier", + "src": "9688:2:5" + } + ] + }, + { + "nativeSrc": "9737:22:5", + "nodeType": "YulAssignment", + "src": "9737:22:5", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "9750:1:5", + "nodeType": "YulIdentifier", + "src": "9750:1:5" + }, + { + "name": "P2", + "nativeSrc": "9753:2:5", + "nodeType": "YulIdentifier", + "src": "9753:2:5" + }, + { + "name": "p", + "nativeSrc": "9757:1:5", + "nodeType": "YulIdentifier", + "src": "9757:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "9743:6:5", + "nodeType": "YulIdentifier", + "src": "9743:6:5" + }, + "nativeSrc": "9743:16:5", + "nodeType": "YulFunctionCall", + "src": "9743:16:5" + }, + "variableNames": [ + { + "name": "P3", + "nativeSrc": "9737:2:5", + "nodeType": "YulIdentifier", + "src": "9737:2:5" + } + ] + }, + { + "nativeSrc": "9788:23:5", + "nodeType": "YulAssignment", + "src": "9788:23:5", + "value": { + "arguments": [ + { + "name": "P0", + "nativeSrc": "9801:2:5", + "nodeType": "YulIdentifier", + "src": "9801:2:5" + }, + { + "name": "P2", + "nativeSrc": "9805:2:5", + "nodeType": "YulIdentifier", + "src": "9805:2:5" + }, + { + "name": "p", + "nativeSrc": "9809:1:5", + "nodeType": "YulIdentifier", + "src": "9809:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "9794:6:5", + "nodeType": "YulIdentifier", + "src": "9794:6:5" + }, + "nativeSrc": "9794:17:5", + "nodeType": "YulFunctionCall", + "src": "9794:17:5" + }, + "variableNames": [ + { + "name": "P1", + "nativeSrc": "9788:2:5", + "nodeType": "YulIdentifier", + "src": "9788:2:5" + } + ] + }, + { + "nativeSrc": "9836:23:5", + "nodeType": "YulAssignment", + "src": "9836:23:5", + "value": { + "arguments": [ + { + "name": "P2", + "nativeSrc": "9849:2:5", + "nodeType": "YulIdentifier", + "src": "9849:2:5" + }, + { + "name": "zz", + "nativeSrc": "9853:2:5", + "nodeType": "YulIdentifier", + "src": "9853:2:5" + }, + { + "name": "p", + "nativeSrc": "9857:1:5", + "nodeType": "YulIdentifier", + "src": "9857:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "9842:6:5", + "nodeType": "YulIdentifier", + "src": "9842:6:5" + }, + "nativeSrc": "9842:17:5", + "nodeType": "YulFunctionCall", + "src": "9842:17:5" + }, + "variableNames": [ + { + "name": "P2", + "nativeSrc": "9836:2:5", + "nodeType": "YulIdentifier", + "src": "9836:2:5" + } + ] + }, + { + "nativeSrc": "9888:73:5", + "nodeType": "YulAssignment", + "src": "9888:73:5", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9901:1:5", + "nodeType": "YulLiteral", + "src": "9901:1:5", + "type": "", + "value": "3" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "x", + "nativeSrc": "9918:1:5", + "nodeType": "YulIdentifier", + "src": "9918:1:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "9925:1:5", + "nodeType": "YulIdentifier", + "src": "9925:1:5" + }, + { + "name": "zz", + "nativeSrc": "9928:2:5", + "nodeType": "YulIdentifier", + "src": "9928:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "9921:3:5", + "nodeType": "YulIdentifier", + "src": "9921:3:5" + }, + "nativeSrc": "9921:10:5", + "nodeType": "YulFunctionCall", + "src": "9921:10:5" + }, + { + "name": "p", + "nativeSrc": "9933:1:5", + "nodeType": "YulIdentifier", + "src": "9933:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "9911:6:5", + "nodeType": "YulIdentifier", + "src": "9911:6:5" + }, + "nativeSrc": "9911:24:5", + "nodeType": "YulFunctionCall", + "src": "9911:24:5" + }, + { + "arguments": [ + { + "name": "x", + "nativeSrc": "9944:1:5", + "nodeType": "YulIdentifier", + "src": "9944:1:5" + }, + { + "name": "zz", + "nativeSrc": "9947:2:5", + "nodeType": "YulIdentifier", + "src": "9947:2:5" + }, + { + "name": "p", + "nativeSrc": "9951:1:5", + "nodeType": "YulIdentifier", + "src": "9951:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "9937:6:5", + "nodeType": "YulIdentifier", + "src": "9937:6:5" + }, + "nativeSrc": "9937:16:5", + "nodeType": "YulFunctionCall", + "src": "9937:16:5" + }, + { + "name": "p", + "nativeSrc": "9955:1:5", + "nodeType": "YulIdentifier", + "src": "9955:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "9904:6:5", + "nodeType": "YulIdentifier", + "src": "9904:6:5" + }, + "nativeSrc": "9904:53:5", + "nodeType": "YulFunctionCall", + "src": "9904:53:5" + }, + { + "name": "p", + "nativeSrc": "9959:1:5", + "nodeType": "YulIdentifier", + "src": "9959:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "9894:6:5", + "nodeType": "YulIdentifier", + "src": "9894:6:5" + }, + "nativeSrc": "9894:67:5", + "nodeType": "YulFunctionCall", + "src": "9894:67:5" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "9888:2:5", + "nodeType": "YulIdentifier", + "src": "9888:2:5" + } + ] + }, + { + "nativeSrc": "10002:58:5", + "nodeType": "YulAssignment", + "src": "10002:58:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "zz", + "nativeSrc": "10022:2:5", + "nodeType": "YulIdentifier", + "src": "10022:2:5" + }, + { + "name": "zz", + "nativeSrc": "10026:2:5", + "nodeType": "YulIdentifier", + "src": "10026:2:5" + }, + { + "name": "p", + "nativeSrc": "10030:1:5", + "nodeType": "YulIdentifier", + "src": "10030:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "10015:6:5", + "nodeType": "YulIdentifier", + "src": "10015:6:5" + }, + "nativeSrc": "10015:17:5", + "nodeType": "YulFunctionCall", + "src": "10015:17:5" + }, + { + "arguments": [ + { + "name": "minus_2", + "nativeSrc": "10041:7:5", + "nodeType": "YulIdentifier", + "src": "10041:7:5" + }, + { + "name": "P3", + "nativeSrc": "10050:2:5", + "nodeType": "YulIdentifier", + "src": "10050:2:5" + }, + { + "name": "p", + "nativeSrc": "10054:1:5", + "nodeType": "YulIdentifier", + "src": "10054:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "10034:6:5", + "nodeType": "YulIdentifier", + "src": "10034:6:5" + }, + "nativeSrc": "10034:22:5", + "nodeType": "YulFunctionCall", + "src": "10034:22:5" + }, + { + "name": "p", + "nativeSrc": "10058:1:5", + "nodeType": "YulIdentifier", + "src": "10058:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "10008:6:5", + "nodeType": "YulIdentifier", + "src": "10008:6:5" + }, + "nativeSrc": "10008:52:5", + "nodeType": "YulFunctionCall", + "src": "10008:52:5" + }, + "variableNames": [ + { + "name": "P0", + "nativeSrc": "10002:2:5", + "nodeType": "YulIdentifier", + "src": "10002:2:5" + } + ] + }, + { + "nativeSrc": "10089:45:5", + "nodeType": "YulAssignment", + "src": "10089:45:5", + "value": { + "arguments": [ + { + "name": "zz", + "nativeSrc": "10101:2:5", + "nodeType": "YulIdentifier", + "src": "10101:2:5" + }, + { + "arguments": [ + { + "name": "P3", + "nativeSrc": "10112:2:5", + "nodeType": "YulIdentifier", + "src": "10112:2:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "10120:1:5", + "nodeType": "YulIdentifier", + "src": "10120:1:5" + }, + { + "name": "P0", + "nativeSrc": "10123:2:5", + "nodeType": "YulIdentifier", + "src": "10123:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "10116:3:5", + "nodeType": "YulIdentifier", + "src": "10116:3:5" + }, + "nativeSrc": "10116:10:5", + "nodeType": "YulFunctionCall", + "src": "10116:10:5" + }, + { + "name": "p", + "nativeSrc": "10128:1:5", + "nodeType": "YulIdentifier", + "src": "10128:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "10105:6:5", + "nodeType": "YulIdentifier", + "src": "10105:6:5" + }, + "nativeSrc": "10105:25:5", + "nodeType": "YulFunctionCall", + "src": "10105:25:5" + }, + { + "name": "p", + "nativeSrc": "10132:1:5", + "nodeType": "YulIdentifier", + "src": "10132:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "10094:6:5", + "nodeType": "YulIdentifier", + "src": "10094:6:5" + }, + "nativeSrc": "10094:40:5", + "nodeType": "YulFunctionCall", + "src": "10094:40:5" + }, + "variableNames": [ + { + "name": "x", + "nativeSrc": "10089:1:5", + "nodeType": "YulIdentifier", + "src": "10089:1:5" + } + ] + }, + { + "nativeSrc": "10161:24:5", + "nodeType": "YulAssignment", + "src": "10161:24:5", + "value": { + "arguments": [ + { + "name": "P1", + "nativeSrc": "10174:2:5", + "nodeType": "YulIdentifier", + "src": "10174:2:5" + }, + { + "name": "zzz", + "nativeSrc": "10178:3:5", + "nodeType": "YulIdentifier", + "src": "10178:3:5" + }, + { + "name": "p", + "nativeSrc": "10183:1:5", + "nodeType": "YulIdentifier", + "src": "10183:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "10167:6:5", + "nodeType": "YulIdentifier", + "src": "10167:6:5" + }, + "nativeSrc": "10167:18:5", + "nodeType": "YulFunctionCall", + "src": "10167:18:5" + }, + "variableNames": [ + { + "name": "P3", + "nativeSrc": "10161:2:5", + "nodeType": "YulIdentifier", + "src": "10161:2:5" + } + ] + }, + { + "nativeSrc": "10216:44:5", + "nodeType": "YulAssignment", + "src": "10216:44:5", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "10229:1:5", + "nodeType": "YulIdentifier", + "src": "10229:1:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "10236:1:5", + "nodeType": "YulIdentifier", + "src": "10236:1:5" + }, + { + "arguments": [ + { + "name": "P1", + "nativeSrc": "10246:2:5", + "nodeType": "YulIdentifier", + "src": "10246:2:5" + }, + { + "name": "y", + "nativeSrc": "10250:1:5", + "nodeType": "YulIdentifier", + "src": "10250:1:5" + }, + { + "name": "p", + "nativeSrc": "10253:1:5", + "nodeType": "YulIdentifier", + "src": "10253:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "10239:6:5", + "nodeType": "YulIdentifier", + "src": "10239:6:5" + }, + "nativeSrc": "10239:16:5", + "nodeType": "YulFunctionCall", + "src": "10239:16:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "10232:3:5", + "nodeType": "YulIdentifier", + "src": "10232:3:5" + }, + "nativeSrc": "10232:24:5", + "nodeType": "YulFunctionCall", + "src": "10232:24:5" + }, + { + "name": "p", + "nativeSrc": "10258:1:5", + "nodeType": "YulIdentifier", + "src": "10258:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "10222:6:5", + "nodeType": "YulIdentifier", + "src": "10222:6:5" + }, + "nativeSrc": "10222:38:5", + "nodeType": "YulFunctionCall", + "src": "10222:38:5" + }, + "variableNames": [ + { + "name": "P1", + "nativeSrc": "10216:2:5", + "nodeType": "YulIdentifier", + "src": "10216:2:5" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 1483, + "isOffset": false, + "isSlot": false, + "src": "10002:2:5", + "valueSize": 1 + }, + { + "declaration": 1483, + "isOffset": false, + "isSlot": false, + "src": "10123:2:5", + "valueSize": 1 + }, + { + "declaration": 1483, + "isOffset": false, + "isSlot": false, + "src": "9639:2:5", + "valueSize": 1 + }, + { + "declaration": 1483, + "isOffset": false, + "isSlot": false, + "src": "9701:2:5", + "valueSize": 1 + }, + { + "declaration": 1483, + "isOffset": false, + "isSlot": false, + "src": "9705:2:5", + "valueSize": 1 + }, + { + "declaration": 1483, + "isOffset": false, + "isSlot": false, + "src": "9801:2:5", + "valueSize": 1 + }, + { + "declaration": 1485, + "isOffset": false, + "isSlot": false, + "src": "10174:2:5", + "valueSize": 1 + }, + { + "declaration": 1485, + "isOffset": false, + "isSlot": false, + "src": "10216:2:5", + "valueSize": 1 + }, + { + "declaration": 1485, + "isOffset": false, + "isSlot": false, + "src": "10246:2:5", + "valueSize": 1 + }, + { + "declaration": 1485, + "isOffset": false, + "isSlot": false, + "src": "9788:2:5", + "valueSize": 1 + }, + { + "declaration": 1487, + "isOffset": false, + "isSlot": false, + "src": "9688:2:5", + "valueSize": 1 + }, + { + "declaration": 1487, + "isOffset": false, + "isSlot": false, + "src": "9753:2:5", + "valueSize": 1 + }, + { + "declaration": 1487, + "isOffset": false, + "isSlot": false, + "src": "9805:2:5", + "valueSize": 1 + }, + { + "declaration": 1487, + "isOffset": false, + "isSlot": false, + "src": "9836:2:5", + "valueSize": 1 + }, + { + "declaration": 1487, + "isOffset": false, + "isSlot": false, + "src": "9849:2:5", + "valueSize": 1 + }, + { + "declaration": 1489, + "isOffset": false, + "isSlot": false, + "src": "10050:2:5", + "valueSize": 1 + }, + { + "declaration": 1489, + "isOffset": false, + "isSlot": false, + "src": "10112:2:5", + "valueSize": 1 + }, + { + "declaration": 1489, + "isOffset": false, + "isSlot": false, + "src": "10161:2:5", + "valueSize": 1 + }, + { + "declaration": 1489, + "isOffset": false, + "isSlot": false, + "src": "9737:2:5", + "valueSize": 1 + }, + { + "declaration": 994, + "isOffset": false, + "isSlot": false, + "src": "10041:7:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "10030:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "10054:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "10058:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "10120:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "10128:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "10132:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "10183:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "10236:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "10253:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "10258:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "9658:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "9709:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "9757:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "9809:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "9857:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "9925:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "9933:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "9951:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "9955:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "9959:1:5", + "valueSize": 1 + }, + { + "declaration": 1474, + "isOffset": false, + "isSlot": false, + "src": "10089:1:5", + "valueSize": 1 + }, + { + "declaration": 1474, + "isOffset": false, + "isSlot": false, + "src": "10229:1:5", + "valueSize": 1 + }, + { + "declaration": 1474, + "isOffset": false, + "isSlot": false, + "src": "9750:1:5", + "valueSize": 1 + }, + { + "declaration": 1474, + "isOffset": false, + "isSlot": false, + "src": "9918:1:5", + "valueSize": 1 + }, + { + "declaration": 1474, + "isOffset": false, + "isSlot": false, + "src": "9944:1:5", + "valueSize": 1 + }, + { + "declaration": 1476, + "isOffset": false, + "isSlot": false, + "src": "10250:1:5", + "valueSize": 1 + }, + { + "declaration": 1476, + "isOffset": false, + "isSlot": false, + "src": "9655:1:5", + "valueSize": 1 + }, + { + "declaration": 1478, + "isOffset": false, + "isSlot": false, + "src": "10022:2:5", + "valueSize": 1 + }, + { + "declaration": 1478, + "isOffset": false, + "isSlot": false, + "src": "10026:2:5", + "valueSize": 1 + }, + { + "declaration": 1478, + "isOffset": false, + "isSlot": false, + "src": "10101:2:5", + "valueSize": 1 + }, + { + "declaration": 1478, + "isOffset": false, + "isSlot": false, + "src": "9853:2:5", + "valueSize": 1 + }, + { + "declaration": 1478, + "isOffset": false, + "isSlot": false, + "src": "9888:2:5", + "valueSize": 1 + }, + { + "declaration": 1478, + "isOffset": false, + "isSlot": false, + "src": "9928:2:5", + "valueSize": 1 + }, + { + "declaration": 1478, + "isOffset": false, + "isSlot": false, + "src": "9947:2:5", + "valueSize": 1 + }, + { + "declaration": 1480, + "isOffset": false, + "isSlot": false, + "src": "10178:3:5", + "valueSize": 1 + } + ], + "id": 1491, + "nodeType": "InlineAssembly", + "src": "9612:681:5" + } + ] + }, + { + "expression": { + "components": [ + { + "id": 1493, + "name": "P0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1483, + "src": "10320:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1494, + "name": "P1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1485, + "src": "10324:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1495, + "name": "P2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1487, + "src": "10328:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1496, + "name": "P3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1489, + "src": "10332:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1497, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10319:16:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256,uint256,uint256)" + } + }, + "functionReturnParameters": 1490, + "id": 1498, + "nodeType": "Return", + "src": "10312:23:5" + } + ] + }, + "documentation": { + "id": 1472, + "nodeType": "StructuredDocumentation", + "src": "9311:50:5", + "text": " /* @dev Sutherland2008 doubling" + }, + "id": 1500, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ecZZ_Dbl", + "nameLocation": "9423:8:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1481, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1474, + "mutability": "mutable", + "name": "x", + "nameLocation": "9440:1:5", + "nodeType": "VariableDeclaration", + "scope": 1500, + "src": "9432:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1473, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9432:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1476, + "mutability": "mutable", + "name": "y", + "nameLocation": "9451:1:5", + "nodeType": "VariableDeclaration", + "scope": 1500, + "src": "9443:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1475, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9443:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1478, + "mutability": "mutable", + "name": "zz", + "nameLocation": "9462:2:5", + "nodeType": "VariableDeclaration", + "scope": 1500, + "src": "9454:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1477, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9454:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1480, + "mutability": "mutable", + "name": "zzz", + "nameLocation": "9474:3:5", + "nodeType": "VariableDeclaration", + "scope": 1500, + "src": "9466:11:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1479, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9466:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9431:47:5" + }, + "returnParameters": { + "id": 1490, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1483, + "mutability": "mutable", + "name": "P0", + "nameLocation": "9534:2:5", + "nodeType": "VariableDeclaration", + "scope": 1500, + "src": "9526:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1482, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9526:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1485, + "mutability": "mutable", + "name": "P1", + "nameLocation": "9546:2:5", + "nodeType": "VariableDeclaration", + "scope": 1500, + "src": "9538:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1484, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9538:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1487, + "mutability": "mutable", + "name": "P2", + "nameLocation": "9558:2:5", + "nodeType": "VariableDeclaration", + "scope": 1500, + "src": "9550:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1486, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9550:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1489, + "mutability": "mutable", + "name": "P3", + "nameLocation": "9570:2:5", + "nodeType": "VariableDeclaration", + "scope": 1500, + "src": "9562:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1488, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9562:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9525:48:5" + }, + "scope": 2309, + "src": "9414:928:5", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1543, + "nodeType": "Block", + "src": "10752:880:5", + "statements": [ + { + "id": 1536, + "nodeType": "UncheckedBlock", + "src": "10762:815:5", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1526, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1524, + "name": "y1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1505, + "src": "10790:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1525, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10796:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "10790:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1534, + "nodeType": "IfStatement", + "src": "10786:67:5", + "trueBody": { + "id": 1533, + "nodeType": "Block", + "src": "10799:54:5", + "statements": [ + { + "expression": { + "components": [ + { + "id": 1527, + "name": "x2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1511, + "src": "10825:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1528, + "name": "y2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1513, + "src": "10829:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "31", + "id": 1529, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10833:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + { + "hexValue": "31", + "id": 1530, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10836:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "id": 1531, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10824:14:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_rational_1_by_1_$_t_rational_1_by_1_$", + "typeString": "tuple(uint256,uint256,int_const 1,int_const 1)" + } + }, + "functionReturnParameters": 1523, + "id": 1532, + "nodeType": "Return", + "src": "10817:21:5" + } + ] + } + }, + { + "AST": { + "nativeSrc": "10876:664:5", + "nodeType": "YulBlock", + "src": "10876:664:5", + "statements": [ + { + "nativeSrc": "10894:16:5", + "nodeType": "YulAssignment", + "src": "10894:16:5", + "value": { + "arguments": [ + { + "name": "p", + "nativeSrc": "10904:1:5", + "nodeType": "YulIdentifier", + "src": "10904:1:5" + }, + { + "name": "y1", + "nativeSrc": "10907:2:5", + "nodeType": "YulIdentifier", + "src": "10907:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "10900:3:5", + "nodeType": "YulIdentifier", + "src": "10900:3:5" + }, + "nativeSrc": "10900:10:5", + "nodeType": "YulFunctionCall", + "src": "10900:10:5" + }, + "variableNames": [ + { + "name": "y1", + "nativeSrc": "10894:2:5", + "nodeType": "YulIdentifier", + "src": "10894:2:5" + } + ] + }, + { + "nativeSrc": "10927:40:5", + "nodeType": "YulAssignment", + "src": "10927:40:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "y2", + "nativeSrc": "10947:2:5", + "nodeType": "YulIdentifier", + "src": "10947:2:5" + }, + { + "name": "zzz1", + "nativeSrc": "10951:4:5", + "nodeType": "YulIdentifier", + "src": "10951:4:5" + }, + { + "name": "p", + "nativeSrc": "10957:1:5", + "nodeType": "YulIdentifier", + "src": "10957:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "10940:6:5", + "nodeType": "YulIdentifier", + "src": "10940:6:5" + }, + "nativeSrc": "10940:19:5", + "nodeType": "YulFunctionCall", + "src": "10940:19:5" + }, + { + "name": "y1", + "nativeSrc": "10961:2:5", + "nodeType": "YulIdentifier", + "src": "10961:2:5" + }, + { + "name": "p", + "nativeSrc": "10965:1:5", + "nodeType": "YulIdentifier", + "src": "10965:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "10933:6:5", + "nodeType": "YulIdentifier", + "src": "10933:6:5" + }, + "nativeSrc": "10933:34:5", + "nodeType": "YulFunctionCall", + "src": "10933:34:5" + }, + "variableNames": [ + { + "name": "y2", + "nativeSrc": "10927:2:5", + "nodeType": "YulIdentifier", + "src": "10927:2:5" + } + ] + }, + { + "nativeSrc": "10984:47:5", + "nodeType": "YulAssignment", + "src": "10984:47:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "x2", + "nativeSrc": "11004:2:5", + "nodeType": "YulIdentifier", + "src": "11004:2:5" + }, + { + "name": "zz1", + "nativeSrc": "11008:3:5", + "nodeType": "YulIdentifier", + "src": "11008:3:5" + }, + { + "name": "p", + "nativeSrc": "11013:1:5", + "nodeType": "YulIdentifier", + "src": "11013:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "10997:6:5", + "nodeType": "YulIdentifier", + "src": "10997:6:5" + }, + "nativeSrc": "10997:18:5", + "nodeType": "YulFunctionCall", + "src": "10997:18:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "11021:1:5", + "nodeType": "YulIdentifier", + "src": "11021:1:5" + }, + { + "name": "x1", + "nativeSrc": "11024:2:5", + "nodeType": "YulIdentifier", + "src": "11024:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "11017:3:5", + "nodeType": "YulIdentifier", + "src": "11017:3:5" + }, + "nativeSrc": "11017:10:5", + "nodeType": "YulFunctionCall", + "src": "11017:10:5" + }, + { + "name": "p", + "nativeSrc": "11029:1:5", + "nodeType": "YulIdentifier", + "src": "11029:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "10990:6:5", + "nodeType": "YulIdentifier", + "src": "10990:6:5" + }, + "nativeSrc": "10990:41:5", + "nodeType": "YulFunctionCall", + "src": "10990:41:5" + }, + "variableNames": [ + { + "name": "x2", + "nativeSrc": "10984:2:5", + "nodeType": "YulIdentifier", + "src": "10984:2:5" + } + ] + }, + { + "nativeSrc": "11048:23:5", + "nodeType": "YulAssignment", + "src": "11048:23:5", + "value": { + "arguments": [ + { + "name": "x2", + "nativeSrc": "11061:2:5", + "nodeType": "YulIdentifier", + "src": "11061:2:5" + }, + { + "name": "x2", + "nativeSrc": "11065:2:5", + "nodeType": "YulIdentifier", + "src": "11065:2:5" + }, + { + "name": "p", + "nativeSrc": "11069:1:5", + "nodeType": "YulIdentifier", + "src": "11069:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "11054:6:5", + "nodeType": "YulIdentifier", + "src": "11054:6:5" + }, + "nativeSrc": "11054:17:5", + "nodeType": "YulFunctionCall", + "src": "11054:17:5" + }, + "variableNames": [ + { + "name": "P0", + "nativeSrc": "11048:2:5", + "nodeType": "YulIdentifier", + "src": "11048:2:5" + } + ] + }, + { + "nativeSrc": "11099:23:5", + "nodeType": "YulAssignment", + "src": "11099:23:5", + "value": { + "arguments": [ + { + "name": "P0", + "nativeSrc": "11112:2:5", + "nodeType": "YulIdentifier", + "src": "11112:2:5" + }, + { + "name": "x2", + "nativeSrc": "11116:2:5", + "nodeType": "YulIdentifier", + "src": "11116:2:5" + }, + { + "name": "p", + "nativeSrc": "11120:1:5", + "nodeType": "YulIdentifier", + "src": "11120:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "11105:6:5", + "nodeType": "YulIdentifier", + "src": "11105:6:5" + }, + "nativeSrc": "11105:17:5", + "nodeType": "YulFunctionCall", + "src": "11105:17:5" + }, + "variableNames": [ + { + "name": "P1", + "nativeSrc": "11099:2:5", + "nodeType": "YulIdentifier", + "src": "11099:2:5" + } + ] + }, + { + "nativeSrc": "11152:24:5", + "nodeType": "YulAssignment", + "src": "11152:24:5", + "value": { + "arguments": [ + { + "name": "zz1", + "nativeSrc": "11165:3:5", + "nodeType": "YulIdentifier", + "src": "11165:3:5" + }, + { + "name": "P0", + "nativeSrc": "11170:2:5", + "nodeType": "YulIdentifier", + "src": "11170:2:5" + }, + { + "name": "p", + "nativeSrc": "11174:1:5", + "nodeType": "YulIdentifier", + "src": "11174:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "11158:6:5", + "nodeType": "YulIdentifier", + "src": "11158:6:5" + }, + "nativeSrc": "11158:18:5", + "nodeType": "YulFunctionCall", + "src": "11158:18:5" + }, + "variableNames": [ + { + "name": "P2", + "nativeSrc": "11152:2:5", + "nodeType": "YulIdentifier", + "src": "11152:2:5" + } + ] + }, + { + "nativeSrc": "11210:25:5", + "nodeType": "YulAssignment", + "src": "11210:25:5", + "value": { + "arguments": [ + { + "name": "zzz1", + "nativeSrc": "11223:4:5", + "nodeType": "YulIdentifier", + "src": "11223:4:5" + }, + { + "name": "P1", + "nativeSrc": "11229:2:5", + "nodeType": "YulIdentifier", + "src": "11229:2:5" + }, + { + "name": "p", + "nativeSrc": "11233:1:5", + "nodeType": "YulIdentifier", + "src": "11233:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "11216:6:5", + "nodeType": "YulIdentifier", + "src": "11216:6:5" + }, + "nativeSrc": "11216:19:5", + "nodeType": "YulFunctionCall", + "src": "11216:19:5" + }, + "variableNames": [ + { + "name": "P3", + "nativeSrc": "11210:2:5", + "nodeType": "YulIdentifier", + "src": "11210:2:5" + } + ] + }, + { + "nativeSrc": "11272:24:5", + "nodeType": "YulAssignment", + "src": "11272:24:5", + "value": { + "arguments": [ + { + "name": "x1", + "nativeSrc": "11286:2:5", + "nodeType": "YulIdentifier", + "src": "11286:2:5" + }, + { + "name": "P0", + "nativeSrc": "11290:2:5", + "nodeType": "YulIdentifier", + "src": "11290:2:5" + }, + { + "name": "p", + "nativeSrc": "11294:1:5", + "nodeType": "YulIdentifier", + "src": "11294:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "11279:6:5", + "nodeType": "YulIdentifier", + "src": "11279:6:5" + }, + "nativeSrc": "11279:17:5", + "nodeType": "YulFunctionCall", + "src": "11279:17:5" + }, + "variableNames": [ + { + "name": "zz1", + "nativeSrc": "11272:3:5", + "nodeType": "YulIdentifier", + "src": "11272:3:5" + } + ] + }, + { + "nativeSrc": "11325:82:5", + "nodeType": "YulAssignment", + "src": "11325:82:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "y2", + "nativeSrc": "11352:2:5", + "nodeType": "YulIdentifier", + "src": "11352:2:5" + }, + { + "name": "y2", + "nativeSrc": "11356:2:5", + "nodeType": "YulIdentifier", + "src": "11356:2:5" + }, + { + "name": "p", + "nativeSrc": "11360:1:5", + "nodeType": "YulIdentifier", + "src": "11360:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "11345:6:5", + "nodeType": "YulIdentifier", + "src": "11345:6:5" + }, + "nativeSrc": "11345:17:5", + "nodeType": "YulFunctionCall", + "src": "11345:17:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "11368:1:5", + "nodeType": "YulIdentifier", + "src": "11368:1:5" + }, + { + "name": "P1", + "nativeSrc": "11371:2:5", + "nodeType": "YulIdentifier", + "src": "11371:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "11364:3:5", + "nodeType": "YulIdentifier", + "src": "11364:3:5" + }, + "nativeSrc": "11364:10:5", + "nodeType": "YulFunctionCall", + "src": "11364:10:5" + }, + { + "name": "p", + "nativeSrc": "11376:1:5", + "nodeType": "YulIdentifier", + "src": "11376:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "11338:6:5", + "nodeType": "YulIdentifier", + "src": "11338:6:5" + }, + "nativeSrc": "11338:40:5", + "nodeType": "YulFunctionCall", + "src": "11338:40:5" + }, + { + "arguments": [ + { + "name": "minus_2", + "nativeSrc": "11387:7:5", + "nodeType": "YulIdentifier", + "src": "11387:7:5" + }, + { + "name": "zz1", + "nativeSrc": "11396:3:5", + "nodeType": "YulIdentifier", + "src": "11396:3:5" + }, + { + "name": "p", + "nativeSrc": "11401:1:5", + "nodeType": "YulIdentifier", + "src": "11401:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "11380:6:5", + "nodeType": "YulIdentifier", + "src": "11380:6:5" + }, + "nativeSrc": "11380:23:5", + "nodeType": "YulFunctionCall", + "src": "11380:23:5" + }, + { + "name": "p", + "nativeSrc": "11405:1:5", + "nodeType": "YulIdentifier", + "src": "11405:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "11331:6:5", + "nodeType": "YulIdentifier", + "src": "11331:6:5" + }, + "nativeSrc": "11331:76:5", + "nodeType": "YulFunctionCall", + "src": "11331:76:5" + }, + "variableNames": [ + { + "name": "P0", + "nativeSrc": "11325:2:5", + "nodeType": "YulIdentifier", + "src": "11325:2:5" + } + ] + }, + { + "nativeSrc": "11438:77:5", + "nodeType": "YulAssignment", + "src": "11438:77:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "zz1", + "nativeSrc": "11465:3:5", + "nodeType": "YulIdentifier", + "src": "11465:3:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "11474:1:5", + "nodeType": "YulIdentifier", + "src": "11474:1:5" + }, + { + "name": "P0", + "nativeSrc": "11477:2:5", + "nodeType": "YulIdentifier", + "src": "11477:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "11470:3:5", + "nodeType": "YulIdentifier", + "src": "11470:3:5" + }, + "nativeSrc": "11470:10:5", + "nodeType": "YulFunctionCall", + "src": "11470:10:5" + }, + { + "name": "p", + "nativeSrc": "11482:1:5", + "nodeType": "YulIdentifier", + "src": "11482:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "11458:6:5", + "nodeType": "YulIdentifier", + "src": "11458:6:5" + }, + "nativeSrc": "11458:26:5", + "nodeType": "YulFunctionCall", + "src": "11458:26:5" + }, + { + "name": "y2", + "nativeSrc": "11486:2:5", + "nodeType": "YulIdentifier", + "src": "11486:2:5" + }, + { + "name": "p", + "nativeSrc": "11490:1:5", + "nodeType": "YulIdentifier", + "src": "11490:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "11451:6:5", + "nodeType": "YulIdentifier", + "src": "11451:6:5" + }, + "nativeSrc": "11451:41:5", + "nodeType": "YulFunctionCall", + "src": "11451:41:5" + }, + { + "arguments": [ + { + "name": "y1", + "nativeSrc": "11501:2:5", + "nodeType": "YulIdentifier", + "src": "11501:2:5" + }, + { + "name": "P1", + "nativeSrc": "11505:2:5", + "nodeType": "YulIdentifier", + "src": "11505:2:5" + }, + { + "name": "p", + "nativeSrc": "11509:1:5", + "nodeType": "YulIdentifier", + "src": "11509:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "11494:6:5", + "nodeType": "YulIdentifier", + "src": "11494:6:5" + }, + "nativeSrc": "11494:17:5", + "nodeType": "YulFunctionCall", + "src": "11494:17:5" + }, + { + "name": "p", + "nativeSrc": "11513:1:5", + "nodeType": "YulIdentifier", + "src": "11513:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "11444:6:5", + "nodeType": "YulIdentifier", + "src": "11444:6:5" + }, + "nativeSrc": "11444:71:5", + "nodeType": "YulFunctionCall", + "src": "11444:71:5" + }, + "variableNames": [ + { + "name": "P1", + "nativeSrc": "11438:2:5", + "nodeType": "YulIdentifier", + "src": "11438:2:5" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 1516, + "isOffset": false, + "isSlot": false, + "src": "11048:2:5", + "valueSize": 1 + }, + { + "declaration": 1516, + "isOffset": false, + "isSlot": false, + "src": "11112:2:5", + "valueSize": 1 + }, + { + "declaration": 1516, + "isOffset": false, + "isSlot": false, + "src": "11170:2:5", + "valueSize": 1 + }, + { + "declaration": 1516, + "isOffset": false, + "isSlot": false, + "src": "11290:2:5", + "valueSize": 1 + }, + { + "declaration": 1516, + "isOffset": false, + "isSlot": false, + "src": "11325:2:5", + "valueSize": 1 + }, + { + "declaration": 1516, + "isOffset": false, + "isSlot": false, + "src": "11477:2:5", + "valueSize": 1 + }, + { + "declaration": 1518, + "isOffset": false, + "isSlot": false, + "src": "11099:2:5", + "valueSize": 1 + }, + { + "declaration": 1518, + "isOffset": false, + "isSlot": false, + "src": "11229:2:5", + "valueSize": 1 + }, + { + "declaration": 1518, + "isOffset": false, + "isSlot": false, + "src": "11371:2:5", + "valueSize": 1 + }, + { + "declaration": 1518, + "isOffset": false, + "isSlot": false, + "src": "11438:2:5", + "valueSize": 1 + }, + { + "declaration": 1518, + "isOffset": false, + "isSlot": false, + "src": "11505:2:5", + "valueSize": 1 + }, + { + "declaration": 1520, + "isOffset": false, + "isSlot": false, + "src": "11152:2:5", + "valueSize": 1 + }, + { + "declaration": 1522, + "isOffset": false, + "isSlot": false, + "src": "11210:2:5", + "valueSize": 1 + }, + { + "declaration": 994, + "isOffset": false, + "isSlot": false, + "src": "11387:7:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "10904:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "10957:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "10965:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "11013:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "11021:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "11029:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "11069:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "11120:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "11174:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "11233:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "11294:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "11360:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "11368:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "11376:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "11401:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "11405:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "11474:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "11482:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "11490:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "11509:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "11513:1:5", + "valueSize": 1 + }, + { + "declaration": 1503, + "isOffset": false, + "isSlot": false, + "src": "11024:2:5", + "valueSize": 1 + }, + { + "declaration": 1503, + "isOffset": false, + "isSlot": false, + "src": "11286:2:5", + "valueSize": 1 + }, + { + "declaration": 1511, + "isOffset": false, + "isSlot": false, + "src": "10984:2:5", + "valueSize": 1 + }, + { + "declaration": 1511, + "isOffset": false, + "isSlot": false, + "src": "11004:2:5", + "valueSize": 1 + }, + { + "declaration": 1511, + "isOffset": false, + "isSlot": false, + "src": "11061:2:5", + "valueSize": 1 + }, + { + "declaration": 1511, + "isOffset": false, + "isSlot": false, + "src": "11065:2:5", + "valueSize": 1 + }, + { + "declaration": 1511, + "isOffset": false, + "isSlot": false, + "src": "11116:2:5", + "valueSize": 1 + }, + { + "declaration": 1505, + "isOffset": false, + "isSlot": false, + "src": "10894:2:5", + "valueSize": 1 + }, + { + "declaration": 1505, + "isOffset": false, + "isSlot": false, + "src": "10907:2:5", + "valueSize": 1 + }, + { + "declaration": 1505, + "isOffset": false, + "isSlot": false, + "src": "10961:2:5", + "valueSize": 1 + }, + { + "declaration": 1505, + "isOffset": false, + "isSlot": false, + "src": "11501:2:5", + "valueSize": 1 + }, + { + "declaration": 1513, + "isOffset": false, + "isSlot": false, + "src": "10927:2:5", + "valueSize": 1 + }, + { + "declaration": 1513, + "isOffset": false, + "isSlot": false, + "src": "10947:2:5", + "valueSize": 1 + }, + { + "declaration": 1513, + "isOffset": false, + "isSlot": false, + "src": "11352:2:5", + "valueSize": 1 + }, + { + "declaration": 1513, + "isOffset": false, + "isSlot": false, + "src": "11356:2:5", + "valueSize": 1 + }, + { + "declaration": 1513, + "isOffset": false, + "isSlot": false, + "src": "11486:2:5", + "valueSize": 1 + }, + { + "declaration": 1507, + "isOffset": false, + "isSlot": false, + "src": "11008:3:5", + "valueSize": 1 + }, + { + "declaration": 1507, + "isOffset": false, + "isSlot": false, + "src": "11165:3:5", + "valueSize": 1 + }, + { + "declaration": 1507, + "isOffset": false, + "isSlot": false, + "src": "11272:3:5", + "valueSize": 1 + }, + { + "declaration": 1507, + "isOffset": false, + "isSlot": false, + "src": "11396:3:5", + "valueSize": 1 + }, + { + "declaration": 1507, + "isOffset": false, + "isSlot": false, + "src": "11465:3:5", + "valueSize": 1 + }, + { + "declaration": 1509, + "isOffset": false, + "isSlot": false, + "src": "10951:4:5", + "valueSize": 1 + }, + { + "declaration": 1509, + "isOffset": false, + "isSlot": false, + "src": "11223:4:5", + "valueSize": 1 + } + ], + "id": 1535, + "nodeType": "InlineAssembly", + "src": "10867:673:5" + } + ] + }, + { + "expression": { + "components": [ + { + "id": 1537, + "name": "P0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1516, + "src": "11610:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1538, + "name": "P1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1518, + "src": "11614:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1539, + "name": "P2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1520, + "src": "11618:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1540, + "name": "P3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1522, + "src": "11622:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1541, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11609:16:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256,uint256,uint256)" + } + }, + "functionReturnParameters": 1523, + "id": 1542, + "nodeType": "Return", + "src": "11602:23:5" + } + ] + }, + "documentation": { + "id": 1501, + "nodeType": "StructuredDocumentation", + "src": "10348:205:5", + "text": " @dev Sutherland2008 add a ZZ point with a normalized point and greedy formulae\n warning: assume that P1(x1,y1)!=P2(x2,y2), true in multiplication loop with prime order (cofactor 1)" + }, + "id": 1544, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ecZZ_AddN", + "nameLocation": "10568:9:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1514, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1503, + "mutability": "mutable", + "name": "x1", + "nameLocation": "10586:2:5", + "nodeType": "VariableDeclaration", + "scope": 1544, + "src": "10578:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1502, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10578:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1505, + "mutability": "mutable", + "name": "y1", + "nameLocation": "10598:2:5", + "nodeType": "VariableDeclaration", + "scope": 1544, + "src": "10590:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1504, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10590:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1507, + "mutability": "mutable", + "name": "zz1", + "nameLocation": "10610:3:5", + "nodeType": "VariableDeclaration", + "scope": 1544, + "src": "10602:11:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1506, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10602:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1509, + "mutability": "mutable", + "name": "zzz1", + "nameLocation": "10623:4:5", + "nodeType": "VariableDeclaration", + "scope": 1544, + "src": "10615:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1508, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10615:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1511, + "mutability": "mutable", + "name": "x2", + "nameLocation": "10637:2:5", + "nodeType": "VariableDeclaration", + "scope": 1544, + "src": "10629:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1510, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10629:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1513, + "mutability": "mutable", + "name": "y2", + "nameLocation": "10649:2:5", + "nodeType": "VariableDeclaration", + "scope": 1544, + "src": "10641:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1512, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10641:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10577:75:5" + }, + "returnParameters": { + "id": 1523, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1516, + "mutability": "mutable", + "name": "P0", + "nameLocation": "10708:2:5", + "nodeType": "VariableDeclaration", + "scope": 1544, + "src": "10700:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1515, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10700:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1518, + "mutability": "mutable", + "name": "P1", + "nameLocation": "10720:2:5", + "nodeType": "VariableDeclaration", + "scope": 1544, + "src": "10712:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1517, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10712:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1520, + "mutability": "mutable", + "name": "P2", + "nameLocation": "10732:2:5", + "nodeType": "VariableDeclaration", + "scope": 1544, + "src": "10724:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1519, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10724:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1522, + "mutability": "mutable", + "name": "P3", + "nameLocation": "10744:2:5", + "nodeType": "VariableDeclaration", + "scope": 1544, + "src": "10736:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1521, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10736:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10699:48:5" + }, + "scope": 2309, + "src": "10559:1073:5", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1562, + "nodeType": "Block", + "src": "11803:36:5", + "statements": [ + { + "expression": { + "components": [ + { + "hexValue": "30", + "id": 1556, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11821:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "hexValue": "30", + "id": 1557, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11824:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "hexValue": "30", + "id": 1558, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11827:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "hexValue": "30", + "id": 1559, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11830:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 1560, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11820:12:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_rational_0_by_1_$_t_rational_0_by_1_$_t_rational_0_by_1_$", + "typeString": "tuple(int_const 0,int_const 0,int_const 0,int_const 0)" + } + }, + "functionReturnParameters": 1555, + "id": 1561, + "nodeType": "Return", + "src": "11813:19:5" + } + ] + }, + "documentation": { + "id": 1545, + "nodeType": "StructuredDocumentation", + "src": "11638:66:5", + "text": " @dev Return the zero curve in XYZZ coordinates." + }, + "id": 1563, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ecZZ_SetZero", + "nameLocation": "11718:12:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1546, + "nodeType": "ParameterList", + "parameters": [], + "src": "11730:2:5" + }, + "returnParameters": { + "id": 1555, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1548, + "mutability": "mutable", + "name": "x", + "nameLocation": "11764:1:5", + "nodeType": "VariableDeclaration", + "scope": 1563, + "src": "11756:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1547, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11756:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1550, + "mutability": "mutable", + "name": "y", + "nameLocation": "11775:1:5", + "nodeType": "VariableDeclaration", + "scope": 1563, + "src": "11767:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1549, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11767:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1552, + "mutability": "mutable", + "name": "zz", + "nameLocation": "11786:2:5", + "nodeType": "VariableDeclaration", + "scope": 1563, + "src": "11778:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1551, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11778:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1554, + "mutability": "mutable", + "name": "zzz", + "nameLocation": "11798:3:5", + "nodeType": "VariableDeclaration", + "scope": 1563, + "src": "11790:11:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1553, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11790:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11755:47:5" + }, + "scope": 2309, + "src": "11709:130:5", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1581, + "nodeType": "Block", + "src": "12062:31:5", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1579, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1577, + "name": "y0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1568, + "src": "12079:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1578, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12085:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "12079:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1576, + "id": 1580, + "nodeType": "Return", + "src": "12072:14:5" + } + ] + }, + "documentation": { + "id": 1564, + "nodeType": "StructuredDocumentation", + "src": "11844:66:5", + "text": " @dev Check if point is the neutral of the curve" + }, + "id": 1582, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ecZZ_IsZero", + "nameLocation": "11982:11:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1573, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1566, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1582, + "src": "11994:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1565, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11994:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1568, + "mutability": "mutable", + "name": "y0", + "nameLocation": "12011:2:5", + "nodeType": "VariableDeclaration", + "scope": 1582, + "src": "12003:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1567, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12003:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1570, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1582, + "src": "12015:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1569, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12015:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1572, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1582, + "src": "12024:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1571, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12024:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11993:39:5" + }, + "returnParameters": { + "id": 1576, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1575, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1582, + "src": "12056:4:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1574, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "12056:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "12055:6:5" + }, + "scope": 2309, + "src": "11973:120:5", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1594, + "nodeType": "Block", + "src": "12296:30:5", + "statements": [ + { + "expression": { + "components": [ + { + "hexValue": "30", + "id": 1590, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12314:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "hexValue": "30", + "id": 1591, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12317:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 1592, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "12313:6:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_rational_0_by_1_$", + "typeString": "tuple(int_const 0,int_const 0)" + } + }, + "functionReturnParameters": 1589, + "id": 1593, + "nodeType": "Return", + "src": "12306:13:5" + } + ] + }, + "documentation": { + "id": 1583, + "nodeType": "StructuredDocumentation", + "src": "12098:122:5", + "text": " @dev Return the zero curve in affine coordinates. Compatible with the double formulae (no special case)" + }, + "id": 1595, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ecAff_SetZero", + "nameLocation": "12235:13:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1584, + "nodeType": "ParameterList", + "parameters": [], + "src": "12248:2:5" + }, + "returnParameters": { + "id": 1589, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1586, + "mutability": "mutable", + "name": "x", + "nameLocation": "12282:1:5", + "nodeType": "VariableDeclaration", + "scope": 1595, + "src": "12274:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1585, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12274:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1588, + "mutability": "mutable", + "name": "y", + "nameLocation": "12293:1:5", + "nodeType": "VariableDeclaration", + "scope": 1595, + "src": "12285:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1587, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12285:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12273:22:5" + }, + "scope": 2309, + "src": "12226:100:5", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1610, + "nodeType": "Block", + "src": "12517:32:5", + "statements": [ + { + "expression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1607, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1605, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1600, + "src": "12535:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1606, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12540:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "12535:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 1608, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "12534:8:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1604, + "id": 1609, + "nodeType": "Return", + "src": "12527:15:5" + } + ] + }, + "documentation": { + "id": 1596, + "nodeType": "StructuredDocumentation", + "src": "12332:75:5", + "text": " @dev Check if the curve is the zero curve in affine rep." + }, + "id": 1611, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ecAff_IsZero", + "nameLocation": "12450:12:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1601, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1598, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1611, + "src": "12463:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1597, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12463:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1600, + "mutability": "mutable", + "name": "y", + "nameLocation": "12480:1:5", + "nodeType": "VariableDeclaration", + "scope": 1611, + "src": "12472:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1599, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12472:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12462:20:5" + }, + "returnParameters": { + "id": 1604, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1603, + "mutability": "mutable", + "name": "flag", + "nameLocation": "12511:4:5", + "nodeType": "VariableDeclaration", + "scope": 1611, + "src": "12506:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1602, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "12506:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "12505:11:5" + }, + "scope": 2309, + "src": "12441:108:5", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1684, + "nodeType": "Block", + "src": "12760:362:5", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1638, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1627, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1623, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1621, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1614, + "src": "12774:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 1622, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "12779:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12774:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1626, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1624, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1616, + "src": "12784:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 1625, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "12789:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12784:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "12774:16:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1630, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1628, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1614, + "src": "12796:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1629, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12801:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "12796:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 1631, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "12795:8:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1634, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1632, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1616, + "src": "12808:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1633, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12813:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "12808:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 1635, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "12807:8:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "12795:20:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 1637, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "12794:22:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "12774:42:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1642, + "nodeType": "IfStatement", + "src": "12770:85:5", + "trueBody": { + "id": 1641, + "nodeType": "Block", + "src": "12818:37:5", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 1639, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12839:5:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 1620, + "id": 1640, + "nodeType": "Return", + "src": "12832:12:5" + } + ] + } + }, + { + "id": 1683, + "nodeType": "UncheckedBlock", + "src": "12864:252:5", + "statements": [ + { + "assignments": [ + 1644 + ], + "declarations": [ + { + "constant": false, + "id": 1644, + "mutability": "mutable", + "name": "LHS", + "nameLocation": "12896:3:5", + "nodeType": "VariableDeclaration", + "scope": 1683, + "src": "12888:11:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1643, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12888:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1650, + "initialValue": { + "arguments": [ + { + "id": 1646, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1616, + "src": "12909:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1647, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1616, + "src": "12912:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1648, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "12915:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1645, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "12902:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12902:15:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12888:29:5" + }, + { + "assignments": [ + 1652 + ], + "declarations": [ + { + "constant": false, + "id": 1652, + "mutability": "mutable", + "name": "RHS", + "nameLocation": "12946:3:5", + "nodeType": "VariableDeclaration", + "scope": 1683, + "src": "12938:11:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1651, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12938:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1670, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 1656, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1614, + "src": "12973:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1657, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1614, + "src": "12976:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1658, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "12979:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1655, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "12966:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1659, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12966:15:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1660, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1614, + "src": "12983:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1661, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "12986:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1654, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "12959:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1662, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12959:29:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 1664, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1614, + "src": "12997:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1665, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 979, + "src": "13000:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1666, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "13003:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1663, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "12990:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1667, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12990:15:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1668, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "13007:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1653, + "name": "addmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -2, + "src": "12952:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1669, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12952:57:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12938:71:5" + }, + { + "expression": { + "id": 1677, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1671, + "name": "RHS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1652, + "src": "13033:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1673, + "name": "RHS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1652, + "src": "13046:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1674, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 982, + "src": "13051:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1675, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "13054:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1672, + "name": "addmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -2, + "src": "13039:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1676, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13039:17:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13033:23:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1678, + "nodeType": "ExpressionStatement", + "src": "13033:23:5" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1681, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1679, + "name": "LHS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1644, + "src": "13095:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 1680, + "name": "RHS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1652, + "src": "13102:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13095:10:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1620, + "id": 1682, + "nodeType": "Return", + "src": "13088:17:5" + } + ] + } + ] + }, + "documentation": { + "id": 1612, + "nodeType": "StructuredDocumentation", + "src": "12555:124:5", + "text": " @dev Check if a point in affine coordinates is on the curve (reject Neutral that is indeed on the curve)." + }, + "id": 1685, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ecAff_isOnCurve", + "nameLocation": "12693:15:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1617, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1614, + "mutability": "mutable", + "name": "x", + "nameLocation": "12717:1:5", + "nodeType": "VariableDeclaration", + "scope": 1685, + "src": "12709:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1613, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12709:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1616, + "mutability": "mutable", + "name": "y", + "nameLocation": "12728:1:5", + "nodeType": "VariableDeclaration", + "scope": 1685, + "src": "12720:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1615, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12720:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12708:22:5" + }, + "returnParameters": { + "id": 1620, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1619, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1685, + "src": "12754:4:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1618, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "12754:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "12753:6:5" + }, + "scope": 2309, + "src": "12684:438:5", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1772, + "nodeType": "Block", + "src": "13332:391:5", + "statements": [ + { + "assignments": [ + 1702 + ], + "declarations": [ + { + "constant": false, + "id": 1702, + "mutability": "mutable", + "name": "zz0", + "nameLocation": "13350:3:5", + "nodeType": "VariableDeclaration", + "scope": 1772, + "src": "13342:11:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1701, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13342:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1703, + "nodeType": "VariableDeclarationStatement", + "src": "13342:11:5" + }, + { + "assignments": [ + 1705 + ], + "declarations": [ + { + "constant": false, + "id": 1705, + "mutability": "mutable", + "name": "zzz0", + "nameLocation": "13371:4:5", + "nodeType": "VariableDeclaration", + "scope": 1772, + "src": "13363:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1704, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13363:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1706, + "nodeType": "VariableDeclarationStatement", + "src": "13363:12:5" + }, + { + "condition": { + "arguments": [ + { + "id": 1708, + "name": "x0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1688, + "src": "13403:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1709, + "name": "y0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "13407:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1707, + "name": "ecAff_IsZero", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1611, + "src": "13390:12:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256,uint256) pure returns (bool)" + } + }, + "id": 1710, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13390:20:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1715, + "nodeType": "IfStatement", + "src": "13386:41:5", + "trueBody": { + "expression": { + "components": [ + { + "id": 1711, + "name": "x1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1692, + "src": "13420:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1712, + "name": "y1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1694, + "src": "13424:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1713, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "13419:8:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "functionReturnParameters": 1700, + "id": 1714, + "nodeType": "Return", + "src": "13412:15:5" + } + }, + { + "condition": { + "arguments": [ + { + "id": 1717, + "name": "x1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1692, + "src": "13454:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1718, + "name": "y1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1694, + "src": "13458:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1716, + "name": "ecAff_IsZero", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1611, + "src": "13441:12:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256,uint256) pure returns (bool)" + } + }, + "id": 1719, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13441:20:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1724, + "nodeType": "IfStatement", + "src": "13437:41:5", + "trueBody": { + "expression": { + "components": [ + { + "id": 1720, + "name": "x0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1688, + "src": "13471:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1721, + "name": "y0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "13475:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1722, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "13470:8:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "functionReturnParameters": 1700, + "id": 1723, + "nodeType": "Return", + "src": "13463:15:5" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1733, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1727, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1725, + "name": "x0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1688, + "src": "13492:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 1726, + "name": "x1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1692, + "src": "13496:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13492:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 1728, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "13491:8:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1731, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1729, + "name": "y0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "13502:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 1730, + "name": "y1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1694, + "src": "13506:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13502:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 1732, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "13501:8:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "13491:18:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1763, + "nodeType": "Block", + "src": "13591:78:5", + "statements": [ + { + "expression": { + "id": 1761, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "components": [ + { + "id": 1748, + "name": "x0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1688, + "src": "13606:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1749, + "name": "y0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "13610:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1750, + "name": "zz0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1702, + "src": "13614:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1751, + "name": "zzz0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1705, + "src": "13619:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1752, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "13605:19:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256,uint256,uint256)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1754, + "name": "x0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1688, + "src": "13637:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1755, + "name": "y0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "13641:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "31", + "id": 1756, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13645:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + { + "hexValue": "31", + "id": 1757, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13648:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + { + "id": 1758, + "name": "x1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1692, + "src": "13651:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1759, + "name": "y1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1694, + "src": "13655:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1753, + "name": "ecZZ_AddN", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1544, + "src": "13627:9:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256,uint256,uint256,uint256) pure returns (uint256,uint256,uint256,uint256)" + } + }, + "id": 1760, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13627:31:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256,uint256,uint256)" + } + }, + "src": "13605:53:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1762, + "nodeType": "ExpressionStatement", + "src": "13605:53:5" + } + ] + }, + "id": 1764, + "nodeType": "IfStatement", + "src": "13488:181:5", + "trueBody": { + "id": 1747, + "nodeType": "Block", + "src": "13511:67:5", + "statements": [ + { + "expression": { + "id": 1745, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "components": [ + { + "id": 1734, + "name": "x0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1688, + "src": "13526:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1735, + "name": "y0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "13530:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1736, + "name": "zz0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1702, + "src": "13534:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1737, + "name": "zzz0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1705, + "src": "13539:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1738, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "13525:19:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256,uint256,uint256)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1740, + "name": "x0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1688, + "src": "13556:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1741, + "name": "y0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "13560:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "31", + "id": 1742, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13563:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + { + "hexValue": "31", + "id": 1743, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13565:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "id": 1739, + "name": "ecZZ_Dbl", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1500, + "src": "13547:8:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256,uint256,uint256,uint256)" + } + }, + "id": 1744, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13547:20:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256,uint256,uint256)" + } + }, + "src": "13525:42:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1746, + "nodeType": "ExpressionStatement", + "src": "13525:42:5" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 1766, + "name": "x0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1688, + "src": "13698:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1767, + "name": "y0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "13702:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1768, + "name": "zz0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1702, + "src": "13706:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1769, + "name": "zzz0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1705, + "src": "13711:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1765, + "name": "ecZZ_SetAff", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1471, + "src": "13686:11:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256,uint256) view returns (uint256,uint256)" + } + }, + "id": 1770, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13686:30:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "functionReturnParameters": 1700, + "id": 1771, + "nodeType": "Return", + "src": "13679:37:5" + } + ] + }, + "documentation": { + "id": 1686, + "nodeType": "StructuredDocumentation", + "src": "13128:90:5", + "text": " @dev Add two elliptic curve points in affine coordinates. Deal with P=Q" + }, + "id": 1773, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ecAff_add", + "nameLocation": "13233:9:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1695, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1688, + "mutability": "mutable", + "name": "x0", + "nameLocation": "13251:2:5", + "nodeType": "VariableDeclaration", + "scope": 1773, + "src": "13243:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1687, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13243:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1690, + "mutability": "mutable", + "name": "y0", + "nameLocation": "13263:2:5", + "nodeType": "VariableDeclaration", + "scope": 1773, + "src": "13255:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1689, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13255:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1692, + "mutability": "mutable", + "name": "x1", + "nameLocation": "13275:2:5", + "nodeType": "VariableDeclaration", + "scope": 1773, + "src": "13267:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1691, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13267:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1694, + "mutability": "mutable", + "name": "y1", + "nameLocation": "13287:2:5", + "nodeType": "VariableDeclaration", + "scope": 1773, + "src": "13279:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1693, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13279:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "13242:48:5" + }, + "returnParameters": { + "id": 1700, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1697, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1773, + "src": "13314:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1696, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13314:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1699, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1773, + "src": "13323:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1698, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13323:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "13313:18:5" + }, + "scope": 2309, + "src": "13224:499:5", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1866, + "nodeType": "Block", + "src": "14088:6394:5", + "statements": [ + { + "assignments": [ + 1788 + ], + "declarations": [ + { + "constant": false, + "id": 1788, + "mutability": "mutable", + "name": "zz", + "nameLocation": "14106:2:5", + "nodeType": "VariableDeclaration", + "scope": 1866, + "src": "14098:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1787, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14098:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1789, + "nodeType": "VariableDeclarationStatement", + "src": "14098:10:5" + }, + { + "assignments": [ + 1791 + ], + "declarations": [ + { + "constant": false, + "id": 1791, + "mutability": "mutable", + "name": "zzz", + "nameLocation": "14126:3:5", + "nodeType": "VariableDeclaration", + "scope": 1866, + "src": "14118:11:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1790, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14118:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1792, + "nodeType": "VariableDeclarationStatement", + "src": "14118:11:5" + }, + { + "assignments": [ + 1794 + ], + "declarations": [ + { + "constant": false, + "id": 1794, + "mutability": "mutable", + "name": "Y", + "nameLocation": "14147:1:5", + "nodeType": "VariableDeclaration", + "scope": 1866, + "src": "14139:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1793, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14139:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1795, + "nodeType": "VariableDeclarationStatement", + "src": "14139:9:5" + }, + { + "assignments": [ + 1797 + ], + "declarations": [ + { + "constant": false, + "id": 1797, + "mutability": "mutable", + "name": "index", + "nameLocation": "14166:5:5", + "nodeType": "VariableDeclaration", + "scope": 1866, + "src": "14158:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1796, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14158:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1799, + "initialValue": { + "hexValue": "323535", + "id": 1798, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14174:3:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_255_by_1", + "typeString": "int_const 255" + }, + "value": "255" + }, + "nodeType": "VariableDeclarationStatement", + "src": "14158:19:5" + }, + { + "assignments": [ + 1801 + ], + "declarations": [ + { + "constant": false, + "id": 1801, + "mutability": "mutable", + "name": "H0", + "nameLocation": "14195:2:5", + "nodeType": "VariableDeclaration", + "scope": 1866, + "src": "14187:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1800, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14187:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1802, + "nodeType": "VariableDeclarationStatement", + "src": "14187:10:5" + }, + { + "assignments": [ + 1804 + ], + "declarations": [ + { + "constant": false, + "id": 1804, + "mutability": "mutable", + "name": "H1", + "nameLocation": "14215:2:5", + "nodeType": "VariableDeclaration", + "scope": 1866, + "src": "14207:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1803, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14207:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1805, + "nodeType": "VariableDeclarationStatement", + "src": "14207:10:5" + }, + { + "id": 1863, + "nodeType": "UncheckedBlock", + "src": "14228:6213:5", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1812, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1808, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1806, + "name": "scalar_u", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1780, + "src": "14256:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1807, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14268:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14256:13:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1811, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1809, + "name": "scalar_v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1782, + "src": "14273:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1810, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14285:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14273:13:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "14256:30:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1815, + "nodeType": "IfStatement", + "src": "14252:44:5", + "trueBody": { + "expression": { + "hexValue": "30", + "id": 1813, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14295:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 1786, + "id": 1814, + "nodeType": "Return", + "src": "14288:8:5" + } + }, + { + "expression": { + "id": 1825, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "components": [ + { + "id": 1816, + "name": "H0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1801, + "src": "14312:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1817, + "name": "H1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1804, + "src": "14316:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1818, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "14311:8:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1820, + "name": "gx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "14332:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1821, + "name": "gy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 988, + "src": "14336:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1822, + "name": "Q0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1776, + "src": "14340:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1823, + "name": "Q1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1778, + "src": "14344:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1819, + "name": "ecAff_add", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1773, + "src": "14322:9:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256,uint256) view returns (uint256,uint256)" + } + }, + "id": 1824, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14322:25:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "src": "14311:36:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1826, + "nodeType": "ExpressionStatement", + "src": "14311:36:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1835, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1829, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1827, + "name": "H0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1801, + "src": "14366:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1828, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14370:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14366:5:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 1830, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "14365:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1833, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1831, + "name": "H1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1804, + "src": "14375:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1832, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14379:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14375:5:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 1834, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "14374:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "14365:16:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1861, + "nodeType": "IfStatement", + "src": "14362:211:5", + "trueBody": { + "id": 1860, + "nodeType": "Block", + "src": "14410:163:5", + "statements": [ + { + "expression": { + "id": 1844, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1836, + "name": "scalar_u", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1780, + "src": "14428:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1838, + "name": "scalar_u", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1780, + "src": "14444:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1841, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1839, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 991, + "src": "14454:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 1840, + "name": "scalar_v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1782, + "src": "14456:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14454:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1842, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 991, + "src": "14466:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1837, + "name": "addmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -2, + "src": "14437:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_addmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1843, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14437:31:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14428:40:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1845, + "nodeType": "ExpressionStatement", + "src": "14428:40:5" + }, + { + "expression": { + "id": 1848, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1846, + "name": "scalar_v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1782, + "src": "14486:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 1847, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14495:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14486:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1849, + "nodeType": "ExpressionStatement", + "src": "14486:10:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1856, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1852, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1850, + "name": "scalar_u", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1780, + "src": "14518:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1851, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14530:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14518:13:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1855, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1853, + "name": "scalar_v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1782, + "src": "14535:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1854, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14547:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14535:13:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "14518:30:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1859, + "nodeType": "IfStatement", + "src": "14514:44:5", + "trueBody": { + "expression": { + "hexValue": "30", + "id": 1857, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14557:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 1786, + "id": 1858, + "nodeType": "Return", + "src": "14550:8:5" + } + } + ] + } + }, + { + "AST": { + "nativeSrc": "14595:5821:5", + "nodeType": "YulBlock", + "src": "14595:5821:5", + "statements": [ + { + "body": { + "nativeSrc": "14874:2:5", + "nodeType": "YulBlock", + "src": "14874:2:5", + "statements": [] + }, + "condition": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "14706:2:5", + "nodeType": "YulIdentifier", + "src": "14706:2:5" + }, + { + "kind": "number", + "nativeSrc": "14710:1:5", + "nodeType": "YulLiteral", + "src": "14710:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "14703:2:5", + "nodeType": "YulIdentifier", + "src": "14703:2:5" + }, + "nativeSrc": "14703:9:5", + "nodeType": "YulFunctionCall", + "src": "14703:9:5" + }, + "nativeSrc": "14613:263:5", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "14713:160:5", + "nodeType": "YulBlock", + "src": "14713:160:5", + "statements": [ + { + "nativeSrc": "14735:22:5", + "nodeType": "YulAssignment", + "src": "14735:22:5", + "value": { + "arguments": [ + { + "name": "index", + "nativeSrc": "14748:5:5", + "nodeType": "YulIdentifier", + "src": "14748:5:5" + }, + { + "kind": "number", + "nativeSrc": "14755:1:5", + "nodeType": "YulLiteral", + "src": "14755:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "14744:3:5", + "nodeType": "YulIdentifier", + "src": "14744:3:5" + }, + "nativeSrc": "14744:13:5", + "nodeType": "YulFunctionCall", + "src": "14744:13:5" + }, + "variableNames": [ + { + "name": "index", + "nativeSrc": "14735:5:5", + "nodeType": "YulIdentifier", + "src": "14735:5:5" + } + ] + }, + { + "nativeSrc": "14778:77:5", + "nodeType": "YulAssignment", + "src": "14778:77:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14792:1:5", + "nodeType": "YulLiteral", + "src": "14792:1:5", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "14803:5:5", + "nodeType": "YulIdentifier", + "src": "14803:5:5" + }, + { + "name": "scalar_v", + "nativeSrc": "14810:8:5", + "nodeType": "YulIdentifier", + "src": "14810:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "14799:3:5", + "nodeType": "YulIdentifier", + "src": "14799:3:5" + }, + "nativeSrc": "14799:20:5", + "nodeType": "YulFunctionCall", + "src": "14799:20:5" + }, + { + "kind": "number", + "nativeSrc": "14821:1:5", + "nodeType": "YulLiteral", + "src": "14821:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "14795:3:5", + "nodeType": "YulIdentifier", + "src": "14795:3:5" + }, + "nativeSrc": "14795:28:5", + "nodeType": "YulFunctionCall", + "src": "14795:28:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "14788:3:5", + "nodeType": "YulIdentifier", + "src": "14788:3:5" + }, + "nativeSrc": "14788:36:5", + "nodeType": "YulFunctionCall", + "src": "14788:36:5" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "14834:5:5", + "nodeType": "YulIdentifier", + "src": "14834:5:5" + }, + { + "name": "scalar_u", + "nativeSrc": "14841:8:5", + "nodeType": "YulIdentifier", + "src": "14841:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "14830:3:5", + "nodeType": "YulIdentifier", + "src": "14830:3:5" + }, + "nativeSrc": "14830:20:5", + "nodeType": "YulFunctionCall", + "src": "14830:20:5" + }, + { + "kind": "number", + "nativeSrc": "14852:1:5", + "nodeType": "YulLiteral", + "src": "14852:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "14826:3:5", + "nodeType": "YulIdentifier", + "src": "14826:3:5" + }, + "nativeSrc": "14826:28:5", + "nodeType": "YulFunctionCall", + "src": "14826:28:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14784:3:5", + "nodeType": "YulIdentifier", + "src": "14784:3:5" + }, + "nativeSrc": "14784:71:5", + "nodeType": "YulFunctionCall", + "src": "14784:71:5" + }, + "variableNames": [ + { + "name": "T4", + "nativeSrc": "14778:2:5", + "nodeType": "YulIdentifier", + "src": "14778:2:5" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "14617:85:5", + "nodeType": "YulBlock", + "src": "14617:85:5", + "statements": [ + { + "nativeSrc": "14619:81:5", + "nodeType": "YulVariableDeclaration", + "src": "14619:81:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14637:1:5", + "nodeType": "YulLiteral", + "src": "14637:1:5", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "14648:5:5", + "nodeType": "YulIdentifier", + "src": "14648:5:5" + }, + { + "name": "scalar_v", + "nativeSrc": "14655:8:5", + "nodeType": "YulIdentifier", + "src": "14655:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "14644:3:5", + "nodeType": "YulIdentifier", + "src": "14644:3:5" + }, + "nativeSrc": "14644:20:5", + "nodeType": "YulFunctionCall", + "src": "14644:20:5" + }, + { + "kind": "number", + "nativeSrc": "14666:1:5", + "nodeType": "YulLiteral", + "src": "14666:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "14640:3:5", + "nodeType": "YulIdentifier", + "src": "14640:3:5" + }, + "nativeSrc": "14640:28:5", + "nodeType": "YulFunctionCall", + "src": "14640:28:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "14633:3:5", + "nodeType": "YulIdentifier", + "src": "14633:3:5" + }, + "nativeSrc": "14633:36:5", + "nodeType": "YulFunctionCall", + "src": "14633:36:5" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "14679:5:5", + "nodeType": "YulIdentifier", + "src": "14679:5:5" + }, + { + "name": "scalar_u", + "nativeSrc": "14686:8:5", + "nodeType": "YulIdentifier", + "src": "14686:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "14675:3:5", + "nodeType": "YulIdentifier", + "src": "14675:3:5" + }, + "nativeSrc": "14675:20:5", + "nodeType": "YulFunctionCall", + "src": "14675:20:5" + }, + { + "kind": "number", + "nativeSrc": "14697:1:5", + "nodeType": "YulLiteral", + "src": "14697:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "14671:3:5", + "nodeType": "YulIdentifier", + "src": "14671:3:5" + }, + "nativeSrc": "14671:28:5", + "nodeType": "YulFunctionCall", + "src": "14671:28:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14629:3:5", + "nodeType": "YulIdentifier", + "src": "14629:3:5" + }, + "nativeSrc": "14629:71:5", + "nodeType": "YulFunctionCall", + "src": "14629:71:5" + }, + "variables": [ + { + "name": "T4", + "nativeSrc": "14623:2:5", + "nodeType": "YulTypedName", + "src": "14623:2:5", + "type": "" + } + ] + } + ] + }, + "src": "14613:263:5" + }, + { + "nativeSrc": "14893:77:5", + "nodeType": "YulAssignment", + "src": "14893:77:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14907:1:5", + "nodeType": "YulLiteral", + "src": "14907:1:5", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "14918:5:5", + "nodeType": "YulIdentifier", + "src": "14918:5:5" + }, + { + "name": "scalar_v", + "nativeSrc": "14925:8:5", + "nodeType": "YulIdentifier", + "src": "14925:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "14914:3:5", + "nodeType": "YulIdentifier", + "src": "14914:3:5" + }, + "nativeSrc": "14914:20:5", + "nodeType": "YulFunctionCall", + "src": "14914:20:5" + }, + { + "kind": "number", + "nativeSrc": "14936:1:5", + "nodeType": "YulLiteral", + "src": "14936:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "14910:3:5", + "nodeType": "YulIdentifier", + "src": "14910:3:5" + }, + "nativeSrc": "14910:28:5", + "nodeType": "YulFunctionCall", + "src": "14910:28:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "14903:3:5", + "nodeType": "YulIdentifier", + "src": "14903:3:5" + }, + "nativeSrc": "14903:36:5", + "nodeType": "YulFunctionCall", + "src": "14903:36:5" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "14949:5:5", + "nodeType": "YulIdentifier", + "src": "14949:5:5" + }, + { + "name": "scalar_u", + "nativeSrc": "14956:8:5", + "nodeType": "YulIdentifier", + "src": "14956:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "14945:3:5", + "nodeType": "YulIdentifier", + "src": "14945:3:5" + }, + "nativeSrc": "14945:20:5", + "nodeType": "YulFunctionCall", + "src": "14945:20:5" + }, + { + "kind": "number", + "nativeSrc": "14967:1:5", + "nodeType": "YulLiteral", + "src": "14967:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "14941:3:5", + "nodeType": "YulIdentifier", + "src": "14941:3:5" + }, + "nativeSrc": "14941:28:5", + "nodeType": "YulFunctionCall", + "src": "14941:28:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14899:3:5", + "nodeType": "YulIdentifier", + "src": "14899:3:5" + }, + "nativeSrc": "14899:71:5", + "nodeType": "YulFunctionCall", + "src": "14899:71:5" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "14893:2:5", + "nodeType": "YulIdentifier", + "src": "14893:2:5" + } + ] + }, + { + "body": { + "nativeSrc": "15001:75:5", + "nodeType": "YulBlock", + "src": "15001:75:5", + "statements": [ + { + "nativeSrc": "15023:7:5", + "nodeType": "YulAssignment", + "src": "15023:7:5", + "value": { + "name": "gx", + "nativeSrc": "15028:2:5", + "nodeType": "YulIdentifier", + "src": "15028:2:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "15023:1:5", + "nodeType": "YulIdentifier", + "src": "15023:1:5" + } + ] + }, + { + "nativeSrc": "15051:7:5", + "nodeType": "YulAssignment", + "src": "15051:7:5", + "value": { + "name": "gy", + "nativeSrc": "15056:2:5", + "nodeType": "YulIdentifier", + "src": "15056:2:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "15051:1:5", + "nodeType": "YulIdentifier", + "src": "15051:1:5" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "zz", + "nativeSrc": "14994:2:5", + "nodeType": "YulIdentifier", + "src": "14994:2:5" + }, + { + "kind": "number", + "nativeSrc": "14998:1:5", + "nodeType": "YulLiteral", + "src": "14998:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "14991:2:5", + "nodeType": "YulIdentifier", + "src": "14991:2:5" + }, + "nativeSrc": "14991:9:5", + "nodeType": "YulFunctionCall", + "src": "14991:9:5" + }, + "nativeSrc": "14988:88:5", + "nodeType": "YulIf", + "src": "14988:88:5" + }, + { + "body": { + "nativeSrc": "15106:75:5", + "nodeType": "YulBlock", + "src": "15106:75:5", + "statements": [ + { + "nativeSrc": "15128:7:5", + "nodeType": "YulAssignment", + "src": "15128:7:5", + "value": { + "name": "Q0", + "nativeSrc": "15133:2:5", + "nodeType": "YulIdentifier", + "src": "15133:2:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "15128:1:5", + "nodeType": "YulIdentifier", + "src": "15128:1:5" + } + ] + }, + { + "nativeSrc": "15156:7:5", + "nodeType": "YulAssignment", + "src": "15156:7:5", + "value": { + "name": "Q1", + "nativeSrc": "15161:2:5", + "nodeType": "YulIdentifier", + "src": "15161:2:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "15156:1:5", + "nodeType": "YulIdentifier", + "src": "15156:1:5" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "zz", + "nativeSrc": "15099:2:5", + "nodeType": "YulIdentifier", + "src": "15099:2:5" + }, + { + "kind": "number", + "nativeSrc": "15103:1:5", + "nodeType": "YulLiteral", + "src": "15103:1:5", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "15096:2:5", + "nodeType": "YulIdentifier", + "src": "15096:2:5" + }, + "nativeSrc": "15096:9:5", + "nodeType": "YulFunctionCall", + "src": "15096:9:5" + }, + "nativeSrc": "15093:88:5", + "nodeType": "YulIf", + "src": "15093:88:5" + }, + { + "body": { + "nativeSrc": "15211:75:5", + "nodeType": "YulBlock", + "src": "15211:75:5", + "statements": [ + { + "nativeSrc": "15233:7:5", + "nodeType": "YulAssignment", + "src": "15233:7:5", + "value": { + "name": "H0", + "nativeSrc": "15238:2:5", + "nodeType": "YulIdentifier", + "src": "15238:2:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "15233:1:5", + "nodeType": "YulIdentifier", + "src": "15233:1:5" + } + ] + }, + { + "nativeSrc": "15261:7:5", + "nodeType": "YulAssignment", + "src": "15261:7:5", + "value": { + "name": "H1", + "nativeSrc": "15266:2:5", + "nodeType": "YulIdentifier", + "src": "15266:2:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "15261:1:5", + "nodeType": "YulIdentifier", + "src": "15261:1:5" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "zz", + "nativeSrc": "15204:2:5", + "nodeType": "YulIdentifier", + "src": "15204:2:5" + }, + { + "kind": "number", + "nativeSrc": "15208:1:5", + "nodeType": "YulLiteral", + "src": "15208:1:5", + "type": "", + "value": "3" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "15201:2:5", + "nodeType": "YulIdentifier", + "src": "15201:2:5" + }, + "nativeSrc": "15201:9:5", + "nodeType": "YulFunctionCall", + "src": "15201:9:5" + }, + "nativeSrc": "15198:88:5", + "nodeType": "YulIf", + "src": "15198:88:5" + }, + { + "nativeSrc": "15304:22:5", + "nodeType": "YulAssignment", + "src": "15304:22:5", + "value": { + "arguments": [ + { + "name": "index", + "nativeSrc": "15317:5:5", + "nodeType": "YulIdentifier", + "src": "15317:5:5" + }, + { + "kind": "number", + "nativeSrc": "15324:1:5", + "nodeType": "YulLiteral", + "src": "15324:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "15313:3:5", + "nodeType": "YulIdentifier", + "src": "15313:3:5" + }, + "nativeSrc": "15313:13:5", + "nodeType": "YulFunctionCall", + "src": "15313:13:5" + }, + "variableNames": [ + { + "name": "index", + "nativeSrc": "15304:5:5", + "nodeType": "YulIdentifier", + "src": "15304:5:5" + } + ] + }, + { + "nativeSrc": "15343:7:5", + "nodeType": "YulAssignment", + "src": "15343:7:5", + "value": { + "kind": "number", + "nativeSrc": "15349:1:5", + "nodeType": "YulLiteral", + "src": "15349:1:5", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "15343:2:5", + "nodeType": "YulIdentifier", + "src": "15343:2:5" + } + ] + }, + { + "nativeSrc": "15367:8:5", + "nodeType": "YulAssignment", + "src": "15367:8:5", + "value": { + "kind": "number", + "nativeSrc": "15374:1:5", + "nodeType": "YulLiteral", + "src": "15374:1:5", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "zzz", + "nativeSrc": "15367:3:5", + "nodeType": "YulIdentifier", + "src": "15367:3:5" + } + ] + }, + { + "body": { + "nativeSrc": "15446:3972:5", + "nodeType": "YulBlock", + "src": "15446:3972:5", + "statements": [ + { + "nativeSrc": "15508:25:5", + "nodeType": "YulVariableDeclaration", + "src": "15508:25:5", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "15525:1:5", + "nodeType": "YulLiteral", + "src": "15525:1:5", + "type": "", + "value": "2" + }, + { + "name": "Y", + "nativeSrc": "15528:1:5", + "nodeType": "YulIdentifier", + "src": "15528:1:5" + }, + { + "name": "p", + "nativeSrc": "15531:1:5", + "nodeType": "YulIdentifier", + "src": "15531:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "15518:6:5", + "nodeType": "YulIdentifier", + "src": "15518:6:5" + }, + "nativeSrc": "15518:15:5", + "nodeType": "YulFunctionCall", + "src": "15518:15:5" + }, + "variables": [ + { + "name": "T1", + "nativeSrc": "15512:2:5", + "nodeType": "YulTypedName", + "src": "15512:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "15573:27:5", + "nodeType": "YulVariableDeclaration", + "src": "15573:27:5", + "value": { + "arguments": [ + { + "name": "T1", + "nativeSrc": "15590:2:5", + "nodeType": "YulIdentifier", + "src": "15590:2:5" + }, + { + "name": "T1", + "nativeSrc": "15594:2:5", + "nodeType": "YulIdentifier", + "src": "15594:2:5" + }, + { + "name": "p", + "nativeSrc": "15598:1:5", + "nodeType": "YulIdentifier", + "src": "15598:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "15583:6:5", + "nodeType": "YulIdentifier", + "src": "15583:6:5" + }, + "nativeSrc": "15583:17:5", + "nodeType": "YulFunctionCall", + "src": "15583:17:5" + }, + "variables": [ + { + "name": "T2", + "nativeSrc": "15577:2:5", + "nodeType": "YulTypedName", + "src": "15577:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "15630:26:5", + "nodeType": "YulVariableDeclaration", + "src": "15630:26:5", + "value": { + "arguments": [ + { + "name": "X", + "nativeSrc": "15647:1:5", + "nodeType": "YulIdentifier", + "src": "15647:1:5" + }, + { + "name": "T2", + "nativeSrc": "15650:2:5", + "nodeType": "YulIdentifier", + "src": "15650:2:5" + }, + { + "name": "p", + "nativeSrc": "15654:1:5", + "nodeType": "YulIdentifier", + "src": "15654:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "15640:6:5", + "nodeType": "YulIdentifier", + "src": "15640:6:5" + }, + "nativeSrc": "15640:16:5", + "nodeType": "YulFunctionCall", + "src": "15640:16:5" + }, + "variables": [ + { + "name": "T3", + "nativeSrc": "15634:2:5", + "nodeType": "YulTypedName", + "src": "15634:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "15689:23:5", + "nodeType": "YulAssignment", + "src": "15689:23:5", + "value": { + "arguments": [ + { + "name": "T1", + "nativeSrc": "15702:2:5", + "nodeType": "YulIdentifier", + "src": "15702:2:5" + }, + { + "name": "T2", + "nativeSrc": "15706:2:5", + "nodeType": "YulIdentifier", + "src": "15706:2:5" + }, + { + "name": "p", + "nativeSrc": "15710:1:5", + "nodeType": "YulIdentifier", + "src": "15710:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "15695:6:5", + "nodeType": "YulIdentifier", + "src": "15695:6:5" + }, + "nativeSrc": "15695:17:5", + "nodeType": "YulFunctionCall", + "src": "15695:17:5" + }, + "variableNames": [ + { + "name": "T1", + "nativeSrc": "15689:2:5", + "nodeType": "YulIdentifier", + "src": "15689:2:5" + } + ] + }, + { + "nativeSrc": "15741:77:5", + "nodeType": "YulVariableDeclaration", + "src": "15741:77:5", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "15758:1:5", + "nodeType": "YulLiteral", + "src": "15758:1:5", + "type": "", + "value": "3" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "X", + "nativeSrc": "15775:1:5", + "nodeType": "YulIdentifier", + "src": "15775:1:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "15782:1:5", + "nodeType": "YulIdentifier", + "src": "15782:1:5" + }, + { + "name": "zz", + "nativeSrc": "15785:2:5", + "nodeType": "YulIdentifier", + "src": "15785:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "15778:3:5", + "nodeType": "YulIdentifier", + "src": "15778:3:5" + }, + "nativeSrc": "15778:10:5", + "nodeType": "YulFunctionCall", + "src": "15778:10:5" + }, + { + "name": "p", + "nativeSrc": "15790:1:5", + "nodeType": "YulIdentifier", + "src": "15790:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "15768:6:5", + "nodeType": "YulIdentifier", + "src": "15768:6:5" + }, + "nativeSrc": "15768:24:5", + "nodeType": "YulFunctionCall", + "src": "15768:24:5" + }, + { + "arguments": [ + { + "name": "X", + "nativeSrc": "15801:1:5", + "nodeType": "YulIdentifier", + "src": "15801:1:5" + }, + { + "name": "zz", + "nativeSrc": "15804:2:5", + "nodeType": "YulIdentifier", + "src": "15804:2:5" + }, + { + "name": "p", + "nativeSrc": "15808:1:5", + "nodeType": "YulIdentifier", + "src": "15808:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "15794:6:5", + "nodeType": "YulIdentifier", + "src": "15794:6:5" + }, + "nativeSrc": "15794:16:5", + "nodeType": "YulFunctionCall", + "src": "15794:16:5" + }, + { + "name": "p", + "nativeSrc": "15812:1:5", + "nodeType": "YulIdentifier", + "src": "15812:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "15761:6:5", + "nodeType": "YulIdentifier", + "src": "15761:6:5" + }, + "nativeSrc": "15761:53:5", + "nodeType": "YulFunctionCall", + "src": "15761:53:5" + }, + { + "name": "p", + "nativeSrc": "15816:1:5", + "nodeType": "YulIdentifier", + "src": "15816:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "15751:6:5", + "nodeType": "YulIdentifier", + "src": "15751:6:5" + }, + "nativeSrc": "15751:67:5", + "nodeType": "YulFunctionCall", + "src": "15751:67:5" + }, + "variables": [ + { + "name": "T4", + "nativeSrc": "15745:2:5", + "nodeType": "YulTypedName", + "src": "15745:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "15863:25:5", + "nodeType": "YulAssignment", + "src": "15863:25:5", + "value": { + "arguments": [ + { + "name": "T1", + "nativeSrc": "15877:2:5", + "nodeType": "YulIdentifier", + "src": "15877:2:5" + }, + { + "name": "zzz", + "nativeSrc": "15881:3:5", + "nodeType": "YulIdentifier", + "src": "15881:3:5" + }, + { + "name": "p", + "nativeSrc": "15886:1:5", + "nodeType": "YulIdentifier", + "src": "15886:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "15870:6:5", + "nodeType": "YulIdentifier", + "src": "15870:6:5" + }, + "nativeSrc": "15870:18:5", + "nodeType": "YulFunctionCall", + "src": "15870:18:5" + }, + "variableNames": [ + { + "name": "zzz", + "nativeSrc": "15863:3:5", + "nodeType": "YulIdentifier", + "src": "15863:3:5" + } + ] + }, + { + "nativeSrc": "15923:23:5", + "nodeType": "YulAssignment", + "src": "15923:23:5", + "value": { + "arguments": [ + { + "name": "T2", + "nativeSrc": "15936:2:5", + "nodeType": "YulIdentifier", + "src": "15936:2:5" + }, + { + "name": "zz", + "nativeSrc": "15940:2:5", + "nodeType": "YulIdentifier", + "src": "15940:2:5" + }, + { + "name": "p", + "nativeSrc": "15944:1:5", + "nodeType": "YulIdentifier", + "src": "15944:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "15929:6:5", + "nodeType": "YulIdentifier", + "src": "15929:6:5" + }, + "nativeSrc": "15929:17:5", + "nodeType": "YulFunctionCall", + "src": "15929:17:5" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "15923:2:5", + "nodeType": "YulIdentifier", + "src": "15923:2:5" + } + ] + }, + { + "nativeSrc": "15988:57:5", + "nodeType": "YulAssignment", + "src": "15988:57:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "T4", + "nativeSrc": "16007:2:5", + "nodeType": "YulIdentifier", + "src": "16007:2:5" + }, + { + "name": "T4", + "nativeSrc": "16011:2:5", + "nodeType": "YulIdentifier", + "src": "16011:2:5" + }, + { + "name": "p", + "nativeSrc": "16015:1:5", + "nodeType": "YulIdentifier", + "src": "16015:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "16000:6:5", + "nodeType": "YulIdentifier", + "src": "16000:6:5" + }, + "nativeSrc": "16000:17:5", + "nodeType": "YulFunctionCall", + "src": "16000:17:5" + }, + { + "arguments": [ + { + "name": "minus_2", + "nativeSrc": "16026:7:5", + "nodeType": "YulIdentifier", + "src": "16026:7:5" + }, + { + "name": "T3", + "nativeSrc": "16035:2:5", + "nodeType": "YulIdentifier", + "src": "16035:2:5" + }, + { + "name": "p", + "nativeSrc": "16039:1:5", + "nodeType": "YulIdentifier", + "src": "16039:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "16019:6:5", + "nodeType": "YulIdentifier", + "src": "16019:6:5" + }, + "nativeSrc": "16019:22:5", + "nodeType": "YulFunctionCall", + "src": "16019:22:5" + }, + { + "name": "p", + "nativeSrc": "16043:1:5", + "nodeType": "YulIdentifier", + "src": "16043:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "15993:6:5", + "nodeType": "YulIdentifier", + "src": "15993:6:5" + }, + "nativeSrc": "15993:52:5", + "nodeType": "YulFunctionCall", + "src": "15993:52:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "15988:1:5", + "nodeType": "YulIdentifier", + "src": "15988:1:5" + } + ] + }, + { + "nativeSrc": "16078:45:5", + "nodeType": "YulAssignment", + "src": "16078:45:5", + "value": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "16091:2:5", + "nodeType": "YulIdentifier", + "src": "16091:2:5" + }, + { + "arguments": [ + { + "name": "X", + "nativeSrc": "16102:1:5", + "nodeType": "YulIdentifier", + "src": "16102:1:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "16109:1:5", + "nodeType": "YulIdentifier", + "src": "16109:1:5" + }, + { + "name": "T3", + "nativeSrc": "16112:2:5", + "nodeType": "YulIdentifier", + "src": "16112:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "16105:3:5", + "nodeType": "YulIdentifier", + "src": "16105:3:5" + }, + "nativeSrc": "16105:10:5", + "nodeType": "YulFunctionCall", + "src": "16105:10:5" + }, + { + "name": "p", + "nativeSrc": "16117:1:5", + "nodeType": "YulIdentifier", + "src": "16117:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "16095:6:5", + "nodeType": "YulIdentifier", + "src": "16095:6:5" + }, + "nativeSrc": "16095:24:5", + "nodeType": "YulFunctionCall", + "src": "16095:24:5" + }, + { + "name": "p", + "nativeSrc": "16121:1:5", + "nodeType": "YulIdentifier", + "src": "16121:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "16084:6:5", + "nodeType": "YulIdentifier", + "src": "16084:6:5" + }, + "nativeSrc": "16084:39:5", + "nodeType": "YulFunctionCall", + "src": "16084:39:5" + }, + "variableNames": [ + { + "name": "T2", + "nativeSrc": "16078:2:5", + "nodeType": "YulIdentifier", + "src": "16078:2:5" + } + ] + }, + { + "nativeSrc": "16163:36:5", + "nodeType": "YulAssignment", + "src": "16163:36:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "T1", + "nativeSrc": "16182:2:5", + "nodeType": "YulIdentifier", + "src": "16182:2:5" + }, + { + "name": "Y", + "nativeSrc": "16186:1:5", + "nodeType": "YulIdentifier", + "src": "16186:1:5" + }, + { + "name": "p", + "nativeSrc": "16189:1:5", + "nodeType": "YulIdentifier", + "src": "16189:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "16175:6:5", + "nodeType": "YulIdentifier", + "src": "16175:6:5" + }, + "nativeSrc": "16175:16:5", + "nodeType": "YulFunctionCall", + "src": "16175:16:5" + }, + { + "name": "T2", + "nativeSrc": "16193:2:5", + "nodeType": "YulIdentifier", + "src": "16193:2:5" + }, + { + "name": "p", + "nativeSrc": "16197:1:5", + "nodeType": "YulIdentifier", + "src": "16197:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "16168:6:5", + "nodeType": "YulIdentifier", + "src": "16168:6:5" + }, + "nativeSrc": "16168:31:5", + "nodeType": "YulFunctionCall", + "src": "16168:31:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "16163:1:5", + "nodeType": "YulIdentifier", + "src": "16163:1:5" + } + ] + }, + { + "nativeSrc": "16285:3115:5", + "nodeType": "YulBlock", + "src": "16285:3115:5", + "statements": [ + { + "nativeSrc": "16352:77:5", + "nodeType": "YulAssignment", + "src": "16352:77:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "16366:1:5", + "nodeType": "YulLiteral", + "src": "16366:1:5", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "16377:5:5", + "nodeType": "YulIdentifier", + "src": "16377:5:5" + }, + { + "name": "scalar_v", + "nativeSrc": "16384:8:5", + "nodeType": "YulIdentifier", + "src": "16384:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "16373:3:5", + "nodeType": "YulIdentifier", + "src": "16373:3:5" + }, + "nativeSrc": "16373:20:5", + "nodeType": "YulFunctionCall", + "src": "16373:20:5" + }, + { + "kind": "number", + "nativeSrc": "16395:1:5", + "nodeType": "YulLiteral", + "src": "16395:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "16369:3:5", + "nodeType": "YulIdentifier", + "src": "16369:3:5" + }, + "nativeSrc": "16369:28:5", + "nodeType": "YulFunctionCall", + "src": "16369:28:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "16362:3:5", + "nodeType": "YulIdentifier", + "src": "16362:3:5" + }, + "nativeSrc": "16362:36:5", + "nodeType": "YulFunctionCall", + "src": "16362:36:5" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "16408:5:5", + "nodeType": "YulIdentifier", + "src": "16408:5:5" + }, + { + "name": "scalar_u", + "nativeSrc": "16415:8:5", + "nodeType": "YulIdentifier", + "src": "16415:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "16404:3:5", + "nodeType": "YulIdentifier", + "src": "16404:3:5" + }, + "nativeSrc": "16404:20:5", + "nodeType": "YulFunctionCall", + "src": "16404:20:5" + }, + { + "kind": "number", + "nativeSrc": "16426:1:5", + "nodeType": "YulLiteral", + "src": "16426:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "16400:3:5", + "nodeType": "YulIdentifier", + "src": "16400:3:5" + }, + "nativeSrc": "16400:28:5", + "nodeType": "YulFunctionCall", + "src": "16400:28:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16358:3:5", + "nodeType": "YulIdentifier", + "src": "16358:3:5" + }, + "nativeSrc": "16358:71:5", + "nodeType": "YulFunctionCall", + "src": "16358:71:5" + }, + "variableNames": [ + { + "name": "T4", + "nativeSrc": "16352:2:5", + "nodeType": "YulIdentifier", + "src": "16352:2:5" + } + ] + }, + { + "body": { + "nativeSrc": "16469:134:5", + "nodeType": "YulBlock", + "src": "16469:134:5", + "statements": [ + { + "nativeSrc": "16499:14:5", + "nodeType": "YulAssignment", + "src": "16499:14:5", + "value": { + "arguments": [ + { + "name": "p", + "nativeSrc": "16508:1:5", + "nodeType": "YulIdentifier", + "src": "16508:1:5" + }, + { + "name": "Y", + "nativeSrc": "16511:1:5", + "nodeType": "YulIdentifier", + "src": "16511:1:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "16504:3:5", + "nodeType": "YulIdentifier", + "src": "16504:3:5" + }, + "nativeSrc": "16504:9:5", + "nodeType": "YulFunctionCall", + "src": "16504:9:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "16499:1:5", + "nodeType": "YulIdentifier", + "src": "16499:1:5" + } + ] + }, + { + "nativeSrc": "16569:8:5", + "nodeType": "YulContinue", + "src": "16569:8:5" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "16465:2:5", + "nodeType": "YulIdentifier", + "src": "16465:2:5" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "16458:6:5", + "nodeType": "YulIdentifier", + "src": "16458:6:5" + }, + "nativeSrc": "16458:10:5", + "nodeType": "YulFunctionCall", + "src": "16458:10:5" + }, + "nativeSrc": "16455:148:5", + "nodeType": "YulIf", + "src": "16455:148:5" + }, + { + "body": { + "nativeSrc": "16654:101:5", + "nodeType": "YulBlock", + "src": "16654:101:5", + "statements": [ + { + "nativeSrc": "16684:8:5", + "nodeType": "YulAssignment", + "src": "16684:8:5", + "value": { + "name": "gx", + "nativeSrc": "16690:2:5", + "nodeType": "YulIdentifier", + "src": "16690:2:5" + }, + "variableNames": [ + { + "name": "T1", + "nativeSrc": "16684:2:5", + "nodeType": "YulIdentifier", + "src": "16684:2:5" + } + ] + }, + { + "nativeSrc": "16721:8:5", + "nodeType": "YulAssignment", + "src": "16721:8:5", + "value": { + "name": "gy", + "nativeSrc": "16727:2:5", + "nodeType": "YulIdentifier", + "src": "16727:2:5" + }, + "variableNames": [ + { + "name": "T2", + "nativeSrc": "16721:2:5", + "nodeType": "YulIdentifier", + "src": "16721:2:5" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "16647:2:5", + "nodeType": "YulIdentifier", + "src": "16647:2:5" + }, + { + "kind": "number", + "nativeSrc": "16651:1:5", + "nodeType": "YulLiteral", + "src": "16651:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "16644:2:5", + "nodeType": "YulIdentifier", + "src": "16644:2:5" + }, + "nativeSrc": "16644:9:5", + "nodeType": "YulFunctionCall", + "src": "16644:9:5" + }, + "nativeSrc": "16641:114:5", + "nodeType": "YulIf", + "src": "16641:114:5" + }, + { + "body": { + "nativeSrc": "16793:101:5", + "nodeType": "YulBlock", + "src": "16793:101:5", + "statements": [ + { + "nativeSrc": "16823:8:5", + "nodeType": "YulAssignment", + "src": "16823:8:5", + "value": { + "name": "Q0", + "nativeSrc": "16829:2:5", + "nodeType": "YulIdentifier", + "src": "16829:2:5" + }, + "variableNames": [ + { + "name": "T1", + "nativeSrc": "16823:2:5", + "nodeType": "YulIdentifier", + "src": "16823:2:5" + } + ] + }, + { + "nativeSrc": "16860:8:5", + "nodeType": "YulAssignment", + "src": "16860:8:5", + "value": { + "name": "Q1", + "nativeSrc": "16866:2:5", + "nodeType": "YulIdentifier", + "src": "16866:2:5" + }, + "variableNames": [ + { + "name": "T2", + "nativeSrc": "16860:2:5", + "nodeType": "YulIdentifier", + "src": "16860:2:5" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "16786:2:5", + "nodeType": "YulIdentifier", + "src": "16786:2:5" + }, + { + "kind": "number", + "nativeSrc": "16790:1:5", + "nodeType": "YulLiteral", + "src": "16790:1:5", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "16783:2:5", + "nodeType": "YulIdentifier", + "src": "16783:2:5" + }, + "nativeSrc": "16783:9:5", + "nodeType": "YulFunctionCall", + "src": "16783:9:5" + }, + "nativeSrc": "16780:114:5", + "nodeType": "YulIf", + "src": "16780:114:5" + }, + { + "body": { + "nativeSrc": "16932:101:5", + "nodeType": "YulBlock", + "src": "16932:101:5", + "statements": [ + { + "nativeSrc": "16962:8:5", + "nodeType": "YulAssignment", + "src": "16962:8:5", + "value": { + "name": "H0", + "nativeSrc": "16968:2:5", + "nodeType": "YulIdentifier", + "src": "16968:2:5" + }, + "variableNames": [ + { + "name": "T1", + "nativeSrc": "16962:2:5", + "nodeType": "YulIdentifier", + "src": "16962:2:5" + } + ] + }, + { + "nativeSrc": "16999:8:5", + "nodeType": "YulAssignment", + "src": "16999:8:5", + "value": { + "name": "H1", + "nativeSrc": "17005:2:5", + "nodeType": "YulIdentifier", + "src": "17005:2:5" + }, + "variableNames": [ + { + "name": "T2", + "nativeSrc": "16999:2:5", + "nodeType": "YulIdentifier", + "src": "16999:2:5" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "16925:2:5", + "nodeType": "YulIdentifier", + "src": "16925:2:5" + }, + { + "kind": "number", + "nativeSrc": "16929:1:5", + "nodeType": "YulLiteral", + "src": "16929:1:5", + "type": "", + "value": "3" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "16922:2:5", + "nodeType": "YulIdentifier", + "src": "16922:2:5" + }, + "nativeSrc": "16922:9:5", + "nodeType": "YulFunctionCall", + "src": "16922:9:5" + }, + "nativeSrc": "16919:114:5", + "nodeType": "YulIf", + "src": "16919:114:5" + }, + { + "body": { + "nativeSrc": "17072:209:5", + "nodeType": "YulBlock", + "src": "17072:209:5", + "statements": [ + { + "nativeSrc": "17102:7:5", + "nodeType": "YulAssignment", + "src": "17102:7:5", + "value": { + "name": "T1", + "nativeSrc": "17107:2:5", + "nodeType": "YulIdentifier", + "src": "17107:2:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "17102:1:5", + "nodeType": "YulIdentifier", + "src": "17102:1:5" + } + ] + }, + { + "nativeSrc": "17138:7:5", + "nodeType": "YulAssignment", + "src": "17138:7:5", + "value": { + "name": "T2", + "nativeSrc": "17143:2:5", + "nodeType": "YulIdentifier", + "src": "17143:2:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "17138:1:5", + "nodeType": "YulIdentifier", + "src": "17138:1:5" + } + ] + }, + { + "nativeSrc": "17174:7:5", + "nodeType": "YulAssignment", + "src": "17174:7:5", + "value": { + "kind": "number", + "nativeSrc": "17180:1:5", + "nodeType": "YulLiteral", + "src": "17180:1:5", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "17174:2:5", + "nodeType": "YulIdentifier", + "src": "17174:2:5" + } + ] + }, + { + "nativeSrc": "17210:8:5", + "nodeType": "YulAssignment", + "src": "17210:8:5", + "value": { + "kind": "number", + "nativeSrc": "17217:1:5", + "nodeType": "YulLiteral", + "src": "17217:1:5", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "zzz", + "nativeSrc": "17210:3:5", + "nodeType": "YulIdentifier", + "src": "17210:3:5" + } + ] + }, + { + "nativeSrc": "17247:8:5", + "nodeType": "YulContinue", + "src": "17247:8:5" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "zz", + "nativeSrc": "17068:2:5", + "nodeType": "YulIdentifier", + "src": "17068:2:5" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "17061:6:5", + "nodeType": "YulIdentifier", + "src": "17061:6:5" + }, + "nativeSrc": "17061:10:5", + "nodeType": "YulFunctionCall", + "src": "17061:10:5" + }, + "nativeSrc": "17058:223:5", + "nodeType": "YulIf", + "src": "17058:223:5" + }, + { + "nativeSrc": "17424:42:5", + "nodeType": "YulVariableDeclaration", + "src": "17424:42:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "T2", + "nativeSrc": "17448:2:5", + "nodeType": "YulIdentifier", + "src": "17448:2:5" + }, + { + "name": "zzz", + "nativeSrc": "17452:3:5", + "nodeType": "YulIdentifier", + "src": "17452:3:5" + }, + { + "name": "p", + "nativeSrc": "17457:1:5", + "nodeType": "YulIdentifier", + "src": "17457:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "17441:6:5", + "nodeType": "YulIdentifier", + "src": "17441:6:5" + }, + "nativeSrc": "17441:18:5", + "nodeType": "YulFunctionCall", + "src": "17441:18:5" + }, + { + "name": "Y", + "nativeSrc": "17461:1:5", + "nodeType": "YulIdentifier", + "src": "17461:1:5" + }, + { + "name": "p", + "nativeSrc": "17464:1:5", + "nodeType": "YulIdentifier", + "src": "17464:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "17434:6:5", + "nodeType": "YulIdentifier", + "src": "17434:6:5" + }, + "nativeSrc": "17434:32:5", + "nodeType": "YulFunctionCall", + "src": "17434:32:5" + }, + "variables": [ + { + "name": "y2", + "nativeSrc": "17428:2:5", + "nodeType": "YulTypedName", + "src": "17428:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "17495:45:5", + "nodeType": "YulAssignment", + "src": "17495:45:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "T1", + "nativeSrc": "17515:2:5", + "nodeType": "YulIdentifier", + "src": "17515:2:5" + }, + { + "name": "zz", + "nativeSrc": "17519:2:5", + "nodeType": "YulIdentifier", + "src": "17519:2:5" + }, + { + "name": "p", + "nativeSrc": "17523:1:5", + "nodeType": "YulIdentifier", + "src": "17523:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "17508:6:5", + "nodeType": "YulIdentifier", + "src": "17508:6:5" + }, + "nativeSrc": "17508:17:5", + "nodeType": "YulFunctionCall", + "src": "17508:17:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "17531:1:5", + "nodeType": "YulIdentifier", + "src": "17531:1:5" + }, + { + "name": "X", + "nativeSrc": "17534:1:5", + "nodeType": "YulIdentifier", + "src": "17534:1:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "17527:3:5", + "nodeType": "YulIdentifier", + "src": "17527:3:5" + }, + "nativeSrc": "17527:9:5", + "nodeType": "YulFunctionCall", + "src": "17527:9:5" + }, + { + "name": "p", + "nativeSrc": "17538:1:5", + "nodeType": "YulIdentifier", + "src": "17538:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "17501:6:5", + "nodeType": "YulIdentifier", + "src": "17501:6:5" + }, + "nativeSrc": "17501:39:5", + "nodeType": "YulFunctionCall", + "src": "17501:39:5" + }, + "variableNames": [ + { + "name": "T2", + "nativeSrc": "17495:2:5", + "nodeType": "YulIdentifier", + "src": "17495:2:5" + } + ] + }, + { + "body": { + "nativeSrc": "17769:1029:5", + "nodeType": "YulBlock", + "src": "17769:1029:5", + "statements": [ + { + "body": { + "nativeSrc": "17813:959:5", + "nodeType": "YulBlock", + "src": "17813:959:5", + "statements": [ + { + "nativeSrc": "17847:27:5", + "nodeType": "YulAssignment", + "src": "17847:27:5", + "value": { + "arguments": [ + { + "name": "minus_2", + "nativeSrc": "17860:7:5", + "nodeType": "YulIdentifier", + "src": "17860:7:5" + }, + { + "name": "Y", + "nativeSrc": "17869:1:5", + "nodeType": "YulIdentifier", + "src": "17869:1:5" + }, + { + "name": "p", + "nativeSrc": "17872:1:5", + "nodeType": "YulIdentifier", + "src": "17872:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "17853:6:5", + "nodeType": "YulIdentifier", + "src": "17853:6:5" + }, + "nativeSrc": "17853:21:5", + "nodeType": "YulFunctionCall", + "src": "17853:21:5" + }, + "variableNames": [ + { + "name": "T1", + "nativeSrc": "17847:2:5", + "nodeType": "YulIdentifier", + "src": "17847:2:5" + } + ] + }, + { + "nativeSrc": "17926:23:5", + "nodeType": "YulAssignment", + "src": "17926:23:5", + "value": { + "arguments": [ + { + "name": "T1", + "nativeSrc": "17939:2:5", + "nodeType": "YulIdentifier", + "src": "17939:2:5" + }, + { + "name": "T1", + "nativeSrc": "17943:2:5", + "nodeType": "YulIdentifier", + "src": "17943:2:5" + }, + { + "name": "p", + "nativeSrc": "17947:1:5", + "nodeType": "YulIdentifier", + "src": "17947:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "17932:6:5", + "nodeType": "YulIdentifier", + "src": "17932:6:5" + }, + "nativeSrc": "17932:17:5", + "nodeType": "YulFunctionCall", + "src": "17932:17:5" + }, + "variableNames": [ + { + "name": "T2", + "nativeSrc": "17926:2:5", + "nodeType": "YulIdentifier", + "src": "17926:2:5" + } + ] + }, + { + "nativeSrc": "17991:22:5", + "nodeType": "YulAssignment", + "src": "17991:22:5", + "value": { + "arguments": [ + { + "name": "X", + "nativeSrc": "18004:1:5", + "nodeType": "YulIdentifier", + "src": "18004:1:5" + }, + { + "name": "T2", + "nativeSrc": "18007:2:5", + "nodeType": "YulIdentifier", + "src": "18007:2:5" + }, + { + "name": "p", + "nativeSrc": "18011:1:5", + "nodeType": "YulIdentifier", + "src": "18011:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "17997:6:5", + "nodeType": "YulIdentifier", + "src": "17997:6:5" + }, + "nativeSrc": "17997:16:5", + "nodeType": "YulFunctionCall", + "src": "17997:16:5" + }, + "variableNames": [ + { + "name": "T3", + "nativeSrc": "17991:2:5", + "nodeType": "YulIdentifier", + "src": "17991:2:5" + } + ] + }, + { + "nativeSrc": "18059:23:5", + "nodeType": "YulAssignment", + "src": "18059:23:5", + "value": { + "arguments": [ + { + "name": "T1", + "nativeSrc": "18072:2:5", + "nodeType": "YulIdentifier", + "src": "18072:2:5" + }, + { + "name": "T2", + "nativeSrc": "18076:2:5", + "nodeType": "YulIdentifier", + "src": "18076:2:5" + }, + { + "name": "p", + "nativeSrc": "18080:1:5", + "nodeType": "YulIdentifier", + "src": "18080:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "18065:6:5", + "nodeType": "YulIdentifier", + "src": "18065:6:5" + }, + "nativeSrc": "18065:17:5", + "nodeType": "YulFunctionCall", + "src": "18065:17:5" + }, + "variableNames": [ + { + "name": "T1", + "nativeSrc": "18059:2:5", + "nodeType": "YulIdentifier", + "src": "18059:2:5" + } + ] + }, + { + "nativeSrc": "18123:59:5", + "nodeType": "YulAssignment", + "src": "18123:59:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "X", + "nativeSrc": "18143:1:5", + "nodeType": "YulIdentifier", + "src": "18143:1:5" + }, + { + "name": "zz", + "nativeSrc": "18146:2:5", + "nodeType": "YulIdentifier", + "src": "18146:2:5" + }, + { + "name": "p", + "nativeSrc": "18150:1:5", + "nodeType": "YulIdentifier", + "src": "18150:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "18136:6:5", + "nodeType": "YulIdentifier", + "src": "18136:6:5" + }, + "nativeSrc": "18136:16:5", + "nodeType": "YulFunctionCall", + "src": "18136:16:5" + }, + { + "arguments": [ + { + "name": "X", + "nativeSrc": "18161:1:5", + "nodeType": "YulIdentifier", + "src": "18161:1:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "18168:1:5", + "nodeType": "YulIdentifier", + "src": "18168:1:5" + }, + { + "name": "zz", + "nativeSrc": "18171:2:5", + "nodeType": "YulIdentifier", + "src": "18171:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "18164:3:5", + "nodeType": "YulIdentifier", + "src": "18164:3:5" + }, + "nativeSrc": "18164:10:5", + "nodeType": "YulFunctionCall", + "src": "18164:10:5" + }, + { + "name": "p", + "nativeSrc": "18176:1:5", + "nodeType": "YulIdentifier", + "src": "18176:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "18154:6:5", + "nodeType": "YulIdentifier", + "src": "18154:6:5" + }, + "nativeSrc": "18154:24:5", + "nodeType": "YulFunctionCall", + "src": "18154:24:5" + }, + { + "name": "p", + "nativeSrc": "18180:1:5", + "nodeType": "YulIdentifier", + "src": "18180:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "18129:6:5", + "nodeType": "YulIdentifier", + "src": "18129:6:5" + }, + "nativeSrc": "18129:53:5", + "nodeType": "YulFunctionCall", + "src": "18129:53:5" + }, + "variableNames": [ + { + "name": "y2", + "nativeSrc": "18123:2:5", + "nodeType": "YulIdentifier", + "src": "18123:2:5" + } + ] + }, + { + "nativeSrc": "18230:22:5", + "nodeType": "YulAssignment", + "src": "18230:22:5", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18243:1:5", + "nodeType": "YulLiteral", + "src": "18243:1:5", + "type": "", + "value": "3" + }, + { + "name": "y2", + "nativeSrc": "18246:2:5", + "nodeType": "YulIdentifier", + "src": "18246:2:5" + }, + { + "name": "p", + "nativeSrc": "18250:1:5", + "nodeType": "YulIdentifier", + "src": "18250:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "18236:6:5", + "nodeType": "YulIdentifier", + "src": "18236:6:5" + }, + "nativeSrc": "18236:16:5", + "nodeType": "YulFunctionCall", + "src": "18236:16:5" + }, + "variableNames": [ + { + "name": "T4", + "nativeSrc": "18230:2:5", + "nodeType": "YulIdentifier", + "src": "18230:2:5" + } + ] + }, + { + "nativeSrc": "18305:25:5", + "nodeType": "YulAssignment", + "src": "18305:25:5", + "value": { + "arguments": [ + { + "name": "T1", + "nativeSrc": "18319:2:5", + "nodeType": "YulIdentifier", + "src": "18319:2:5" + }, + { + "name": "zzz", + "nativeSrc": "18323:3:5", + "nodeType": "YulIdentifier", + "src": "18323:3:5" + }, + { + "name": "p", + "nativeSrc": "18328:1:5", + "nodeType": "YulIdentifier", + "src": "18328:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "18312:6:5", + "nodeType": "YulIdentifier", + "src": "18312:6:5" + }, + "nativeSrc": "18312:18:5", + "nodeType": "YulFunctionCall", + "src": "18312:18:5" + }, + "variableNames": [ + { + "name": "zzz", + "nativeSrc": "18305:3:5", + "nodeType": "YulIdentifier", + "src": "18305:3:5" + } + ] + }, + { + "nativeSrc": "18377:23:5", + "nodeType": "YulAssignment", + "src": "18377:23:5", + "value": { + "arguments": [ + { + "name": "T2", + "nativeSrc": "18390:2:5", + "nodeType": "YulIdentifier", + "src": "18390:2:5" + }, + { + "name": "zz", + "nativeSrc": "18394:2:5", + "nodeType": "YulIdentifier", + "src": "18394:2:5" + }, + { + "name": "p", + "nativeSrc": "18398:1:5", + "nodeType": "YulIdentifier", + "src": "18398:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "18383:6:5", + "nodeType": "YulIdentifier", + "src": "18383:6:5" + }, + "nativeSrc": "18383:17:5", + "nodeType": "YulFunctionCall", + "src": "18383:17:5" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "18377:2:5", + "nodeType": "YulIdentifier", + "src": "18377:2:5" + } + ] + }, + { + "nativeSrc": "18454:57:5", + "nodeType": "YulAssignment", + "src": "18454:57:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "T4", + "nativeSrc": "18473:2:5", + "nodeType": "YulIdentifier", + "src": "18473:2:5" + }, + { + "name": "T4", + "nativeSrc": "18477:2:5", + "nodeType": "YulIdentifier", + "src": "18477:2:5" + }, + { + "name": "p", + "nativeSrc": "18481:1:5", + "nodeType": "YulIdentifier", + "src": "18481:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "18466:6:5", + "nodeType": "YulIdentifier", + "src": "18466:6:5" + }, + "nativeSrc": "18466:17:5", + "nodeType": "YulFunctionCall", + "src": "18466:17:5" + }, + { + "arguments": [ + { + "name": "minus_2", + "nativeSrc": "18492:7:5", + "nodeType": "YulIdentifier", + "src": "18492:7:5" + }, + { + "name": "T3", + "nativeSrc": "18501:2:5", + "nodeType": "YulIdentifier", + "src": "18501:2:5" + }, + { + "name": "p", + "nativeSrc": "18505:1:5", + "nodeType": "YulIdentifier", + "src": "18505:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "18485:6:5", + "nodeType": "YulIdentifier", + "src": "18485:6:5" + }, + "nativeSrc": "18485:22:5", + "nodeType": "YulFunctionCall", + "src": "18485:22:5" + }, + { + "name": "p", + "nativeSrc": "18509:1:5", + "nodeType": "YulIdentifier", + "src": "18509:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "18459:6:5", + "nodeType": "YulIdentifier", + "src": "18459:6:5" + }, + "nativeSrc": "18459:52:5", + "nodeType": "YulFunctionCall", + "src": "18459:52:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "18454:1:5", + "nodeType": "YulIdentifier", + "src": "18454:1:5" + } + ] + }, + { + "nativeSrc": "18556:45:5", + "nodeType": "YulAssignment", + "src": "18556:45:5", + "value": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "18569:2:5", + "nodeType": "YulIdentifier", + "src": "18569:2:5" + }, + { + "arguments": [ + { + "name": "T3", + "nativeSrc": "18580:2:5", + "nodeType": "YulIdentifier", + "src": "18580:2:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "18588:1:5", + "nodeType": "YulIdentifier", + "src": "18588:1:5" + }, + { + "name": "X", + "nativeSrc": "18591:1:5", + "nodeType": "YulIdentifier", + "src": "18591:1:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "18584:3:5", + "nodeType": "YulIdentifier", + "src": "18584:3:5" + }, + "nativeSrc": "18584:9:5", + "nodeType": "YulFunctionCall", + "src": "18584:9:5" + }, + { + "name": "p", + "nativeSrc": "18595:1:5", + "nodeType": "YulIdentifier", + "src": "18595:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "18573:6:5", + "nodeType": "YulIdentifier", + "src": "18573:6:5" + }, + "nativeSrc": "18573:24:5", + "nodeType": "YulFunctionCall", + "src": "18573:24:5" + }, + { + "name": "p", + "nativeSrc": "18599:1:5", + "nodeType": "YulIdentifier", + "src": "18599:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "18562:6:5", + "nodeType": "YulIdentifier", + "src": "18562:6:5" + }, + "nativeSrc": "18562:39:5", + "nodeType": "YulFunctionCall", + "src": "18562:39:5" + }, + "variableNames": [ + { + "name": "T2", + "nativeSrc": "18556:2:5", + "nodeType": "YulIdentifier", + "src": "18556:2:5" + } + ] + }, + { + "nativeSrc": "18645:36:5", + "nodeType": "YulAssignment", + "src": "18645:36:5", + "value": { + "arguments": [ + { + "name": "T2", + "nativeSrc": "18657:2:5", + "nodeType": "YulIdentifier", + "src": "18657:2:5" + }, + { + "arguments": [ + { + "name": "T1", + "nativeSrc": "18668:2:5", + "nodeType": "YulIdentifier", + "src": "18668:2:5" + }, + { + "name": "Y", + "nativeSrc": "18672:1:5", + "nodeType": "YulIdentifier", + "src": "18672:1:5" + }, + { + "name": "p", + "nativeSrc": "18675:1:5", + "nodeType": "YulIdentifier", + "src": "18675:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "18661:6:5", + "nodeType": "YulIdentifier", + "src": "18661:6:5" + }, + "nativeSrc": "18661:16:5", + "nodeType": "YulFunctionCall", + "src": "18661:16:5" + }, + { + "name": "p", + "nativeSrc": "18679:1:5", + "nodeType": "YulIdentifier", + "src": "18679:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "18650:6:5", + "nodeType": "YulIdentifier", + "src": "18650:6:5" + }, + "nativeSrc": "18650:31:5", + "nodeType": "YulFunctionCall", + "src": "18650:31:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "18645:1:5", + "nodeType": "YulIdentifier", + "src": "18645:1:5" + } + ] + }, + { + "nativeSrc": "18734:8:5", + "nodeType": "YulContinue", + "src": "18734:8:5" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "T2", + "nativeSrc": "17809:2:5", + "nodeType": "YulIdentifier", + "src": "17809:2:5" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "17802:6:5", + "nodeType": "YulIdentifier", + "src": "17802:6:5" + }, + "nativeSrc": "17802:10:5", + "nodeType": "YulFunctionCall", + "src": "17802:10:5" + }, + "nativeSrc": "17799:973:5", + "nodeType": "YulIf", + "src": "17799:973:5" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "y2", + "nativeSrc": "17765:2:5", + "nodeType": "YulIdentifier", + "src": "17765:2:5" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "17758:6:5", + "nodeType": "YulIdentifier", + "src": "17758:6:5" + }, + "nativeSrc": "17758:10:5", + "nodeType": "YulFunctionCall", + "src": "17758:10:5" + }, + "nativeSrc": "17755:1043:5", + "nodeType": "YulIf", + "src": "17755:1043:5" + }, + { + "nativeSrc": "18824:23:5", + "nodeType": "YulAssignment", + "src": "18824:23:5", + "value": { + "arguments": [ + { + "name": "T2", + "nativeSrc": "18837:2:5", + "nodeType": "YulIdentifier", + "src": "18837:2:5" + }, + { + "name": "T2", + "nativeSrc": "18841:2:5", + "nodeType": "YulIdentifier", + "src": "18841:2:5" + }, + { + "name": "p", + "nativeSrc": "18845:1:5", + "nodeType": "YulIdentifier", + "src": "18845:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "18830:6:5", + "nodeType": "YulIdentifier", + "src": "18830:6:5" + }, + "nativeSrc": "18830:17:5", + "nodeType": "YulFunctionCall", + "src": "18830:17:5" + }, + "variableNames": [ + { + "name": "T4", + "nativeSrc": "18824:2:5", + "nodeType": "YulIdentifier", + "src": "18824:2:5" + } + ] + }, + { + "nativeSrc": "18877:28:5", + "nodeType": "YulVariableDeclaration", + "src": "18877:28:5", + "value": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "18895:2:5", + "nodeType": "YulIdentifier", + "src": "18895:2:5" + }, + { + "name": "T2", + "nativeSrc": "18899:2:5", + "nodeType": "YulIdentifier", + "src": "18899:2:5" + }, + { + "name": "p", + "nativeSrc": "18903:1:5", + "nodeType": "YulIdentifier", + "src": "18903:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "18888:6:5", + "nodeType": "YulIdentifier", + "src": "18888:6:5" + }, + "nativeSrc": "18888:17:5", + "nodeType": "YulFunctionCall", + "src": "18888:17:5" + }, + "variables": [ + { + "name": "TT1", + "nativeSrc": "18881:3:5", + "nodeType": "YulTypedName", + "src": "18881:3:5", + "type": "" + } + ] + }, + { + "nativeSrc": "18998:23:5", + "nodeType": "YulAssignment", + "src": "18998:23:5", + "value": { + "arguments": [ + { + "name": "zz", + "nativeSrc": "19011:2:5", + "nodeType": "YulIdentifier", + "src": "19011:2:5" + }, + { + "name": "T4", + "nativeSrc": "19015:2:5", + "nodeType": "YulIdentifier", + "src": "19015:2:5" + }, + { + "name": "p", + "nativeSrc": "19019:1:5", + "nodeType": "YulIdentifier", + "src": "19019:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "19004:6:5", + "nodeType": "YulIdentifier", + "src": "19004:6:5" + }, + "nativeSrc": "19004:17:5", + "nodeType": "YulFunctionCall", + "src": "19004:17:5" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "18998:2:5", + "nodeType": "YulIdentifier", + "src": "18998:2:5" + } + ] + }, + { + "nativeSrc": "19046:26:5", + "nodeType": "YulAssignment", + "src": "19046:26:5", + "value": { + "arguments": [ + { + "name": "zzz", + "nativeSrc": "19060:3:5", + "nodeType": "YulIdentifier", + "src": "19060:3:5" + }, + { + "name": "TT1", + "nativeSrc": "19065:3:5", + "nodeType": "YulIdentifier", + "src": "19065:3:5" + }, + { + "name": "p", + "nativeSrc": "19070:1:5", + "nodeType": "YulIdentifier", + "src": "19070:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "19053:6:5", + "nodeType": "YulIdentifier", + "src": "19053:6:5" + }, + "nativeSrc": "19053:19:5", + "nodeType": "YulFunctionCall", + "src": "19053:19:5" + }, + "variableNames": [ + { + "name": "zzz", + "nativeSrc": "19046:3:5", + "nodeType": "YulIdentifier", + "src": "19046:3:5" + } + ] + }, + { + "nativeSrc": "19109:27:5", + "nodeType": "YulVariableDeclaration", + "src": "19109:27:5", + "value": { + "arguments": [ + { + "name": "X", + "nativeSrc": "19127:1:5", + "nodeType": "YulIdentifier", + "src": "19127:1:5" + }, + { + "name": "T4", + "nativeSrc": "19130:2:5", + "nodeType": "YulIdentifier", + "src": "19130:2:5" + }, + { + "name": "p", + "nativeSrc": "19134:1:5", + "nodeType": "YulIdentifier", + "src": "19134:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "19120:6:5", + "nodeType": "YulIdentifier", + "src": "19120:6:5" + }, + "nativeSrc": "19120:16:5", + "nodeType": "YulFunctionCall", + "src": "19120:16:5" + }, + "variables": [ + { + "name": "TT2", + "nativeSrc": "19113:3:5", + "nodeType": "YulTypedName", + "src": "19113:3:5", + "type": "" + } + ] + }, + { + "nativeSrc": "19161:83:5", + "nodeType": "YulAssignment", + "src": "19161:83:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "y2", + "nativeSrc": "19188:2:5", + "nodeType": "YulIdentifier", + "src": "19188:2:5" + }, + { + "name": "y2", + "nativeSrc": "19192:2:5", + "nodeType": "YulIdentifier", + "src": "19192:2:5" + }, + { + "name": "p", + "nativeSrc": "19196:1:5", + "nodeType": "YulIdentifier", + "src": "19196:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "19181:6:5", + "nodeType": "YulIdentifier", + "src": "19181:6:5" + }, + "nativeSrc": "19181:17:5", + "nodeType": "YulFunctionCall", + "src": "19181:17:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "19204:1:5", + "nodeType": "YulIdentifier", + "src": "19204:1:5" + }, + { + "name": "TT1", + "nativeSrc": "19207:3:5", + "nodeType": "YulIdentifier", + "src": "19207:3:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "19200:3:5", + "nodeType": "YulIdentifier", + "src": "19200:3:5" + }, + "nativeSrc": "19200:11:5", + "nodeType": "YulFunctionCall", + "src": "19200:11:5" + }, + { + "name": "p", + "nativeSrc": "19213:1:5", + "nodeType": "YulIdentifier", + "src": "19213:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "19174:6:5", + "nodeType": "YulIdentifier", + "src": "19174:6:5" + }, + "nativeSrc": "19174:41:5", + "nodeType": "YulFunctionCall", + "src": "19174:41:5" + }, + { + "arguments": [ + { + "name": "minus_2", + "nativeSrc": "19224:7:5", + "nodeType": "YulIdentifier", + "src": "19224:7:5" + }, + { + "name": "TT2", + "nativeSrc": "19233:3:5", + "nodeType": "YulIdentifier", + "src": "19233:3:5" + }, + { + "name": "p", + "nativeSrc": "19238:1:5", + "nodeType": "YulIdentifier", + "src": "19238:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "19217:6:5", + "nodeType": "YulIdentifier", + "src": "19217:6:5" + }, + "nativeSrc": "19217:23:5", + "nodeType": "YulFunctionCall", + "src": "19217:23:5" + }, + { + "name": "p", + "nativeSrc": "19242:1:5", + "nodeType": "YulIdentifier", + "src": "19242:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "19167:6:5", + "nodeType": "YulIdentifier", + "src": "19167:6:5" + }, + "nativeSrc": "19167:77:5", + "nodeType": "YulFunctionCall", + "src": "19167:77:5" + }, + "variableNames": [ + { + "name": "T4", + "nativeSrc": "19161:2:5", + "nodeType": "YulIdentifier", + "src": "19161:2:5" + } + ] + }, + { + "nativeSrc": "19269:76:5", + "nodeType": "YulAssignment", + "src": "19269:76:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "TT2", + "nativeSrc": "19295:3:5", + "nodeType": "YulIdentifier", + "src": "19295:3:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "19304:1:5", + "nodeType": "YulIdentifier", + "src": "19304:1:5" + }, + { + "name": "T4", + "nativeSrc": "19307:2:5", + "nodeType": "YulIdentifier", + "src": "19307:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "19300:3:5", + "nodeType": "YulIdentifier", + "src": "19300:3:5" + }, + "nativeSrc": "19300:10:5", + "nodeType": "YulFunctionCall", + "src": "19300:10:5" + }, + { + "name": "p", + "nativeSrc": "19312:1:5", + "nodeType": "YulIdentifier", + "src": "19312:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "19288:6:5", + "nodeType": "YulIdentifier", + "src": "19288:6:5" + }, + "nativeSrc": "19288:26:5", + "nodeType": "YulFunctionCall", + "src": "19288:26:5" + }, + { + "name": "y2", + "nativeSrc": "19316:2:5", + "nodeType": "YulIdentifier", + "src": "19316:2:5" + }, + { + "name": "p", + "nativeSrc": "19320:1:5", + "nodeType": "YulIdentifier", + "src": "19320:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "19281:6:5", + "nodeType": "YulIdentifier", + "src": "19281:6:5" + }, + "nativeSrc": "19281:41:5", + "nodeType": "YulFunctionCall", + "src": "19281:41:5" + }, + { + "arguments": [ + { + "name": "Y", + "nativeSrc": "19331:1:5", + "nodeType": "YulIdentifier", + "src": "19331:1:5" + }, + { + "name": "TT1", + "nativeSrc": "19334:3:5", + "nodeType": "YulIdentifier", + "src": "19334:3:5" + }, + { + "name": "p", + "nativeSrc": "19339:1:5", + "nodeType": "YulIdentifier", + "src": "19339:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "19324:6:5", + "nodeType": "YulIdentifier", + "src": "19324:6:5" + }, + "nativeSrc": "19324:17:5", + "nodeType": "YulFunctionCall", + "src": "19324:17:5" + }, + { + "name": "p", + "nativeSrc": "19343:1:5", + "nodeType": "YulIdentifier", + "src": "19343:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "19274:6:5", + "nodeType": "YulIdentifier", + "src": "19274:6:5" + }, + "nativeSrc": "19274:71:5", + "nodeType": "YulFunctionCall", + "src": "19274:71:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "19269:1:5", + "nodeType": "YulIdentifier", + "src": "19269:1:5" + } + ] + }, + { + "nativeSrc": "19371:7:5", + "nodeType": "YulAssignment", + "src": "19371:7:5", + "value": { + "name": "T4", + "nativeSrc": "19376:2:5", + "nodeType": "YulIdentifier", + "src": "19376:2:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "19371:1:5", + "nodeType": "YulIdentifier", + "src": "19371:1:5" + } + ] + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "minus_1", + "nativeSrc": "15403:7:5", + "nodeType": "YulIdentifier", + "src": "15403:7:5" + }, + { + "name": "index", + "nativeSrc": "15412:5:5", + "nodeType": "YulIdentifier", + "src": "15412:5:5" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "15400:2:5", + "nodeType": "YulIdentifier", + "src": "15400:2:5" + }, + "nativeSrc": "15400:18:5", + "nodeType": "YulFunctionCall", + "src": "15400:18:5" + }, + "nativeSrc": "15393:4025:5", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "15419:26:5", + "nodeType": "YulBlock", + "src": "15419:26:5", + "statements": [ + { + "nativeSrc": "15421:22:5", + "nodeType": "YulAssignment", + "src": "15421:22:5", + "value": { + "arguments": [ + { + "name": "index", + "nativeSrc": "15434:5:5", + "nodeType": "YulIdentifier", + "src": "15434:5:5" + }, + { + "kind": "number", + "nativeSrc": "15441:1:5", + "nodeType": "YulLiteral", + "src": "15441:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "15430:3:5", + "nodeType": "YulIdentifier", + "src": "15430:3:5" + }, + "nativeSrc": "15430:13:5", + "nodeType": "YulFunctionCall", + "src": "15430:13:5" + }, + "variableNames": [ + { + "name": "index", + "nativeSrc": "15421:5:5", + "nodeType": "YulIdentifier", + "src": "15421:5:5" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "15397:2:5", + "nodeType": "YulBlock", + "src": "15397:2:5", + "statements": [] + }, + "src": "15393:4025:5" + }, + { + "nativeSrc": "19446:20:5", + "nodeType": "YulVariableDeclaration", + "src": "19446:20:5", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "19461:4:5", + "nodeType": "YulLiteral", + "src": "19461:4:5", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "19455:5:5", + "nodeType": "YulIdentifier", + "src": "19455:5:5" + }, + "nativeSrc": "19455:11:5", + "nodeType": "YulFunctionCall", + "src": "19455:11:5" + }, + "variables": [ + { + "name": "T", + "nativeSrc": "19450:1:5", + "nodeType": "YulTypedName", + "src": "19450:1:5", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "19494:1:5", + "nodeType": "YulIdentifier", + "src": "19494:1:5" + }, + { + "kind": "number", + "nativeSrc": "19497:4:5", + "nodeType": "YulLiteral", + "src": "19497:4:5", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19490:3:5", + "nodeType": "YulIdentifier", + "src": "19490:3:5" + }, + "nativeSrc": "19490:12:5", + "nodeType": "YulFunctionCall", + "src": "19490:12:5" + }, + { + "name": "zz", + "nativeSrc": "19504:2:5", + "nodeType": "YulIdentifier", + "src": "19504:2:5" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "19483:6:5", + "nodeType": "YulIdentifier", + "src": "19483:6:5" + }, + "nativeSrc": "19483:24:5", + "nodeType": "YulFunctionCall", + "src": "19483:24:5" + }, + "nativeSrc": "19483:24:5", + "nodeType": "YulExpressionStatement", + "src": "19483:24:5" + }, + { + "expression": { + "arguments": [ + { + "name": "T", + "nativeSrc": "19766:1:5", + "nodeType": "YulIdentifier", + "src": "19766:1:5" + }, + { + "kind": "number", + "nativeSrc": "19769:4:5", + "nodeType": "YulLiteral", + "src": "19769:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "19759:6:5", + "nodeType": "YulIdentifier", + "src": "19759:6:5" + }, + "nativeSrc": "19759:15:5", + "nodeType": "YulFunctionCall", + "src": "19759:15:5" + }, + "nativeSrc": "19759:15:5", + "nodeType": "YulExpressionStatement", + "src": "19759:15:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "19802:1:5", + "nodeType": "YulIdentifier", + "src": "19802:1:5" + }, + { + "kind": "number", + "nativeSrc": "19805:4:5", + "nodeType": "YulLiteral", + "src": "19805:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19798:3:5", + "nodeType": "YulIdentifier", + "src": "19798:3:5" + }, + "nativeSrc": "19798:12:5", + "nodeType": "YulFunctionCall", + "src": "19798:12:5" + }, + { + "kind": "number", + "nativeSrc": "19812:4:5", + "nodeType": "YulLiteral", + "src": "19812:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "19791:6:5", + "nodeType": "YulIdentifier", + "src": "19791:6:5" + }, + "nativeSrc": "19791:26:5", + "nodeType": "YulFunctionCall", + "src": "19791:26:5" + }, + "nativeSrc": "19791:26:5", + "nodeType": "YulExpressionStatement", + "src": "19791:26:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "19845:1:5", + "nodeType": "YulIdentifier", + "src": "19845:1:5" + }, + { + "kind": "number", + "nativeSrc": "19848:4:5", + "nodeType": "YulLiteral", + "src": "19848:4:5", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19841:3:5", + "nodeType": "YulIdentifier", + "src": "19841:3:5" + }, + "nativeSrc": "19841:12:5", + "nodeType": "YulFunctionCall", + "src": "19841:12:5" + }, + { + "kind": "number", + "nativeSrc": "19855:4:5", + "nodeType": "YulLiteral", + "src": "19855:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "19834:6:5", + "nodeType": "YulIdentifier", + "src": "19834:6:5" + }, + "nativeSrc": "19834:26:5", + "nodeType": "YulFunctionCall", + "src": "19834:26:5" + }, + "nativeSrc": "19834:26:5", + "nodeType": "YulExpressionStatement", + "src": "19834:26:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "19999:1:5", + "nodeType": "YulIdentifier", + "src": "19999:1:5" + }, + { + "kind": "number", + "nativeSrc": "20002:4:5", + "nodeType": "YulLiteral", + "src": "20002:4:5", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19995:3:5", + "nodeType": "YulIdentifier", + "src": "19995:3:5" + }, + "nativeSrc": "19995:12:5", + "nodeType": "YulFunctionCall", + "src": "19995:12:5" + }, + { + "name": "minus_2", + "nativeSrc": "20009:7:5", + "nodeType": "YulIdentifier", + "src": "20009:7:5" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "19988:6:5", + "nodeType": "YulIdentifier", + "src": "19988:6:5" + }, + "nativeSrc": "19988:29:5", + "nodeType": "YulFunctionCall", + "src": "19988:29:5" + }, + "nativeSrc": "19988:29:5", + "nodeType": "YulExpressionStatement", + "src": "19988:29:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "20045:1:5", + "nodeType": "YulIdentifier", + "src": "20045:1:5" + }, + { + "kind": "number", + "nativeSrc": "20048:4:5", + "nodeType": "YulLiteral", + "src": "20048:4:5", + "type": "", + "value": "0xa0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20041:3:5", + "nodeType": "YulIdentifier", + "src": "20041:3:5" + }, + "nativeSrc": "20041:12:5", + "nodeType": "YulFunctionCall", + "src": "20041:12:5" + }, + { + "name": "p", + "nativeSrc": "20055:1:5", + "nodeType": "YulIdentifier", + "src": "20055:1:5" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "20034:6:5", + "nodeType": "YulIdentifier", + "src": "20034:6:5" + }, + "nativeSrc": "20034:23:5", + "nodeType": "YulFunctionCall", + "src": "20034:23:5" + }, + "nativeSrc": "20034:23:5", + "nodeType": "YulExpressionStatement", + "src": "20034:23:5" + }, + { + "body": { + "nativeSrc": "20192:16:5", + "nodeType": "YulBlock", + "src": "20192:16:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20201:1:5", + "nodeType": "YulLiteral", + "src": "20201:1:5", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "20204:1:5", + "nodeType": "YulLiteral", + "src": "20204:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "20194:6:5", + "nodeType": "YulIdentifier", + "src": "20194:6:5" + }, + "nativeSrc": "20194:12:5", + "nodeType": "YulFunctionCall", + "src": "20194:12:5" + }, + "nativeSrc": "20194:12:5", + "nodeType": "YulExpressionStatement", + "src": "20194:12:5" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20163:1:5", + "nodeType": "YulLiteral", + "src": "20163:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "20159:3:5", + "nodeType": "YulIdentifier", + "src": "20159:3:5" + }, + "nativeSrc": "20159:6:5", + "nodeType": "YulFunctionCall", + "src": "20159:6:5" + }, + { + "kind": "number", + "nativeSrc": "20167:4:5", + "nodeType": "YulLiteral", + "src": "20167:4:5", + "type": "", + "value": "0x05" + }, + { + "name": "T", + "nativeSrc": "20173:1:5", + "nodeType": "YulIdentifier", + "src": "20173:1:5" + }, + { + "kind": "number", + "nativeSrc": "20176:4:5", + "nodeType": "YulLiteral", + "src": "20176:4:5", + "type": "", + "value": "0xc0" + }, + { + "name": "T", + "nativeSrc": "20182:1:5", + "nodeType": "YulIdentifier", + "src": "20182:1:5" + }, + { + "kind": "number", + "nativeSrc": "20185:4:5", + "nodeType": "YulLiteral", + "src": "20185:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "20148:10:5", + "nodeType": "YulIdentifier", + "src": "20148:10:5" + }, + "nativeSrc": "20148:42:5", + "nodeType": "YulFunctionCall", + "src": "20148:42:5" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "20141:6:5", + "nodeType": "YulIdentifier", + "src": "20141:6:5" + }, + "nativeSrc": "20141:50:5", + "nodeType": "YulFunctionCall", + "src": "20141:50:5" + }, + "nativeSrc": "20138:70:5", + "nodeType": "YulIf", + "src": "20138:70:5" + }, + { + "nativeSrc": "20368:27:5", + "nodeType": "YulAssignment", + "src": "20368:27:5", + "value": { + "arguments": [ + { + "name": "X", + "nativeSrc": "20380:1:5", + "nodeType": "YulIdentifier", + "src": "20380:1:5" + }, + { + "arguments": [ + { + "name": "T", + "nativeSrc": "20389:1:5", + "nodeType": "YulIdentifier", + "src": "20389:1:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "20383:5:5", + "nodeType": "YulIdentifier", + "src": "20383:5:5" + }, + "nativeSrc": "20383:8:5", + "nodeType": "YulFunctionCall", + "src": "20383:8:5" + }, + { + "name": "p", + "nativeSrc": "20393:1:5", + "nodeType": "YulIdentifier", + "src": "20393:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "20373:6:5", + "nodeType": "YulIdentifier", + "src": "20373:6:5" + }, + "nativeSrc": "20373:22:5", + "nodeType": "YulFunctionCall", + "src": "20373:22:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "20368:1:5", + "nodeType": "YulIdentifier", + "src": "20368:1:5" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 1801, + "isOffset": false, + "isSlot": false, + "src": "15238:2:5", + "valueSize": 1 + }, + { + "declaration": 1801, + "isOffset": false, + "isSlot": false, + "src": "16968:2:5", + "valueSize": 1 + }, + { + "declaration": 1804, + "isOffset": false, + "isSlot": false, + "src": "15266:2:5", + "valueSize": 1 + }, + { + "declaration": 1804, + "isOffset": false, + "isSlot": false, + "src": "17005:2:5", + "valueSize": 1 + }, + { + "declaration": 1776, + "isOffset": false, + "isSlot": false, + "src": "15133:2:5", + "valueSize": 1 + }, + { + "declaration": 1776, + "isOffset": false, + "isSlot": false, + "src": "16829:2:5", + "valueSize": 1 + }, + { + "declaration": 1778, + "isOffset": false, + "isSlot": false, + "src": "15161:2:5", + "valueSize": 1 + }, + { + "declaration": 1778, + "isOffset": false, + "isSlot": false, + "src": "16866:2:5", + "valueSize": 1 + }, + { + "declaration": 1785, + "isOffset": false, + "isSlot": false, + "src": "15023:1:5", + "valueSize": 1 + }, + { + "declaration": 1785, + "isOffset": false, + "isSlot": false, + "src": "15128:1:5", + "valueSize": 1 + }, + { + "declaration": 1785, + "isOffset": false, + "isSlot": false, + "src": "15233:1:5", + "valueSize": 1 + }, + { + "declaration": 1785, + "isOffset": false, + "isSlot": false, + "src": "15647:1:5", + "valueSize": 1 + }, + { + "declaration": 1785, + "isOffset": false, + "isSlot": false, + "src": "15775:1:5", + "valueSize": 1 + }, + { + "declaration": 1785, + "isOffset": false, + "isSlot": false, + "src": "15801:1:5", + "valueSize": 1 + }, + { + "declaration": 1785, + "isOffset": false, + "isSlot": false, + "src": "15988:1:5", + "valueSize": 1 + }, + { + "declaration": 1785, + "isOffset": false, + "isSlot": false, + "src": "16102:1:5", + "valueSize": 1 + }, + { + "declaration": 1785, + "isOffset": false, + "isSlot": false, + "src": "17102:1:5", + "valueSize": 1 + }, + { + "declaration": 1785, + "isOffset": false, + "isSlot": false, + "src": "17534:1:5", + "valueSize": 1 + }, + { + "declaration": 1785, + "isOffset": false, + "isSlot": false, + "src": "18004:1:5", + "valueSize": 1 + }, + { + "declaration": 1785, + "isOffset": false, + "isSlot": false, + "src": "18143:1:5", + "valueSize": 1 + }, + { + "declaration": 1785, + "isOffset": false, + "isSlot": false, + "src": "18161:1:5", + "valueSize": 1 + }, + { + "declaration": 1785, + "isOffset": false, + "isSlot": false, + "src": "18454:1:5", + "valueSize": 1 + }, + { + "declaration": 1785, + "isOffset": false, + "isSlot": false, + "src": "18591:1:5", + "valueSize": 1 + }, + { + "declaration": 1785, + "isOffset": false, + "isSlot": false, + "src": "19127:1:5", + "valueSize": 1 + }, + { + "declaration": 1785, + "isOffset": false, + "isSlot": false, + "src": "19371:1:5", + "valueSize": 1 + }, + { + "declaration": 1785, + "isOffset": false, + "isSlot": false, + "src": "20368:1:5", + "valueSize": 1 + }, + { + "declaration": 1785, + "isOffset": false, + "isSlot": false, + "src": "20380:1:5", + "valueSize": 1 + }, + { + "declaration": 1794, + "isOffset": false, + "isSlot": false, + "src": "15051:1:5", + "valueSize": 1 + }, + { + "declaration": 1794, + "isOffset": false, + "isSlot": false, + "src": "15156:1:5", + "valueSize": 1 + }, + { + "declaration": 1794, + "isOffset": false, + "isSlot": false, + "src": "15261:1:5", + "valueSize": 1 + }, + { + "declaration": 1794, + "isOffset": false, + "isSlot": false, + "src": "15528:1:5", + "valueSize": 1 + }, + { + "declaration": 1794, + "isOffset": false, + "isSlot": false, + "src": "16163:1:5", + "valueSize": 1 + }, + { + "declaration": 1794, + "isOffset": false, + "isSlot": false, + "src": "16186:1:5", + "valueSize": 1 + }, + { + "declaration": 1794, + "isOffset": false, + "isSlot": false, + "src": "16499:1:5", + "valueSize": 1 + }, + { + "declaration": 1794, + "isOffset": false, + "isSlot": false, + "src": "16511:1:5", + "valueSize": 1 + }, + { + "declaration": 1794, + "isOffset": false, + "isSlot": false, + "src": "17138:1:5", + "valueSize": 1 + }, + { + "declaration": 1794, + "isOffset": false, + "isSlot": false, + "src": "17461:1:5", + "valueSize": 1 + }, + { + "declaration": 1794, + "isOffset": false, + "isSlot": false, + "src": "17869:1:5", + "valueSize": 1 + }, + { + "declaration": 1794, + "isOffset": false, + "isSlot": false, + "src": "18645:1:5", + "valueSize": 1 + }, + { + "declaration": 1794, + "isOffset": false, + "isSlot": false, + "src": "18672:1:5", + "valueSize": 1 + }, + { + "declaration": 1794, + "isOffset": false, + "isSlot": false, + "src": "19269:1:5", + "valueSize": 1 + }, + { + "declaration": 1794, + "isOffset": false, + "isSlot": false, + "src": "19331:1:5", + "valueSize": 1 + }, + { + "declaration": 985, + "isOffset": false, + "isSlot": false, + "src": "15028:2:5", + "valueSize": 1 + }, + { + "declaration": 985, + "isOffset": false, + "isSlot": false, + "src": "16690:2:5", + "valueSize": 1 + }, + { + "declaration": 988, + "isOffset": false, + "isSlot": false, + "src": "15056:2:5", + "valueSize": 1 + }, + { + "declaration": 988, + "isOffset": false, + "isSlot": false, + "src": "16727:2:5", + "valueSize": 1 + }, + { + "declaration": 1797, + "isOffset": false, + "isSlot": false, + "src": "14648:5:5", + "valueSize": 1 + }, + { + "declaration": 1797, + "isOffset": false, + "isSlot": false, + "src": "14679:5:5", + "valueSize": 1 + }, + { + "declaration": 1797, + "isOffset": false, + "isSlot": false, + "src": "14735:5:5", + "valueSize": 1 + }, + { + "declaration": 1797, + "isOffset": false, + "isSlot": false, + "src": "14748:5:5", + "valueSize": 1 + }, + { + "declaration": 1797, + "isOffset": false, + "isSlot": false, + "src": "14803:5:5", + "valueSize": 1 + }, + { + "declaration": 1797, + "isOffset": false, + "isSlot": false, + "src": "14834:5:5", + "valueSize": 1 + }, + { + "declaration": 1797, + "isOffset": false, + "isSlot": false, + "src": "14918:5:5", + "valueSize": 1 + }, + { + "declaration": 1797, + "isOffset": false, + "isSlot": false, + "src": "14949:5:5", + "valueSize": 1 + }, + { + "declaration": 1797, + "isOffset": false, + "isSlot": false, + "src": "15304:5:5", + "valueSize": 1 + }, + { + "declaration": 1797, + "isOffset": false, + "isSlot": false, + "src": "15317:5:5", + "valueSize": 1 + }, + { + "declaration": 1797, + "isOffset": false, + "isSlot": false, + "src": "15412:5:5", + "valueSize": 1 + }, + { + "declaration": 1797, + "isOffset": false, + "isSlot": false, + "src": "15421:5:5", + "valueSize": 1 + }, + { + "declaration": 1797, + "isOffset": false, + "isSlot": false, + "src": "15434:5:5", + "valueSize": 1 + }, + { + "declaration": 1797, + "isOffset": false, + "isSlot": false, + "src": "16377:5:5", + "valueSize": 1 + }, + { + "declaration": 1797, + "isOffset": false, + "isSlot": false, + "src": "16408:5:5", + "valueSize": 1 + }, + { + "declaration": 1000, + "isOffset": false, + "isSlot": false, + "src": "15403:7:5", + "valueSize": 1 + }, + { + "declaration": 994, + "isOffset": false, + "isSlot": false, + "src": "16026:7:5", + "valueSize": 1 + }, + { + "declaration": 994, + "isOffset": false, + "isSlot": false, + "src": "17860:7:5", + "valueSize": 1 + }, + { + "declaration": 994, + "isOffset": false, + "isSlot": false, + "src": "18492:7:5", + "valueSize": 1 + }, + { + "declaration": 994, + "isOffset": false, + "isSlot": false, + "src": "19224:7:5", + "valueSize": 1 + }, + { + "declaration": 994, + "isOffset": false, + "isSlot": false, + "src": "20009:7:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "15531:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "15598:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "15654:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "15710:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "15782:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "15790:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "15808:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "15812:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "15816:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "15886:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "15944:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "16015:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "16039:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "16043:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "16109:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "16117:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "16121:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "16189:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "16197:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "16508:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "17457:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "17464:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "17523:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "17531:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "17538:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "17872:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "17947:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "18011:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "18080:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "18150:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "18168:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "18176:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "18180:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "18250:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "18328:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "18398:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "18481:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "18505:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "18509:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "18588:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "18595:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "18599:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "18675:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "18679:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "18845:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "18903:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "19019:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "19070:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "19134:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "19196:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "19204:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "19213:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "19238:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "19242:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "19304:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "19312:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "19320:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "19339:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "19343:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "20055:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "20393:1:5", + "valueSize": 1 + }, + { + "declaration": 1780, + "isOffset": false, + "isSlot": false, + "src": "14686:8:5", + "valueSize": 1 + }, + { + "declaration": 1780, + "isOffset": false, + "isSlot": false, + "src": "14841:8:5", + "valueSize": 1 + }, + { + "declaration": 1780, + "isOffset": false, + "isSlot": false, + "src": "14956:8:5", + "valueSize": 1 + }, + { + "declaration": 1780, + "isOffset": false, + "isSlot": false, + "src": "16415:8:5", + "valueSize": 1 + }, + { + "declaration": 1782, + "isOffset": false, + "isSlot": false, + "src": "14655:8:5", + "valueSize": 1 + }, + { + "declaration": 1782, + "isOffset": false, + "isSlot": false, + "src": "14810:8:5", + "valueSize": 1 + }, + { + "declaration": 1782, + "isOffset": false, + "isSlot": false, + "src": "14925:8:5", + "valueSize": 1 + }, + { + "declaration": 1782, + "isOffset": false, + "isSlot": false, + "src": "16384:8:5", + "valueSize": 1 + }, + { + "declaration": 1788, + "isOffset": false, + "isSlot": false, + "src": "14893:2:5", + "valueSize": 1 + }, + { + "declaration": 1788, + "isOffset": false, + "isSlot": false, + "src": "14994:2:5", + "valueSize": 1 + }, + { + "declaration": 1788, + "isOffset": false, + "isSlot": false, + "src": "15099:2:5", + "valueSize": 1 + }, + { + "declaration": 1788, + "isOffset": false, + "isSlot": false, + "src": "15204:2:5", + "valueSize": 1 + }, + { + "declaration": 1788, + "isOffset": false, + "isSlot": false, + "src": "15343:2:5", + "valueSize": 1 + }, + { + "declaration": 1788, + "isOffset": false, + "isSlot": false, + "src": "15785:2:5", + "valueSize": 1 + }, + { + "declaration": 1788, + "isOffset": false, + "isSlot": false, + "src": "15804:2:5", + "valueSize": 1 + }, + { + "declaration": 1788, + "isOffset": false, + "isSlot": false, + "src": "15923:2:5", + "valueSize": 1 + }, + { + "declaration": 1788, + "isOffset": false, + "isSlot": false, + "src": "15940:2:5", + "valueSize": 1 + }, + { + "declaration": 1788, + "isOffset": false, + "isSlot": false, + "src": "17068:2:5", + "valueSize": 1 + }, + { + "declaration": 1788, + "isOffset": false, + "isSlot": false, + "src": "17174:2:5", + "valueSize": 1 + }, + { + "declaration": 1788, + "isOffset": false, + "isSlot": false, + "src": "17519:2:5", + "valueSize": 1 + }, + { + "declaration": 1788, + "isOffset": false, + "isSlot": false, + "src": "18146:2:5", + "valueSize": 1 + }, + { + "declaration": 1788, + "isOffset": false, + "isSlot": false, + "src": "18171:2:5", + "valueSize": 1 + }, + { + "declaration": 1788, + "isOffset": false, + "isSlot": false, + "src": "18377:2:5", + "valueSize": 1 + }, + { + "declaration": 1788, + "isOffset": false, + "isSlot": false, + "src": "18394:2:5", + "valueSize": 1 + }, + { + "declaration": 1788, + "isOffset": false, + "isSlot": false, + "src": "18998:2:5", + "valueSize": 1 + }, + { + "declaration": 1788, + "isOffset": false, + "isSlot": false, + "src": "19011:2:5", + "valueSize": 1 + }, + { + "declaration": 1788, + "isOffset": false, + "isSlot": false, + "src": "19504:2:5", + "valueSize": 1 + }, + { + "declaration": 1791, + "isOffset": false, + "isSlot": false, + "src": "15367:3:5", + "valueSize": 1 + }, + { + "declaration": 1791, + "isOffset": false, + "isSlot": false, + "src": "15863:3:5", + "valueSize": 1 + }, + { + "declaration": 1791, + "isOffset": false, + "isSlot": false, + "src": "15881:3:5", + "valueSize": 1 + }, + { + "declaration": 1791, + "isOffset": false, + "isSlot": false, + "src": "17210:3:5", + "valueSize": 1 + }, + { + "declaration": 1791, + "isOffset": false, + "isSlot": false, + "src": "17452:3:5", + "valueSize": 1 + }, + { + "declaration": 1791, + "isOffset": false, + "isSlot": false, + "src": "18305:3:5", + "valueSize": 1 + }, + { + "declaration": 1791, + "isOffset": false, + "isSlot": false, + "src": "18323:3:5", + "valueSize": 1 + }, + { + "declaration": 1791, + "isOffset": false, + "isSlot": false, + "src": "19046:3:5", + "valueSize": 1 + }, + { + "declaration": 1791, + "isOffset": false, + "isSlot": false, + "src": "19060:3:5", + "valueSize": 1 + } + ], + "id": 1862, + "nodeType": "InlineAssembly", + "src": "14586:5830:5" + } + ] + }, + { + "expression": { + "id": 1864, + "name": "X", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1785, + "src": "20474:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1786, + "id": 1865, + "nodeType": "Return", + "src": "20467:8:5" + } + ] + }, + "documentation": { + "id": 1774, + "nodeType": "StructuredDocumentation", + "src": "13729:161:5", + "text": " @dev Computation of uG+vQ using Strauss-Shamir's trick, G basepoint, Q public key\n Returns only x for ECDSA use \n " + }, + "id": 1867, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ecZZ_mulmuladd_S_asm", + "nameLocation": "13904:20:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1783, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1776, + "mutability": "mutable", + "name": "Q0", + "nameLocation": "13942:2:5", + "nodeType": "VariableDeclaration", + "scope": 1867, + "src": "13934:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1775, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13934:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1778, + "mutability": "mutable", + "name": "Q1", + "nameLocation": "13962:2:5", + "nodeType": "VariableDeclaration", + "scope": 1867, + "src": "13954:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1777, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13954:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1780, + "mutability": "mutable", + "name": "scalar_u", + "nameLocation": "14013:8:5", + "nodeType": "VariableDeclaration", + "scope": 1867, + "src": "14005:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1779, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14005:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1782, + "mutability": "mutable", + "name": "scalar_v", + "nameLocation": "14039:8:5", + "nodeType": "VariableDeclaration", + "scope": 1867, + "src": "14031:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1781, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14031:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "13924:129:5" + }, + "returnParameters": { + "id": 1786, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1785, + "mutability": "mutable", + "name": "X", + "nameLocation": "14085:1:5", + "nodeType": "VariableDeclaration", + "scope": 1867, + "src": "14077:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1784, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14077:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "14076:11:5" + }, + "scope": 2309, + "src": "13895:6587:5", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1940, + "nodeType": "Block", + "src": "20871:6233:5", + "statements": [ + { + "assignments": [ + 1884 + ], + "declarations": [ + { + "constant": false, + "id": 1884, + "mutability": "mutable", + "name": "zz", + "nameLocation": "20889:2:5", + "nodeType": "VariableDeclaration", + "scope": 1940, + "src": "20881:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1883, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20881:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1885, + "nodeType": "VariableDeclarationStatement", + "src": "20881:10:5" + }, + { + "assignments": [ + 1887 + ], + "declarations": [ + { + "constant": false, + "id": 1887, + "mutability": "mutable", + "name": "zzz", + "nameLocation": "20909:3:5", + "nodeType": "VariableDeclaration", + "scope": 1940, + "src": "20901:11:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1886, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20901:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1888, + "nodeType": "VariableDeclarationStatement", + "src": "20901:11:5" + }, + { + "assignments": [ + 1890 + ], + "declarations": [ + { + "constant": false, + "id": 1890, + "mutability": "mutable", + "name": "index", + "nameLocation": "20930:5:5", + "nodeType": "VariableDeclaration", + "scope": 1940, + "src": "20922:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1889, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20922:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1892, + "initialValue": { + "hexValue": "323535", + "id": 1891, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20938:3:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_255_by_1", + "typeString": "int_const 255" + }, + "value": "255" + }, + "nodeType": "VariableDeclarationStatement", + "src": "20922:19:5" + }, + { + "assignments": [ + 1898 + ], + "declarations": [ + { + "constant": false, + "id": 1898, + "mutability": "mutable", + "name": "T", + "nameLocation": "20969:1:5", + "nodeType": "VariableDeclaration", + "scope": 1940, + "src": "20951:19:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6]" + }, + "typeName": { + "baseType": { + "id": 1896, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20951:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1897, + "length": { + "hexValue": "36", + "id": 1895, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20959:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_6_by_1", + "typeString": "int_const 6" + }, + "value": "6" + }, + "nodeType": "ArrayTypeName", + "src": "20951:10:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_storage_ptr", + "typeString": "uint256[6]" + } + }, + "visibility": "internal" + } + ], + "id": 1899, + "nodeType": "VariableDeclarationStatement", + "src": "20951:19:5" + }, + { + "assignments": [ + 1905 + ], + "declarations": [ + { + "constant": false, + "id": 1905, + "mutability": "mutable", + "name": "H", + "nameLocation": "20998:1:5", + "nodeType": "VariableDeclaration", + "scope": 1940, + "src": "20980:19:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr", + "typeString": "uint256[2]" + }, + "typeName": { + "baseType": { + "id": 1903, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20980:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1904, + "length": { + "hexValue": "32", + "id": 1902, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20988:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "ArrayTypeName", + "src": "20980:10:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr", + "typeString": "uint256[2]" + } + }, + "visibility": "internal" + } + ], + "id": 1906, + "nodeType": "VariableDeclarationStatement", + "src": "20980:19:5" + }, + { + "id": 1935, + "nodeType": "UncheckedBlock", + "src": "21011:6048:5", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1913, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1909, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1907, + "name": "scalar_u", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1874, + "src": "21039:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1908, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21051:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "21039:13:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1912, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1910, + "name": "scalar_v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1876, + "src": "21056:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1911, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21068:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "21056:13:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "21039:30:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1918, + "nodeType": "IfStatement", + "src": "21035:48:5", + "trueBody": { + "expression": { + "components": [ + { + "hexValue": "30", + "id": 1914, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21079:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "hexValue": "30", + "id": 1915, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21081:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 1916, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "21078:5:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_rational_0_by_1_$", + "typeString": "tuple(int_const 0,int_const 0)" + } + }, + "functionReturnParameters": 1882, + "id": 1917, + "nodeType": "Return", + "src": "21071:12:5" + } + }, + { + "expression": { + "id": 1932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "components": [ + { + "baseExpression": { + "id": 1919, + "name": "H", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1905, + "src": "21099:1:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr", + "typeString": "uint256[2] memory" + } + }, + "id": 1921, + "indexExpression": { + "hexValue": "30", + "id": 1920, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21101:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "21099:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "baseExpression": { + "id": 1922, + "name": "H", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1905, + "src": "21105:1:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr", + "typeString": "uint256[2] memory" + } + }, + "id": 1924, + "indexExpression": { + "hexValue": "31", + "id": 1923, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21107:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "21105:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1925, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "21098:12:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1927, + "name": "gx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 985, + "src": "21123:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1928, + "name": "gy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 988, + "src": "21127:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1929, + "name": "Q0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1870, + "src": "21131:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1930, + "name": "Q1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1872, + "src": "21135:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1926, + "name": "ecAff_add", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1773, + "src": "21113:9:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256,uint256) view returns (uint256,uint256)" + } + }, + "id": 1931, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21113:25:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "src": "21098:40:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1933, + "nodeType": "ExpressionStatement", + "src": "21098:40:5" + }, + { + "AST": { + "nativeSrc": "21216:5818:5", + "nodeType": "YulBlock", + "src": "21216:5818:5", + "statements": [ + { + "body": { + "nativeSrc": "21495:2:5", + "nodeType": "YulBlock", + "src": "21495:2:5", + "statements": [] + }, + "condition": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "21327:2:5", + "nodeType": "YulIdentifier", + "src": "21327:2:5" + }, + { + "kind": "number", + "nativeSrc": "21331:1:5", + "nodeType": "YulLiteral", + "src": "21331:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "21324:2:5", + "nodeType": "YulIdentifier", + "src": "21324:2:5" + }, + "nativeSrc": "21324:9:5", + "nodeType": "YulFunctionCall", + "src": "21324:9:5" + }, + "nativeSrc": "21234:263:5", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "21334:160:5", + "nodeType": "YulBlock", + "src": "21334:160:5", + "statements": [ + { + "nativeSrc": "21356:22:5", + "nodeType": "YulAssignment", + "src": "21356:22:5", + "value": { + "arguments": [ + { + "name": "index", + "nativeSrc": "21369:5:5", + "nodeType": "YulIdentifier", + "src": "21369:5:5" + }, + { + "kind": "number", + "nativeSrc": "21376:1:5", + "nodeType": "YulLiteral", + "src": "21376:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "21365:3:5", + "nodeType": "YulIdentifier", + "src": "21365:3:5" + }, + "nativeSrc": "21365:13:5", + "nodeType": "YulFunctionCall", + "src": "21365:13:5" + }, + "variableNames": [ + { + "name": "index", + "nativeSrc": "21356:5:5", + "nodeType": "YulIdentifier", + "src": "21356:5:5" + } + ] + }, + { + "nativeSrc": "21399:77:5", + "nodeType": "YulAssignment", + "src": "21399:77:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21413:1:5", + "nodeType": "YulLiteral", + "src": "21413:1:5", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "21424:5:5", + "nodeType": "YulIdentifier", + "src": "21424:5:5" + }, + { + "name": "scalar_v", + "nativeSrc": "21431:8:5", + "nodeType": "YulIdentifier", + "src": "21431:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "21420:3:5", + "nodeType": "YulIdentifier", + "src": "21420:3:5" + }, + "nativeSrc": "21420:20:5", + "nodeType": "YulFunctionCall", + "src": "21420:20:5" + }, + { + "kind": "number", + "nativeSrc": "21442:1:5", + "nodeType": "YulLiteral", + "src": "21442:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "21416:3:5", + "nodeType": "YulIdentifier", + "src": "21416:3:5" + }, + "nativeSrc": "21416:28:5", + "nodeType": "YulFunctionCall", + "src": "21416:28:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "21409:3:5", + "nodeType": "YulIdentifier", + "src": "21409:3:5" + }, + "nativeSrc": "21409:36:5", + "nodeType": "YulFunctionCall", + "src": "21409:36:5" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "21455:5:5", + "nodeType": "YulIdentifier", + "src": "21455:5:5" + }, + { + "name": "scalar_u", + "nativeSrc": "21462:8:5", + "nodeType": "YulIdentifier", + "src": "21462:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "21451:3:5", + "nodeType": "YulIdentifier", + "src": "21451:3:5" + }, + "nativeSrc": "21451:20:5", + "nodeType": "YulFunctionCall", + "src": "21451:20:5" + }, + { + "kind": "number", + "nativeSrc": "21473:1:5", + "nodeType": "YulLiteral", + "src": "21473:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "21447:3:5", + "nodeType": "YulIdentifier", + "src": "21447:3:5" + }, + "nativeSrc": "21447:28:5", + "nodeType": "YulFunctionCall", + "src": "21447:28:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21405:3:5", + "nodeType": "YulIdentifier", + "src": "21405:3:5" + }, + "nativeSrc": "21405:71:5", + "nodeType": "YulFunctionCall", + "src": "21405:71:5" + }, + "variableNames": [ + { + "name": "T4", + "nativeSrc": "21399:2:5", + "nodeType": "YulIdentifier", + "src": "21399:2:5" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "21238:85:5", + "nodeType": "YulBlock", + "src": "21238:85:5", + "statements": [ + { + "nativeSrc": "21240:81:5", + "nodeType": "YulVariableDeclaration", + "src": "21240:81:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21258:1:5", + "nodeType": "YulLiteral", + "src": "21258:1:5", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "21269:5:5", + "nodeType": "YulIdentifier", + "src": "21269:5:5" + }, + { + "name": "scalar_v", + "nativeSrc": "21276:8:5", + "nodeType": "YulIdentifier", + "src": "21276:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "21265:3:5", + "nodeType": "YulIdentifier", + "src": "21265:3:5" + }, + "nativeSrc": "21265:20:5", + "nodeType": "YulFunctionCall", + "src": "21265:20:5" + }, + { + "kind": "number", + "nativeSrc": "21287:1:5", + "nodeType": "YulLiteral", + "src": "21287:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "21261:3:5", + "nodeType": "YulIdentifier", + "src": "21261:3:5" + }, + "nativeSrc": "21261:28:5", + "nodeType": "YulFunctionCall", + "src": "21261:28:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "21254:3:5", + "nodeType": "YulIdentifier", + "src": "21254:3:5" + }, + "nativeSrc": "21254:36:5", + "nodeType": "YulFunctionCall", + "src": "21254:36:5" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "21300:5:5", + "nodeType": "YulIdentifier", + "src": "21300:5:5" + }, + { + "name": "scalar_u", + "nativeSrc": "21307:8:5", + "nodeType": "YulIdentifier", + "src": "21307:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "21296:3:5", + "nodeType": "YulIdentifier", + "src": "21296:3:5" + }, + "nativeSrc": "21296:20:5", + "nodeType": "YulFunctionCall", + "src": "21296:20:5" + }, + { + "kind": "number", + "nativeSrc": "21318:1:5", + "nodeType": "YulLiteral", + "src": "21318:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "21292:3:5", + "nodeType": "YulIdentifier", + "src": "21292:3:5" + }, + "nativeSrc": "21292:28:5", + "nodeType": "YulFunctionCall", + "src": "21292:28:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21250:3:5", + "nodeType": "YulIdentifier", + "src": "21250:3:5" + }, + "nativeSrc": "21250:71:5", + "nodeType": "YulFunctionCall", + "src": "21250:71:5" + }, + "variables": [ + { + "name": "T4", + "nativeSrc": "21244:2:5", + "nodeType": "YulTypedName", + "src": "21244:2:5", + "type": "" + } + ] + } + ] + }, + "src": "21234:263:5" + }, + { + "nativeSrc": "21514:77:5", + "nodeType": "YulAssignment", + "src": "21514:77:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21528:1:5", + "nodeType": "YulLiteral", + "src": "21528:1:5", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "21539:5:5", + "nodeType": "YulIdentifier", + "src": "21539:5:5" + }, + { + "name": "scalar_v", + "nativeSrc": "21546:8:5", + "nodeType": "YulIdentifier", + "src": "21546:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "21535:3:5", + "nodeType": "YulIdentifier", + "src": "21535:3:5" + }, + "nativeSrc": "21535:20:5", + "nodeType": "YulFunctionCall", + "src": "21535:20:5" + }, + { + "kind": "number", + "nativeSrc": "21557:1:5", + "nodeType": "YulLiteral", + "src": "21557:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "21531:3:5", + "nodeType": "YulIdentifier", + "src": "21531:3:5" + }, + "nativeSrc": "21531:28:5", + "nodeType": "YulFunctionCall", + "src": "21531:28:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "21524:3:5", + "nodeType": "YulIdentifier", + "src": "21524:3:5" + }, + "nativeSrc": "21524:36:5", + "nodeType": "YulFunctionCall", + "src": "21524:36:5" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "21570:5:5", + "nodeType": "YulIdentifier", + "src": "21570:5:5" + }, + { + "name": "scalar_u", + "nativeSrc": "21577:8:5", + "nodeType": "YulIdentifier", + "src": "21577:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "21566:3:5", + "nodeType": "YulIdentifier", + "src": "21566:3:5" + }, + "nativeSrc": "21566:20:5", + "nodeType": "YulFunctionCall", + "src": "21566:20:5" + }, + { + "kind": "number", + "nativeSrc": "21588:1:5", + "nodeType": "YulLiteral", + "src": "21588:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "21562:3:5", + "nodeType": "YulIdentifier", + "src": "21562:3:5" + }, + "nativeSrc": "21562:28:5", + "nodeType": "YulFunctionCall", + "src": "21562:28:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21520:3:5", + "nodeType": "YulIdentifier", + "src": "21520:3:5" + }, + "nativeSrc": "21520:71:5", + "nodeType": "YulFunctionCall", + "src": "21520:71:5" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "21514:2:5", + "nodeType": "YulIdentifier", + "src": "21514:2:5" + } + ] + }, + { + "body": { + "nativeSrc": "21622:75:5", + "nodeType": "YulBlock", + "src": "21622:75:5", + "statements": [ + { + "nativeSrc": "21644:7:5", + "nodeType": "YulAssignment", + "src": "21644:7:5", + "value": { + "name": "gx", + "nativeSrc": "21649:2:5", + "nodeType": "YulIdentifier", + "src": "21649:2:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "21644:1:5", + "nodeType": "YulIdentifier", + "src": "21644:1:5" + } + ] + }, + { + "nativeSrc": "21672:7:5", + "nodeType": "YulAssignment", + "src": "21672:7:5", + "value": { + "name": "gy", + "nativeSrc": "21677:2:5", + "nodeType": "YulIdentifier", + "src": "21677:2:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "21672:1:5", + "nodeType": "YulIdentifier", + "src": "21672:1:5" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "zz", + "nativeSrc": "21615:2:5", + "nodeType": "YulIdentifier", + "src": "21615:2:5" + }, + { + "kind": "number", + "nativeSrc": "21619:1:5", + "nodeType": "YulLiteral", + "src": "21619:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "21612:2:5", + "nodeType": "YulIdentifier", + "src": "21612:2:5" + }, + "nativeSrc": "21612:9:5", + "nodeType": "YulFunctionCall", + "src": "21612:9:5" + }, + "nativeSrc": "21609:88:5", + "nodeType": "YulIf", + "src": "21609:88:5" + }, + { + "body": { + "nativeSrc": "21727:75:5", + "nodeType": "YulBlock", + "src": "21727:75:5", + "statements": [ + { + "nativeSrc": "21749:7:5", + "nodeType": "YulAssignment", + "src": "21749:7:5", + "value": { + "name": "Q0", + "nativeSrc": "21754:2:5", + "nodeType": "YulIdentifier", + "src": "21754:2:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "21749:1:5", + "nodeType": "YulIdentifier", + "src": "21749:1:5" + } + ] + }, + { + "nativeSrc": "21777:7:5", + "nodeType": "YulAssignment", + "src": "21777:7:5", + "value": { + "name": "Q1", + "nativeSrc": "21782:2:5", + "nodeType": "YulIdentifier", + "src": "21782:2:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "21777:1:5", + "nodeType": "YulIdentifier", + "src": "21777:1:5" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "zz", + "nativeSrc": "21720:2:5", + "nodeType": "YulIdentifier", + "src": "21720:2:5" + }, + { + "kind": "number", + "nativeSrc": "21724:1:5", + "nodeType": "YulLiteral", + "src": "21724:1:5", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "21717:2:5", + "nodeType": "YulIdentifier", + "src": "21717:2:5" + }, + "nativeSrc": "21717:9:5", + "nodeType": "YulFunctionCall", + "src": "21717:9:5" + }, + "nativeSrc": "21714:88:5", + "nodeType": "YulIf", + "src": "21714:88:5" + }, + { + "body": { + "nativeSrc": "21832:95:5", + "nodeType": "YulBlock", + "src": "21832:95:5", + "statements": [ + { + "nativeSrc": "21854:21:5", + "nodeType": "YulAssignment", + "src": "21854:21:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "H", + "nativeSrc": "21869:1:5", + "nodeType": "YulIdentifier", + "src": "21869:1:5" + }, + { + "kind": "number", + "nativeSrc": "21871:2:5", + "nodeType": "YulLiteral", + "src": "21871:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21865:3:5", + "nodeType": "YulIdentifier", + "src": "21865:3:5" + }, + "nativeSrc": "21865:9:5", + "nodeType": "YulFunctionCall", + "src": "21865:9:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "21859:5:5", + "nodeType": "YulIdentifier", + "src": "21859:5:5" + }, + "nativeSrc": "21859:16:5", + "nodeType": "YulFunctionCall", + "src": "21859:16:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "21854:1:5", + "nodeType": "YulIdentifier", + "src": "21854:1:5" + } + ] + }, + { + "nativeSrc": "21896:13:5", + "nodeType": "YulAssignment", + "src": "21896:13:5", + "value": { + "arguments": [ + { + "name": "H", + "nativeSrc": "21907:1:5", + "nodeType": "YulIdentifier", + "src": "21907:1:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "21901:5:5", + "nodeType": "YulIdentifier", + "src": "21901:5:5" + }, + "nativeSrc": "21901:8:5", + "nodeType": "YulFunctionCall", + "src": "21901:8:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "21896:1:5", + "nodeType": "YulIdentifier", + "src": "21896:1:5" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "zz", + "nativeSrc": "21825:2:5", + "nodeType": "YulIdentifier", + "src": "21825:2:5" + }, + { + "kind": "number", + "nativeSrc": "21829:1:5", + "nodeType": "YulLiteral", + "src": "21829:1:5", + "type": "", + "value": "3" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "21822:2:5", + "nodeType": "YulIdentifier", + "src": "21822:2:5" + }, + "nativeSrc": "21822:9:5", + "nodeType": "YulFunctionCall", + "src": "21822:9:5" + }, + "nativeSrc": "21819:108:5", + "nodeType": "YulIf", + "src": "21819:108:5" + }, + { + "nativeSrc": "21945:22:5", + "nodeType": "YulAssignment", + "src": "21945:22:5", + "value": { + "arguments": [ + { + "name": "index", + "nativeSrc": "21958:5:5", + "nodeType": "YulIdentifier", + "src": "21958:5:5" + }, + { + "kind": "number", + "nativeSrc": "21965:1:5", + "nodeType": "YulLiteral", + "src": "21965:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "21954:3:5", + "nodeType": "YulIdentifier", + "src": "21954:3:5" + }, + "nativeSrc": "21954:13:5", + "nodeType": "YulFunctionCall", + "src": "21954:13:5" + }, + "variableNames": [ + { + "name": "index", + "nativeSrc": "21945:5:5", + "nodeType": "YulIdentifier", + "src": "21945:5:5" + } + ] + }, + { + "nativeSrc": "21984:7:5", + "nodeType": "YulAssignment", + "src": "21984:7:5", + "value": { + "kind": "number", + "nativeSrc": "21990:1:5", + "nodeType": "YulLiteral", + "src": "21990:1:5", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "21984:2:5", + "nodeType": "YulIdentifier", + "src": "21984:2:5" + } + ] + }, + { + "nativeSrc": "22008:8:5", + "nodeType": "YulAssignment", + "src": "22008:8:5", + "value": { + "kind": "number", + "nativeSrc": "22015:1:5", + "nodeType": "YulLiteral", + "src": "22015:1:5", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "zzz", + "nativeSrc": "22008:3:5", + "nodeType": "YulIdentifier", + "src": "22008:3:5" + } + ] + }, + { + "body": { + "nativeSrc": "22087:3992:5", + "nodeType": "YulBlock", + "src": "22087:3992:5", + "statements": [ + { + "nativeSrc": "22149:25:5", + "nodeType": "YulVariableDeclaration", + "src": "22149:25:5", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22166:1:5", + "nodeType": "YulLiteral", + "src": "22166:1:5", + "type": "", + "value": "2" + }, + { + "name": "Y", + "nativeSrc": "22169:1:5", + "nodeType": "YulIdentifier", + "src": "22169:1:5" + }, + { + "name": "p", + "nativeSrc": "22172:1:5", + "nodeType": "YulIdentifier", + "src": "22172:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "22159:6:5", + "nodeType": "YulIdentifier", + "src": "22159:6:5" + }, + "nativeSrc": "22159:15:5", + "nodeType": "YulFunctionCall", + "src": "22159:15:5" + }, + "variables": [ + { + "name": "T1", + "nativeSrc": "22153:2:5", + "nodeType": "YulTypedName", + "src": "22153:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "22214:27:5", + "nodeType": "YulVariableDeclaration", + "src": "22214:27:5", + "value": { + "arguments": [ + { + "name": "T1", + "nativeSrc": "22231:2:5", + "nodeType": "YulIdentifier", + "src": "22231:2:5" + }, + { + "name": "T1", + "nativeSrc": "22235:2:5", + "nodeType": "YulIdentifier", + "src": "22235:2:5" + }, + { + "name": "p", + "nativeSrc": "22239:1:5", + "nodeType": "YulIdentifier", + "src": "22239:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "22224:6:5", + "nodeType": "YulIdentifier", + "src": "22224:6:5" + }, + "nativeSrc": "22224:17:5", + "nodeType": "YulFunctionCall", + "src": "22224:17:5" + }, + "variables": [ + { + "name": "T2", + "nativeSrc": "22218:2:5", + "nodeType": "YulTypedName", + "src": "22218:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "22271:26:5", + "nodeType": "YulVariableDeclaration", + "src": "22271:26:5", + "value": { + "arguments": [ + { + "name": "X", + "nativeSrc": "22288:1:5", + "nodeType": "YulIdentifier", + "src": "22288:1:5" + }, + { + "name": "T2", + "nativeSrc": "22291:2:5", + "nodeType": "YulIdentifier", + "src": "22291:2:5" + }, + { + "name": "p", + "nativeSrc": "22295:1:5", + "nodeType": "YulIdentifier", + "src": "22295:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "22281:6:5", + "nodeType": "YulIdentifier", + "src": "22281:6:5" + }, + "nativeSrc": "22281:16:5", + "nodeType": "YulFunctionCall", + "src": "22281:16:5" + }, + "variables": [ + { + "name": "T3", + "nativeSrc": "22275:2:5", + "nodeType": "YulTypedName", + "src": "22275:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "22330:23:5", + "nodeType": "YulAssignment", + "src": "22330:23:5", + "value": { + "arguments": [ + { + "name": "T1", + "nativeSrc": "22343:2:5", + "nodeType": "YulIdentifier", + "src": "22343:2:5" + }, + { + "name": "T2", + "nativeSrc": "22347:2:5", + "nodeType": "YulIdentifier", + "src": "22347:2:5" + }, + { + "name": "p", + "nativeSrc": "22351:1:5", + "nodeType": "YulIdentifier", + "src": "22351:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "22336:6:5", + "nodeType": "YulIdentifier", + "src": "22336:6:5" + }, + "nativeSrc": "22336:17:5", + "nodeType": "YulFunctionCall", + "src": "22336:17:5" + }, + "variableNames": [ + { + "name": "T1", + "nativeSrc": "22330:2:5", + "nodeType": "YulIdentifier", + "src": "22330:2:5" + } + ] + }, + { + "nativeSrc": "22382:77:5", + "nodeType": "YulVariableDeclaration", + "src": "22382:77:5", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22399:1:5", + "nodeType": "YulLiteral", + "src": "22399:1:5", + "type": "", + "value": "3" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "X", + "nativeSrc": "22416:1:5", + "nodeType": "YulIdentifier", + "src": "22416:1:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "22423:1:5", + "nodeType": "YulIdentifier", + "src": "22423:1:5" + }, + { + "name": "zz", + "nativeSrc": "22426:2:5", + "nodeType": "YulIdentifier", + "src": "22426:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "22419:3:5", + "nodeType": "YulIdentifier", + "src": "22419:3:5" + }, + "nativeSrc": "22419:10:5", + "nodeType": "YulFunctionCall", + "src": "22419:10:5" + }, + { + "name": "p", + "nativeSrc": "22431:1:5", + "nodeType": "YulIdentifier", + "src": "22431:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "22409:6:5", + "nodeType": "YulIdentifier", + "src": "22409:6:5" + }, + "nativeSrc": "22409:24:5", + "nodeType": "YulFunctionCall", + "src": "22409:24:5" + }, + { + "arguments": [ + { + "name": "X", + "nativeSrc": "22442:1:5", + "nodeType": "YulIdentifier", + "src": "22442:1:5" + }, + { + "name": "zz", + "nativeSrc": "22445:2:5", + "nodeType": "YulIdentifier", + "src": "22445:2:5" + }, + { + "name": "p", + "nativeSrc": "22449:1:5", + "nodeType": "YulIdentifier", + "src": "22449:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "22435:6:5", + "nodeType": "YulIdentifier", + "src": "22435:6:5" + }, + "nativeSrc": "22435:16:5", + "nodeType": "YulFunctionCall", + "src": "22435:16:5" + }, + { + "name": "p", + "nativeSrc": "22453:1:5", + "nodeType": "YulIdentifier", + "src": "22453:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "22402:6:5", + "nodeType": "YulIdentifier", + "src": "22402:6:5" + }, + "nativeSrc": "22402:53:5", + "nodeType": "YulFunctionCall", + "src": "22402:53:5" + }, + { + "name": "p", + "nativeSrc": "22457:1:5", + "nodeType": "YulIdentifier", + "src": "22457:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "22392:6:5", + "nodeType": "YulIdentifier", + "src": "22392:6:5" + }, + "nativeSrc": "22392:67:5", + "nodeType": "YulFunctionCall", + "src": "22392:67:5" + }, + "variables": [ + { + "name": "T4", + "nativeSrc": "22386:2:5", + "nodeType": "YulTypedName", + "src": "22386:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "22504:25:5", + "nodeType": "YulAssignment", + "src": "22504:25:5", + "value": { + "arguments": [ + { + "name": "T1", + "nativeSrc": "22518:2:5", + "nodeType": "YulIdentifier", + "src": "22518:2:5" + }, + { + "name": "zzz", + "nativeSrc": "22522:3:5", + "nodeType": "YulIdentifier", + "src": "22522:3:5" + }, + { + "name": "p", + "nativeSrc": "22527:1:5", + "nodeType": "YulIdentifier", + "src": "22527:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "22511:6:5", + "nodeType": "YulIdentifier", + "src": "22511:6:5" + }, + "nativeSrc": "22511:18:5", + "nodeType": "YulFunctionCall", + "src": "22511:18:5" + }, + "variableNames": [ + { + "name": "zzz", + "nativeSrc": "22504:3:5", + "nodeType": "YulIdentifier", + "src": "22504:3:5" + } + ] + }, + { + "nativeSrc": "22564:23:5", + "nodeType": "YulAssignment", + "src": "22564:23:5", + "value": { + "arguments": [ + { + "name": "T2", + "nativeSrc": "22577:2:5", + "nodeType": "YulIdentifier", + "src": "22577:2:5" + }, + { + "name": "zz", + "nativeSrc": "22581:2:5", + "nodeType": "YulIdentifier", + "src": "22581:2:5" + }, + { + "name": "p", + "nativeSrc": "22585:1:5", + "nodeType": "YulIdentifier", + "src": "22585:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "22570:6:5", + "nodeType": "YulIdentifier", + "src": "22570:6:5" + }, + "nativeSrc": "22570:17:5", + "nodeType": "YulFunctionCall", + "src": "22570:17:5" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "22564:2:5", + "nodeType": "YulIdentifier", + "src": "22564:2:5" + } + ] + }, + { + "nativeSrc": "22629:57:5", + "nodeType": "YulAssignment", + "src": "22629:57:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "T4", + "nativeSrc": "22648:2:5", + "nodeType": "YulIdentifier", + "src": "22648:2:5" + }, + { + "name": "T4", + "nativeSrc": "22652:2:5", + "nodeType": "YulIdentifier", + "src": "22652:2:5" + }, + { + "name": "p", + "nativeSrc": "22656:1:5", + "nodeType": "YulIdentifier", + "src": "22656:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "22641:6:5", + "nodeType": "YulIdentifier", + "src": "22641:6:5" + }, + "nativeSrc": "22641:17:5", + "nodeType": "YulFunctionCall", + "src": "22641:17:5" + }, + { + "arguments": [ + { + "name": "minus_2", + "nativeSrc": "22667:7:5", + "nodeType": "YulIdentifier", + "src": "22667:7:5" + }, + { + "name": "T3", + "nativeSrc": "22676:2:5", + "nodeType": "YulIdentifier", + "src": "22676:2:5" + }, + { + "name": "p", + "nativeSrc": "22680:1:5", + "nodeType": "YulIdentifier", + "src": "22680:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "22660:6:5", + "nodeType": "YulIdentifier", + "src": "22660:6:5" + }, + "nativeSrc": "22660:22:5", + "nodeType": "YulFunctionCall", + "src": "22660:22:5" + }, + { + "name": "p", + "nativeSrc": "22684:1:5", + "nodeType": "YulIdentifier", + "src": "22684:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "22634:6:5", + "nodeType": "YulIdentifier", + "src": "22634:6:5" + }, + "nativeSrc": "22634:52:5", + "nodeType": "YulFunctionCall", + "src": "22634:52:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "22629:1:5", + "nodeType": "YulIdentifier", + "src": "22629:1:5" + } + ] + }, + { + "nativeSrc": "22719:45:5", + "nodeType": "YulAssignment", + "src": "22719:45:5", + "value": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "22732:2:5", + "nodeType": "YulIdentifier", + "src": "22732:2:5" + }, + { + "arguments": [ + { + "name": "X", + "nativeSrc": "22743:1:5", + "nodeType": "YulIdentifier", + "src": "22743:1:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "22750:1:5", + "nodeType": "YulIdentifier", + "src": "22750:1:5" + }, + { + "name": "T3", + "nativeSrc": "22753:2:5", + "nodeType": "YulIdentifier", + "src": "22753:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "22746:3:5", + "nodeType": "YulIdentifier", + "src": "22746:3:5" + }, + "nativeSrc": "22746:10:5", + "nodeType": "YulFunctionCall", + "src": "22746:10:5" + }, + { + "name": "p", + "nativeSrc": "22758:1:5", + "nodeType": "YulIdentifier", + "src": "22758:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "22736:6:5", + "nodeType": "YulIdentifier", + "src": "22736:6:5" + }, + "nativeSrc": "22736:24:5", + "nodeType": "YulFunctionCall", + "src": "22736:24:5" + }, + { + "name": "p", + "nativeSrc": "22762:1:5", + "nodeType": "YulIdentifier", + "src": "22762:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "22725:6:5", + "nodeType": "YulIdentifier", + "src": "22725:6:5" + }, + "nativeSrc": "22725:39:5", + "nodeType": "YulFunctionCall", + "src": "22725:39:5" + }, + "variableNames": [ + { + "name": "T2", + "nativeSrc": "22719:2:5", + "nodeType": "YulIdentifier", + "src": "22719:2:5" + } + ] + }, + { + "nativeSrc": "22804:36:5", + "nodeType": "YulAssignment", + "src": "22804:36:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "T1", + "nativeSrc": "22823:2:5", + "nodeType": "YulIdentifier", + "src": "22823:2:5" + }, + { + "name": "Y", + "nativeSrc": "22827:1:5", + "nodeType": "YulIdentifier", + "src": "22827:1:5" + }, + { + "name": "p", + "nativeSrc": "22830:1:5", + "nodeType": "YulIdentifier", + "src": "22830:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "22816:6:5", + "nodeType": "YulIdentifier", + "src": "22816:6:5" + }, + "nativeSrc": "22816:16:5", + "nodeType": "YulFunctionCall", + "src": "22816:16:5" + }, + { + "name": "T2", + "nativeSrc": "22834:2:5", + "nodeType": "YulIdentifier", + "src": "22834:2:5" + }, + { + "name": "p", + "nativeSrc": "22838:1:5", + "nodeType": "YulIdentifier", + "src": "22838:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "22809:6:5", + "nodeType": "YulIdentifier", + "src": "22809:6:5" + }, + "nativeSrc": "22809:31:5", + "nodeType": "YulFunctionCall", + "src": "22809:31:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "22804:1:5", + "nodeType": "YulIdentifier", + "src": "22804:1:5" + } + ] + }, + { + "nativeSrc": "22926:3135:5", + "nodeType": "YulBlock", + "src": "22926:3135:5", + "statements": [ + { + "nativeSrc": "22993:77:5", + "nodeType": "YulAssignment", + "src": "22993:77:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23007:1:5", + "nodeType": "YulLiteral", + "src": "23007:1:5", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "23018:5:5", + "nodeType": "YulIdentifier", + "src": "23018:5:5" + }, + { + "name": "scalar_v", + "nativeSrc": "23025:8:5", + "nodeType": "YulIdentifier", + "src": "23025:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "23014:3:5", + "nodeType": "YulIdentifier", + "src": "23014:3:5" + }, + "nativeSrc": "23014:20:5", + "nodeType": "YulFunctionCall", + "src": "23014:20:5" + }, + { + "kind": "number", + "nativeSrc": "23036:1:5", + "nodeType": "YulLiteral", + "src": "23036:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "23010:3:5", + "nodeType": "YulIdentifier", + "src": "23010:3:5" + }, + "nativeSrc": "23010:28:5", + "nodeType": "YulFunctionCall", + "src": "23010:28:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "23003:3:5", + "nodeType": "YulIdentifier", + "src": "23003:3:5" + }, + "nativeSrc": "23003:36:5", + "nodeType": "YulFunctionCall", + "src": "23003:36:5" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "23049:5:5", + "nodeType": "YulIdentifier", + "src": "23049:5:5" + }, + { + "name": "scalar_u", + "nativeSrc": "23056:8:5", + "nodeType": "YulIdentifier", + "src": "23056:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "23045:3:5", + "nodeType": "YulIdentifier", + "src": "23045:3:5" + }, + "nativeSrc": "23045:20:5", + "nodeType": "YulFunctionCall", + "src": "23045:20:5" + }, + { + "kind": "number", + "nativeSrc": "23067:1:5", + "nodeType": "YulLiteral", + "src": "23067:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "23041:3:5", + "nodeType": "YulIdentifier", + "src": "23041:3:5" + }, + "nativeSrc": "23041:28:5", + "nodeType": "YulFunctionCall", + "src": "23041:28:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22999:3:5", + "nodeType": "YulIdentifier", + "src": "22999:3:5" + }, + "nativeSrc": "22999:71:5", + "nodeType": "YulFunctionCall", + "src": "22999:71:5" + }, + "variableNames": [ + { + "name": "T4", + "nativeSrc": "22993:2:5", + "nodeType": "YulIdentifier", + "src": "22993:2:5" + } + ] + }, + { + "body": { + "nativeSrc": "23110:134:5", + "nodeType": "YulBlock", + "src": "23110:134:5", + "statements": [ + { + "nativeSrc": "23140:14:5", + "nodeType": "YulAssignment", + "src": "23140:14:5", + "value": { + "arguments": [ + { + "name": "p", + "nativeSrc": "23149:1:5", + "nodeType": "YulIdentifier", + "src": "23149:1:5" + }, + { + "name": "Y", + "nativeSrc": "23152:1:5", + "nodeType": "YulIdentifier", + "src": "23152:1:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "23145:3:5", + "nodeType": "YulIdentifier", + "src": "23145:3:5" + }, + "nativeSrc": "23145:9:5", + "nodeType": "YulFunctionCall", + "src": "23145:9:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "23140:1:5", + "nodeType": "YulIdentifier", + "src": "23140:1:5" + } + ] + }, + { + "nativeSrc": "23210:8:5", + "nodeType": "YulContinue", + "src": "23210:8:5" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "23106:2:5", + "nodeType": "YulIdentifier", + "src": "23106:2:5" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "23099:6:5", + "nodeType": "YulIdentifier", + "src": "23099:6:5" + }, + "nativeSrc": "23099:10:5", + "nodeType": "YulFunctionCall", + "src": "23099:10:5" + }, + "nativeSrc": "23096:148:5", + "nodeType": "YulIf", + "src": "23096:148:5" + }, + { + "body": { + "nativeSrc": "23295:101:5", + "nodeType": "YulBlock", + "src": "23295:101:5", + "statements": [ + { + "nativeSrc": "23325:8:5", + "nodeType": "YulAssignment", + "src": "23325:8:5", + "value": { + "name": "gx", + "nativeSrc": "23331:2:5", + "nodeType": "YulIdentifier", + "src": "23331:2:5" + }, + "variableNames": [ + { + "name": "T1", + "nativeSrc": "23325:2:5", + "nodeType": "YulIdentifier", + "src": "23325:2:5" + } + ] + }, + { + "nativeSrc": "23362:8:5", + "nodeType": "YulAssignment", + "src": "23362:8:5", + "value": { + "name": "gy", + "nativeSrc": "23368:2:5", + "nodeType": "YulIdentifier", + "src": "23368:2:5" + }, + "variableNames": [ + { + "name": "T2", + "nativeSrc": "23362:2:5", + "nodeType": "YulIdentifier", + "src": "23362:2:5" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "23288:2:5", + "nodeType": "YulIdentifier", + "src": "23288:2:5" + }, + { + "kind": "number", + "nativeSrc": "23292:1:5", + "nodeType": "YulLiteral", + "src": "23292:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "23285:2:5", + "nodeType": "YulIdentifier", + "src": "23285:2:5" + }, + "nativeSrc": "23285:9:5", + "nodeType": "YulFunctionCall", + "src": "23285:9:5" + }, + "nativeSrc": "23282:114:5", + "nodeType": "YulIf", + "src": "23282:114:5" + }, + { + "body": { + "nativeSrc": "23434:101:5", + "nodeType": "YulBlock", + "src": "23434:101:5", + "statements": [ + { + "nativeSrc": "23464:8:5", + "nodeType": "YulAssignment", + "src": "23464:8:5", + "value": { + "name": "Q0", + "nativeSrc": "23470:2:5", + "nodeType": "YulIdentifier", + "src": "23470:2:5" + }, + "variableNames": [ + { + "name": "T1", + "nativeSrc": "23464:2:5", + "nodeType": "YulIdentifier", + "src": "23464:2:5" + } + ] + }, + { + "nativeSrc": "23501:8:5", + "nodeType": "YulAssignment", + "src": "23501:8:5", + "value": { + "name": "Q1", + "nativeSrc": "23507:2:5", + "nodeType": "YulIdentifier", + "src": "23507:2:5" + }, + "variableNames": [ + { + "name": "T2", + "nativeSrc": "23501:2:5", + "nodeType": "YulIdentifier", + "src": "23501:2:5" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "23427:2:5", + "nodeType": "YulIdentifier", + "src": "23427:2:5" + }, + { + "kind": "number", + "nativeSrc": "23431:1:5", + "nodeType": "YulLiteral", + "src": "23431:1:5", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "23424:2:5", + "nodeType": "YulIdentifier", + "src": "23424:2:5" + }, + "nativeSrc": "23424:9:5", + "nodeType": "YulFunctionCall", + "src": "23424:9:5" + }, + "nativeSrc": "23421:114:5", + "nodeType": "YulIf", + "src": "23421:114:5" + }, + { + "body": { + "nativeSrc": "23573:121:5", + "nodeType": "YulBlock", + "src": "23573:121:5", + "statements": [ + { + "nativeSrc": "23603:14:5", + "nodeType": "YulAssignment", + "src": "23603:14:5", + "value": { + "arguments": [ + { + "name": "H", + "nativeSrc": "23615:1:5", + "nodeType": "YulIdentifier", + "src": "23615:1:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "23609:5:5", + "nodeType": "YulIdentifier", + "src": "23609:5:5" + }, + "nativeSrc": "23609:8:5", + "nodeType": "YulFunctionCall", + "src": "23609:8:5" + }, + "variableNames": [ + { + "name": "T1", + "nativeSrc": "23603:2:5", + "nodeType": "YulIdentifier", + "src": "23603:2:5" + } + ] + }, + { + "nativeSrc": "23646:22:5", + "nodeType": "YulAssignment", + "src": "23646:22:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "H", + "nativeSrc": "23662:1:5", + "nodeType": "YulIdentifier", + "src": "23662:1:5" + }, + { + "kind": "number", + "nativeSrc": "23664:2:5", + "nodeType": "YulLiteral", + "src": "23664:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23658:3:5", + "nodeType": "YulIdentifier", + "src": "23658:3:5" + }, + "nativeSrc": "23658:9:5", + "nodeType": "YulFunctionCall", + "src": "23658:9:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "23652:5:5", + "nodeType": "YulIdentifier", + "src": "23652:5:5" + }, + "nativeSrc": "23652:16:5", + "nodeType": "YulFunctionCall", + "src": "23652:16:5" + }, + "variableNames": [ + { + "name": "T2", + "nativeSrc": "23646:2:5", + "nodeType": "YulIdentifier", + "src": "23646:2:5" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "23566:2:5", + "nodeType": "YulIdentifier", + "src": "23566:2:5" + }, + { + "kind": "number", + "nativeSrc": "23570:1:5", + "nodeType": "YulLiteral", + "src": "23570:1:5", + "type": "", + "value": "3" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "23563:2:5", + "nodeType": "YulIdentifier", + "src": "23563:2:5" + }, + "nativeSrc": "23563:9:5", + "nodeType": "YulFunctionCall", + "src": "23563:9:5" + }, + "nativeSrc": "23560:134:5", + "nodeType": "YulIf", + "src": "23560:134:5" + }, + { + "body": { + "nativeSrc": "23733:209:5", + "nodeType": "YulBlock", + "src": "23733:209:5", + "statements": [ + { + "nativeSrc": "23763:7:5", + "nodeType": "YulAssignment", + "src": "23763:7:5", + "value": { + "name": "T1", + "nativeSrc": "23768:2:5", + "nodeType": "YulIdentifier", + "src": "23768:2:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "23763:1:5", + "nodeType": "YulIdentifier", + "src": "23763:1:5" + } + ] + }, + { + "nativeSrc": "23799:7:5", + "nodeType": "YulAssignment", + "src": "23799:7:5", + "value": { + "name": "T2", + "nativeSrc": "23804:2:5", + "nodeType": "YulIdentifier", + "src": "23804:2:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "23799:1:5", + "nodeType": "YulIdentifier", + "src": "23799:1:5" + } + ] + }, + { + "nativeSrc": "23835:7:5", + "nodeType": "YulAssignment", + "src": "23835:7:5", + "value": { + "kind": "number", + "nativeSrc": "23841:1:5", + "nodeType": "YulLiteral", + "src": "23841:1:5", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "23835:2:5", + "nodeType": "YulIdentifier", + "src": "23835:2:5" + } + ] + }, + { + "nativeSrc": "23871:8:5", + "nodeType": "YulAssignment", + "src": "23871:8:5", + "value": { + "kind": "number", + "nativeSrc": "23878:1:5", + "nodeType": "YulLiteral", + "src": "23878:1:5", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "zzz", + "nativeSrc": "23871:3:5", + "nodeType": "YulIdentifier", + "src": "23871:3:5" + } + ] + }, + { + "nativeSrc": "23908:8:5", + "nodeType": "YulContinue", + "src": "23908:8:5" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "zz", + "nativeSrc": "23729:2:5", + "nodeType": "YulIdentifier", + "src": "23729:2:5" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "23722:6:5", + "nodeType": "YulIdentifier", + "src": "23722:6:5" + }, + "nativeSrc": "23722:10:5", + "nodeType": "YulFunctionCall", + "src": "23722:10:5" + }, + "nativeSrc": "23719:223:5", + "nodeType": "YulIf", + "src": "23719:223:5" + }, + { + "nativeSrc": "24085:42:5", + "nodeType": "YulVariableDeclaration", + "src": "24085:42:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "T2", + "nativeSrc": "24109:2:5", + "nodeType": "YulIdentifier", + "src": "24109:2:5" + }, + { + "name": "zzz", + "nativeSrc": "24113:3:5", + "nodeType": "YulIdentifier", + "src": "24113:3:5" + }, + { + "name": "p", + "nativeSrc": "24118:1:5", + "nodeType": "YulIdentifier", + "src": "24118:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "24102:6:5", + "nodeType": "YulIdentifier", + "src": "24102:6:5" + }, + "nativeSrc": "24102:18:5", + "nodeType": "YulFunctionCall", + "src": "24102:18:5" + }, + { + "name": "Y", + "nativeSrc": "24122:1:5", + "nodeType": "YulIdentifier", + "src": "24122:1:5" + }, + { + "name": "p", + "nativeSrc": "24125:1:5", + "nodeType": "YulIdentifier", + "src": "24125:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "24095:6:5", + "nodeType": "YulIdentifier", + "src": "24095:6:5" + }, + "nativeSrc": "24095:32:5", + "nodeType": "YulFunctionCall", + "src": "24095:32:5" + }, + "variables": [ + { + "name": "y2", + "nativeSrc": "24089:2:5", + "nodeType": "YulTypedName", + "src": "24089:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "24156:45:5", + "nodeType": "YulAssignment", + "src": "24156:45:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "T1", + "nativeSrc": "24176:2:5", + "nodeType": "YulIdentifier", + "src": "24176:2:5" + }, + { + "name": "zz", + "nativeSrc": "24180:2:5", + "nodeType": "YulIdentifier", + "src": "24180:2:5" + }, + { + "name": "p", + "nativeSrc": "24184:1:5", + "nodeType": "YulIdentifier", + "src": "24184:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "24169:6:5", + "nodeType": "YulIdentifier", + "src": "24169:6:5" + }, + "nativeSrc": "24169:17:5", + "nodeType": "YulFunctionCall", + "src": "24169:17:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "24192:1:5", + "nodeType": "YulIdentifier", + "src": "24192:1:5" + }, + { + "name": "X", + "nativeSrc": "24195:1:5", + "nodeType": "YulIdentifier", + "src": "24195:1:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "24188:3:5", + "nodeType": "YulIdentifier", + "src": "24188:3:5" + }, + "nativeSrc": "24188:9:5", + "nodeType": "YulFunctionCall", + "src": "24188:9:5" + }, + { + "name": "p", + "nativeSrc": "24199:1:5", + "nodeType": "YulIdentifier", + "src": "24199:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "24162:6:5", + "nodeType": "YulIdentifier", + "src": "24162:6:5" + }, + "nativeSrc": "24162:39:5", + "nodeType": "YulFunctionCall", + "src": "24162:39:5" + }, + "variableNames": [ + { + "name": "T2", + "nativeSrc": "24156:2:5", + "nodeType": "YulIdentifier", + "src": "24156:2:5" + } + ] + }, + { + "body": { + "nativeSrc": "24430:1029:5", + "nodeType": "YulBlock", + "src": "24430:1029:5", + "statements": [ + { + "body": { + "nativeSrc": "24474:959:5", + "nodeType": "YulBlock", + "src": "24474:959:5", + "statements": [ + { + "nativeSrc": "24508:27:5", + "nodeType": "YulAssignment", + "src": "24508:27:5", + "value": { + "arguments": [ + { + "name": "minus_2", + "nativeSrc": "24521:7:5", + "nodeType": "YulIdentifier", + "src": "24521:7:5" + }, + { + "name": "Y", + "nativeSrc": "24530:1:5", + "nodeType": "YulIdentifier", + "src": "24530:1:5" + }, + { + "name": "p", + "nativeSrc": "24533:1:5", + "nodeType": "YulIdentifier", + "src": "24533:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "24514:6:5", + "nodeType": "YulIdentifier", + "src": "24514:6:5" + }, + "nativeSrc": "24514:21:5", + "nodeType": "YulFunctionCall", + "src": "24514:21:5" + }, + "variableNames": [ + { + "name": "T1", + "nativeSrc": "24508:2:5", + "nodeType": "YulIdentifier", + "src": "24508:2:5" + } + ] + }, + { + "nativeSrc": "24587:23:5", + "nodeType": "YulAssignment", + "src": "24587:23:5", + "value": { + "arguments": [ + { + "name": "T1", + "nativeSrc": "24600:2:5", + "nodeType": "YulIdentifier", + "src": "24600:2:5" + }, + { + "name": "T1", + "nativeSrc": "24604:2:5", + "nodeType": "YulIdentifier", + "src": "24604:2:5" + }, + { + "name": "p", + "nativeSrc": "24608:1:5", + "nodeType": "YulIdentifier", + "src": "24608:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "24593:6:5", + "nodeType": "YulIdentifier", + "src": "24593:6:5" + }, + "nativeSrc": "24593:17:5", + "nodeType": "YulFunctionCall", + "src": "24593:17:5" + }, + "variableNames": [ + { + "name": "T2", + "nativeSrc": "24587:2:5", + "nodeType": "YulIdentifier", + "src": "24587:2:5" + } + ] + }, + { + "nativeSrc": "24652:22:5", + "nodeType": "YulAssignment", + "src": "24652:22:5", + "value": { + "arguments": [ + { + "name": "X", + "nativeSrc": "24665:1:5", + "nodeType": "YulIdentifier", + "src": "24665:1:5" + }, + { + "name": "T2", + "nativeSrc": "24668:2:5", + "nodeType": "YulIdentifier", + "src": "24668:2:5" + }, + { + "name": "p", + "nativeSrc": "24672:1:5", + "nodeType": "YulIdentifier", + "src": "24672:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "24658:6:5", + "nodeType": "YulIdentifier", + "src": "24658:6:5" + }, + "nativeSrc": "24658:16:5", + "nodeType": "YulFunctionCall", + "src": "24658:16:5" + }, + "variableNames": [ + { + "name": "T3", + "nativeSrc": "24652:2:5", + "nodeType": "YulIdentifier", + "src": "24652:2:5" + } + ] + }, + { + "nativeSrc": "24720:23:5", + "nodeType": "YulAssignment", + "src": "24720:23:5", + "value": { + "arguments": [ + { + "name": "T1", + "nativeSrc": "24733:2:5", + "nodeType": "YulIdentifier", + "src": "24733:2:5" + }, + { + "name": "T2", + "nativeSrc": "24737:2:5", + "nodeType": "YulIdentifier", + "src": "24737:2:5" + }, + { + "name": "p", + "nativeSrc": "24741:1:5", + "nodeType": "YulIdentifier", + "src": "24741:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "24726:6:5", + "nodeType": "YulIdentifier", + "src": "24726:6:5" + }, + "nativeSrc": "24726:17:5", + "nodeType": "YulFunctionCall", + "src": "24726:17:5" + }, + "variableNames": [ + { + "name": "T1", + "nativeSrc": "24720:2:5", + "nodeType": "YulIdentifier", + "src": "24720:2:5" + } + ] + }, + { + "nativeSrc": "24784:59:5", + "nodeType": "YulAssignment", + "src": "24784:59:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "X", + "nativeSrc": "24804:1:5", + "nodeType": "YulIdentifier", + "src": "24804:1:5" + }, + { + "name": "zz", + "nativeSrc": "24807:2:5", + "nodeType": "YulIdentifier", + "src": "24807:2:5" + }, + { + "name": "p", + "nativeSrc": "24811:1:5", + "nodeType": "YulIdentifier", + "src": "24811:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "24797:6:5", + "nodeType": "YulIdentifier", + "src": "24797:6:5" + }, + "nativeSrc": "24797:16:5", + "nodeType": "YulFunctionCall", + "src": "24797:16:5" + }, + { + "arguments": [ + { + "name": "X", + "nativeSrc": "24822:1:5", + "nodeType": "YulIdentifier", + "src": "24822:1:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "24829:1:5", + "nodeType": "YulIdentifier", + "src": "24829:1:5" + }, + { + "name": "zz", + "nativeSrc": "24832:2:5", + "nodeType": "YulIdentifier", + "src": "24832:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "24825:3:5", + "nodeType": "YulIdentifier", + "src": "24825:3:5" + }, + "nativeSrc": "24825:10:5", + "nodeType": "YulFunctionCall", + "src": "24825:10:5" + }, + { + "name": "p", + "nativeSrc": "24837:1:5", + "nodeType": "YulIdentifier", + "src": "24837:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "24815:6:5", + "nodeType": "YulIdentifier", + "src": "24815:6:5" + }, + "nativeSrc": "24815:24:5", + "nodeType": "YulFunctionCall", + "src": "24815:24:5" + }, + { + "name": "p", + "nativeSrc": "24841:1:5", + "nodeType": "YulIdentifier", + "src": "24841:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "24790:6:5", + "nodeType": "YulIdentifier", + "src": "24790:6:5" + }, + "nativeSrc": "24790:53:5", + "nodeType": "YulFunctionCall", + "src": "24790:53:5" + }, + "variableNames": [ + { + "name": "y2", + "nativeSrc": "24784:2:5", + "nodeType": "YulIdentifier", + "src": "24784:2:5" + } + ] + }, + { + "nativeSrc": "24891:22:5", + "nodeType": "YulAssignment", + "src": "24891:22:5", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "24904:1:5", + "nodeType": "YulLiteral", + "src": "24904:1:5", + "type": "", + "value": "3" + }, + { + "name": "y2", + "nativeSrc": "24907:2:5", + "nodeType": "YulIdentifier", + "src": "24907:2:5" + }, + { + "name": "p", + "nativeSrc": "24911:1:5", + "nodeType": "YulIdentifier", + "src": "24911:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "24897:6:5", + "nodeType": "YulIdentifier", + "src": "24897:6:5" + }, + "nativeSrc": "24897:16:5", + "nodeType": "YulFunctionCall", + "src": "24897:16:5" + }, + "variableNames": [ + { + "name": "T4", + "nativeSrc": "24891:2:5", + "nodeType": "YulIdentifier", + "src": "24891:2:5" + } + ] + }, + { + "nativeSrc": "24966:25:5", + "nodeType": "YulAssignment", + "src": "24966:25:5", + "value": { + "arguments": [ + { + "name": "T1", + "nativeSrc": "24980:2:5", + "nodeType": "YulIdentifier", + "src": "24980:2:5" + }, + { + "name": "zzz", + "nativeSrc": "24984:3:5", + "nodeType": "YulIdentifier", + "src": "24984:3:5" + }, + { + "name": "p", + "nativeSrc": "24989:1:5", + "nodeType": "YulIdentifier", + "src": "24989:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "24973:6:5", + "nodeType": "YulIdentifier", + "src": "24973:6:5" + }, + "nativeSrc": "24973:18:5", + "nodeType": "YulFunctionCall", + "src": "24973:18:5" + }, + "variableNames": [ + { + "name": "zzz", + "nativeSrc": "24966:3:5", + "nodeType": "YulIdentifier", + "src": "24966:3:5" + } + ] + }, + { + "nativeSrc": "25038:23:5", + "nodeType": "YulAssignment", + "src": "25038:23:5", + "value": { + "arguments": [ + { + "name": "T2", + "nativeSrc": "25051:2:5", + "nodeType": "YulIdentifier", + "src": "25051:2:5" + }, + { + "name": "zz", + "nativeSrc": "25055:2:5", + "nodeType": "YulIdentifier", + "src": "25055:2:5" + }, + { + "name": "p", + "nativeSrc": "25059:1:5", + "nodeType": "YulIdentifier", + "src": "25059:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "25044:6:5", + "nodeType": "YulIdentifier", + "src": "25044:6:5" + }, + "nativeSrc": "25044:17:5", + "nodeType": "YulFunctionCall", + "src": "25044:17:5" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "25038:2:5", + "nodeType": "YulIdentifier", + "src": "25038:2:5" + } + ] + }, + { + "nativeSrc": "25115:57:5", + "nodeType": "YulAssignment", + "src": "25115:57:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "T4", + "nativeSrc": "25134:2:5", + "nodeType": "YulIdentifier", + "src": "25134:2:5" + }, + { + "name": "T4", + "nativeSrc": "25138:2:5", + "nodeType": "YulIdentifier", + "src": "25138:2:5" + }, + { + "name": "p", + "nativeSrc": "25142:1:5", + "nodeType": "YulIdentifier", + "src": "25142:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "25127:6:5", + "nodeType": "YulIdentifier", + "src": "25127:6:5" + }, + "nativeSrc": "25127:17:5", + "nodeType": "YulFunctionCall", + "src": "25127:17:5" + }, + { + "arguments": [ + { + "name": "minus_2", + "nativeSrc": "25153:7:5", + "nodeType": "YulIdentifier", + "src": "25153:7:5" + }, + { + "name": "T3", + "nativeSrc": "25162:2:5", + "nodeType": "YulIdentifier", + "src": "25162:2:5" + }, + { + "name": "p", + "nativeSrc": "25166:1:5", + "nodeType": "YulIdentifier", + "src": "25166:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "25146:6:5", + "nodeType": "YulIdentifier", + "src": "25146:6:5" + }, + "nativeSrc": "25146:22:5", + "nodeType": "YulFunctionCall", + "src": "25146:22:5" + }, + { + "name": "p", + "nativeSrc": "25170:1:5", + "nodeType": "YulIdentifier", + "src": "25170:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "25120:6:5", + "nodeType": "YulIdentifier", + "src": "25120:6:5" + }, + "nativeSrc": "25120:52:5", + "nodeType": "YulFunctionCall", + "src": "25120:52:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "25115:1:5", + "nodeType": "YulIdentifier", + "src": "25115:1:5" + } + ] + }, + { + "nativeSrc": "25217:45:5", + "nodeType": "YulAssignment", + "src": "25217:45:5", + "value": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "25230:2:5", + "nodeType": "YulIdentifier", + "src": "25230:2:5" + }, + { + "arguments": [ + { + "name": "T3", + "nativeSrc": "25241:2:5", + "nodeType": "YulIdentifier", + "src": "25241:2:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "25249:1:5", + "nodeType": "YulIdentifier", + "src": "25249:1:5" + }, + { + "name": "X", + "nativeSrc": "25252:1:5", + "nodeType": "YulIdentifier", + "src": "25252:1:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "25245:3:5", + "nodeType": "YulIdentifier", + "src": "25245:3:5" + }, + "nativeSrc": "25245:9:5", + "nodeType": "YulFunctionCall", + "src": "25245:9:5" + }, + { + "name": "p", + "nativeSrc": "25256:1:5", + "nodeType": "YulIdentifier", + "src": "25256:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "25234:6:5", + "nodeType": "YulIdentifier", + "src": "25234:6:5" + }, + "nativeSrc": "25234:24:5", + "nodeType": "YulFunctionCall", + "src": "25234:24:5" + }, + { + "name": "p", + "nativeSrc": "25260:1:5", + "nodeType": "YulIdentifier", + "src": "25260:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "25223:6:5", + "nodeType": "YulIdentifier", + "src": "25223:6:5" + }, + "nativeSrc": "25223:39:5", + "nodeType": "YulFunctionCall", + "src": "25223:39:5" + }, + "variableNames": [ + { + "name": "T2", + "nativeSrc": "25217:2:5", + "nodeType": "YulIdentifier", + "src": "25217:2:5" + } + ] + }, + { + "nativeSrc": "25306:36:5", + "nodeType": "YulAssignment", + "src": "25306:36:5", + "value": { + "arguments": [ + { + "name": "T2", + "nativeSrc": "25318:2:5", + "nodeType": "YulIdentifier", + "src": "25318:2:5" + }, + { + "arguments": [ + { + "name": "T1", + "nativeSrc": "25329:2:5", + "nodeType": "YulIdentifier", + "src": "25329:2:5" + }, + { + "name": "Y", + "nativeSrc": "25333:1:5", + "nodeType": "YulIdentifier", + "src": "25333:1:5" + }, + { + "name": "p", + "nativeSrc": "25336:1:5", + "nodeType": "YulIdentifier", + "src": "25336:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "25322:6:5", + "nodeType": "YulIdentifier", + "src": "25322:6:5" + }, + "nativeSrc": "25322:16:5", + "nodeType": "YulFunctionCall", + "src": "25322:16:5" + }, + { + "name": "p", + "nativeSrc": "25340:1:5", + "nodeType": "YulIdentifier", + "src": "25340:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "25311:6:5", + "nodeType": "YulIdentifier", + "src": "25311:6:5" + }, + "nativeSrc": "25311:31:5", + "nodeType": "YulFunctionCall", + "src": "25311:31:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "25306:1:5", + "nodeType": "YulIdentifier", + "src": "25306:1:5" + } + ] + }, + { + "nativeSrc": "25395:8:5", + "nodeType": "YulContinue", + "src": "25395:8:5" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "T2", + "nativeSrc": "24470:2:5", + "nodeType": "YulIdentifier", + "src": "24470:2:5" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "24463:6:5", + "nodeType": "YulIdentifier", + "src": "24463:6:5" + }, + "nativeSrc": "24463:10:5", + "nodeType": "YulFunctionCall", + "src": "24463:10:5" + }, + "nativeSrc": "24460:973:5", + "nodeType": "YulIf", + "src": "24460:973:5" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "y2", + "nativeSrc": "24426:2:5", + "nodeType": "YulIdentifier", + "src": "24426:2:5" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "24419:6:5", + "nodeType": "YulIdentifier", + "src": "24419:6:5" + }, + "nativeSrc": "24419:10:5", + "nodeType": "YulFunctionCall", + "src": "24419:10:5" + }, + "nativeSrc": "24416:1043:5", + "nodeType": "YulIf", + "src": "24416:1043:5" + }, + { + "nativeSrc": "25485:23:5", + "nodeType": "YulAssignment", + "src": "25485:23:5", + "value": { + "arguments": [ + { + "name": "T2", + "nativeSrc": "25498:2:5", + "nodeType": "YulIdentifier", + "src": "25498:2:5" + }, + { + "name": "T2", + "nativeSrc": "25502:2:5", + "nodeType": "YulIdentifier", + "src": "25502:2:5" + }, + { + "name": "p", + "nativeSrc": "25506:1:5", + "nodeType": "YulIdentifier", + "src": "25506:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "25491:6:5", + "nodeType": "YulIdentifier", + "src": "25491:6:5" + }, + "nativeSrc": "25491:17:5", + "nodeType": "YulFunctionCall", + "src": "25491:17:5" + }, + "variableNames": [ + { + "name": "T4", + "nativeSrc": "25485:2:5", + "nodeType": "YulIdentifier", + "src": "25485:2:5" + } + ] + }, + { + "nativeSrc": "25538:28:5", + "nodeType": "YulVariableDeclaration", + "src": "25538:28:5", + "value": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "25556:2:5", + "nodeType": "YulIdentifier", + "src": "25556:2:5" + }, + { + "name": "T2", + "nativeSrc": "25560:2:5", + "nodeType": "YulIdentifier", + "src": "25560:2:5" + }, + { + "name": "p", + "nativeSrc": "25564:1:5", + "nodeType": "YulIdentifier", + "src": "25564:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "25549:6:5", + "nodeType": "YulIdentifier", + "src": "25549:6:5" + }, + "nativeSrc": "25549:17:5", + "nodeType": "YulFunctionCall", + "src": "25549:17:5" + }, + "variables": [ + { + "name": "TT1", + "nativeSrc": "25542:3:5", + "nodeType": "YulTypedName", + "src": "25542:3:5", + "type": "" + } + ] + }, + { + "nativeSrc": "25659:23:5", + "nodeType": "YulAssignment", + "src": "25659:23:5", + "value": { + "arguments": [ + { + "name": "zz", + "nativeSrc": "25672:2:5", + "nodeType": "YulIdentifier", + "src": "25672:2:5" + }, + { + "name": "T4", + "nativeSrc": "25676:2:5", + "nodeType": "YulIdentifier", + "src": "25676:2:5" + }, + { + "name": "p", + "nativeSrc": "25680:1:5", + "nodeType": "YulIdentifier", + "src": "25680:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "25665:6:5", + "nodeType": "YulIdentifier", + "src": "25665:6:5" + }, + "nativeSrc": "25665:17:5", + "nodeType": "YulFunctionCall", + "src": "25665:17:5" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "25659:2:5", + "nodeType": "YulIdentifier", + "src": "25659:2:5" + } + ] + }, + { + "nativeSrc": "25707:26:5", + "nodeType": "YulAssignment", + "src": "25707:26:5", + "value": { + "arguments": [ + { + "name": "zzz", + "nativeSrc": "25721:3:5", + "nodeType": "YulIdentifier", + "src": "25721:3:5" + }, + { + "name": "TT1", + "nativeSrc": "25726:3:5", + "nodeType": "YulIdentifier", + "src": "25726:3:5" + }, + { + "name": "p", + "nativeSrc": "25731:1:5", + "nodeType": "YulIdentifier", + "src": "25731:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "25714:6:5", + "nodeType": "YulIdentifier", + "src": "25714:6:5" + }, + "nativeSrc": "25714:19:5", + "nodeType": "YulFunctionCall", + "src": "25714:19:5" + }, + "variableNames": [ + { + "name": "zzz", + "nativeSrc": "25707:3:5", + "nodeType": "YulIdentifier", + "src": "25707:3:5" + } + ] + }, + { + "nativeSrc": "25770:27:5", + "nodeType": "YulVariableDeclaration", + "src": "25770:27:5", + "value": { + "arguments": [ + { + "name": "X", + "nativeSrc": "25788:1:5", + "nodeType": "YulIdentifier", + "src": "25788:1:5" + }, + { + "name": "T4", + "nativeSrc": "25791:2:5", + "nodeType": "YulIdentifier", + "src": "25791:2:5" + }, + { + "name": "p", + "nativeSrc": "25795:1:5", + "nodeType": "YulIdentifier", + "src": "25795:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "25781:6:5", + "nodeType": "YulIdentifier", + "src": "25781:6:5" + }, + "nativeSrc": "25781:16:5", + "nodeType": "YulFunctionCall", + "src": "25781:16:5" + }, + "variables": [ + { + "name": "TT2", + "nativeSrc": "25774:3:5", + "nodeType": "YulTypedName", + "src": "25774:3:5", + "type": "" + } + ] + }, + { + "nativeSrc": "25822:83:5", + "nodeType": "YulAssignment", + "src": "25822:83:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "y2", + "nativeSrc": "25849:2:5", + "nodeType": "YulIdentifier", + "src": "25849:2:5" + }, + { + "name": "y2", + "nativeSrc": "25853:2:5", + "nodeType": "YulIdentifier", + "src": "25853:2:5" + }, + { + "name": "p", + "nativeSrc": "25857:1:5", + "nodeType": "YulIdentifier", + "src": "25857:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "25842:6:5", + "nodeType": "YulIdentifier", + "src": "25842:6:5" + }, + "nativeSrc": "25842:17:5", + "nodeType": "YulFunctionCall", + "src": "25842:17:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "25865:1:5", + "nodeType": "YulIdentifier", + "src": "25865:1:5" + }, + { + "name": "TT1", + "nativeSrc": "25868:3:5", + "nodeType": "YulIdentifier", + "src": "25868:3:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "25861:3:5", + "nodeType": "YulIdentifier", + "src": "25861:3:5" + }, + "nativeSrc": "25861:11:5", + "nodeType": "YulFunctionCall", + "src": "25861:11:5" + }, + { + "name": "p", + "nativeSrc": "25874:1:5", + "nodeType": "YulIdentifier", + "src": "25874:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "25835:6:5", + "nodeType": "YulIdentifier", + "src": "25835:6:5" + }, + "nativeSrc": "25835:41:5", + "nodeType": "YulFunctionCall", + "src": "25835:41:5" + }, + { + "arguments": [ + { + "name": "minus_2", + "nativeSrc": "25885:7:5", + "nodeType": "YulIdentifier", + "src": "25885:7:5" + }, + { + "name": "TT2", + "nativeSrc": "25894:3:5", + "nodeType": "YulIdentifier", + "src": "25894:3:5" + }, + { + "name": "p", + "nativeSrc": "25899:1:5", + "nodeType": "YulIdentifier", + "src": "25899:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "25878:6:5", + "nodeType": "YulIdentifier", + "src": "25878:6:5" + }, + "nativeSrc": "25878:23:5", + "nodeType": "YulFunctionCall", + "src": "25878:23:5" + }, + { + "name": "p", + "nativeSrc": "25903:1:5", + "nodeType": "YulIdentifier", + "src": "25903:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "25828:6:5", + "nodeType": "YulIdentifier", + "src": "25828:6:5" + }, + "nativeSrc": "25828:77:5", + "nodeType": "YulFunctionCall", + "src": "25828:77:5" + }, + "variableNames": [ + { + "name": "T4", + "nativeSrc": "25822:2:5", + "nodeType": "YulIdentifier", + "src": "25822:2:5" + } + ] + }, + { + "nativeSrc": "25930:76:5", + "nodeType": "YulAssignment", + "src": "25930:76:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "TT2", + "nativeSrc": "25956:3:5", + "nodeType": "YulIdentifier", + "src": "25956:3:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "25965:1:5", + "nodeType": "YulIdentifier", + "src": "25965:1:5" + }, + { + "name": "T4", + "nativeSrc": "25968:2:5", + "nodeType": "YulIdentifier", + "src": "25968:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "25961:3:5", + "nodeType": "YulIdentifier", + "src": "25961:3:5" + }, + "nativeSrc": "25961:10:5", + "nodeType": "YulFunctionCall", + "src": "25961:10:5" + }, + { + "name": "p", + "nativeSrc": "25973:1:5", + "nodeType": "YulIdentifier", + "src": "25973:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "25949:6:5", + "nodeType": "YulIdentifier", + "src": "25949:6:5" + }, + "nativeSrc": "25949:26:5", + "nodeType": "YulFunctionCall", + "src": "25949:26:5" + }, + { + "name": "y2", + "nativeSrc": "25977:2:5", + "nodeType": "YulIdentifier", + "src": "25977:2:5" + }, + { + "name": "p", + "nativeSrc": "25981:1:5", + "nodeType": "YulIdentifier", + "src": "25981:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "25942:6:5", + "nodeType": "YulIdentifier", + "src": "25942:6:5" + }, + "nativeSrc": "25942:41:5", + "nodeType": "YulFunctionCall", + "src": "25942:41:5" + }, + { + "arguments": [ + { + "name": "Y", + "nativeSrc": "25992:1:5", + "nodeType": "YulIdentifier", + "src": "25992:1:5" + }, + { + "name": "TT1", + "nativeSrc": "25995:3:5", + "nodeType": "YulIdentifier", + "src": "25995:3:5" + }, + { + "name": "p", + "nativeSrc": "26000:1:5", + "nodeType": "YulIdentifier", + "src": "26000:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "25985:6:5", + "nodeType": "YulIdentifier", + "src": "25985:6:5" + }, + "nativeSrc": "25985:17:5", + "nodeType": "YulFunctionCall", + "src": "25985:17:5" + }, + { + "name": "p", + "nativeSrc": "26004:1:5", + "nodeType": "YulIdentifier", + "src": "26004:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "25935:6:5", + "nodeType": "YulIdentifier", + "src": "25935:6:5" + }, + "nativeSrc": "25935:71:5", + "nodeType": "YulFunctionCall", + "src": "25935:71:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "25930:1:5", + "nodeType": "YulIdentifier", + "src": "25930:1:5" + } + ] + }, + { + "nativeSrc": "26032:7:5", + "nodeType": "YulAssignment", + "src": "26032:7:5", + "value": { + "name": "T4", + "nativeSrc": "26037:2:5", + "nodeType": "YulIdentifier", + "src": "26037:2:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "26032:1:5", + "nodeType": "YulIdentifier", + "src": "26032:1:5" + } + ] + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "minus_1", + "nativeSrc": "22044:7:5", + "nodeType": "YulIdentifier", + "src": "22044:7:5" + }, + { + "name": "index", + "nativeSrc": "22053:5:5", + "nodeType": "YulIdentifier", + "src": "22053:5:5" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "22041:2:5", + "nodeType": "YulIdentifier", + "src": "22041:2:5" + }, + "nativeSrc": "22041:18:5", + "nodeType": "YulFunctionCall", + "src": "22041:18:5" + }, + "nativeSrc": "22034:4045:5", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "22060:26:5", + "nodeType": "YulBlock", + "src": "22060:26:5", + "statements": [ + { + "nativeSrc": "22062:22:5", + "nodeType": "YulAssignment", + "src": "22062:22:5", + "value": { + "arguments": [ + { + "name": "index", + "nativeSrc": "22075:5:5", + "nodeType": "YulIdentifier", + "src": "22075:5:5" + }, + { + "kind": "number", + "nativeSrc": "22082:1:5", + "nodeType": "YulLiteral", + "src": "22082:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "22071:3:5", + "nodeType": "YulIdentifier", + "src": "22071:3:5" + }, + "nativeSrc": "22071:13:5", + "nodeType": "YulFunctionCall", + "src": "22071:13:5" + }, + "variableNames": [ + { + "name": "index", + "nativeSrc": "22062:5:5", + "nodeType": "YulIdentifier", + "src": "22062:5:5" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "22038:2:5", + "nodeType": "YulBlock", + "src": "22038:2:5", + "statements": [] + }, + "src": "22034:4045:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "26118:1:5", + "nodeType": "YulIdentifier", + "src": "26118:1:5" + }, + { + "kind": "number", + "nativeSrc": "26121:4:5", + "nodeType": "YulLiteral", + "src": "26121:4:5", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "26114:3:5", + "nodeType": "YulIdentifier", + "src": "26114:3:5" + }, + "nativeSrc": "26114:12:5", + "nodeType": "YulFunctionCall", + "src": "26114:12:5" + }, + { + "name": "zzz", + "nativeSrc": "26128:3:5", + "nodeType": "YulIdentifier", + "src": "26128:3:5" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "26107:6:5", + "nodeType": "YulIdentifier", + "src": "26107:6:5" + }, + "nativeSrc": "26107:25:5", + "nodeType": "YulFunctionCall", + "src": "26107:25:5" + }, + "nativeSrc": "26107:25:5", + "nodeType": "YulExpressionStatement", + "src": "26107:25:5" + }, + { + "expression": { + "arguments": [ + { + "name": "T", + "nativeSrc": "26391:1:5", + "nodeType": "YulIdentifier", + "src": "26391:1:5" + }, + { + "kind": "number", + "nativeSrc": "26394:4:5", + "nodeType": "YulLiteral", + "src": "26394:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "26384:6:5", + "nodeType": "YulIdentifier", + "src": "26384:6:5" + }, + "nativeSrc": "26384:15:5", + "nodeType": "YulFunctionCall", + "src": "26384:15:5" + }, + "nativeSrc": "26384:15:5", + "nodeType": "YulExpressionStatement", + "src": "26384:15:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "26427:1:5", + "nodeType": "YulIdentifier", + "src": "26427:1:5" + }, + { + "kind": "number", + "nativeSrc": "26430:4:5", + "nodeType": "YulLiteral", + "src": "26430:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "26423:3:5", + "nodeType": "YulIdentifier", + "src": "26423:3:5" + }, + "nativeSrc": "26423:12:5", + "nodeType": "YulFunctionCall", + "src": "26423:12:5" + }, + { + "kind": "number", + "nativeSrc": "26437:4:5", + "nodeType": "YulLiteral", + "src": "26437:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "26416:6:5", + "nodeType": "YulIdentifier", + "src": "26416:6:5" + }, + "nativeSrc": "26416:26:5", + "nodeType": "YulFunctionCall", + "src": "26416:26:5" + }, + "nativeSrc": "26416:26:5", + "nodeType": "YulExpressionStatement", + "src": "26416:26:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "26470:1:5", + "nodeType": "YulIdentifier", + "src": "26470:1:5" + }, + { + "kind": "number", + "nativeSrc": "26473:4:5", + "nodeType": "YulLiteral", + "src": "26473:4:5", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "26466:3:5", + "nodeType": "YulIdentifier", + "src": "26466:3:5" + }, + "nativeSrc": "26466:12:5", + "nodeType": "YulFunctionCall", + "src": "26466:12:5" + }, + { + "kind": "number", + "nativeSrc": "26480:4:5", + "nodeType": "YulLiteral", + "src": "26480:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "26459:6:5", + "nodeType": "YulIdentifier", + "src": "26459:6:5" + }, + "nativeSrc": "26459:26:5", + "nodeType": "YulFunctionCall", + "src": "26459:26:5" + }, + "nativeSrc": "26459:26:5", + "nodeType": "YulExpressionStatement", + "src": "26459:26:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "26624:1:5", + "nodeType": "YulIdentifier", + "src": "26624:1:5" + }, + { + "kind": "number", + "nativeSrc": "26627:4:5", + "nodeType": "YulLiteral", + "src": "26627:4:5", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "26620:3:5", + "nodeType": "YulIdentifier", + "src": "26620:3:5" + }, + "nativeSrc": "26620:12:5", + "nodeType": "YulFunctionCall", + "src": "26620:12:5" + }, + { + "name": "minus_2", + "nativeSrc": "26634:7:5", + "nodeType": "YulIdentifier", + "src": "26634:7:5" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "26613:6:5", + "nodeType": "YulIdentifier", + "src": "26613:6:5" + }, + "nativeSrc": "26613:29:5", + "nodeType": "YulFunctionCall", + "src": "26613:29:5" + }, + "nativeSrc": "26613:29:5", + "nodeType": "YulExpressionStatement", + "src": "26613:29:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "26670:1:5", + "nodeType": "YulIdentifier", + "src": "26670:1:5" + }, + { + "kind": "number", + "nativeSrc": "26673:4:5", + "nodeType": "YulLiteral", + "src": "26673:4:5", + "type": "", + "value": "0xa0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "26666:3:5", + "nodeType": "YulIdentifier", + "src": "26666:3:5" + }, + "nativeSrc": "26666:12:5", + "nodeType": "YulFunctionCall", + "src": "26666:12:5" + }, + { + "name": "p", + "nativeSrc": "26680:1:5", + "nodeType": "YulIdentifier", + "src": "26680:1:5" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "26659:6:5", + "nodeType": "YulIdentifier", + "src": "26659:6:5" + }, + "nativeSrc": "26659:23:5", + "nodeType": "YulFunctionCall", + "src": "26659:23:5" + }, + "nativeSrc": "26659:23:5", + "nodeType": "YulExpressionStatement", + "src": "26659:23:5" + }, + { + "body": { + "nativeSrc": "26817:16:5", + "nodeType": "YulBlock", + "src": "26817:16:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "26826:1:5", + "nodeType": "YulLiteral", + "src": "26826:1:5", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "26829:1:5", + "nodeType": "YulLiteral", + "src": "26829:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "26819:6:5", + "nodeType": "YulIdentifier", + "src": "26819:6:5" + }, + "nativeSrc": "26819:12:5", + "nodeType": "YulFunctionCall", + "src": "26819:12:5" + }, + "nativeSrc": "26819:12:5", + "nodeType": "YulExpressionStatement", + "src": "26819:12:5" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "26788:1:5", + "nodeType": "YulLiteral", + "src": "26788:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "26784:3:5", + "nodeType": "YulIdentifier", + "src": "26784:3:5" + }, + "nativeSrc": "26784:6:5", + "nodeType": "YulFunctionCall", + "src": "26784:6:5" + }, + { + "kind": "number", + "nativeSrc": "26792:4:5", + "nodeType": "YulLiteral", + "src": "26792:4:5", + "type": "", + "value": "0x05" + }, + { + "name": "T", + "nativeSrc": "26798:1:5", + "nodeType": "YulIdentifier", + "src": "26798:1:5" + }, + { + "kind": "number", + "nativeSrc": "26801:4:5", + "nodeType": "YulLiteral", + "src": "26801:4:5", + "type": "", + "value": "0xc0" + }, + { + "name": "T", + "nativeSrc": "26807:1:5", + "nodeType": "YulIdentifier", + "src": "26807:1:5" + }, + { + "kind": "number", + "nativeSrc": "26810:4:5", + "nodeType": "YulLiteral", + "src": "26810:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "26773:10:5", + "nodeType": "YulIdentifier", + "src": "26773:10:5" + }, + "nativeSrc": "26773:42:5", + "nodeType": "YulFunctionCall", + "src": "26773:42:5" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "26766:6:5", + "nodeType": "YulIdentifier", + "src": "26766:6:5" + }, + "nativeSrc": "26766:50:5", + "nodeType": "YulFunctionCall", + "src": "26766:50:5" + }, + "nativeSrc": "26763:70:5", + "nodeType": "YulIf", + "src": "26763:70:5" + }, + { + "nativeSrc": "26851:23:5", + "nodeType": "YulAssignment", + "src": "26851:23:5", + "value": { + "arguments": [ + { + "name": "Y", + "nativeSrc": "26861:1:5", + "nodeType": "YulIdentifier", + "src": "26861:1:5" + }, + { + "arguments": [ + { + "name": "T", + "nativeSrc": "26869:1:5", + "nodeType": "YulIdentifier", + "src": "26869:1:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "26863:5:5", + "nodeType": "YulIdentifier", + "src": "26863:5:5" + }, + "nativeSrc": "26863:8:5", + "nodeType": "YulFunctionCall", + "src": "26863:8:5" + }, + { + "name": "p", + "nativeSrc": "26872:1:5", + "nodeType": "YulIdentifier", + "src": "26872:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "26854:6:5", + "nodeType": "YulIdentifier", + "src": "26854:6:5" + }, + "nativeSrc": "26854:20:5", + "nodeType": "YulFunctionCall", + "src": "26854:20:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "26851:1:5", + "nodeType": "YulIdentifier", + "src": "26851:1:5" + } + ] + }, + { + "nativeSrc": "26898:27:5", + "nodeType": "YulAssignment", + "src": "26898:27:5", + "value": { + "arguments": [ + { + "name": "zz", + "nativeSrc": "26910:2:5", + "nodeType": "YulIdentifier", + "src": "26910:2:5" + }, + { + "arguments": [ + { + "name": "T", + "nativeSrc": "26920:1:5", + "nodeType": "YulIdentifier", + "src": "26920:1:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "26914:5:5", + "nodeType": "YulIdentifier", + "src": "26914:5:5" + }, + "nativeSrc": "26914:8:5", + "nodeType": "YulFunctionCall", + "src": "26914:8:5" + }, + { + "name": "p", + "nativeSrc": "26923:1:5", + "nodeType": "YulIdentifier", + "src": "26923:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "26903:6:5", + "nodeType": "YulIdentifier", + "src": "26903:6:5" + }, + "nativeSrc": "26903:22:5", + "nodeType": "YulFunctionCall", + "src": "26903:22:5" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "26898:2:5", + "nodeType": "YulIdentifier", + "src": "26898:2:5" + } + ] + }, + { + "nativeSrc": "26948:20:5", + "nodeType": "YulAssignment", + "src": "26948:20:5", + "value": { + "arguments": [ + { + "name": "zz", + "nativeSrc": "26960:2:5", + "nodeType": "YulIdentifier", + "src": "26960:2:5" + }, + { + "name": "zz", + "nativeSrc": "26963:2:5", + "nodeType": "YulIdentifier", + "src": "26963:2:5" + }, + { + "name": "p", + "nativeSrc": "26966:1:5", + "nodeType": "YulIdentifier", + "src": "26966:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "26953:6:5", + "nodeType": "YulIdentifier", + "src": "26953:6:5" + }, + "nativeSrc": "26953:15:5", + "nodeType": "YulFunctionCall", + "src": "26953:15:5" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "26948:2:5", + "nodeType": "YulIdentifier", + "src": "26948:2:5" + } + ] + }, + { + "nativeSrc": "26992:21:5", + "nodeType": "YulAssignment", + "src": "26992:21:5", + "value": { + "arguments": [ + { + "name": "X", + "nativeSrc": "27004:1:5", + "nodeType": "YulIdentifier", + "src": "27004:1:5" + }, + { + "name": "zz", + "nativeSrc": "27007:2:5", + "nodeType": "YulIdentifier", + "src": "27007:2:5" + }, + { + "name": "p", + "nativeSrc": "27011:1:5", + "nodeType": "YulIdentifier", + "src": "27011:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "26997:6:5", + "nodeType": "YulIdentifier", + "src": "26997:6:5" + }, + "nativeSrc": "26997:16:5", + "nodeType": "YulFunctionCall", + "src": "26997:16:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "26992:1:5", + "nodeType": "YulIdentifier", + "src": "26992:1:5" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 1905, + "isOffset": false, + "isSlot": false, + "src": "21869:1:5", + "valueSize": 1 + }, + { + "declaration": 1905, + "isOffset": false, + "isSlot": false, + "src": "21907:1:5", + "valueSize": 1 + }, + { + "declaration": 1905, + "isOffset": false, + "isSlot": false, + "src": "23615:1:5", + "valueSize": 1 + }, + { + "declaration": 1905, + "isOffset": false, + "isSlot": false, + "src": "23662:1:5", + "valueSize": 1 + }, + { + "declaration": 1870, + "isOffset": false, + "isSlot": false, + "src": "21754:2:5", + "valueSize": 1 + }, + { + "declaration": 1870, + "isOffset": false, + "isSlot": false, + "src": "23470:2:5", + "valueSize": 1 + }, + { + "declaration": 1872, + "isOffset": false, + "isSlot": false, + "src": "21782:2:5", + "valueSize": 1 + }, + { + "declaration": 1872, + "isOffset": false, + "isSlot": false, + "src": "23507:2:5", + "valueSize": 1 + }, + { + "declaration": 1898, + "isOffset": false, + "isSlot": false, + "src": "26118:1:5", + "valueSize": 1 + }, + { + "declaration": 1898, + "isOffset": false, + "isSlot": false, + "src": "26391:1:5", + "valueSize": 1 + }, + { + "declaration": 1898, + "isOffset": false, + "isSlot": false, + "src": "26427:1:5", + "valueSize": 1 + }, + { + "declaration": 1898, + "isOffset": false, + "isSlot": false, + "src": "26470:1:5", + "valueSize": 1 + }, + { + "declaration": 1898, + "isOffset": false, + "isSlot": false, + "src": "26624:1:5", + "valueSize": 1 + }, + { + "declaration": 1898, + "isOffset": false, + "isSlot": false, + "src": "26670:1:5", + "valueSize": 1 + }, + { + "declaration": 1898, + "isOffset": false, + "isSlot": false, + "src": "26798:1:5", + "valueSize": 1 + }, + { + "declaration": 1898, + "isOffset": false, + "isSlot": false, + "src": "26807:1:5", + "valueSize": 1 + }, + { + "declaration": 1898, + "isOffset": false, + "isSlot": false, + "src": "26869:1:5", + "valueSize": 1 + }, + { + "declaration": 1898, + "isOffset": false, + "isSlot": false, + "src": "26920:1:5", + "valueSize": 1 + }, + { + "declaration": 1879, + "isOffset": false, + "isSlot": false, + "src": "21644:1:5", + "valueSize": 1 + }, + { + "declaration": 1879, + "isOffset": false, + "isSlot": false, + "src": "21749:1:5", + "valueSize": 1 + }, + { + "declaration": 1879, + "isOffset": false, + "isSlot": false, + "src": "21896:1:5", + "valueSize": 1 + }, + { + "declaration": 1879, + "isOffset": false, + "isSlot": false, + "src": "22288:1:5", + "valueSize": 1 + }, + { + "declaration": 1879, + "isOffset": false, + "isSlot": false, + "src": "22416:1:5", + "valueSize": 1 + }, + { + "declaration": 1879, + "isOffset": false, + "isSlot": false, + "src": "22442:1:5", + "valueSize": 1 + }, + { + "declaration": 1879, + "isOffset": false, + "isSlot": false, + "src": "22629:1:5", + "valueSize": 1 + }, + { + "declaration": 1879, + "isOffset": false, + "isSlot": false, + "src": "22743:1:5", + "valueSize": 1 + }, + { + "declaration": 1879, + "isOffset": false, + "isSlot": false, + "src": "23763:1:5", + "valueSize": 1 + }, + { + "declaration": 1879, + "isOffset": false, + "isSlot": false, + "src": "24195:1:5", + "valueSize": 1 + }, + { + "declaration": 1879, + "isOffset": false, + "isSlot": false, + "src": "24665:1:5", + "valueSize": 1 + }, + { + "declaration": 1879, + "isOffset": false, + "isSlot": false, + "src": "24804:1:5", + "valueSize": 1 + }, + { + "declaration": 1879, + "isOffset": false, + "isSlot": false, + "src": "24822:1:5", + "valueSize": 1 + }, + { + "declaration": 1879, + "isOffset": false, + "isSlot": false, + "src": "25115:1:5", + "valueSize": 1 + }, + { + "declaration": 1879, + "isOffset": false, + "isSlot": false, + "src": "25252:1:5", + "valueSize": 1 + }, + { + "declaration": 1879, + "isOffset": false, + "isSlot": false, + "src": "25788:1:5", + "valueSize": 1 + }, + { + "declaration": 1879, + "isOffset": false, + "isSlot": false, + "src": "26032:1:5", + "valueSize": 1 + }, + { + "declaration": 1879, + "isOffset": false, + "isSlot": false, + "src": "26992:1:5", + "valueSize": 1 + }, + { + "declaration": 1879, + "isOffset": false, + "isSlot": false, + "src": "27004:1:5", + "valueSize": 1 + }, + { + "declaration": 1881, + "isOffset": false, + "isSlot": false, + "src": "21672:1:5", + "valueSize": 1 + }, + { + "declaration": 1881, + "isOffset": false, + "isSlot": false, + "src": "21777:1:5", + "valueSize": 1 + }, + { + "declaration": 1881, + "isOffset": false, + "isSlot": false, + "src": "21854:1:5", + "valueSize": 1 + }, + { + "declaration": 1881, + "isOffset": false, + "isSlot": false, + "src": "22169:1:5", + "valueSize": 1 + }, + { + "declaration": 1881, + "isOffset": false, + "isSlot": false, + "src": "22804:1:5", + "valueSize": 1 + }, + { + "declaration": 1881, + "isOffset": false, + "isSlot": false, + "src": "22827:1:5", + "valueSize": 1 + }, + { + "declaration": 1881, + "isOffset": false, + "isSlot": false, + "src": "23140:1:5", + "valueSize": 1 + }, + { + "declaration": 1881, + "isOffset": false, + "isSlot": false, + "src": "23152:1:5", + "valueSize": 1 + }, + { + "declaration": 1881, + "isOffset": false, + "isSlot": false, + "src": "23799:1:5", + "valueSize": 1 + }, + { + "declaration": 1881, + "isOffset": false, + "isSlot": false, + "src": "24122:1:5", + "valueSize": 1 + }, + { + "declaration": 1881, + "isOffset": false, + "isSlot": false, + "src": "24530:1:5", + "valueSize": 1 + }, + { + "declaration": 1881, + "isOffset": false, + "isSlot": false, + "src": "25306:1:5", + "valueSize": 1 + }, + { + "declaration": 1881, + "isOffset": false, + "isSlot": false, + "src": "25333:1:5", + "valueSize": 1 + }, + { + "declaration": 1881, + "isOffset": false, + "isSlot": false, + "src": "25930:1:5", + "valueSize": 1 + }, + { + "declaration": 1881, + "isOffset": false, + "isSlot": false, + "src": "25992:1:5", + "valueSize": 1 + }, + { + "declaration": 1881, + "isOffset": false, + "isSlot": false, + "src": "26851:1:5", + "valueSize": 1 + }, + { + "declaration": 1881, + "isOffset": false, + "isSlot": false, + "src": "26861:1:5", + "valueSize": 1 + }, + { + "declaration": 985, + "isOffset": false, + "isSlot": false, + "src": "21649:2:5", + "valueSize": 1 + }, + { + "declaration": 985, + "isOffset": false, + "isSlot": false, + "src": "23331:2:5", + "valueSize": 1 + }, + { + "declaration": 988, + "isOffset": false, + "isSlot": false, + "src": "21677:2:5", + "valueSize": 1 + }, + { + "declaration": 988, + "isOffset": false, + "isSlot": false, + "src": "23368:2:5", + "valueSize": 1 + }, + { + "declaration": 1890, + "isOffset": false, + "isSlot": false, + "src": "21269:5:5", + "valueSize": 1 + }, + { + "declaration": 1890, + "isOffset": false, + "isSlot": false, + "src": "21300:5:5", + "valueSize": 1 + }, + { + "declaration": 1890, + "isOffset": false, + "isSlot": false, + "src": "21356:5:5", + "valueSize": 1 + }, + { + "declaration": 1890, + "isOffset": false, + "isSlot": false, + "src": "21369:5:5", + "valueSize": 1 + }, + { + "declaration": 1890, + "isOffset": false, + "isSlot": false, + "src": "21424:5:5", + "valueSize": 1 + }, + { + "declaration": 1890, + "isOffset": false, + "isSlot": false, + "src": "21455:5:5", + "valueSize": 1 + }, + { + "declaration": 1890, + "isOffset": false, + "isSlot": false, + "src": "21539:5:5", + "valueSize": 1 + }, + { + "declaration": 1890, + "isOffset": false, + "isSlot": false, + "src": "21570:5:5", + "valueSize": 1 + }, + { + "declaration": 1890, + "isOffset": false, + "isSlot": false, + "src": "21945:5:5", + "valueSize": 1 + }, + { + "declaration": 1890, + "isOffset": false, + "isSlot": false, + "src": "21958:5:5", + "valueSize": 1 + }, + { + "declaration": 1890, + "isOffset": false, + "isSlot": false, + "src": "22053:5:5", + "valueSize": 1 + }, + { + "declaration": 1890, + "isOffset": false, + "isSlot": false, + "src": "22062:5:5", + "valueSize": 1 + }, + { + "declaration": 1890, + "isOffset": false, + "isSlot": false, + "src": "22075:5:5", + "valueSize": 1 + }, + { + "declaration": 1890, + "isOffset": false, + "isSlot": false, + "src": "23018:5:5", + "valueSize": 1 + }, + { + "declaration": 1890, + "isOffset": false, + "isSlot": false, + "src": "23049:5:5", + "valueSize": 1 + }, + { + "declaration": 1000, + "isOffset": false, + "isSlot": false, + "src": "22044:7:5", + "valueSize": 1 + }, + { + "declaration": 994, + "isOffset": false, + "isSlot": false, + "src": "22667:7:5", + "valueSize": 1 + }, + { + "declaration": 994, + "isOffset": false, + "isSlot": false, + "src": "24521:7:5", + "valueSize": 1 + }, + { + "declaration": 994, + "isOffset": false, + "isSlot": false, + "src": "25153:7:5", + "valueSize": 1 + }, + { + "declaration": 994, + "isOffset": false, + "isSlot": false, + "src": "25885:7:5", + "valueSize": 1 + }, + { + "declaration": 994, + "isOffset": false, + "isSlot": false, + "src": "26634:7:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "22172:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "22239:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "22295:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "22351:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "22423:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "22431:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "22449:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "22453:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "22457:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "22527:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "22585:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "22656:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "22680:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "22684:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "22750:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "22758:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "22762:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "22830:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "22838:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "23149:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "24118:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "24125:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "24184:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "24192:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "24199:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "24533:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "24608:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "24672:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "24741:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "24811:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "24829:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "24837:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "24841:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "24911:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "24989:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25059:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25142:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25166:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25170:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25249:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25256:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25260:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25336:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25340:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25506:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25564:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25680:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25731:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25795:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25857:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25865:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25874:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25899:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25903:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25965:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25973:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "25981:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "26000:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "26004:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "26680:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "26872:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "26923:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "26966:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "27011:1:5", + "valueSize": 1 + }, + { + "declaration": 1874, + "isOffset": false, + "isSlot": false, + "src": "21307:8:5", + "valueSize": 1 + }, + { + "declaration": 1874, + "isOffset": false, + "isSlot": false, + "src": "21462:8:5", + "valueSize": 1 + }, + { + "declaration": 1874, + "isOffset": false, + "isSlot": false, + "src": "21577:8:5", + "valueSize": 1 + }, + { + "declaration": 1874, + "isOffset": false, + "isSlot": false, + "src": "23056:8:5", + "valueSize": 1 + }, + { + "declaration": 1876, + "isOffset": false, + "isSlot": false, + "src": "21276:8:5", + "valueSize": 1 + }, + { + "declaration": 1876, + "isOffset": false, + "isSlot": false, + "src": "21431:8:5", + "valueSize": 1 + }, + { + "declaration": 1876, + "isOffset": false, + "isSlot": false, + "src": "21546:8:5", + "valueSize": 1 + }, + { + "declaration": 1876, + "isOffset": false, + "isSlot": false, + "src": "23025:8:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "21514:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "21615:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "21720:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "21825:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "21984:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "22426:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "22445:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "22564:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "22581:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "23729:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "23835:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "24180:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "24807:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "24832:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "25038:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "25055:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "25659:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "25672:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "26898:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "26910:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "26948:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "26960:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "26963:2:5", + "valueSize": 1 + }, + { + "declaration": 1884, + "isOffset": false, + "isSlot": false, + "src": "27007:2:5", + "valueSize": 1 + }, + { + "declaration": 1887, + "isOffset": false, + "isSlot": false, + "src": "22008:3:5", + "valueSize": 1 + }, + { + "declaration": 1887, + "isOffset": false, + "isSlot": false, + "src": "22504:3:5", + "valueSize": 1 + }, + { + "declaration": 1887, + "isOffset": false, + "isSlot": false, + "src": "22522:3:5", + "valueSize": 1 + }, + { + "declaration": 1887, + "isOffset": false, + "isSlot": false, + "src": "23871:3:5", + "valueSize": 1 + }, + { + "declaration": 1887, + "isOffset": false, + "isSlot": false, + "src": "24113:3:5", + "valueSize": 1 + }, + { + "declaration": 1887, + "isOffset": false, + "isSlot": false, + "src": "24966:3:5", + "valueSize": 1 + }, + { + "declaration": 1887, + "isOffset": false, + "isSlot": false, + "src": "24984:3:5", + "valueSize": 1 + }, + { + "declaration": 1887, + "isOffset": false, + "isSlot": false, + "src": "25707:3:5", + "valueSize": 1 + }, + { + "declaration": 1887, + "isOffset": false, + "isSlot": false, + "src": "25721:3:5", + "valueSize": 1 + }, + { + "declaration": 1887, + "isOffset": false, + "isSlot": false, + "src": "26128:3:5", + "valueSize": 1 + } + ], + "id": 1934, + "nodeType": "InlineAssembly", + "src": "21207:5827:5" + } + ] + }, + { + "expression": { + "components": [ + { + "id": 1936, + "name": "X", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1879, + "src": "27093:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1937, + "name": "Y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1881, + "src": "27095:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1938, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "27092:5:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "functionReturnParameters": 1882, + "id": 1939, + "nodeType": "Return", + "src": "27085:12:5" + } + ] + }, + "documentation": { + "id": 1868, + "nodeType": "StructuredDocumentation", + "src": "20489:179:5", + "text": " @dev Computation of uG+vQ using Strauss-Shamir's trick, G basepoint, Q public key\n Returns affine representation of point (normalized) \n " + }, + "id": 1941, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ecZZ_mulmuladd", + "nameLocation": "20682:14:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1877, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1870, + "mutability": "mutable", + "name": "Q0", + "nameLocation": "20714:2:5", + "nodeType": "VariableDeclaration", + "scope": 1941, + "src": "20706:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1869, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20706:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1872, + "mutability": "mutable", + "name": "Q1", + "nameLocation": "20734:2:5", + "nodeType": "VariableDeclaration", + "scope": 1941, + "src": "20726:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1871, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20726:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1874, + "mutability": "mutable", + "name": "scalar_u", + "nameLocation": "20785:8:5", + "nodeType": "VariableDeclaration", + "scope": 1941, + "src": "20777:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1873, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20777:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1876, + "mutability": "mutable", + "name": "scalar_v", + "nameLocation": "20811:8:5", + "nodeType": "VariableDeclaration", + "scope": 1941, + "src": "20803:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1875, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20803:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "20696:129:5" + }, + "returnParameters": { + "id": 1882, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1879, + "mutability": "mutable", + "name": "X", + "nameLocation": "20857:1:5", + "nodeType": "VariableDeclaration", + "scope": 1941, + "src": "20849:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1878, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20849:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1881, + "mutability": "mutable", + "name": "Y", + "nameLocation": "20868:1:5", + "nodeType": "VariableDeclaration", + "scope": 1941, + "src": "20860:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1880, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20860:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "20848:22:5" + }, + "scope": 2309, + "src": "20673:6431:5", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2084, + "nodeType": "Block", + "src": "27601:6511:5", + "statements": [ + { + "id": 2083, + "nodeType": "UncheckedBlock", + "src": "27611:6479:5", + "statements": [ + { + "assignments": [ + 1953 + ], + "declarations": [ + { + "constant": false, + "id": 1953, + "mutability": "mutable", + "name": "zz", + "nameLocation": "27643:2:5", + "nodeType": "VariableDeclaration", + "scope": 2083, + "src": "27635:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1952, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27635:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1954, + "nodeType": "VariableDeclarationStatement", + "src": "27635:10:5" + }, + { + "assignments": [ + 1960 + ], + "declarations": [ + { + "constant": false, + "id": 1960, + "mutability": "mutable", + "name": "T", + "nameLocation": "27717:1:5", + "nodeType": "VariableDeclaration", + "scope": 2083, + "src": "27699:19:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6]" + }, + "typeName": { + "baseType": { + "id": 1958, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27699:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1959, + "length": { + "hexValue": "36", + "id": 1957, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27707:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_6_by_1", + "typeString": "int_const 6" + }, + "value": "6" + }, + "nodeType": "ArrayTypeName", + "src": "27699:10:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_storage_ptr", + "typeString": "uint256[6]" + } + }, + "visibility": "internal" + } + ], + "id": 1961, + "nodeType": "VariableDeclarationStatement", + "src": "27699:19:5" + }, + { + "expression": { + "id": 1964, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1962, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1953, + "src": "27732:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "323536", + "id": 1963, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27737:3:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + }, + "value": "256" + }, + "src": "27732:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1965, + "nodeType": "ExpressionStatement", + "src": "27732:8:5" + }, + { + "body": { + "id": 2080, + "nodeType": "Block", + "src": "27787:552:5", + "statements": [ + { + "expression": { + "id": 1975, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1971, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1953, + "src": "27805:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1974, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1972, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1953, + "src": "27810:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 1973, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27815:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "27810:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27805:11:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1976, + "nodeType": "ExpressionStatement", + "src": "27805:11:5" + }, + { + "expression": { + "id": 2078, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 1977, + "name": "T", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1960, + "src": "27884:1:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 1979, + "indexExpression": { + "hexValue": "30", + "id": 1978, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27886:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "27884:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2077, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3634", + "id": 1980, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27891:2:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2075, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2051, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2038, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2028, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2015, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2002, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1989, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "313238", + "id": 1981, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27942:3:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1987, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1984, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1982, + "name": "scalar_v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1945, + "src": "27950:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "id": 1983, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1953, + "src": "27962:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27950:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1985, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "27949:16:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "31", + "id": 1986, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27968:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "27949:20:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1988, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "27948:22:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27942:28:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2001, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3634", + "id": 1990, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27973:2:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1999, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1996, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1991, + "name": "scalar_v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1945, + "src": "27980:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1994, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1992, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1953, + "src": "27993:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "3634", + "id": 1993, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27998:2:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "27993:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1995, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "27992:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27980:21:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1997, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "27979:23:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "31", + "id": 1998, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28005:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "27979:27:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2000, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "27978:29:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27973:34:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27942:65:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2014, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3332", + "id": 2003, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28038:2:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2012, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2009, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2004, + "name": "scalar_v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1945, + "src": "28045:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2007, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2005, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1953, + "src": "28058:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "313238", + "id": 2006, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28063:3:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "28058:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2008, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28057:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28045:22:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2010, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28044:24:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "31", + "id": 2011, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28071:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "28044:28:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2013, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28043:30:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28038:35:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27942:131:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2027, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3136", + "id": 2016, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28076:2:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2025, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2022, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2017, + "name": "scalar_v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1945, + "src": "28083:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2020, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2018, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1953, + "src": "28096:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "313932", + "id": 2019, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28101:3:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_192_by_1", + "typeString": "int_const 192" + }, + "value": "192" + }, + "src": "28096:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2021, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28095:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28083:22:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2023, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28082:24:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "31", + "id": 2024, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28109:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "28082:28:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2026, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28081:30:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28076:35:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27942:169:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2037, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "38", + "id": 2029, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28142:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2035, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2032, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2030, + "name": "scalar_u", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1943, + "src": "28148:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "id": 2031, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1953, + "src": "28160:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28148:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2033, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28147:16:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "31", + "id": 2034, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28166:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "28147:20:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2036, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28146:22:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28142:26:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27942:226:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2050, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "34", + "id": 2039, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28171:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2048, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2045, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2040, + "name": "scalar_u", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1943, + "src": "28177:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2043, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2041, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1953, + "src": "28190:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "3634", + "id": 2042, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28195:2:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "28190:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2044, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28189:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28177:21:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2046, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28176:23:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "31", + "id": 2047, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28202:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "28176:27:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2049, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28175:29:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28171:33:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27942:262:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2063, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 2052, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28235:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2061, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2058, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2053, + "name": "scalar_u", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1943, + "src": "28241:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2056, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2054, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1953, + "src": "28254:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "313238", + "id": 2055, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28259:3:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "28254:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2057, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28253:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28241:22:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2059, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28240:24:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "31", + "id": 2060, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28267:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "28240:28:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2062, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28239:30:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28235:34:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27942:327:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2073, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2070, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2065, + "name": "scalar_u", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1943, + "src": "28274:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2068, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2066, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1953, + "src": "28287:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "313932", + "id": 2067, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28292:3:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_192_by_1", + "typeString": "int_const 192" + }, + "value": "192" + }, + "src": "28287:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2069, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28286:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28274:22:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2071, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28273:24:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "31", + "id": 2072, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28300:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "28273:28:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2074, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28272:30:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27942:360:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2076, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "27916:408:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27891:433:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27884:440:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2079, + "nodeType": "ExpressionStatement", + "src": "27884:440:5" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1970, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 1966, + "name": "T", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1960, + "src": "27776:1:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 1968, + "indexExpression": { + "hexValue": "30", + "id": 1967, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27778:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "27776:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1969, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27784:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "27776:9:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2081, + "nodeType": "WhileStatement", + "src": "27769:570:5" + }, + { + "AST": { + "nativeSrc": "28361:5719:5", + "nodeType": "YulBlock", + "src": "28361:5719:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dataPointer", + "nativeSrc": "28391:11:5", + "nodeType": "YulIdentifier", + "src": "28391:11:5" + }, + { + "name": "T", + "nativeSrc": "28404:1:5", + "nodeType": "YulIdentifier", + "src": "28404:1:5" + }, + { + "arguments": [ + { + "name": "T", + "nativeSrc": "28413:1:5", + "nodeType": "YulIdentifier", + "src": "28413:1:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "28407:5:5", + "nodeType": "YulIdentifier", + "src": "28407:5:5" + }, + "nativeSrc": "28407:8:5", + "nodeType": "YulFunctionCall", + "src": "28407:8:5" + }, + { + "kind": "number", + "nativeSrc": "28417:2:5", + "nodeType": "YulLiteral", + "src": "28417:2:5", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "extcodecopy", + "nativeSrc": "28379:11:5", + "nodeType": "YulIdentifier", + "src": "28379:11:5" + }, + "nativeSrc": "28379:41:5", + "nodeType": "YulFunctionCall", + "src": "28379:41:5" + }, + "nativeSrc": "28379:41:5", + "nodeType": "YulExpressionStatement", + "src": "28379:41:5" + }, + { + "nativeSrc": "28437:23:5", + "nodeType": "YulVariableDeclaration", + "src": "28437:23:5", + "value": { + "arguments": [ + { + "name": "zz", + "nativeSrc": "28454:2:5", + "nodeType": "YulIdentifier", + "src": "28454:2:5" + }, + { + "kind": "number", + "nativeSrc": "28458:1:5", + "nodeType": "YulLiteral", + "src": "28458:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "28450:3:5", + "nodeType": "YulIdentifier", + "src": "28450:3:5" + }, + "nativeSrc": "28450:10:5", + "nodeType": "YulFunctionCall", + "src": "28450:10:5" + }, + "variables": [ + { + "name": "index", + "nativeSrc": "28441:5:5", + "nodeType": "YulTypedName", + "src": "28441:5:5", + "type": "" + } + ] + }, + { + "nativeSrc": "28477:13:5", + "nodeType": "YulAssignment", + "src": "28477:13:5", + "value": { + "arguments": [ + { + "name": "T", + "nativeSrc": "28488:1:5", + "nodeType": "YulIdentifier", + "src": "28488:1:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "28482:5:5", + "nodeType": "YulIdentifier", + "src": "28482:5:5" + }, + "nativeSrc": "28482:8:5", + "nodeType": "YulFunctionCall", + "src": "28482:8:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "28477:1:5", + "nodeType": "YulIdentifier", + "src": "28477:1:5" + } + ] + }, + { + "nativeSrc": "28507:26:5", + "nodeType": "YulVariableDeclaration", + "src": "28507:26:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "28526:1:5", + "nodeType": "YulIdentifier", + "src": "28526:1:5" + }, + { + "kind": "number", + "nativeSrc": "28529:2:5", + "nodeType": "YulLiteral", + "src": "28529:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "28522:3:5", + "nodeType": "YulIdentifier", + "src": "28522:3:5" + }, + "nativeSrc": "28522:10:5", + "nodeType": "YulFunctionCall", + "src": "28522:10:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "28516:5:5", + "nodeType": "YulIdentifier", + "src": "28516:5:5" + }, + "nativeSrc": "28516:17:5", + "nodeType": "YulFunctionCall", + "src": "28516:17:5" + }, + "variables": [ + { + "name": "Y", + "nativeSrc": "28511:1:5", + "nodeType": "YulTypedName", + "src": "28511:1:5", + "type": "" + } + ] + }, + { + "nativeSrc": "28550:12:5", + "nodeType": "YulVariableDeclaration", + "src": "28550:12:5", + "value": { + "kind": "number", + "nativeSrc": "28561:1:5", + "nodeType": "YulLiteral", + "src": "28561:1:5", + "type": "", + "value": "1" + }, + "variables": [ + { + "name": "zzz", + "nativeSrc": "28554:3:5", + "nodeType": "YulTypedName", + "src": "28554:3:5", + "type": "" + } + ] + }, + { + "nativeSrc": "28579:7:5", + "nodeType": "YulAssignment", + "src": "28579:7:5", + "value": { + "kind": "number", + "nativeSrc": "28585:1:5", + "nodeType": "YulLiteral", + "src": "28585:1:5", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "28579:2:5", + "nodeType": "YulIdentifier", + "src": "28579:2:5" + } + ] + }, + { + "body": { + "nativeSrc": "28734:4501:5", + "nodeType": "YulBlock", + "src": "28734:4501:5", + "statements": [ + { + "nativeSrc": "28792:1095:5", + "nodeType": "YulBlock", + "src": "28792:1095:5", + "statements": [ + { + "nativeSrc": "28818:26:5", + "nodeType": "YulVariableDeclaration", + "src": "28818:26:5", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "28836:1:5", + "nodeType": "YulLiteral", + "src": "28836:1:5", + "type": "", + "value": "2" + }, + { + "name": "Y", + "nativeSrc": "28839:1:5", + "nodeType": "YulIdentifier", + "src": "28839:1:5" + }, + { + "name": "p", + "nativeSrc": "28842:1:5", + "nodeType": "YulIdentifier", + "src": "28842:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "28829:6:5", + "nodeType": "YulIdentifier", + "src": "28829:6:5" + }, + "nativeSrc": "28829:15:5", + "nodeType": "YulFunctionCall", + "src": "28829:15:5" + }, + "variables": [ + { + "name": "TT1", + "nativeSrc": "28822:3:5", + "nodeType": "YulTypedName", + "src": "28822:3:5", + "type": "" + } + ] + }, + { + "nativeSrc": "28888:29:5", + "nodeType": "YulVariableDeclaration", + "src": "28888:29:5", + "value": { + "arguments": [ + { + "name": "TT1", + "nativeSrc": "28905:3:5", + "nodeType": "YulIdentifier", + "src": "28905:3:5" + }, + { + "name": "TT1", + "nativeSrc": "28910:3:5", + "nodeType": "YulIdentifier", + "src": "28910:3:5" + }, + { + "name": "p", + "nativeSrc": "28915:1:5", + "nodeType": "YulIdentifier", + "src": "28915:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "28898:6:5", + "nodeType": "YulIdentifier", + "src": "28898:6:5" + }, + "nativeSrc": "28898:19:5", + "nodeType": "YulFunctionCall", + "src": "28898:19:5" + }, + "variables": [ + { + "name": "T2", + "nativeSrc": "28892:2:5", + "nodeType": "YulTypedName", + "src": "28892:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "28951:26:5", + "nodeType": "YulVariableDeclaration", + "src": "28951:26:5", + "value": { + "arguments": [ + { + "name": "X", + "nativeSrc": "28968:1:5", + "nodeType": "YulIdentifier", + "src": "28968:1:5" + }, + { + "name": "T2", + "nativeSrc": "28971:2:5", + "nodeType": "YulIdentifier", + "src": "28971:2:5" + }, + { + "name": "p", + "nativeSrc": "28975:1:5", + "nodeType": "YulIdentifier", + "src": "28975:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "28961:6:5", + "nodeType": "YulIdentifier", + "src": "28961:6:5" + }, + "nativeSrc": "28961:16:5", + "nodeType": "YulFunctionCall", + "src": "28961:16:5" + }, + "variables": [ + { + "name": "T3", + "nativeSrc": "28955:2:5", + "nodeType": "YulTypedName", + "src": "28955:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "29014:28:5", + "nodeType": "YulVariableDeclaration", + "src": "29014:28:5", + "value": { + "arguments": [ + { + "name": "TT1", + "nativeSrc": "29031:3:5", + "nodeType": "YulIdentifier", + "src": "29031:3:5" + }, + { + "name": "T2", + "nativeSrc": "29036:2:5", + "nodeType": "YulIdentifier", + "src": "29036:2:5" + }, + { + "name": "p", + "nativeSrc": "29040:1:5", + "nodeType": "YulIdentifier", + "src": "29040:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "29024:6:5", + "nodeType": "YulIdentifier", + "src": "29024:6:5" + }, + "nativeSrc": "29024:18:5", + "nodeType": "YulFunctionCall", + "src": "29024:18:5" + }, + "variables": [ + { + "name": "T1", + "nativeSrc": "29018:2:5", + "nodeType": "YulTypedName", + "src": "29018:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "29075:77:5", + "nodeType": "YulVariableDeclaration", + "src": "29075:77:5", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "29092:1:5", + "nodeType": "YulLiteral", + "src": "29092:1:5", + "type": "", + "value": "3" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "X", + "nativeSrc": "29109:1:5", + "nodeType": "YulIdentifier", + "src": "29109:1:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "29116:1:5", + "nodeType": "YulIdentifier", + "src": "29116:1:5" + }, + { + "name": "zz", + "nativeSrc": "29119:2:5", + "nodeType": "YulIdentifier", + "src": "29119:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "29112:3:5", + "nodeType": "YulIdentifier", + "src": "29112:3:5" + }, + "nativeSrc": "29112:10:5", + "nodeType": "YulFunctionCall", + "src": "29112:10:5" + }, + { + "name": "p", + "nativeSrc": "29124:1:5", + "nodeType": "YulIdentifier", + "src": "29124:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "29102:6:5", + "nodeType": "YulIdentifier", + "src": "29102:6:5" + }, + "nativeSrc": "29102:24:5", + "nodeType": "YulFunctionCall", + "src": "29102:24:5" + }, + { + "arguments": [ + { + "name": "X", + "nativeSrc": "29135:1:5", + "nodeType": "YulIdentifier", + "src": "29135:1:5" + }, + { + "name": "zz", + "nativeSrc": "29138:2:5", + "nodeType": "YulIdentifier", + "src": "29138:2:5" + }, + { + "name": "p", + "nativeSrc": "29142:1:5", + "nodeType": "YulIdentifier", + "src": "29142:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "29128:6:5", + "nodeType": "YulIdentifier", + "src": "29128:6:5" + }, + "nativeSrc": "29128:16:5", + "nodeType": "YulFunctionCall", + "src": "29128:16:5" + }, + { + "name": "p", + "nativeSrc": "29146:1:5", + "nodeType": "YulIdentifier", + "src": "29146:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "29095:6:5", + "nodeType": "YulIdentifier", + "src": "29095:6:5" + }, + "nativeSrc": "29095:53:5", + "nodeType": "YulFunctionCall", + "src": "29095:53:5" + }, + { + "name": "p", + "nativeSrc": "29150:1:5", + "nodeType": "YulIdentifier", + "src": "29150:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "29085:6:5", + "nodeType": "YulIdentifier", + "src": "29085:6:5" + }, + "nativeSrc": "29085:67:5", + "nodeType": "YulFunctionCall", + "src": "29085:67:5" + }, + "variables": [ + { + "name": "T4", + "nativeSrc": "29079:2:5", + "nodeType": "YulTypedName", + "src": "29079:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "29201:25:5", + "nodeType": "YulAssignment", + "src": "29201:25:5", + "value": { + "arguments": [ + { + "name": "T1", + "nativeSrc": "29215:2:5", + "nodeType": "YulIdentifier", + "src": "29215:2:5" + }, + { + "name": "zzz", + "nativeSrc": "29219:3:5", + "nodeType": "YulIdentifier", + "src": "29219:3:5" + }, + { + "name": "p", + "nativeSrc": "29224:1:5", + "nodeType": "YulIdentifier", + "src": "29224:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "29208:6:5", + "nodeType": "YulIdentifier", + "src": "29208:6:5" + }, + "nativeSrc": "29208:18:5", + "nodeType": "YulFunctionCall", + "src": "29208:18:5" + }, + "variableNames": [ + { + "name": "zzz", + "nativeSrc": "29201:3:5", + "nodeType": "YulIdentifier", + "src": "29201:3:5" + } + ] + }, + { + "nativeSrc": "29265:23:5", + "nodeType": "YulAssignment", + "src": "29265:23:5", + "value": { + "arguments": [ + { + "name": "T2", + "nativeSrc": "29278:2:5", + "nodeType": "YulIdentifier", + "src": "29278:2:5" + }, + { + "name": "zz", + "nativeSrc": "29282:2:5", + "nodeType": "YulIdentifier", + "src": "29282:2:5" + }, + { + "name": "p", + "nativeSrc": "29286:1:5", + "nodeType": "YulIdentifier", + "src": "29286:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "29271:6:5", + "nodeType": "YulIdentifier", + "src": "29271:6:5" + }, + "nativeSrc": "29271:17:5", + "nodeType": "YulFunctionCall", + "src": "29271:17:5" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "29265:2:5", + "nodeType": "YulIdentifier", + "src": "29265:2:5" + } + ] + }, + { + "nativeSrc": "29334:57:5", + "nodeType": "YulAssignment", + "src": "29334:57:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "T4", + "nativeSrc": "29353:2:5", + "nodeType": "YulIdentifier", + "src": "29353:2:5" + }, + { + "name": "T4", + "nativeSrc": "29357:2:5", + "nodeType": "YulIdentifier", + "src": "29357:2:5" + }, + { + "name": "p", + "nativeSrc": "29361:1:5", + "nodeType": "YulIdentifier", + "src": "29361:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "29346:6:5", + "nodeType": "YulIdentifier", + "src": "29346:6:5" + }, + "nativeSrc": "29346:17:5", + "nodeType": "YulFunctionCall", + "src": "29346:17:5" + }, + { + "arguments": [ + { + "name": "minus_2", + "nativeSrc": "29372:7:5", + "nodeType": "YulIdentifier", + "src": "29372:7:5" + }, + { + "name": "T3", + "nativeSrc": "29381:2:5", + "nodeType": "YulIdentifier", + "src": "29381:2:5" + }, + { + "name": "p", + "nativeSrc": "29385:1:5", + "nodeType": "YulIdentifier", + "src": "29385:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "29365:6:5", + "nodeType": "YulIdentifier", + "src": "29365:6:5" + }, + "nativeSrc": "29365:22:5", + "nodeType": "YulFunctionCall", + "src": "29365:22:5" + }, + { + "name": "p", + "nativeSrc": "29389:1:5", + "nodeType": "YulIdentifier", + "src": "29389:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "29339:6:5", + "nodeType": "YulIdentifier", + "src": "29339:6:5" + }, + "nativeSrc": "29339:52:5", + "nodeType": "YulFunctionCall", + "src": "29339:52:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "29334:1:5", + "nodeType": "YulIdentifier", + "src": "29334:1:5" + } + ] + }, + { + "nativeSrc": "29504:49:5", + "nodeType": "YulVariableDeclaration", + "src": "29504:49:5", + "value": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "29521:2:5", + "nodeType": "YulIdentifier", + "src": "29521:2:5" + }, + { + "arguments": [ + { + "name": "X", + "nativeSrc": "29532:1:5", + "nodeType": "YulIdentifier", + "src": "29532:1:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "29539:1:5", + "nodeType": "YulIdentifier", + "src": "29539:1:5" + }, + { + "name": "T3", + "nativeSrc": "29542:2:5", + "nodeType": "YulIdentifier", + "src": "29542:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "29535:3:5", + "nodeType": "YulIdentifier", + "src": "29535:3:5" + }, + "nativeSrc": "29535:10:5", + "nodeType": "YulFunctionCall", + "src": "29535:10:5" + }, + { + "name": "p", + "nativeSrc": "29547:1:5", + "nodeType": "YulIdentifier", + "src": "29547:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "29525:6:5", + "nodeType": "YulIdentifier", + "src": "29525:6:5" + }, + "nativeSrc": "29525:24:5", + "nodeType": "YulFunctionCall", + "src": "29525:24:5" + }, + { + "name": "p", + "nativeSrc": "29551:1:5", + "nodeType": "YulIdentifier", + "src": "29551:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "29514:6:5", + "nodeType": "YulIdentifier", + "src": "29514:6:5" + }, + "nativeSrc": "29514:39:5", + "nodeType": "YulFunctionCall", + "src": "29514:39:5" + }, + "variables": [ + { + "name": "T5", + "nativeSrc": "29508:2:5", + "nodeType": "YulTypedName", + "src": "29508:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "29687:36:5", + "nodeType": "YulAssignment", + "src": "29687:36:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "T1", + "nativeSrc": "29706:2:5", + "nodeType": "YulIdentifier", + "src": "29706:2:5" + }, + { + "name": "Y", + "nativeSrc": "29710:1:5", + "nodeType": "YulIdentifier", + "src": "29710:1:5" + }, + { + "name": "p", + "nativeSrc": "29713:1:5", + "nodeType": "YulIdentifier", + "src": "29713:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "29699:6:5", + "nodeType": "YulIdentifier", + "src": "29699:6:5" + }, + "nativeSrc": "29699:16:5", + "nodeType": "YulFunctionCall", + "src": "29699:16:5" + }, + { + "name": "T5", + "nativeSrc": "29717:2:5", + "nodeType": "YulIdentifier", + "src": "29717:2:5" + }, + { + "name": "p", + "nativeSrc": "29721:1:5", + "nodeType": "YulIdentifier", + "src": "29721:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "29692:6:5", + "nodeType": "YulIdentifier", + "src": "29692:6:5" + }, + "nativeSrc": "29692:31:5", + "nodeType": "YulFunctionCall", + "src": "29692:31:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "29687:1:5", + "nodeType": "YulIdentifier", + "src": "29687:1:5" + } + ] + } + ] + }, + { + "nativeSrc": "29908:1058:5", + "nodeType": "YulBlock", + "src": "29908:1058:5", + "statements": [ + { + "nativeSrc": "29934:90:5", + "nodeType": "YulVariableDeclaration", + "src": "29934:90:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "29952:2:5", + "nodeType": "YulLiteral", + "src": "29952:2:5", + "type": "", + "value": "13" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "29964:5:5", + "nodeType": "YulIdentifier", + "src": "29964:5:5" + }, + { + "name": "scalar_v", + "nativeSrc": "29971:8:5", + "nodeType": "YulIdentifier", + "src": "29971:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "29960:3:5", + "nodeType": "YulIdentifier", + "src": "29960:3:5" + }, + "nativeSrc": "29960:20:5", + "nodeType": "YulFunctionCall", + "src": "29960:20:5" + }, + { + "kind": "number", + "nativeSrc": "29982:1:5", + "nodeType": "YulLiteral", + "src": "29982:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "29956:3:5", + "nodeType": "YulIdentifier", + "src": "29956:3:5" + }, + "nativeSrc": "29956:28:5", + "nodeType": "YulFunctionCall", + "src": "29956:28:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "29948:3:5", + "nodeType": "YulIdentifier", + "src": "29948:3:5" + }, + "nativeSrc": "29948:37:5", + "nodeType": "YulFunctionCall", + "src": "29948:37:5" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "29991:1:5", + "nodeType": "YulLiteral", + "src": "29991:1:5", + "type": "", + "value": "9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "30002:5:5", + "nodeType": "YulIdentifier", + "src": "30002:5:5" + }, + { + "name": "scalar_u", + "nativeSrc": "30009:8:5", + "nodeType": "YulIdentifier", + "src": "30009:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "29998:3:5", + "nodeType": "YulIdentifier", + "src": "29998:3:5" + }, + "nativeSrc": "29998:20:5", + "nodeType": "YulFunctionCall", + "src": "29998:20:5" + }, + { + "kind": "number", + "nativeSrc": "30020:1:5", + "nodeType": "YulLiteral", + "src": "30020:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "29994:3:5", + "nodeType": "YulIdentifier", + "src": "29994:3:5" + }, + "nativeSrc": "29994:28:5", + "nodeType": "YulFunctionCall", + "src": "29994:28:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "29987:3:5", + "nodeType": "YulIdentifier", + "src": "29987:3:5" + }, + "nativeSrc": "29987:36:5", + "nodeType": "YulFunctionCall", + "src": "29987:36:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "29944:3:5", + "nodeType": "YulIdentifier", + "src": "29944:3:5" + }, + "nativeSrc": "29944:80:5", + "nodeType": "YulFunctionCall", + "src": "29944:80:5" + }, + "variables": [ + { + "name": "T4", + "nativeSrc": "29938:2:5", + "nodeType": "YulTypedName", + "src": "29938:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "30049:28:5", + "nodeType": "YulVariableDeclaration", + "src": "30049:28:5", + "value": { + "arguments": [ + { + "name": "index", + "nativeSrc": "30067:5:5", + "nodeType": "YulIdentifier", + "src": "30067:5:5" + }, + { + "kind": "number", + "nativeSrc": "30074:2:5", + "nodeType": "YulLiteral", + "src": "30074:2:5", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "30063:3:5", + "nodeType": "YulIdentifier", + "src": "30063:3:5" + }, + "nativeSrc": "30063:14:5", + "nodeType": "YulFunctionCall", + "src": "30063:14:5" + }, + "variables": [ + { + "name": "index2", + "nativeSrc": "30053:6:5", + "nodeType": "YulTypedName", + "src": "30053:6:5", + "type": "" + } + ] + }, + { + "nativeSrc": "30102:129:5", + "nodeType": "YulVariableDeclaration", + "src": "30102:129:5", + "value": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "30144:2:5", + "nodeType": "YulIdentifier", + "src": "30144:2:5" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30156:2:5", + "nodeType": "YulLiteral", + "src": "30156:2:5", + "type": "", + "value": "12" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index2", + "nativeSrc": "30168:6:5", + "nodeType": "YulIdentifier", + "src": "30168:6:5" + }, + { + "name": "scalar_v", + "nativeSrc": "30176:8:5", + "nodeType": "YulIdentifier", + "src": "30176:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "30164:3:5", + "nodeType": "YulIdentifier", + "src": "30164:3:5" + }, + "nativeSrc": "30164:21:5", + "nodeType": "YulFunctionCall", + "src": "30164:21:5" + }, + { + "kind": "number", + "nativeSrc": "30187:1:5", + "nodeType": "YulLiteral", + "src": "30187:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "30160:3:5", + "nodeType": "YulIdentifier", + "src": "30160:3:5" + }, + "nativeSrc": "30160:29:5", + "nodeType": "YulFunctionCall", + "src": "30160:29:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "30152:3:5", + "nodeType": "YulIdentifier", + "src": "30152:3:5" + }, + "nativeSrc": "30152:38:5", + "nodeType": "YulFunctionCall", + "src": "30152:38:5" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30196:1:5", + "nodeType": "YulLiteral", + "src": "30196:1:5", + "type": "", + "value": "8" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index2", + "nativeSrc": "30207:6:5", + "nodeType": "YulIdentifier", + "src": "30207:6:5" + }, + { + "name": "scalar_u", + "nativeSrc": "30215:8:5", + "nodeType": "YulIdentifier", + "src": "30215:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "30203:3:5", + "nodeType": "YulIdentifier", + "src": "30203:3:5" + }, + "nativeSrc": "30203:21:5", + "nodeType": "YulFunctionCall", + "src": "30203:21:5" + }, + { + "kind": "number", + "nativeSrc": "30226:1:5", + "nodeType": "YulLiteral", + "src": "30226:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "30199:3:5", + "nodeType": "YulIdentifier", + "src": "30199:3:5" + }, + "nativeSrc": "30199:29:5", + "nodeType": "YulFunctionCall", + "src": "30199:29:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "30192:3:5", + "nodeType": "YulIdentifier", + "src": "30192:3:5" + }, + "nativeSrc": "30192:37:5", + "nodeType": "YulFunctionCall", + "src": "30192:37:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30148:3:5", + "nodeType": "YulIdentifier", + "src": "30148:3:5" + }, + "nativeSrc": "30148:82:5", + "nodeType": "YulFunctionCall", + "src": "30148:82:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30140:3:5", + "nodeType": "YulIdentifier", + "src": "30140:3:5" + }, + "nativeSrc": "30140:91:5", + "nodeType": "YulFunctionCall", + "src": "30140:91:5" + }, + "variables": [ + { + "name": "T3", + "nativeSrc": "30106:2:5", + "nodeType": "YulTypedName", + "src": "30106:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "30256:29:5", + "nodeType": "YulVariableDeclaration", + "src": "30256:29:5", + "value": { + "arguments": [ + { + "name": "index2", + "nativeSrc": "30274:6:5", + "nodeType": "YulIdentifier", + "src": "30274:6:5" + }, + { + "kind": "number", + "nativeSrc": "30282:2:5", + "nodeType": "YulLiteral", + "src": "30282:2:5", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "30270:3:5", + "nodeType": "YulIdentifier", + "src": "30270:3:5" + }, + "nativeSrc": "30270:15:5", + "nodeType": "YulFunctionCall", + "src": "30270:15:5" + }, + "variables": [ + { + "name": "index3", + "nativeSrc": "30260:6:5", + "nodeType": "YulTypedName", + "src": "30260:6:5", + "type": "" + } + ] + }, + { + "nativeSrc": "30310:129:5", + "nodeType": "YulVariableDeclaration", + "src": "30310:129:5", + "value": { + "arguments": [ + { + "name": "T3", + "nativeSrc": "30352:2:5", + "nodeType": "YulIdentifier", + "src": "30352:2:5" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30364:2:5", + "nodeType": "YulLiteral", + "src": "30364:2:5", + "type": "", + "value": "11" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index3", + "nativeSrc": "30376:6:5", + "nodeType": "YulIdentifier", + "src": "30376:6:5" + }, + { + "name": "scalar_v", + "nativeSrc": "30384:8:5", + "nodeType": "YulIdentifier", + "src": "30384:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "30372:3:5", + "nodeType": "YulIdentifier", + "src": "30372:3:5" + }, + "nativeSrc": "30372:21:5", + "nodeType": "YulFunctionCall", + "src": "30372:21:5" + }, + { + "kind": "number", + "nativeSrc": "30395:1:5", + "nodeType": "YulLiteral", + "src": "30395:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "30368:3:5", + "nodeType": "YulIdentifier", + "src": "30368:3:5" + }, + "nativeSrc": "30368:29:5", + "nodeType": "YulFunctionCall", + "src": "30368:29:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "30360:3:5", + "nodeType": "YulIdentifier", + "src": "30360:3:5" + }, + "nativeSrc": "30360:38:5", + "nodeType": "YulFunctionCall", + "src": "30360:38:5" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30404:1:5", + "nodeType": "YulLiteral", + "src": "30404:1:5", + "type": "", + "value": "7" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index3", + "nativeSrc": "30415:6:5", + "nodeType": "YulIdentifier", + "src": "30415:6:5" + }, + { + "name": "scalar_u", + "nativeSrc": "30423:8:5", + "nodeType": "YulIdentifier", + "src": "30423:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "30411:3:5", + "nodeType": "YulIdentifier", + "src": "30411:3:5" + }, + "nativeSrc": "30411:21:5", + "nodeType": "YulFunctionCall", + "src": "30411:21:5" + }, + { + "kind": "number", + "nativeSrc": "30434:1:5", + "nodeType": "YulLiteral", + "src": "30434:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "30407:3:5", + "nodeType": "YulIdentifier", + "src": "30407:3:5" + }, + "nativeSrc": "30407:29:5", + "nodeType": "YulFunctionCall", + "src": "30407:29:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "30400:3:5", + "nodeType": "YulIdentifier", + "src": "30400:3:5" + }, + "nativeSrc": "30400:37:5", + "nodeType": "YulFunctionCall", + "src": "30400:37:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30356:3:5", + "nodeType": "YulIdentifier", + "src": "30356:3:5" + }, + "nativeSrc": "30356:82:5", + "nodeType": "YulFunctionCall", + "src": "30356:82:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30348:3:5", + "nodeType": "YulIdentifier", + "src": "30348:3:5" + }, + "nativeSrc": "30348:91:5", + "nodeType": "YulFunctionCall", + "src": "30348:91:5" + }, + "variables": [ + { + "name": "T2", + "nativeSrc": "30314:2:5", + "nodeType": "YulTypedName", + "src": "30314:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "30464:24:5", + "nodeType": "YulAssignment", + "src": "30464:24:5", + "value": { + "arguments": [ + { + "name": "index3", + "nativeSrc": "30477:6:5", + "nodeType": "YulIdentifier", + "src": "30477:6:5" + }, + { + "kind": "number", + "nativeSrc": "30485:2:5", + "nodeType": "YulLiteral", + "src": "30485:2:5", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "30473:3:5", + "nodeType": "YulIdentifier", + "src": "30473:3:5" + }, + "nativeSrc": "30473:15:5", + "nodeType": "YulFunctionCall", + "src": "30473:15:5" + }, + "variableNames": [ + { + "name": "index", + "nativeSrc": "30464:5:5", + "nodeType": "YulIdentifier", + "src": "30464:5:5" + } + ] + }, + { + "nativeSrc": "30513:127:5", + "nodeType": "YulVariableDeclaration", + "src": "30513:127:5", + "value": { + "arguments": [ + { + "name": "T2", + "nativeSrc": "30555:2:5", + "nodeType": "YulIdentifier", + "src": "30555:2:5" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30567:2:5", + "nodeType": "YulLiteral", + "src": "30567:2:5", + "type": "", + "value": "10" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "30579:5:5", + "nodeType": "YulIdentifier", + "src": "30579:5:5" + }, + { + "name": "scalar_v", + "nativeSrc": "30586:8:5", + "nodeType": "YulIdentifier", + "src": "30586:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "30575:3:5", + "nodeType": "YulIdentifier", + "src": "30575:3:5" + }, + "nativeSrc": "30575:20:5", + "nodeType": "YulFunctionCall", + "src": "30575:20:5" + }, + { + "kind": "number", + "nativeSrc": "30597:1:5", + "nodeType": "YulLiteral", + "src": "30597:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "30571:3:5", + "nodeType": "YulIdentifier", + "src": "30571:3:5" + }, + "nativeSrc": "30571:28:5", + "nodeType": "YulFunctionCall", + "src": "30571:28:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "30563:3:5", + "nodeType": "YulIdentifier", + "src": "30563:3:5" + }, + "nativeSrc": "30563:37:5", + "nodeType": "YulFunctionCall", + "src": "30563:37:5" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30606:1:5", + "nodeType": "YulLiteral", + "src": "30606:1:5", + "type": "", + "value": "6" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "30617:5:5", + "nodeType": "YulIdentifier", + "src": "30617:5:5" + }, + { + "name": "scalar_u", + "nativeSrc": "30624:8:5", + "nodeType": "YulIdentifier", + "src": "30624:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "30613:3:5", + "nodeType": "YulIdentifier", + "src": "30613:3:5" + }, + "nativeSrc": "30613:20:5", + "nodeType": "YulFunctionCall", + "src": "30613:20:5" + }, + { + "kind": "number", + "nativeSrc": "30635:1:5", + "nodeType": "YulLiteral", + "src": "30635:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "30609:3:5", + "nodeType": "YulIdentifier", + "src": "30609:3:5" + }, + "nativeSrc": "30609:28:5", + "nodeType": "YulFunctionCall", + "src": "30609:28:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "30602:3:5", + "nodeType": "YulIdentifier", + "src": "30602:3:5" + }, + "nativeSrc": "30602:36:5", + "nodeType": "YulFunctionCall", + "src": "30602:36:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30559:3:5", + "nodeType": "YulIdentifier", + "src": "30559:3:5" + }, + "nativeSrc": "30559:80:5", + "nodeType": "YulFunctionCall", + "src": "30559:80:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30551:3:5", + "nodeType": "YulIdentifier", + "src": "30551:3:5" + }, + "nativeSrc": "30551:89:5", + "nodeType": "YulFunctionCall", + "src": "30551:89:5" + }, + "variables": [ + { + "name": "T1", + "nativeSrc": "30517:2:5", + "nodeType": "YulTypedName", + "src": "30517:2:5", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "30776:108:5", + "nodeType": "YulBlock", + "src": "30776:108:5", + "statements": [ + { + "nativeSrc": "30806:14:5", + "nodeType": "YulAssignment", + "src": "30806:14:5", + "value": { + "arguments": [ + { + "name": "p", + "nativeSrc": "30815:1:5", + "nodeType": "YulIdentifier", + "src": "30815:1:5" + }, + { + "name": "Y", + "nativeSrc": "30818:1:5", + "nodeType": "YulIdentifier", + "src": "30818:1:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "30811:3:5", + "nodeType": "YulIdentifier", + "src": "30811:3:5" + }, + "nativeSrc": "30811:9:5", + "nodeType": "YulFunctionCall", + "src": "30811:9:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "30806:1:5", + "nodeType": "YulIdentifier", + "src": "30806:1:5" + } + ] + }, + { + "nativeSrc": "30850:8:5", + "nodeType": "YulContinue", + "src": "30850:8:5" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "T1", + "nativeSrc": "30772:2:5", + "nodeType": "YulIdentifier", + "src": "30772:2:5" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "30765:6:5", + "nodeType": "YulIdentifier", + "src": "30765:6:5" + }, + "nativeSrc": "30765:10:5", + "nodeType": "YulFunctionCall", + "src": "30765:10:5" + }, + "nativeSrc": "30762:122:5", + "nodeType": "YulIf", + "src": "30762:122:5" + }, + { + "expression": { + "arguments": [ + { + "name": "dataPointer", + "nativeSrc": "30921:11:5", + "nodeType": "YulIdentifier", + "src": "30921:11:5" + }, + { + "name": "T", + "nativeSrc": "30934:1:5", + "nodeType": "YulIdentifier", + "src": "30934:1:5" + }, + { + "name": "T1", + "nativeSrc": "30937:2:5", + "nodeType": "YulIdentifier", + "src": "30937:2:5" + }, + { + "kind": "number", + "nativeSrc": "30941:2:5", + "nodeType": "YulLiteral", + "src": "30941:2:5", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "extcodecopy", + "nativeSrc": "30909:11:5", + "nodeType": "YulIdentifier", + "src": "30909:11:5" + }, + "nativeSrc": "30909:35:5", + "nodeType": "YulFunctionCall", + "src": "30909:35:5" + }, + "nativeSrc": "30909:35:5", + "nodeType": "YulExpressionStatement", + "src": "30909:35:5" + } + ] + }, + { + "nativeSrc": "30988:2229:5", + "nodeType": "YulBlock", + "src": "30988:2229:5", + "statements": [ + { + "body": { + "nativeSrc": "31155:231:5", + "nodeType": "YulBlock", + "src": "31155:231:5", + "statements": [ + { + "nativeSrc": "31185:13:5", + "nodeType": "YulAssignment", + "src": "31185:13:5", + "value": { + "arguments": [ + { + "name": "T", + "nativeSrc": "31196:1:5", + "nodeType": "YulIdentifier", + "src": "31196:1:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "31190:5:5", + "nodeType": "YulIdentifier", + "src": "31190:5:5" + }, + "nativeSrc": "31190:8:5", + "nodeType": "YulFunctionCall", + "src": "31190:8:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "31185:1:5", + "nodeType": "YulIdentifier", + "src": "31185:1:5" + } + ] + }, + { + "nativeSrc": "31227:22:5", + "nodeType": "YulAssignment", + "src": "31227:22:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "31242:1:5", + "nodeType": "YulIdentifier", + "src": "31242:1:5" + }, + { + "kind": "number", + "nativeSrc": "31245:2:5", + "nodeType": "YulLiteral", + "src": "31245:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31238:3:5", + "nodeType": "YulIdentifier", + "src": "31238:3:5" + }, + "nativeSrc": "31238:10:5", + "nodeType": "YulFunctionCall", + "src": "31238:10:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "31232:5:5", + "nodeType": "YulIdentifier", + "src": "31232:5:5" + }, + "nativeSrc": "31232:17:5", + "nodeType": "YulFunctionCall", + "src": "31232:17:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "31227:1:5", + "nodeType": "YulIdentifier", + "src": "31227:1:5" + } + ] + }, + { + "nativeSrc": "31278:7:5", + "nodeType": "YulAssignment", + "src": "31278:7:5", + "value": { + "kind": "number", + "nativeSrc": "31284:1:5", + "nodeType": "YulLiteral", + "src": "31284:1:5", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "31278:2:5", + "nodeType": "YulIdentifier", + "src": "31278:2:5" + } + ] + }, + { + "nativeSrc": "31314:8:5", + "nodeType": "YulAssignment", + "src": "31314:8:5", + "value": { + "kind": "number", + "nativeSrc": "31321:1:5", + "nodeType": "YulLiteral", + "src": "31321:1:5", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "zzz", + "nativeSrc": "31314:3:5", + "nodeType": "YulIdentifier", + "src": "31314:3:5" + } + ] + }, + { + "nativeSrc": "31352:8:5", + "nodeType": "YulContinue", + "src": "31352:8:5" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "zz", + "nativeSrc": "31151:2:5", + "nodeType": "YulIdentifier", + "src": "31151:2:5" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "31144:6:5", + "nodeType": "YulIdentifier", + "src": "31144:6:5" + }, + "nativeSrc": "31144:10:5", + "nodeType": "YulFunctionCall", + "src": "31144:10:5" + }, + "nativeSrc": "31141:245:5", + "nodeType": "YulIf", + "src": "31141:245:5" + }, + { + "nativeSrc": "31412:57:5", + "nodeType": "YulVariableDeclaration", + "src": "31412:57:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "31446:1:5", + "nodeType": "YulIdentifier", + "src": "31446:1:5" + }, + { + "kind": "number", + "nativeSrc": "31449:2:5", + "nodeType": "YulLiteral", + "src": "31449:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31442:3:5", + "nodeType": "YulIdentifier", + "src": "31442:3:5" + }, + "nativeSrc": "31442:10:5", + "nodeType": "YulFunctionCall", + "src": "31442:10:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "31436:5:5", + "nodeType": "YulIdentifier", + "src": "31436:5:5" + }, + "nativeSrc": "31436:17:5", + "nodeType": "YulFunctionCall", + "src": "31436:17:5" + }, + { + "name": "zzz", + "nativeSrc": "31455:3:5", + "nodeType": "YulIdentifier", + "src": "31455:3:5" + }, + { + "name": "p", + "nativeSrc": "31460:1:5", + "nodeType": "YulIdentifier", + "src": "31460:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "31429:6:5", + "nodeType": "YulIdentifier", + "src": "31429:6:5" + }, + "nativeSrc": "31429:33:5", + "nodeType": "YulFunctionCall", + "src": "31429:33:5" + }, + { + "name": "Y", + "nativeSrc": "31464:1:5", + "nodeType": "YulIdentifier", + "src": "31464:1:5" + }, + { + "name": "p", + "nativeSrc": "31467:1:5", + "nodeType": "YulIdentifier", + "src": "31467:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "31422:6:5", + "nodeType": "YulIdentifier", + "src": "31422:6:5" + }, + "nativeSrc": "31422:47:5", + "nodeType": "YulFunctionCall", + "src": "31422:47:5" + }, + "variables": [ + { + "name": "y2", + "nativeSrc": "31416:2:5", + "nodeType": "YulTypedName", + "src": "31416:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "31494:55:5", + "nodeType": "YulVariableDeclaration", + "src": "31494:55:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "31524:1:5", + "nodeType": "YulIdentifier", + "src": "31524:1:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "31518:5:5", + "nodeType": "YulIdentifier", + "src": "31518:5:5" + }, + "nativeSrc": "31518:8:5", + "nodeType": "YulFunctionCall", + "src": "31518:8:5" + }, + { + "name": "zz", + "nativeSrc": "31528:2:5", + "nodeType": "YulIdentifier", + "src": "31528:2:5" + }, + { + "name": "p", + "nativeSrc": "31532:1:5", + "nodeType": "YulIdentifier", + "src": "31532:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "31511:6:5", + "nodeType": "YulIdentifier", + "src": "31511:6:5" + }, + "nativeSrc": "31511:23:5", + "nodeType": "YulFunctionCall", + "src": "31511:23:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "31540:1:5", + "nodeType": "YulIdentifier", + "src": "31540:1:5" + }, + { + "name": "X", + "nativeSrc": "31543:1:5", + "nodeType": "YulIdentifier", + "src": "31543:1:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "31536:3:5", + "nodeType": "YulIdentifier", + "src": "31536:3:5" + }, + "nativeSrc": "31536:9:5", + "nodeType": "YulFunctionCall", + "src": "31536:9:5" + }, + { + "name": "p", + "nativeSrc": "31547:1:5", + "nodeType": "YulIdentifier", + "src": "31547:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "31504:6:5", + "nodeType": "YulIdentifier", + "src": "31504:6:5" + }, + "nativeSrc": "31504:45:5", + "nodeType": "YulFunctionCall", + "src": "31504:45:5" + }, + "variables": [ + { + "name": "T2", + "nativeSrc": "31498:2:5", + "nodeType": "YulTypedName", + "src": "31498:2:5", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "31645:1041:5", + "nodeType": "YulBlock", + "src": "31645:1041:5", + "statements": [ + { + "body": { + "nativeSrc": "31689:971:5", + "nodeType": "YulBlock", + "src": "31689:971:5", + "statements": [ + { + "nativeSrc": "31723:31:5", + "nodeType": "YulVariableDeclaration", + "src": "31723:31:5", + "value": { + "arguments": [ + { + "name": "minus_2", + "nativeSrc": "31740:7:5", + "nodeType": "YulIdentifier", + "src": "31740:7:5" + }, + { + "name": "Y", + "nativeSrc": "31749:1:5", + "nodeType": "YulIdentifier", + "src": "31749:1:5" + }, + { + "name": "p", + "nativeSrc": "31752:1:5", + "nodeType": "YulIdentifier", + "src": "31752:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "31733:6:5", + "nodeType": "YulIdentifier", + "src": "31733:6:5" + }, + "nativeSrc": "31733:21:5", + "nodeType": "YulFunctionCall", + "src": "31733:21:5" + }, + "variables": [ + { + "name": "T1", + "nativeSrc": "31727:2:5", + "nodeType": "YulTypedName", + "src": "31727:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "31806:23:5", + "nodeType": "YulAssignment", + "src": "31806:23:5", + "value": { + "arguments": [ + { + "name": "T1", + "nativeSrc": "31819:2:5", + "nodeType": "YulIdentifier", + "src": "31819:2:5" + }, + { + "name": "T1", + "nativeSrc": "31823:2:5", + "nodeType": "YulIdentifier", + "src": "31823:2:5" + }, + { + "name": "p", + "nativeSrc": "31827:1:5", + "nodeType": "YulIdentifier", + "src": "31827:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "31812:6:5", + "nodeType": "YulIdentifier", + "src": "31812:6:5" + }, + "nativeSrc": "31812:17:5", + "nodeType": "YulFunctionCall", + "src": "31812:17:5" + }, + "variableNames": [ + { + "name": "T2", + "nativeSrc": "31806:2:5", + "nodeType": "YulIdentifier", + "src": "31806:2:5" + } + ] + }, + { + "nativeSrc": "31871:26:5", + "nodeType": "YulVariableDeclaration", + "src": "31871:26:5", + "value": { + "arguments": [ + { + "name": "X", + "nativeSrc": "31888:1:5", + "nodeType": "YulIdentifier", + "src": "31888:1:5" + }, + { + "name": "T2", + "nativeSrc": "31891:2:5", + "nodeType": "YulIdentifier", + "src": "31891:2:5" + }, + { + "name": "p", + "nativeSrc": "31895:1:5", + "nodeType": "YulIdentifier", + "src": "31895:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "31881:6:5", + "nodeType": "YulIdentifier", + "src": "31881:6:5" + }, + "nativeSrc": "31881:16:5", + "nodeType": "YulFunctionCall", + "src": "31881:16:5" + }, + "variables": [ + { + "name": "T3", + "nativeSrc": "31875:2:5", + "nodeType": "YulTypedName", + "src": "31875:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "31943:23:5", + "nodeType": "YulAssignment", + "src": "31943:23:5", + "value": { + "arguments": [ + { + "name": "T1", + "nativeSrc": "31956:2:5", + "nodeType": "YulIdentifier", + "src": "31956:2:5" + }, + { + "name": "T2", + "nativeSrc": "31960:2:5", + "nodeType": "YulIdentifier", + "src": "31960:2:5" + }, + { + "name": "p", + "nativeSrc": "31964:1:5", + "nodeType": "YulIdentifier", + "src": "31964:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "31949:6:5", + "nodeType": "YulIdentifier", + "src": "31949:6:5" + }, + "nativeSrc": "31949:17:5", + "nodeType": "YulFunctionCall", + "src": "31949:17:5" + }, + "variableNames": [ + { + "name": "T1", + "nativeSrc": "31943:2:5", + "nodeType": "YulIdentifier", + "src": "31943:2:5" + } + ] + }, + { + "nativeSrc": "32007:59:5", + "nodeType": "YulAssignment", + "src": "32007:59:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "X", + "nativeSrc": "32027:1:5", + "nodeType": "YulIdentifier", + "src": "32027:1:5" + }, + { + "name": "zz", + "nativeSrc": "32030:2:5", + "nodeType": "YulIdentifier", + "src": "32030:2:5" + }, + { + "name": "p", + "nativeSrc": "32034:1:5", + "nodeType": "YulIdentifier", + "src": "32034:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "32020:6:5", + "nodeType": "YulIdentifier", + "src": "32020:6:5" + }, + "nativeSrc": "32020:16:5", + "nodeType": "YulFunctionCall", + "src": "32020:16:5" + }, + { + "arguments": [ + { + "name": "X", + "nativeSrc": "32045:1:5", + "nodeType": "YulIdentifier", + "src": "32045:1:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "32052:1:5", + "nodeType": "YulIdentifier", + "src": "32052:1:5" + }, + { + "name": "zz", + "nativeSrc": "32055:2:5", + "nodeType": "YulIdentifier", + "src": "32055:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "32048:3:5", + "nodeType": "YulIdentifier", + "src": "32048:3:5" + }, + "nativeSrc": "32048:10:5", + "nodeType": "YulFunctionCall", + "src": "32048:10:5" + }, + { + "name": "p", + "nativeSrc": "32060:1:5", + "nodeType": "YulIdentifier", + "src": "32060:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "32038:6:5", + "nodeType": "YulIdentifier", + "src": "32038:6:5" + }, + "nativeSrc": "32038:24:5", + "nodeType": "YulFunctionCall", + "src": "32038:24:5" + }, + { + "name": "p", + "nativeSrc": "32064:1:5", + "nodeType": "YulIdentifier", + "src": "32064:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "32013:6:5", + "nodeType": "YulIdentifier", + "src": "32013:6:5" + }, + "nativeSrc": "32013:53:5", + "nodeType": "YulFunctionCall", + "src": "32013:53:5" + }, + "variableNames": [ + { + "name": "y2", + "nativeSrc": "32007:2:5", + "nodeType": "YulIdentifier", + "src": "32007:2:5" + } + ] + }, + { + "nativeSrc": "32114:26:5", + "nodeType": "YulVariableDeclaration", + "src": "32114:26:5", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "32131:1:5", + "nodeType": "YulLiteral", + "src": "32131:1:5", + "type": "", + "value": "3" + }, + { + "name": "y2", + "nativeSrc": "32134:2:5", + "nodeType": "YulIdentifier", + "src": "32134:2:5" + }, + { + "name": "p", + "nativeSrc": "32138:1:5", + "nodeType": "YulIdentifier", + "src": "32138:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "32124:6:5", + "nodeType": "YulIdentifier", + "src": "32124:6:5" + }, + "nativeSrc": "32124:16:5", + "nodeType": "YulFunctionCall", + "src": "32124:16:5" + }, + "variables": [ + { + "name": "T4", + "nativeSrc": "32118:2:5", + "nodeType": "YulTypedName", + "src": "32118:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "32193:25:5", + "nodeType": "YulAssignment", + "src": "32193:25:5", + "value": { + "arguments": [ + { + "name": "T1", + "nativeSrc": "32207:2:5", + "nodeType": "YulIdentifier", + "src": "32207:2:5" + }, + { + "name": "zzz", + "nativeSrc": "32211:3:5", + "nodeType": "YulIdentifier", + "src": "32211:3:5" + }, + { + "name": "p", + "nativeSrc": "32216:1:5", + "nodeType": "YulIdentifier", + "src": "32216:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "32200:6:5", + "nodeType": "YulIdentifier", + "src": "32200:6:5" + }, + "nativeSrc": "32200:18:5", + "nodeType": "YulFunctionCall", + "src": "32200:18:5" + }, + "variableNames": [ + { + "name": "zzz", + "nativeSrc": "32193:3:5", + "nodeType": "YulIdentifier", + "src": "32193:3:5" + } + ] + }, + { + "nativeSrc": "32265:23:5", + "nodeType": "YulAssignment", + "src": "32265:23:5", + "value": { + "arguments": [ + { + "name": "T2", + "nativeSrc": "32278:2:5", + "nodeType": "YulIdentifier", + "src": "32278:2:5" + }, + { + "name": "zz", + "nativeSrc": "32282:2:5", + "nodeType": "YulIdentifier", + "src": "32282:2:5" + }, + { + "name": "p", + "nativeSrc": "32286:1:5", + "nodeType": "YulIdentifier", + "src": "32286:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "32271:6:5", + "nodeType": "YulIdentifier", + "src": "32271:6:5" + }, + "nativeSrc": "32271:17:5", + "nodeType": "YulFunctionCall", + "src": "32271:17:5" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "32265:2:5", + "nodeType": "YulIdentifier", + "src": "32265:2:5" + } + ] + }, + { + "nativeSrc": "32342:57:5", + "nodeType": "YulAssignment", + "src": "32342:57:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "T4", + "nativeSrc": "32361:2:5", + "nodeType": "YulIdentifier", + "src": "32361:2:5" + }, + { + "name": "T4", + "nativeSrc": "32365:2:5", + "nodeType": "YulIdentifier", + "src": "32365:2:5" + }, + { + "name": "p", + "nativeSrc": "32369:1:5", + "nodeType": "YulIdentifier", + "src": "32369:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "32354:6:5", + "nodeType": "YulIdentifier", + "src": "32354:6:5" + }, + "nativeSrc": "32354:17:5", + "nodeType": "YulFunctionCall", + "src": "32354:17:5" + }, + { + "arguments": [ + { + "name": "minus_2", + "nativeSrc": "32380:7:5", + "nodeType": "YulIdentifier", + "src": "32380:7:5" + }, + { + "name": "T3", + "nativeSrc": "32389:2:5", + "nodeType": "YulIdentifier", + "src": "32389:2:5" + }, + { + "name": "p", + "nativeSrc": "32393:1:5", + "nodeType": "YulIdentifier", + "src": "32393:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "32373:6:5", + "nodeType": "YulIdentifier", + "src": "32373:6:5" + }, + "nativeSrc": "32373:22:5", + "nodeType": "YulFunctionCall", + "src": "32373:22:5" + }, + { + "name": "p", + "nativeSrc": "32397:1:5", + "nodeType": "YulIdentifier", + "src": "32397:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "32347:6:5", + "nodeType": "YulIdentifier", + "src": "32347:6:5" + }, + "nativeSrc": "32347:52:5", + "nodeType": "YulFunctionCall", + "src": "32347:52:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "32342:1:5", + "nodeType": "YulIdentifier", + "src": "32342:1:5" + } + ] + }, + { + "nativeSrc": "32444:45:5", + "nodeType": "YulAssignment", + "src": "32444:45:5", + "value": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "32457:2:5", + "nodeType": "YulIdentifier", + "src": "32457:2:5" + }, + { + "arguments": [ + { + "name": "T3", + "nativeSrc": "32468:2:5", + "nodeType": "YulIdentifier", + "src": "32468:2:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "32476:1:5", + "nodeType": "YulIdentifier", + "src": "32476:1:5" + }, + { + "name": "X", + "nativeSrc": "32479:1:5", + "nodeType": "YulIdentifier", + "src": "32479:1:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "32472:3:5", + "nodeType": "YulIdentifier", + "src": "32472:3:5" + }, + "nativeSrc": "32472:9:5", + "nodeType": "YulFunctionCall", + "src": "32472:9:5" + }, + { + "name": "p", + "nativeSrc": "32483:1:5", + "nodeType": "YulIdentifier", + "src": "32483:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "32461:6:5", + "nodeType": "YulIdentifier", + "src": "32461:6:5" + }, + "nativeSrc": "32461:24:5", + "nodeType": "YulFunctionCall", + "src": "32461:24:5" + }, + { + "name": "p", + "nativeSrc": "32487:1:5", + "nodeType": "YulIdentifier", + "src": "32487:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "32450:6:5", + "nodeType": "YulIdentifier", + "src": "32450:6:5" + }, + "nativeSrc": "32450:39:5", + "nodeType": "YulFunctionCall", + "src": "32450:39:5" + }, + "variableNames": [ + { + "name": "T2", + "nativeSrc": "32444:2:5", + "nodeType": "YulIdentifier", + "src": "32444:2:5" + } + ] + }, + { + "nativeSrc": "32533:36:5", + "nodeType": "YulAssignment", + "src": "32533:36:5", + "value": { + "arguments": [ + { + "name": "T2", + "nativeSrc": "32545:2:5", + "nodeType": "YulIdentifier", + "src": "32545:2:5" + }, + { + "arguments": [ + { + "name": "T1", + "nativeSrc": "32556:2:5", + "nodeType": "YulIdentifier", + "src": "32556:2:5" + }, + { + "name": "Y", + "nativeSrc": "32560:1:5", + "nodeType": "YulIdentifier", + "src": "32560:1:5" + }, + { + "name": "p", + "nativeSrc": "32563:1:5", + "nodeType": "YulIdentifier", + "src": "32563:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "32549:6:5", + "nodeType": "YulIdentifier", + "src": "32549:6:5" + }, + "nativeSrc": "32549:16:5", + "nodeType": "YulFunctionCall", + "src": "32549:16:5" + }, + { + "name": "p", + "nativeSrc": "32567:1:5", + "nodeType": "YulIdentifier", + "src": "32567:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "32538:6:5", + "nodeType": "YulIdentifier", + "src": "32538:6:5" + }, + "nativeSrc": "32538:31:5", + "nodeType": "YulFunctionCall", + "src": "32538:31:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "32533:1:5", + "nodeType": "YulIdentifier", + "src": "32533:1:5" + } + ] + }, + { + "nativeSrc": "32622:8:5", + "nodeType": "YulContinue", + "src": "32622:8:5" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "T2", + "nativeSrc": "31685:2:5", + "nodeType": "YulIdentifier", + "src": "31685:2:5" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "31678:6:5", + "nodeType": "YulIdentifier", + "src": "31678:6:5" + }, + "nativeSrc": "31678:10:5", + "nodeType": "YulFunctionCall", + "src": "31678:10:5" + }, + "nativeSrc": "31675:985:5", + "nodeType": "YulIf", + "src": "31675:985:5" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "y2", + "nativeSrc": "31641:2:5", + "nodeType": "YulIdentifier", + "src": "31641:2:5" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "31634:6:5", + "nodeType": "YulIdentifier", + "src": "31634:6:5" + }, + "nativeSrc": "31634:10:5", + "nodeType": "YulFunctionCall", + "src": "31634:10:5" + }, + "nativeSrc": "31631:1055:5", + "nodeType": "YulIf", + "src": "31631:1055:5" + }, + { + "nativeSrc": "32712:27:5", + "nodeType": "YulVariableDeclaration", + "src": "32712:27:5", + "value": { + "arguments": [ + { + "name": "T2", + "nativeSrc": "32729:2:5", + "nodeType": "YulIdentifier", + "src": "32729:2:5" + }, + { + "name": "T2", + "nativeSrc": "32733:2:5", + "nodeType": "YulIdentifier", + "src": "32733:2:5" + }, + { + "name": "p", + "nativeSrc": "32737:1:5", + "nodeType": "YulIdentifier", + "src": "32737:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "32722:6:5", + "nodeType": "YulIdentifier", + "src": "32722:6:5" + }, + "nativeSrc": "32722:17:5", + "nodeType": "YulFunctionCall", + "src": "32722:17:5" + }, + "variables": [ + { + "name": "T4", + "nativeSrc": "32716:2:5", + "nodeType": "YulTypedName", + "src": "32716:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "32764:27:5", + "nodeType": "YulVariableDeclaration", + "src": "32764:27:5", + "value": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "32781:2:5", + "nodeType": "YulIdentifier", + "src": "32781:2:5" + }, + { + "name": "T2", + "nativeSrc": "32785:2:5", + "nodeType": "YulIdentifier", + "src": "32785:2:5" + }, + { + "name": "p", + "nativeSrc": "32789:1:5", + "nodeType": "YulIdentifier", + "src": "32789:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "32774:6:5", + "nodeType": "YulIdentifier", + "src": "32774:6:5" + }, + "nativeSrc": "32774:17:5", + "nodeType": "YulFunctionCall", + "src": "32774:17:5" + }, + "variables": [ + { + "name": "T1", + "nativeSrc": "32768:2:5", + "nodeType": "YulTypedName", + "src": "32768:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "32819:23:5", + "nodeType": "YulAssignment", + "src": "32819:23:5", + "value": { + "arguments": [ + { + "name": "zz", + "nativeSrc": "32832:2:5", + "nodeType": "YulIdentifier", + "src": "32832:2:5" + }, + { + "name": "T4", + "nativeSrc": "32836:2:5", + "nodeType": "YulIdentifier", + "src": "32836:2:5" + }, + { + "name": "p", + "nativeSrc": "32840:1:5", + "nodeType": "YulIdentifier", + "src": "32840:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "32825:6:5", + "nodeType": "YulIdentifier", + "src": "32825:6:5" + }, + "nativeSrc": "32825:17:5", + "nodeType": "YulFunctionCall", + "src": "32825:17:5" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "32819:2:5", + "nodeType": "YulIdentifier", + "src": "32819:2:5" + } + ] + }, + { + "nativeSrc": "32904:25:5", + "nodeType": "YulAssignment", + "src": "32904:25:5", + "value": { + "arguments": [ + { + "name": "zzz", + "nativeSrc": "32918:3:5", + "nodeType": "YulIdentifier", + "src": "32918:3:5" + }, + { + "name": "T1", + "nativeSrc": "32923:2:5", + "nodeType": "YulIdentifier", + "src": "32923:2:5" + }, + { + "name": "p", + "nativeSrc": "32927:1:5", + "nodeType": "YulIdentifier", + "src": "32927:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "32911:6:5", + "nodeType": "YulIdentifier", + "src": "32911:6:5" + }, + "nativeSrc": "32911:18:5", + "nodeType": "YulFunctionCall", + "src": "32911:18:5" + }, + "variableNames": [ + { + "name": "zzz", + "nativeSrc": "32904:3:5", + "nodeType": "YulIdentifier", + "src": "32904:3:5" + } + ] + }, + { + "nativeSrc": "32963:27:5", + "nodeType": "YulVariableDeclaration", + "src": "32963:27:5", + "value": { + "arguments": [ + { + "name": "X", + "nativeSrc": "32981:1:5", + "nodeType": "YulIdentifier", + "src": "32981:1:5" + }, + { + "name": "T4", + "nativeSrc": "32984:2:5", + "nodeType": "YulIdentifier", + "src": "32984:2:5" + }, + { + "name": "p", + "nativeSrc": "32988:1:5", + "nodeType": "YulIdentifier", + "src": "32988:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "32974:6:5", + "nodeType": "YulIdentifier", + "src": "32974:6:5" + }, + "nativeSrc": "32974:16:5", + "nodeType": "YulFunctionCall", + "src": "32974:16:5" + }, + "variables": [ + { + "name": "zz1", + "nativeSrc": "32967:3:5", + "nodeType": "YulTypedName", + "src": "32967:3:5", + "type": "" + } + ] + }, + { + "nativeSrc": "33015:81:5", + "nodeType": "YulAssignment", + "src": "33015:81:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "y2", + "nativeSrc": "33041:2:5", + "nodeType": "YulIdentifier", + "src": "33041:2:5" + }, + { + "name": "y2", + "nativeSrc": "33045:2:5", + "nodeType": "YulIdentifier", + "src": "33045:2:5" + }, + { + "name": "p", + "nativeSrc": "33049:1:5", + "nodeType": "YulIdentifier", + "src": "33049:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "33034:6:5", + "nodeType": "YulIdentifier", + "src": "33034:6:5" + }, + "nativeSrc": "33034:17:5", + "nodeType": "YulFunctionCall", + "src": "33034:17:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "33057:1:5", + "nodeType": "YulIdentifier", + "src": "33057:1:5" + }, + { + "name": "T1", + "nativeSrc": "33060:2:5", + "nodeType": "YulIdentifier", + "src": "33060:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "33053:3:5", + "nodeType": "YulIdentifier", + "src": "33053:3:5" + }, + "nativeSrc": "33053:10:5", + "nodeType": "YulFunctionCall", + "src": "33053:10:5" + }, + { + "name": "p", + "nativeSrc": "33065:1:5", + "nodeType": "YulIdentifier", + "src": "33065:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "33027:6:5", + "nodeType": "YulIdentifier", + "src": "33027:6:5" + }, + "nativeSrc": "33027:40:5", + "nodeType": "YulFunctionCall", + "src": "33027:40:5" + }, + { + "arguments": [ + { + "name": "minus_2", + "nativeSrc": "33076:7:5", + "nodeType": "YulIdentifier", + "src": "33076:7:5" + }, + { + "name": "zz1", + "nativeSrc": "33085:3:5", + "nodeType": "YulIdentifier", + "src": "33085:3:5" + }, + { + "name": "p", + "nativeSrc": "33090:1:5", + "nodeType": "YulIdentifier", + "src": "33090:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "33069:6:5", + "nodeType": "YulIdentifier", + "src": "33069:6:5" + }, + "nativeSrc": "33069:23:5", + "nodeType": "YulFunctionCall", + "src": "33069:23:5" + }, + { + "name": "p", + "nativeSrc": "33094:1:5", + "nodeType": "YulIdentifier", + "src": "33094:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "33020:6:5", + "nodeType": "YulIdentifier", + "src": "33020:6:5" + }, + "nativeSrc": "33020:76:5", + "nodeType": "YulFunctionCall", + "src": "33020:76:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "33015:1:5", + "nodeType": "YulIdentifier", + "src": "33015:1:5" + } + ] + }, + { + "nativeSrc": "33121:74:5", + "nodeType": "YulAssignment", + "src": "33121:74:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "zz1", + "nativeSrc": "33147:3:5", + "nodeType": "YulIdentifier", + "src": "33147:3:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "33156:1:5", + "nodeType": "YulIdentifier", + "src": "33156:1:5" + }, + { + "name": "X", + "nativeSrc": "33159:1:5", + "nodeType": "YulIdentifier", + "src": "33159:1:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "33152:3:5", + "nodeType": "YulIdentifier", + "src": "33152:3:5" + }, + "nativeSrc": "33152:9:5", + "nodeType": "YulFunctionCall", + "src": "33152:9:5" + }, + { + "name": "p", + "nativeSrc": "33163:1:5", + "nodeType": "YulIdentifier", + "src": "33163:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "33140:6:5", + "nodeType": "YulIdentifier", + "src": "33140:6:5" + }, + "nativeSrc": "33140:25:5", + "nodeType": "YulFunctionCall", + "src": "33140:25:5" + }, + { + "name": "y2", + "nativeSrc": "33167:2:5", + "nodeType": "YulIdentifier", + "src": "33167:2:5" + }, + { + "name": "p", + "nativeSrc": "33171:1:5", + "nodeType": "YulIdentifier", + "src": "33171:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "33133:6:5", + "nodeType": "YulIdentifier", + "src": "33133:6:5" + }, + "nativeSrc": "33133:40:5", + "nodeType": "YulFunctionCall", + "src": "33133:40:5" + }, + { + "arguments": [ + { + "name": "Y", + "nativeSrc": "33182:1:5", + "nodeType": "YulIdentifier", + "src": "33182:1:5" + }, + { + "name": "T1", + "nativeSrc": "33185:2:5", + "nodeType": "YulIdentifier", + "src": "33185:2:5" + }, + { + "name": "p", + "nativeSrc": "33189:1:5", + "nodeType": "YulIdentifier", + "src": "33189:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "33175:6:5", + "nodeType": "YulIdentifier", + "src": "33175:6:5" + }, + "nativeSrc": "33175:16:5", + "nodeType": "YulFunctionCall", + "src": "33175:16:5" + }, + { + "name": "p", + "nativeSrc": "33193:1:5", + "nodeType": "YulIdentifier", + "src": "33193:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "33126:6:5", + "nodeType": "YulIdentifier", + "src": "33126:6:5" + }, + "nativeSrc": "33126:69:5", + "nodeType": "YulFunctionCall", + "src": "33126:69:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "33121:1:5", + "nodeType": "YulIdentifier", + "src": "33121:1:5" + } + ] + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "index", + "nativeSrc": "28693:5:5", + "nodeType": "YulIdentifier", + "src": "28693:5:5" + }, + { + "kind": "number", + "nativeSrc": "28700:3:5", + "nodeType": "YulLiteral", + "src": "28700:3:5", + "type": "", + "value": "191" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "28690:2:5", + "nodeType": "YulIdentifier", + "src": "28690:2:5" + }, + "nativeSrc": "28690:14:5", + "nodeType": "YulFunctionCall", + "src": "28690:14:5" + }, + "nativeSrc": "28683:4552:5", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "28705:28:5", + "nodeType": "YulBlock", + "src": "28705:28:5", + "statements": [ + { + "nativeSrc": "28707:24:5", + "nodeType": "YulAssignment", + "src": "28707:24:5", + "value": { + "arguments": [ + { + "name": "index", + "nativeSrc": "28720:5:5", + "nodeType": "YulIdentifier", + "src": "28720:5:5" + }, + { + "kind": "number", + "nativeSrc": "28727:3:5", + "nodeType": "YulLiteral", + "src": "28727:3:5", + "type": "", + "value": "191" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "28716:3:5", + "nodeType": "YulIdentifier", + "src": "28716:3:5" + }, + "nativeSrc": "28716:15:5", + "nodeType": "YulFunctionCall", + "src": "28716:15:5" + }, + "variableNames": [ + { + "name": "index", + "nativeSrc": "28707:5:5", + "nodeType": "YulIdentifier", + "src": "28707:5:5" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "28687:2:5", + "nodeType": "YulBlock", + "src": "28687:2:5", + "statements": [] + }, + "src": "28683:4552:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "33274:1:5", + "nodeType": "YulIdentifier", + "src": "33274:1:5" + }, + { + "kind": "number", + "nativeSrc": "33277:4:5", + "nodeType": "YulLiteral", + "src": "33277:4:5", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33270:3:5", + "nodeType": "YulIdentifier", + "src": "33270:3:5" + }, + "nativeSrc": "33270:12:5", + "nodeType": "YulFunctionCall", + "src": "33270:12:5" + }, + { + "name": "zz", + "nativeSrc": "33284:2:5", + "nodeType": "YulIdentifier", + "src": "33284:2:5" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "33263:6:5", + "nodeType": "YulIdentifier", + "src": "33263:6:5" + }, + "nativeSrc": "33263:24:5", + "nodeType": "YulFunctionCall", + "src": "33263:24:5" + }, + "nativeSrc": "33263:24:5", + "nodeType": "YulExpressionStatement", + "src": "33263:24:5" + }, + { + "expression": { + "arguments": [ + { + "name": "T", + "nativeSrc": "33547:1:5", + "nodeType": "YulIdentifier", + "src": "33547:1:5" + }, + { + "kind": "number", + "nativeSrc": "33550:4:5", + "nodeType": "YulLiteral", + "src": "33550:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "33540:6:5", + "nodeType": "YulIdentifier", + "src": "33540:6:5" + }, + "nativeSrc": "33540:15:5", + "nodeType": "YulFunctionCall", + "src": "33540:15:5" + }, + "nativeSrc": "33540:15:5", + "nodeType": "YulExpressionStatement", + "src": "33540:15:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "33583:1:5", + "nodeType": "YulIdentifier", + "src": "33583:1:5" + }, + { + "kind": "number", + "nativeSrc": "33586:4:5", + "nodeType": "YulLiteral", + "src": "33586:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33579:3:5", + "nodeType": "YulIdentifier", + "src": "33579:3:5" + }, + "nativeSrc": "33579:12:5", + "nodeType": "YulFunctionCall", + "src": "33579:12:5" + }, + { + "kind": "number", + "nativeSrc": "33593:4:5", + "nodeType": "YulLiteral", + "src": "33593:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "33572:6:5", + "nodeType": "YulIdentifier", + "src": "33572:6:5" + }, + "nativeSrc": "33572:26:5", + "nodeType": "YulFunctionCall", + "src": "33572:26:5" + }, + "nativeSrc": "33572:26:5", + "nodeType": "YulExpressionStatement", + "src": "33572:26:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "33626:1:5", + "nodeType": "YulIdentifier", + "src": "33626:1:5" + }, + { + "kind": "number", + "nativeSrc": "33629:4:5", + "nodeType": "YulLiteral", + "src": "33629:4:5", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33622:3:5", + "nodeType": "YulIdentifier", + "src": "33622:3:5" + }, + "nativeSrc": "33622:12:5", + "nodeType": "YulFunctionCall", + "src": "33622:12:5" + }, + { + "kind": "number", + "nativeSrc": "33636:4:5", + "nodeType": "YulLiteral", + "src": "33636:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "33615:6:5", + "nodeType": "YulIdentifier", + "src": "33615:6:5" + }, + "nativeSrc": "33615:26:5", + "nodeType": "YulFunctionCall", + "src": "33615:26:5" + }, + "nativeSrc": "33615:26:5", + "nodeType": "YulExpressionStatement", + "src": "33615:26:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "33780:1:5", + "nodeType": "YulIdentifier", + "src": "33780:1:5" + }, + { + "kind": "number", + "nativeSrc": "33783:4:5", + "nodeType": "YulLiteral", + "src": "33783:4:5", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33776:3:5", + "nodeType": "YulIdentifier", + "src": "33776:3:5" + }, + "nativeSrc": "33776:12:5", + "nodeType": "YulFunctionCall", + "src": "33776:12:5" + }, + { + "name": "minus_2", + "nativeSrc": "33790:7:5", + "nodeType": "YulIdentifier", + "src": "33790:7:5" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "33769:6:5", + "nodeType": "YulIdentifier", + "src": "33769:6:5" + }, + "nativeSrc": "33769:29:5", + "nodeType": "YulFunctionCall", + "src": "33769:29:5" + }, + "nativeSrc": "33769:29:5", + "nodeType": "YulExpressionStatement", + "src": "33769:29:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "33826:1:5", + "nodeType": "YulIdentifier", + "src": "33826:1:5" + }, + { + "kind": "number", + "nativeSrc": "33829:4:5", + "nodeType": "YulLiteral", + "src": "33829:4:5", + "type": "", + "value": "0xa0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33822:3:5", + "nodeType": "YulIdentifier", + "src": "33822:3:5" + }, + "nativeSrc": "33822:12:5", + "nodeType": "YulFunctionCall", + "src": "33822:12:5" + }, + { + "name": "p", + "nativeSrc": "33836:1:5", + "nodeType": "YulIdentifier", + "src": "33836:1:5" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "33815:6:5", + "nodeType": "YulIdentifier", + "src": "33815:6:5" + }, + "nativeSrc": "33815:23:5", + "nodeType": "YulFunctionCall", + "src": "33815:23:5" + }, + "nativeSrc": "33815:23:5", + "nodeType": "YulExpressionStatement", + "src": "33815:23:5" + }, + { + "body": { + "nativeSrc": "33973:16:5", + "nodeType": "YulBlock", + "src": "33973:16:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33982:1:5", + "nodeType": "YulLiteral", + "src": "33982:1:5", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "33985:1:5", + "nodeType": "YulLiteral", + "src": "33985:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "33975:6:5", + "nodeType": "YulIdentifier", + "src": "33975:6:5" + }, + "nativeSrc": "33975:12:5", + "nodeType": "YulFunctionCall", + "src": "33975:12:5" + }, + "nativeSrc": "33975:12:5", + "nodeType": "YulExpressionStatement", + "src": "33975:12:5" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33944:1:5", + "nodeType": "YulLiteral", + "src": "33944:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "33940:3:5", + "nodeType": "YulIdentifier", + "src": "33940:3:5" + }, + "nativeSrc": "33940:6:5", + "nodeType": "YulFunctionCall", + "src": "33940:6:5" + }, + { + "kind": "number", + "nativeSrc": "33948:4:5", + "nodeType": "YulLiteral", + "src": "33948:4:5", + "type": "", + "value": "0x05" + }, + { + "name": "T", + "nativeSrc": "33954:1:5", + "nodeType": "YulIdentifier", + "src": "33954:1:5" + }, + { + "kind": "number", + "nativeSrc": "33957:4:5", + "nodeType": "YulLiteral", + "src": "33957:4:5", + "type": "", + "value": "0xc0" + }, + { + "name": "T", + "nativeSrc": "33963:1:5", + "nodeType": "YulIdentifier", + "src": "33963:1:5" + }, + { + "kind": "number", + "nativeSrc": "33966:4:5", + "nodeType": "YulLiteral", + "src": "33966:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "33929:10:5", + "nodeType": "YulIdentifier", + "src": "33929:10:5" + }, + "nativeSrc": "33929:42:5", + "nodeType": "YulFunctionCall", + "src": "33929:42:5" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "33922:6:5", + "nodeType": "YulIdentifier", + "src": "33922:6:5" + }, + "nativeSrc": "33922:50:5", + "nodeType": "YulFunctionCall", + "src": "33922:50:5" + }, + "nativeSrc": "33919:70:5", + "nodeType": "YulIf", + "src": "33919:70:5" + }, + { + "nativeSrc": "34007:14:5", + "nodeType": "YulAssignment", + "src": "34007:14:5", + "value": { + "arguments": [ + { + "name": "T", + "nativeSrc": "34019:1:5", + "nodeType": "YulIdentifier", + "src": "34019:1:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "34013:5:5", + "nodeType": "YulIdentifier", + "src": "34013:5:5" + }, + "nativeSrc": "34013:8:5", + "nodeType": "YulFunctionCall", + "src": "34013:8:5" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "34007:2:5", + "nodeType": "YulIdentifier", + "src": "34007:2:5" + } + ] + }, + { + "nativeSrc": "34038:21:5", + "nodeType": "YulAssignment", + "src": "34038:21:5", + "value": { + "arguments": [ + { + "name": "X", + "nativeSrc": "34050:1:5", + "nodeType": "YulIdentifier", + "src": "34050:1:5" + }, + { + "name": "zz", + "nativeSrc": "34053:2:5", + "nodeType": "YulIdentifier", + "src": "34053:2:5" + }, + { + "name": "p", + "nativeSrc": "34057:1:5", + "nodeType": "YulIdentifier", + "src": "34057:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "34043:6:5", + "nodeType": "YulIdentifier", + "src": "34043:6:5" + }, + "nativeSrc": "34043:16:5", + "nodeType": "YulFunctionCall", + "src": "34043:16:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "34038:1:5", + "nodeType": "YulIdentifier", + "src": "34038:1:5" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 1960, + "isOffset": false, + "isSlot": false, + "src": "28404:1:5", + "valueSize": 1 + }, + { + "declaration": 1960, + "isOffset": false, + "isSlot": false, + "src": "28413:1:5", + "valueSize": 1 + }, + { + "declaration": 1960, + "isOffset": false, + "isSlot": false, + "src": "28488:1:5", + "valueSize": 1 + }, + { + "declaration": 1960, + "isOffset": false, + "isSlot": false, + "src": "28526:1:5", + "valueSize": 1 + }, + { + "declaration": 1960, + "isOffset": false, + "isSlot": false, + "src": "30934:1:5", + "valueSize": 1 + }, + { + "declaration": 1960, + "isOffset": false, + "isSlot": false, + "src": "31196:1:5", + "valueSize": 1 + }, + { + "declaration": 1960, + "isOffset": false, + "isSlot": false, + "src": "31242:1:5", + "valueSize": 1 + }, + { + "declaration": 1960, + "isOffset": false, + "isSlot": false, + "src": "31446:1:5", + "valueSize": 1 + }, + { + "declaration": 1960, + "isOffset": false, + "isSlot": false, + "src": "31524:1:5", + "valueSize": 1 + }, + { + "declaration": 1960, + "isOffset": false, + "isSlot": false, + "src": "33274:1:5", + "valueSize": 1 + }, + { + "declaration": 1960, + "isOffset": false, + "isSlot": false, + "src": "33547:1:5", + "valueSize": 1 + }, + { + "declaration": 1960, + "isOffset": false, + "isSlot": false, + "src": "33583:1:5", + "valueSize": 1 + }, + { + "declaration": 1960, + "isOffset": false, + "isSlot": false, + "src": "33626:1:5", + "valueSize": 1 + }, + { + "declaration": 1960, + "isOffset": false, + "isSlot": false, + "src": "33780:1:5", + "valueSize": 1 + }, + { + "declaration": 1960, + "isOffset": false, + "isSlot": false, + "src": "33826:1:5", + "valueSize": 1 + }, + { + "declaration": 1960, + "isOffset": false, + "isSlot": false, + "src": "33954:1:5", + "valueSize": 1 + }, + { + "declaration": 1960, + "isOffset": false, + "isSlot": false, + "src": "33963:1:5", + "valueSize": 1 + }, + { + "declaration": 1960, + "isOffset": false, + "isSlot": false, + "src": "34019:1:5", + "valueSize": 1 + }, + { + "declaration": 1950, + "isOffset": false, + "isSlot": false, + "src": "28477:1:5", + "valueSize": 1 + }, + { + "declaration": 1950, + "isOffset": false, + "isSlot": false, + "src": "28968:1:5", + "valueSize": 1 + }, + { + "declaration": 1950, + "isOffset": false, + "isSlot": false, + "src": "29109:1:5", + "valueSize": 1 + }, + { + "declaration": 1950, + "isOffset": false, + "isSlot": false, + "src": "29135:1:5", + "valueSize": 1 + }, + { + "declaration": 1950, + "isOffset": false, + "isSlot": false, + "src": "29334:1:5", + "valueSize": 1 + }, + { + "declaration": 1950, + "isOffset": false, + "isSlot": false, + "src": "29532:1:5", + "valueSize": 1 + }, + { + "declaration": 1950, + "isOffset": false, + "isSlot": false, + "src": "31185:1:5", + "valueSize": 1 + }, + { + "declaration": 1950, + "isOffset": false, + "isSlot": false, + "src": "31543:1:5", + "valueSize": 1 + }, + { + "declaration": 1950, + "isOffset": false, + "isSlot": false, + "src": "31888:1:5", + "valueSize": 1 + }, + { + "declaration": 1950, + "isOffset": false, + "isSlot": false, + "src": "32027:1:5", + "valueSize": 1 + }, + { + "declaration": 1950, + "isOffset": false, + "isSlot": false, + "src": "32045:1:5", + "valueSize": 1 + }, + { + "declaration": 1950, + "isOffset": false, + "isSlot": false, + "src": "32342:1:5", + "valueSize": 1 + }, + { + "declaration": 1950, + "isOffset": false, + "isSlot": false, + "src": "32479:1:5", + "valueSize": 1 + }, + { + "declaration": 1950, + "isOffset": false, + "isSlot": false, + "src": "32981:1:5", + "valueSize": 1 + }, + { + "declaration": 1950, + "isOffset": false, + "isSlot": false, + "src": "33015:1:5", + "valueSize": 1 + }, + { + "declaration": 1950, + "isOffset": false, + "isSlot": false, + "src": "33159:1:5", + "valueSize": 1 + }, + { + "declaration": 1950, + "isOffset": false, + "isSlot": false, + "src": "34038:1:5", + "valueSize": 1 + }, + { + "declaration": 1950, + "isOffset": false, + "isSlot": false, + "src": "34050:1:5", + "valueSize": 1 + }, + { + "declaration": 1947, + "isOffset": false, + "isSlot": false, + "src": "28391:11:5", + "valueSize": 1 + }, + { + "declaration": 1947, + "isOffset": false, + "isSlot": false, + "src": "30921:11:5", + "valueSize": 1 + }, + { + "declaration": 994, + "isOffset": false, + "isSlot": false, + "src": "29372:7:5", + "valueSize": 1 + }, + { + "declaration": 994, + "isOffset": false, + "isSlot": false, + "src": "31740:7:5", + "valueSize": 1 + }, + { + "declaration": 994, + "isOffset": false, + "isSlot": false, + "src": "32380:7:5", + "valueSize": 1 + }, + { + "declaration": 994, + "isOffset": false, + "isSlot": false, + "src": "33076:7:5", + "valueSize": 1 + }, + { + "declaration": 994, + "isOffset": false, + "isSlot": false, + "src": "33790:7:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "28842:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "28915:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "28975:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "29040:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "29116:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "29124:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "29142:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "29146:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "29150:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "29224:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "29286:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "29361:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "29385:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "29389:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "29539:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "29547:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "29551:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "29713:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "29721:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "30815:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "31460:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "31467:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "31532:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "31540:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "31547:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "31752:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "31827:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "31895:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "31964:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "32034:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "32052:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "32060:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "32064:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "32138:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "32216:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "32286:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "32369:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "32393:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "32397:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "32476:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "32483:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "32487:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "32563:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "32567:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "32737:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "32789:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "32840:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "32927:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "32988:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "33049:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "33057:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "33065:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "33090:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "33094:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "33156:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "33163:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "33171:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "33189:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "33193:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "33836:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "34057:1:5", + "valueSize": 1 + }, + { + "declaration": 1943, + "isOffset": false, + "isSlot": false, + "src": "30009:8:5", + "valueSize": 1 + }, + { + "declaration": 1943, + "isOffset": false, + "isSlot": false, + "src": "30215:8:5", + "valueSize": 1 + }, + { + "declaration": 1943, + "isOffset": false, + "isSlot": false, + "src": "30423:8:5", + "valueSize": 1 + }, + { + "declaration": 1943, + "isOffset": false, + "isSlot": false, + "src": "30624:8:5", + "valueSize": 1 + }, + { + "declaration": 1945, + "isOffset": false, + "isSlot": false, + "src": "29971:8:5", + "valueSize": 1 + }, + { + "declaration": 1945, + "isOffset": false, + "isSlot": false, + "src": "30176:8:5", + "valueSize": 1 + }, + { + "declaration": 1945, + "isOffset": false, + "isSlot": false, + "src": "30384:8:5", + "valueSize": 1 + }, + { + "declaration": 1945, + "isOffset": false, + "isSlot": false, + "src": "30586:8:5", + "valueSize": 1 + }, + { + "declaration": 1953, + "isOffset": false, + "isSlot": false, + "src": "28454:2:5", + "valueSize": 1 + }, + { + "declaration": 1953, + "isOffset": false, + "isSlot": false, + "src": "28579:2:5", + "valueSize": 1 + }, + { + "declaration": 1953, + "isOffset": false, + "isSlot": false, + "src": "29119:2:5", + "valueSize": 1 + }, + { + "declaration": 1953, + "isOffset": false, + "isSlot": false, + "src": "29138:2:5", + "valueSize": 1 + }, + { + "declaration": 1953, + "isOffset": false, + "isSlot": false, + "src": "29265:2:5", + "valueSize": 1 + }, + { + "declaration": 1953, + "isOffset": false, + "isSlot": false, + "src": "29282:2:5", + "valueSize": 1 + }, + { + "declaration": 1953, + "isOffset": false, + "isSlot": false, + "src": "31151:2:5", + "valueSize": 1 + }, + { + "declaration": 1953, + "isOffset": false, + "isSlot": false, + "src": "31278:2:5", + "valueSize": 1 + }, + { + "declaration": 1953, + "isOffset": false, + "isSlot": false, + "src": "31528:2:5", + "valueSize": 1 + }, + { + "declaration": 1953, + "isOffset": false, + "isSlot": false, + "src": "32030:2:5", + "valueSize": 1 + }, + { + "declaration": 1953, + "isOffset": false, + "isSlot": false, + "src": "32055:2:5", + "valueSize": 1 + }, + { + "declaration": 1953, + "isOffset": false, + "isSlot": false, + "src": "32265:2:5", + "valueSize": 1 + }, + { + "declaration": 1953, + "isOffset": false, + "isSlot": false, + "src": "32282:2:5", + "valueSize": 1 + }, + { + "declaration": 1953, + "isOffset": false, + "isSlot": false, + "src": "32819:2:5", + "valueSize": 1 + }, + { + "declaration": 1953, + "isOffset": false, + "isSlot": false, + "src": "32832:2:5", + "valueSize": 1 + }, + { + "declaration": 1953, + "isOffset": false, + "isSlot": false, + "src": "33284:2:5", + "valueSize": 1 + }, + { + "declaration": 1953, + "isOffset": false, + "isSlot": false, + "src": "34007:2:5", + "valueSize": 1 + }, + { + "declaration": 1953, + "isOffset": false, + "isSlot": false, + "src": "34053:2:5", + "valueSize": 1 + } + ], + "id": 2082, + "nodeType": "InlineAssembly", + "src": "28352:5728:5" + } + ] + } + ] + }, + "id": 2085, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ecZZ_mulmuladd_S8_extcode", + "nameLocation": "27450:25:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1948, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1943, + "mutability": "mutable", + "name": "scalar_u", + "nameLocation": "27484:8:5", + "nodeType": "VariableDeclaration", + "scope": 2085, + "src": "27476:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1942, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27476:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1945, + "mutability": "mutable", + "name": "scalar_v", + "nameLocation": "27502:8:5", + "nodeType": "VariableDeclaration", + "scope": 2085, + "src": "27494:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1944, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27494:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1947, + "mutability": "mutable", + "name": "dataPointer", + "nameLocation": "27520:11:5", + "nodeType": "VariableDeclaration", + "scope": 2085, + "src": "27512:19:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1946, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27512:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "27475:57:5" + }, + "returnParameters": { + "id": 1951, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1950, + "mutability": "mutable", + "name": "X", + "nameLocation": "27580:1:5", + "nodeType": "VariableDeclaration", + "scope": 2085, + "src": "27572:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1949, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27572:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "27571:25:5" + }, + "scope": 2309, + "src": "27441:6671:5", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2228, + "nodeType": "Block", + "src": "34356:4828:5", + "statements": [ + { + "assignments": [ + 2097 + ], + "declarations": [ + { + "constant": false, + "id": 2097, + "mutability": "mutable", + "name": "zz", + "nameLocation": "34374:2:5", + "nodeType": "VariableDeclaration", + "scope": 2228, + "src": "34366:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2096, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "34366:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2098, + "nodeType": "VariableDeclarationStatement", + "src": "34366:10:5" + }, + { + "assignments": [ + 2104 + ], + "declarations": [ + { + "constant": false, + "id": 2104, + "mutability": "mutable", + "name": "T", + "nameLocation": "34444:1:5", + "nodeType": "VariableDeclaration", + "scope": 2228, + "src": "34426:19:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6]" + }, + "typeName": { + "baseType": { + "id": 2102, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "34426:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2103, + "length": { + "hexValue": "36", + "id": 2101, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34434:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_6_by_1", + "typeString": "int_const 6" + }, + "value": "6" + }, + "nodeType": "ArrayTypeName", + "src": "34426:10:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_storage_ptr", + "typeString": "uint256[6]" + } + }, + "visibility": "internal" + } + ], + "id": 2105, + "nodeType": "VariableDeclarationStatement", + "src": "34426:19:5" + }, + { + "expression": { + "id": 2108, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2106, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2097, + "src": "34455:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "323536", + "id": 2107, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34460:3:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + }, + "value": "256" + }, + "src": "34455:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2109, + "nodeType": "ExpressionStatement", + "src": "34455:8:5" + }, + { + "id": 2227, + "nodeType": "UncheckedBlock", + "src": "34488:4674:5", + "statements": [ + { + "body": { + "id": 2224, + "nodeType": "Block", + "src": "34530:552:5", + "statements": [ + { + "expression": { + "id": 2119, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2115, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2097, + "src": "34548:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2118, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2116, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2097, + "src": "34553:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 2117, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34558:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "34553:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34548:11:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2120, + "nodeType": "ExpressionStatement", + "src": "34548:11:5" + }, + { + "expression": { + "id": 2222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 2121, + "name": "T", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2104, + "src": "34627:1:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 2123, + "indexExpression": { + "hexValue": "30", + "id": 2122, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34629:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "34627:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2221, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3634", + "id": 2124, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34634:2:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2195, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2182, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2159, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2146, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2133, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "313238", + "id": 2125, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34685:3:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2131, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2128, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2126, + "name": "scalar_v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "34693:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "id": 2127, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2097, + "src": "34705:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34693:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2129, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "34692:16:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "31", + "id": 2130, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34711:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "34692:20:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2132, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "34691:22:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34685:28:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3634", + "id": 2134, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34716:2:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2143, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2140, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2135, + "name": "scalar_v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "34723:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2136, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2097, + "src": "34736:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "3634", + "id": 2137, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34741:2:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "34736:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2139, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "34735:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34723:21:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2141, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "34722:23:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "31", + "id": 2142, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34748:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "34722:27:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2144, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "34721:29:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34716:34:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34685:65:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2158, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3332", + "id": 2147, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34781:2:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2156, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2153, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2148, + "name": "scalar_v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "34788:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2149, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2097, + "src": "34801:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "313238", + "id": 2150, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34806:3:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "34801:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2152, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "34800:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34788:22:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2154, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "34787:24:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "31", + "id": 2155, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34814:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "34787:28:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2157, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "34786:30:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34781:35:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34685:131:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2171, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3136", + "id": 2160, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34819:2:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2169, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2166, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2161, + "name": "scalar_v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "34826:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2164, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2162, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2097, + "src": "34839:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "313932", + "id": 2163, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34844:3:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_192_by_1", + "typeString": "int_const 192" + }, + "value": "192" + }, + "src": "34839:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2165, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "34838:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34826:22:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2167, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "34825:24:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "31", + "id": 2168, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34852:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "34825:28:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2170, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "34824:30:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34819:35:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34685:169:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "38", + "id": 2173, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34885:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2179, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2176, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2174, + "name": "scalar_u", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2087, + "src": "34891:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "id": 2175, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2097, + "src": "34903:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34891:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2177, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "34890:16:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "31", + "id": 2178, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34909:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "34890:20:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2180, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "34889:22:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34885:26:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34685:226:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2194, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "34", + "id": 2183, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34914:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2189, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2184, + "name": "scalar_u", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2087, + "src": "34920:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2185, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2097, + "src": "34933:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "3634", + "id": 2186, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34938:2:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "34933:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2188, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "34932:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34920:21:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2190, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "34919:23:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "31", + "id": 2191, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34945:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "34919:27:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2193, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "34918:29:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34914:33:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34685:262:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2207, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 2196, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34978:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2205, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2202, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2197, + "name": "scalar_u", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2087, + "src": "34984:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2198, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2097, + "src": "34997:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "313238", + "id": 2199, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "35002:3:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "34997:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2201, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "34996:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34984:22:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2203, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "34983:24:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "31", + "id": 2204, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "35010:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "34983:28:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2206, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "34982:30:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34978:34:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34685:327:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2217, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2214, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2209, + "name": "scalar_u", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2087, + "src": "35017:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2212, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2210, + "name": "zz", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2097, + "src": "35030:2:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "313932", + "id": 2211, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "35035:3:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_192_by_1", + "typeString": "int_const 192" + }, + "value": "192" + }, + "src": "35030:8:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2213, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "35029:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "35017:22:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2215, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "35016:24:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "31", + "id": 2216, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "35043:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "35016:28:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2218, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "35015:30:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34685:360:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2220, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "34659:408:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34634:433:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34627:440:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2223, + "nodeType": "ExpressionStatement", + "src": "34627:440:5" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 2110, + "name": "T", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2104, + "src": "34519:1:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", + "typeString": "uint256[6] memory" + } + }, + "id": 2112, + "indexExpression": { + "hexValue": "30", + "id": 2111, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34521:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "34519:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 2113, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34527:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "34519:9:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2225, + "nodeType": "WhileStatement", + "src": "34512:570:5" + }, + { + "AST": { + "nativeSrc": "35104:4048:5", + "nodeType": "YulBlock", + "src": "35104:4048:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "T", + "nativeSrc": "35131:1:5", + "nodeType": "YulIdentifier", + "src": "35131:1:5" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "35144:1:5", + "nodeType": "YulIdentifier", + "src": "35144:1:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "35138:5:5", + "nodeType": "YulIdentifier", + "src": "35138:5:5" + }, + "nativeSrc": "35138:8:5", + "nodeType": "YulFunctionCall", + "src": "35138:8:5" + }, + { + "name": "dataPointer", + "nativeSrc": "35148:11:5", + "nodeType": "YulIdentifier", + "src": "35148:11:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35134:3:5", + "nodeType": "YulIdentifier", + "src": "35134:3:5" + }, + "nativeSrc": "35134:26:5", + "nodeType": "YulFunctionCall", + "src": "35134:26:5" + }, + { + "kind": "number", + "nativeSrc": "35162:2:5", + "nodeType": "YulLiteral", + "src": "35162:2:5", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "codecopy", + "nativeSrc": "35122:8:5", + "nodeType": "YulIdentifier", + "src": "35122:8:5" + }, + "nativeSrc": "35122:43:5", + "nodeType": "YulFunctionCall", + "src": "35122:43:5" + }, + "nativeSrc": "35122:43:5", + "nodeType": "YulExpressionStatement", + "src": "35122:43:5" + }, + { + "nativeSrc": "35182:13:5", + "nodeType": "YulAssignment", + "src": "35182:13:5", + "value": { + "arguments": [ + { + "name": "T", + "nativeSrc": "35193:1:5", + "nodeType": "YulIdentifier", + "src": "35193:1:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "35187:5:5", + "nodeType": "YulIdentifier", + "src": "35187:5:5" + }, + "nativeSrc": "35187:8:5", + "nodeType": "YulFunctionCall", + "src": "35187:8:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "35182:1:5", + "nodeType": "YulIdentifier", + "src": "35182:1:5" + } + ] + }, + { + "nativeSrc": "35212:26:5", + "nodeType": "YulVariableDeclaration", + "src": "35212:26:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "35231:1:5", + "nodeType": "YulIdentifier", + "src": "35231:1:5" + }, + { + "kind": "number", + "nativeSrc": "35234:2:5", + "nodeType": "YulLiteral", + "src": "35234:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35227:3:5", + "nodeType": "YulIdentifier", + "src": "35227:3:5" + }, + "nativeSrc": "35227:10:5", + "nodeType": "YulFunctionCall", + "src": "35227:10:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "35221:5:5", + "nodeType": "YulIdentifier", + "src": "35221:5:5" + }, + "nativeSrc": "35221:17:5", + "nodeType": "YulFunctionCall", + "src": "35221:17:5" + }, + "variables": [ + { + "name": "Y", + "nativeSrc": "35216:1:5", + "nodeType": "YulTypedName", + "src": "35216:1:5", + "type": "" + } + ] + }, + { + "nativeSrc": "35255:12:5", + "nodeType": "YulVariableDeclaration", + "src": "35255:12:5", + "value": { + "kind": "number", + "nativeSrc": "35266:1:5", + "nodeType": "YulLiteral", + "src": "35266:1:5", + "type": "", + "value": "1" + }, + "variables": [ + { + "name": "zzz", + "nativeSrc": "35259:3:5", + "nodeType": "YulTypedName", + "src": "35259:3:5", + "type": "" + } + ] + }, + { + "nativeSrc": "35284:7:5", + "nodeType": "YulAssignment", + "src": "35284:7:5", + "value": { + "kind": "number", + "nativeSrc": "35290:1:5", + "nodeType": "YulLiteral", + "src": "35290:1:5", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "35284:2:5", + "nodeType": "YulIdentifier", + "src": "35284:2:5" + } + ] + }, + { + "body": { + "nativeSrc": "35457:2850:5", + "nodeType": "YulBlock", + "src": "35457:2850:5", + "statements": [ + { + "nativeSrc": "35479:25:5", + "nodeType": "YulVariableDeclaration", + "src": "35479:25:5", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "35496:1:5", + "nodeType": "YulLiteral", + "src": "35496:1:5", + "type": "", + "value": "2" + }, + { + "name": "Y", + "nativeSrc": "35499:1:5", + "nodeType": "YulIdentifier", + "src": "35499:1:5" + }, + { + "name": "p", + "nativeSrc": "35502:1:5", + "nodeType": "YulIdentifier", + "src": "35502:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "35489:6:5", + "nodeType": "YulIdentifier", + "src": "35489:6:5" + }, + "nativeSrc": "35489:15:5", + "nodeType": "YulFunctionCall", + "src": "35489:15:5" + }, + "variables": [ + { + "name": "T1", + "nativeSrc": "35483:2:5", + "nodeType": "YulTypedName", + "src": "35483:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "35544:27:5", + "nodeType": "YulVariableDeclaration", + "src": "35544:27:5", + "value": { + "arguments": [ + { + "name": "T1", + "nativeSrc": "35561:2:5", + "nodeType": "YulIdentifier", + "src": "35561:2:5" + }, + { + "name": "T1", + "nativeSrc": "35565:2:5", + "nodeType": "YulIdentifier", + "src": "35565:2:5" + }, + { + "name": "p", + "nativeSrc": "35569:1:5", + "nodeType": "YulIdentifier", + "src": "35569:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "35554:6:5", + "nodeType": "YulIdentifier", + "src": "35554:6:5" + }, + "nativeSrc": "35554:17:5", + "nodeType": "YulFunctionCall", + "src": "35554:17:5" + }, + "variables": [ + { + "name": "T2", + "nativeSrc": "35548:2:5", + "nodeType": "YulTypedName", + "src": "35548:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "35601:26:5", + "nodeType": "YulVariableDeclaration", + "src": "35601:26:5", + "value": { + "arguments": [ + { + "name": "X", + "nativeSrc": "35618:1:5", + "nodeType": "YulIdentifier", + "src": "35618:1:5" + }, + { + "name": "T2", + "nativeSrc": "35621:2:5", + "nodeType": "YulIdentifier", + "src": "35621:2:5" + }, + { + "name": "p", + "nativeSrc": "35625:1:5", + "nodeType": "YulIdentifier", + "src": "35625:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "35611:6:5", + "nodeType": "YulIdentifier", + "src": "35611:6:5" + }, + "nativeSrc": "35611:16:5", + "nodeType": "YulFunctionCall", + "src": "35611:16:5" + }, + "variables": [ + { + "name": "T3", + "nativeSrc": "35605:2:5", + "nodeType": "YulTypedName", + "src": "35605:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "35660:23:5", + "nodeType": "YulAssignment", + "src": "35660:23:5", + "value": { + "arguments": [ + { + "name": "T1", + "nativeSrc": "35673:2:5", + "nodeType": "YulIdentifier", + "src": "35673:2:5" + }, + { + "name": "T2", + "nativeSrc": "35677:2:5", + "nodeType": "YulIdentifier", + "src": "35677:2:5" + }, + { + "name": "p", + "nativeSrc": "35681:1:5", + "nodeType": "YulIdentifier", + "src": "35681:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "35666:6:5", + "nodeType": "YulIdentifier", + "src": "35666:6:5" + }, + "nativeSrc": "35666:17:5", + "nodeType": "YulFunctionCall", + "src": "35666:17:5" + }, + "variableNames": [ + { + "name": "T1", + "nativeSrc": "35660:2:5", + "nodeType": "YulIdentifier", + "src": "35660:2:5" + } + ] + }, + { + "nativeSrc": "35712:77:5", + "nodeType": "YulVariableDeclaration", + "src": "35712:77:5", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "35729:1:5", + "nodeType": "YulLiteral", + "src": "35729:1:5", + "type": "", + "value": "3" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "X", + "nativeSrc": "35746:1:5", + "nodeType": "YulIdentifier", + "src": "35746:1:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "35753:1:5", + "nodeType": "YulIdentifier", + "src": "35753:1:5" + }, + { + "name": "zz", + "nativeSrc": "35756:2:5", + "nodeType": "YulIdentifier", + "src": "35756:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "35749:3:5", + "nodeType": "YulIdentifier", + "src": "35749:3:5" + }, + "nativeSrc": "35749:10:5", + "nodeType": "YulFunctionCall", + "src": "35749:10:5" + }, + { + "name": "p", + "nativeSrc": "35761:1:5", + "nodeType": "YulIdentifier", + "src": "35761:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "35739:6:5", + "nodeType": "YulIdentifier", + "src": "35739:6:5" + }, + "nativeSrc": "35739:24:5", + "nodeType": "YulFunctionCall", + "src": "35739:24:5" + }, + { + "arguments": [ + { + "name": "X", + "nativeSrc": "35772:1:5", + "nodeType": "YulIdentifier", + "src": "35772:1:5" + }, + { + "name": "zz", + "nativeSrc": "35775:2:5", + "nodeType": "YulIdentifier", + "src": "35775:2:5" + }, + { + "name": "p", + "nativeSrc": "35779:1:5", + "nodeType": "YulIdentifier", + "src": "35779:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "35765:6:5", + "nodeType": "YulIdentifier", + "src": "35765:6:5" + }, + "nativeSrc": "35765:16:5", + "nodeType": "YulFunctionCall", + "src": "35765:16:5" + }, + { + "name": "p", + "nativeSrc": "35783:1:5", + "nodeType": "YulIdentifier", + "src": "35783:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "35732:6:5", + "nodeType": "YulIdentifier", + "src": "35732:6:5" + }, + "nativeSrc": "35732:53:5", + "nodeType": "YulFunctionCall", + "src": "35732:53:5" + }, + { + "name": "p", + "nativeSrc": "35787:1:5", + "nodeType": "YulIdentifier", + "src": "35787:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "35722:6:5", + "nodeType": "YulIdentifier", + "src": "35722:6:5" + }, + "nativeSrc": "35722:67:5", + "nodeType": "YulFunctionCall", + "src": "35722:67:5" + }, + "variables": [ + { + "name": "T4", + "nativeSrc": "35716:2:5", + "nodeType": "YulTypedName", + "src": "35716:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "35834:25:5", + "nodeType": "YulAssignment", + "src": "35834:25:5", + "value": { + "arguments": [ + { + "name": "T1", + "nativeSrc": "35848:2:5", + "nodeType": "YulIdentifier", + "src": "35848:2:5" + }, + { + "name": "zzz", + "nativeSrc": "35852:3:5", + "nodeType": "YulIdentifier", + "src": "35852:3:5" + }, + { + "name": "p", + "nativeSrc": "35857:1:5", + "nodeType": "YulIdentifier", + "src": "35857:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "35841:6:5", + "nodeType": "YulIdentifier", + "src": "35841:6:5" + }, + "nativeSrc": "35841:18:5", + "nodeType": "YulFunctionCall", + "src": "35841:18:5" + }, + "variableNames": [ + { + "name": "zzz", + "nativeSrc": "35834:3:5", + "nodeType": "YulIdentifier", + "src": "35834:3:5" + } + ] + }, + { + "nativeSrc": "35894:23:5", + "nodeType": "YulAssignment", + "src": "35894:23:5", + "value": { + "arguments": [ + { + "name": "T2", + "nativeSrc": "35907:2:5", + "nodeType": "YulIdentifier", + "src": "35907:2:5" + }, + { + "name": "zz", + "nativeSrc": "35911:2:5", + "nodeType": "YulIdentifier", + "src": "35911:2:5" + }, + { + "name": "p", + "nativeSrc": "35915:1:5", + "nodeType": "YulIdentifier", + "src": "35915:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "35900:6:5", + "nodeType": "YulIdentifier", + "src": "35900:6:5" + }, + "nativeSrc": "35900:17:5", + "nodeType": "YulFunctionCall", + "src": "35900:17:5" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "35894:2:5", + "nodeType": "YulIdentifier", + "src": "35894:2:5" + } + ] + }, + { + "nativeSrc": "35959:57:5", + "nodeType": "YulAssignment", + "src": "35959:57:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "T4", + "nativeSrc": "35978:2:5", + "nodeType": "YulIdentifier", + "src": "35978:2:5" + }, + { + "name": "T4", + "nativeSrc": "35982:2:5", + "nodeType": "YulIdentifier", + "src": "35982:2:5" + }, + { + "name": "p", + "nativeSrc": "35986:1:5", + "nodeType": "YulIdentifier", + "src": "35986:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "35971:6:5", + "nodeType": "YulIdentifier", + "src": "35971:6:5" + }, + "nativeSrc": "35971:17:5", + "nodeType": "YulFunctionCall", + "src": "35971:17:5" + }, + { + "arguments": [ + { + "name": "minus_2", + "nativeSrc": "35997:7:5", + "nodeType": "YulIdentifier", + "src": "35997:7:5" + }, + { + "name": "T3", + "nativeSrc": "36006:2:5", + "nodeType": "YulIdentifier", + "src": "36006:2:5" + }, + { + "name": "p", + "nativeSrc": "36010:1:5", + "nodeType": "YulIdentifier", + "src": "36010:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "35990:6:5", + "nodeType": "YulIdentifier", + "src": "35990:6:5" + }, + "nativeSrc": "35990:22:5", + "nodeType": "YulFunctionCall", + "src": "35990:22:5" + }, + { + "name": "p", + "nativeSrc": "36014:1:5", + "nodeType": "YulIdentifier", + "src": "36014:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "35964:6:5", + "nodeType": "YulIdentifier", + "src": "35964:6:5" + }, + "nativeSrc": "35964:52:5", + "nodeType": "YulFunctionCall", + "src": "35964:52:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "35959:1:5", + "nodeType": "YulIdentifier", + "src": "35959:1:5" + } + ] + }, + { + "nativeSrc": "36121:45:5", + "nodeType": "YulAssignment", + "src": "36121:45:5", + "value": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "36134:2:5", + "nodeType": "YulIdentifier", + "src": "36134:2:5" + }, + { + "arguments": [ + { + "name": "X", + "nativeSrc": "36145:1:5", + "nodeType": "YulIdentifier", + "src": "36145:1:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "36152:1:5", + "nodeType": "YulIdentifier", + "src": "36152:1:5" + }, + { + "name": "T3", + "nativeSrc": "36155:2:5", + "nodeType": "YulIdentifier", + "src": "36155:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "36148:3:5", + "nodeType": "YulIdentifier", + "src": "36148:3:5" + }, + "nativeSrc": "36148:10:5", + "nodeType": "YulFunctionCall", + "src": "36148:10:5" + }, + { + "name": "p", + "nativeSrc": "36160:1:5", + "nodeType": "YulIdentifier", + "src": "36160:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "36138:6:5", + "nodeType": "YulIdentifier", + "src": "36138:6:5" + }, + "nativeSrc": "36138:24:5", + "nodeType": "YulFunctionCall", + "src": "36138:24:5" + }, + { + "name": "p", + "nativeSrc": "36164:1:5", + "nodeType": "YulIdentifier", + "src": "36164:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "36127:6:5", + "nodeType": "YulIdentifier", + "src": "36127:6:5" + }, + "nativeSrc": "36127:39:5", + "nodeType": "YulFunctionCall", + "src": "36127:39:5" + }, + "variableNames": [ + { + "name": "T2", + "nativeSrc": "36121:2:5", + "nodeType": "YulIdentifier", + "src": "36121:2:5" + } + ] + }, + { + "nativeSrc": "36292:36:5", + "nodeType": "YulAssignment", + "src": "36292:36:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "T1", + "nativeSrc": "36311:2:5", + "nodeType": "YulIdentifier", + "src": "36311:2:5" + }, + { + "name": "Y", + "nativeSrc": "36315:1:5", + "nodeType": "YulIdentifier", + "src": "36315:1:5" + }, + { + "name": "p", + "nativeSrc": "36318:1:5", + "nodeType": "YulIdentifier", + "src": "36318:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "36304:6:5", + "nodeType": "YulIdentifier", + "src": "36304:6:5" + }, + "nativeSrc": "36304:16:5", + "nodeType": "YulFunctionCall", + "src": "36304:16:5" + }, + { + "name": "T2", + "nativeSrc": "36322:2:5", + "nodeType": "YulIdentifier", + "src": "36322:2:5" + }, + { + "name": "p", + "nativeSrc": "36326:1:5", + "nodeType": "YulIdentifier", + "src": "36326:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "36297:6:5", + "nodeType": "YulIdentifier", + "src": "36297:6:5" + }, + "nativeSrc": "36297:31:5", + "nodeType": "YulFunctionCall", + "src": "36297:31:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "36292:1:5", + "nodeType": "YulIdentifier", + "src": "36292:1:5" + } + ] + }, + { + "nativeSrc": "36487:86:5", + "nodeType": "YulAssignment", + "src": "36487:86:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "36501:2:5", + "nodeType": "YulLiteral", + "src": "36501:2:5", + "type": "", + "value": "13" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "36513:5:5", + "nodeType": "YulIdentifier", + "src": "36513:5:5" + }, + { + "name": "scalar_v", + "nativeSrc": "36520:8:5", + "nodeType": "YulIdentifier", + "src": "36520:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "36509:3:5", + "nodeType": "YulIdentifier", + "src": "36509:3:5" + }, + "nativeSrc": "36509:20:5", + "nodeType": "YulFunctionCall", + "src": "36509:20:5" + }, + { + "kind": "number", + "nativeSrc": "36531:1:5", + "nodeType": "YulLiteral", + "src": "36531:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "36505:3:5", + "nodeType": "YulIdentifier", + "src": "36505:3:5" + }, + "nativeSrc": "36505:28:5", + "nodeType": "YulFunctionCall", + "src": "36505:28:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "36497:3:5", + "nodeType": "YulIdentifier", + "src": "36497:3:5" + }, + "nativeSrc": "36497:37:5", + "nodeType": "YulFunctionCall", + "src": "36497:37:5" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "36540:1:5", + "nodeType": "YulLiteral", + "src": "36540:1:5", + "type": "", + "value": "9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "36551:5:5", + "nodeType": "YulIdentifier", + "src": "36551:5:5" + }, + { + "name": "scalar_u", + "nativeSrc": "36558:8:5", + "nodeType": "YulIdentifier", + "src": "36558:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "36547:3:5", + "nodeType": "YulIdentifier", + "src": "36547:3:5" + }, + "nativeSrc": "36547:20:5", + "nodeType": "YulFunctionCall", + "src": "36547:20:5" + }, + { + "kind": "number", + "nativeSrc": "36569:1:5", + "nodeType": "YulLiteral", + "src": "36569:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "36543:3:5", + "nodeType": "YulIdentifier", + "src": "36543:3:5" + }, + "nativeSrc": "36543:28:5", + "nodeType": "YulFunctionCall", + "src": "36543:28:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "36536:3:5", + "nodeType": "YulIdentifier", + "src": "36536:3:5" + }, + "nativeSrc": "36536:36:5", + "nodeType": "YulFunctionCall", + "src": "36536:36:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36493:3:5", + "nodeType": "YulIdentifier", + "src": "36493:3:5" + }, + "nativeSrc": "36493:80:5", + "nodeType": "YulFunctionCall", + "src": "36493:80:5" + }, + "variableNames": [ + { + "name": "T4", + "nativeSrc": "36487:2:5", + "nodeType": "YulIdentifier", + "src": "36487:2:5" + } + ] + }, + { + "nativeSrc": "36594:23:5", + "nodeType": "YulAssignment", + "src": "36594:23:5", + "value": { + "arguments": [ + { + "name": "index", + "nativeSrc": "36607:5:5", + "nodeType": "YulIdentifier", + "src": "36607:5:5" + }, + { + "kind": "number", + "nativeSrc": "36614:2:5", + "nodeType": "YulLiteral", + "src": "36614:2:5", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "36603:3:5", + "nodeType": "YulIdentifier", + "src": "36603:3:5" + }, + "nativeSrc": "36603:14:5", + "nodeType": "YulFunctionCall", + "src": "36603:14:5" + }, + "variableNames": [ + { + "name": "index", + "nativeSrc": "36594:5:5", + "nodeType": "YulIdentifier", + "src": "36594:5:5" + } + ] + }, + { + "nativeSrc": "36638:95:5", + "nodeType": "YulAssignment", + "src": "36638:95:5", + "value": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "36648:2:5", + "nodeType": "YulIdentifier", + "src": "36648:2:5" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "36660:2:5", + "nodeType": "YulLiteral", + "src": "36660:2:5", + "type": "", + "value": "12" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "36672:5:5", + "nodeType": "YulIdentifier", + "src": "36672:5:5" + }, + { + "name": "scalar_v", + "nativeSrc": "36679:8:5", + "nodeType": "YulIdentifier", + "src": "36679:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "36668:3:5", + "nodeType": "YulIdentifier", + "src": "36668:3:5" + }, + "nativeSrc": "36668:20:5", + "nodeType": "YulFunctionCall", + "src": "36668:20:5" + }, + { + "kind": "number", + "nativeSrc": "36690:1:5", + "nodeType": "YulLiteral", + "src": "36690:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "36664:3:5", + "nodeType": "YulIdentifier", + "src": "36664:3:5" + }, + "nativeSrc": "36664:28:5", + "nodeType": "YulFunctionCall", + "src": "36664:28:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "36656:3:5", + "nodeType": "YulIdentifier", + "src": "36656:3:5" + }, + "nativeSrc": "36656:37:5", + "nodeType": "YulFunctionCall", + "src": "36656:37:5" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "36699:1:5", + "nodeType": "YulLiteral", + "src": "36699:1:5", + "type": "", + "value": "8" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "36710:5:5", + "nodeType": "YulIdentifier", + "src": "36710:5:5" + }, + { + "name": "scalar_u", + "nativeSrc": "36717:8:5", + "nodeType": "YulIdentifier", + "src": "36717:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "36706:3:5", + "nodeType": "YulIdentifier", + "src": "36706:3:5" + }, + "nativeSrc": "36706:20:5", + "nodeType": "YulFunctionCall", + "src": "36706:20:5" + }, + { + "kind": "number", + "nativeSrc": "36728:1:5", + "nodeType": "YulLiteral", + "src": "36728:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "36702:3:5", + "nodeType": "YulIdentifier", + "src": "36702:3:5" + }, + "nativeSrc": "36702:28:5", + "nodeType": "YulFunctionCall", + "src": "36702:28:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "36695:3:5", + "nodeType": "YulIdentifier", + "src": "36695:3:5" + }, + "nativeSrc": "36695:36:5", + "nodeType": "YulFunctionCall", + "src": "36695:36:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36652:3:5", + "nodeType": "YulIdentifier", + "src": "36652:3:5" + }, + "nativeSrc": "36652:80:5", + "nodeType": "YulFunctionCall", + "src": "36652:80:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36644:3:5", + "nodeType": "YulIdentifier", + "src": "36644:3:5" + }, + "nativeSrc": "36644:89:5", + "nodeType": "YulFunctionCall", + "src": "36644:89:5" + }, + "variableNames": [ + { + "name": "T4", + "nativeSrc": "36638:2:5", + "nodeType": "YulIdentifier", + "src": "36638:2:5" + } + ] + }, + { + "nativeSrc": "36754:23:5", + "nodeType": "YulAssignment", + "src": "36754:23:5", + "value": { + "arguments": [ + { + "name": "index", + "nativeSrc": "36767:5:5", + "nodeType": "YulIdentifier", + "src": "36767:5:5" + }, + { + "kind": "number", + "nativeSrc": "36774:2:5", + "nodeType": "YulLiteral", + "src": "36774:2:5", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "36763:3:5", + "nodeType": "YulIdentifier", + "src": "36763:3:5" + }, + "nativeSrc": "36763:14:5", + "nodeType": "YulFunctionCall", + "src": "36763:14:5" + }, + "variableNames": [ + { + "name": "index", + "nativeSrc": "36754:5:5", + "nodeType": "YulIdentifier", + "src": "36754:5:5" + } + ] + }, + { + "nativeSrc": "36798:95:5", + "nodeType": "YulAssignment", + "src": "36798:95:5", + "value": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "36808:2:5", + "nodeType": "YulIdentifier", + "src": "36808:2:5" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "36820:2:5", + "nodeType": "YulLiteral", + "src": "36820:2:5", + "type": "", + "value": "11" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "36832:5:5", + "nodeType": "YulIdentifier", + "src": "36832:5:5" + }, + { + "name": "scalar_v", + "nativeSrc": "36839:8:5", + "nodeType": "YulIdentifier", + "src": "36839:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "36828:3:5", + "nodeType": "YulIdentifier", + "src": "36828:3:5" + }, + "nativeSrc": "36828:20:5", + "nodeType": "YulFunctionCall", + "src": "36828:20:5" + }, + { + "kind": "number", + "nativeSrc": "36850:1:5", + "nodeType": "YulLiteral", + "src": "36850:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "36824:3:5", + "nodeType": "YulIdentifier", + "src": "36824:3:5" + }, + "nativeSrc": "36824:28:5", + "nodeType": "YulFunctionCall", + "src": "36824:28:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "36816:3:5", + "nodeType": "YulIdentifier", + "src": "36816:3:5" + }, + "nativeSrc": "36816:37:5", + "nodeType": "YulFunctionCall", + "src": "36816:37:5" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "36859:1:5", + "nodeType": "YulLiteral", + "src": "36859:1:5", + "type": "", + "value": "7" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "36870:5:5", + "nodeType": "YulIdentifier", + "src": "36870:5:5" + }, + { + "name": "scalar_u", + "nativeSrc": "36877:8:5", + "nodeType": "YulIdentifier", + "src": "36877:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "36866:3:5", + "nodeType": "YulIdentifier", + "src": "36866:3:5" + }, + "nativeSrc": "36866:20:5", + "nodeType": "YulFunctionCall", + "src": "36866:20:5" + }, + { + "kind": "number", + "nativeSrc": "36888:1:5", + "nodeType": "YulLiteral", + "src": "36888:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "36862:3:5", + "nodeType": "YulIdentifier", + "src": "36862:3:5" + }, + "nativeSrc": "36862:28:5", + "nodeType": "YulFunctionCall", + "src": "36862:28:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "36855:3:5", + "nodeType": "YulIdentifier", + "src": "36855:3:5" + }, + "nativeSrc": "36855:36:5", + "nodeType": "YulFunctionCall", + "src": "36855:36:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36812:3:5", + "nodeType": "YulIdentifier", + "src": "36812:3:5" + }, + "nativeSrc": "36812:80:5", + "nodeType": "YulFunctionCall", + "src": "36812:80:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36804:3:5", + "nodeType": "YulIdentifier", + "src": "36804:3:5" + }, + "nativeSrc": "36804:89:5", + "nodeType": "YulFunctionCall", + "src": "36804:89:5" + }, + "variableNames": [ + { + "name": "T4", + "nativeSrc": "36798:2:5", + "nodeType": "YulIdentifier", + "src": "36798:2:5" + } + ] + }, + { + "nativeSrc": "36914:23:5", + "nodeType": "YulAssignment", + "src": "36914:23:5", + "value": { + "arguments": [ + { + "name": "index", + "nativeSrc": "36927:5:5", + "nodeType": "YulIdentifier", + "src": "36927:5:5" + }, + { + "kind": "number", + "nativeSrc": "36934:2:5", + "nodeType": "YulLiteral", + "src": "36934:2:5", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "36923:3:5", + "nodeType": "YulIdentifier", + "src": "36923:3:5" + }, + "nativeSrc": "36923:14:5", + "nodeType": "YulFunctionCall", + "src": "36923:14:5" + }, + "variableNames": [ + { + "name": "index", + "nativeSrc": "36914:5:5", + "nodeType": "YulIdentifier", + "src": "36914:5:5" + } + ] + }, + { + "nativeSrc": "36958:95:5", + "nodeType": "YulAssignment", + "src": "36958:95:5", + "value": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "36968:2:5", + "nodeType": "YulIdentifier", + "src": "36968:2:5" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "36980:2:5", + "nodeType": "YulLiteral", + "src": "36980:2:5", + "type": "", + "value": "10" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "36992:5:5", + "nodeType": "YulIdentifier", + "src": "36992:5:5" + }, + { + "name": "scalar_v", + "nativeSrc": "36999:8:5", + "nodeType": "YulIdentifier", + "src": "36999:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "36988:3:5", + "nodeType": "YulIdentifier", + "src": "36988:3:5" + }, + "nativeSrc": "36988:20:5", + "nodeType": "YulFunctionCall", + "src": "36988:20:5" + }, + { + "kind": "number", + "nativeSrc": "37010:1:5", + "nodeType": "YulLiteral", + "src": "37010:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "36984:3:5", + "nodeType": "YulIdentifier", + "src": "36984:3:5" + }, + "nativeSrc": "36984:28:5", + "nodeType": "YulFunctionCall", + "src": "36984:28:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "36976:3:5", + "nodeType": "YulIdentifier", + "src": "36976:3:5" + }, + "nativeSrc": "36976:37:5", + "nodeType": "YulFunctionCall", + "src": "36976:37:5" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "37019:1:5", + "nodeType": "YulLiteral", + "src": "37019:1:5", + "type": "", + "value": "6" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "37030:5:5", + "nodeType": "YulIdentifier", + "src": "37030:5:5" + }, + { + "name": "scalar_u", + "nativeSrc": "37037:8:5", + "nodeType": "YulIdentifier", + "src": "37037:8:5" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "37026:3:5", + "nodeType": "YulIdentifier", + "src": "37026:3:5" + }, + "nativeSrc": "37026:20:5", + "nodeType": "YulFunctionCall", + "src": "37026:20:5" + }, + { + "kind": "number", + "nativeSrc": "37048:1:5", + "nodeType": "YulLiteral", + "src": "37048:1:5", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "37022:3:5", + "nodeType": "YulIdentifier", + "src": "37022:3:5" + }, + "nativeSrc": "37022:28:5", + "nodeType": "YulFunctionCall", + "src": "37022:28:5" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "37015:3:5", + "nodeType": "YulIdentifier", + "src": "37015:3:5" + }, + "nativeSrc": "37015:36:5", + "nodeType": "YulFunctionCall", + "src": "37015:36:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36972:3:5", + "nodeType": "YulIdentifier", + "src": "36972:3:5" + }, + "nativeSrc": "36972:80:5", + "nodeType": "YulFunctionCall", + "src": "36972:80:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36964:3:5", + "nodeType": "YulIdentifier", + "src": "36964:3:5" + }, + "nativeSrc": "36964:89:5", + "nodeType": "YulFunctionCall", + "src": "36964:89:5" + }, + "variableNames": [ + { + "name": "T4", + "nativeSrc": "36958:2:5", + "nodeType": "YulIdentifier", + "src": "36958:2:5" + } + ] + }, + { + "body": { + "nativeSrc": "37263:96:5", + "nodeType": "YulBlock", + "src": "37263:96:5", + "statements": [ + { + "nativeSrc": "37289:14:5", + "nodeType": "YulAssignment", + "src": "37289:14:5", + "value": { + "arguments": [ + { + "name": "p", + "nativeSrc": "37298:1:5", + "nodeType": "YulIdentifier", + "src": "37298:1:5" + }, + { + "name": "Y", + "nativeSrc": "37301:1:5", + "nodeType": "YulIdentifier", + "src": "37301:1:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "37294:3:5", + "nodeType": "YulIdentifier", + "src": "37294:3:5" + }, + "nativeSrc": "37294:9:5", + "nodeType": "YulFunctionCall", + "src": "37294:9:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "37289:1:5", + "nodeType": "YulIdentifier", + "src": "37289:1:5" + } + ] + }, + { + "nativeSrc": "37329:8:5", + "nodeType": "YulContinue", + "src": "37329:8:5" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "37259:2:5", + "nodeType": "YulIdentifier", + "src": "37259:2:5" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "37252:6:5", + "nodeType": "YulIdentifier", + "src": "37252:6:5" + }, + "nativeSrc": "37252:10:5", + "nodeType": "YulFunctionCall", + "src": "37252:10:5" + }, + "nativeSrc": "37249:110:5", + "nodeType": "YulIf", + "src": "37249:110:5" + }, + { + "nativeSrc": "37380:909:5", + "nodeType": "YulBlock", + "src": "37380:909:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "T", + "nativeSrc": "37496:1:5", + "nodeType": "YulIdentifier", + "src": "37496:1:5" + }, + { + "arguments": [ + { + "name": "T4", + "nativeSrc": "37503:2:5", + "nodeType": "YulIdentifier", + "src": "37503:2:5" + }, + { + "name": "dataPointer", + "nativeSrc": "37507:11:5", + "nodeType": "YulIdentifier", + "src": "37507:11:5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "37499:3:5", + "nodeType": "YulIdentifier", + "src": "37499:3:5" + }, + "nativeSrc": "37499:20:5", + "nodeType": "YulFunctionCall", + "src": "37499:20:5" + }, + { + "kind": "number", + "nativeSrc": "37521:2:5", + "nodeType": "YulLiteral", + "src": "37521:2:5", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "codecopy", + "nativeSrc": "37487:8:5", + "nodeType": "YulIdentifier", + "src": "37487:8:5" + }, + "nativeSrc": "37487:37:5", + "nodeType": "YulFunctionCall", + "src": "37487:37:5" + }, + "nativeSrc": "37487:37:5", + "nodeType": "YulExpressionStatement", + "src": "37487:37:5" + }, + { + "nativeSrc": "37596:57:5", + "nodeType": "YulVariableDeclaration", + "src": "37596:57:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "37630:1:5", + "nodeType": "YulIdentifier", + "src": "37630:1:5" + }, + { + "kind": "number", + "nativeSrc": "37633:2:5", + "nodeType": "YulLiteral", + "src": "37633:2:5", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "37626:3:5", + "nodeType": "YulIdentifier", + "src": "37626:3:5" + }, + "nativeSrc": "37626:10:5", + "nodeType": "YulFunctionCall", + "src": "37626:10:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "37620:5:5", + "nodeType": "YulIdentifier", + "src": "37620:5:5" + }, + "nativeSrc": "37620:17:5", + "nodeType": "YulFunctionCall", + "src": "37620:17:5" + }, + { + "name": "zzz", + "nativeSrc": "37639:3:5", + "nodeType": "YulIdentifier", + "src": "37639:3:5" + }, + { + "name": "p", + "nativeSrc": "37644:1:5", + "nodeType": "YulIdentifier", + "src": "37644:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "37613:6:5", + "nodeType": "YulIdentifier", + "src": "37613:6:5" + }, + "nativeSrc": "37613:33:5", + "nodeType": "YulFunctionCall", + "src": "37613:33:5" + }, + { + "name": "Y", + "nativeSrc": "37648:1:5", + "nodeType": "YulIdentifier", + "src": "37648:1:5" + }, + { + "name": "p", + "nativeSrc": "37651:1:5", + "nodeType": "YulIdentifier", + "src": "37651:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "37606:6:5", + "nodeType": "YulIdentifier", + "src": "37606:6:5" + }, + "nativeSrc": "37606:47:5", + "nodeType": "YulFunctionCall", + "src": "37606:47:5" + }, + "variables": [ + { + "name": "y2", + "nativeSrc": "37600:2:5", + "nodeType": "YulTypedName", + "src": "37600:2:5", + "type": "" + } + ] + }, + { + "nativeSrc": "37678:51:5", + "nodeType": "YulAssignment", + "src": "37678:51:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "37704:1:5", + "nodeType": "YulIdentifier", + "src": "37704:1:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "37698:5:5", + "nodeType": "YulIdentifier", + "src": "37698:5:5" + }, + "nativeSrc": "37698:8:5", + "nodeType": "YulFunctionCall", + "src": "37698:8:5" + }, + { + "name": "zz", + "nativeSrc": "37708:2:5", + "nodeType": "YulIdentifier", + "src": "37708:2:5" + }, + { + "name": "p", + "nativeSrc": "37712:1:5", + "nodeType": "YulIdentifier", + "src": "37712:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "37691:6:5", + "nodeType": "YulIdentifier", + "src": "37691:6:5" + }, + "nativeSrc": "37691:23:5", + "nodeType": "YulFunctionCall", + "src": "37691:23:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "37720:1:5", + "nodeType": "YulIdentifier", + "src": "37720:1:5" + }, + { + "name": "X", + "nativeSrc": "37723:1:5", + "nodeType": "YulIdentifier", + "src": "37723:1:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "37716:3:5", + "nodeType": "YulIdentifier", + "src": "37716:3:5" + }, + "nativeSrc": "37716:9:5", + "nodeType": "YulFunctionCall", + "src": "37716:9:5" + }, + { + "name": "p", + "nativeSrc": "37727:1:5", + "nodeType": "YulIdentifier", + "src": "37727:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "37684:6:5", + "nodeType": "YulIdentifier", + "src": "37684:6:5" + }, + "nativeSrc": "37684:45:5", + "nodeType": "YulFunctionCall", + "src": "37684:45:5" + }, + "variableNames": [ + { + "name": "T2", + "nativeSrc": "37678:2:5", + "nodeType": "YulIdentifier", + "src": "37678:2:5" + } + ] + }, + { + "nativeSrc": "37754:23:5", + "nodeType": "YulAssignment", + "src": "37754:23:5", + "value": { + "arguments": [ + { + "name": "T2", + "nativeSrc": "37767:2:5", + "nodeType": "YulIdentifier", + "src": "37767:2:5" + }, + { + "name": "T2", + "nativeSrc": "37771:2:5", + "nodeType": "YulIdentifier", + "src": "37771:2:5" + }, + { + "name": "p", + "nativeSrc": "37775:1:5", + "nodeType": "YulIdentifier", + "src": "37775:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "37760:6:5", + "nodeType": "YulIdentifier", + "src": "37760:6:5" + }, + "nativeSrc": "37760:17:5", + "nodeType": "YulFunctionCall", + "src": "37760:17:5" + }, + "variableNames": [ + { + "name": "T4", + "nativeSrc": "37754:2:5", + "nodeType": "YulIdentifier", + "src": "37754:2:5" + } + ] + }, + { + "nativeSrc": "37802:23:5", + "nodeType": "YulAssignment", + "src": "37802:23:5", + "value": { + "arguments": [ + { + "name": "T4", + "nativeSrc": "37815:2:5", + "nodeType": "YulIdentifier", + "src": "37815:2:5" + }, + { + "name": "T2", + "nativeSrc": "37819:2:5", + "nodeType": "YulIdentifier", + "src": "37819:2:5" + }, + { + "name": "p", + "nativeSrc": "37823:1:5", + "nodeType": "YulIdentifier", + "src": "37823:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "37808:6:5", + "nodeType": "YulIdentifier", + "src": "37808:6:5" + }, + "nativeSrc": "37808:17:5", + "nodeType": "YulFunctionCall", + "src": "37808:17:5" + }, + "variableNames": [ + { + "name": "T1", + "nativeSrc": "37802:2:5", + "nodeType": "YulIdentifier", + "src": "37802:2:5" + } + ] + }, + { + "nativeSrc": "37850:23:5", + "nodeType": "YulAssignment", + "src": "37850:23:5", + "value": { + "arguments": [ + { + "name": "zz", + "nativeSrc": "37863:2:5", + "nodeType": "YulIdentifier", + "src": "37863:2:5" + }, + { + "name": "T4", + "nativeSrc": "37867:2:5", + "nodeType": "YulIdentifier", + "src": "37867:2:5" + }, + { + "name": "p", + "nativeSrc": "37871:1:5", + "nodeType": "YulIdentifier", + "src": "37871:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "37856:6:5", + "nodeType": "YulIdentifier", + "src": "37856:6:5" + }, + "nativeSrc": "37856:17:5", + "nodeType": "YulFunctionCall", + "src": "37856:17:5" + }, + "variableNames": [ + { + "name": "T2", + "nativeSrc": "37850:2:5", + "nodeType": "YulIdentifier", + "src": "37850:2:5" + } + ] + }, + { + "nativeSrc": "37906:25:5", + "nodeType": "YulAssignment", + "src": "37906:25:5", + "value": { + "arguments": [ + { + "name": "zzz", + "nativeSrc": "37920:3:5", + "nodeType": "YulIdentifier", + "src": "37920:3:5" + }, + { + "name": "T1", + "nativeSrc": "37925:2:5", + "nodeType": "YulIdentifier", + "src": "37925:2:5" + }, + { + "name": "p", + "nativeSrc": "37929:1:5", + "nodeType": "YulIdentifier", + "src": "37929:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "37913:6:5", + "nodeType": "YulIdentifier", + "src": "37913:6:5" + }, + "nativeSrc": "37913:18:5", + "nodeType": "YulFunctionCall", + "src": "37913:18:5" + }, + "variableNames": [ + { + "name": "zzz", + "nativeSrc": "37906:3:5", + "nodeType": "YulIdentifier", + "src": "37906:3:5" + } + ] + }, + { + "nativeSrc": "37968:27:5", + "nodeType": "YulVariableDeclaration", + "src": "37968:27:5", + "value": { + "arguments": [ + { + "name": "X", + "nativeSrc": "37986:1:5", + "nodeType": "YulIdentifier", + "src": "37986:1:5" + }, + { + "name": "T4", + "nativeSrc": "37989:2:5", + "nodeType": "YulIdentifier", + "src": "37989:2:5" + }, + { + "name": "p", + "nativeSrc": "37993:1:5", + "nodeType": "YulIdentifier", + "src": "37993:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "37979:6:5", + "nodeType": "YulIdentifier", + "src": "37979:6:5" + }, + "nativeSrc": "37979:16:5", + "nodeType": "YulFunctionCall", + "src": "37979:16:5" + }, + "variables": [ + { + "name": "zz1", + "nativeSrc": "37972:3:5", + "nodeType": "YulTypedName", + "src": "37972:3:5", + "type": "" + } + ] + }, + { + "nativeSrc": "38020:82:5", + "nodeType": "YulAssignment", + "src": "38020:82:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "y2", + "nativeSrc": "38047:2:5", + "nodeType": "YulIdentifier", + "src": "38047:2:5" + }, + { + "name": "y2", + "nativeSrc": "38051:2:5", + "nodeType": "YulIdentifier", + "src": "38051:2:5" + }, + { + "name": "p", + "nativeSrc": "38055:1:5", + "nodeType": "YulIdentifier", + "src": "38055:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "38040:6:5", + "nodeType": "YulIdentifier", + "src": "38040:6:5" + }, + "nativeSrc": "38040:17:5", + "nodeType": "YulFunctionCall", + "src": "38040:17:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "38063:1:5", + "nodeType": "YulIdentifier", + "src": "38063:1:5" + }, + { + "name": "T1", + "nativeSrc": "38066:2:5", + "nodeType": "YulIdentifier", + "src": "38066:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "38059:3:5", + "nodeType": "YulIdentifier", + "src": "38059:3:5" + }, + "nativeSrc": "38059:10:5", + "nodeType": "YulFunctionCall", + "src": "38059:10:5" + }, + { + "name": "p", + "nativeSrc": "38071:1:5", + "nodeType": "YulIdentifier", + "src": "38071:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "38033:6:5", + "nodeType": "YulIdentifier", + "src": "38033:6:5" + }, + "nativeSrc": "38033:40:5", + "nodeType": "YulFunctionCall", + "src": "38033:40:5" + }, + { + "arguments": [ + { + "name": "minus_2", + "nativeSrc": "38082:7:5", + "nodeType": "YulIdentifier", + "src": "38082:7:5" + }, + { + "name": "zz1", + "nativeSrc": "38091:3:5", + "nodeType": "YulIdentifier", + "src": "38091:3:5" + }, + { + "name": "p", + "nativeSrc": "38096:1:5", + "nodeType": "YulIdentifier", + "src": "38096:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "38075:6:5", + "nodeType": "YulIdentifier", + "src": "38075:6:5" + }, + "nativeSrc": "38075:23:5", + "nodeType": "YulFunctionCall", + "src": "38075:23:5" + }, + { + "name": "p", + "nativeSrc": "38100:1:5", + "nodeType": "YulIdentifier", + "src": "38100:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "38026:6:5", + "nodeType": "YulIdentifier", + "src": "38026:6:5" + }, + "nativeSrc": "38026:76:5", + "nodeType": "YulFunctionCall", + "src": "38026:76:5" + }, + "variableNames": [ + { + "name": "T4", + "nativeSrc": "38020:2:5", + "nodeType": "YulIdentifier", + "src": "38020:2:5" + } + ] + }, + { + "nativeSrc": "38127:75:5", + "nodeType": "YulAssignment", + "src": "38127:75:5", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "zz1", + "nativeSrc": "38153:3:5", + "nodeType": "YulIdentifier", + "src": "38153:3:5" + }, + { + "arguments": [ + { + "name": "p", + "nativeSrc": "38162:1:5", + "nodeType": "YulIdentifier", + "src": "38162:1:5" + }, + { + "name": "T4", + "nativeSrc": "38165:2:5", + "nodeType": "YulIdentifier", + "src": "38165:2:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "38158:3:5", + "nodeType": "YulIdentifier", + "src": "38158:3:5" + }, + "nativeSrc": "38158:10:5", + "nodeType": "YulFunctionCall", + "src": "38158:10:5" + }, + { + "name": "p", + "nativeSrc": "38170:1:5", + "nodeType": "YulIdentifier", + "src": "38170:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "38146:6:5", + "nodeType": "YulIdentifier", + "src": "38146:6:5" + }, + "nativeSrc": "38146:26:5", + "nodeType": "YulFunctionCall", + "src": "38146:26:5" + }, + { + "name": "y2", + "nativeSrc": "38174:2:5", + "nodeType": "YulIdentifier", + "src": "38174:2:5" + }, + { + "name": "p", + "nativeSrc": "38178:1:5", + "nodeType": "YulIdentifier", + "src": "38178:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "38139:6:5", + "nodeType": "YulIdentifier", + "src": "38139:6:5" + }, + "nativeSrc": "38139:41:5", + "nodeType": "YulFunctionCall", + "src": "38139:41:5" + }, + { + "arguments": [ + { + "name": "Y", + "nativeSrc": "38189:1:5", + "nodeType": "YulIdentifier", + "src": "38189:1:5" + }, + { + "name": "T1", + "nativeSrc": "38192:2:5", + "nodeType": "YulIdentifier", + "src": "38192:2:5" + }, + { + "name": "p", + "nativeSrc": "38196:1:5", + "nodeType": "YulIdentifier", + "src": "38196:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "38182:6:5", + "nodeType": "YulIdentifier", + "src": "38182:6:5" + }, + "nativeSrc": "38182:16:5", + "nodeType": "YulFunctionCall", + "src": "38182:16:5" + }, + { + "name": "p", + "nativeSrc": "38200:1:5", + "nodeType": "YulIdentifier", + "src": "38200:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "38132:6:5", + "nodeType": "YulIdentifier", + "src": "38132:6:5" + }, + "nativeSrc": "38132:70:5", + "nodeType": "YulFunctionCall", + "src": "38132:70:5" + }, + "variableNames": [ + { + "name": "Y", + "nativeSrc": "38127:1:5", + "nodeType": "YulIdentifier", + "src": "38127:1:5" + } + ] + }, + { + "nativeSrc": "38227:8:5", + "nodeType": "YulAssignment", + "src": "38227:8:5", + "value": { + "name": "T2", + "nativeSrc": "38233:2:5", + "nodeType": "YulIdentifier", + "src": "38233:2:5" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "38227:2:5", + "nodeType": "YulIdentifier", + "src": "38227:2:5" + } + ] + }, + { + "nativeSrc": "38260:7:5", + "nodeType": "YulAssignment", + "src": "38260:7:5", + "value": { + "name": "T4", + "nativeSrc": "38265:2:5", + "nodeType": "YulIdentifier", + "src": "38265:2:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "38260:1:5", + "nodeType": "YulIdentifier", + "src": "38260:1:5" + } + ] + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "index", + "nativeSrc": "35416:5:5", + "nodeType": "YulIdentifier", + "src": "35416:5:5" + }, + { + "kind": "number", + "nativeSrc": "35423:3:5", + "nodeType": "YulLiteral", + "src": "35423:3:5", + "type": "", + "value": "191" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "35413:2:5", + "nodeType": "YulIdentifier", + "src": "35413:2:5" + }, + "nativeSrc": "35413:14:5", + "nodeType": "YulFunctionCall", + "src": "35413:14:5" + }, + "nativeSrc": "35388:2919:5", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "35428:28:5", + "nodeType": "YulBlock", + "src": "35428:28:5", + "statements": [ + { + "nativeSrc": "35430:24:5", + "nodeType": "YulAssignment", + "src": "35430:24:5", + "value": { + "arguments": [ + { + "name": "index", + "nativeSrc": "35443:5:5", + "nodeType": "YulIdentifier", + "src": "35443:5:5" + }, + { + "kind": "number", + "nativeSrc": "35450:3:5", + "nodeType": "YulLiteral", + "src": "35450:3:5", + "type": "", + "value": "191" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35439:3:5", + "nodeType": "YulIdentifier", + "src": "35439:3:5" + }, + "nativeSrc": "35439:15:5", + "nodeType": "YulFunctionCall", + "src": "35439:15:5" + }, + "variableNames": [ + { + "name": "index", + "nativeSrc": "35430:5:5", + "nodeType": "YulIdentifier", + "src": "35430:5:5" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "35392:20:5", + "nodeType": "YulBlock", + "src": "35392:20:5", + "statements": [ + { + "nativeSrc": "35394:16:5", + "nodeType": "YulVariableDeclaration", + "src": "35394:16:5", + "value": { + "kind": "number", + "nativeSrc": "35407:3:5", + "nodeType": "YulLiteral", + "src": "35407:3:5", + "type": "", + "value": "254" + }, + "variables": [ + { + "name": "index", + "nativeSrc": "35398:5:5", + "nodeType": "YulTypedName", + "src": "35398:5:5", + "type": "" + } + ] + } + ] + }, + "src": "35388:2919:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "38346:1:5", + "nodeType": "YulIdentifier", + "src": "38346:1:5" + }, + { + "kind": "number", + "nativeSrc": "38349:4:5", + "nodeType": "YulLiteral", + "src": "38349:4:5", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "38342:3:5", + "nodeType": "YulIdentifier", + "src": "38342:3:5" + }, + "nativeSrc": "38342:12:5", + "nodeType": "YulFunctionCall", + "src": "38342:12:5" + }, + { + "name": "zz", + "nativeSrc": "38356:2:5", + "nodeType": "YulIdentifier", + "src": "38356:2:5" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "38335:6:5", + "nodeType": "YulIdentifier", + "src": "38335:6:5" + }, + "nativeSrc": "38335:24:5", + "nodeType": "YulFunctionCall", + "src": "38335:24:5" + }, + "nativeSrc": "38335:24:5", + "nodeType": "YulExpressionStatement", + "src": "38335:24:5" + }, + { + "expression": { + "arguments": [ + { + "name": "T", + "nativeSrc": "38619:1:5", + "nodeType": "YulIdentifier", + "src": "38619:1:5" + }, + { + "kind": "number", + "nativeSrc": "38622:4:5", + "nodeType": "YulLiteral", + "src": "38622:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "38612:6:5", + "nodeType": "YulIdentifier", + "src": "38612:6:5" + }, + "nativeSrc": "38612:15:5", + "nodeType": "YulFunctionCall", + "src": "38612:15:5" + }, + "nativeSrc": "38612:15:5", + "nodeType": "YulExpressionStatement", + "src": "38612:15:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "38655:1:5", + "nodeType": "YulIdentifier", + "src": "38655:1:5" + }, + { + "kind": "number", + "nativeSrc": "38658:4:5", + "nodeType": "YulLiteral", + "src": "38658:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "38651:3:5", + "nodeType": "YulIdentifier", + "src": "38651:3:5" + }, + "nativeSrc": "38651:12:5", + "nodeType": "YulFunctionCall", + "src": "38651:12:5" + }, + { + "kind": "number", + "nativeSrc": "38665:4:5", + "nodeType": "YulLiteral", + "src": "38665:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "38644:6:5", + "nodeType": "YulIdentifier", + "src": "38644:6:5" + }, + "nativeSrc": "38644:26:5", + "nodeType": "YulFunctionCall", + "src": "38644:26:5" + }, + "nativeSrc": "38644:26:5", + "nodeType": "YulExpressionStatement", + "src": "38644:26:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "38698:1:5", + "nodeType": "YulIdentifier", + "src": "38698:1:5" + }, + { + "kind": "number", + "nativeSrc": "38701:4:5", + "nodeType": "YulLiteral", + "src": "38701:4:5", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "38694:3:5", + "nodeType": "YulIdentifier", + "src": "38694:3:5" + }, + "nativeSrc": "38694:12:5", + "nodeType": "YulFunctionCall", + "src": "38694:12:5" + }, + { + "kind": "number", + "nativeSrc": "38708:4:5", + "nodeType": "YulLiteral", + "src": "38708:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "38687:6:5", + "nodeType": "YulIdentifier", + "src": "38687:6:5" + }, + "nativeSrc": "38687:26:5", + "nodeType": "YulFunctionCall", + "src": "38687:26:5" + }, + "nativeSrc": "38687:26:5", + "nodeType": "YulExpressionStatement", + "src": "38687:26:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "38852:1:5", + "nodeType": "YulIdentifier", + "src": "38852:1:5" + }, + { + "kind": "number", + "nativeSrc": "38855:4:5", + "nodeType": "YulLiteral", + "src": "38855:4:5", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "38848:3:5", + "nodeType": "YulIdentifier", + "src": "38848:3:5" + }, + "nativeSrc": "38848:12:5", + "nodeType": "YulFunctionCall", + "src": "38848:12:5" + }, + { + "name": "minus_2", + "nativeSrc": "38862:7:5", + "nodeType": "YulIdentifier", + "src": "38862:7:5" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "38841:6:5", + "nodeType": "YulIdentifier", + "src": "38841:6:5" + }, + "nativeSrc": "38841:29:5", + "nodeType": "YulFunctionCall", + "src": "38841:29:5" + }, + "nativeSrc": "38841:29:5", + "nodeType": "YulExpressionStatement", + "src": "38841:29:5" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "T", + "nativeSrc": "38898:1:5", + "nodeType": "YulIdentifier", + "src": "38898:1:5" + }, + { + "kind": "number", + "nativeSrc": "38901:4:5", + "nodeType": "YulLiteral", + "src": "38901:4:5", + "type": "", + "value": "0xa0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "38894:3:5", + "nodeType": "YulIdentifier", + "src": "38894:3:5" + }, + "nativeSrc": "38894:12:5", + "nodeType": "YulFunctionCall", + "src": "38894:12:5" + }, + { + "name": "p", + "nativeSrc": "38908:1:5", + "nodeType": "YulIdentifier", + "src": "38908:1:5" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "38887:6:5", + "nodeType": "YulIdentifier", + "src": "38887:6:5" + }, + "nativeSrc": "38887:23:5", + "nodeType": "YulFunctionCall", + "src": "38887:23:5" + }, + "nativeSrc": "38887:23:5", + "nodeType": "YulExpressionStatement", + "src": "38887:23:5" + }, + { + "body": { + "nativeSrc": "39045:16:5", + "nodeType": "YulBlock", + "src": "39045:16:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "39054:1:5", + "nodeType": "YulLiteral", + "src": "39054:1:5", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "39057:1:5", + "nodeType": "YulLiteral", + "src": "39057:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "39047:6:5", + "nodeType": "YulIdentifier", + "src": "39047:6:5" + }, + "nativeSrc": "39047:12:5", + "nodeType": "YulFunctionCall", + "src": "39047:12:5" + }, + "nativeSrc": "39047:12:5", + "nodeType": "YulExpressionStatement", + "src": "39047:12:5" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "39016:1:5", + "nodeType": "YulLiteral", + "src": "39016:1:5", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "39012:3:5", + "nodeType": "YulIdentifier", + "src": "39012:3:5" + }, + "nativeSrc": "39012:6:5", + "nodeType": "YulFunctionCall", + "src": "39012:6:5" + }, + { + "kind": "number", + "nativeSrc": "39020:4:5", + "nodeType": "YulLiteral", + "src": "39020:4:5", + "type": "", + "value": "0x05" + }, + { + "name": "T", + "nativeSrc": "39026:1:5", + "nodeType": "YulIdentifier", + "src": "39026:1:5" + }, + { + "kind": "number", + "nativeSrc": "39029:4:5", + "nodeType": "YulLiteral", + "src": "39029:4:5", + "type": "", + "value": "0xc0" + }, + { + "name": "T", + "nativeSrc": "39035:1:5", + "nodeType": "YulIdentifier", + "src": "39035:1:5" + }, + { + "kind": "number", + "nativeSrc": "39038:4:5", + "nodeType": "YulLiteral", + "src": "39038:4:5", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "39001:10:5", + "nodeType": "YulIdentifier", + "src": "39001:10:5" + }, + "nativeSrc": "39001:42:5", + "nodeType": "YulFunctionCall", + "src": "39001:42:5" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "38994:6:5", + "nodeType": "YulIdentifier", + "src": "38994:6:5" + }, + "nativeSrc": "38994:50:5", + "nodeType": "YulFunctionCall", + "src": "38994:50:5" + }, + "nativeSrc": "38991:70:5", + "nodeType": "YulIf", + "src": "38991:70:5" + }, + { + "nativeSrc": "39079:14:5", + "nodeType": "YulAssignment", + "src": "39079:14:5", + "value": { + "arguments": [ + { + "name": "T", + "nativeSrc": "39091:1:5", + "nodeType": "YulIdentifier", + "src": "39091:1:5" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "39085:5:5", + "nodeType": "YulIdentifier", + "src": "39085:5:5" + }, + "nativeSrc": "39085:8:5", + "nodeType": "YulFunctionCall", + "src": "39085:8:5" + }, + "variableNames": [ + { + "name": "zz", + "nativeSrc": "39079:2:5", + "nodeType": "YulIdentifier", + "src": "39079:2:5" + } + ] + }, + { + "nativeSrc": "39110:21:5", + "nodeType": "YulAssignment", + "src": "39110:21:5", + "value": { + "arguments": [ + { + "name": "X", + "nativeSrc": "39122:1:5", + "nodeType": "YulIdentifier", + "src": "39122:1:5" + }, + { + "name": "zz", + "nativeSrc": "39125:2:5", + "nodeType": "YulIdentifier", + "src": "39125:2:5" + }, + { + "name": "p", + "nativeSrc": "39129:1:5", + "nodeType": "YulIdentifier", + "src": "39129:1:5" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "39115:6:5", + "nodeType": "YulIdentifier", + "src": "39115:6:5" + }, + "nativeSrc": "39115:16:5", + "nodeType": "YulFunctionCall", + "src": "39115:16:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "39110:1:5", + "nodeType": "YulIdentifier", + "src": "39110:1:5" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2104, + "isOffset": false, + "isSlot": false, + "src": "35131:1:5", + "valueSize": 1 + }, + { + "declaration": 2104, + "isOffset": false, + "isSlot": false, + "src": "35144:1:5", + "valueSize": 1 + }, + { + "declaration": 2104, + "isOffset": false, + "isSlot": false, + "src": "35193:1:5", + "valueSize": 1 + }, + { + "declaration": 2104, + "isOffset": false, + "isSlot": false, + "src": "35231:1:5", + "valueSize": 1 + }, + { + "declaration": 2104, + "isOffset": false, + "isSlot": false, + "src": "37496:1:5", + "valueSize": 1 + }, + { + "declaration": 2104, + "isOffset": false, + "isSlot": false, + "src": "37630:1:5", + "valueSize": 1 + }, + { + "declaration": 2104, + "isOffset": false, + "isSlot": false, + "src": "37704:1:5", + "valueSize": 1 + }, + { + "declaration": 2104, + "isOffset": false, + "isSlot": false, + "src": "38346:1:5", + "valueSize": 1 + }, + { + "declaration": 2104, + "isOffset": false, + "isSlot": false, + "src": "38619:1:5", + "valueSize": 1 + }, + { + "declaration": 2104, + "isOffset": false, + "isSlot": false, + "src": "38655:1:5", + "valueSize": 1 + }, + { + "declaration": 2104, + "isOffset": false, + "isSlot": false, + "src": "38698:1:5", + "valueSize": 1 + }, + { + "declaration": 2104, + "isOffset": false, + "isSlot": false, + "src": "38852:1:5", + "valueSize": 1 + }, + { + "declaration": 2104, + "isOffset": false, + "isSlot": false, + "src": "38898:1:5", + "valueSize": 1 + }, + { + "declaration": 2104, + "isOffset": false, + "isSlot": false, + "src": "39026:1:5", + "valueSize": 1 + }, + { + "declaration": 2104, + "isOffset": false, + "isSlot": false, + "src": "39035:1:5", + "valueSize": 1 + }, + { + "declaration": 2104, + "isOffset": false, + "isSlot": false, + "src": "39091:1:5", + "valueSize": 1 + }, + { + "declaration": 2094, + "isOffset": false, + "isSlot": false, + "src": "35182:1:5", + "valueSize": 1 + }, + { + "declaration": 2094, + "isOffset": false, + "isSlot": false, + "src": "35618:1:5", + "valueSize": 1 + }, + { + "declaration": 2094, + "isOffset": false, + "isSlot": false, + "src": "35746:1:5", + "valueSize": 1 + }, + { + "declaration": 2094, + "isOffset": false, + "isSlot": false, + "src": "35772:1:5", + "valueSize": 1 + }, + { + "declaration": 2094, + "isOffset": false, + "isSlot": false, + "src": "35959:1:5", + "valueSize": 1 + }, + { + "declaration": 2094, + "isOffset": false, + "isSlot": false, + "src": "36145:1:5", + "valueSize": 1 + }, + { + "declaration": 2094, + "isOffset": false, + "isSlot": false, + "src": "37723:1:5", + "valueSize": 1 + }, + { + "declaration": 2094, + "isOffset": false, + "isSlot": false, + "src": "37986:1:5", + "valueSize": 1 + }, + { + "declaration": 2094, + "isOffset": false, + "isSlot": false, + "src": "38260:1:5", + "valueSize": 1 + }, + { + "declaration": 2094, + "isOffset": false, + "isSlot": false, + "src": "39110:1:5", + "valueSize": 1 + }, + { + "declaration": 2094, + "isOffset": false, + "isSlot": false, + "src": "39122:1:5", + "valueSize": 1 + }, + { + "declaration": 2091, + "isOffset": false, + "isSlot": false, + "src": "35148:11:5", + "valueSize": 1 + }, + { + "declaration": 2091, + "isOffset": false, + "isSlot": false, + "src": "37507:11:5", + "valueSize": 1 + }, + { + "declaration": 994, + "isOffset": false, + "isSlot": false, + "src": "35997:7:5", + "valueSize": 1 + }, + { + "declaration": 994, + "isOffset": false, + "isSlot": false, + "src": "38082:7:5", + "valueSize": 1 + }, + { + "declaration": 994, + "isOffset": false, + "isSlot": false, + "src": "38862:7:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "35502:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "35569:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "35625:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "35681:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "35753:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "35761:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "35779:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "35783:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "35787:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "35857:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "35915:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "35986:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "36010:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "36014:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "36152:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "36160:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "36164:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "36318:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "36326:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "37298:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "37644:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "37651:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "37712:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "37720:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "37727:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "37775:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "37823:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "37871:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "37929:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "37993:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "38055:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "38063:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "38071:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "38096:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "38100:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "38162:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "38170:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "38178:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "38196:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "38200:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "38908:1:5", + "valueSize": 1 + }, + { + "declaration": 976, + "isOffset": false, + "isSlot": false, + "src": "39129:1:5", + "valueSize": 1 + }, + { + "declaration": 2087, + "isOffset": false, + "isSlot": false, + "src": "36558:8:5", + "valueSize": 1 + }, + { + "declaration": 2087, + "isOffset": false, + "isSlot": false, + "src": "36717:8:5", + "valueSize": 1 + }, + { + "declaration": 2087, + "isOffset": false, + "isSlot": false, + "src": "36877:8:5", + "valueSize": 1 + }, + { + "declaration": 2087, + "isOffset": false, + "isSlot": false, + "src": "37037:8:5", + "valueSize": 1 + }, + { + "declaration": 2089, + "isOffset": false, + "isSlot": false, + "src": "36520:8:5", + "valueSize": 1 + }, + { + "declaration": 2089, + "isOffset": false, + "isSlot": false, + "src": "36679:8:5", + "valueSize": 1 + }, + { + "declaration": 2089, + "isOffset": false, + "isSlot": false, + "src": "36839:8:5", + "valueSize": 1 + }, + { + "declaration": 2089, + "isOffset": false, + "isSlot": false, + "src": "36999:8:5", + "valueSize": 1 + }, + { + "declaration": 2097, + "isOffset": false, + "isSlot": false, + "src": "35284:2:5", + "valueSize": 1 + }, + { + "declaration": 2097, + "isOffset": false, + "isSlot": false, + "src": "35756:2:5", + "valueSize": 1 + }, + { + "declaration": 2097, + "isOffset": false, + "isSlot": false, + "src": "35775:2:5", + "valueSize": 1 + }, + { + "declaration": 2097, + "isOffset": false, + "isSlot": false, + "src": "35894:2:5", + "valueSize": 1 + }, + { + "declaration": 2097, + "isOffset": false, + "isSlot": false, + "src": "35911:2:5", + "valueSize": 1 + }, + { + "declaration": 2097, + "isOffset": false, + "isSlot": false, + "src": "37708:2:5", + "valueSize": 1 + }, + { + "declaration": 2097, + "isOffset": false, + "isSlot": false, + "src": "37863:2:5", + "valueSize": 1 + }, + { + "declaration": 2097, + "isOffset": false, + "isSlot": false, + "src": "38227:2:5", + "valueSize": 1 + }, + { + "declaration": 2097, + "isOffset": false, + "isSlot": false, + "src": "38356:2:5", + "valueSize": 1 + }, + { + "declaration": 2097, + "isOffset": false, + "isSlot": false, + "src": "39079:2:5", + "valueSize": 1 + }, + { + "declaration": 2097, + "isOffset": false, + "isSlot": false, + "src": "39125:2:5", + "valueSize": 1 + } + ], + "id": 2226, + "nodeType": "InlineAssembly", + "src": "35095:4057:5" + } + ] + } + ] + }, + "id": 2229, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ecZZ_mulmuladd_S8_hackmem", + "nameLocation": "34205:25:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2092, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2087, + "mutability": "mutable", + "name": "scalar_u", + "nameLocation": "34239:8:5", + "nodeType": "VariableDeclaration", + "scope": 2229, + "src": "34231:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2086, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "34231:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2089, + "mutability": "mutable", + "name": "scalar_v", + "nameLocation": "34257:8:5", + "nodeType": "VariableDeclaration", + "scope": 2229, + "src": "34249:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2088, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "34249:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2091, + "mutability": "mutable", + "name": "dataPointer", + "nameLocation": "34275:11:5", + "nodeType": "VariableDeclaration", + "scope": 2229, + "src": "34267:19:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2090, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "34267:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "34230:57:5" + }, + "returnParameters": { + "id": 2095, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2094, + "mutability": "mutable", + "name": "X", + "nameLocation": "34335:1:5", + "nodeType": "VariableDeclaration", + "scope": 2229, + "src": "34327:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2093, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "34327:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "34326:25:5" + }, + "scope": 2309, + "src": "34196:4988:5", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2307, + "nodeType": "Block", + "src": "39920:574:5", + "statements": [ + { + "assignments": [ + 2244 + ], + "declarations": [ + { + "constant": false, + "id": 2244, + "mutability": "mutable", + "name": "r", + "nameLocation": "39938:1:5", + "nodeType": "VariableDeclaration", + "scope": 2307, + "src": "39930:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2243, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "39930:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2248, + "initialValue": { + "baseExpression": { + "id": 2245, + "name": "rs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2236, + "src": "39942:2:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_calldata_ptr", + "typeString": "uint256[2] calldata" + } + }, + "id": 2247, + "indexExpression": { + "hexValue": "30", + "id": 2246, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "39945:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "39942:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "39930:17:5" + }, + { + "assignments": [ + 2250 + ], + "declarations": [ + { + "constant": false, + "id": 2250, + "mutability": "mutable", + "name": "s", + "nameLocation": "39965:1:5", + "nodeType": "VariableDeclaration", + "scope": 2307, + "src": "39957:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2249, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "39957:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2254, + "initialValue": { + "baseExpression": { + "id": 2251, + "name": "rs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2236, + "src": "39969:2:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_calldata_ptr", + "typeString": "uint256[2] calldata" + } + }, + "id": 2253, + "indexExpression": { + "hexValue": "31", + "id": 2252, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "39972:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "39969:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "39957:17:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2269, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2265, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2261, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2257, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2255, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2244, + "src": "39988:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 2256, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "39993:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "39988:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2260, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2258, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2244, + "src": "39998:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 2259, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 991, + "src": "40003:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "39998:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "39988:16:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2262, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2250, + "src": "40008:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 2263, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "40013:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "40008:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "39988:26:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2268, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2266, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2250, + "src": "40018:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 2267, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 991, + "src": "40023:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "40018:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "39988:36:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2273, + "nodeType": "IfStatement", + "src": "39984:79:5", + "trueBody": { + "id": 2272, + "nodeType": "Block", + "src": "40026:37:5", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 2270, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "40047:5:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 2242, + "id": 2271, + "nodeType": "Return", + "src": "40040:12:5" + } + ] + } + }, + { + "assignments": [ + 2275 + ], + "declarations": [ + { + "constant": false, + "id": 2275, + "mutability": "mutable", + "name": "sInv", + "nameLocation": "40215:4:5", + "nodeType": "VariableDeclaration", + "scope": 2307, + "src": "40207:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2274, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "40207:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2279, + "initialValue": { + "arguments": [ + { + "id": 2277, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2250, + "src": "40234:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2276, + "name": "FCL_nModInv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1019, + "src": "40222:11:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) view returns (uint256)" + } + }, + "id": 2278, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "40222:14:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "40207:29:5" + }, + { + "assignments": [ + 2281 + ], + "declarations": [ + { + "constant": false, + "id": 2281, + "mutability": "mutable", + "name": "X", + "nameLocation": "40254:1:5", + "nodeType": "VariableDeclaration", + "scope": 2307, + "src": "40246:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2280, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "40246:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2282, + "nodeType": "VariableDeclarationStatement", + "src": "40246:9:5" + }, + { + "expression": { + "id": 2300, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2283, + "name": "X", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2281, + "src": "40296:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 2288, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2232, + "src": "40341:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2287, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "40333:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2286, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "40333:7:5", + "typeDescriptions": {} + } + }, + "id": 2289, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "40333:16:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2290, + "name": "sInv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2275, + "src": "40351:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2291, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 991, + "src": "40357:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2285, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "40326:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 2292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "40326:33:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 2294, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2244, + "src": "40368:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2295, + "name": "sInv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2275, + "src": "40371:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2296, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 991, + "src": "40377:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2293, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "40361:6:5", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 2297, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "40361:18:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2298, + "name": "endcontract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2238, + "src": "40381:11:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2284, + "name": "ecZZ_mulmuladd_S8_hackmem", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2229, + "src": "40300:25:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) view returns (uint256)" + } + }, + "id": 2299, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "40300:93:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "40296:97:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2301, + "nodeType": "ExpressionStatement", + "src": "40296:97:5" + }, + { + "AST": { + "nativeSrc": "40413:52:5", + "nodeType": "YulBlock", + "src": "40413:52:5", + "statements": [ + { + "nativeSrc": "40427:28:5", + "nodeType": "YulAssignment", + "src": "40427:28:5", + "value": { + "arguments": [ + { + "name": "X", + "nativeSrc": "40439:1:5", + "nodeType": "YulIdentifier", + "src": "40439:1:5" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "40446:1:5", + "nodeType": "YulIdentifier", + "src": "40446:1:5" + }, + { + "name": "r", + "nativeSrc": "40449:1:5", + "nodeType": "YulIdentifier", + "src": "40449:1:5" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "40442:3:5", + "nodeType": "YulIdentifier", + "src": "40442:3:5" + }, + "nativeSrc": "40442:9:5", + "nodeType": "YulFunctionCall", + "src": "40442:9:5" + }, + { + "name": "n", + "nativeSrc": "40453:1:5", + "nodeType": "YulIdentifier", + "src": "40453:1:5" + } + ], + "functionName": { + "name": "addmod", + "nativeSrc": "40432:6:5", + "nodeType": "YulIdentifier", + "src": "40432:6:5" + }, + "nativeSrc": "40432:23:5", + "nodeType": "YulFunctionCall", + "src": "40432:23:5" + }, + "variableNames": [ + { + "name": "X", + "nativeSrc": "40427:1:5", + "nodeType": "YulIdentifier", + "src": "40427:1:5" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2281, + "isOffset": false, + "isSlot": false, + "src": "40427:1:5", + "valueSize": 1 + }, + { + "declaration": 2281, + "isOffset": false, + "isSlot": false, + "src": "40439:1:5", + "valueSize": 1 + }, + { + "declaration": 991, + "isOffset": false, + "isSlot": false, + "src": "40446:1:5", + "valueSize": 1 + }, + { + "declaration": 991, + "isOffset": false, + "isSlot": false, + "src": "40453:1:5", + "valueSize": 1 + }, + { + "declaration": 2244, + "isOffset": false, + "isSlot": false, + "src": "40449:1:5", + "valueSize": 1 + } + ], + "id": 2302, + "nodeType": "InlineAssembly", + "src": "40404:61:5" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2303, + "name": "X", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2281, + "src": "40481:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 2304, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "40486:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "40481:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2242, + "id": 2306, + "nodeType": "Return", + "src": "40474:13:5" + } + ] + }, + "documentation": { + "id": 2230, + "nodeType": "StructuredDocumentation", + "src": "39476:292:5", + "text": " @dev ECDSA verification using a precomputed table of multiples of P and Q appended at end of contract at address endcontract\n generation of contract bytecode for precomputations is done using sagemath code\n (see sage directory, WebAuthn_precompute.sage)" + }, + "id": 2308, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ecdsa_precomputed_hackmem", + "nameLocation": "39783:25:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2239, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2232, + "mutability": "mutable", + "name": "message", + "nameLocation": "39817:7:5", + "nodeType": "VariableDeclaration", + "scope": 2308, + "src": "39809:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2231, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "39809:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2236, + "mutability": "mutable", + "name": "rs", + "nameLocation": "39846:2:5", + "nodeType": "VariableDeclaration", + "scope": 2308, + "src": "39826:22:5", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_calldata_ptr", + "typeString": "uint256[2]" + }, + "typeName": { + "baseType": { + "id": 2233, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "39826:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2235, + "length": { + "hexValue": "32", + "id": 2234, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "39834:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "ArrayTypeName", + "src": "39826:10:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr", + "typeString": "uint256[2]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2238, + "mutability": "mutable", + "name": "endcontract", + "nameLocation": "39858:11:5", + "nodeType": "VariableDeclaration", + "scope": 2308, + "src": "39850:19:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2237, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "39850:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "39808:62:5" + }, + "returnParameters": { + "id": 2242, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2241, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2308, + "src": "39910:4:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2240, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "39910:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "39909:6:5" + }, + "scope": 2309, + "src": "39774:720:5", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 2310, + "src": "1220:39313:5", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "1186:39354:5" + }, + "id": 5 + }, + "openzeppelin-contracts/contracts/utils/Base64.sol": { + "ast": { + "absolutePath": "openzeppelin-contracts/contracts/utils/Base64.sol", + "exportedSymbols": { + "Base64": [ + 2404 + ] + }, + "id": 2405, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2311, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "100:24:6" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "Base64", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 2312, + "nodeType": "StructuredDocumentation", + "src": "126:75:6", + "text": " @dev Provides a set of functions to operate with Base64 strings." + }, + "fullyImplemented": true, + "id": 2404, + "linearizedBaseContracts": [ + 2404 + ], + "name": "Base64", + "nameLocation": "210:6:6", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "documentation": { + "id": 2313, + "nodeType": "StructuredDocumentation", + "src": "223:131:6", + "text": " @dev Base64 Encoding/Decoding Table\n See sections 4 and 5 of https://datatracker.ietf.org/doc/html/rfc4648" + }, + "id": 2316, + "mutability": "constant", + "name": "_TABLE", + "nameLocation": "384:6:6", + "nodeType": "VariableDeclaration", + "scope": 2404, + "src": "359:100:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2314, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "359:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "hexValue": "4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f", + "id": 2315, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "393:66:6", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_84d8a590de33e00cbdc16e1f28c3506f5ec15c599fab9a6a4bcd575cc2f110ce", + "typeString": "literal_string \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\"" + }, + "value": "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 2319, + "mutability": "constant", + "name": "_TABLE_URL", + "nameLocation": "490:10:6", + "nodeType": "VariableDeclaration", + "scope": 2404, + "src": "465:104:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2317, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "465:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "hexValue": "4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f", + "id": 2318, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "503:66:6", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5f7e6d3cba140c1411e96b7033571a229a3135b5c436a9698b398a19a1c64b50", + "typeString": "literal_string \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_\"" + }, + "value": "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_" + }, + "visibility": "internal" + }, + { + "body": { + "id": 2333, + "nodeType": "Block", + "src": "736:51:6", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2328, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2322, + "src": "761:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 2329, + "name": "_TABLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2316, + "src": "767:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "hexValue": "74727565", + "id": 2330, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "775:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2327, + "name": "_encode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2403, + "src": "753:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$_t_bool_$returns$_t_string_memory_ptr_$", + "typeString": "function (bytes memory,string memory,bool) pure returns (string memory)" + } + }, + "id": 2331, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "753:27:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 2326, + "id": 2332, + "nodeType": "Return", + "src": "746:34:6" + } + ] + }, + "documentation": { + "id": 2320, + "nodeType": "StructuredDocumentation", + "src": "576:82:6", + "text": " @dev Converts a `bytes` to its Bytes64 `string` representation." + }, + "id": 2334, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "encode", + "nameLocation": "672:6:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2323, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2322, + "mutability": "mutable", + "name": "data", + "nameLocation": "692:4:6", + "nodeType": "VariableDeclaration", + "scope": 2334, + "src": "679:17:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2321, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "679:5:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "678:19:6" + }, + "returnParameters": { + "id": 2326, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2325, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2334, + "src": "721:13:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2324, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "721:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "720:15:6" + }, + "scope": 2404, + "src": "663:124:6", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2348, + "nodeType": "Block", + "src": "1061:56:6", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2343, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2337, + "src": "1086:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 2344, + "name": "_TABLE_URL", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2319, + "src": "1092:10:6", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "hexValue": "66616c7365", + "id": 2345, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1104:5:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2342, + "name": "_encode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2403, + "src": "1078:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$_t_bool_$returns$_t_string_memory_ptr_$", + "typeString": "function (bytes memory,string memory,bool) pure returns (string memory)" + } + }, + "id": 2346, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1078:32:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 2341, + "id": 2347, + "nodeType": "Return", + "src": "1071:39:6" + } + ] + }, + "documentation": { + "id": 2335, + "nodeType": "StructuredDocumentation", + "src": "793:187:6", + "text": " @dev Converts a `bytes` to its Bytes64Url `string` representation.\n Output is not padded with `=` as specified in https://www.rfc-editor.org/rfc/rfc4648[rfc4648]." + }, + "id": 2349, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "encodeURL", + "nameLocation": "994:9:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2338, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2337, + "mutability": "mutable", + "name": "data", + "nameLocation": "1017:4:6", + "nodeType": "VariableDeclaration", + "scope": 2349, + "src": "1004:17:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2336, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1004:5:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "1003:19:6" + }, + "returnParameters": { + "id": 2341, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2340, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2349, + "src": "1046:13:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2339, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1046:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "1045:15:6" + }, + "scope": 2404, + "src": "985:132:6", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2402, + "nodeType": "Block", + "src": "1298:3910:6", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2364, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 2361, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2352, + "src": "1515:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 2362, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1520:6:6", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "1515:11:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 2363, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1530:1:6", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1515:16:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "documentation": " Inspired by Brecht Devos (Brechtpd) implementation - MIT licence\n https://github.com/Brechtpd/base64/blob/e78d9fd951e7b0977ddca77d92dc85183770daf4/base64.sol", + "id": 2367, + "nodeType": "IfStatement", + "src": "1511:31:6", + "trueBody": { + "expression": { + "hexValue": "", + "id": 2365, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1540:2:6", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + }, + "functionReturnParameters": 2360, + "id": 2366, + "nodeType": "Return", + "src": "1533:9:6" + } + }, + { + "assignments": [ + 2369 + ], + "declarations": [ + { + "constant": false, + "id": 2369, + "mutability": "mutable", + "name": "resultLength", + "nameLocation": "2488:12:6", + "nodeType": "VariableDeclaration", + "scope": 2402, + "src": "2480:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2368, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2480:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2391, + "initialValue": { + "condition": { + "id": 2370, + "name": "withPadding", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2356, + "src": "2503:11:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2389, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2386, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2384, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "34", + "id": 2381, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2548:1:6", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "expression": { + "id": 2382, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2352, + "src": "2552:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 2383, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2557:6:6", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2552:11:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2548:15:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "32", + "id": 2385, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2566:1:6", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "2548:19:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2387, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2547:21:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "hexValue": "33", + "id": 2388, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2571:1:6", + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "src": "2547:25:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2390, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "2503:69:6", + "trueExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2380, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "34", + "id": 2371, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2517:1:6", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2378, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2375, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 2372, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2352, + "src": "2523:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 2373, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2528:6:6", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2523:11:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "32", + "id": 2374, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2537:1:6", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "2523:15:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2376, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2522:17:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "hexValue": "33", + "id": 2377, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2542:1:6", + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "src": "2522:21:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2379, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2521:23:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2517:27:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2480:92:6" + }, + { + "assignments": [ + 2393 + ], + "declarations": [ + { + "constant": false, + "id": 2393, + "mutability": "mutable", + "name": "result", + "nameLocation": "2597:6:6", + "nodeType": "VariableDeclaration", + "scope": 2402, + "src": "2583:20:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2392, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2583:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "id": 2398, + "initialValue": { + "arguments": [ + { + "id": 2396, + "name": "resultLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2369, + "src": "2617:12:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2395, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "2606:10:6", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$", + "typeString": "function (uint256) pure returns (string memory)" + }, + "typeName": { + "id": 2394, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2610:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + } + }, + "id": 2397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2606:24:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2583:47:6" + }, + { + "AST": { + "nativeSrc": "2666:2512:6", + "nodeType": "YulBlock", + "src": "2666:2512:6", + "statements": [ + { + "nativeSrc": "2751:29:6", + "nodeType": "YulVariableDeclaration", + "src": "2751:29:6", + "value": { + "arguments": [ + { + "name": "table", + "nativeSrc": "2771:5:6", + "nodeType": "YulIdentifier", + "src": "2771:5:6" + }, + { + "kind": "number", + "nativeSrc": "2778:1:6", + "nodeType": "YulLiteral", + "src": "2778:1:6", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2767:3:6", + "nodeType": "YulIdentifier", + "src": "2767:3:6" + }, + "nativeSrc": "2767:13:6", + "nodeType": "YulFunctionCall", + "src": "2767:13:6" + }, + "variables": [ + { + "name": "tablePtr", + "nativeSrc": "2755:8:6", + "nodeType": "YulTypedName", + "src": "2755:8:6", + "type": "" + } + ] + }, + { + "nativeSrc": "2850:34:6", + "nodeType": "YulVariableDeclaration", + "src": "2850:34:6", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "2871:6:6", + "nodeType": "YulIdentifier", + "src": "2871:6:6" + }, + { + "kind": "number", + "nativeSrc": "2879:4:6", + "nodeType": "YulLiteral", + "src": "2879:4:6", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2867:3:6", + "nodeType": "YulIdentifier", + "src": "2867:3:6" + }, + "nativeSrc": "2867:17:6", + "nodeType": "YulFunctionCall", + "src": "2867:17:6" + }, + "variables": [ + { + "name": "resultPtr", + "nativeSrc": "2854:9:6", + "nodeType": "YulTypedName", + "src": "2854:9:6", + "type": "" + } + ] + }, + { + "nativeSrc": "2897:19:6", + "nodeType": "YulVariableDeclaration", + "src": "2897:19:6", + "value": { + "name": "data", + "nativeSrc": "2912:4:6", + "nodeType": "YulIdentifier", + "src": "2912:4:6" + }, + "variables": [ + { + "name": "dataPtr", + "nativeSrc": "2901:7:6", + "nodeType": "YulTypedName", + "src": "2901:7:6", + "type": "" + } + ] + }, + { + "nativeSrc": "2929:36:6", + "nodeType": "YulVariableDeclaration", + "src": "2929:36:6", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "2947:4:6", + "nodeType": "YulIdentifier", + "src": "2947:4:6" + }, + { + "arguments": [ + { + "name": "data", + "nativeSrc": "2959:4:6", + "nodeType": "YulIdentifier", + "src": "2959:4:6" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2953:5:6", + "nodeType": "YulIdentifier", + "src": "2953:5:6" + }, + "nativeSrc": "2953:11:6", + "nodeType": "YulFunctionCall", + "src": "2953:11:6" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2943:3:6", + "nodeType": "YulIdentifier", + "src": "2943:3:6" + }, + "nativeSrc": "2943:22:6", + "nodeType": "YulFunctionCall", + "src": "2943:22:6" + }, + "variables": [ + { + "name": "endPtr", + "nativeSrc": "2933:6:6", + "nodeType": "YulTypedName", + "src": "2933:6:6", + "type": "" + } + ] + }, + { + "nativeSrc": "3179:33:6", + "nodeType": "YulVariableDeclaration", + "src": "3179:33:6", + "value": { + "arguments": [ + { + "name": "endPtr", + "nativeSrc": "3199:6:6", + "nodeType": "YulIdentifier", + "src": "3199:6:6" + }, + { + "kind": "number", + "nativeSrc": "3207:4:6", + "nodeType": "YulLiteral", + "src": "3207:4:6", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3195:3:6", + "nodeType": "YulIdentifier", + "src": "3195:3:6" + }, + "nativeSrc": "3195:17:6", + "nodeType": "YulFunctionCall", + "src": "3195:17:6" + }, + "variables": [ + { + "name": "afterPtr", + "nativeSrc": "3183:8:6", + "nodeType": "YulTypedName", + "src": "3183:8:6", + "type": "" + } + ] + }, + { + "nativeSrc": "3225:33:6", + "nodeType": "YulVariableDeclaration", + "src": "3225:33:6", + "value": { + "arguments": [ + { + "name": "afterPtr", + "nativeSrc": "3249:8:6", + "nodeType": "YulIdentifier", + "src": "3249:8:6" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "3243:5:6", + "nodeType": "YulIdentifier", + "src": "3243:5:6" + }, + "nativeSrc": "3243:15:6", + "nodeType": "YulFunctionCall", + "src": "3243:15:6" + }, + "variables": [ + { + "name": "afterCache", + "nativeSrc": "3229:10:6", + "nodeType": "YulTypedName", + "src": "3229:10:6", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "afterPtr", + "nativeSrc": "3278:8:6", + "nodeType": "YulIdentifier", + "src": "3278:8:6" + }, + { + "kind": "number", + "nativeSrc": "3288:4:6", + "nodeType": "YulLiteral", + "src": "3288:4:6", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3271:6:6", + "nodeType": "YulIdentifier", + "src": "3271:6:6" + }, + "nativeSrc": "3271:22:6", + "nodeType": "YulFunctionCall", + "src": "3271:22:6" + }, + "nativeSrc": "3271:22:6", + "nodeType": "YulExpressionStatement", + "src": "3271:22:6" + }, + { + "body": { + "nativeSrc": "3418:1201:6", + "nodeType": "YulBlock", + "src": "3418:1201:6", + "statements": [ + { + "nativeSrc": "3471:26:6", + "nodeType": "YulAssignment", + "src": "3471:26:6", + "value": { + "arguments": [ + { + "name": "dataPtr", + "nativeSrc": "3486:7:6", + "nodeType": "YulIdentifier", + "src": "3486:7:6" + }, + { + "kind": "number", + "nativeSrc": "3495:1:6", + "nodeType": "YulLiteral", + "src": "3495:1:6", + "type": "", + "value": "3" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3482:3:6", + "nodeType": "YulIdentifier", + "src": "3482:3:6" + }, + "nativeSrc": "3482:15:6", + "nodeType": "YulFunctionCall", + "src": "3482:15:6" + }, + "variableNames": [ + { + "name": "dataPtr", + "nativeSrc": "3471:7:6", + "nodeType": "YulIdentifier", + "src": "3471:7:6" + } + ] + }, + { + "nativeSrc": "3514:27:6", + "nodeType": "YulVariableDeclaration", + "src": "3514:27:6", + "value": { + "arguments": [ + { + "name": "dataPtr", + "nativeSrc": "3533:7:6", + "nodeType": "YulIdentifier", + "src": "3533:7:6" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "3527:5:6", + "nodeType": "YulIdentifier", + "src": "3527:5:6" + }, + "nativeSrc": "3527:14:6", + "nodeType": "YulFunctionCall", + "src": "3527:14:6" + }, + "variables": [ + { + "name": "input", + "nativeSrc": "3518:5:6", + "nodeType": "YulTypedName", + "src": "3518:5:6", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "resultPtr", + "nativeSrc": "4069:9:6", + "nodeType": "YulIdentifier", + "src": "4069:9:6" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "tablePtr", + "nativeSrc": "4090:8:6", + "nodeType": "YulIdentifier", + "src": "4090:8:6" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4108:2:6", + "nodeType": "YulLiteral", + "src": "4108:2:6", + "type": "", + "value": "18" + }, + { + "name": "input", + "nativeSrc": "4112:5:6", + "nodeType": "YulIdentifier", + "src": "4112:5:6" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "4104:3:6", + "nodeType": "YulIdentifier", + "src": "4104:3:6" + }, + "nativeSrc": "4104:14:6", + "nodeType": "YulFunctionCall", + "src": "4104:14:6" + }, + { + "kind": "number", + "nativeSrc": "4120:4:6", + "nodeType": "YulLiteral", + "src": "4120:4:6", + "type": "", + "value": "0x3F" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "4100:3:6", + "nodeType": "YulIdentifier", + "src": "4100:3:6" + }, + "nativeSrc": "4100:25:6", + "nodeType": "YulFunctionCall", + "src": "4100:25:6" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4086:3:6", + "nodeType": "YulIdentifier", + "src": "4086:3:6" + }, + "nativeSrc": "4086:40:6", + "nodeType": "YulFunctionCall", + "src": "4086:40:6" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "4080:5:6", + "nodeType": "YulIdentifier", + "src": "4080:5:6" + }, + "nativeSrc": "4080:47:6", + "nodeType": "YulFunctionCall", + "src": "4080:47:6" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "4061:7:6", + "nodeType": "YulIdentifier", + "src": "4061:7:6" + }, + "nativeSrc": "4061:67:6", + "nodeType": "YulFunctionCall", + "src": "4061:67:6" + }, + "nativeSrc": "4061:67:6", + "nodeType": "YulExpressionStatement", + "src": "4061:67:6" + }, + { + "nativeSrc": "4145:30:6", + "nodeType": "YulAssignment", + "src": "4145:30:6", + "value": { + "arguments": [ + { + "name": "resultPtr", + "nativeSrc": "4162:9:6", + "nodeType": "YulIdentifier", + "src": "4162:9:6" + }, + { + "kind": "number", + "nativeSrc": "4173:1:6", + "nodeType": "YulLiteral", + "src": "4173:1:6", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4158:3:6", + "nodeType": "YulIdentifier", + "src": "4158:3:6" + }, + "nativeSrc": "4158:17:6", + "nodeType": "YulFunctionCall", + "src": "4158:17:6" + }, + "variableNames": [ + { + "name": "resultPtr", + "nativeSrc": "4145:9:6", + "nodeType": "YulIdentifier", + "src": "4145:9:6" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "resultPtr", + "nativeSrc": "4212:9:6", + "nodeType": "YulIdentifier", + "src": "4212:9:6" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "tablePtr", + "nativeSrc": "4233:8:6", + "nodeType": "YulIdentifier", + "src": "4233:8:6" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4251:2:6", + "nodeType": "YulLiteral", + "src": "4251:2:6", + "type": "", + "value": "12" + }, + { + "name": "input", + "nativeSrc": "4255:5:6", + "nodeType": "YulIdentifier", + "src": "4255:5:6" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "4247:3:6", + "nodeType": "YulIdentifier", + "src": "4247:3:6" + }, + "nativeSrc": "4247:14:6", + "nodeType": "YulFunctionCall", + "src": "4247:14:6" + }, + { + "kind": "number", + "nativeSrc": "4263:4:6", + "nodeType": "YulLiteral", + "src": "4263:4:6", + "type": "", + "value": "0x3F" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "4243:3:6", + "nodeType": "YulIdentifier", + "src": "4243:3:6" + }, + "nativeSrc": "4243:25:6", + "nodeType": "YulFunctionCall", + "src": "4243:25:6" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4229:3:6", + "nodeType": "YulIdentifier", + "src": "4229:3:6" + }, + "nativeSrc": "4229:40:6", + "nodeType": "YulFunctionCall", + "src": "4229:40:6" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "4223:5:6", + "nodeType": "YulIdentifier", + "src": "4223:5:6" + }, + "nativeSrc": "4223:47:6", + "nodeType": "YulFunctionCall", + "src": "4223:47:6" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "4204:7:6", + "nodeType": "YulIdentifier", + "src": "4204:7:6" + }, + "nativeSrc": "4204:67:6", + "nodeType": "YulFunctionCall", + "src": "4204:67:6" + }, + "nativeSrc": "4204:67:6", + "nodeType": "YulExpressionStatement", + "src": "4204:67:6" + }, + { + "nativeSrc": "4288:30:6", + "nodeType": "YulAssignment", + "src": "4288:30:6", + "value": { + "arguments": [ + { + "name": "resultPtr", + "nativeSrc": "4305:9:6", + "nodeType": "YulIdentifier", + "src": "4305:9:6" + }, + { + "kind": "number", + "nativeSrc": "4316:1:6", + "nodeType": "YulLiteral", + "src": "4316:1:6", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4301:3:6", + "nodeType": "YulIdentifier", + "src": "4301:3:6" + }, + "nativeSrc": "4301:17:6", + "nodeType": "YulFunctionCall", + "src": "4301:17:6" + }, + "variableNames": [ + { + "name": "resultPtr", + "nativeSrc": "4288:9:6", + "nodeType": "YulIdentifier", + "src": "4288:9:6" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "resultPtr", + "nativeSrc": "4355:9:6", + "nodeType": "YulIdentifier", + "src": "4355:9:6" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "tablePtr", + "nativeSrc": "4376:8:6", + "nodeType": "YulIdentifier", + "src": "4376:8:6" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4394:1:6", + "nodeType": "YulLiteral", + "src": "4394:1:6", + "type": "", + "value": "6" + }, + { + "name": "input", + "nativeSrc": "4397:5:6", + "nodeType": "YulIdentifier", + "src": "4397:5:6" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "4390:3:6", + "nodeType": "YulIdentifier", + "src": "4390:3:6" + }, + "nativeSrc": "4390:13:6", + "nodeType": "YulFunctionCall", + "src": "4390:13:6" + }, + { + "kind": "number", + "nativeSrc": "4405:4:6", + "nodeType": "YulLiteral", + "src": "4405:4:6", + "type": "", + "value": "0x3F" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "4386:3:6", + "nodeType": "YulIdentifier", + "src": "4386:3:6" + }, + "nativeSrc": "4386:24:6", + "nodeType": "YulFunctionCall", + "src": "4386:24:6" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4372:3:6", + "nodeType": "YulIdentifier", + "src": "4372:3:6" + }, + "nativeSrc": "4372:39:6", + "nodeType": "YulFunctionCall", + "src": "4372:39:6" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "4366:5:6", + "nodeType": "YulIdentifier", + "src": "4366:5:6" + }, + "nativeSrc": "4366:46:6", + "nodeType": "YulFunctionCall", + "src": "4366:46:6" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "4347:7:6", + "nodeType": "YulIdentifier", + "src": "4347:7:6" + }, + "nativeSrc": "4347:66:6", + "nodeType": "YulFunctionCall", + "src": "4347:66:6" + }, + "nativeSrc": "4347:66:6", + "nodeType": "YulExpressionStatement", + "src": "4347:66:6" + }, + { + "nativeSrc": "4430:30:6", + "nodeType": "YulAssignment", + "src": "4430:30:6", + "value": { + "arguments": [ + { + "name": "resultPtr", + "nativeSrc": "4447:9:6", + "nodeType": "YulIdentifier", + "src": "4447:9:6" + }, + { + "kind": "number", + "nativeSrc": "4458:1:6", + "nodeType": "YulLiteral", + "src": "4458:1:6", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4443:3:6", + "nodeType": "YulIdentifier", + "src": "4443:3:6" + }, + "nativeSrc": "4443:17:6", + "nodeType": "YulFunctionCall", + "src": "4443:17:6" + }, + "variableNames": [ + { + "name": "resultPtr", + "nativeSrc": "4430:9:6", + "nodeType": "YulIdentifier", + "src": "4430:9:6" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "resultPtr", + "nativeSrc": "4497:9:6", + "nodeType": "YulIdentifier", + "src": "4497:9:6" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "tablePtr", + "nativeSrc": "4518:8:6", + "nodeType": "YulIdentifier", + "src": "4518:8:6" + }, + { + "arguments": [ + { + "name": "input", + "nativeSrc": "4532:5:6", + "nodeType": "YulIdentifier", + "src": "4532:5:6" + }, + { + "kind": "number", + "nativeSrc": "4539:4:6", + "nodeType": "YulLiteral", + "src": "4539:4:6", + "type": "", + "value": "0x3F" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "4528:3:6", + "nodeType": "YulIdentifier", + "src": "4528:3:6" + }, + "nativeSrc": "4528:16:6", + "nodeType": "YulFunctionCall", + "src": "4528:16:6" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4514:3:6", + "nodeType": "YulIdentifier", + "src": "4514:3:6" + }, + "nativeSrc": "4514:31:6", + "nodeType": "YulFunctionCall", + "src": "4514:31:6" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "4508:5:6", + "nodeType": "YulIdentifier", + "src": "4508:5:6" + }, + "nativeSrc": "4508:38:6", + "nodeType": "YulFunctionCall", + "src": "4508:38:6" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "4489:7:6", + "nodeType": "YulIdentifier", + "src": "4489:7:6" + }, + "nativeSrc": "4489:58:6", + "nodeType": "YulFunctionCall", + "src": "4489:58:6" + }, + "nativeSrc": "4489:58:6", + "nodeType": "YulExpressionStatement", + "src": "4489:58:6" + }, + { + "nativeSrc": "4564:30:6", + "nodeType": "YulAssignment", + "src": "4564:30:6", + "value": { + "arguments": [ + { + "name": "resultPtr", + "nativeSrc": "4581:9:6", + "nodeType": "YulIdentifier", + "src": "4581:9:6" + }, + { + "kind": "number", + "nativeSrc": "4592:1:6", + "nodeType": "YulLiteral", + "src": "4592:1:6", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4577:3:6", + "nodeType": "YulIdentifier", + "src": "4577:3:6" + }, + "nativeSrc": "4577:17:6", + "nodeType": "YulFunctionCall", + "src": "4577:17:6" + }, + "variableNames": [ + { + "name": "resultPtr", + "nativeSrc": "4564:9:6", + "nodeType": "YulIdentifier", + "src": "4564:9:6" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "dataPtr", + "nativeSrc": "3384:7:6", + "nodeType": "YulIdentifier", + "src": "3384:7:6" + }, + { + "name": "endPtr", + "nativeSrc": "3393:6:6", + "nodeType": "YulIdentifier", + "src": "3393:6:6" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "3381:2:6", + "nodeType": "YulIdentifier", + "src": "3381:2:6" + }, + "nativeSrc": "3381:19:6", + "nodeType": "YulFunctionCall", + "src": "3381:19:6" + }, + "nativeSrc": "3360:1259:6", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "3401:16:6", + "nodeType": "YulBlock", + "src": "3401:16:6", + "statements": [] + }, + "pre": { + "nativeSrc": "3364:16:6", + "nodeType": "YulBlock", + "src": "3364:16:6", + "statements": [] + }, + "src": "3360:1259:6" + }, + { + "expression": { + "arguments": [ + { + "name": "afterPtr", + "nativeSrc": "4687:8:6", + "nodeType": "YulIdentifier", + "src": "4687:8:6" + }, + { + "name": "afterCache", + "nativeSrc": "4697:10:6", + "nodeType": "YulIdentifier", + "src": "4697:10:6" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4680:6:6", + "nodeType": "YulIdentifier", + "src": "4680:6:6" + }, + "nativeSrc": "4680:28:6", + "nodeType": "YulFunctionCall", + "src": "4680:28:6" + }, + "nativeSrc": "4680:28:6", + "nodeType": "YulExpressionStatement", + "src": "4680:28:6" + }, + { + "body": { + "nativeSrc": "4737:431:6", + "nodeType": "YulBlock", + "src": "4737:431:6", + "statements": [ + { + "cases": [ + { + "body": { + "nativeSrc": "4933:125:6", + "nodeType": "YulBlock", + "src": "4933:125:6", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "resultPtr", + "nativeSrc": "4967:9:6", + "nodeType": "YulIdentifier", + "src": "4967:9:6" + }, + { + "kind": "number", + "nativeSrc": "4978:1:6", + "nodeType": "YulLiteral", + "src": "4978:1:6", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "4963:3:6", + "nodeType": "YulIdentifier", + "src": "4963:3:6" + }, + "nativeSrc": "4963:17:6", + "nodeType": "YulFunctionCall", + "src": "4963:17:6" + }, + { + "kind": "number", + "nativeSrc": "4982:4:6", + "nodeType": "YulLiteral", + "src": "4982:4:6", + "type": "", + "value": "0x3d" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "4955:7:6", + "nodeType": "YulIdentifier", + "src": "4955:7:6" + }, + "nativeSrc": "4955:32:6", + "nodeType": "YulFunctionCall", + "src": "4955:32:6" + }, + "nativeSrc": "4955:32:6", + "nodeType": "YulExpressionStatement", + "src": "4955:32:6" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "resultPtr", + "nativeSrc": "5020:9:6", + "nodeType": "YulIdentifier", + "src": "5020:9:6" + }, + { + "kind": "number", + "nativeSrc": "5031:1:6", + "nodeType": "YulLiteral", + "src": "5031:1:6", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "5016:3:6", + "nodeType": "YulIdentifier", + "src": "5016:3:6" + }, + "nativeSrc": "5016:17:6", + "nodeType": "YulFunctionCall", + "src": "5016:17:6" + }, + { + "kind": "number", + "nativeSrc": "5035:4:6", + "nodeType": "YulLiteral", + "src": "5035:4:6", + "type": "", + "value": "0x3d" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "5008:7:6", + "nodeType": "YulIdentifier", + "src": "5008:7:6" + }, + "nativeSrc": "5008:32:6", + "nodeType": "YulFunctionCall", + "src": "5008:32:6" + }, + "nativeSrc": "5008:32:6", + "nodeType": "YulExpressionStatement", + "src": "5008:32:6" + } + ] + }, + "nativeSrc": "4926:132:6", + "nodeType": "YulCase", + "src": "4926:132:6", + "value": { + "kind": "number", + "nativeSrc": "4931:1:6", + "nodeType": "YulLiteral", + "src": "4931:1:6", + "type": "", + "value": "1" + } + }, + { + "body": { + "nativeSrc": "5082:72:6", + "nodeType": "YulBlock", + "src": "5082:72:6", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "resultPtr", + "nativeSrc": "5116:9:6", + "nodeType": "YulIdentifier", + "src": "5116:9:6" + }, + { + "kind": "number", + "nativeSrc": "5127:1:6", + "nodeType": "YulLiteral", + "src": "5127:1:6", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "5112:3:6", + "nodeType": "YulIdentifier", + "src": "5112:3:6" + }, + "nativeSrc": "5112:17:6", + "nodeType": "YulFunctionCall", + "src": "5112:17:6" + }, + { + "kind": "number", + "nativeSrc": "5131:4:6", + "nodeType": "YulLiteral", + "src": "5131:4:6", + "type": "", + "value": "0x3d" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "5104:7:6", + "nodeType": "YulIdentifier", + "src": "5104:7:6" + }, + "nativeSrc": "5104:32:6", + "nodeType": "YulFunctionCall", + "src": "5104:32:6" + }, + "nativeSrc": "5104:32:6", + "nodeType": "YulExpressionStatement", + "src": "5104:32:6" + } + ] + }, + "nativeSrc": "5075:79:6", + "nodeType": "YulCase", + "src": "5075:79:6", + "value": { + "kind": "number", + "nativeSrc": "5080:1:6", + "nodeType": "YulLiteral", + "src": "5080:1:6", + "type": "", + "value": "2" + } + } + ], + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "data", + "nativeSrc": "4900:4:6", + "nodeType": "YulIdentifier", + "src": "4900:4:6" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "4894:5:6", + "nodeType": "YulIdentifier", + "src": "4894:5:6" + }, + "nativeSrc": "4894:11:6", + "nodeType": "YulFunctionCall", + "src": "4894:11:6" + }, + { + "kind": "number", + "nativeSrc": "4907:1:6", + "nodeType": "YulLiteral", + "src": "4907:1:6", + "type": "", + "value": "3" + } + ], + "functionName": { + "name": "mod", + "nativeSrc": "4890:3:6", + "nodeType": "YulIdentifier", + "src": "4890:3:6" + }, + "nativeSrc": "4890:19:6", + "nodeType": "YulFunctionCall", + "src": "4890:19:6" + }, + "nativeSrc": "4883:271:6", + "nodeType": "YulSwitch", + "src": "4883:271:6" + } + ] + }, + "condition": { + "name": "withPadding", + "nativeSrc": "4725:11:6", + "nodeType": "YulIdentifier", + "src": "4725:11:6" + }, + "nativeSrc": "4722:446:6", + "nodeType": "YulIf", + "src": "4722:446:6" + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2352, + "isOffset": false, + "isSlot": false, + "src": "2912:4:6", + "valueSize": 1 + }, + { + "declaration": 2352, + "isOffset": false, + "isSlot": false, + "src": "2947:4:6", + "valueSize": 1 + }, + { + "declaration": 2352, + "isOffset": false, + "isSlot": false, + "src": "2959:4:6", + "valueSize": 1 + }, + { + "declaration": 2352, + "isOffset": false, + "isSlot": false, + "src": "4900:4:6", + "valueSize": 1 + }, + { + "declaration": 2393, + "isOffset": false, + "isSlot": false, + "src": "2871:6:6", + "valueSize": 1 + }, + { + "declaration": 2354, + "isOffset": false, + "isSlot": false, + "src": "2771:5:6", + "valueSize": 1 + }, + { + "declaration": 2356, + "isOffset": false, + "isSlot": false, + "src": "4725:11:6", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 2399, + "nodeType": "InlineAssembly", + "src": "2641:2537:6" + }, + { + "expression": { + "id": 2400, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2393, + "src": "5195:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 2360, + "id": 2401, + "nodeType": "Return", + "src": "5188:13:6" + } + ] + }, + "documentation": { + "id": 2350, + "nodeType": "StructuredDocumentation", + "src": "1123:58:6", + "text": " @dev Internal table-agnostic conversion" + }, + "id": 2403, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_encode", + "nameLocation": "1195:7:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2357, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2352, + "mutability": "mutable", + "name": "data", + "nameLocation": "1216:4:6", + "nodeType": "VariableDeclaration", + "scope": 2403, + "src": "1203:17:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2351, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1203:5:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2354, + "mutability": "mutable", + "name": "table", + "nameLocation": "1236:5:6", + "nodeType": "VariableDeclaration", + "scope": 2403, + "src": "1222:19:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2353, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1222:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2356, + "mutability": "mutable", + "name": "withPadding", + "nameLocation": "1248:11:6", + "nodeType": "VariableDeclaration", + "scope": 2403, + "src": "1243:16:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2355, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1243:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1202:58:6" + }, + "returnParameters": { + "id": 2360, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2359, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2403, + "src": "1283:13:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2358, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1283:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "1282:15:6" + }, + "scope": 2404, + "src": "1186:4022:6", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + } + ], + "scope": 2405, + "src": "202:5008:6", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "100:5111:6" + }, + "id": 6 + }, + "solady/accounts/Receiver.sol": { + "ast": { + "absolutePath": "solady/accounts/Receiver.sol", + "exportedSymbols": { + "Receiver": [ + 2459 + ] + }, + "id": 2460, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2406, + "literals": [ + "solidity", + "^", + "0.8", + ".4" + ], + "nodeType": "PragmaDirective", + "src": "32:23:7" + }, + { + "abstract": true, + "baseContracts": [], + "canonicalName": "Receiver", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 2407, + "nodeType": "StructuredDocumentation", + "src": "57:374:7", + "text": "@notice Receiver mixin for ETH and safe-transferred ERC721 and ERC1155 tokens.\n @author Solady (https://github.com/Vectorized/solady/blob/main/src/accounts/Receiver.sol)\n @dev Note:\n - Handles all ERC721 and ERC1155 token safety callbacks.\n - Collapses function table gas overhead and code size.\n - Utilizes fallback so unknown calldata will pass on." + }, + "fullyImplemented": true, + "id": 2459, + "linearizedBaseContracts": [ + 2459 + ], + "name": "Receiver", + "nameLocation": "449:8:7", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 2408, + "nodeType": "StructuredDocumentation", + "src": "747:49:7", + "text": "@dev The function selector is not recognized." + }, + "errorSelector": "3c10b94e", + "id": 2410, + "name": "FnSelectorNotRecognized", + "nameLocation": "807:23:7", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 2409, + "nodeType": "ParameterList", + "parameters": [], + "src": "830:2:7" + }, + "src": "801:32:7" + }, + { + "body": { + "id": 2414, + "nodeType": "Block", + "src": "1189:2:7", + "statements": [] + }, + "documentation": { + "id": 2411, + "nodeType": "StructuredDocumentation", + "src": "1122:27:7", + "text": "@dev For receiving ETH." + }, + "id": 2415, + "implemented": true, + "kind": "receive", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2412, + "nodeType": "ParameterList", + "parameters": [], + "src": "1161:2:7" + }, + "returnParameters": { + "id": 2413, + "nodeType": "ParameterList", + "parameters": [], + "src": "1189:0:7" + }, + "scope": 2459, + "src": "1154:37:7", + "stateMutability": "payable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 2422, + "nodeType": "Block", + "src": "1319:179:7", + "statements": [ + { + "AST": { + "nativeSrc": "1381:111:7", + "nodeType": "YulBlock", + "src": "1381:111:7", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1402:4:7", + "nodeType": "YulLiteral", + "src": "1402:4:7", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "1408:10:7", + "nodeType": "YulLiteral", + "src": "1408:10:7", + "type": "", + "value": "0x3c10b94e" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1395:6:7", + "nodeType": "YulIdentifier", + "src": "1395:6:7" + }, + "nativeSrc": "1395:24:7", + "nodeType": "YulFunctionCall", + "src": "1395:24:7" + }, + "nativeSrc": "1395:24:7", + "nodeType": "YulExpressionStatement", + "src": "1395:24:7" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1471:4:7", + "nodeType": "YulLiteral", + "src": "1471:4:7", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "1477:4:7", + "nodeType": "YulLiteral", + "src": "1477:4:7", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1464:6:7", + "nodeType": "YulIdentifier", + "src": "1464:6:7" + }, + "nativeSrc": "1464:18:7", + "nodeType": "YulFunctionCall", + "src": "1464:18:7" + }, + "nativeSrc": "1464:18:7", + "nodeType": "YulExpressionStatement", + "src": "1464:18:7" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [], + "id": 2421, + "nodeType": "InlineAssembly", + "src": "1372:120:7" + } + ] + }, + "documentation": { + "id": 2416, + "nodeType": "StructuredDocumentation", + "src": "1197:64:7", + "text": "@dev Fallback function with the `receiverFallback` modifier." + }, + "id": 2423, + "implemented": true, + "kind": "fallback", + "modifiers": [ + { + "id": 2419, + "kind": "modifierInvocation", + "modifierName": { + "id": 2418, + "name": "receiverFallback", + "nameLocations": [ + "1302:16:7" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2439, + "src": "1302:16:7" + }, + "nodeType": "ModifierInvocation", + "src": "1302:16:7" + } + ], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2417, + "nodeType": "ParameterList", + "parameters": [], + "src": "1274:2:7" + }, + "returnParameters": { + "id": 2420, + "nodeType": "ParameterList", + "parameters": [], + "src": "1319:0:7" + }, + "scope": 2459, + "src": "1266:232:7", + "stateMutability": "payable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 2438, + "nodeType": "Block", + "src": "1615:870:7", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2426, + "name": "_beforeReceiverFallbackBody", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2453, + "src": "1625:27:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 2427, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1625:29:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2428, + "nodeType": "ExpressionStatement", + "src": "1625:29:7" + }, + { + "condition": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2429, + "name": "_useReceiverFallbackBody", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2448, + "src": "1668:24:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 2430, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1668:26:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2433, + "nodeType": "IfStatement", + "src": "1664:766:7", + "trueBody": { + "id": 2432, + "nodeType": "Block", + "src": "1696:734:7", + "statements": [ + { + "AST": { + "nativeSrc": "1766:654:7", + "nodeType": "YulBlock", + "src": "1766:654:7", + "statements": [ + { + "nativeSrc": "1784:34:7", + "nodeType": "YulVariableDeclaration", + "src": "1784:34:7", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1797:3:7", + "nodeType": "YulLiteral", + "src": "1797:3:7", + "type": "", + "value": "224" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1815:1:7", + "nodeType": "YulLiteral", + "src": "1815:1:7", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "1802:12:7", + "nodeType": "YulIdentifier", + "src": "1802:12:7" + }, + "nativeSrc": "1802:15:7", + "nodeType": "YulFunctionCall", + "src": "1802:15:7" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "1793:3:7", + "nodeType": "YulIdentifier", + "src": "1793:3:7" + }, + "nativeSrc": "1793:25:7", + "nodeType": "YulFunctionCall", + "src": "1793:25:7" + }, + "variables": [ + { + "name": "s", + "nativeSrc": "1788:1:7", + "nodeType": "YulTypedName", + "src": "1788:1:7", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "2175:231:7", + "nodeType": "YulBlock", + "src": "2175:231:7", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2300:4:7", + "nodeType": "YulLiteral", + "src": "2300:4:7", + "type": "", + "value": "0x20" + }, + { + "name": "s", + "nativeSrc": "2306:1:7", + "nodeType": "YulIdentifier", + "src": "2306:1:7" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2293:6:7", + "nodeType": "YulIdentifier", + "src": "2293:6:7" + }, + "nativeSrc": "2293:15:7", + "nodeType": "YulFunctionCall", + "src": "2293:15:7" + }, + "nativeSrc": "2293:15:7", + "nodeType": "YulExpressionStatement", + "src": "2293:15:7" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2356:4:7", + "nodeType": "YulLiteral", + "src": "2356:4:7", + "type": "", + "value": "0x3c" + }, + { + "kind": "number", + "nativeSrc": "2362:4:7", + "nodeType": "YulLiteral", + "src": "2362:4:7", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "return", + "nativeSrc": "2349:6:7", + "nodeType": "YulIdentifier", + "src": "2349:6:7" + }, + "nativeSrc": "2349:18:7", + "nodeType": "YulFunctionCall", + "src": "2349:18:7" + }, + "nativeSrc": "2349:18:7", + "nodeType": "YulExpressionStatement", + "src": "2349:18:7" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "s", + "nativeSrc": "2117:1:7", + "nodeType": "YulIdentifier", + "src": "2117:1:7" + }, + { + "kind": "number", + "nativeSrc": "2120:10:7", + "nodeType": "YulLiteral", + "src": "2120:10:7", + "type": "", + "value": "0x150b7a02" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "2114:2:7", + "nodeType": "YulIdentifier", + "src": "2114:2:7" + }, + "nativeSrc": "2114:17:7", + "nodeType": "YulFunctionCall", + "src": "2114:17:7" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "s", + "nativeSrc": "2139:1:7", + "nodeType": "YulIdentifier", + "src": "2139:1:7" + }, + { + "kind": "number", + "nativeSrc": "2142:10:7", + "nodeType": "YulLiteral", + "src": "2142:10:7", + "type": "", + "value": "0xf23a6e61" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "2136:2:7", + "nodeType": "YulIdentifier", + "src": "2136:2:7" + }, + "nativeSrc": "2136:17:7", + "nodeType": "YulFunctionCall", + "src": "2136:17:7" + }, + { + "arguments": [ + { + "name": "s", + "nativeSrc": "2158:1:7", + "nodeType": "YulIdentifier", + "src": "2158:1:7" + }, + { + "kind": "number", + "nativeSrc": "2161:10:7", + "nodeType": "YulLiteral", + "src": "2161:10:7", + "type": "", + "value": "0xbc197c81" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "2155:2:7", + "nodeType": "YulIdentifier", + "src": "2155:2:7" + }, + "nativeSrc": "2155:17:7", + "nodeType": "YulFunctionCall", + "src": "2155:17:7" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "2133:2:7", + "nodeType": "YulIdentifier", + "src": "2133:2:7" + }, + "nativeSrc": "2133:40:7", + "nodeType": "YulFunctionCall", + "src": "2133:40:7" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "2111:2:7", + "nodeType": "YulIdentifier", + "src": "2111:2:7" + }, + "nativeSrc": "2111:63:7", + "nodeType": "YulFunctionCall", + "src": "2111:63:7" + }, + "nativeSrc": "2108:298:7", + "nodeType": "YulIf", + "src": "2108:298:7" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [], + "id": 2431, + "nodeType": "InlineAssembly", + "src": "1757:663:7" + } + ] + } + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2434, + "name": "_afterReceiverFallbackBody", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2458, + "src": "2439:26:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 2435, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2439:28:7", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2436, + "nodeType": "ExpressionStatement", + "src": "2439:28:7" + }, + { + "id": 2437, + "nodeType": "PlaceholderStatement", + "src": "2477:1:7" + } + ] + }, + "documentation": { + "id": 2424, + "nodeType": "StructuredDocumentation", + "src": "1504:70:7", + "text": "@dev Modifier for the fallback function to handle token callbacks." + }, + "id": 2439, + "name": "receiverFallback", + "nameLocation": "1588:16:7", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 2425, + "nodeType": "ParameterList", + "parameters": [], + "src": "1604:2:7" + }, + "src": "1579:906:7", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2447, + "nodeType": "Block", + "src": "2645:28:7", + "statements": [ + { + "expression": { + "hexValue": "74727565", + "id": 2445, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2662:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 2444, + "id": 2446, + "nodeType": "Return", + "src": "2655:11:7" + } + ] + }, + "documentation": { + "id": 2440, + "nodeType": "StructuredDocumentation", + "src": "2491:76:7", + "text": "@dev Whether we want to use the body of the `receiverFallback` modifier." + }, + "id": 2448, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_useReceiverFallbackBody", + "nameLocation": "2581:24:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2441, + "nodeType": "ParameterList", + "parameters": [], + "src": "2605:2:7" + }, + "returnParameters": { + "id": 2444, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2443, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2448, + "src": "2639:4:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2442, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2639:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2638:6:7" + }, + "scope": 2459, + "src": "2572:101:7", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2452, + "nodeType": "Block", + "src": "2807:2:7", + "statements": [] + }, + "documentation": { + "id": 2449, + "nodeType": "StructuredDocumentation", + "src": "2679:67:7", + "text": "@dev Called before the body of the `receiverFallback` modifier." + }, + "id": 2453, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_beforeReceiverFallbackBody", + "nameLocation": "2760:27:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2450, + "nodeType": "ParameterList", + "parameters": [], + "src": "2787:2:7" + }, + "returnParameters": { + "id": 2451, + "nodeType": "ParameterList", + "parameters": [], + "src": "2807:0:7" + }, + "scope": 2459, + "src": "2751:58:7", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2457, + "nodeType": "Block", + "src": "2941:2:7", + "statements": [] + }, + "documentation": { + "id": 2454, + "nodeType": "StructuredDocumentation", + "src": "2815:66:7", + "text": "@dev Called after the body of the `receiverFallback` modifier." + }, + "id": 2458, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_afterReceiverFallbackBody", + "nameLocation": "2895:26:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2455, + "nodeType": "ParameterList", + "parameters": [], + "src": "2921:2:7" + }, + "returnParameters": { + "id": 2456, + "nodeType": "ParameterList", + "parameters": [], + "src": "2941:0:7" + }, + "scope": 2459, + "src": "2886:57:7", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 2460, + "src": "431:2514:7", + "usedErrors": [ + 2410 + ], + "usedEvents": [] + } + ], + "src": "32:2914:7" + }, + "id": 7 + }, + "solady/utils/CallContextChecker.sol": { + "ast": { + "absolutePath": "solady/utils/CallContextChecker.sol", + "exportedSymbols": { + "CallContextChecker": [ + 2583 + ] + }, + "id": 2584, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2461, + "literals": [ + "solidity", + "^", + "0.8", + ".4" + ], + "nodeType": "PragmaDirective", + "src": "32:23:8" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "CallContextChecker", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 2462, + "nodeType": "StructuredDocumentation", + "src": "57:141:8", + "text": "@notice Call context checker mixin.\n @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/CallContextChecker.sol)" + }, + "fullyImplemented": true, + "id": 2583, + "linearizedBaseContracts": [ + 2583 + ], + "name": "CallContextChecker", + "nameLocation": "207:18:8", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 2463, + "nodeType": "StructuredDocumentation", + "src": "515:55:8", + "text": "@dev The call is from an unauthorized call context." + }, + "errorSelector": "9f03a026", + "id": 2465, + "name": "UnauthorizedCallContext", + "nameLocation": "581:23:8", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 2464, + "nodeType": "ParameterList", + "parameters": [], + "src": "604:2:8" + }, + "src": "575:32:8" + }, + { + "constant": false, + "documentation": { + "id": 2466, + "nodeType": "StructuredDocumentation", + "src": "896:319:8", + "text": "@dev For checking if the context is a delegate call.\n Note: To enable use cases with an immutable default implementation in the bytecode,\n (see: ERC6551Proxy), we don't require that the proxy address must match the\n value stored in the implementation slot, which may not be initialized." + }, + "id": 2478, + "mutability": "immutable", + "name": "__self", + "nameLocation": "1246:6:8", + "nodeType": "VariableDeclaration", + "scope": 2583, + "src": "1220:66:8", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2467, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1220:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 2474, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "1279:4:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CallContextChecker_$2583", + "typeString": "contract CallContextChecker" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_CallContextChecker_$2583", + "typeString": "contract CallContextChecker" + } + ], + "id": 2473, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1271:7:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2472, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1271:7:8", + "typeDescriptions": {} + } + }, + "id": 2475, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1271:13:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2471, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1263:7:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 2470, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "1263:7:8", + "typeDescriptions": {} + } + }, + "id": 2476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1263:22:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 2469, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1255:7:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2468, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1255:7:8", + "typeDescriptions": {} + } + }, + "id": 2477, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1255:31:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "private" + }, + { + "body": { + "id": 2485, + "nodeType": "Block", + "src": "1917:385:8", + "statements": [ + { + "AST": { + "nativeSrc": "1979:317:8", + "nodeType": "YulBlock", + "src": "1979:317:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "address", + "nativeSrc": "2005:7:8", + "nodeType": "YulIdentifier", + "src": "2005:7:8" + }, + "nativeSrc": "2005:9:8", + "nodeType": "YulFunctionCall", + "src": "2005:9:8" + }, + { + "kind": "number", + "nativeSrc": "2016:4:8", + "nodeType": "YulLiteral", + "src": "2016:4:8", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "2022:4:8", + "nodeType": "YulLiteral", + "src": "2022:4:8", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "2028:4:8", + "nodeType": "YulLiteral", + "src": "2028:4:8", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "extcodecopy", + "nativeSrc": "1993:11:8", + "nodeType": "YulIdentifier", + "src": "1993:11:8" + }, + "nativeSrc": "1993:40:8", + "nodeType": "YulFunctionCall", + "src": "1993:40:8" + }, + "nativeSrc": "1993:40:8", + "nodeType": "YulExpressionStatement", + "src": "1993:40:8" + }, + { + "nativeSrc": "2243:43:8", + "nodeType": "YulAssignment", + "src": "2243:43:8", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2256:6:8", + "nodeType": "YulLiteral", + "src": "2256:6:8", + "type": "", + "value": "0xef01" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2268:3:8", + "nodeType": "YulLiteral", + "src": "2268:3:8", + "type": "", + "value": "240" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2279:4:8", + "nodeType": "YulLiteral", + "src": "2279:4:8", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2273:5:8", + "nodeType": "YulIdentifier", + "src": "2273:5:8" + }, + "nativeSrc": "2273:11:8", + "nodeType": "YulFunctionCall", + "src": "2273:11:8" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "2264:3:8", + "nodeType": "YulIdentifier", + "src": "2264:3:8" + }, + "nativeSrc": "2264:21:8", + "nodeType": "YulFunctionCall", + "src": "2264:21:8" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "2253:2:8", + "nodeType": "YulIdentifier", + "src": "2253:2:8" + }, + "nativeSrc": "2253:33:8", + "nodeType": "YulFunctionCall", + "src": "2253:33:8" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "2243:6:8", + "nodeType": "YulIdentifier", + "src": "2243:6:8" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2482, + "isOffset": false, + "isSlot": false, + "src": "2243:6:8", + "valueSize": 1 + } + ], + "id": 2484, + "nodeType": "InlineAssembly", + "src": "1970:326:8" + } + ] + }, + "documentation": { + "id": 2479, + "nodeType": "StructuredDocumentation", + "src": "1721:116:8", + "text": "@dev Returns whether the current call context is on a EIP7702 authority\n (i.e. externally owned account)." + }, + "id": 2486, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_onEIP7702Authority", + "nameLocation": "1851:19:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2480, + "nodeType": "ParameterList", + "parameters": [], + "src": "1870:2:8" + }, + "returnParameters": { + "id": 2483, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2482, + "mutability": "mutable", + "name": "result", + "nameLocation": "1909:6:8", + "nodeType": "VariableDeclaration", + "scope": 2486, + "src": "1904:11:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2481, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1904:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1903:13:8" + }, + "scope": 2583, + "src": "1842:460:8", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2500, + "nodeType": "Block", + "src": "2437:48:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 2496, + "name": "__self", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2478, + "src": "2470:6:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2495, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2462:7:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 2494, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "2462:7:8", + "typeDescriptions": {} + } + }, + "id": 2497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2462:15:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 2493, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2454:7:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2492, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2454:7:8", + "typeDescriptions": {} + } + }, + "id": 2498, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2454:24:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2491, + "id": 2499, + "nodeType": "Return", + "src": "2447:31:8" + } + ] + }, + "documentation": { + "id": 2487, + "nodeType": "StructuredDocumentation", + "src": "2308:53:8", + "text": "@dev Returns the implementation of this contract." + }, + "id": 2501, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_selfImplementation", + "nameLocation": "2375:19:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2488, + "nodeType": "ParameterList", + "parameters": [], + "src": "2394:2:8" + }, + "returnParameters": { + "id": 2491, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2490, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2501, + "src": "2428:7:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2489, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2428:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2427:9:8" + }, + "scope": 2583, + "src": "2366:119:8", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2517, + "nodeType": "Block", + "src": "2644:56:8", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2515, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2507, + "name": "__self", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2478, + "src": "2661:6:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 2512, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "2687:4:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CallContextChecker_$2583", + "typeString": "contract CallContextChecker" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_CallContextChecker_$2583", + "typeString": "contract CallContextChecker" + } + ], + "id": 2511, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2679:7:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2510, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2679:7:8", + "typeDescriptions": {} + } + }, + "id": 2513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2679:13:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2509, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2671:7:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 2508, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "2671:7:8", + "typeDescriptions": {} + } + }, + "id": 2514, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2671:22:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "src": "2661:32:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2506, + "id": 2516, + "nodeType": "Return", + "src": "2654:39:8" + } + ] + }, + "documentation": { + "id": 2502, + "nodeType": "StructuredDocumentation", + "src": "2491:82:8", + "text": "@dev Returns whether the current call context is on the implementation itself." + }, + "id": 2518, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_onImplementation", + "nameLocation": "2587:17:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2503, + "nodeType": "ParameterList", + "parameters": [], + "src": "2604:2:8" + }, + "returnParameters": { + "id": 2506, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2505, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2518, + "src": "2638:4:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2504, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2638:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2637:6:8" + }, + "scope": 2583, + "src": "2578:122:8", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2529, + "nodeType": "Block", + "src": "2856:77:8", + "statements": [ + { + "condition": { + "id": 2524, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2870:22:8", + "subExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2522, + "name": "_onEIP7702Authority", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2486, + "src": "2871:19:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 2523, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2871:21:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2528, + "nodeType": "IfStatement", + "src": "2866:60:8", + "trueBody": { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2525, + "name": "_revertUnauthorizedCallContext", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2582, + "src": "2894:30:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2526, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2894:32:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2527, + "nodeType": "ExpressionStatement", + "src": "2894:32:8" + } + } + ] + }, + "documentation": { + "id": 2519, + "nodeType": "StructuredDocumentation", + "src": "2706:85:8", + "text": "@dev Requires that the current call context is performed via a EIP7702 authority." + }, + "id": 2530, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkOnlyEIP7702Authority", + "nameLocation": "2805:26:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2520, + "nodeType": "ParameterList", + "parameters": [], + "src": "2831:2:8" + }, + "returnParameters": { + "id": 2521, + "nodeType": "ParameterList", + "parameters": [], + "src": "2856:0:8" + }, + "scope": 2583, + "src": "2796:137:8", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2540, + "nodeType": "Block", + "src": "3066:74:8", + "statements": [ + { + "condition": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2534, + "name": "_onImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2518, + "src": "3080:17:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 2535, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3080:19:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2539, + "nodeType": "IfStatement", + "src": "3076:57:8", + "trueBody": { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2536, + "name": "_revertUnauthorizedCallContext", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2582, + "src": "3101:30:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3101:32:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2538, + "nodeType": "ExpressionStatement", + "src": "3101:32:8" + } + } + ] + }, + "documentation": { + "id": 2531, + "nodeType": "StructuredDocumentation", + "src": "2939:73:8", + "text": "@dev Requires that the current call context is performed via a proxy." + }, + "id": 2541, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkOnlyProxy", + "nameLocation": "3026:15:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2532, + "nodeType": "ParameterList", + "parameters": [], + "src": "3041:2:8" + }, + "returnParameters": { + "id": 2533, + "nodeType": "ParameterList", + "parameters": [], + "src": "3066:0:8" + }, + "scope": 2583, + "src": "3017:123:8", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2552, + "nodeType": "Block", + "src": "3330:75:8", + "statements": [ + { + "condition": { + "id": 2547, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "3344:20:8", + "subExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2545, + "name": "_onImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2518, + "src": "3345:17:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 2546, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3345:19:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2551, + "nodeType": "IfStatement", + "src": "3340:58:8", + "trueBody": { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2548, + "name": "_revertUnauthorizedCallContext", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2582, + "src": "3366:30:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2549, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3366:32:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2550, + "nodeType": "ExpressionStatement", + "src": "3366:32:8" + } + } + ] + }, + "documentation": { + "id": 2542, + "nodeType": "StructuredDocumentation", + "src": "3146:127:8", + "text": "@dev Requires that the current call context is NOT performed via a proxy.\n This is the opposite of `checkOnlyProxy`." + }, + "id": 2553, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkNotDelegated", + "nameLocation": "3287:18:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2543, + "nodeType": "ParameterList", + "parameters": [], + "src": "3305:2:8" + }, + "returnParameters": { + "id": 2544, + "nodeType": "ParameterList", + "parameters": [], + "src": "3330:0:8" + }, + "scope": 2583, + "src": "3278:127:8", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2560, + "nodeType": "Block", + "src": "3541:56:8", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2556, + "name": "_checkOnlyEIP7702Authority", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2530, + "src": "3551:26:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$__$", + "typeString": "function () view" + } + }, + "id": 2557, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3551:28:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2558, + "nodeType": "ExpressionStatement", + "src": "3551:28:8" + }, + { + "id": 2559, + "nodeType": "PlaceholderStatement", + "src": "3589:1:8" + } + ] + }, + "documentation": { + "id": 2554, + "nodeType": "StructuredDocumentation", + "src": "3411:85:8", + "text": "@dev Requires that the current call context is performed via a EIP7702 authority." + }, + "id": 2561, + "name": "onlyEIP7702Authority", + "nameLocation": "3510:20:8", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 2555, + "nodeType": "ParameterList", + "parameters": [], + "src": "3530:2:8" + }, + "src": "3501:96:8", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2568, + "nodeType": "Block", + "src": "3710:45:8", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2564, + "name": "_checkOnlyProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2541, + "src": "3720:15:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$__$", + "typeString": "function () view" + } + }, + "id": 2565, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3720:17:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2566, + "nodeType": "ExpressionStatement", + "src": "3720:17:8" + }, + { + "id": 2567, + "nodeType": "PlaceholderStatement", + "src": "3747:1:8" + } + ] + }, + "documentation": { + "id": 2562, + "nodeType": "StructuredDocumentation", + "src": "3603:73:8", + "text": "@dev Requires that the current call context is performed via a proxy." + }, + "id": 2569, + "name": "onlyProxy", + "nameLocation": "3690:9:8", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 2563, + "nodeType": "ParameterList", + "parameters": [], + "src": "3699:2:8" + }, + "src": "3681:74:8", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2576, + "nodeType": "Block", + "src": "3920:48:8", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2572, + "name": "_checkNotDelegated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2553, + "src": "3930:18:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$__$", + "typeString": "function () view" + } + }, + "id": 2573, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3930:20:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2574, + "nodeType": "ExpressionStatement", + "src": "3930:20:8" + }, + { + "id": 2575, + "nodeType": "PlaceholderStatement", + "src": "3960:1:8" + } + ] + }, + "documentation": { + "id": 2570, + "nodeType": "StructuredDocumentation", + "src": "3761:122:8", + "text": "@dev Requires that the current call context is NOT performed via a proxy.\n This is the opposite of `onlyProxy`." + }, + "id": 2577, + "name": "notDelegated", + "nameLocation": "3897:12:8", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 2571, + "nodeType": "ParameterList", + "parameters": [], + "src": "3909:2:8" + }, + "src": "3888:80:8", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2581, + "nodeType": "Block", + "src": "4312:179:8", + "statements": [ + { + "AST": { + "nativeSrc": "4374:111:8", + "nodeType": "YulBlock", + "src": "4374:111:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4395:4:8", + "nodeType": "YulLiteral", + "src": "4395:4:8", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "4401:10:8", + "nodeType": "YulLiteral", + "src": "4401:10:8", + "type": "", + "value": "0x9f03a026" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4388:6:8", + "nodeType": "YulIdentifier", + "src": "4388:6:8" + }, + "nativeSrc": "4388:24:8", + "nodeType": "YulFunctionCall", + "src": "4388:24:8" + }, + "nativeSrc": "4388:24:8", + "nodeType": "YulExpressionStatement", + "src": "4388:24:8" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4464:4:8", + "nodeType": "YulLiteral", + "src": "4464:4:8", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "4470:4:8", + "nodeType": "YulLiteral", + "src": "4470:4:8", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "4457:6:8", + "nodeType": "YulIdentifier", + "src": "4457:6:8" + }, + "nativeSrc": "4457:18:8", + "nodeType": "YulFunctionCall", + "src": "4457:18:8" + }, + "nativeSrc": "4457:18:8", + "nodeType": "YulExpressionStatement", + "src": "4457:18:8" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [], + "id": 2580, + "nodeType": "InlineAssembly", + "src": "4365:120:8" + } + ] + }, + "id": 2582, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_revertUnauthorizedCallContext", + "nameLocation": "4266:30:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2578, + "nodeType": "ParameterList", + "parameters": [], + "src": "4296:2:8" + }, + "returnParameters": { + "id": 2579, + "nodeType": "ParameterList", + "parameters": [], + "src": "4312:0:8" + }, + "scope": 2583, + "src": "4257:234:8", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + } + ], + "scope": 2584, + "src": "198:4295:8", + "usedErrors": [ + 2465 + ], + "usedEvents": [] + } + ], + "src": "32:4462:8" + }, + "id": 8 + }, + "solady/utils/LibBytes.sol": { + "ast": { + "absolutePath": "solady/utils/LibBytes.sol", + "exportedSymbols": { + "LibBytes": [ + 3089 + ] + }, + "id": 3090, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2585, + "literals": [ + "solidity", + "^", + "0.8", + ".4" + ], + "nodeType": "PragmaDirective", + "src": "32:23:9" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "LibBytes", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 2586, + "nodeType": "StructuredDocumentation", + "src": "57:140:9", + "text": "@notice Library for byte related operations.\n @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/LibBytes.sol)" + }, + "fullyImplemented": true, + "id": 3089, + "linearizedBaseContracts": [ + 3089 + ], + "name": "LibBytes", + "nameLocation": "205:8:9", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "LibBytes.BytesStorage", + "documentation": { + "id": 2587, + "nodeType": "StructuredDocumentation", + "src": "503:235:9", + "text": "@dev Goated bytes storage struct that totally MOGs, no cap, fr.\n Uses less gas and bytecode than Solidity's native bytes storage. It's meta af.\n Packs length with the first 31 bytes if <255 bytes, so it’s mad tight." + }, + "id": 2590, + "members": [ + { + "constant": false, + "id": 2589, + "mutability": "mutable", + "name": "_spacer", + "nameLocation": "781:7:9", + "nodeType": "VariableDeclaration", + "scope": 2590, + "src": "773:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2588, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "773:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "name": "BytesStorage", + "nameLocation": "750:12:9", + "nodeType": "StructDefinition", + "scope": 3089, + "src": "743:52:9", + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 2591, + "nodeType": "StructuredDocumentation", + "src": "1084:75:9", + "text": "@dev The constant returned when the `search` is not found in the bytes." + }, + "id": 2598, + "mutability": "constant", + "name": "NOT_FOUND", + "nameLocation": "1190:9:9", + "nodeType": "VariableDeclaration", + "scope": 3089, + "src": "1164:55:9", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2592, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1164:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "expression": { + "arguments": [ + { + "id": 2595, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1207:7:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2594, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1207:7:9", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 2593, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "1202:4:9", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2596, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1202:13:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 2597, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1216:3:9", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "1202:17:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "body": { + "id": 2608, + "nodeType": "Block", + "src": "1632:772:9", + "statements": [ + { + "AST": { + "nativeSrc": "1694:704:9", + "nodeType": "YulBlock", + "src": "1694:704:9", + "statements": [ + { + "nativeSrc": "1708:17:9", + "nodeType": "YulVariableDeclaration", + "src": "1708:17:9", + "value": { + "arguments": [ + { + "name": "s", + "nativeSrc": "1723:1:9", + "nodeType": "YulIdentifier", + "src": "1723:1:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "1717:5:9", + "nodeType": "YulIdentifier", + "src": "1717:5:9" + }, + "nativeSrc": "1717:8:9", + "nodeType": "YulFunctionCall", + "src": "1717:8:9" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "1712:1:9", + "nodeType": "YulTypedName", + "src": "1712:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "1738:33:9", + "nodeType": "YulVariableDeclaration", + "src": "1738:33:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1755:4:9", + "nodeType": "YulLiteral", + "src": "1755:4:9", + "type": "", + "value": "0xff" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1765:1:9", + "nodeType": "YulLiteral", + "src": "1765:1:9", + "type": "", + "value": "8" + }, + { + "name": "n", + "nativeSrc": "1768:1:9", + "nodeType": "YulIdentifier", + "src": "1768:1:9" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "1761:3:9", + "nodeType": "YulIdentifier", + "src": "1761:3:9" + }, + "nativeSrc": "1761:9:9", + "nodeType": "YulFunctionCall", + "src": "1761:9:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "1752:2:9", + "nodeType": "YulIdentifier", + "src": "1752:2:9" + }, + "nativeSrc": "1752:19:9", + "nodeType": "YulFunctionCall", + "src": "1752:19:9" + }, + "variables": [ + { + "name": "packed", + "nativeSrc": "1742:6:9", + "nodeType": "YulTypedName", + "src": "1742:6:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "1808:545:9", + "nodeType": "YulBlock", + "src": "1808:545:9", + "statements": [ + { + "body": { + "nativeSrc": "1849:161:9", + "nodeType": "YulBlock", + "src": "1849:161:9", + "statements": [ + { + "nativeSrc": "1871:9:9", + "nodeType": "YulAssignment", + "src": "1871:9:9", + "value": { + "kind": "number", + "nativeSrc": "1876:4:9", + "nodeType": "YulLiteral", + "src": "1876:4:9", + "type": "", + "value": "0x1f" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "1871:1:9", + "nodeType": "YulIdentifier", + "src": "1871:1:9" + } + ] + }, + { + "nativeSrc": "1901:41:9", + "nodeType": "YulAssignment", + "src": "1901:41:9", + "value": { + "arguments": [ + { + "name": "n", + "nativeSrc": "1914:1:9", + "nodeType": "YulIdentifier", + "src": "1914:1:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1921:1:9", + "nodeType": "YulLiteral", + "src": "1921:1:9", + "type": "", + "value": "8" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "s", + "nativeSrc": "1934:1:9", + "nodeType": "YulIdentifier", + "src": "1934:1:9" + }, + { + "name": "i", + "nativeSrc": "1937:1:9", + "nodeType": "YulIdentifier", + "src": "1937:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1930:3:9", + "nodeType": "YulIdentifier", + "src": "1930:3:9" + }, + "nativeSrc": "1930:9:9", + "nodeType": "YulFunctionCall", + "src": "1930:9:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "1924:5:9", + "nodeType": "YulIdentifier", + "src": "1924:5:9" + }, + "nativeSrc": "1924:16:9", + "nodeType": "YulFunctionCall", + "src": "1924:16:9" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "1917:3:9", + "nodeType": "YulIdentifier", + "src": "1917:3:9" + }, + "nativeSrc": "1917:24:9", + "nodeType": "YulFunctionCall", + "src": "1917:24:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "1911:2:9", + "nodeType": "YulIdentifier", + "src": "1911:2:9" + }, + "nativeSrc": "1911:31:9", + "nodeType": "YulFunctionCall", + "src": "1911:31:9" + }, + "variableNames": [ + { + "name": "packed", + "nativeSrc": "1901:6:9", + "nodeType": "YulIdentifier", + "src": "1901:6:9" + } + ] + }, + { + "body": { + "nativeSrc": "1983:9:9", + "nodeType": "YulBlock", + "src": "1983:9:9", + "statements": [ + { + "nativeSrc": "1985:5:9", + "nodeType": "YulBreak", + "src": "1985:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "n", + "nativeSrc": "1976:1:9", + "nodeType": "YulIdentifier", + "src": "1976:1:9" + }, + { + "name": "i", + "nativeSrc": "1979:1:9", + "nodeType": "YulIdentifier", + "src": "1979:1:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "1973:2:9", + "nodeType": "YulIdentifier", + "src": "1973:2:9" + }, + "nativeSrc": "1973:8:9", + "nodeType": "YulFunctionCall", + "src": "1973:8:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "1966:6:9", + "nodeType": "YulIdentifier", + "src": "1966:6:9" + }, + "nativeSrc": "1966:16:9", + "nodeType": "YulFunctionCall", + "src": "1966:16:9" + }, + "nativeSrc": "1963:29:9", + "nodeType": "YulIf", + "src": "1963:29:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "n", + "nativeSrc": "1839:1:9", + "nodeType": "YulIdentifier", + "src": "1839:1:9" + }, + { + "kind": "number", + "nativeSrc": "1842:4:9", + "nodeType": "YulLiteral", + "src": "1842:4:9", + "type": "", + "value": "0xfe" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "1836:2:9", + "nodeType": "YulIdentifier", + "src": "1836:2:9" + }, + "nativeSrc": "1836:11:9", + "nodeType": "YulFunctionCall", + "src": "1836:11:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "1829:6:9", + "nodeType": "YulIdentifier", + "src": "1829:6:9" + }, + "nativeSrc": "1829:19:9", + "nodeType": "YulFunctionCall", + "src": "1829:19:9" + }, + "nativeSrc": "1826:184:9", + "nodeType": "YulIf", + "src": "1826:184:9" + }, + { + "nativeSrc": "2027:21:9", + "nodeType": "YulVariableDeclaration", + "src": "2027:21:9", + "value": { + "arguments": [ + { + "name": "s", + "nativeSrc": "2040:1:9", + "nodeType": "YulIdentifier", + "src": "2040:1:9" + }, + { + "kind": "number", + "nativeSrc": "2043:4:9", + "nodeType": "YulLiteral", + "src": "2043:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2036:3:9", + "nodeType": "YulIdentifier", + "src": "2036:3:9" + }, + "nativeSrc": "2036:12:9", + "nodeType": "YulFunctionCall", + "src": "2036:12:9" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "2031:1:9", + "nodeType": "YulTypedName", + "src": "2031:1:9", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2072:4:9", + "nodeType": "YulLiteral", + "src": "2072:4:9", + "type": "", + "value": "0x00" + }, + { + "name": "$.slot", + "nativeSrc": "2078:6:9", + "nodeType": "YulIdentifier", + "src": "2078:6:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2065:6:9", + "nodeType": "YulIdentifier", + "src": "2065:6:9" + }, + "nativeSrc": "2065:20:9", + "nodeType": "YulFunctionCall", + "src": "2065:20:9" + }, + "nativeSrc": "2065:20:9", + "nodeType": "YulExpressionStatement", + "src": "2065:20:9" + }, + { + "body": { + "nativeSrc": "2146:171:9", + "nodeType": "YulBlock", + "src": "2146:171:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "p", + "nativeSrc": "2179:1:9", + "nodeType": "YulIdentifier", + "src": "2179:1:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2186:1:9", + "nodeType": "YulLiteral", + "src": "2186:1:9", + "type": "", + "value": "5" + }, + { + "name": "i", + "nativeSrc": "2189:1:9", + "nodeType": "YulIdentifier", + "src": "2189:1:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "2182:3:9", + "nodeType": "YulIdentifier", + "src": "2182:3:9" + }, + "nativeSrc": "2182:9:9", + "nodeType": "YulFunctionCall", + "src": "2182:9:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2175:3:9", + "nodeType": "YulIdentifier", + "src": "2175:3:9" + }, + "nativeSrc": "2175:17:9", + "nodeType": "YulFunctionCall", + "src": "2175:17:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "2204:1:9", + "nodeType": "YulIdentifier", + "src": "2204:1:9" + }, + { + "name": "i", + "nativeSrc": "2207:1:9", + "nodeType": "YulIdentifier", + "src": "2207:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2200:3:9", + "nodeType": "YulIdentifier", + "src": "2200:3:9" + }, + "nativeSrc": "2200:9:9", + "nodeType": "YulFunctionCall", + "src": "2200:9:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2194:5:9", + "nodeType": "YulIdentifier", + "src": "2194:5:9" + }, + "nativeSrc": "2194:16:9", + "nodeType": "YulFunctionCall", + "src": "2194:16:9" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "2168:6:9", + "nodeType": "YulIdentifier", + "src": "2168:6:9" + }, + "nativeSrc": "2168:43:9", + "nodeType": "YulFunctionCall", + "src": "2168:43:9" + }, + "nativeSrc": "2168:43:9", + "nodeType": "YulExpressionStatement", + "src": "2168:43:9" + }, + { + "nativeSrc": "2232:17:9", + "nodeType": "YulAssignment", + "src": "2232:17:9", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "2241:1:9", + "nodeType": "YulIdentifier", + "src": "2241:1:9" + }, + { + "kind": "number", + "nativeSrc": "2244:4:9", + "nodeType": "YulLiteral", + "src": "2244:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2237:3:9", + "nodeType": "YulIdentifier", + "src": "2237:3:9" + }, + "nativeSrc": "2237:12:9", + "nodeType": "YulFunctionCall", + "src": "2237:12:9" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "2232:1:9", + "nodeType": "YulIdentifier", + "src": "2232:1:9" + } + ] + }, + { + "body": { + "nativeSrc": "2290:9:9", + "nodeType": "YulBlock", + "src": "2290:9:9", + "statements": [ + { + "nativeSrc": "2292:5:9", + "nodeType": "YulBreak", + "src": "2292:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "2283:1:9", + "nodeType": "YulIdentifier", + "src": "2283:1:9" + }, + { + "name": "n", + "nativeSrc": "2286:1:9", + "nodeType": "YulIdentifier", + "src": "2286:1:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "2280:2:9", + "nodeType": "YulIdentifier", + "src": "2280:2:9" + }, + "nativeSrc": "2280:8:9", + "nodeType": "YulFunctionCall", + "src": "2280:8:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "2273:6:9", + "nodeType": "YulIdentifier", + "src": "2273:6:9" + }, + "nativeSrc": "2273:16:9", + "nodeType": "YulFunctionCall", + "src": "2273:16:9" + }, + "nativeSrc": "2270:29:9", + "nodeType": "YulIf", + "src": "2270:29:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "2141:1:9", + "nodeType": "YulLiteral", + "src": "2141:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "2102:215:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "2143:2:9", + "nodeType": "YulBlock", + "src": "2143:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "2106:34:9", + "nodeType": "YulBlock", + "src": "2106:34:9", + "statements": [ + { + "nativeSrc": "2108:30:9", + "nodeType": "YulVariableDeclaration", + "src": "2108:30:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2127:4:9", + "nodeType": "YulLiteral", + "src": "2127:4:9", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "2133:4:9", + "nodeType": "YulLiteral", + "src": "2133:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "2117:9:9", + "nodeType": "YulIdentifier", + "src": "2117:9:9" + }, + "nativeSrc": "2117:21:9", + "nodeType": "YulFunctionCall", + "src": "2117:21:9" + }, + "variables": [ + { + "name": "p", + "nativeSrc": "2112:1:9", + "nodeType": "YulTypedName", + "src": "2112:1:9", + "type": "" + } + ] + } + ] + }, + "src": "2102:215:9" + }, + { + "nativeSrc": "2334:5:9", + "nodeType": "YulBreak", + "src": "2334:5:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "1803:1:9", + "nodeType": "YulLiteral", + "src": "1803:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "1784:569:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "1805:2:9", + "nodeType": "YulBlock", + "src": "1805:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "1788:14:9", + "nodeType": "YulBlock", + "src": "1788:14:9", + "statements": [ + { + "nativeSrc": "1790:10:9", + "nodeType": "YulVariableDeclaration", + "src": "1790:10:9", + "value": { + "kind": "number", + "nativeSrc": "1799:1:9", + "nodeType": "YulLiteral", + "src": "1799:1:9", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "1794:1:9", + "nodeType": "YulTypedName", + "src": "1794:1:9", + "type": "" + } + ] + } + ] + }, + "src": "1784:569:9" + }, + { + "expression": { + "arguments": [ + { + "name": "$.slot", + "nativeSrc": "2373:6:9", + "nodeType": "YulIdentifier", + "src": "2373:6:9" + }, + { + "name": "packed", + "nativeSrc": "2381:6:9", + "nodeType": "YulIdentifier", + "src": "2381:6:9" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "2366:6:9", + "nodeType": "YulIdentifier", + "src": "2366:6:9" + }, + "nativeSrc": "2366:22:9", + "nodeType": "YulFunctionCall", + "src": "2366:22:9" + }, + "nativeSrc": "2366:22:9", + "nodeType": "YulExpressionStatement", + "src": "2366:22:9" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2602, + "isOffset": false, + "isSlot": true, + "src": "2078:6:9", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 2602, + "isOffset": false, + "isSlot": true, + "src": "2373:6:9", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 2604, + "isOffset": false, + "isSlot": false, + "src": "1723:1:9", + "valueSize": 1 + }, + { + "declaration": 2604, + "isOffset": false, + "isSlot": false, + "src": "1934:1:9", + "valueSize": 1 + }, + { + "declaration": 2604, + "isOffset": false, + "isSlot": false, + "src": "2040:1:9", + "valueSize": 1 + } + ], + "id": 2607, + "nodeType": "InlineAssembly", + "src": "1685:713:9" + } + ] + }, + "documentation": { + "id": 2599, + "nodeType": "StructuredDocumentation", + "src": "1509:56:9", + "text": "@dev Sets the value of the bytes storage `$` to `s`." + }, + "id": 2609, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "set", + "nameLocation": "1579:3:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2605, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2602, + "mutability": "mutable", + "name": "$", + "nameLocation": "1604:1:9", + "nodeType": "VariableDeclaration", + "scope": 2609, + "src": "1583:22:9", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage" + }, + "typeName": { + "id": 2601, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2600, + "name": "BytesStorage", + "nameLocations": [ + "1583:12:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2590, + "src": "1583:12:9" + }, + "referencedDeclaration": 2590, + "src": "1583:12:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2604, + "mutability": "mutable", + "name": "s", + "nameLocation": "1620:1:9", + "nodeType": "VariableDeclaration", + "scope": 2609, + "src": "1607:14:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2603, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1607:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "1582:40:9" + }, + "returnParameters": { + "id": 2606, + "nodeType": "ParameterList", + "parameters": [], + "src": "1632:0:9" + }, + "scope": 3089, + "src": "1570:834:9", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2619, + "nodeType": "Block", + "src": "2543:767:9", + "statements": [ + { + "AST": { + "nativeSrc": "2605:699:9", + "nodeType": "YulBlock", + "src": "2605:699:9", + "statements": [ + { + "nativeSrc": "2619:40:9", + "nodeType": "YulVariableDeclaration", + "src": "2619:40:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2636:4:9", + "nodeType": "YulLiteral", + "src": "2636:4:9", + "type": "", + "value": "0xff" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2646:1:9", + "nodeType": "YulLiteral", + "src": "2646:1:9", + "type": "", + "value": "8" + }, + { + "name": "s.length", + "nativeSrc": "2649:8:9", + "nodeType": "YulIdentifier", + "src": "2649:8:9" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "2642:3:9", + "nodeType": "YulIdentifier", + "src": "2642:3:9" + }, + "nativeSrc": "2642:16:9", + "nodeType": "YulFunctionCall", + "src": "2642:16:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "2633:2:9", + "nodeType": "YulIdentifier", + "src": "2633:2:9" + }, + "nativeSrc": "2633:26:9", + "nodeType": "YulFunctionCall", + "src": "2633:26:9" + }, + "variables": [ + { + "name": "packed", + "nativeSrc": "2623:6:9", + "nodeType": "YulTypedName", + "src": "2623:6:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "2696:563:9", + "nodeType": "YulBlock", + "src": "2696:563:9", + "statements": [ + { + "body": { + "nativeSrc": "2744:189:9", + "nodeType": "YulBlock", + "src": "2744:189:9", + "statements": [ + { + "nativeSrc": "2766:9:9", + "nodeType": "YulAssignment", + "src": "2766:9:9", + "value": { + "kind": "number", + "nativeSrc": "2771:4:9", + "nodeType": "YulLiteral", + "src": "2771:4:9", + "type": "", + "value": "0x1f" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "2766:1:9", + "nodeType": "YulIdentifier", + "src": "2766:1:9" + } + ] + }, + { + "nativeSrc": "2796:62:9", + "nodeType": "YulAssignment", + "src": "2796:62:9", + "value": { + "arguments": [ + { + "name": "s.length", + "nativeSrc": "2809:8:9", + "nodeType": "YulIdentifier", + "src": "2809:8:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2823:1:9", + "nodeType": "YulLiteral", + "src": "2823:1:9", + "type": "", + "value": "8" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2830:1:9", + "nodeType": "YulLiteral", + "src": "2830:1:9", + "type": "", + "value": "8" + }, + { + "arguments": [ + { + "name": "s.offset", + "nativeSrc": "2846:8:9", + "nodeType": "YulIdentifier", + "src": "2846:8:9" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "2833:12:9", + "nodeType": "YulIdentifier", + "src": "2833:12:9" + }, + "nativeSrc": "2833:22:9", + "nodeType": "YulFunctionCall", + "src": "2833:22:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "2826:3:9", + "nodeType": "YulIdentifier", + "src": "2826:3:9" + }, + "nativeSrc": "2826:30:9", + "nodeType": "YulFunctionCall", + "src": "2826:30:9" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "2819:3:9", + "nodeType": "YulIdentifier", + "src": "2819:3:9" + }, + "nativeSrc": "2819:38:9", + "nodeType": "YulFunctionCall", + "src": "2819:38:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "2806:2:9", + "nodeType": "YulIdentifier", + "src": "2806:2:9" + }, + "nativeSrc": "2806:52:9", + "nodeType": "YulFunctionCall", + "src": "2806:52:9" + }, + "variableNames": [ + { + "name": "packed", + "nativeSrc": "2796:6:9", + "nodeType": "YulIdentifier", + "src": "2796:6:9" + } + ] + }, + { + "body": { + "nativeSrc": "2906:9:9", + "nodeType": "YulBlock", + "src": "2906:9:9", + "statements": [ + { + "nativeSrc": "2908:5:9", + "nodeType": "YulBreak", + "src": "2908:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "s.length", + "nativeSrc": "2892:8:9", + "nodeType": "YulIdentifier", + "src": "2892:8:9" + }, + { + "name": "i", + "nativeSrc": "2902:1:9", + "nodeType": "YulIdentifier", + "src": "2902:1:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "2889:2:9", + "nodeType": "YulIdentifier", + "src": "2889:2:9" + }, + "nativeSrc": "2889:15:9", + "nodeType": "YulFunctionCall", + "src": "2889:15:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "2882:6:9", + "nodeType": "YulIdentifier", + "src": "2882:6:9" + }, + "nativeSrc": "2882:23:9", + "nodeType": "YulFunctionCall", + "src": "2882:23:9" + }, + "nativeSrc": "2879:36:9", + "nodeType": "YulIf", + "src": "2879:36:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "s.length", + "nativeSrc": "2727:8:9", + "nodeType": "YulIdentifier", + "src": "2727:8:9" + }, + { + "kind": "number", + "nativeSrc": "2737:4:9", + "nodeType": "YulLiteral", + "src": "2737:4:9", + "type": "", + "value": "0xfe" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "2724:2:9", + "nodeType": "YulIdentifier", + "src": "2724:2:9" + }, + "nativeSrc": "2724:18:9", + "nodeType": "YulFunctionCall", + "src": "2724:18:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "2717:6:9", + "nodeType": "YulIdentifier", + "src": "2717:6:9" + }, + "nativeSrc": "2717:26:9", + "nodeType": "YulFunctionCall", + "src": "2717:26:9" + }, + "nativeSrc": "2714:219:9", + "nodeType": "YulIf", + "src": "2714:219:9" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2957:4:9", + "nodeType": "YulLiteral", + "src": "2957:4:9", + "type": "", + "value": "0x00" + }, + { + "name": "$.slot", + "nativeSrc": "2963:6:9", + "nodeType": "YulIdentifier", + "src": "2963:6:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2950:6:9", + "nodeType": "YulIdentifier", + "src": "2950:6:9" + }, + "nativeSrc": "2950:20:9", + "nodeType": "YulFunctionCall", + "src": "2950:20:9" + }, + "nativeSrc": "2950:20:9", + "nodeType": "YulExpressionStatement", + "src": "2950:20:9" + }, + { + "body": { + "nativeSrc": "3031:192:9", + "nodeType": "YulBlock", + "src": "3031:192:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "p", + "nativeSrc": "3064:1:9", + "nodeType": "YulIdentifier", + "src": "3064:1:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3071:1:9", + "nodeType": "YulLiteral", + "src": "3071:1:9", + "type": "", + "value": "5" + }, + { + "name": "i", + "nativeSrc": "3074:1:9", + "nodeType": "YulIdentifier", + "src": "3074:1:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "3067:3:9", + "nodeType": "YulIdentifier", + "src": "3067:3:9" + }, + "nativeSrc": "3067:9:9", + "nodeType": "YulFunctionCall", + "src": "3067:9:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3060:3:9", + "nodeType": "YulIdentifier", + "src": "3060:3:9" + }, + "nativeSrc": "3060:17:9", + "nodeType": "YulFunctionCall", + "src": "3060:17:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "s.offset", + "nativeSrc": "3096:8:9", + "nodeType": "YulIdentifier", + "src": "3096:8:9" + }, + { + "name": "i", + "nativeSrc": "3106:1:9", + "nodeType": "YulIdentifier", + "src": "3106:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3092:3:9", + "nodeType": "YulIdentifier", + "src": "3092:3:9" + }, + "nativeSrc": "3092:16:9", + "nodeType": "YulFunctionCall", + "src": "3092:16:9" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "3079:12:9", + "nodeType": "YulIdentifier", + "src": "3079:12:9" + }, + "nativeSrc": "3079:30:9", + "nodeType": "YulFunctionCall", + "src": "3079:30:9" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "3053:6:9", + "nodeType": "YulIdentifier", + "src": "3053:6:9" + }, + "nativeSrc": "3053:57:9", + "nodeType": "YulFunctionCall", + "src": "3053:57:9" + }, + "nativeSrc": "3053:57:9", + "nodeType": "YulExpressionStatement", + "src": "3053:57:9" + }, + { + "nativeSrc": "3131:17:9", + "nodeType": "YulAssignment", + "src": "3131:17:9", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "3140:1:9", + "nodeType": "YulIdentifier", + "src": "3140:1:9" + }, + { + "kind": "number", + "nativeSrc": "3143:4:9", + "nodeType": "YulLiteral", + "src": "3143:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3136:3:9", + "nodeType": "YulIdentifier", + "src": "3136:3:9" + }, + "nativeSrc": "3136:12:9", + "nodeType": "YulFunctionCall", + "src": "3136:12:9" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "3131:1:9", + "nodeType": "YulIdentifier", + "src": "3131:1:9" + } + ] + }, + { + "body": { + "nativeSrc": "3196:9:9", + "nodeType": "YulBlock", + "src": "3196:9:9", + "statements": [ + { + "nativeSrc": "3198:5:9", + "nodeType": "YulBreak", + "src": "3198:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "3182:1:9", + "nodeType": "YulIdentifier", + "src": "3182:1:9" + }, + { + "name": "s.length", + "nativeSrc": "3185:8:9", + "nodeType": "YulIdentifier", + "src": "3185:8:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "3179:2:9", + "nodeType": "YulIdentifier", + "src": "3179:2:9" + }, + "nativeSrc": "3179:15:9", + "nodeType": "YulFunctionCall", + "src": "3179:15:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "3172:6:9", + "nodeType": "YulIdentifier", + "src": "3172:6:9" + }, + "nativeSrc": "3172:23:9", + "nodeType": "YulFunctionCall", + "src": "3172:23:9" + }, + "nativeSrc": "3169:36:9", + "nodeType": "YulIf", + "src": "3169:36:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "3026:1:9", + "nodeType": "YulLiteral", + "src": "3026:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "2987:236:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "3028:2:9", + "nodeType": "YulBlock", + "src": "3028:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "2991:34:9", + "nodeType": "YulBlock", + "src": "2991:34:9", + "statements": [ + { + "nativeSrc": "2993:30:9", + "nodeType": "YulVariableDeclaration", + "src": "2993:30:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3012:4:9", + "nodeType": "YulLiteral", + "src": "3012:4:9", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "3018:4:9", + "nodeType": "YulLiteral", + "src": "3018:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "3002:9:9", + "nodeType": "YulIdentifier", + "src": "3002:9:9" + }, + "nativeSrc": "3002:21:9", + "nodeType": "YulFunctionCall", + "src": "3002:21:9" + }, + "variables": [ + { + "name": "p", + "nativeSrc": "2997:1:9", + "nodeType": "YulTypedName", + "src": "2997:1:9", + "type": "" + } + ] + } + ] + }, + "src": "2987:236:9" + }, + { + "nativeSrc": "3240:5:9", + "nodeType": "YulBreak", + "src": "3240:5:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "2691:1:9", + "nodeType": "YulLiteral", + "src": "2691:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "2672:587:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "2693:2:9", + "nodeType": "YulBlock", + "src": "2693:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "2676:14:9", + "nodeType": "YulBlock", + "src": "2676:14:9", + "statements": [ + { + "nativeSrc": "2678:10:9", + "nodeType": "YulVariableDeclaration", + "src": "2678:10:9", + "value": { + "kind": "number", + "nativeSrc": "2687:1:9", + "nodeType": "YulLiteral", + "src": "2687:1:9", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "2682:1:9", + "nodeType": "YulTypedName", + "src": "2682:1:9", + "type": "" + } + ] + } + ] + }, + "src": "2672:587:9" + }, + { + "expression": { + "arguments": [ + { + "name": "$.slot", + "nativeSrc": "3279:6:9", + "nodeType": "YulIdentifier", + "src": "3279:6:9" + }, + { + "name": "packed", + "nativeSrc": "3287:6:9", + "nodeType": "YulIdentifier", + "src": "3287:6:9" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "3272:6:9", + "nodeType": "YulIdentifier", + "src": "3272:6:9" + }, + "nativeSrc": "3272:22:9", + "nodeType": "YulFunctionCall", + "src": "3272:22:9" + }, + "nativeSrc": "3272:22:9", + "nodeType": "YulExpressionStatement", + "src": "3272:22:9" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2613, + "isOffset": false, + "isSlot": true, + "src": "2963:6:9", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 2613, + "isOffset": false, + "isSlot": true, + "src": "3279:6:9", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 2615, + "isOffset": false, + "isSlot": false, + "src": "2649:8:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 2615, + "isOffset": false, + "isSlot": false, + "src": "2727:8:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 2615, + "isOffset": false, + "isSlot": false, + "src": "2809:8:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 2615, + "isOffset": false, + "isSlot": false, + "src": "2892:8:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 2615, + "isOffset": false, + "isSlot": false, + "src": "3185:8:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 2615, + "isOffset": true, + "isSlot": false, + "src": "2846:8:9", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 2615, + "isOffset": true, + "isSlot": false, + "src": "3096:8:9", + "suffix": "offset", + "valueSize": 1 + } + ], + "id": 2618, + "nodeType": "InlineAssembly", + "src": "2596:708:9" + } + ] + }, + "documentation": { + "id": 2610, + "nodeType": "StructuredDocumentation", + "src": "2410:56:9", + "text": "@dev Sets the value of the bytes storage `$` to `s`." + }, + "id": 2620, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setCalldata", + "nameLocation": "2480:11:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2616, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2613, + "mutability": "mutable", + "name": "$", + "nameLocation": "2513:1:9", + "nodeType": "VariableDeclaration", + "scope": 2620, + "src": "2492:22:9", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage" + }, + "typeName": { + "id": 2612, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2611, + "name": "BytesStorage", + "nameLocations": [ + "2492:12:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2590, + "src": "2492:12:9" + }, + "referencedDeclaration": 2590, + "src": "2492:12:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2615, + "mutability": "mutable", + "name": "s", + "nameLocation": "2531:1:9", + "nodeType": "VariableDeclaration", + "scope": 2620, + "src": "2516:16:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2614, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2516:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "2491:42:9" + }, + "returnParameters": { + "id": 2617, + "nodeType": "ParameterList", + "parameters": [], + "src": "2543:0:9" + }, + "scope": 3089, + "src": "2471:839:9", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2631, + "nodeType": "Block", + "src": "3437:33:9", + "statements": [ + { + "expression": { + "id": 2629, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "3447:16:9", + "subExpression": { + "expression": { + "id": 2627, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2624, + "src": "3454:1:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage storage pointer" + } + }, + "id": 2628, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "3456:7:9", + "memberName": "_spacer", + "nodeType": "MemberAccess", + "referencedDeclaration": 2589, + "src": "3454:9:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2630, + "nodeType": "ExpressionStatement", + "src": "3447:16:9" + } + ] + }, + "documentation": { + "id": 2621, + "nodeType": "StructuredDocumentation", + "src": "3316:68:9", + "text": "@dev Sets the value of the bytes storage `$` to the empty bytes." + }, + "id": 2632, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "clear", + "nameLocation": "3398:5:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2625, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2624, + "mutability": "mutable", + "name": "$", + "nameLocation": "3425:1:9", + "nodeType": "VariableDeclaration", + "scope": 2632, + "src": "3404:22:9", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage" + }, + "typeName": { + "id": 2623, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2622, + "name": "BytesStorage", + "nameLocations": [ + "3404:12:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2590, + "src": "3404:12:9" + }, + "referencedDeclaration": 2590, + "src": "3404:12:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage" + } + }, + "visibility": "internal" + } + ], + "src": "3403:24:9" + }, + "returnParameters": { + "id": 2626, + "nodeType": "ParameterList", + "parameters": [], + "src": "3437:0:9" + }, + "scope": 3089, + "src": "3389:81:9", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2654, + "nodeType": "Block", + "src": "3622:63:9", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2647, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "expression": { + "id": 2643, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2636, + "src": "3647:1:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage storage pointer" + } + }, + "id": 2644, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3649:7:9", + "memberName": "_spacer", + "nodeType": "MemberAccess", + "referencedDeclaration": 2589, + "src": "3647:9:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2642, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3639:7:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2641, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3639:7:9", + "typeDescriptions": {} + } + }, + "id": 2645, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3639:18:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "30786666", + "id": 2646, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3660:4:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_255_by_1", + "typeString": "int_const 255" + }, + "value": "0xff" + }, + "src": "3639:25:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 2650, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3676:1:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2649, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3668:7:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2648, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3668:7:9", + "typeDescriptions": {} + } + }, + "id": 2651, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3668:10:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3639:39:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2640, + "id": 2653, + "nodeType": "Return", + "src": "3632:46:9" + } + ] + }, + "documentation": { + "id": 2633, + "nodeType": "StructuredDocumentation", + "src": "3476:71:9", + "text": "@dev Returns whether the value stored is `$` is the empty bytes \"\"." + }, + "id": 2655, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isEmpty", + "nameLocation": "3561:7:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2637, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2636, + "mutability": "mutable", + "name": "$", + "nameLocation": "3590:1:9", + "nodeType": "VariableDeclaration", + "scope": 2655, + "src": "3569:22:9", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage" + }, + "typeName": { + "id": 2635, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2634, + "name": "BytesStorage", + "nameLocations": [ + "3569:12:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2590, + "src": "3569:12:9" + }, + "referencedDeclaration": 2590, + "src": "3569:12:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage" + } + }, + "visibility": "internal" + } + ], + "src": "3568:24:9" + }, + "returnParameters": { + "id": 2640, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2639, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2655, + "src": "3616:4:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2638, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3616:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3615:6:9" + }, + "scope": 3089, + "src": "3552:133:9", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2673, + "nodeType": "Block", + "src": "3830:243:9", + "statements": [ + { + "expression": { + "id": 2670, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2664, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2662, + "src": "3840:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "id": 2667, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2659, + "src": "3857:1:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage storage pointer" + } + }, + "id": 2668, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3859:7:9", + "memberName": "_spacer", + "nodeType": "MemberAccess", + "referencedDeclaration": 2589, + "src": "3857:9:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2666, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3849:7:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2665, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3849:7:9", + "typeDescriptions": {} + } + }, + "id": 2669, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3849:18:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3840:27:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2671, + "nodeType": "ExpressionStatement", + "src": "3840:27:9" + }, + { + "AST": { + "nativeSrc": "3929:138:9", + "nodeType": "YulBlock", + "src": "3929:138:9", + "statements": [ + { + "nativeSrc": "3943:26:9", + "nodeType": "YulVariableDeclaration", + "src": "3943:26:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3956:4:9", + "nodeType": "YulLiteral", + "src": "3956:4:9", + "type": "", + "value": "0xff" + }, + { + "name": "result", + "nativeSrc": "3962:6:9", + "nodeType": "YulIdentifier", + "src": "3962:6:9" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "3952:3:9", + "nodeType": "YulIdentifier", + "src": "3952:3:9" + }, + "nativeSrc": "3952:17:9", + "nodeType": "YulFunctionCall", + "src": "3952:17:9" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "3947:1:9", + "nodeType": "YulTypedName", + "src": "3947:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "3982:75:9", + "nodeType": "YulAssignment", + "src": "3982:75:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4003:1:9", + "nodeType": "YulLiteral", + "src": "4003:1:9", + "type": "", + "value": "8" + }, + { + "name": "result", + "nativeSrc": "4006:6:9", + "nodeType": "YulIdentifier", + "src": "4006:6:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "3999:3:9", + "nodeType": "YulIdentifier", + "src": "3999:3:9" + }, + "nativeSrc": "3999:14:9", + "nodeType": "YulFunctionCall", + "src": "3999:14:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4018:4:9", + "nodeType": "YulLiteral", + "src": "4018:4:9", + "type": "", + "value": "0xff" + }, + { + "name": "n", + "nativeSrc": "4024:1:9", + "nodeType": "YulIdentifier", + "src": "4024:1:9" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "4015:2:9", + "nodeType": "YulIdentifier", + "src": "4015:2:9" + }, + "nativeSrc": "4015:11:9", + "nodeType": "YulFunctionCall", + "src": "4015:11:9" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "3995:3:9", + "nodeType": "YulIdentifier", + "src": "3995:3:9" + }, + "nativeSrc": "3995:32:9", + "nodeType": "YulFunctionCall", + "src": "3995:32:9" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "4033:1:9", + "nodeType": "YulIdentifier", + "src": "4033:1:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4046:4:9", + "nodeType": "YulLiteral", + "src": "4046:4:9", + "type": "", + "value": "0xff" + }, + { + "name": "n", + "nativeSrc": "4052:1:9", + "nodeType": "YulIdentifier", + "src": "4052:1:9" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "4043:2:9", + "nodeType": "YulIdentifier", + "src": "4043:2:9" + }, + "nativeSrc": "4043:11:9", + "nodeType": "YulFunctionCall", + "src": "4043:11:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "4036:6:9", + "nodeType": "YulIdentifier", + "src": "4036:6:9" + }, + "nativeSrc": "4036:19:9", + "nodeType": "YulFunctionCall", + "src": "4036:19:9" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "4029:3:9", + "nodeType": "YulIdentifier", + "src": "4029:3:9" + }, + "nativeSrc": "4029:27:9", + "nodeType": "YulFunctionCall", + "src": "4029:27:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "3992:2:9", + "nodeType": "YulIdentifier", + "src": "3992:2:9" + }, + "nativeSrc": "3992:65:9", + "nodeType": "YulFunctionCall", + "src": "3992:65:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "3982:6:9", + "nodeType": "YulIdentifier", + "src": "3982:6:9" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2662, + "isOffset": false, + "isSlot": false, + "src": "3962:6:9", + "valueSize": 1 + }, + { + "declaration": 2662, + "isOffset": false, + "isSlot": false, + "src": "3982:6:9", + "valueSize": 1 + }, + { + "declaration": 2662, + "isOffset": false, + "isSlot": false, + "src": "4006:6:9", + "valueSize": 1 + } + ], + "id": 2672, + "nodeType": "InlineAssembly", + "src": "3920:147:9" + } + ] + }, + "documentation": { + "id": 2656, + "nodeType": "StructuredDocumentation", + "src": "3691:55:9", + "text": "@dev Returns the length of the value stored in `$`." + }, + "id": 2674, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "length", + "nameLocation": "3760:6:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2660, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2659, + "mutability": "mutable", + "name": "$", + "nameLocation": "3788:1:9", + "nodeType": "VariableDeclaration", + "scope": 2674, + "src": "3767:22:9", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage" + }, + "typeName": { + "id": 2658, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2657, + "name": "BytesStorage", + "nameLocations": [ + "3767:12:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2590, + "src": "3767:12:9" + }, + "referencedDeclaration": 2590, + "src": "3767:12:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage" + } + }, + "visibility": "internal" + } + ], + "src": "3766:24:9" + }, + "returnParameters": { + "id": 2663, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2662, + "mutability": "mutable", + "name": "result", + "nameLocation": "3822:6:9", + "nodeType": "VariableDeclaration", + "scope": 2674, + "src": "3814:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2661, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3814:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3813:16:9" + }, + "scope": 3089, + "src": "3751:322:9", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2684, + "nodeType": "Block", + "src": "4206:1010:9", + "statements": [ + { + "AST": { + "nativeSrc": "4268:942:9", + "nodeType": "YulBlock", + "src": "4268:942:9", + "statements": [ + { + "nativeSrc": "4282:21:9", + "nodeType": "YulAssignment", + "src": "4282:21:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4298:4:9", + "nodeType": "YulLiteral", + "src": "4298:4:9", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "4292:5:9", + "nodeType": "YulIdentifier", + "src": "4292:5:9" + }, + "nativeSrc": "4292:11:9", + "nodeType": "YulFunctionCall", + "src": "4292:11:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "4282:6:9", + "nodeType": "YulIdentifier", + "src": "4282:6:9" + } + ] + }, + { + "nativeSrc": "4316:26:9", + "nodeType": "YulVariableDeclaration", + "src": "4316:26:9", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "4329:6:9", + "nodeType": "YulIdentifier", + "src": "4329:6:9" + }, + { + "kind": "number", + "nativeSrc": "4337:4:9", + "nodeType": "YulLiteral", + "src": "4337:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4325:3:9", + "nodeType": "YulIdentifier", + "src": "4325:3:9" + }, + "nativeSrc": "4325:17:9", + "nodeType": "YulFunctionCall", + "src": "4325:17:9" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "4320:1:9", + "nodeType": "YulTypedName", + "src": "4320:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "4355:27:9", + "nodeType": "YulVariableDeclaration", + "src": "4355:27:9", + "value": { + "arguments": [ + { + "name": "$.slot", + "nativeSrc": "4375:6:9", + "nodeType": "YulIdentifier", + "src": "4375:6:9" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "4369:5:9", + "nodeType": "YulIdentifier", + "src": "4369:5:9" + }, + "nativeSrc": "4369:13:9", + "nodeType": "YulFunctionCall", + "src": "4369:13:9" + }, + "variables": [ + { + "name": "packed", + "nativeSrc": "4359:6:9", + "nodeType": "YulTypedName", + "src": "4359:6:9", + "type": "" + } + ] + }, + { + "nativeSrc": "4395:23:9", + "nodeType": "YulVariableDeclaration", + "src": "4395:23:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4408:1:9", + "nodeType": "YulLiteral", + "src": "4408:1:9", + "type": "", + "value": "8" + }, + { + "name": "packed", + "nativeSrc": "4411:6:9", + "nodeType": "YulIdentifier", + "src": "4411:6:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "4404:3:9", + "nodeType": "YulIdentifier", + "src": "4404:3:9" + }, + "nativeSrc": "4404:14:9", + "nodeType": "YulFunctionCall", + "src": "4404:14:9" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "4399:1:9", + "nodeType": "YulTypedName", + "src": "4399:1:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "4455:543:9", + "nodeType": "YulBlock", + "src": "4455:543:9", + "statements": [ + { + "body": { + "nativeSrc": "4513:180:9", + "nodeType": "YulBlock", + "src": "4513:180:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "4542:1:9", + "nodeType": "YulIdentifier", + "src": "4542:1:9" + }, + { + "name": "packed", + "nativeSrc": "4545:6:9", + "nodeType": "YulIdentifier", + "src": "4545:6:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4535:6:9", + "nodeType": "YulIdentifier", + "src": "4535:6:9" + }, + "nativeSrc": "4535:17:9", + "nodeType": "YulFunctionCall", + "src": "4535:17:9" + }, + "nativeSrc": "4535:17:9", + "nodeType": "YulExpressionStatement", + "src": "4535:17:9" + }, + { + "nativeSrc": "4573:22:9", + "nodeType": "YulAssignment", + "src": "4573:22:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4582:4:9", + "nodeType": "YulLiteral", + "src": "4582:4:9", + "type": "", + "value": "0xff" + }, + { + "name": "packed", + "nativeSrc": "4588:6:9", + "nodeType": "YulIdentifier", + "src": "4588:6:9" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "4578:3:9", + "nodeType": "YulIdentifier", + "src": "4578:3:9" + }, + "nativeSrc": "4578:17:9", + "nodeType": "YulFunctionCall", + "src": "4578:17:9" + }, + "variableNames": [ + { + "name": "n", + "nativeSrc": "4573:1:9", + "nodeType": "YulIdentifier", + "src": "4573:1:9" + } + ] + }, + { + "nativeSrc": "4616:9:9", + "nodeType": "YulAssignment", + "src": "4616:9:9", + "value": { + "kind": "number", + "nativeSrc": "4621:4:9", + "nodeType": "YulLiteral", + "src": "4621:4:9", + "type": "", + "value": "0x1f" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "4616:1:9", + "nodeType": "YulIdentifier", + "src": "4616:1:9" + } + ] + }, + { + "body": { + "nativeSrc": "4666:9:9", + "nodeType": "YulBlock", + "src": "4666:9:9", + "statements": [ + { + "nativeSrc": "4668:5:9", + "nodeType": "YulBreak", + "src": "4668:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "n", + "nativeSrc": "4659:1:9", + "nodeType": "YulIdentifier", + "src": "4659:1:9" + }, + { + "name": "i", + "nativeSrc": "4662:1:9", + "nodeType": "YulIdentifier", + "src": "4662:1:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "4656:2:9", + "nodeType": "YulIdentifier", + "src": "4656:2:9" + }, + "nativeSrc": "4656:8:9", + "nodeType": "YulFunctionCall", + "src": "4656:8:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "4649:6:9", + "nodeType": "YulIdentifier", + "src": "4649:6:9" + }, + "nativeSrc": "4649:16:9", + "nodeType": "YulFunctionCall", + "src": "4649:16:9" + }, + "nativeSrc": "4646:29:9", + "nodeType": "YulIf", + "src": "4646:29:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "packed", + "nativeSrc": "4489:6:9", + "nodeType": "YulIdentifier", + "src": "4489:6:9" + }, + { + "kind": "number", + "nativeSrc": "4497:4:9", + "nodeType": "YulLiteral", + "src": "4497:4:9", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "4486:2:9", + "nodeType": "YulIdentifier", + "src": "4486:2:9" + }, + "nativeSrc": "4486:16:9", + "nodeType": "YulFunctionCall", + "src": "4486:16:9" + }, + { + "name": "packed", + "nativeSrc": "4504:6:9", + "nodeType": "YulIdentifier", + "src": "4504:6:9" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "4483:2:9", + "nodeType": "YulIdentifier", + "src": "4483:2:9" + }, + "nativeSrc": "4483:28:9", + "nodeType": "YulFunctionCall", + "src": "4483:28:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "4476:6:9", + "nodeType": "YulIdentifier", + "src": "4476:6:9" + }, + "nativeSrc": "4476:36:9", + "nodeType": "YulFunctionCall", + "src": "4476:36:9" + }, + "nativeSrc": "4473:220:9", + "nodeType": "YulIf", + "src": "4473:220:9" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4717:4:9", + "nodeType": "YulLiteral", + "src": "4717:4:9", + "type": "", + "value": "0x00" + }, + { + "name": "$.slot", + "nativeSrc": "4723:6:9", + "nodeType": "YulIdentifier", + "src": "4723:6:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4710:6:9", + "nodeType": "YulIdentifier", + "src": "4710:6:9" + }, + "nativeSrc": "4710:20:9", + "nodeType": "YulFunctionCall", + "src": "4710:20:9" + }, + "nativeSrc": "4710:20:9", + "nodeType": "YulExpressionStatement", + "src": "4710:20:9" + }, + { + "body": { + "nativeSrc": "4791:171:9", + "nodeType": "YulBlock", + "src": "4791:171:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "4824:1:9", + "nodeType": "YulIdentifier", + "src": "4824:1:9" + }, + { + "name": "i", + "nativeSrc": "4827:1:9", + "nodeType": "YulIdentifier", + "src": "4827:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4820:3:9", + "nodeType": "YulIdentifier", + "src": "4820:3:9" + }, + "nativeSrc": "4820:9:9", + "nodeType": "YulFunctionCall", + "src": "4820:9:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "p", + "nativeSrc": "4841:1:9", + "nodeType": "YulIdentifier", + "src": "4841:1:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4848:1:9", + "nodeType": "YulLiteral", + "src": "4848:1:9", + "type": "", + "value": "5" + }, + { + "name": "i", + "nativeSrc": "4851:1:9", + "nodeType": "YulIdentifier", + "src": "4851:1:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "4844:3:9", + "nodeType": "YulIdentifier", + "src": "4844:3:9" + }, + "nativeSrc": "4844:9:9", + "nodeType": "YulFunctionCall", + "src": "4844:9:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4837:3:9", + "nodeType": "YulIdentifier", + "src": "4837:3:9" + }, + "nativeSrc": "4837:17:9", + "nodeType": "YulFunctionCall", + "src": "4837:17:9" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "4831:5:9", + "nodeType": "YulIdentifier", + "src": "4831:5:9" + }, + "nativeSrc": "4831:24:9", + "nodeType": "YulFunctionCall", + "src": "4831:24:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4813:6:9", + "nodeType": "YulIdentifier", + "src": "4813:6:9" + }, + "nativeSrc": "4813:43:9", + "nodeType": "YulFunctionCall", + "src": "4813:43:9" + }, + "nativeSrc": "4813:43:9", + "nodeType": "YulExpressionStatement", + "src": "4813:43:9" + }, + { + "nativeSrc": "4877:17:9", + "nodeType": "YulAssignment", + "src": "4877:17:9", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "4886:1:9", + "nodeType": "YulIdentifier", + "src": "4886:1:9" + }, + { + "kind": "number", + "nativeSrc": "4889:4:9", + "nodeType": "YulLiteral", + "src": "4889:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4882:3:9", + "nodeType": "YulIdentifier", + "src": "4882:3:9" + }, + "nativeSrc": "4882:12:9", + "nodeType": "YulFunctionCall", + "src": "4882:12:9" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "4877:1:9", + "nodeType": "YulIdentifier", + "src": "4877:1:9" + } + ] + }, + { + "body": { + "nativeSrc": "4935:9:9", + "nodeType": "YulBlock", + "src": "4935:9:9", + "statements": [ + { + "nativeSrc": "4937:5:9", + "nodeType": "YulBreak", + "src": "4937:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "4928:1:9", + "nodeType": "YulIdentifier", + "src": "4928:1:9" + }, + { + "name": "n", + "nativeSrc": "4931:1:9", + "nodeType": "YulIdentifier", + "src": "4931:1:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "4925:2:9", + "nodeType": "YulIdentifier", + "src": "4925:2:9" + }, + "nativeSrc": "4925:8:9", + "nodeType": "YulFunctionCall", + "src": "4925:8:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "4918:6:9", + "nodeType": "YulIdentifier", + "src": "4918:6:9" + }, + "nativeSrc": "4918:16:9", + "nodeType": "YulFunctionCall", + "src": "4918:16:9" + }, + "nativeSrc": "4915:29:9", + "nodeType": "YulIf", + "src": "4915:29:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "4786:1:9", + "nodeType": "YulLiteral", + "src": "4786:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "4747:215:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "4788:2:9", + "nodeType": "YulBlock", + "src": "4788:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "4751:34:9", + "nodeType": "YulBlock", + "src": "4751:34:9", + "statements": [ + { + "nativeSrc": "4753:30:9", + "nodeType": "YulVariableDeclaration", + "src": "4753:30:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4772:4:9", + "nodeType": "YulLiteral", + "src": "4772:4:9", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "4778:4:9", + "nodeType": "YulLiteral", + "src": "4778:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "4762:9:9", + "nodeType": "YulIdentifier", + "src": "4762:9:9" + }, + "nativeSrc": "4762:21:9", + "nodeType": "YulFunctionCall", + "src": "4762:21:9" + }, + "variables": [ + { + "name": "p", + "nativeSrc": "4757:1:9", + "nodeType": "YulTypedName", + "src": "4757:1:9", + "type": "" + } + ] + } + ] + }, + "src": "4747:215:9" + }, + { + "nativeSrc": "4979:5:9", + "nodeType": "YulBreak", + "src": "4979:5:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "4450:1:9", + "nodeType": "YulLiteral", + "src": "4450:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "4431:567:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "4452:2:9", + "nodeType": "YulBlock", + "src": "4452:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "4435:14:9", + "nodeType": "YulBlock", + "src": "4435:14:9", + "statements": [ + { + "nativeSrc": "4437:10:9", + "nodeType": "YulVariableDeclaration", + "src": "4437:10:9", + "value": { + "kind": "number", + "nativeSrc": "4446:1:9", + "nodeType": "YulLiteral", + "src": "4446:1:9", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "4441:1:9", + "nodeType": "YulTypedName", + "src": "4441:1:9", + "type": "" + } + ] + } + ] + }, + "src": "4431:567:9" + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "5018:6:9", + "nodeType": "YulIdentifier", + "src": "5018:6:9" + }, + { + "name": "n", + "nativeSrc": "5026:1:9", + "nodeType": "YulIdentifier", + "src": "5026:1:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5011:6:9", + "nodeType": "YulIdentifier", + "src": "5011:6:9" + }, + "nativeSrc": "5011:17:9", + "nodeType": "YulFunctionCall", + "src": "5011:17:9" + }, + "nativeSrc": "5011:17:9", + "nodeType": "YulExpressionStatement", + "src": "5011:17:9" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "5087:1:9", + "nodeType": "YulIdentifier", + "src": "5087:1:9" + }, + { + "name": "n", + "nativeSrc": "5090:1:9", + "nodeType": "YulIdentifier", + "src": "5090:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5083:3:9", + "nodeType": "YulIdentifier", + "src": "5083:3:9" + }, + "nativeSrc": "5083:9:9", + "nodeType": "YulFunctionCall", + "src": "5083:9:9" + }, + { + "kind": "number", + "nativeSrc": "5094:1:9", + "nodeType": "YulLiteral", + "src": "5094:1:9", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5076:6:9", + "nodeType": "YulIdentifier", + "src": "5076:6:9" + }, + "nativeSrc": "5076:20:9", + "nodeType": "YulFunctionCall", + "src": "5076:20:9" + }, + "nativeSrc": "5076:20:9", + "nodeType": "YulExpressionStatement", + "src": "5076:20:9" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5153:4:9", + "nodeType": "YulLiteral", + "src": "5153:4:9", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "5167:1:9", + "nodeType": "YulIdentifier", + "src": "5167:1:9" + }, + { + "name": "n", + "nativeSrc": "5170:1:9", + "nodeType": "YulIdentifier", + "src": "5170:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5163:3:9", + "nodeType": "YulIdentifier", + "src": "5163:3:9" + }, + "nativeSrc": "5163:9:9", + "nodeType": "YulFunctionCall", + "src": "5163:9:9" + }, + { + "kind": "number", + "nativeSrc": "5174:4:9", + "nodeType": "YulLiteral", + "src": "5174:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5159:3:9", + "nodeType": "YulIdentifier", + "src": "5159:3:9" + }, + "nativeSrc": "5159:20:9", + "nodeType": "YulFunctionCall", + "src": "5159:20:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5146:6:9", + "nodeType": "YulIdentifier", + "src": "5146:6:9" + }, + "nativeSrc": "5146:34:9", + "nodeType": "YulFunctionCall", + "src": "5146:34:9" + }, + "nativeSrc": "5146:34:9", + "nodeType": "YulExpressionStatement", + "src": "5146:34:9" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2678, + "isOffset": false, + "isSlot": true, + "src": "4375:6:9", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 2678, + "isOffset": false, + "isSlot": true, + "src": "4723:6:9", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 2681, + "isOffset": false, + "isSlot": false, + "src": "4282:6:9", + "valueSize": 1 + }, + { + "declaration": 2681, + "isOffset": false, + "isSlot": false, + "src": "4329:6:9", + "valueSize": 1 + }, + { + "declaration": 2681, + "isOffset": false, + "isSlot": false, + "src": "5018:6:9", + "valueSize": 1 + } + ], + "id": 2683, + "nodeType": "InlineAssembly", + "src": "4259:951:9" + } + ] + }, + "documentation": { + "id": 2675, + "nodeType": "StructuredDocumentation", + "src": "4079:41:9", + "text": "@dev Returns the value stored in `$`." + }, + "id": 2685, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "get", + "nameLocation": "4134:3:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2679, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2678, + "mutability": "mutable", + "name": "$", + "nameLocation": "4159:1:9", + "nodeType": "VariableDeclaration", + "scope": 2685, + "src": "4138:22:9", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage" + }, + "typeName": { + "id": 2677, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2676, + "name": "BytesStorage", + "nameLocations": [ + "4138:12:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2590, + "src": "4138:12:9" + }, + "referencedDeclaration": 2590, + "src": "4138:12:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage" + } + }, + "visibility": "internal" + } + ], + "src": "4137:24:9" + }, + "returnParameters": { + "id": 2682, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2681, + "mutability": "mutable", + "name": "result", + "nameLocation": "4198:6:9", + "nodeType": "VariableDeclaration", + "scope": 2685, + "src": "4185:19:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2680, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4185:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4184:21:9" + }, + "scope": 3089, + "src": "4125:1091:9", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2697, + "nodeType": "Block", + "src": "5385:894:9", + "statements": [ + { + "AST": { + "nativeSrc": "5447:826:9", + "nodeType": "YulBlock", + "src": "5447:826:9", + "statements": [ + { + "body": { + "nativeSrc": "5502:761:9", + "nodeType": "YulBlock", + "src": "5502:761:9", + "statements": [ + { + "body": { + "nativeSrc": "5560:462:9", + "nodeType": "YulBlock", + "src": "5560:462:9", + "statements": [ + { + "body": { + "nativeSrc": "5605:103:9", + "nodeType": "YulBlock", + "src": "5605:103:9", + "statements": [ + { + "nativeSrc": "5631:25:9", + "nodeType": "YulAssignment", + "src": "5631:25:9", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "5646:1:9", + "nodeType": "YulIdentifier", + "src": "5646:1:9" + }, + { + "name": "packed", + "nativeSrc": "5649:6:9", + "nodeType": "YulIdentifier", + "src": "5649:6:9" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "5641:4:9", + "nodeType": "YulIdentifier", + "src": "5641:4:9" + }, + "nativeSrc": "5641:15:9", + "nodeType": "YulFunctionCall", + "src": "5641:15:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "5631:6:9", + "nodeType": "YulIdentifier", + "src": "5631:6:9" + } + ] + }, + { + "nativeSrc": "5681:5:9", + "nodeType": "YulBreak", + "src": "5681:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "5595:1:9", + "nodeType": "YulIdentifier", + "src": "5595:1:9" + }, + { + "kind": "number", + "nativeSrc": "5598:4:9", + "nodeType": "YulLiteral", + "src": "5598:4:9", + "type": "", + "value": "0x1e" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "5592:2:9", + "nodeType": "YulIdentifier", + "src": "5592:2:9" + }, + "nativeSrc": "5592:11:9", + "nodeType": "YulFunctionCall", + "src": "5592:11:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "5585:6:9", + "nodeType": "YulIdentifier", + "src": "5585:6:9" + }, + "nativeSrc": "5585:19:9", + "nodeType": "YulFunctionCall", + "src": "5585:19:9" + }, + "nativeSrc": "5582:126:9", + "nodeType": "YulIf", + "src": "5582:126:9" + }, + { + "body": { + "nativeSrc": "5765:213:9", + "nodeType": "YulBlock", + "src": "5765:213:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5798:4:9", + "nodeType": "YulLiteral", + "src": "5798:4:9", + "type": "", + "value": "0x00" + }, + { + "name": "$.slot", + "nativeSrc": "5804:6:9", + "nodeType": "YulIdentifier", + "src": "5804:6:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5791:6:9", + "nodeType": "YulIdentifier", + "src": "5791:6:9" + }, + "nativeSrc": "5791:20:9", + "nodeType": "YulFunctionCall", + "src": "5791:20:9" + }, + "nativeSrc": "5791:20:9", + "nodeType": "YulExpressionStatement", + "src": "5791:20:9" + }, + { + "nativeSrc": "5836:21:9", + "nodeType": "YulVariableDeclaration", + "src": "5836:21:9", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "5849:1:9", + "nodeType": "YulIdentifier", + "src": "5849:1:9" + }, + { + "kind": "number", + "nativeSrc": "5852:4:9", + "nodeType": "YulLiteral", + "src": "5852:4:9", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "5845:3:9", + "nodeType": "YulIdentifier", + "src": "5845:3:9" + }, + "nativeSrc": "5845:12:9", + "nodeType": "YulFunctionCall", + "src": "5845:12:9" + }, + "variables": [ + { + "name": "j", + "nativeSrc": "5840:1:9", + "nodeType": "YulTypedName", + "src": "5840:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "5882:74:9", + "nodeType": "YulAssignment", + "src": "5882:74:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "j", + "nativeSrc": "5901:1:9", + "nodeType": "YulIdentifier", + "src": "5901:1:9" + }, + { + "kind": "number", + "nativeSrc": "5904:4:9", + "nodeType": "YulLiteral", + "src": "5904:4:9", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "5897:3:9", + "nodeType": "YulIdentifier", + "src": "5897:3:9" + }, + "nativeSrc": "5897:12:9", + "nodeType": "YulFunctionCall", + "src": "5897:12:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5931:4:9", + "nodeType": "YulLiteral", + "src": "5931:4:9", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "5937:4:9", + "nodeType": "YulLiteral", + "src": "5937:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "5921:9:9", + "nodeType": "YulIdentifier", + "src": "5921:9:9" + }, + "nativeSrc": "5921:21:9", + "nodeType": "YulFunctionCall", + "src": "5921:21:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5948:1:9", + "nodeType": "YulLiteral", + "src": "5948:1:9", + "type": "", + "value": "5" + }, + { + "name": "j", + "nativeSrc": "5951:1:9", + "nodeType": "YulIdentifier", + "src": "5951:1:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "5944:3:9", + "nodeType": "YulIdentifier", + "src": "5944:3:9" + }, + "nativeSrc": "5944:9:9", + "nodeType": "YulFunctionCall", + "src": "5944:9:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5917:3:9", + "nodeType": "YulIdentifier", + "src": "5917:3:9" + }, + "nativeSrc": "5917:37:9", + "nodeType": "YulFunctionCall", + "src": "5917:37:9" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "5911:5:9", + "nodeType": "YulIdentifier", + "src": "5911:5:9" + }, + "nativeSrc": "5911:44:9", + "nodeType": "YulFunctionCall", + "src": "5911:44:9" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "5892:4:9", + "nodeType": "YulIdentifier", + "src": "5892:4:9" + }, + "nativeSrc": "5892:64:9", + "nodeType": "YulFunctionCall", + "src": "5892:64:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "5882:6:9", + "nodeType": "YulIdentifier", + "src": "5882:6:9" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "5742:1:9", + "nodeType": "YulIdentifier", + "src": "5742:1:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5749:4:9", + "nodeType": "YulLiteral", + "src": "5749:4:9", + "type": "", + "value": "0xff" + }, + { + "name": "packed", + "nativeSrc": "5755:6:9", + "nodeType": "YulIdentifier", + "src": "5755:6:9" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "5745:3:9", + "nodeType": "YulIdentifier", + "src": "5745:3:9" + }, + "nativeSrc": "5745:17:9", + "nodeType": "YulFunctionCall", + "src": "5745:17:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "5739:2:9", + "nodeType": "YulIdentifier", + "src": "5739:2:9" + }, + "nativeSrc": "5739:24:9", + "nodeType": "YulFunctionCall", + "src": "5739:24:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "5732:6:9", + "nodeType": "YulIdentifier", + "src": "5732:6:9" + }, + "nativeSrc": "5732:32:9", + "nodeType": "YulFunctionCall", + "src": "5732:32:9" + }, + "nativeSrc": "5729:249:9", + "nodeType": "YulIf", + "src": "5729:249:9" + }, + { + "nativeSrc": "5999:5:9", + "nodeType": "YulBreak", + "src": "5999:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "packed", + "nativeSrc": "5536:6:9", + "nodeType": "YulIdentifier", + "src": "5536:6:9" + }, + { + "kind": "number", + "nativeSrc": "5544:4:9", + "nodeType": "YulLiteral", + "src": "5544:4:9", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "5533:2:9", + "nodeType": "YulIdentifier", + "src": "5533:2:9" + }, + "nativeSrc": "5533:16:9", + "nodeType": "YulFunctionCall", + "src": "5533:16:9" + }, + { + "name": "packed", + "nativeSrc": "5551:6:9", + "nodeType": "YulIdentifier", + "src": "5551:6:9" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "5530:2:9", + "nodeType": "YulIdentifier", + "src": "5530:2:9" + }, + "nativeSrc": "5530:28:9", + "nodeType": "YulFunctionCall", + "src": "5530:28:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "5523:6:9", + "nodeType": "YulIdentifier", + "src": "5523:6:9" + }, + "nativeSrc": "5523:36:9", + "nodeType": "YulFunctionCall", + "src": "5523:36:9" + }, + "nativeSrc": "5520:502:9", + "nodeType": "YulIf", + "src": "5520:502:9" + }, + { + "body": { + "nativeSrc": "6072:155:9", + "nodeType": "YulBlock", + "src": "6072:155:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6101:4:9", + "nodeType": "YulLiteral", + "src": "6101:4:9", + "type": "", + "value": "0x00" + }, + { + "name": "$.slot", + "nativeSrc": "6107:6:9", + "nodeType": "YulIdentifier", + "src": "6107:6:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6094:6:9", + "nodeType": "YulIdentifier", + "src": "6094:6:9" + }, + "nativeSrc": "6094:20:9", + "nodeType": "YulFunctionCall", + "src": "6094:20:9" + }, + "nativeSrc": "6094:20:9", + "nodeType": "YulExpressionStatement", + "src": "6094:20:9" + }, + { + "nativeSrc": "6135:74:9", + "nodeType": "YulAssignment", + "src": "6135:74:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "6154:1:9", + "nodeType": "YulIdentifier", + "src": "6154:1:9" + }, + { + "kind": "number", + "nativeSrc": "6157:4:9", + "nodeType": "YulLiteral", + "src": "6157:4:9", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "6150:3:9", + "nodeType": "YulIdentifier", + "src": "6150:3:9" + }, + "nativeSrc": "6150:12:9", + "nodeType": "YulFunctionCall", + "src": "6150:12:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6184:4:9", + "nodeType": "YulLiteral", + "src": "6184:4:9", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "6190:4:9", + "nodeType": "YulLiteral", + "src": "6190:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "6174:9:9", + "nodeType": "YulIdentifier", + "src": "6174:9:9" + }, + "nativeSrc": "6174:21:9", + "nodeType": "YulFunctionCall", + "src": "6174:21:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6201:1:9", + "nodeType": "YulLiteral", + "src": "6201:1:9", + "type": "", + "value": "5" + }, + { + "name": "i", + "nativeSrc": "6204:1:9", + "nodeType": "YulIdentifier", + "src": "6204:1:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "6197:3:9", + "nodeType": "YulIdentifier", + "src": "6197:3:9" + }, + "nativeSrc": "6197:9:9", + "nodeType": "YulFunctionCall", + "src": "6197:9:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6170:3:9", + "nodeType": "YulIdentifier", + "src": "6170:3:9" + }, + "nativeSrc": "6170:37:9", + "nodeType": "YulFunctionCall", + "src": "6170:37:9" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "6164:5:9", + "nodeType": "YulIdentifier", + "src": "6164:5:9" + }, + "nativeSrc": "6164:44:9", + "nodeType": "YulFunctionCall", + "src": "6164:44:9" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "6145:4:9", + "nodeType": "YulIdentifier", + "src": "6145:4:9" + }, + "nativeSrc": "6145:64:9", + "nodeType": "YulFunctionCall", + "src": "6145:64:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "6135:6:9", + "nodeType": "YulIdentifier", + "src": "6135:6:9" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "6052:1:9", + "nodeType": "YulIdentifier", + "src": "6052:1:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6059:1:9", + "nodeType": "YulLiteral", + "src": "6059:1:9", + "type": "", + "value": "8" + }, + { + "name": "packed", + "nativeSrc": "6062:6:9", + "nodeType": "YulIdentifier", + "src": "6062:6:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "6055:3:9", + "nodeType": "YulIdentifier", + "src": "6055:3:9" + }, + "nativeSrc": "6055:14:9", + "nodeType": "YulFunctionCall", + "src": "6055:14:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "6049:2:9", + "nodeType": "YulIdentifier", + "src": "6049:2:9" + }, + "nativeSrc": "6049:21:9", + "nodeType": "YulFunctionCall", + "src": "6049:21:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "6042:6:9", + "nodeType": "YulIdentifier", + "src": "6042:6:9" + }, + "nativeSrc": "6042:29:9", + "nodeType": "YulFunctionCall", + "src": "6042:29:9" + }, + "nativeSrc": "6039:188:9", + "nodeType": "YulIf", + "src": "6039:188:9" + }, + { + "nativeSrc": "6244:5:9", + "nodeType": "YulBreak", + "src": "6244:5:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "5497:1:9", + "nodeType": "YulLiteral", + "src": "5497:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "5461:802:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "5499:2:9", + "nodeType": "YulBlock", + "src": "5499:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "5465:31:9", + "nodeType": "YulBlock", + "src": "5465:31:9", + "statements": [ + { + "nativeSrc": "5467:27:9", + "nodeType": "YulVariableDeclaration", + "src": "5467:27:9", + "value": { + "arguments": [ + { + "name": "$.slot", + "nativeSrc": "5487:6:9", + "nodeType": "YulIdentifier", + "src": "5487:6:9" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "5481:5:9", + "nodeType": "YulIdentifier", + "src": "5481:5:9" + }, + "nativeSrc": "5481:13:9", + "nodeType": "YulFunctionCall", + "src": "5481:13:9" + }, + "variables": [ + { + "name": "packed", + "nativeSrc": "5471:6:9", + "nodeType": "YulTypedName", + "src": "5471:6:9", + "type": "" + } + ] + } + ] + }, + "src": "5461:802:9" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2689, + "isOffset": false, + "isSlot": true, + "src": "5487:6:9", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 2689, + "isOffset": false, + "isSlot": true, + "src": "5804:6:9", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 2689, + "isOffset": false, + "isSlot": true, + "src": "6107:6:9", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 2691, + "isOffset": false, + "isSlot": false, + "src": "5595:1:9", + "valueSize": 1 + }, + { + "declaration": 2691, + "isOffset": false, + "isSlot": false, + "src": "5646:1:9", + "valueSize": 1 + }, + { + "declaration": 2691, + "isOffset": false, + "isSlot": false, + "src": "5742:1:9", + "valueSize": 1 + }, + { + "declaration": 2691, + "isOffset": false, + "isSlot": false, + "src": "5849:1:9", + "valueSize": 1 + }, + { + "declaration": 2691, + "isOffset": false, + "isSlot": false, + "src": "6052:1:9", + "valueSize": 1 + }, + { + "declaration": 2691, + "isOffset": false, + "isSlot": false, + "src": "6154:1:9", + "valueSize": 1 + }, + { + "declaration": 2691, + "isOffset": false, + "isSlot": false, + "src": "6204:1:9", + "valueSize": 1 + }, + { + "declaration": 2694, + "isOffset": false, + "isSlot": false, + "src": "5631:6:9", + "valueSize": 1 + }, + { + "declaration": 2694, + "isOffset": false, + "isSlot": false, + "src": "5882:6:9", + "valueSize": 1 + }, + { + "declaration": 2694, + "isOffset": false, + "isSlot": false, + "src": "6135:6:9", + "valueSize": 1 + } + ], + "id": 2696, + "nodeType": "InlineAssembly", + "src": "5438:835:9" + } + ] + }, + "documentation": { + "id": 2686, + "nodeType": "StructuredDocumentation", + "src": "5222:69:9", + "text": "@dev Returns the uint8 at index `i`. If out-of-bounds, returns 0." + }, + "id": 2698, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "uint8At", + "nameLocation": "5305:7:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2692, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2689, + "mutability": "mutable", + "name": "$", + "nameLocation": "5334:1:9", + "nodeType": "VariableDeclaration", + "scope": 2698, + "src": "5313:22:9", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage" + }, + "typeName": { + "id": 2688, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2687, + "name": "BytesStorage", + "nameLocations": [ + "5313:12:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2590, + "src": "5313:12:9" + }, + "referencedDeclaration": 2590, + "src": "5313:12:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2691, + "mutability": "mutable", + "name": "i", + "nameLocation": "5345:1:9", + "nodeType": "VariableDeclaration", + "scope": 2698, + "src": "5337:9:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2690, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5337:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5312:35:9" + }, + "returnParameters": { + "id": 2695, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2694, + "mutability": "mutable", + "name": "result", + "nameLocation": "5377:6:9", + "nodeType": "VariableDeclaration", + "scope": 2698, + "src": "5371:12:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2693, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "5371:5:9", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "5370:14:9" + }, + "scope": 3089, + "src": "5296:983:9", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2711, + "nodeType": "Block", + "src": "6814:2667:9", + "statements": [ + { + "AST": { + "nativeSrc": "6876:2599:9", + "nodeType": "YulBlock", + "src": "6876:2599:9", + "statements": [ + { + "nativeSrc": "6890:21:9", + "nodeType": "YulAssignment", + "src": "6890:21:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6906:4:9", + "nodeType": "YulLiteral", + "src": "6906:4:9", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "6900:5:9", + "nodeType": "YulIdentifier", + "src": "6900:5:9" + }, + "nativeSrc": "6900:11:9", + "nodeType": "YulFunctionCall", + "src": "6900:11:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "6890:6:9", + "nodeType": "YulIdentifier", + "src": "6890:6:9" + } + ] + }, + { + "nativeSrc": "6924:30:9", + "nodeType": "YulVariableDeclaration", + "src": "6924:30:9", + "value": { + "arguments": [ + { + "name": "needle", + "nativeSrc": "6947:6:9", + "nodeType": "YulIdentifier", + "src": "6947:6:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "6941:5:9", + "nodeType": "YulIdentifier", + "src": "6941:5:9" + }, + "nativeSrc": "6941:13:9", + "nodeType": "YulFunctionCall", + "src": "6941:13:9" + }, + "variables": [ + { + "name": "needleLen", + "nativeSrc": "6928:9:9", + "nodeType": "YulTypedName", + "src": "6928:9:9", + "type": "" + } + ] + }, + { + "nativeSrc": "6967:40:9", + "nodeType": "YulVariableDeclaration", + "src": "6967:40:9", + "value": { + "arguments": [ + { + "name": "replacement", + "nativeSrc": "6995:11:9", + "nodeType": "YulIdentifier", + "src": "6995:11:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "6989:5:9", + "nodeType": "YulIdentifier", + "src": "6989:5:9" + }, + "nativeSrc": "6989:18:9", + "nodeType": "YulFunctionCall", + "src": "6989:18:9" + }, + "variables": [ + { + "name": "replacementLen", + "nativeSrc": "6971:14:9", + "nodeType": "YulTypedName", + "src": "6971:14:9", + "type": "" + } + ] + }, + { + "nativeSrc": "7020:29:9", + "nodeType": "YulVariableDeclaration", + "src": "7020:29:9", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "7033:6:9", + "nodeType": "YulIdentifier", + "src": "7033:6:9" + }, + { + "name": "subject", + "nativeSrc": "7041:7:9", + "nodeType": "YulIdentifier", + "src": "7041:7:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "7029:3:9", + "nodeType": "YulIdentifier", + "src": "7029:3:9" + }, + "nativeSrc": "7029:20:9", + "nodeType": "YulFunctionCall", + "src": "7029:20:9" + }, + "variables": [ + { + "name": "d", + "nativeSrc": "7024:1:9", + "nodeType": "YulTypedName", + "src": "7024:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "7084:27:9", + "nodeType": "YulVariableDeclaration", + "src": "7084:27:9", + "value": { + "arguments": [ + { + "name": "subject", + "nativeSrc": "7097:7:9", + "nodeType": "YulIdentifier", + "src": "7097:7:9" + }, + { + "kind": "number", + "nativeSrc": "7106:4:9", + "nodeType": "YulLiteral", + "src": "7106:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7093:3:9", + "nodeType": "YulIdentifier", + "src": "7093:3:9" + }, + "nativeSrc": "7093:18:9", + "nodeType": "YulFunctionCall", + "src": "7093:18:9" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "7088:1:9", + "nodeType": "YulTypedName", + "src": "7088:1:9", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7157:4:9", + "nodeType": "YulLiteral", + "src": "7157:4:9", + "type": "", + "value": "0x00" + }, + { + "arguments": [ + { + "name": "i", + "nativeSrc": "7167:1:9", + "nodeType": "YulIdentifier", + "src": "7167:1:9" + }, + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "7176:7:9", + "nodeType": "YulIdentifier", + "src": "7176:7:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "7170:5:9", + "nodeType": "YulIdentifier", + "src": "7170:5:9" + }, + "nativeSrc": "7170:14:9", + "nodeType": "YulFunctionCall", + "src": "7170:14:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7163:3:9", + "nodeType": "YulIdentifier", + "src": "7163:3:9" + }, + "nativeSrc": "7163:22:9", + "nodeType": "YulFunctionCall", + "src": "7163:22:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7150:6:9", + "nodeType": "YulIdentifier", + "src": "7150:6:9" + }, + "nativeSrc": "7150:36:9", + "nodeType": "YulFunctionCall", + "src": "7150:36:9" + }, + "nativeSrc": "7150:36:9", + "nodeType": "YulExpressionStatement", + "src": "7150:36:9" + }, + { + "body": { + "nativeSrc": "7259:1765:9", + "nodeType": "YulBlock", + "src": "7259:1765:9", + "statements": [ + { + "nativeSrc": "7277:59:9", + "nodeType": "YulVariableDeclaration", + "src": "7277:59:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7315:4:9", + "nodeType": "YulLiteral", + "src": "7315:4:9", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "7309:5:9", + "nodeType": "YulIdentifier", + "src": "7309:5:9" + }, + "nativeSrc": "7309:11:9", + "nodeType": "YulFunctionCall", + "src": "7309:11:9" + }, + { + "name": "needleLen", + "nativeSrc": "7322:9:9", + "nodeType": "YulIdentifier", + "src": "7322:9:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "7305:3:9", + "nodeType": "YulIdentifier", + "src": "7305:3:9" + }, + "nativeSrc": "7305:27:9", + "nodeType": "YulFunctionCall", + "src": "7305:27:9" + }, + { + "kind": "number", + "nativeSrc": "7334:1:9", + "nodeType": "YulLiteral", + "src": "7334:1:9", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7301:3:9", + "nodeType": "YulIdentifier", + "src": "7301:3:9" + }, + "nativeSrc": "7301:35:9", + "nodeType": "YulFunctionCall", + "src": "7301:35:9" + }, + "variables": [ + { + "name": "subjectSearchEnd", + "nativeSrc": "7281:16:9", + "nodeType": "YulTypedName", + "src": "7281:16:9", + "type": "" + } + ] + }, + { + "nativeSrc": "7353:10:9", + "nodeType": "YulVariableDeclaration", + "src": "7353:10:9", + "value": { + "kind": "number", + "nativeSrc": "7362:1:9", + "nodeType": "YulLiteral", + "src": "7362:1:9", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "h", + "nativeSrc": "7357:1:9", + "nodeType": "YulTypedName", + "src": "7357:1:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "7436:48:9", + "nodeType": "YulBlock", + "src": "7436:48:9", + "statements": [ + { + "nativeSrc": "7438:44:9", + "nodeType": "YulAssignment", + "src": "7438:44:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "needle", + "nativeSrc": "7457:6:9", + "nodeType": "YulIdentifier", + "src": "7457:6:9" + }, + { + "kind": "number", + "nativeSrc": "7465:4:9", + "nodeType": "YulLiteral", + "src": "7465:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7453:3:9", + "nodeType": "YulIdentifier", + "src": "7453:3:9" + }, + "nativeSrc": "7453:17:9", + "nodeType": "YulFunctionCall", + "src": "7453:17:9" + }, + { + "name": "needleLen", + "nativeSrc": "7472:9:9", + "nodeType": "YulIdentifier", + "src": "7472:9:9" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "7443:9:9", + "nodeType": "YulIdentifier", + "src": "7443:9:9" + }, + "nativeSrc": "7443:39:9", + "nodeType": "YulFunctionCall", + "src": "7443:39:9" + }, + "variableNames": [ + { + "name": "h", + "nativeSrc": "7438:1:9", + "nodeType": "YulIdentifier", + "src": "7438:1:9" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "needleLen", + "nativeSrc": "7418:9:9", + "nodeType": "YulIdentifier", + "src": "7418:9:9" + }, + { + "kind": "number", + "nativeSrc": "7429:4:9", + "nodeType": "YulLiteral", + "src": "7429:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "7415:2:9", + "nodeType": "YulIdentifier", + "src": "7415:2:9" + }, + "nativeSrc": "7415:19:9", + "nodeType": "YulFunctionCall", + "src": "7415:19:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "7408:6:9", + "nodeType": "YulIdentifier", + "src": "7408:6:9" + }, + "nativeSrc": "7408:27:9", + "nodeType": "YulFunctionCall", + "src": "7408:27:9" + }, + "nativeSrc": "7405:79:9", + "nodeType": "YulIf", + "src": "7405:79:9" + }, + { + "nativeSrc": "7501:33:9", + "nodeType": "YulVariableDeclaration", + "src": "7501:33:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "needle", + "nativeSrc": "7520:6:9", + "nodeType": "YulIdentifier", + "src": "7520:6:9" + }, + { + "kind": "number", + "nativeSrc": "7528:4:9", + "nodeType": "YulLiteral", + "src": "7528:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7516:3:9", + "nodeType": "YulIdentifier", + "src": "7516:3:9" + }, + "nativeSrc": "7516:17:9", + "nodeType": "YulFunctionCall", + "src": "7516:17:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "7510:5:9", + "nodeType": "YulIdentifier", + "src": "7510:5:9" + }, + "nativeSrc": "7510:24:9", + "nodeType": "YulFunctionCall", + "src": "7510:24:9" + }, + "variables": [ + { + "name": "s", + "nativeSrc": "7505:1:9", + "nodeType": "YulTypedName", + "src": "7505:1:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "7613:1397:9", + "nodeType": "YulBlock", + "src": "7613:1397:9", + "statements": [ + { + "nativeSrc": "7635:17:9", + "nodeType": "YulVariableDeclaration", + "src": "7635:17:9", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "7650:1:9", + "nodeType": "YulIdentifier", + "src": "7650:1:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "7644:5:9", + "nodeType": "YulIdentifier", + "src": "7644:5:9" + }, + "nativeSrc": "7644:8:9", + "nodeType": "YulFunctionCall", + "src": "7644:8:9" + }, + "variables": [ + { + "name": "t", + "nativeSrc": "7639:1:9", + "nodeType": "YulTypedName", + "src": "7639:1:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "7801:1050:9", + "nodeType": "YulBlock", + "src": "7801:1050:9", + "statements": [ + { + "body": { + "nativeSrc": "7832:347:9", + "nodeType": "YulBlock", + "src": "7832:347:9", + "statements": [ + { + "body": { + "nativeSrc": "7904:249:9", + "nodeType": "YulBlock", + "src": "7904:249:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "7949:1:9", + "nodeType": "YulIdentifier", + "src": "7949:1:9" + }, + { + "name": "d", + "nativeSrc": "7952:1:9", + "nodeType": "YulIdentifier", + "src": "7952:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7945:3:9", + "nodeType": "YulIdentifier", + "src": "7945:3:9" + }, + "nativeSrc": "7945:9:9", + "nodeType": "YulFunctionCall", + "src": "7945:9:9" + }, + { + "name": "t", + "nativeSrc": "7956:1:9", + "nodeType": "YulIdentifier", + "src": "7956:1:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7938:6:9", + "nodeType": "YulIdentifier", + "src": "7938:6:9" + }, + "nativeSrc": "7938:20:9", + "nodeType": "YulFunctionCall", + "src": "7938:20:9" + }, + "nativeSrc": "7938:20:9", + "nodeType": "YulExpressionStatement", + "src": "7938:20:9" + }, + { + "nativeSrc": "7991:14:9", + "nodeType": "YulAssignment", + "src": "7991:14:9", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "8000:1:9", + "nodeType": "YulIdentifier", + "src": "8000:1:9" + }, + { + "kind": "number", + "nativeSrc": "8003:1:9", + "nodeType": "YulLiteral", + "src": "8003:1:9", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7996:3:9", + "nodeType": "YulIdentifier", + "src": "7996:3:9" + }, + "nativeSrc": "7996:9:9", + "nodeType": "YulFunctionCall", + "src": "7996:9:9" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "7991:1:9", + "nodeType": "YulIdentifier", + "src": "7991:1:9" + } + ] + }, + { + "body": { + "nativeSrc": "8073:9:9", + "nodeType": "YulBlock", + "src": "8073:9:9", + "statements": [ + { + "nativeSrc": "8075:5:9", + "nodeType": "YulBreak", + "src": "8075:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "8051:1:9", + "nodeType": "YulIdentifier", + "src": "8051:1:9" + }, + { + "name": "subjectSearchEnd", + "nativeSrc": "8054:16:9", + "nodeType": "YulIdentifier", + "src": "8054:16:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "8048:2:9", + "nodeType": "YulIdentifier", + "src": "8048:2:9" + }, + "nativeSrc": "8048:23:9", + "nodeType": "YulFunctionCall", + "src": "8048:23:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "8041:6:9", + "nodeType": "YulIdentifier", + "src": "8041:6:9" + }, + "nativeSrc": "8041:31:9", + "nodeType": "YulFunctionCall", + "src": "8041:31:9" + }, + "nativeSrc": "8038:44:9", + "nodeType": "YulIf", + "src": "8038:44:9" + }, + { + "nativeSrc": "8115:8:9", + "nodeType": "YulContinue", + "src": "8115:8:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "7885:1:9", + "nodeType": "YulIdentifier", + "src": "7885:1:9" + }, + { + "name": "needleLen", + "nativeSrc": "7888:9:9", + "nodeType": "YulIdentifier", + "src": "7888:9:9" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "7875:9:9", + "nodeType": "YulIdentifier", + "src": "7875:9:9" + }, + "nativeSrc": "7875:23:9", + "nodeType": "YulFunctionCall", + "src": "7875:23:9" + }, + { + "name": "h", + "nativeSrc": "7900:1:9", + "nodeType": "YulIdentifier", + "src": "7900:1:9" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "7872:2:9", + "nodeType": "YulIdentifier", + "src": "7872:2:9" + }, + "nativeSrc": "7872:30:9", + "nodeType": "YulFunctionCall", + "src": "7872:30:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "7865:6:9", + "nodeType": "YulIdentifier", + "src": "7865:6:9" + }, + "nativeSrc": "7865:38:9", + "nodeType": "YulFunctionCall", + "src": "7865:38:9" + }, + "nativeSrc": "7862:291:9", + "nodeType": "YulIf", + "src": "7862:291:9" + } + ] + }, + "condition": { + "name": "h", + "nativeSrc": "7830:1:9", + "nodeType": "YulIdentifier", + "src": "7830:1:9" + }, + "nativeSrc": "7827:352:9", + "nodeType": "YulIf", + "src": "7827:352:9" + }, + { + "body": { + "nativeSrc": "8298:237:9", + "nodeType": "YulBlock", + "src": "8298:237:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "8343:1:9", + "nodeType": "YulIdentifier", + "src": "8343:1:9" + }, + { + "name": "d", + "nativeSrc": "8346:1:9", + "nodeType": "YulIdentifier", + "src": "8346:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8339:3:9", + "nodeType": "YulIdentifier", + "src": "8339:3:9" + }, + "nativeSrc": "8339:9:9", + "nodeType": "YulFunctionCall", + "src": "8339:9:9" + }, + { + "name": "j", + "nativeSrc": "8350:1:9", + "nodeType": "YulIdentifier", + "src": "8350:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8335:3:9", + "nodeType": "YulIdentifier", + "src": "8335:3:9" + }, + "nativeSrc": "8335:17:9", + "nodeType": "YulFunctionCall", + "src": "8335:17:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "replacement", + "nativeSrc": "8368:11:9", + "nodeType": "YulIdentifier", + "src": "8368:11:9" + }, + { + "kind": "number", + "nativeSrc": "8381:4:9", + "nodeType": "YulLiteral", + "src": "8381:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8364:3:9", + "nodeType": "YulIdentifier", + "src": "8364:3:9" + }, + "nativeSrc": "8364:22:9", + "nodeType": "YulFunctionCall", + "src": "8364:22:9" + }, + { + "name": "j", + "nativeSrc": "8388:1:9", + "nodeType": "YulIdentifier", + "src": "8388:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8360:3:9", + "nodeType": "YulIdentifier", + "src": "8360:3:9" + }, + "nativeSrc": "8360:30:9", + "nodeType": "YulFunctionCall", + "src": "8360:30:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "8354:5:9", + "nodeType": "YulIdentifier", + "src": "8354:5:9" + }, + "nativeSrc": "8354:37:9", + "nodeType": "YulFunctionCall", + "src": "8354:37:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8328:6:9", + "nodeType": "YulIdentifier", + "src": "8328:6:9" + }, + "nativeSrc": "8328:64:9", + "nodeType": "YulFunctionCall", + "src": "8328:64:9" + }, + "nativeSrc": "8328:64:9", + "nodeType": "YulExpressionStatement", + "src": "8328:64:9" + }, + { + "nativeSrc": "8421:17:9", + "nodeType": "YulAssignment", + "src": "8421:17:9", + "value": { + "arguments": [ + { + "name": "j", + "nativeSrc": "8430:1:9", + "nodeType": "YulIdentifier", + "src": "8430:1:9" + }, + { + "kind": "number", + "nativeSrc": "8433:4:9", + "nodeType": "YulLiteral", + "src": "8433:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8426:3:9", + "nodeType": "YulIdentifier", + "src": "8426:3:9" + }, + "nativeSrc": "8426:12:9", + "nodeType": "YulFunctionCall", + "src": "8426:12:9" + }, + "variableNames": [ + { + "name": "j", + "nativeSrc": "8421:1:9", + "nodeType": "YulIdentifier", + "src": "8421:1:9" + } + ] + }, + { + "body": { + "nativeSrc": "8500:9:9", + "nodeType": "YulBlock", + "src": "8500:9:9", + "statements": [ + { + "nativeSrc": "8502:5:9", + "nodeType": "YulBreak", + "src": "8502:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "j", + "nativeSrc": "8480:1:9", + "nodeType": "YulIdentifier", + "src": "8480:1:9" + }, + { + "name": "replacementLen", + "nativeSrc": "8483:14:9", + "nodeType": "YulIdentifier", + "src": "8483:14:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "8477:2:9", + "nodeType": "YulIdentifier", + "src": "8477:2:9" + }, + "nativeSrc": "8477:21:9", + "nodeType": "YulFunctionCall", + "src": "8477:21:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "8470:6:9", + "nodeType": "YulIdentifier", + "src": "8470:6:9" + }, + "nativeSrc": "8470:29:9", + "nodeType": "YulFunctionCall", + "src": "8470:29:9" + }, + "nativeSrc": "8467:42:9", + "nodeType": "YulIf", + "src": "8467:42:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "8293:1:9", + "nodeType": "YulLiteral", + "src": "8293:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "8274:261:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "8295:2:9", + "nodeType": "YulBlock", + "src": "8295:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "8278:14:9", + "nodeType": "YulBlock", + "src": "8278:14:9", + "statements": [ + { + "nativeSrc": "8280:10:9", + "nodeType": "YulVariableDeclaration", + "src": "8280:10:9", + "value": { + "kind": "number", + "nativeSrc": "8289:1:9", + "nodeType": "YulLiteral", + "src": "8289:1:9", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "j", + "nativeSrc": "8284:1:9", + "nodeType": "YulTypedName", + "src": "8284:1:9", + "type": "" + } + ] + } + ] + }, + "src": "8274:261:9" + }, + { + "nativeSrc": "8560:43:9", + "nodeType": "YulAssignment", + "src": "8560:43:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "d", + "nativeSrc": "8573:1:9", + "nodeType": "YulIdentifier", + "src": "8573:1:9" + }, + { + "name": "replacementLen", + "nativeSrc": "8576:14:9", + "nodeType": "YulIdentifier", + "src": "8576:14:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8569:3:9", + "nodeType": "YulIdentifier", + "src": "8569:3:9" + }, + "nativeSrc": "8569:22:9", + "nodeType": "YulFunctionCall", + "src": "8569:22:9" + }, + { + "name": "needleLen", + "nativeSrc": "8593:9:9", + "nodeType": "YulIdentifier", + "src": "8593:9:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "8565:3:9", + "nodeType": "YulIdentifier", + "src": "8565:3:9" + }, + "nativeSrc": "8565:38:9", + "nodeType": "YulFunctionCall", + "src": "8565:38:9" + }, + "variableNames": [ + { + "name": "d", + "nativeSrc": "8560:1:9", + "nodeType": "YulIdentifier", + "src": "8560:1:9" + } + ] + }, + { + "body": { + "nativeSrc": "8641:188:9", + "nodeType": "YulBlock", + "src": "8641:188:9", + "statements": [ + { + "nativeSrc": "8671:22:9", + "nodeType": "YulAssignment", + "src": "8671:22:9", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "8680:1:9", + "nodeType": "YulIdentifier", + "src": "8680:1:9" + }, + { + "name": "needleLen", + "nativeSrc": "8683:9:9", + "nodeType": "YulIdentifier", + "src": "8683:9:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8676:3:9", + "nodeType": "YulIdentifier", + "src": "8676:3:9" + }, + "nativeSrc": "8676:17:9", + "nodeType": "YulFunctionCall", + "src": "8676:17:9" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "8671:1:9", + "nodeType": "YulIdentifier", + "src": "8671:1:9" + } + ] + }, + { + "body": { + "nativeSrc": "8757:9:9", + "nodeType": "YulBlock", + "src": "8757:9:9", + "statements": [ + { + "nativeSrc": "8759:5:9", + "nodeType": "YulBreak", + "src": "8759:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "8735:1:9", + "nodeType": "YulIdentifier", + "src": "8735:1:9" + }, + { + "name": "subjectSearchEnd", + "nativeSrc": "8738:16:9", + "nodeType": "YulIdentifier", + "src": "8738:16:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "8732:2:9", + "nodeType": "YulIdentifier", + "src": "8732:2:9" + }, + "nativeSrc": "8732:23:9", + "nodeType": "YulFunctionCall", + "src": "8732:23:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "8725:6:9", + "nodeType": "YulIdentifier", + "src": "8725:6:9" + }, + "nativeSrc": "8725:31:9", + "nodeType": "YulFunctionCall", + "src": "8725:31:9" + }, + "nativeSrc": "8722:44:9", + "nodeType": "YulIf", + "src": "8722:44:9" + }, + { + "nativeSrc": "8795:8:9", + "nodeType": "YulContinue", + "src": "8795:8:9" + } + ] + }, + "condition": { + "name": "needleLen", + "nativeSrc": "8631:9:9", + "nodeType": "YulIdentifier", + "src": "8631:9:9" + }, + "nativeSrc": "8628:201:9", + "nodeType": "YulIf", + "src": "8628:201:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "7786:1:9", + "nodeType": "YulIdentifier", + "src": "7786:1:9" + }, + { + "arguments": [ + { + "name": "t", + "nativeSrc": "7793:1:9", + "nodeType": "YulIdentifier", + "src": "7793:1:9" + }, + { + "name": "s", + "nativeSrc": "7796:1:9", + "nodeType": "YulIdentifier", + "src": "7796:1:9" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "7789:3:9", + "nodeType": "YulIdentifier", + "src": "7789:3:9" + }, + "nativeSrc": "7789:9:9", + "nodeType": "YulFunctionCall", + "src": "7789:9:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "7782:3:9", + "nodeType": "YulIdentifier", + "src": "7782:3:9" + }, + "nativeSrc": "7782:17:9", + "nodeType": "YulFunctionCall", + "src": "7782:17:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "7775:6:9", + "nodeType": "YulIdentifier", + "src": "7775:6:9" + }, + "nativeSrc": "7775:25:9", + "nodeType": "YulFunctionCall", + "src": "7775:25:9" + }, + "nativeSrc": "7772:1079:9", + "nodeType": "YulIf", + "src": "7772:1079:9" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "8883:1:9", + "nodeType": "YulIdentifier", + "src": "8883:1:9" + }, + { + "name": "d", + "nativeSrc": "8886:1:9", + "nodeType": "YulIdentifier", + "src": "8886:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8879:3:9", + "nodeType": "YulIdentifier", + "src": "8879:3:9" + }, + "nativeSrc": "8879:9:9", + "nodeType": "YulFunctionCall", + "src": "8879:9:9" + }, + { + "name": "t", + "nativeSrc": "8890:1:9", + "nodeType": "YulIdentifier", + "src": "8890:1:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8872:6:9", + "nodeType": "YulIdentifier", + "src": "8872:6:9" + }, + "nativeSrc": "8872:20:9", + "nodeType": "YulFunctionCall", + "src": "8872:20:9" + }, + "nativeSrc": "8872:20:9", + "nodeType": "YulExpressionStatement", + "src": "8872:20:9" + }, + { + "nativeSrc": "8913:14:9", + "nodeType": "YulAssignment", + "src": "8913:14:9", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "8922:1:9", + "nodeType": "YulIdentifier", + "src": "8922:1:9" + }, + { + "kind": "number", + "nativeSrc": "8925:1:9", + "nodeType": "YulLiteral", + "src": "8925:1:9", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8918:3:9", + "nodeType": "YulIdentifier", + "src": "8918:3:9" + }, + "nativeSrc": "8918:9:9", + "nodeType": "YulFunctionCall", + "src": "8918:9:9" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "8913:1:9", + "nodeType": "YulIdentifier", + "src": "8913:1:9" + } + ] + }, + { + "body": { + "nativeSrc": "8983:9:9", + "nodeType": "YulBlock", + "src": "8983:9:9", + "statements": [ + { + "nativeSrc": "8985:5:9", + "nodeType": "YulBreak", + "src": "8985:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "8961:1:9", + "nodeType": "YulIdentifier", + "src": "8961:1:9" + }, + { + "name": "subjectSearchEnd", + "nativeSrc": "8964:16:9", + "nodeType": "YulIdentifier", + "src": "8964:16:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "8958:2:9", + "nodeType": "YulIdentifier", + "src": "8958:2:9" + }, + "nativeSrc": "8958:23:9", + "nodeType": "YulFunctionCall", + "src": "8958:23:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "8951:6:9", + "nodeType": "YulIdentifier", + "src": "8951:6:9" + }, + "nativeSrc": "8951:31:9", + "nodeType": "YulFunctionCall", + "src": "8951:31:9" + }, + "nativeSrc": "8948:44:9", + "nodeType": "YulIf", + "src": "8948:44:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "7608:1:9", + "nodeType": "YulLiteral", + "src": "7608:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "7551:1459:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "7610:2:9", + "nodeType": "YulBlock", + "src": "7610:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "7555:52:9", + "nodeType": "YulBlock", + "src": "7555:52:9", + "statements": [ + { + "nativeSrc": "7557:48:9", + "nodeType": "YulVariableDeclaration", + "src": "7557:48:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7570:1:9", + "nodeType": "YulLiteral", + "src": "7570:1:9", + "type": "", + "value": "3" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7577:4:9", + "nodeType": "YulLiteral", + "src": "7577:4:9", + "type": "", + "value": "0x20" + }, + { + "arguments": [ + { + "name": "needleLen", + "nativeSrc": "7587:9:9", + "nodeType": "YulIdentifier", + "src": "7587:9:9" + }, + { + "kind": "number", + "nativeSrc": "7598:4:9", + "nodeType": "YulLiteral", + "src": "7598:4:9", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "7583:3:9", + "nodeType": "YulIdentifier", + "src": "7583:3:9" + }, + "nativeSrc": "7583:20:9", + "nodeType": "YulFunctionCall", + "src": "7583:20:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "7573:3:9", + "nodeType": "YulIdentifier", + "src": "7573:3:9" + }, + "nativeSrc": "7573:31:9", + "nodeType": "YulFunctionCall", + "src": "7573:31:9" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "7566:3:9", + "nodeType": "YulIdentifier", + "src": "7566:3:9" + }, + "nativeSrc": "7566:39:9", + "nodeType": "YulFunctionCall", + "src": "7566:39:9" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "7561:1:9", + "nodeType": "YulTypedName", + "src": "7561:1:9", + "type": "" + } + ] + } + ] + }, + "src": "7551:1459:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "needleLen", + "nativeSrc": "7231:9:9", + "nodeType": "YulIdentifier", + "src": "7231:9:9" + }, + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "7248:7:9", + "nodeType": "YulIdentifier", + "src": "7248:7:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "7242:5:9", + "nodeType": "YulIdentifier", + "src": "7242:5:9" + }, + "nativeSrc": "7242:14:9", + "nodeType": "YulFunctionCall", + "src": "7242:14:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "7228:2:9", + "nodeType": "YulIdentifier", + "src": "7228:2:9" + }, + "nativeSrc": "7228:29:9", + "nodeType": "YulFunctionCall", + "src": "7228:29:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "7221:6:9", + "nodeType": "YulIdentifier", + "src": "7221:6:9" + }, + "nativeSrc": "7221:37:9", + "nodeType": "YulFunctionCall", + "src": "7221:37:9" + }, + "nativeSrc": "7218:1806:9", + "nodeType": "YulIf", + "src": "7218:1806:9" + }, + { + "nativeSrc": "9037:22:9", + "nodeType": "YulVariableDeclaration", + "src": "9037:22:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9054:4:9", + "nodeType": "YulLiteral", + "src": "9054:4:9", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "9048:5:9", + "nodeType": "YulIdentifier", + "src": "9048:5:9" + }, + "nativeSrc": "9048:11:9", + "nodeType": "YulFunctionCall", + "src": "9048:11:9" + }, + "variables": [ + { + "name": "end", + "nativeSrc": "9041:3:9", + "nodeType": "YulTypedName", + "src": "9041:3:9", + "type": "" + } + ] + }, + { + "nativeSrc": "9072:44:9", + "nodeType": "YulVariableDeclaration", + "src": "9072:44:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "d", + "nativeSrc": "9089:1:9", + "nodeType": "YulIdentifier", + "src": "9089:1:9" + }, + { + "arguments": [ + { + "name": "result", + "nativeSrc": "9096:6:9", + "nodeType": "YulIdentifier", + "src": "9096:6:9" + }, + { + "kind": "number", + "nativeSrc": "9104:4:9", + "nodeType": "YulLiteral", + "src": "9104:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9092:3:9", + "nodeType": "YulIdentifier", + "src": "9092:3:9" + }, + "nativeSrc": "9092:17:9", + "nodeType": "YulFunctionCall", + "src": "9092:17:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "9085:3:9", + "nodeType": "YulIdentifier", + "src": "9085:3:9" + }, + "nativeSrc": "9085:25:9", + "nodeType": "YulFunctionCall", + "src": "9085:25:9" + }, + { + "name": "end", + "nativeSrc": "9112:3:9", + "nodeType": "YulIdentifier", + "src": "9112:3:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9081:3:9", + "nodeType": "YulIdentifier", + "src": "9081:3:9" + }, + "nativeSrc": "9081:35:9", + "nodeType": "YulFunctionCall", + "src": "9081:35:9" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "9076:1:9", + "nodeType": "YulTypedName", + "src": "9076:1:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "9231:31:9", + "nodeType": "YulBlock", + "src": "9231:31:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "9244:1:9", + "nodeType": "YulIdentifier", + "src": "9244:1:9" + }, + { + "name": "d", + "nativeSrc": "9247:1:9", + "nodeType": "YulIdentifier", + "src": "9247:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9240:3:9", + "nodeType": "YulIdentifier", + "src": "9240:3:9" + }, + "nativeSrc": "9240:9:9", + "nodeType": "YulFunctionCall", + "src": "9240:9:9" + }, + { + "arguments": [ + { + "name": "i", + "nativeSrc": "9257:1:9", + "nodeType": "YulIdentifier", + "src": "9257:1:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "9251:5:9", + "nodeType": "YulIdentifier", + "src": "9251:5:9" + }, + "nativeSrc": "9251:8:9", + "nodeType": "YulFunctionCall", + "src": "9251:8:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9233:6:9", + "nodeType": "YulIdentifier", + "src": "9233:6:9" + }, + "nativeSrc": "9233:27:9", + "nodeType": "YulFunctionCall", + "src": "9233:27:9" + }, + "nativeSrc": "9233:27:9", + "nodeType": "YulExpressionStatement", + "src": "9233:27:9" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "9201:1:9", + "nodeType": "YulIdentifier", + "src": "9201:1:9" + }, + { + "name": "end", + "nativeSrc": "9204:3:9", + "nodeType": "YulIdentifier", + "src": "9204:3:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "9198:2:9", + "nodeType": "YulIdentifier", + "src": "9198:2:9" + }, + "nativeSrc": "9198:10:9", + "nodeType": "YulFunctionCall", + "src": "9198:10:9" + }, + "nativeSrc": "9191:71:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "9209:21:9", + "nodeType": "YulBlock", + "src": "9209:21:9", + "statements": [ + { + "nativeSrc": "9211:17:9", + "nodeType": "YulAssignment", + "src": "9211:17:9", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "9220:1:9", + "nodeType": "YulIdentifier", + "src": "9220:1:9" + }, + { + "kind": "number", + "nativeSrc": "9223:4:9", + "nodeType": "YulLiteral", + "src": "9223:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9216:3:9", + "nodeType": "YulIdentifier", + "src": "9216:3:9" + }, + "nativeSrc": "9216:12:9", + "nodeType": "YulFunctionCall", + "src": "9216:12:9" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "9211:1:9", + "nodeType": "YulIdentifier", + "src": "9211:1:9" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "9195:2:9", + "nodeType": "YulBlock", + "src": "9195:2:9", + "statements": [] + }, + "src": "9191:71:9" + }, + { + "nativeSrc": "9275:18:9", + "nodeType": "YulVariableDeclaration", + "src": "9275:18:9", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "9288:1:9", + "nodeType": "YulIdentifier", + "src": "9288:1:9" + }, + { + "name": "d", + "nativeSrc": "9291:1:9", + "nodeType": "YulIdentifier", + "src": "9291:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9284:3:9", + "nodeType": "YulIdentifier", + "src": "9284:3:9" + }, + "nativeSrc": "9284:9:9", + "nodeType": "YulFunctionCall", + "src": "9284:9:9" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "9279:1:9", + "nodeType": "YulTypedName", + "src": "9279:1:9", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "9313:1:9", + "nodeType": "YulIdentifier", + "src": "9313:1:9" + }, + { + "kind": "number", + "nativeSrc": "9316:1:9", + "nodeType": "YulLiteral", + "src": "9316:1:9", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9306:6:9", + "nodeType": "YulIdentifier", + "src": "9306:6:9" + }, + "nativeSrc": "9306:12:9", + "nodeType": "YulFunctionCall", + "src": "9306:12:9" + }, + "nativeSrc": "9306:12:9", + "nodeType": "YulExpressionStatement", + "src": "9306:12:9" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9375:4:9", + "nodeType": "YulLiteral", + "src": "9375:4:9", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "o", + "nativeSrc": "9385:1:9", + "nodeType": "YulIdentifier", + "src": "9385:1:9" + }, + { + "kind": "number", + "nativeSrc": "9388:4:9", + "nodeType": "YulLiteral", + "src": "9388:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9381:3:9", + "nodeType": "YulIdentifier", + "src": "9381:3:9" + }, + "nativeSrc": "9381:12:9", + "nodeType": "YulFunctionCall", + "src": "9381:12:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9368:6:9", + "nodeType": "YulIdentifier", + "src": "9368:6:9" + }, + "nativeSrc": "9368:26:9", + "nodeType": "YulFunctionCall", + "src": "9368:26:9" + }, + "nativeSrc": "9368:26:9", + "nodeType": "YulExpressionStatement", + "src": "9368:26:9" + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "9434:6:9", + "nodeType": "YulIdentifier", + "src": "9434:6:9" + }, + { + "name": "n", + "nativeSrc": "9442:1:9", + "nodeType": "YulIdentifier", + "src": "9442:1:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9427:6:9", + "nodeType": "YulIdentifier", + "src": "9427:6:9" + }, + "nativeSrc": "9427:17:9", + "nodeType": "YulFunctionCall", + "src": "9427:17:9" + }, + "nativeSrc": "9427:17:9", + "nodeType": "YulExpressionStatement", + "src": "9427:17:9" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2703, + "isOffset": false, + "isSlot": false, + "src": "6947:6:9", + "valueSize": 1 + }, + { + "declaration": 2703, + "isOffset": false, + "isSlot": false, + "src": "7457:6:9", + "valueSize": 1 + }, + { + "declaration": 2703, + "isOffset": false, + "isSlot": false, + "src": "7520:6:9", + "valueSize": 1 + }, + { + "declaration": 2705, + "isOffset": false, + "isSlot": false, + "src": "6995:11:9", + "valueSize": 1 + }, + { + "declaration": 2705, + "isOffset": false, + "isSlot": false, + "src": "8368:11:9", + "valueSize": 1 + }, + { + "declaration": 2708, + "isOffset": false, + "isSlot": false, + "src": "6890:6:9", + "valueSize": 1 + }, + { + "declaration": 2708, + "isOffset": false, + "isSlot": false, + "src": "7033:6:9", + "valueSize": 1 + }, + { + "declaration": 2708, + "isOffset": false, + "isSlot": false, + "src": "9096:6:9", + "valueSize": 1 + }, + { + "declaration": 2708, + "isOffset": false, + "isSlot": false, + "src": "9434:6:9", + "valueSize": 1 + }, + { + "declaration": 2701, + "isOffset": false, + "isSlot": false, + "src": "7041:7:9", + "valueSize": 1 + }, + { + "declaration": 2701, + "isOffset": false, + "isSlot": false, + "src": "7097:7:9", + "valueSize": 1 + }, + { + "declaration": 2701, + "isOffset": false, + "isSlot": false, + "src": "7176:7:9", + "valueSize": 1 + }, + { + "declaration": 2701, + "isOffset": false, + "isSlot": false, + "src": "7248:7:9", + "valueSize": 1 + } + ], + "id": 2710, + "nodeType": "InlineAssembly", + "src": "6867:2608:9" + } + ] + }, + "documentation": { + "id": 2699, + "nodeType": "StructuredDocumentation", + "src": "6568:83:9", + "text": "@dev Returns `subject` all occurrences of `needle` replaced with `replacement`." + }, + "id": 2712, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "replace", + "nameLocation": "6665:7:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2706, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2701, + "mutability": "mutable", + "name": "subject", + "nameLocation": "6686:7:9", + "nodeType": "VariableDeclaration", + "scope": 2712, + "src": "6673:20:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2700, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6673:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2703, + "mutability": "mutable", + "name": "needle", + "nameLocation": "6708:6:9", + "nodeType": "VariableDeclaration", + "scope": 2712, + "src": "6695:19:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2702, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6695:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2705, + "mutability": "mutable", + "name": "replacement", + "nameLocation": "6729:11:9", + "nodeType": "VariableDeclaration", + "scope": 2712, + "src": "6716:24:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2704, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6716:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "6672:69:9" + }, + "returnParameters": { + "id": 2709, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2708, + "mutability": "mutable", + "name": "result", + "nameLocation": "6802:6:9", + "nodeType": "VariableDeclaration", + "scope": 2712, + "src": "6789:19:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2707, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6789:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "6788:21:9" + }, + "scope": 3089, + "src": "6656:2825:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2725, + "nodeType": "Block", + "src": "9857:1835:9", + "statements": [ + { + "AST": { + "nativeSrc": "9919:1767:9", + "nodeType": "YulBlock", + "src": "9919:1767:9", + "statements": [ + { + "nativeSrc": "9933:16:9", + "nodeType": "YulAssignment", + "src": "9933:16:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9947:1:9", + "nodeType": "YulLiteral", + "src": "9947:1:9", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "9943:3:9", + "nodeType": "YulIdentifier", + "src": "9943:3:9" + }, + "nativeSrc": "9943:6:9", + "nodeType": "YulFunctionCall", + "src": "9943:6:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "9933:6:9", + "nodeType": "YulIdentifier", + "src": "9933:6:9" + } + ] + }, + { + "body": { + "nativeSrc": "10038:1638:9", + "nodeType": "YulBlock", + "src": "10038:1638:9", + "statements": [ + { + "body": { + "nativeSrc": "10081:183:9", + "nodeType": "YulBlock", + "src": "10081:183:9", + "statements": [ + { + "nativeSrc": "10103:14:9", + "nodeType": "YulAssignment", + "src": "10103:14:9", + "value": { + "name": "from", + "nativeSrc": "10113:4:9", + "nodeType": "YulIdentifier", + "src": "10113:4:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "10103:6:9", + "nodeType": "YulIdentifier", + "src": "10103:6:9" + } + ] + }, + { + "body": { + "nativeSrc": "10170:9:9", + "nodeType": "YulBlock", + "src": "10170:9:9", + "statements": [ + { + "nativeSrc": "10172:5:9", + "nodeType": "YulBreak", + "src": "10172:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "from", + "nativeSrc": "10151:4:9", + "nodeType": "YulIdentifier", + "src": "10151:4:9" + }, + { + "name": "subjectLen", + "nativeSrc": "10157:10:9", + "nodeType": "YulIdentifier", + "src": "10157:10:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "10148:2:9", + "nodeType": "YulIdentifier", + "src": "10148:2:9" + }, + "nativeSrc": "10148:20:9", + "nodeType": "YulFunctionCall", + "src": "10148:20:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "10141:6:9", + "nodeType": "YulIdentifier", + "src": "10141:6:9" + }, + "nativeSrc": "10141:28:9", + "nodeType": "YulFunctionCall", + "src": "10141:28:9" + }, + "nativeSrc": "10138:41:9", + "nodeType": "YulIf", + "src": "10138:41:9" + }, + { + "nativeSrc": "10200:20:9", + "nodeType": "YulAssignment", + "src": "10200:20:9", + "value": { + "name": "subjectLen", + "nativeSrc": "10210:10:9", + "nodeType": "YulIdentifier", + "src": "10210:10:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "10200:6:9", + "nodeType": "YulIdentifier", + "src": "10200:6:9" + } + ] + }, + { + "nativeSrc": "10241:5:9", + "nodeType": "YulBreak", + "src": "10241:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "needle", + "nativeSrc": "10072:6:9", + "nodeType": "YulIdentifier", + "src": "10072:6:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "10066:5:9", + "nodeType": "YulIdentifier", + "src": "10066:5:9" + }, + "nativeSrc": "10066:13:9", + "nodeType": "YulFunctionCall", + "src": "10066:13:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "10059:6:9", + "nodeType": "YulIdentifier", + "src": "10059:6:9" + }, + "nativeSrc": "10059:21:9", + "nodeType": "YulFunctionCall", + "src": "10059:21:9" + }, + "nativeSrc": "10056:208:9", + "nodeType": "YulIf", + "src": "10056:208:9" + }, + { + "nativeSrc": "10281:30:9", + "nodeType": "YulVariableDeclaration", + "src": "10281:30:9", + "value": { + "arguments": [ + { + "name": "needle", + "nativeSrc": "10304:6:9", + "nodeType": "YulIdentifier", + "src": "10304:6:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "10298:5:9", + "nodeType": "YulIdentifier", + "src": "10298:5:9" + }, + "nativeSrc": "10298:13:9", + "nodeType": "YulFunctionCall", + "src": "10298:13:9" + }, + "variables": [ + { + "name": "needleLen", + "nativeSrc": "10285:9:9", + "nodeType": "YulTypedName", + "src": "10285:9:9", + "type": "" + } + ] + }, + { + "nativeSrc": "10328:38:9", + "nodeType": "YulVariableDeclaration", + "src": "10328:38:9", + "value": { + "arguments": [ + { + "name": "subject", + "nativeSrc": "10352:7:9", + "nodeType": "YulIdentifier", + "src": "10352:7:9" + }, + { + "kind": "number", + "nativeSrc": "10361:4:9", + "nodeType": "YulLiteral", + "src": "10361:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10348:3:9", + "nodeType": "YulIdentifier", + "src": "10348:3:9" + }, + "nativeSrc": "10348:18:9", + "nodeType": "YulFunctionCall", + "src": "10348:18:9" + }, + "variables": [ + { + "name": "subjectStart", + "nativeSrc": "10332:12:9", + "nodeType": "YulTypedName", + "src": "10332:12:9", + "type": "" + } + ] + }, + { + "nativeSrc": "10384:34:9", + "nodeType": "YulAssignment", + "src": "10384:34:9", + "value": { + "arguments": [ + { + "name": "subjectStart", + "nativeSrc": "10399:12:9", + "nodeType": "YulIdentifier", + "src": "10399:12:9" + }, + { + "name": "from", + "nativeSrc": "10413:4:9", + "nodeType": "YulIdentifier", + "src": "10413:4:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10395:3:9", + "nodeType": "YulIdentifier", + "src": "10395:3:9" + }, + "nativeSrc": "10395:23:9", + "nodeType": "YulFunctionCall", + "src": "10395:23:9" + }, + "variableNames": [ + { + "name": "subject", + "nativeSrc": "10384:7:9", + "nodeType": "YulIdentifier", + "src": "10384:7:9" + } + ] + }, + { + "nativeSrc": "10435:64:9", + "nodeType": "YulVariableDeclaration", + "src": "10435:64:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "subjectStart", + "nativeSrc": "10458:12:9", + "nodeType": "YulIdentifier", + "src": "10458:12:9" + }, + { + "name": "subjectLen", + "nativeSrc": "10472:10:9", + "nodeType": "YulIdentifier", + "src": "10472:10:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10454:3:9", + "nodeType": "YulIdentifier", + "src": "10454:3:9" + }, + "nativeSrc": "10454:29:9", + "nodeType": "YulFunctionCall", + "src": "10454:29:9" + }, + { + "name": "needleLen", + "nativeSrc": "10485:9:9", + "nodeType": "YulIdentifier", + "src": "10485:9:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "10450:3:9", + "nodeType": "YulIdentifier", + "src": "10450:3:9" + }, + "nativeSrc": "10450:45:9", + "nodeType": "YulFunctionCall", + "src": "10450:45:9" + }, + { + "kind": "number", + "nativeSrc": "10497:1:9", + "nodeType": "YulLiteral", + "src": "10497:1:9", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10446:3:9", + "nodeType": "YulIdentifier", + "src": "10446:3:9" + }, + "nativeSrc": "10446:53:9", + "nodeType": "YulFunctionCall", + "src": "10446:53:9" + }, + "variables": [ + { + "name": "end", + "nativeSrc": "10439:3:9", + "nodeType": "YulTypedName", + "src": "10439:3:9", + "type": "" + } + ] + }, + { + "nativeSrc": "10516:48:9", + "nodeType": "YulVariableDeclaration", + "src": "10516:48:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10529:1:9", + "nodeType": "YulLiteral", + "src": "10529:1:9", + "type": "", + "value": "3" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10536:4:9", + "nodeType": "YulLiteral", + "src": "10536:4:9", + "type": "", + "value": "0x20" + }, + { + "arguments": [ + { + "name": "needleLen", + "nativeSrc": "10546:9:9", + "nodeType": "YulIdentifier", + "src": "10546:9:9" + }, + { + "kind": "number", + "nativeSrc": "10557:4:9", + "nodeType": "YulLiteral", + "src": "10557:4:9", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "10542:3:9", + "nodeType": "YulIdentifier", + "src": "10542:3:9" + }, + "nativeSrc": "10542:20:9", + "nodeType": "YulFunctionCall", + "src": "10542:20:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "10532:3:9", + "nodeType": "YulIdentifier", + "src": "10532:3:9" + }, + "nativeSrc": "10532:31:9", + "nodeType": "YulFunctionCall", + "src": "10532:31:9" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "10525:3:9", + "nodeType": "YulIdentifier", + "src": "10525:3:9" + }, + "nativeSrc": "10525:39:9", + "nodeType": "YulFunctionCall", + "src": "10525:39:9" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "10520:1:9", + "nodeType": "YulTypedName", + "src": "10520:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "10581:33:9", + "nodeType": "YulVariableDeclaration", + "src": "10581:33:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "needle", + "nativeSrc": "10600:6:9", + "nodeType": "YulIdentifier", + "src": "10600:6:9" + }, + { + "kind": "number", + "nativeSrc": "10608:4:9", + "nodeType": "YulLiteral", + "src": "10608:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10596:3:9", + "nodeType": "YulIdentifier", + "src": "10596:3:9" + }, + "nativeSrc": "10596:17:9", + "nodeType": "YulFunctionCall", + "src": "10596:17:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "10590:5:9", + "nodeType": "YulIdentifier", + "src": "10590:5:9" + }, + "nativeSrc": "10590:24:9", + "nodeType": "YulFunctionCall", + "src": "10590:24:9" + }, + "variables": [ + { + "name": "s", + "nativeSrc": "10585:1:9", + "nodeType": "YulTypedName", + "src": "10585:1:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "10687:9:9", + "nodeType": "YulBlock", + "src": "10687:9:9", + "statements": [ + { + "nativeSrc": "10689:5:9", + "nodeType": "YulBreak", + "src": "10689:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "10649:7:9", + "nodeType": "YulIdentifier", + "src": "10649:7:9" + }, + { + "name": "end", + "nativeSrc": "10658:3:9", + "nodeType": "YulIdentifier", + "src": "10658:3:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "10646:2:9", + "nodeType": "YulIdentifier", + "src": "10646:2:9" + }, + "nativeSrc": "10646:16:9", + "nodeType": "YulFunctionCall", + "src": "10646:16:9" + }, + { + "arguments": [ + { + "name": "from", + "nativeSrc": "10667:4:9", + "nodeType": "YulIdentifier", + "src": "10667:4:9" + }, + { + "name": "subjectLen", + "nativeSrc": "10673:10:9", + "nodeType": "YulIdentifier", + "src": "10673:10:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "10664:2:9", + "nodeType": "YulIdentifier", + "src": "10664:2:9" + }, + "nativeSrc": "10664:20:9", + "nodeType": "YulFunctionCall", + "src": "10664:20:9" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "10642:3:9", + "nodeType": "YulIdentifier", + "src": "10642:3:9" + }, + "nativeSrc": "10642:43:9", + "nodeType": "YulFunctionCall", + "src": "10642:43:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "10635:6:9", + "nodeType": "YulIdentifier", + "src": "10635:6:9" + }, + "nativeSrc": "10635:51:9", + "nodeType": "YulFunctionCall", + "src": "10635:51:9" + }, + "nativeSrc": "10632:64:9", + "nodeType": "YulIf", + "src": "10632:64:9" + }, + { + "body": { + "nativeSrc": "10745:565:9", + "nodeType": "YulBlock", + "src": "10745:565:9", + "statements": [ + { + "body": { + "nativeSrc": "10829:437:9", + "nodeType": "YulBlock", + "src": "10829:437:9", + "statements": [ + { + "body": { + "nativeSrc": "10897:234:9", + "nodeType": "YulBlock", + "src": "10897:234:9", + "statements": [ + { + "body": { + "nativeSrc": "10967:138:9", + "nodeType": "YulBlock", + "src": "10967:138:9", + "statements": [ + { + "nativeSrc": "11001:36:9", + "nodeType": "YulAssignment", + "src": "11001:36:9", + "value": { + "arguments": [ + { + "name": "subject", + "nativeSrc": "11015:7:9", + "nodeType": "YulIdentifier", + "src": "11015:7:9" + }, + { + "name": "subjectStart", + "nativeSrc": "11024:12:9", + "nodeType": "YulIdentifier", + "src": "11024:12:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "11011:3:9", + "nodeType": "YulIdentifier", + "src": "11011:3:9" + }, + "nativeSrc": "11011:26:9", + "nodeType": "YulFunctionCall", + "src": "11011:26:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "11001:6:9", + "nodeType": "YulIdentifier", + "src": "11001:6:9" + } + ] + }, + { + "nativeSrc": "11070:5:9", + "nodeType": "YulBreak", + "src": "11070:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "10943:7:9", + "nodeType": "YulIdentifier", + "src": "10943:7:9" + }, + { + "name": "needleLen", + "nativeSrc": "10952:9:9", + "nodeType": "YulIdentifier", + "src": "10952:9:9" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "10933:9:9", + "nodeType": "YulIdentifier", + "src": "10933:9:9" + }, + "nativeSrc": "10933:29:9", + "nodeType": "YulFunctionCall", + "src": "10933:29:9" + }, + { + "name": "h", + "nativeSrc": "10964:1:9", + "nodeType": "YulIdentifier", + "src": "10964:1:9" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "10930:2:9", + "nodeType": "YulIdentifier", + "src": "10930:2:9" + }, + "nativeSrc": "10930:36:9", + "nodeType": "YulFunctionCall", + "src": "10930:36:9" + }, + "nativeSrc": "10927:178:9", + "nodeType": "YulIf", + "src": "10927:178:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "10869:1:9", + "nodeType": "YulIdentifier", + "src": "10869:1:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "10882:7:9", + "nodeType": "YulIdentifier", + "src": "10882:7:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "10876:5:9", + "nodeType": "YulIdentifier", + "src": "10876:5:9" + }, + "nativeSrc": "10876:14:9", + "nodeType": "YulFunctionCall", + "src": "10876:14:9" + }, + { + "name": "s", + "nativeSrc": "10892:1:9", + "nodeType": "YulIdentifier", + "src": "10892:1:9" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "10872:3:9", + "nodeType": "YulIdentifier", + "src": "10872:3:9" + }, + "nativeSrc": "10872:22:9", + "nodeType": "YulFunctionCall", + "src": "10872:22:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "10865:3:9", + "nodeType": "YulIdentifier", + "src": "10865:3:9" + }, + "nativeSrc": "10865:30:9", + "nodeType": "YulFunctionCall", + "src": "10865:30:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "10858:6:9", + "nodeType": "YulIdentifier", + "src": "10858:6:9" + }, + "nativeSrc": "10858:38:9", + "nodeType": "YulFunctionCall", + "src": "10858:38:9" + }, + "nativeSrc": "10855:276:9", + "nodeType": "YulIf", + "src": "10855:276:9" + }, + { + "nativeSrc": "11156:26:9", + "nodeType": "YulAssignment", + "src": "11156:26:9", + "value": { + "arguments": [ + { + "name": "subject", + "nativeSrc": "11171:7:9", + "nodeType": "YulIdentifier", + "src": "11171:7:9" + }, + { + "kind": "number", + "nativeSrc": "11180:1:9", + "nodeType": "YulLiteral", + "src": "11180:1:9", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11167:3:9", + "nodeType": "YulIdentifier", + "src": "11167:3:9" + }, + "nativeSrc": "11167:15:9", + "nodeType": "YulFunctionCall", + "src": "11167:15:9" + }, + "variableNames": [ + { + "name": "subject", + "nativeSrc": "11156:7:9", + "nodeType": "YulIdentifier", + "src": "11156:7:9" + } + ] + }, + { + "body": { + "nativeSrc": "11235:9:9", + "nodeType": "YulBlock", + "src": "11235:9:9", + "statements": [ + { + "nativeSrc": "11237:5:9", + "nodeType": "YulBreak", + "src": "11237:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "11220:7:9", + "nodeType": "YulIdentifier", + "src": "11220:7:9" + }, + { + "name": "end", + "nativeSrc": "11229:3:9", + "nodeType": "YulIdentifier", + "src": "11229:3:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "11217:2:9", + "nodeType": "YulIdentifier", + "src": "11217:2:9" + }, + "nativeSrc": "11217:16:9", + "nodeType": "YulFunctionCall", + "src": "11217:16:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "11210:6:9", + "nodeType": "YulIdentifier", + "src": "11210:6:9" + }, + "nativeSrc": "11210:24:9", + "nodeType": "YulFunctionCall", + "src": "11210:24:9" + }, + "nativeSrc": "11207:37:9", + "nodeType": "YulIf", + "src": "11207:37:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "10824:1:9", + "nodeType": "YulLiteral", + "src": "10824:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "10767:499:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "10826:2:9", + "nodeType": "YulBlock", + "src": "10826:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "10771:52:9", + "nodeType": "YulBlock", + "src": "10771:52:9", + "statements": [ + { + "nativeSrc": "10773:48:9", + "nodeType": "YulVariableDeclaration", + "src": "10773:48:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "needle", + "nativeSrc": "10796:6:9", + "nodeType": "YulIdentifier", + "src": "10796:6:9" + }, + { + "kind": "number", + "nativeSrc": "10804:4:9", + "nodeType": "YulLiteral", + "src": "10804:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10792:3:9", + "nodeType": "YulIdentifier", + "src": "10792:3:9" + }, + "nativeSrc": "10792:17:9", + "nodeType": "YulFunctionCall", + "src": "10792:17:9" + }, + { + "name": "needleLen", + "nativeSrc": "10811:9:9", + "nodeType": "YulIdentifier", + "src": "10811:9:9" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "10782:9:9", + "nodeType": "YulIdentifier", + "src": "10782:9:9" + }, + "nativeSrc": "10782:39:9", + "nodeType": "YulFunctionCall", + "src": "10782:39:9" + }, + "variables": [ + { + "name": "h", + "nativeSrc": "10777:1:9", + "nodeType": "YulTypedName", + "src": "10777:1:9", + "type": "" + } + ] + } + ] + }, + "src": "10767:499:9" + }, + { + "nativeSrc": "11287:5:9", + "nodeType": "YulBreak", + "src": "11287:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "needleLen", + "nativeSrc": "10727:9:9", + "nodeType": "YulIdentifier", + "src": "10727:9:9" + }, + { + "kind": "number", + "nativeSrc": "10738:4:9", + "nodeType": "YulLiteral", + "src": "10738:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "10724:2:9", + "nodeType": "YulIdentifier", + "src": "10724:2:9" + }, + "nativeSrc": "10724:19:9", + "nodeType": "YulFunctionCall", + "src": "10724:19:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "10717:6:9", + "nodeType": "YulIdentifier", + "src": "10717:6:9" + }, + "nativeSrc": "10717:27:9", + "nodeType": "YulFunctionCall", + "src": "10717:27:9" + }, + "nativeSrc": "10714:596:9", + "nodeType": "YulIf", + "src": "10714:596:9" + }, + { + "body": { + "nativeSrc": "11339:301:9", + "nodeType": "YulBlock", + "src": "11339:301:9", + "statements": [ + { + "body": { + "nativeSrc": "11403:114:9", + "nodeType": "YulBlock", + "src": "11403:114:9", + "statements": [ + { + "nativeSrc": "11429:36:9", + "nodeType": "YulAssignment", + "src": "11429:36:9", + "value": { + "arguments": [ + { + "name": "subject", + "nativeSrc": "11443:7:9", + "nodeType": "YulIdentifier", + "src": "11443:7:9" + }, + { + "name": "subjectStart", + "nativeSrc": "11452:12:9", + "nodeType": "YulIdentifier", + "src": "11452:12:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "11439:3:9", + "nodeType": "YulIdentifier", + "src": "11439:3:9" + }, + "nativeSrc": "11439:26:9", + "nodeType": "YulFunctionCall", + "src": "11439:26:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "11429:6:9", + "nodeType": "YulIdentifier", + "src": "11429:6:9" + } + ] + }, + { + "nativeSrc": "11490:5:9", + "nodeType": "YulBreak", + "src": "11490:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "11375:1:9", + "nodeType": "YulIdentifier", + "src": "11375:1:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "11388:7:9", + "nodeType": "YulIdentifier", + "src": "11388:7:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "11382:5:9", + "nodeType": "YulIdentifier", + "src": "11382:5:9" + }, + "nativeSrc": "11382:14:9", + "nodeType": "YulFunctionCall", + "src": "11382:14:9" + }, + { + "name": "s", + "nativeSrc": "11398:1:9", + "nodeType": "YulIdentifier", + "src": "11398:1:9" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "11378:3:9", + "nodeType": "YulIdentifier", + "src": "11378:3:9" + }, + "nativeSrc": "11378:22:9", + "nodeType": "YulFunctionCall", + "src": "11378:22:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "11371:3:9", + "nodeType": "YulIdentifier", + "src": "11371:3:9" + }, + "nativeSrc": "11371:30:9", + "nodeType": "YulFunctionCall", + "src": "11371:30:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "11364:6:9", + "nodeType": "YulIdentifier", + "src": "11364:6:9" + }, + "nativeSrc": "11364:38:9", + "nodeType": "YulFunctionCall", + "src": "11364:38:9" + }, + "nativeSrc": "11361:156:9", + "nodeType": "YulIf", + "src": "11361:156:9" + }, + { + "nativeSrc": "11538:26:9", + "nodeType": "YulAssignment", + "src": "11538:26:9", + "value": { + "arguments": [ + { + "name": "subject", + "nativeSrc": "11553:7:9", + "nodeType": "YulIdentifier", + "src": "11553:7:9" + }, + { + "kind": "number", + "nativeSrc": "11562:1:9", + "nodeType": "YulLiteral", + "src": "11562:1:9", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11549:3:9", + "nodeType": "YulIdentifier", + "src": "11549:3:9" + }, + "nativeSrc": "11549:15:9", + "nodeType": "YulFunctionCall", + "src": "11549:15:9" + }, + "variableNames": [ + { + "name": "subject", + "nativeSrc": "11538:7:9", + "nodeType": "YulIdentifier", + "src": "11538:7:9" + } + ] + }, + { + "body": { + "nativeSrc": "11613:9:9", + "nodeType": "YulBlock", + "src": "11613:9:9", + "statements": [ + { + "nativeSrc": "11615:5:9", + "nodeType": "YulBreak", + "src": "11615:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "11598:7:9", + "nodeType": "YulIdentifier", + "src": "11598:7:9" + }, + { + "name": "end", + "nativeSrc": "11607:3:9", + "nodeType": "YulIdentifier", + "src": "11607:3:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "11595:2:9", + "nodeType": "YulIdentifier", + "src": "11595:2:9" + }, + "nativeSrc": "11595:16:9", + "nodeType": "YulFunctionCall", + "src": "11595:16:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "11588:6:9", + "nodeType": "YulIdentifier", + "src": "11588:6:9" + }, + "nativeSrc": "11588:24:9", + "nodeType": "YulFunctionCall", + "src": "11588:24:9" + }, + "nativeSrc": "11585:37:9", + "nodeType": "YulIf", + "src": "11585:37:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "11334:1:9", + "nodeType": "YulLiteral", + "src": "11334:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "11327:313:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "11336:2:9", + "nodeType": "YulBlock", + "src": "11336:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "11331:2:9", + "nodeType": "YulBlock", + "src": "11331:2:9", + "statements": [] + }, + "src": "11327:313:9" + }, + { + "nativeSrc": "11657:5:9", + "nodeType": "YulBreak", + "src": "11657:5:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "10033:1:9", + "nodeType": "YulLiteral", + "src": "10033:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "9992:1684:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "10035:2:9", + "nodeType": "YulBlock", + "src": "10035:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "9996:36:9", + "nodeType": "YulBlock", + "src": "9996:36:9", + "statements": [ + { + "nativeSrc": "9998:32:9", + "nodeType": "YulVariableDeclaration", + "src": "9998:32:9", + "value": { + "arguments": [ + { + "name": "subject", + "nativeSrc": "10022:7:9", + "nodeType": "YulIdentifier", + "src": "10022:7:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "10016:5:9", + "nodeType": "YulIdentifier", + "src": "10016:5:9" + }, + "nativeSrc": "10016:14:9", + "nodeType": "YulFunctionCall", + "src": "10016:14:9" + }, + "variables": [ + { + "name": "subjectLen", + "nativeSrc": "10002:10:9", + "nodeType": "YulTypedName", + "src": "10002:10:9", + "type": "" + } + ] + } + ] + }, + "src": "9992:1684:9" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2719, + "isOffset": false, + "isSlot": false, + "src": "10113:4:9", + "valueSize": 1 + }, + { + "declaration": 2719, + "isOffset": false, + "isSlot": false, + "src": "10151:4:9", + "valueSize": 1 + }, + { + "declaration": 2719, + "isOffset": false, + "isSlot": false, + "src": "10413:4:9", + "valueSize": 1 + }, + { + "declaration": 2719, + "isOffset": false, + "isSlot": false, + "src": "10667:4:9", + "valueSize": 1 + }, + { + "declaration": 2717, + "isOffset": false, + "isSlot": false, + "src": "10072:6:9", + "valueSize": 1 + }, + { + "declaration": 2717, + "isOffset": false, + "isSlot": false, + "src": "10304:6:9", + "valueSize": 1 + }, + { + "declaration": 2717, + "isOffset": false, + "isSlot": false, + "src": "10600:6:9", + "valueSize": 1 + }, + { + "declaration": 2717, + "isOffset": false, + "isSlot": false, + "src": "10796:6:9", + "valueSize": 1 + }, + { + "declaration": 2722, + "isOffset": false, + "isSlot": false, + "src": "10103:6:9", + "valueSize": 1 + }, + { + "declaration": 2722, + "isOffset": false, + "isSlot": false, + "src": "10200:6:9", + "valueSize": 1 + }, + { + "declaration": 2722, + "isOffset": false, + "isSlot": false, + "src": "11001:6:9", + "valueSize": 1 + }, + { + "declaration": 2722, + "isOffset": false, + "isSlot": false, + "src": "11429:6:9", + "valueSize": 1 + }, + { + "declaration": 2722, + "isOffset": false, + "isSlot": false, + "src": "9933:6:9", + "valueSize": 1 + }, + { + "declaration": 2715, + "isOffset": false, + "isSlot": false, + "src": "10022:7:9", + "valueSize": 1 + }, + { + "declaration": 2715, + "isOffset": false, + "isSlot": false, + "src": "10352:7:9", + "valueSize": 1 + }, + { + "declaration": 2715, + "isOffset": false, + "isSlot": false, + "src": "10384:7:9", + "valueSize": 1 + }, + { + "declaration": 2715, + "isOffset": false, + "isSlot": false, + "src": "10649:7:9", + "valueSize": 1 + }, + { + "declaration": 2715, + "isOffset": false, + "isSlot": false, + "src": "10882:7:9", + "valueSize": 1 + }, + { + "declaration": 2715, + "isOffset": false, + "isSlot": false, + "src": "10943:7:9", + "valueSize": 1 + }, + { + "declaration": 2715, + "isOffset": false, + "isSlot": false, + "src": "11015:7:9", + "valueSize": 1 + }, + { + "declaration": 2715, + "isOffset": false, + "isSlot": false, + "src": "11156:7:9", + "valueSize": 1 + }, + { + "declaration": 2715, + "isOffset": false, + "isSlot": false, + "src": "11171:7:9", + "valueSize": 1 + }, + { + "declaration": 2715, + "isOffset": false, + "isSlot": false, + "src": "11220:7:9", + "valueSize": 1 + }, + { + "declaration": 2715, + "isOffset": false, + "isSlot": false, + "src": "11388:7:9", + "valueSize": 1 + }, + { + "declaration": 2715, + "isOffset": false, + "isSlot": false, + "src": "11443:7:9", + "valueSize": 1 + }, + { + "declaration": 2715, + "isOffset": false, + "isSlot": false, + "src": "11538:7:9", + "valueSize": 1 + }, + { + "declaration": 2715, + "isOffset": false, + "isSlot": false, + "src": "11553:7:9", + "valueSize": 1 + }, + { + "declaration": 2715, + "isOffset": false, + "isSlot": false, + "src": "11598:7:9", + "valueSize": 1 + } + ], + "id": 2724, + "nodeType": "InlineAssembly", + "src": "9910:1776:9" + } + ] + }, + "documentation": { + "id": 2713, + "nodeType": "StructuredDocumentation", + "src": "9487:224:9", + "text": "@dev Returns the byte index of the first location of `needle` in `subject`,\n needleing from left to right, starting from `from`.\n Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `needle` is not found." + }, + "id": 2726, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "indexOf", + "nameLocation": "9725:7:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2720, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2715, + "mutability": "mutable", + "name": "subject", + "nameLocation": "9746:7:9", + "nodeType": "VariableDeclaration", + "scope": 2726, + "src": "9733:20:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2714, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "9733:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2717, + "mutability": "mutable", + "name": "needle", + "nameLocation": "9768:6:9", + "nodeType": "VariableDeclaration", + "scope": 2726, + "src": "9755:19:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2716, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "9755:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2719, + "mutability": "mutable", + "name": "from", + "nameLocation": "9784:4:9", + "nodeType": "VariableDeclaration", + "scope": 2726, + "src": "9776:12:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2718, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9776:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9732:57:9" + }, + "returnParameters": { + "id": 2723, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2722, + "mutability": "mutable", + "name": "result", + "nameLocation": "9845:6:9", + "nodeType": "VariableDeclaration", + "scope": 2726, + "src": "9837:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2721, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9837:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9836:16:9" + }, + "scope": 3089, + "src": "9716:1976:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2742, + "nodeType": "Block", + "src": "11997:51:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2737, + "name": "subject", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2729, + "src": "12022:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 2738, + "name": "needle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2731, + "src": "12031:6:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "hexValue": "30", + "id": 2739, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12039:1:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2736, + "name": "indexOf", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2726, + 2743 + ], + "referencedDeclaration": 2726, + "src": "12014:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (bytes memory,bytes memory,uint256) pure returns (uint256)" + } + }, + "id": 2740, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12014:27:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2735, + "id": 2741, + "nodeType": "Return", + "src": "12007:34:9" + } + ] + }, + "documentation": { + "id": 2727, + "nodeType": "StructuredDocumentation", + "src": "11698:202:9", + "text": "@dev Returns the byte index of the first location of `needle` in `subject`,\n needleing from left to right.\n Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `needle` is not found." + }, + "id": 2743, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "indexOf", + "nameLocation": "11914:7:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2732, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2729, + "mutability": "mutable", + "name": "subject", + "nameLocation": "11935:7:9", + "nodeType": "VariableDeclaration", + "scope": 2743, + "src": "11922:20:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2728, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "11922:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2731, + "mutability": "mutable", + "name": "needle", + "nameLocation": "11957:6:9", + "nodeType": "VariableDeclaration", + "scope": 2743, + "src": "11944:19:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2730, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "11944:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "11921:43:9" + }, + "returnParameters": { + "id": 2735, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2734, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2743, + "src": "11988:7:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2733, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11988:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11987:9:9" + }, + "scope": 3089, + "src": "11905:143:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2756, + "nodeType": "Block", + "src": "12428:1170:9", + "statements": [ + { + "AST": { + "nativeSrc": "12490:1102:9", + "nodeType": "YulBlock", + "src": "12490:1102:9", + "statements": [ + { + "body": { + "nativeSrc": "12516:1066:9", + "nodeType": "YulBlock", + "src": "12516:1066:9", + "statements": [ + { + "nativeSrc": "12534:16:9", + "nodeType": "YulAssignment", + "src": "12534:16:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12548:1:9", + "nodeType": "YulLiteral", + "src": "12548:1:9", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "12544:3:9", + "nodeType": "YulIdentifier", + "src": "12544:3:9" + }, + "nativeSrc": "12544:6:9", + "nodeType": "YulFunctionCall", + "src": "12544:6:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "12534:6:9", + "nodeType": "YulIdentifier", + "src": "12534:6:9" + } + ] + }, + { + "nativeSrc": "12597:30:9", + "nodeType": "YulVariableDeclaration", + "src": "12597:30:9", + "value": { + "arguments": [ + { + "name": "needle", + "nativeSrc": "12620:6:9", + "nodeType": "YulIdentifier", + "src": "12620:6:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "12614:5:9", + "nodeType": "YulIdentifier", + "src": "12614:5:9" + }, + "nativeSrc": "12614:13:9", + "nodeType": "YulFunctionCall", + "src": "12614:13:9" + }, + "variables": [ + { + "name": "needleLen", + "nativeSrc": "12601:9:9", + "nodeType": "YulTypedName", + "src": "12601:9:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "12677:9:9", + "nodeType": "YulBlock", + "src": "12677:9:9", + "statements": [ + { + "nativeSrc": "12679:5:9", + "nodeType": "YulBreak", + "src": "12679:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "needleLen", + "nativeSrc": "12650:9:9", + "nodeType": "YulIdentifier", + "src": "12650:9:9" + }, + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "12667:7:9", + "nodeType": "YulIdentifier", + "src": "12667:7:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "12661:5:9", + "nodeType": "YulIdentifier", + "src": "12661:5:9" + }, + "nativeSrc": "12661:14:9", + "nodeType": "YulFunctionCall", + "src": "12661:14:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "12647:2:9", + "nodeType": "YulIdentifier", + "src": "12647:2:9" + }, + "nativeSrc": "12647:29:9", + "nodeType": "YulFunctionCall", + "src": "12647:29:9" + }, + "nativeSrc": "12644:42:9", + "nodeType": "YulIf", + "src": "12644:42:9" + }, + { + "nativeSrc": "12703:15:9", + "nodeType": "YulVariableDeclaration", + "src": "12703:15:9", + "value": { + "name": "result", + "nativeSrc": "12712:6:9", + "nodeType": "YulIdentifier", + "src": "12712:6:9" + }, + "variables": [ + { + "name": "w", + "nativeSrc": "12707:1:9", + "nodeType": "YulTypedName", + "src": "12707:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "12736:45:9", + "nodeType": "YulVariableDeclaration", + "src": "12736:45:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "12761:7:9", + "nodeType": "YulIdentifier", + "src": "12761:7:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "12755:5:9", + "nodeType": "YulIdentifier", + "src": "12755:5:9" + }, + "nativeSrc": "12755:14:9", + "nodeType": "YulFunctionCall", + "src": "12755:14:9" + }, + { + "name": "needleLen", + "nativeSrc": "12771:9:9", + "nodeType": "YulIdentifier", + "src": "12771:9:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "12751:3:9", + "nodeType": "YulIdentifier", + "src": "12751:3:9" + }, + "nativeSrc": "12751:30:9", + "nodeType": "YulFunctionCall", + "src": "12751:30:9" + }, + "variables": [ + { + "name": "fromMax", + "nativeSrc": "12740:7:9", + "nodeType": "YulTypedName", + "src": "12740:7:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "12827:19:9", + "nodeType": "YulBlock", + "src": "12827:19:9", + "statements": [ + { + "nativeSrc": "12829:15:9", + "nodeType": "YulAssignment", + "src": "12829:15:9", + "value": { + "name": "fromMax", + "nativeSrc": "12837:7:9", + "nodeType": "YulIdentifier", + "src": "12837:7:9" + }, + "variableNames": [ + { + "name": "from", + "nativeSrc": "12829:4:9", + "nodeType": "YulIdentifier", + "src": "12829:4:9" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "fromMax", + "nativeSrc": "12811:7:9", + "nodeType": "YulIdentifier", + "src": "12811:7:9" + }, + { + "name": "from", + "nativeSrc": "12820:4:9", + "nodeType": "YulIdentifier", + "src": "12820:4:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "12808:2:9", + "nodeType": "YulIdentifier", + "src": "12808:2:9" + }, + "nativeSrc": "12808:17:9", + "nodeType": "YulFunctionCall", + "src": "12808:17:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "12801:6:9", + "nodeType": "YulIdentifier", + "src": "12801:6:9" + }, + "nativeSrc": "12801:25:9", + "nodeType": "YulFunctionCall", + "src": "12801:25:9" + }, + "nativeSrc": "12798:48:9", + "nodeType": "YulIf", + "src": "12798:48:9" + }, + { + "nativeSrc": "12864:37:9", + "nodeType": "YulVariableDeclaration", + "src": "12864:37:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "12883:7:9", + "nodeType": "YulIdentifier", + "src": "12883:7:9" + }, + { + "kind": "number", + "nativeSrc": "12892:4:9", + "nodeType": "YulLiteral", + "src": "12892:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12879:3:9", + "nodeType": "YulIdentifier", + "src": "12879:3:9" + }, + "nativeSrc": "12879:18:9", + "nodeType": "YulFunctionCall", + "src": "12879:18:9" + }, + { + "name": "w", + "nativeSrc": "12899:1:9", + "nodeType": "YulIdentifier", + "src": "12899:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12875:3:9", + "nodeType": "YulIdentifier", + "src": "12875:3:9" + }, + "nativeSrc": "12875:26:9", + "nodeType": "YulFunctionCall", + "src": "12875:26:9" + }, + "variables": [ + { + "name": "end", + "nativeSrc": "12868:3:9", + "nodeType": "YulTypedName", + "src": "12868:3:9", + "type": "" + } + ] + }, + { + "nativeSrc": "12918:40:9", + "nodeType": "YulAssignment", + "src": "12918:40:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "12937:7:9", + "nodeType": "YulIdentifier", + "src": "12937:7:9" + }, + { + "kind": "number", + "nativeSrc": "12946:4:9", + "nodeType": "YulLiteral", + "src": "12946:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12933:3:9", + "nodeType": "YulIdentifier", + "src": "12933:3:9" + }, + "nativeSrc": "12933:18:9", + "nodeType": "YulFunctionCall", + "src": "12933:18:9" + }, + { + "name": "from", + "nativeSrc": "12953:4:9", + "nodeType": "YulIdentifier", + "src": "12953:4:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12929:3:9", + "nodeType": "YulIdentifier", + "src": "12929:3:9" + }, + "nativeSrc": "12929:29:9", + "nodeType": "YulFunctionCall", + "src": "12929:29:9" + }, + "variableNames": [ + { + "name": "subject", + "nativeSrc": "12918:7:9", + "nodeType": "YulIdentifier", + "src": "12918:7:9" + } + ] + }, + { + "body": { + "nativeSrc": "13003:9:9", + "nodeType": "YulBlock", + "src": "13003:9:9", + "statements": [ + { + "nativeSrc": "13005:5:9", + "nodeType": "YulBreak", + "src": "13005:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "12988:7:9", + "nodeType": "YulIdentifier", + "src": "12988:7:9" + }, + { + "name": "end", + "nativeSrc": "12997:3:9", + "nodeType": "YulIdentifier", + "src": "12997:3:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "12985:2:9", + "nodeType": "YulIdentifier", + "src": "12985:2:9" + }, + "nativeSrc": "12985:16:9", + "nodeType": "YulFunctionCall", + "src": "12985:16:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "12978:6:9", + "nodeType": "YulIdentifier", + "src": "12978:6:9" + }, + "nativeSrc": "12978:24:9", + "nodeType": "YulFunctionCall", + "src": "12978:24:9" + }, + "nativeSrc": "12975:37:9", + "nodeType": "YulIf", + "src": "12975:37:9" + }, + { + "body": { + "nativeSrc": "13226:320:9", + "nodeType": "YulBlock", + "src": "13226:320:9", + "statements": [ + { + "body": { + "nativeSrc": "13288:113:9", + "nodeType": "YulBlock", + "src": "13288:113:9", + "statements": [ + { + "nativeSrc": "13314:35:9", + "nodeType": "YulAssignment", + "src": "13314:35:9", + "value": { + "arguments": [ + { + "name": "subject", + "nativeSrc": "13328:7:9", + "nodeType": "YulIdentifier", + "src": "13328:7:9" + }, + { + "arguments": [ + { + "name": "end", + "nativeSrc": "13341:3:9", + "nodeType": "YulIdentifier", + "src": "13341:3:9" + }, + { + "kind": "number", + "nativeSrc": "13346:1:9", + "nodeType": "YulLiteral", + "src": "13346:1:9", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13337:3:9", + "nodeType": "YulIdentifier", + "src": "13337:3:9" + }, + "nativeSrc": "13337:11:9", + "nodeType": "YulFunctionCall", + "src": "13337:11:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "13324:3:9", + "nodeType": "YulIdentifier", + "src": "13324:3:9" + }, + "nativeSrc": "13324:25:9", + "nodeType": "YulFunctionCall", + "src": "13324:25:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "13314:6:9", + "nodeType": "YulIdentifier", + "src": "13314:6:9" + } + ] + }, + { + "nativeSrc": "13374:5:9", + "nodeType": "YulBreak", + "src": "13374:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "13264:7:9", + "nodeType": "YulIdentifier", + "src": "13264:7:9" + }, + { + "name": "needleLen", + "nativeSrc": "13273:9:9", + "nodeType": "YulIdentifier", + "src": "13273:9:9" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "13254:9:9", + "nodeType": "YulIdentifier", + "src": "13254:9:9" + }, + "nativeSrc": "13254:29:9", + "nodeType": "YulFunctionCall", + "src": "13254:29:9" + }, + { + "name": "h", + "nativeSrc": "13285:1:9", + "nodeType": "YulIdentifier", + "src": "13285:1:9" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "13251:2:9", + "nodeType": "YulIdentifier", + "src": "13251:2:9" + }, + "nativeSrc": "13251:36:9", + "nodeType": "YulFunctionCall", + "src": "13251:36:9" + }, + "nativeSrc": "13248:153:9", + "nodeType": "YulIf", + "src": "13248:153:9" + }, + { + "nativeSrc": "13422:26:9", + "nodeType": "YulAssignment", + "src": "13422:26:9", + "value": { + "arguments": [ + { + "name": "subject", + "nativeSrc": "13437:7:9", + "nodeType": "YulIdentifier", + "src": "13437:7:9" + }, + { + "name": "w", + "nativeSrc": "13446:1:9", + "nodeType": "YulIdentifier", + "src": "13446:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13433:3:9", + "nodeType": "YulIdentifier", + "src": "13433:3:9" + }, + "nativeSrc": "13433:15:9", + "nodeType": "YulFunctionCall", + "src": "13433:15:9" + }, + "variableNames": [ + { + "name": "subject", + "nativeSrc": "13422:7:9", + "nodeType": "YulIdentifier", + "src": "13422:7:9" + } + ] + }, + { + "body": { + "nativeSrc": "13519:9:9", + "nodeType": "YulBlock", + "src": "13519:9:9", + "statements": [ + { + "nativeSrc": "13521:5:9", + "nodeType": "YulBreak", + "src": "13521:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "13504:7:9", + "nodeType": "YulIdentifier", + "src": "13504:7:9" + }, + { + "name": "end", + "nativeSrc": "13513:3:9", + "nodeType": "YulIdentifier", + "src": "13513:3:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "13501:2:9", + "nodeType": "YulIdentifier", + "src": "13501:2:9" + }, + "nativeSrc": "13501:16:9", + "nodeType": "YulFunctionCall", + "src": "13501:16:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "13494:6:9", + "nodeType": "YulIdentifier", + "src": "13494:6:9" + }, + "nativeSrc": "13494:24:9", + "nodeType": "YulFunctionCall", + "src": "13494:24:9" + }, + "nativeSrc": "13491:37:9", + "nodeType": "YulIf", + "src": "13491:37:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "13221:1:9", + "nodeType": "YulLiteral", + "src": "13221:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "13164:382:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "13223:2:9", + "nodeType": "YulBlock", + "src": "13223:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "13168:52:9", + "nodeType": "YulBlock", + "src": "13168:52:9", + "statements": [ + { + "nativeSrc": "13170:48:9", + "nodeType": "YulVariableDeclaration", + "src": "13170:48:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "needle", + "nativeSrc": "13193:6:9", + "nodeType": "YulIdentifier", + "src": "13193:6:9" + }, + { + "kind": "number", + "nativeSrc": "13201:4:9", + "nodeType": "YulLiteral", + "src": "13201:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13189:3:9", + "nodeType": "YulIdentifier", + "src": "13189:3:9" + }, + "nativeSrc": "13189:17:9", + "nodeType": "YulFunctionCall", + "src": "13189:17:9" + }, + { + "name": "needleLen", + "nativeSrc": "13208:9:9", + "nodeType": "YulIdentifier", + "src": "13208:9:9" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "13179:9:9", + "nodeType": "YulIdentifier", + "src": "13179:9:9" + }, + "nativeSrc": "13179:39:9", + "nodeType": "YulFunctionCall", + "src": "13179:39:9" + }, + "variables": [ + { + "name": "h", + "nativeSrc": "13174:1:9", + "nodeType": "YulTypedName", + "src": "13174:1:9", + "type": "" + } + ] + } + ] + }, + "src": "13164:382:9" + }, + { + "nativeSrc": "13563:5:9", + "nodeType": "YulBreak", + "src": "13563:5:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "12511:1:9", + "nodeType": "YulLiteral", + "src": "12511:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "12504:1078:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "12513:2:9", + "nodeType": "YulBlock", + "src": "12513:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "12508:2:9", + "nodeType": "YulBlock", + "src": "12508:2:9", + "statements": [] + }, + "src": "12504:1078:9" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2750, + "isOffset": false, + "isSlot": false, + "src": "12820:4:9", + "valueSize": 1 + }, + { + "declaration": 2750, + "isOffset": false, + "isSlot": false, + "src": "12829:4:9", + "valueSize": 1 + }, + { + "declaration": 2750, + "isOffset": false, + "isSlot": false, + "src": "12953:4:9", + "valueSize": 1 + }, + { + "declaration": 2748, + "isOffset": false, + "isSlot": false, + "src": "12620:6:9", + "valueSize": 1 + }, + { + "declaration": 2748, + "isOffset": false, + "isSlot": false, + "src": "13193:6:9", + "valueSize": 1 + }, + { + "declaration": 2753, + "isOffset": false, + "isSlot": false, + "src": "12534:6:9", + "valueSize": 1 + }, + { + "declaration": 2753, + "isOffset": false, + "isSlot": false, + "src": "12712:6:9", + "valueSize": 1 + }, + { + "declaration": 2753, + "isOffset": false, + "isSlot": false, + "src": "13314:6:9", + "valueSize": 1 + }, + { + "declaration": 2746, + "isOffset": false, + "isSlot": false, + "src": "12667:7:9", + "valueSize": 1 + }, + { + "declaration": 2746, + "isOffset": false, + "isSlot": false, + "src": "12761:7:9", + "valueSize": 1 + }, + { + "declaration": 2746, + "isOffset": false, + "isSlot": false, + "src": "12883:7:9", + "valueSize": 1 + }, + { + "declaration": 2746, + "isOffset": false, + "isSlot": false, + "src": "12918:7:9", + "valueSize": 1 + }, + { + "declaration": 2746, + "isOffset": false, + "isSlot": false, + "src": "12937:7:9", + "valueSize": 1 + }, + { + "declaration": 2746, + "isOffset": false, + "isSlot": false, + "src": "12988:7:9", + "valueSize": 1 + }, + { + "declaration": 2746, + "isOffset": false, + "isSlot": false, + "src": "13264:7:9", + "valueSize": 1 + }, + { + "declaration": 2746, + "isOffset": false, + "isSlot": false, + "src": "13328:7:9", + "valueSize": 1 + }, + { + "declaration": 2746, + "isOffset": false, + "isSlot": false, + "src": "13422:7:9", + "valueSize": 1 + }, + { + "declaration": 2746, + "isOffset": false, + "isSlot": false, + "src": "13437:7:9", + "valueSize": 1 + }, + { + "declaration": 2746, + "isOffset": false, + "isSlot": false, + "src": "13504:7:9", + "valueSize": 1 + } + ], + "id": 2755, + "nodeType": "InlineAssembly", + "src": "12481:1111:9" + } + ] + }, + "documentation": { + "id": 2744, + "nodeType": "StructuredDocumentation", + "src": "12054:224:9", + "text": "@dev Returns the byte index of the first location of `needle` in `subject`,\n needleing from right to left, starting from `from`.\n Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `needle` is not found." + }, + "id": 2757, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "lastIndexOf", + "nameLocation": "12292:11:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2751, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2746, + "mutability": "mutable", + "name": "subject", + "nameLocation": "12317:7:9", + "nodeType": "VariableDeclaration", + "scope": 2757, + "src": "12304:20:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2745, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12304:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2748, + "mutability": "mutable", + "name": "needle", + "nameLocation": "12339:6:9", + "nodeType": "VariableDeclaration", + "scope": 2757, + "src": "12326:19:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2747, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12326:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2750, + "mutability": "mutable", + "name": "from", + "nameLocation": "12355:4:9", + "nodeType": "VariableDeclaration", + "scope": 2757, + "src": "12347:12:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2749, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12347:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12303:57:9" + }, + "returnParameters": { + "id": 2754, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2753, + "mutability": "mutable", + "name": "result", + "nameLocation": "12416:6:9", + "nodeType": "VariableDeclaration", + "scope": 2757, + "src": "12408:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2752, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12408:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12407:16:9" + }, + "scope": 3089, + "src": "12283:1315:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2777, + "nodeType": "Block", + "src": "13935:71:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2768, + "name": "subject", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2760, + "src": "13964:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 2769, + "name": "needle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2762, + "src": "13973:6:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "expression": { + "arguments": [ + { + "id": 2772, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13986:7:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2771, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13986:7:9", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 2770, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "13981:4:9", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2773, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13981:13:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 2774, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "13995:3:9", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "13981:17:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2767, + "name": "lastIndexOf", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2757, + 2778 + ], + "referencedDeclaration": 2757, + "src": "13952:11:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (bytes memory,bytes memory,uint256) pure returns (uint256)" + } + }, + "id": 2775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13952:47:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2766, + "id": 2776, + "nodeType": "Return", + "src": "13945:54:9" + } + ] + }, + "documentation": { + "id": 2758, + "nodeType": "StructuredDocumentation", + "src": "13604:202:9", + "text": "@dev Returns the byte index of the first location of `needle` in `subject`,\n needleing from right to left.\n Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `needle` is not found." + }, + "id": 2778, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "lastIndexOf", + "nameLocation": "13820:11:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2763, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2760, + "mutability": "mutable", + "name": "subject", + "nameLocation": "13845:7:9", + "nodeType": "VariableDeclaration", + "scope": 2778, + "src": "13832:20:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2759, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "13832:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2762, + "mutability": "mutable", + "name": "needle", + "nameLocation": "13867:6:9", + "nodeType": "VariableDeclaration", + "scope": 2778, + "src": "13854:19:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2761, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "13854:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "13831:43:9" + }, + "returnParameters": { + "id": 2766, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2765, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2778, + "src": "13922:7:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2764, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13922:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "13921:9:9" + }, + "scope": 3089, + "src": "13811:195:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2795, + "nodeType": "Block", + "src": "14180:61:9", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2793, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 2789, + "name": "subject", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2781, + "src": "14205:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 2790, + "name": "needle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2783, + "src": "14214:6:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2788, + "name": "indexOf", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2726, + 2743 + ], + "referencedDeclaration": 2743, + "src": "14197:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_uint256_$", + "typeString": "function (bytes memory,bytes memory) pure returns (uint256)" + } + }, + "id": 2791, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14197:24:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 2792, + "name": "NOT_FOUND", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2598, + "src": "14225:9:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14197:37:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2787, + "id": 2794, + "nodeType": "Return", + "src": "14190:44:9" + } + ] + }, + "documentation": { + "id": 2779, + "nodeType": "StructuredDocumentation", + "src": "14012:73:9", + "text": "@dev Returns true if `needle` is found in `subject`, false otherwise." + }, + "id": 2796, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "contains", + "nameLocation": "14099:8:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2784, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2781, + "mutability": "mutable", + "name": "subject", + "nameLocation": "14121:7:9", + "nodeType": "VariableDeclaration", + "scope": 2796, + "src": "14108:20:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2780, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "14108:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2783, + "mutability": "mutable", + "name": "needle", + "nameLocation": "14143:6:9", + "nodeType": "VariableDeclaration", + "scope": 2796, + "src": "14130:19:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2782, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "14130:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "14107:43:9" + }, + "returnParameters": { + "id": 2787, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2786, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2796, + "src": "14174:4:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2785, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "14174:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "14173:6:9" + }, + "scope": 3089, + "src": "14090:151:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2807, + "nodeType": "Block", + "src": "14435:322:9", + "statements": [ + { + "AST": { + "nativeSrc": "14497:254:9", + "nodeType": "YulBlock", + "src": "14497:254:9", + "statements": [ + { + "nativeSrc": "14511:22:9", + "nodeType": "YulVariableDeclaration", + "src": "14511:22:9", + "value": { + "arguments": [ + { + "name": "needle", + "nativeSrc": "14526:6:9", + "nodeType": "YulIdentifier", + "src": "14526:6:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "14520:5:9", + "nodeType": "YulIdentifier", + "src": "14520:5:9" + }, + "nativeSrc": "14520:13:9", + "nodeType": "YulFunctionCall", + "src": "14520:13:9" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "14515:1:9", + "nodeType": "YulTypedName", + "src": "14515:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "14612:78:9", + "nodeType": "YulVariableDeclaration", + "src": "14612:78:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "14638:7:9", + "nodeType": "YulIdentifier", + "src": "14638:7:9" + }, + { + "kind": "number", + "nativeSrc": "14647:4:9", + "nodeType": "YulLiteral", + "src": "14647:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14634:3:9", + "nodeType": "YulIdentifier", + "src": "14634:3:9" + }, + "nativeSrc": "14634:18:9", + "nodeType": "YulFunctionCall", + "src": "14634:18:9" + }, + { + "name": "n", + "nativeSrc": "14654:1:9", + "nodeType": "YulIdentifier", + "src": "14654:1:9" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "14624:9:9", + "nodeType": "YulIdentifier", + "src": "14624:9:9" + }, + "nativeSrc": "14624:32:9", + "nodeType": "YulFunctionCall", + "src": "14624:32:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "needle", + "nativeSrc": "14672:6:9", + "nodeType": "YulIdentifier", + "src": "14672:6:9" + }, + { + "kind": "number", + "nativeSrc": "14680:4:9", + "nodeType": "YulLiteral", + "src": "14680:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14668:3:9", + "nodeType": "YulIdentifier", + "src": "14668:3:9" + }, + "nativeSrc": "14668:17:9", + "nodeType": "YulFunctionCall", + "src": "14668:17:9" + }, + { + "name": "n", + "nativeSrc": "14687:1:9", + "nodeType": "YulIdentifier", + "src": "14687:1:9" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "14658:9:9", + "nodeType": "YulIdentifier", + "src": "14658:9:9" + }, + "nativeSrc": "14658:31:9", + "nodeType": "YulFunctionCall", + "src": "14658:31:9" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "14621:2:9", + "nodeType": "YulIdentifier", + "src": "14621:2:9" + }, + "nativeSrc": "14621:69:9", + "nodeType": "YulFunctionCall", + "src": "14621:69:9" + }, + "variables": [ + { + "name": "t", + "nativeSrc": "14616:1:9", + "nodeType": "YulTypedName", + "src": "14616:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "14703:38:9", + "nodeType": "YulAssignment", + "src": "14703:38:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "n", + "nativeSrc": "14719:1:9", + "nodeType": "YulIdentifier", + "src": "14719:1:9" + }, + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "14728:7:9", + "nodeType": "YulIdentifier", + "src": "14728:7:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "14722:5:9", + "nodeType": "YulIdentifier", + "src": "14722:5:9" + }, + "nativeSrc": "14722:14:9", + "nodeType": "YulFunctionCall", + "src": "14722:14:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "14716:2:9", + "nodeType": "YulIdentifier", + "src": "14716:2:9" + }, + "nativeSrc": "14716:21:9", + "nodeType": "YulFunctionCall", + "src": "14716:21:9" + }, + { + "name": "t", + "nativeSrc": "14739:1:9", + "nodeType": "YulIdentifier", + "src": "14739:1:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "14713:2:9", + "nodeType": "YulIdentifier", + "src": "14713:2:9" + }, + "nativeSrc": "14713:28:9", + "nodeType": "YulFunctionCall", + "src": "14713:28:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "14703:6:9", + "nodeType": "YulIdentifier", + "src": "14703:6:9" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2801, + "isOffset": false, + "isSlot": false, + "src": "14526:6:9", + "valueSize": 1 + }, + { + "declaration": 2801, + "isOffset": false, + "isSlot": false, + "src": "14672:6:9", + "valueSize": 1 + }, + { + "declaration": 2804, + "isOffset": false, + "isSlot": false, + "src": "14703:6:9", + "valueSize": 1 + }, + { + "declaration": 2799, + "isOffset": false, + "isSlot": false, + "src": "14638:7:9", + "valueSize": 1 + }, + { + "declaration": 2799, + "isOffset": false, + "isSlot": false, + "src": "14728:7:9", + "valueSize": 1 + } + ], + "id": 2806, + "nodeType": "InlineAssembly", + "src": "14488:263:9" + } + ] + }, + "documentation": { + "id": 2797, + "nodeType": "StructuredDocumentation", + "src": "14247:56:9", + "text": "@dev Returns whether `subject` starts with `needle`." + }, + "id": 2808, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "startsWith", + "nameLocation": "14317:10:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2802, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2799, + "mutability": "mutable", + "name": "subject", + "nameLocation": "14341:7:9", + "nodeType": "VariableDeclaration", + "scope": 2808, + "src": "14328:20:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2798, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "14328:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2801, + "mutability": "mutable", + "name": "needle", + "nameLocation": "14363:6:9", + "nodeType": "VariableDeclaration", + "scope": 2808, + "src": "14350:19:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2800, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "14350:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "14327:43:9" + }, + "returnParameters": { + "id": 2805, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2804, + "mutability": "mutable", + "name": "result", + "nameLocation": "14423:6:9", + "nodeType": "VariableDeclaration", + "scope": 2808, + "src": "14418:11:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2803, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "14418:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "14417:13:9" + }, + "scope": 3089, + "src": "14308:449:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2819, + "nodeType": "Block", + "src": "14947:491:9", + "statements": [ + { + "AST": { + "nativeSrc": "15009:423:9", + "nodeType": "YulBlock", + "src": "15009:423:9", + "statements": [ + { + "nativeSrc": "15023:22:9", + "nodeType": "YulVariableDeclaration", + "src": "15023:22:9", + "value": { + "arguments": [ + { + "name": "needle", + "nativeSrc": "15038:6:9", + "nodeType": "YulIdentifier", + "src": "15038:6:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "15032:5:9", + "nodeType": "YulIdentifier", + "src": "15032:5:9" + }, + "nativeSrc": "15032:13:9", + "nodeType": "YulFunctionCall", + "src": "15032:13:9" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "15027:1:9", + "nodeType": "YulTypedName", + "src": "15027:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "15058:39:9", + "nodeType": "YulVariableDeclaration", + "src": "15058:39:9", + "value": { + "arguments": [ + { + "name": "n", + "nativeSrc": "15079:1:9", + "nodeType": "YulIdentifier", + "src": "15079:1:9" + }, + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "15088:7:9", + "nodeType": "YulIdentifier", + "src": "15088:7:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "15082:5:9", + "nodeType": "YulIdentifier", + "src": "15082:5:9" + }, + "nativeSrc": "15082:14:9", + "nodeType": "YulFunctionCall", + "src": "15082:14:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "15076:2:9", + "nodeType": "YulIdentifier", + "src": "15076:2:9" + }, + "nativeSrc": "15076:21:9", + "nodeType": "YulFunctionCall", + "src": "15076:21:9" + }, + "variables": [ + { + "name": "notInRange", + "nativeSrc": "15062:10:9", + "nodeType": "YulTypedName", + "src": "15062:10:9", + "type": "" + } + ] + }, + { + "nativeSrc": "15184:81:9", + "nodeType": "YulVariableDeclaration", + "src": "15184:81:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "15201:7:9", + "nodeType": "YulIdentifier", + "src": "15201:7:9" + }, + { + "kind": "number", + "nativeSrc": "15210:4:9", + "nodeType": "YulLiteral", + "src": "15210:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15197:3:9", + "nodeType": "YulIdentifier", + "src": "15197:3:9" + }, + "nativeSrc": "15197:18:9", + "nodeType": "YulFunctionCall", + "src": "15197:18:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "notInRange", + "nativeSrc": "15228:10:9", + "nodeType": "YulIdentifier", + "src": "15228:10:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "15221:6:9", + "nodeType": "YulIdentifier", + "src": "15221:6:9" + }, + "nativeSrc": "15221:18:9", + "nodeType": "YulFunctionCall", + "src": "15221:18:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "15251:7:9", + "nodeType": "YulIdentifier", + "src": "15251:7:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "15245:5:9", + "nodeType": "YulIdentifier", + "src": "15245:5:9" + }, + "nativeSrc": "15245:14:9", + "nodeType": "YulFunctionCall", + "src": "15245:14:9" + }, + { + "name": "n", + "nativeSrc": "15261:1:9", + "nodeType": "YulIdentifier", + "src": "15261:1:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "15241:3:9", + "nodeType": "YulIdentifier", + "src": "15241:3:9" + }, + "nativeSrc": "15241:22:9", + "nodeType": "YulFunctionCall", + "src": "15241:22:9" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "15217:3:9", + "nodeType": "YulIdentifier", + "src": "15217:3:9" + }, + "nativeSrc": "15217:47:9", + "nodeType": "YulFunctionCall", + "src": "15217:47:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15193:3:9", + "nodeType": "YulIdentifier", + "src": "15193:3:9" + }, + "nativeSrc": "15193:72:9", + "nodeType": "YulFunctionCall", + "src": "15193:72:9" + }, + "variables": [ + { + "name": "t", + "nativeSrc": "15188:1:9", + "nodeType": "YulTypedName", + "src": "15188:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "15344:78:9", + "nodeType": "YulAssignment", + "src": "15344:78:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "t", + "nativeSrc": "15370:1:9", + "nodeType": "YulIdentifier", + "src": "15370:1:9" + }, + { + "name": "n", + "nativeSrc": "15373:1:9", + "nodeType": "YulIdentifier", + "src": "15373:1:9" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "15360:9:9", + "nodeType": "YulIdentifier", + "src": "15360:9:9" + }, + "nativeSrc": "15360:15:9", + "nodeType": "YulFunctionCall", + "src": "15360:15:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "needle", + "nativeSrc": "15391:6:9", + "nodeType": "YulIdentifier", + "src": "15391:6:9" + }, + { + "kind": "number", + "nativeSrc": "15399:4:9", + "nodeType": "YulLiteral", + "src": "15399:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15387:3:9", + "nodeType": "YulIdentifier", + "src": "15387:3:9" + }, + "nativeSrc": "15387:17:9", + "nodeType": "YulFunctionCall", + "src": "15387:17:9" + }, + { + "name": "n", + "nativeSrc": "15406:1:9", + "nodeType": "YulIdentifier", + "src": "15406:1:9" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "15377:9:9", + "nodeType": "YulIdentifier", + "src": "15377:9:9" + }, + "nativeSrc": "15377:31:9", + "nodeType": "YulFunctionCall", + "src": "15377:31:9" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "15357:2:9", + "nodeType": "YulIdentifier", + "src": "15357:2:9" + }, + "nativeSrc": "15357:52:9", + "nodeType": "YulFunctionCall", + "src": "15357:52:9" + }, + { + "name": "notInRange", + "nativeSrc": "15411:10:9", + "nodeType": "YulIdentifier", + "src": "15411:10:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "15354:2:9", + "nodeType": "YulIdentifier", + "src": "15354:2:9" + }, + "nativeSrc": "15354:68:9", + "nodeType": "YulFunctionCall", + "src": "15354:68:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "15344:6:9", + "nodeType": "YulIdentifier", + "src": "15344:6:9" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2813, + "isOffset": false, + "isSlot": false, + "src": "15038:6:9", + "valueSize": 1 + }, + { + "declaration": 2813, + "isOffset": false, + "isSlot": false, + "src": "15391:6:9", + "valueSize": 1 + }, + { + "declaration": 2816, + "isOffset": false, + "isSlot": false, + "src": "15344:6:9", + "valueSize": 1 + }, + { + "declaration": 2811, + "isOffset": false, + "isSlot": false, + "src": "15088:7:9", + "valueSize": 1 + }, + { + "declaration": 2811, + "isOffset": false, + "isSlot": false, + "src": "15201:7:9", + "valueSize": 1 + }, + { + "declaration": 2811, + "isOffset": false, + "isSlot": false, + "src": "15251:7:9", + "valueSize": 1 + } + ], + "id": 2818, + "nodeType": "InlineAssembly", + "src": "15000:432:9" + } + ] + }, + "documentation": { + "id": 2809, + "nodeType": "StructuredDocumentation", + "src": "14763:54:9", + "text": "@dev Returns whether `subject` ends with `needle`." + }, + "id": 2820, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "endsWith", + "nameLocation": "14831:8:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2814, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2811, + "mutability": "mutable", + "name": "subject", + "nameLocation": "14853:7:9", + "nodeType": "VariableDeclaration", + "scope": 2820, + "src": "14840:20:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2810, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "14840:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2813, + "mutability": "mutable", + "name": "needle", + "nameLocation": "14875:6:9", + "nodeType": "VariableDeclaration", + "scope": 2820, + "src": "14862:19:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2812, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "14862:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "14839:43:9" + }, + "returnParameters": { + "id": 2817, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2816, + "mutability": "mutable", + "name": "result", + "nameLocation": "14935:6:9", + "nodeType": "VariableDeclaration", + "scope": 2820, + "src": "14930:11:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2815, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "14930:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "14929:13:9" + }, + "scope": 3089, + "src": "14822:616:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2831, + "nodeType": "Block", + "src": "15618:1002:9", + "statements": [ + { + "AST": { + "nativeSrc": "15680:934:9", + "nodeType": "YulBlock", + "src": "15680:934:9", + "statements": [ + { + "nativeSrc": "15694:23:9", + "nodeType": "YulVariableDeclaration", + "src": "15694:23:9", + "value": { + "arguments": [ + { + "name": "subject", + "nativeSrc": "15709:7:9", + "nodeType": "YulIdentifier", + "src": "15709:7:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "15703:5:9", + "nodeType": "YulIdentifier", + "src": "15703:5:9" + }, + "nativeSrc": "15703:14:9", + "nodeType": "YulFunctionCall", + "src": "15703:14:9" + }, + "variables": [ + { + "name": "l", + "nativeSrc": "15698:1:9", + "nodeType": "YulTypedName", + "src": "15698:1:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "15789:815:9", + "nodeType": "YulBlock", + "src": "15789:815:9", + "statements": [ + { + "nativeSrc": "15807:21:9", + "nodeType": "YulAssignment", + "src": "15807:21:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "15823:4:9", + "nodeType": "YulLiteral", + "src": "15823:4:9", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "15817:5:9", + "nodeType": "YulIdentifier", + "src": "15817:5:9" + }, + "nativeSrc": "15817:11:9", + "nodeType": "YulFunctionCall", + "src": "15817:11:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "15807:6:9", + "nodeType": "YulIdentifier", + "src": "15807:6:9" + } + ] + }, + { + "nativeSrc": "15845:29:9", + "nodeType": "YulAssignment", + "src": "15845:29:9", + "value": { + "arguments": [ + { + "name": "subject", + "nativeSrc": "15860:7:9", + "nodeType": "YulIdentifier", + "src": "15860:7:9" + }, + { + "kind": "number", + "nativeSrc": "15869:4:9", + "nodeType": "YulLiteral", + "src": "15869:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15856:3:9", + "nodeType": "YulIdentifier", + "src": "15856:3:9" + }, + "nativeSrc": "15856:18:9", + "nodeType": "YulFunctionCall", + "src": "15856:18:9" + }, + "variableNames": [ + { + "name": "subject", + "nativeSrc": "15845:7:9", + "nodeType": "YulIdentifier", + "src": "15845:7:9" + } + ] + }, + { + "nativeSrc": "15891:26:9", + "nodeType": "YulVariableDeclaration", + "src": "15891:26:9", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "15904:6:9", + "nodeType": "YulIdentifier", + "src": "15904:6:9" + }, + { + "kind": "number", + "nativeSrc": "15912:4:9", + "nodeType": "YulLiteral", + "src": "15912:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15900:3:9", + "nodeType": "YulIdentifier", + "src": "15900:3:9" + }, + "nativeSrc": "15900:17:9", + "nodeType": "YulFunctionCall", + "src": "15900:17:9" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "15895:1:9", + "nodeType": "YulTypedName", + "src": "15895:1:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "15946:436:9", + "nodeType": "YulBlock", + "src": "15946:436:9", + "statements": [ + { + "body": { + "nativeSrc": "16054:185:9", + "nodeType": "YulBlock", + "src": "16054:185:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "16091:1:9", + "nodeType": "YulIdentifier", + "src": "16091:1:9" + }, + { + "name": "j", + "nativeSrc": "16094:1:9", + "nodeType": "YulIdentifier", + "src": "16094:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16087:3:9", + "nodeType": "YulIdentifier", + "src": "16087:3:9" + }, + "nativeSrc": "16087:9:9", + "nodeType": "YulFunctionCall", + "src": "16087:9:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "16108:7:9", + "nodeType": "YulIdentifier", + "src": "16108:7:9" + }, + { + "name": "j", + "nativeSrc": "16117:1:9", + "nodeType": "YulIdentifier", + "src": "16117:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16104:3:9", + "nodeType": "YulIdentifier", + "src": "16104:3:9" + }, + "nativeSrc": "16104:15:9", + "nodeType": "YulFunctionCall", + "src": "16104:15:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "16098:5:9", + "nodeType": "YulIdentifier", + "src": "16098:5:9" + }, + "nativeSrc": "16098:22:9", + "nodeType": "YulFunctionCall", + "src": "16098:22:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "16080:6:9", + "nodeType": "YulIdentifier", + "src": "16080:6:9" + }, + "nativeSrc": "16080:41:9", + "nodeType": "YulFunctionCall", + "src": "16080:41:9" + }, + "nativeSrc": "16080:41:9", + "nodeType": "YulExpressionStatement", + "src": "16080:41:9" + }, + { + "nativeSrc": "16146:17:9", + "nodeType": "YulAssignment", + "src": "16146:17:9", + "value": { + "arguments": [ + { + "name": "j", + "nativeSrc": "16155:1:9", + "nodeType": "YulIdentifier", + "src": "16155:1:9" + }, + { + "kind": "number", + "nativeSrc": "16158:4:9", + "nodeType": "YulLiteral", + "src": "16158:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16151:3:9", + "nodeType": "YulIdentifier", + "src": "16151:3:9" + }, + "nativeSrc": "16151:12:9", + "nodeType": "YulFunctionCall", + "src": "16151:12:9" + }, + "variableNames": [ + { + "name": "j", + "nativeSrc": "16146:1:9", + "nodeType": "YulIdentifier", + "src": "16146:1:9" + } + ] + }, + { + "body": { + "nativeSrc": "16208:9:9", + "nodeType": "YulBlock", + "src": "16208:9:9", + "statements": [ + { + "nativeSrc": "16210:5:9", + "nodeType": "YulBreak", + "src": "16210:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "j", + "nativeSrc": "16201:1:9", + "nodeType": "YulIdentifier", + "src": "16201:1:9" + }, + { + "name": "l", + "nativeSrc": "16204:1:9", + "nodeType": "YulIdentifier", + "src": "16204:1:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "16198:2:9", + "nodeType": "YulIdentifier", + "src": "16198:2:9" + }, + "nativeSrc": "16198:8:9", + "nodeType": "YulFunctionCall", + "src": "16198:8:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "16191:6:9", + "nodeType": "YulIdentifier", + "src": "16191:6:9" + }, + "nativeSrc": "16191:16:9", + "nodeType": "YulFunctionCall", + "src": "16191:16:9" + }, + "nativeSrc": "16188:29:9", + "nodeType": "YulIf", + "src": "16188:29:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "16049:1:9", + "nodeType": "YulLiteral", + "src": "16049:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "16030:209:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "16051:2:9", + "nodeType": "YulBlock", + "src": "16051:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "16034:14:9", + "nodeType": "YulBlock", + "src": "16034:14:9", + "statements": [ + { + "nativeSrc": "16036:10:9", + "nodeType": "YulVariableDeclaration", + "src": "16036:10:9", + "value": { + "kind": "number", + "nativeSrc": "16045:1:9", + "nodeType": "YulLiteral", + "src": "16045:1:9", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "j", + "nativeSrc": "16040:1:9", + "nodeType": "YulTypedName", + "src": "16040:1:9", + "type": "" + } + ] + } + ] + }, + "src": "16030:209:9" + }, + { + "nativeSrc": "16260:14:9", + "nodeType": "YulAssignment", + "src": "16260:14:9", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "16269:1:9", + "nodeType": "YulIdentifier", + "src": "16269:1:9" + }, + { + "name": "l", + "nativeSrc": "16272:1:9", + "nodeType": "YulIdentifier", + "src": "16272:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16265:3:9", + "nodeType": "YulIdentifier", + "src": "16265:3:9" + }, + "nativeSrc": "16265:9:9", + "nodeType": "YulFunctionCall", + "src": "16265:9:9" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "16260:1:9", + "nodeType": "YulIdentifier", + "src": "16260:1:9" + } + ] + }, + { + "nativeSrc": "16295:22:9", + "nodeType": "YulAssignment", + "src": "16295:22:9", + "value": { + "arguments": [ + { + "name": "times", + "nativeSrc": "16308:5:9", + "nodeType": "YulIdentifier", + "src": "16308:5:9" + }, + { + "kind": "number", + "nativeSrc": "16315:1:9", + "nodeType": "YulLiteral", + "src": "16315:1:9", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "16304:3:9", + "nodeType": "YulIdentifier", + "src": "16304:3:9" + }, + "nativeSrc": "16304:13:9", + "nodeType": "YulFunctionCall", + "src": "16304:13:9" + }, + "variableNames": [ + { + "name": "times", + "nativeSrc": "16295:5:9", + "nodeType": "YulIdentifier", + "src": "16295:5:9" + } + ] + }, + { + "body": { + "nativeSrc": "16355:9:9", + "nodeType": "YulBlock", + "src": "16355:9:9", + "statements": [ + { + "nativeSrc": "16357:5:9", + "nodeType": "YulBreak", + "src": "16357:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "times", + "nativeSrc": "16348:5:9", + "nodeType": "YulIdentifier", + "src": "16348:5:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "16341:6:9", + "nodeType": "YulIdentifier", + "src": "16341:6:9" + }, + "nativeSrc": "16341:13:9", + "nodeType": "YulFunctionCall", + "src": "16341:13:9" + }, + "nativeSrc": "16338:26:9", + "nodeType": "YulIf", + "src": "16338:26:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "15941:1:9", + "nodeType": "YulLiteral", + "src": "15941:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "15934:448:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "15943:2:9", + "nodeType": "YulBlock", + "src": "15943:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "15938:2:9", + "nodeType": "YulBlock", + "src": "15938:2:9", + "statements": [] + }, + "src": "15934:448:9" + }, + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "16406:1:9", + "nodeType": "YulIdentifier", + "src": "16406:1:9" + }, + { + "kind": "number", + "nativeSrc": "16409:1:9", + "nodeType": "YulLiteral", + "src": "16409:1:9", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "16399:6:9", + "nodeType": "YulIdentifier", + "src": "16399:6:9" + }, + "nativeSrc": "16399:12:9", + "nodeType": "YulFunctionCall", + "src": "16399:12:9" + }, + "nativeSrc": "16399:12:9", + "nodeType": "YulExpressionStatement", + "src": "16399:12:9" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "16472:4:9", + "nodeType": "YulLiteral", + "src": "16472:4:9", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "o", + "nativeSrc": "16482:1:9", + "nodeType": "YulIdentifier", + "src": "16482:1:9" + }, + { + "kind": "number", + "nativeSrc": "16485:4:9", + "nodeType": "YulLiteral", + "src": "16485:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16478:3:9", + "nodeType": "YulIdentifier", + "src": "16478:3:9" + }, + "nativeSrc": "16478:12:9", + "nodeType": "YulFunctionCall", + "src": "16478:12:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "16465:6:9", + "nodeType": "YulIdentifier", + "src": "16465:6:9" + }, + "nativeSrc": "16465:26:9", + "nodeType": "YulFunctionCall", + "src": "16465:26:9" + }, + "nativeSrc": "16465:26:9", + "nodeType": "YulExpressionStatement", + "src": "16465:26:9" + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "16535:6:9", + "nodeType": "YulIdentifier", + "src": "16535:6:9" + }, + { + "arguments": [ + { + "name": "o", + "nativeSrc": "16547:1:9", + "nodeType": "YulIdentifier", + "src": "16547:1:9" + }, + { + "arguments": [ + { + "name": "result", + "nativeSrc": "16554:6:9", + "nodeType": "YulIdentifier", + "src": "16554:6:9" + }, + { + "kind": "number", + "nativeSrc": "16562:4:9", + "nodeType": "YulLiteral", + "src": "16562:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16550:3:9", + "nodeType": "YulIdentifier", + "src": "16550:3:9" + }, + "nativeSrc": "16550:17:9", + "nodeType": "YulFunctionCall", + "src": "16550:17:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "16543:3:9", + "nodeType": "YulIdentifier", + "src": "16543:3:9" + }, + "nativeSrc": "16543:25:9", + "nodeType": "YulFunctionCall", + "src": "16543:25:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "16528:6:9", + "nodeType": "YulIdentifier", + "src": "16528:6:9" + }, + "nativeSrc": "16528:41:9", + "nodeType": "YulFunctionCall", + "src": "16528:41:9" + }, + "nativeSrc": "16528:41:9", + "nodeType": "YulExpressionStatement", + "src": "16528:41:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "times", + "nativeSrc": "15769:5:9", + "nodeType": "YulIdentifier", + "src": "15769:5:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "15762:6:9", + "nodeType": "YulIdentifier", + "src": "15762:6:9" + }, + "nativeSrc": "15762:13:9", + "nodeType": "YulFunctionCall", + "src": "15762:13:9" + }, + { + "arguments": [ + { + "name": "l", + "nativeSrc": "15784:1:9", + "nodeType": "YulIdentifier", + "src": "15784:1:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "15777:6:9", + "nodeType": "YulIdentifier", + "src": "15777:6:9" + }, + "nativeSrc": "15777:9:9", + "nodeType": "YulFunctionCall", + "src": "15777:9:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "15759:2:9", + "nodeType": "YulIdentifier", + "src": "15759:2:9" + }, + "nativeSrc": "15759:28:9", + "nodeType": "YulFunctionCall", + "src": "15759:28:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "15752:6:9", + "nodeType": "YulIdentifier", + "src": "15752:6:9" + }, + "nativeSrc": "15752:36:9", + "nodeType": "YulFunctionCall", + "src": "15752:36:9" + }, + "nativeSrc": "15749:855:9", + "nodeType": "YulIf", + "src": "15749:855:9" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2828, + "isOffset": false, + "isSlot": false, + "src": "15807:6:9", + "valueSize": 1 + }, + { + "declaration": 2828, + "isOffset": false, + "isSlot": false, + "src": "15904:6:9", + "valueSize": 1 + }, + { + "declaration": 2828, + "isOffset": false, + "isSlot": false, + "src": "16535:6:9", + "valueSize": 1 + }, + { + "declaration": 2828, + "isOffset": false, + "isSlot": false, + "src": "16554:6:9", + "valueSize": 1 + }, + { + "declaration": 2823, + "isOffset": false, + "isSlot": false, + "src": "15709:7:9", + "valueSize": 1 + }, + { + "declaration": 2823, + "isOffset": false, + "isSlot": false, + "src": "15845:7:9", + "valueSize": 1 + }, + { + "declaration": 2823, + "isOffset": false, + "isSlot": false, + "src": "15860:7:9", + "valueSize": 1 + }, + { + "declaration": 2823, + "isOffset": false, + "isSlot": false, + "src": "16108:7:9", + "valueSize": 1 + }, + { + "declaration": 2825, + "isOffset": false, + "isSlot": false, + "src": "15769:5:9", + "valueSize": 1 + }, + { + "declaration": 2825, + "isOffset": false, + "isSlot": false, + "src": "16295:5:9", + "valueSize": 1 + }, + { + "declaration": 2825, + "isOffset": false, + "isSlot": false, + "src": "16308:5:9", + "valueSize": 1 + }, + { + "declaration": 2825, + "isOffset": false, + "isSlot": false, + "src": "16348:5:9", + "valueSize": 1 + } + ], + "id": 2830, + "nodeType": "InlineAssembly", + "src": "15671:943:9" + } + ] + }, + "documentation": { + "id": 2821, + "nodeType": "StructuredDocumentation", + "src": "15444:44:9", + "text": "@dev Returns `subject` repeated `times`." + }, + "id": 2832, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "repeat", + "nameLocation": "15502:6:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2826, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2823, + "mutability": "mutable", + "name": "subject", + "nameLocation": "15522:7:9", + "nodeType": "VariableDeclaration", + "scope": 2832, + "src": "15509:20:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2822, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "15509:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2825, + "mutability": "mutable", + "name": "times", + "nameLocation": "15539:5:9", + "nodeType": "VariableDeclaration", + "scope": 2832, + "src": "15531:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2824, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15531:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "15508:37:9" + }, + "returnParameters": { + "id": 2829, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2828, + "mutability": "mutable", + "name": "result", + "nameLocation": "15606:6:9", + "nodeType": "VariableDeclaration", + "scope": 2832, + "src": "15593:19:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2827, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "15593:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "15592:21:9" + }, + "scope": 3089, + "src": "15493:1127:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2845, + "nodeType": "Block", + "src": "16890:978:9", + "statements": [ + { + "AST": { + "nativeSrc": "16952:910:9", + "nodeType": "YulBlock", + "src": "16952:910:9", + "statements": [ + { + "nativeSrc": "16966:23:9", + "nodeType": "YulVariableDeclaration", + "src": "16966:23:9", + "value": { + "arguments": [ + { + "name": "subject", + "nativeSrc": "16981:7:9", + "nodeType": "YulIdentifier", + "src": "16981:7:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "16975:5:9", + "nodeType": "YulIdentifier", + "src": "16975:5:9" + }, + "nativeSrc": "16975:14:9", + "nodeType": "YulFunctionCall", + "src": "16975:14:9" + }, + "variables": [ + { + "name": "l", + "nativeSrc": "16970:1:9", + "nodeType": "YulTypedName", + "src": "16970:1:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "17043:12:9", + "nodeType": "YulBlock", + "src": "17043:12:9", + "statements": [ + { + "nativeSrc": "17045:8:9", + "nodeType": "YulAssignment", + "src": "17045:8:9", + "value": { + "name": "l", + "nativeSrc": "17052:1:9", + "nodeType": "YulIdentifier", + "src": "17052:1:9" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "17045:3:9", + "nodeType": "YulIdentifier", + "src": "17045:3:9" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "l", + "nativeSrc": "17034:1:9", + "nodeType": "YulIdentifier", + "src": "17034:1:9" + }, + { + "name": "end", + "nativeSrc": "17037:3:9", + "nodeType": "YulIdentifier", + "src": "17037:3:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "17031:2:9", + "nodeType": "YulIdentifier", + "src": "17031:2:9" + }, + "nativeSrc": "17031:10:9", + "nodeType": "YulFunctionCall", + "src": "17031:10:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "17024:6:9", + "nodeType": "YulIdentifier", + "src": "17024:6:9" + }, + "nativeSrc": "17024:18:9", + "nodeType": "YulFunctionCall", + "src": "17024:18:9" + }, + "nativeSrc": "17021:34:9", + "nodeType": "YulIf", + "src": "17021:34:9" + }, + { + "body": { + "nativeSrc": "17092:14:9", + "nodeType": "YulBlock", + "src": "17092:14:9", + "statements": [ + { + "nativeSrc": "17094:10:9", + "nodeType": "YulAssignment", + "src": "17094:10:9", + "value": { + "name": "l", + "nativeSrc": "17103:1:9", + "nodeType": "YulIdentifier", + "src": "17103:1:9" + }, + "variableNames": [ + { + "name": "start", + "nativeSrc": "17094:5:9", + "nodeType": "YulIdentifier", + "src": "17094:5:9" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "l", + "nativeSrc": "17081:1:9", + "nodeType": "YulIdentifier", + "src": "17081:1:9" + }, + { + "name": "start", + "nativeSrc": "17084:5:9", + "nodeType": "YulIdentifier", + "src": "17084:5:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "17078:2:9", + "nodeType": "YulIdentifier", + "src": "17078:2:9" + }, + "nativeSrc": "17078:12:9", + "nodeType": "YulFunctionCall", + "src": "17078:12:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "17071:6:9", + "nodeType": "YulIdentifier", + "src": "17071:6:9" + }, + "nativeSrc": "17071:20:9", + "nodeType": "YulFunctionCall", + "src": "17071:20:9" + }, + "nativeSrc": "17068:38:9", + "nodeType": "YulIf", + "src": "17068:38:9" + }, + { + "body": { + "nativeSrc": "17137:715:9", + "nodeType": "YulBlock", + "src": "17137:715:9", + "statements": [ + { + "nativeSrc": "17155:21:9", + "nodeType": "YulAssignment", + "src": "17155:21:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "17171:4:9", + "nodeType": "YulLiteral", + "src": "17171:4:9", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "17165:5:9", + "nodeType": "YulIdentifier", + "src": "17165:5:9" + }, + "nativeSrc": "17165:11:9", + "nodeType": "YulFunctionCall", + "src": "17165:11:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "17155:6:9", + "nodeType": "YulIdentifier", + "src": "17155:6:9" + } + ] + }, + { + "nativeSrc": "17193:24:9", + "nodeType": "YulVariableDeclaration", + "src": "17193:24:9", + "value": { + "arguments": [ + { + "name": "end", + "nativeSrc": "17206:3:9", + "nodeType": "YulIdentifier", + "src": "17206:3:9" + }, + { + "name": "start", + "nativeSrc": "17211:5:9", + "nodeType": "YulIdentifier", + "src": "17211:5:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "17202:3:9", + "nodeType": "YulIdentifier", + "src": "17202:3:9" + }, + "nativeSrc": "17202:15:9", + "nodeType": "YulFunctionCall", + "src": "17202:15:9" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "17197:1:9", + "nodeType": "YulTypedName", + "src": "17197:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "17234:28:9", + "nodeType": "YulVariableDeclaration", + "src": "17234:28:9", + "value": { + "arguments": [ + { + "name": "subject", + "nativeSrc": "17247:7:9", + "nodeType": "YulIdentifier", + "src": "17247:7:9" + }, + { + "name": "start", + "nativeSrc": "17256:5:9", + "nodeType": "YulIdentifier", + "src": "17256:5:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17243:3:9", + "nodeType": "YulIdentifier", + "src": "17243:3:9" + }, + "nativeSrc": "17243:19:9", + "nodeType": "YulFunctionCall", + "src": "17243:19:9" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "17238:1:9", + "nodeType": "YulTypedName", + "src": "17238:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "17279:18:9", + "nodeType": "YulVariableDeclaration", + "src": "17279:18:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "17292:4:9", + "nodeType": "YulLiteral", + "src": "17292:4:9", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "17288:3:9", + "nodeType": "YulIdentifier", + "src": "17288:3:9" + }, + "nativeSrc": "17288:9:9", + "nodeType": "YulFunctionCall", + "src": "17288:9:9" + }, + "variables": [ + { + "name": "w", + "nativeSrc": "17283:1:9", + "nodeType": "YulTypedName", + "src": "17283:1:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "17426:177:9", + "nodeType": "YulBlock", + "src": "17426:177:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "17459:6:9", + "nodeType": "YulIdentifier", + "src": "17459:6:9" + }, + { + "name": "j", + "nativeSrc": "17467:1:9", + "nodeType": "YulIdentifier", + "src": "17467:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17455:3:9", + "nodeType": "YulIdentifier", + "src": "17455:3:9" + }, + "nativeSrc": "17455:14:9", + "nodeType": "YulFunctionCall", + "src": "17455:14:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "17481:1:9", + "nodeType": "YulIdentifier", + "src": "17481:1:9" + }, + { + "name": "j", + "nativeSrc": "17484:1:9", + "nodeType": "YulIdentifier", + "src": "17484:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17477:3:9", + "nodeType": "YulIdentifier", + "src": "17477:3:9" + }, + "nativeSrc": "17477:9:9", + "nodeType": "YulFunctionCall", + "src": "17477:9:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "17471:5:9", + "nodeType": "YulIdentifier", + "src": "17471:5:9" + }, + "nativeSrc": "17471:16:9", + "nodeType": "YulFunctionCall", + "src": "17471:16:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "17448:6:9", + "nodeType": "YulIdentifier", + "src": "17448:6:9" + }, + "nativeSrc": "17448:40:9", + "nodeType": "YulFunctionCall", + "src": "17448:40:9" + }, + "nativeSrc": "17448:40:9", + "nodeType": "YulExpressionStatement", + "src": "17448:40:9" + }, + { + "nativeSrc": "17509:14:9", + "nodeType": "YulAssignment", + "src": "17509:14:9", + "value": { + "arguments": [ + { + "name": "j", + "nativeSrc": "17518:1:9", + "nodeType": "YulIdentifier", + "src": "17518:1:9" + }, + { + "name": "w", + "nativeSrc": "17521:1:9", + "nodeType": "YulIdentifier", + "src": "17521:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17514:3:9", + "nodeType": "YulIdentifier", + "src": "17514:3:9" + }, + "nativeSrc": "17514:9:9", + "nodeType": "YulFunctionCall", + "src": "17514:9:9" + }, + "variableNames": [ + { + "name": "j", + "nativeSrc": "17509:1:9", + "nodeType": "YulIdentifier", + "src": "17509:1:9" + } + ] + }, + { + "body": { + "nativeSrc": "17576:9:9", + "nodeType": "YulBlock", + "src": "17576:9:9", + "statements": [ + { + "nativeSrc": "17578:5:9", + "nodeType": "YulBreak", + "src": "17578:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "j", + "nativeSrc": "17573:1:9", + "nodeType": "YulIdentifier", + "src": "17573:1:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "17566:6:9", + "nodeType": "YulIdentifier", + "src": "17566:6:9" + }, + "nativeSrc": "17566:9:9", + "nodeType": "YulFunctionCall", + "src": "17566:9:9" + }, + "nativeSrc": "17563:22:9", + "nodeType": "YulIf", + "src": "17563:22:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "17421:1:9", + "nodeType": "YulLiteral", + "src": "17421:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "17383:220:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "17423:2:9", + "nodeType": "YulBlock", + "src": "17423:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "17387:33:9", + "nodeType": "YulBlock", + "src": "17387:33:9", + "statements": [ + { + "nativeSrc": "17389:29:9", + "nodeType": "YulVariableDeclaration", + "src": "17389:29:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "n", + "nativeSrc": "17406:1:9", + "nodeType": "YulIdentifier", + "src": "17406:1:9" + }, + { + "kind": "number", + "nativeSrc": "17409:4:9", + "nodeType": "YulLiteral", + "src": "17409:4:9", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17402:3:9", + "nodeType": "YulIdentifier", + "src": "17402:3:9" + }, + "nativeSrc": "17402:12:9", + "nodeType": "YulFunctionCall", + "src": "17402:12:9" + }, + { + "name": "w", + "nativeSrc": "17416:1:9", + "nodeType": "YulIdentifier", + "src": "17416:1:9" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "17398:3:9", + "nodeType": "YulIdentifier", + "src": "17398:3:9" + }, + "nativeSrc": "17398:20:9", + "nodeType": "YulFunctionCall", + "src": "17398:20:9" + }, + "variables": [ + { + "name": "j", + "nativeSrc": "17393:1:9", + "nodeType": "YulTypedName", + "src": "17393:1:9", + "type": "" + } + ] + } + ] + }, + "src": "17383:220:9" + }, + { + "nativeSrc": "17620:34:9", + "nodeType": "YulVariableDeclaration", + "src": "17620:34:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "17637:6:9", + "nodeType": "YulIdentifier", + "src": "17637:6:9" + }, + { + "kind": "number", + "nativeSrc": "17645:4:9", + "nodeType": "YulLiteral", + "src": "17645:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17633:3:9", + "nodeType": "YulIdentifier", + "src": "17633:3:9" + }, + "nativeSrc": "17633:17:9", + "nodeType": "YulFunctionCall", + "src": "17633:17:9" + }, + { + "name": "n", + "nativeSrc": "17652:1:9", + "nodeType": "YulIdentifier", + "src": "17652:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17629:3:9", + "nodeType": "YulIdentifier", + "src": "17629:3:9" + }, + "nativeSrc": "17629:25:9", + "nodeType": "YulFunctionCall", + "src": "17629:25:9" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "17624:1:9", + "nodeType": "YulTypedName", + "src": "17624:1:9", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "17678:1:9", + "nodeType": "YulIdentifier", + "src": "17678:1:9" + }, + { + "kind": "number", + "nativeSrc": "17681:1:9", + "nodeType": "YulLiteral", + "src": "17681:1:9", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "17671:6:9", + "nodeType": "YulIdentifier", + "src": "17671:6:9" + }, + "nativeSrc": "17671:12:9", + "nodeType": "YulFunctionCall", + "src": "17671:12:9" + }, + "nativeSrc": "17671:12:9", + "nodeType": "YulExpressionStatement", + "src": "17671:12:9" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "17744:4:9", + "nodeType": "YulLiteral", + "src": "17744:4:9", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "o", + "nativeSrc": "17754:1:9", + "nodeType": "YulIdentifier", + "src": "17754:1:9" + }, + { + "kind": "number", + "nativeSrc": "17757:4:9", + "nodeType": "YulLiteral", + "src": "17757:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17750:3:9", + "nodeType": "YulIdentifier", + "src": "17750:3:9" + }, + "nativeSrc": "17750:12:9", + "nodeType": "YulFunctionCall", + "src": "17750:12:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "17737:6:9", + "nodeType": "YulIdentifier", + "src": "17737:6:9" + }, + "nativeSrc": "17737:26:9", + "nodeType": "YulFunctionCall", + "src": "17737:26:9" + }, + "nativeSrc": "17737:26:9", + "nodeType": "YulExpressionStatement", + "src": "17737:26:9" + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "17807:6:9", + "nodeType": "YulIdentifier", + "src": "17807:6:9" + }, + { + "name": "n", + "nativeSrc": "17815:1:9", + "nodeType": "YulIdentifier", + "src": "17815:1:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "17800:6:9", + "nodeType": "YulIdentifier", + "src": "17800:6:9" + }, + "nativeSrc": "17800:17:9", + "nodeType": "YulFunctionCall", + "src": "17800:17:9" + }, + "nativeSrc": "17800:17:9", + "nodeType": "YulExpressionStatement", + "src": "17800:17:9" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "start", + "nativeSrc": "17125:5:9", + "nodeType": "YulIdentifier", + "src": "17125:5:9" + }, + { + "name": "end", + "nativeSrc": "17132:3:9", + "nodeType": "YulIdentifier", + "src": "17132:3:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "17122:2:9", + "nodeType": "YulIdentifier", + "src": "17122:2:9" + }, + "nativeSrc": "17122:14:9", + "nodeType": "YulFunctionCall", + "src": "17122:14:9" + }, + "nativeSrc": "17119:733:9", + "nodeType": "YulIf", + "src": "17119:733:9" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2839, + "isOffset": false, + "isSlot": false, + "src": "17037:3:9", + "valueSize": 1 + }, + { + "declaration": 2839, + "isOffset": false, + "isSlot": false, + "src": "17045:3:9", + "valueSize": 1 + }, + { + "declaration": 2839, + "isOffset": false, + "isSlot": false, + "src": "17132:3:9", + "valueSize": 1 + }, + { + "declaration": 2839, + "isOffset": false, + "isSlot": false, + "src": "17206:3:9", + "valueSize": 1 + }, + { + "declaration": 2842, + "isOffset": false, + "isSlot": false, + "src": "17155:6:9", + "valueSize": 1 + }, + { + "declaration": 2842, + "isOffset": false, + "isSlot": false, + "src": "17459:6:9", + "valueSize": 1 + }, + { + "declaration": 2842, + "isOffset": false, + "isSlot": false, + "src": "17637:6:9", + "valueSize": 1 + }, + { + "declaration": 2842, + "isOffset": false, + "isSlot": false, + "src": "17807:6:9", + "valueSize": 1 + }, + { + "declaration": 2837, + "isOffset": false, + "isSlot": false, + "src": "17084:5:9", + "valueSize": 1 + }, + { + "declaration": 2837, + "isOffset": false, + "isSlot": false, + "src": "17094:5:9", + "valueSize": 1 + }, + { + "declaration": 2837, + "isOffset": false, + "isSlot": false, + "src": "17125:5:9", + "valueSize": 1 + }, + { + "declaration": 2837, + "isOffset": false, + "isSlot": false, + "src": "17211:5:9", + "valueSize": 1 + }, + { + "declaration": 2837, + "isOffset": false, + "isSlot": false, + "src": "17256:5:9", + "valueSize": 1 + }, + { + "declaration": 2835, + "isOffset": false, + "isSlot": false, + "src": "16981:7:9", + "valueSize": 1 + }, + { + "declaration": 2835, + "isOffset": false, + "isSlot": false, + "src": "17247:7:9", + "valueSize": 1 + } + ], + "id": 2844, + "nodeType": "InlineAssembly", + "src": "16943:919:9" + } + ] + }, + "documentation": { + "id": 2833, + "nodeType": "StructuredDocumentation", + "src": "16626:122:9", + "text": "@dev Returns a copy of `subject` sliced from `start` to `end` (exclusive).\n `start` and `end` are byte offsets." + }, + "id": 2846, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "slice", + "nameLocation": "16762:5:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2840, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2835, + "mutability": "mutable", + "name": "subject", + "nameLocation": "16781:7:9", + "nodeType": "VariableDeclaration", + "scope": 2846, + "src": "16768:20:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2834, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "16768:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2837, + "mutability": "mutable", + "name": "start", + "nameLocation": "16798:5:9", + "nodeType": "VariableDeclaration", + "scope": 2846, + "src": "16790:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2836, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16790:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2839, + "mutability": "mutable", + "name": "end", + "nameLocation": "16813:3:9", + "nodeType": "VariableDeclaration", + "scope": 2846, + "src": "16805:11:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2838, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16805:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "16767:50:9" + }, + "returnParameters": { + "id": 2843, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2842, + "mutability": "mutable", + "name": "result", + "nameLocation": "16878:6:9", + "nodeType": "VariableDeclaration", + "scope": 2846, + "src": "16865:19:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2841, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "16865:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "16864:21:9" + }, + "scope": 3089, + "src": "16753:1115:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2868, + "nodeType": "Block", + "src": "18118:66:9", + "statements": [ + { + "expression": { + "id": 2866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2856, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2854, + "src": "18128:6:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 2858, + "name": "subject", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2849, + "src": "18143:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 2859, + "name": "start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2851, + "src": "18152:5:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "arguments": [ + { + "id": 2862, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "18164:7:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2861, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18164:7:9", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 2860, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "18159:4:9", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2863, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18159:13:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 2864, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "18173:3:9", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "18159:17:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2857, + "name": "slice", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2846, + 2869 + ], + "referencedDeclaration": 2846, + "src": "18137:5:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)" + } + }, + "id": 2865, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18137:40:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "src": "18128:49:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 2867, + "nodeType": "ExpressionStatement", + "src": "18128:49:9" + } + ] + }, + "documentation": { + "id": 2847, + "nodeType": "StructuredDocumentation", + "src": "17874:115:9", + "text": "@dev Returns a copy of `subject` sliced from `start` to the end of the bytes.\n `start` is a byte offset." + }, + "id": 2869, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "slice", + "nameLocation": "18003:5:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2852, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2849, + "mutability": "mutable", + "name": "subject", + "nameLocation": "18022:7:9", + "nodeType": "VariableDeclaration", + "scope": 2869, + "src": "18009:20:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2848, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "18009:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2851, + "mutability": "mutable", + "name": "start", + "nameLocation": "18039:5:9", + "nodeType": "VariableDeclaration", + "scope": 2869, + "src": "18031:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2850, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18031:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "18008:37:9" + }, + "returnParameters": { + "id": 2855, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2854, + "mutability": "mutable", + "name": "result", + "nameLocation": "18106:6:9", + "nodeType": "VariableDeclaration", + "scope": 2869, + "src": "18093:19:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2853, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "18093:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "18092:21:9" + }, + "scope": 3089, + "src": "17994:190:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2882, + "nodeType": "Block", + "src": "18505:377:9", + "statements": [ + { + "AST": { + "nativeSrc": "18567:309:9", + "nodeType": "YulBlock", + "src": "18567:309:9", + "statements": [ + { + "nativeSrc": "18581:71:9", + "nodeType": "YulAssignment", + "src": "18581:71:9", + "value": { + "arguments": [ + { + "name": "end", + "nativeSrc": "18592:3:9", + "nodeType": "YulIdentifier", + "src": "18592:3:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "end", + "nativeSrc": "18605:3:9", + "nodeType": "YulIdentifier", + "src": "18605:3:9" + }, + { + "name": "subject.length", + "nativeSrc": "18610:14:9", + "nodeType": "YulIdentifier", + "src": "18610:14:9" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "18601:3:9", + "nodeType": "YulIdentifier", + "src": "18601:3:9" + }, + "nativeSrc": "18601:24:9", + "nodeType": "YulFunctionCall", + "src": "18601:24:9" + }, + { + "arguments": [ + { + "name": "subject.length", + "nativeSrc": "18630:14:9", + "nodeType": "YulIdentifier", + "src": "18630:14:9" + }, + { + "name": "end", + "nativeSrc": "18646:3:9", + "nodeType": "YulIdentifier", + "src": "18646:3:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "18627:2:9", + "nodeType": "YulIdentifier", + "src": "18627:2:9" + }, + "nativeSrc": "18627:23:9", + "nodeType": "YulFunctionCall", + "src": "18627:23:9" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "18597:3:9", + "nodeType": "YulIdentifier", + "src": "18597:3:9" + }, + "nativeSrc": "18597:54:9", + "nodeType": "YulFunctionCall", + "src": "18597:54:9" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "18588:3:9", + "nodeType": "YulIdentifier", + "src": "18588:3:9" + }, + "nativeSrc": "18588:64:9", + "nodeType": "YulFunctionCall", + "src": "18588:64:9" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "18581:3:9", + "nodeType": "YulIdentifier", + "src": "18581:3:9" + } + ] + }, + { + "nativeSrc": "18665:79:9", + "nodeType": "YulAssignment", + "src": "18665:79:9", + "value": { + "arguments": [ + { + "name": "start", + "nativeSrc": "18678:5:9", + "nodeType": "YulIdentifier", + "src": "18678:5:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "start", + "nativeSrc": "18693:5:9", + "nodeType": "YulIdentifier", + "src": "18693:5:9" + }, + { + "name": "subject.length", + "nativeSrc": "18700:14:9", + "nodeType": "YulIdentifier", + "src": "18700:14:9" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "18689:3:9", + "nodeType": "YulIdentifier", + "src": "18689:3:9" + }, + "nativeSrc": "18689:26:9", + "nodeType": "YulFunctionCall", + "src": "18689:26:9" + }, + { + "arguments": [ + { + "name": "subject.length", + "nativeSrc": "18720:14:9", + "nodeType": "YulIdentifier", + "src": "18720:14:9" + }, + { + "name": "start", + "nativeSrc": "18736:5:9", + "nodeType": "YulIdentifier", + "src": "18736:5:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "18717:2:9", + "nodeType": "YulIdentifier", + "src": "18717:2:9" + }, + "nativeSrc": "18717:25:9", + "nodeType": "YulFunctionCall", + "src": "18717:25:9" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "18685:3:9", + "nodeType": "YulIdentifier", + "src": "18685:3:9" + }, + "nativeSrc": "18685:58:9", + "nodeType": "YulFunctionCall", + "src": "18685:58:9" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "18674:3:9", + "nodeType": "YulIdentifier", + "src": "18674:3:9" + }, + "nativeSrc": "18674:70:9", + "nodeType": "YulFunctionCall", + "src": "18674:70:9" + }, + "variableNames": [ + { + "name": "start", + "nativeSrc": "18665:5:9", + "nodeType": "YulIdentifier", + "src": "18665:5:9" + } + ] + }, + { + "nativeSrc": "18757:43:9", + "nodeType": "YulAssignment", + "src": "18757:43:9", + "value": { + "arguments": [ + { + "name": "subject.offset", + "nativeSrc": "18778:14:9", + "nodeType": "YulIdentifier", + "src": "18778:14:9" + }, + { + "name": "start", + "nativeSrc": "18794:5:9", + "nodeType": "YulIdentifier", + "src": "18794:5:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18774:3:9", + "nodeType": "YulIdentifier", + "src": "18774:3:9" + }, + "nativeSrc": "18774:26:9", + "nodeType": "YulFunctionCall", + "src": "18774:26:9" + }, + "variableNames": [ + { + "name": "result.offset", + "nativeSrc": "18757:13:9", + "nodeType": "YulIdentifier", + "src": "18757:13:9" + } + ] + }, + { + "nativeSrc": "18813:53:9", + "nodeType": "YulAssignment", + "src": "18813:53:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "start", + "nativeSrc": "18837:5:9", + "nodeType": "YulIdentifier", + "src": "18837:5:9" + }, + { + "name": "end", + "nativeSrc": "18844:3:9", + "nodeType": "YulIdentifier", + "src": "18844:3:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "18834:2:9", + "nodeType": "YulIdentifier", + "src": "18834:2:9" + }, + "nativeSrc": "18834:14:9", + "nodeType": "YulFunctionCall", + "src": "18834:14:9" + }, + { + "arguments": [ + { + "name": "end", + "nativeSrc": "18854:3:9", + "nodeType": "YulIdentifier", + "src": "18854:3:9" + }, + { + "name": "start", + "nativeSrc": "18859:5:9", + "nodeType": "YulIdentifier", + "src": "18859:5:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "18850:3:9", + "nodeType": "YulIdentifier", + "src": "18850:3:9" + }, + "nativeSrc": "18850:15:9", + "nodeType": "YulFunctionCall", + "src": "18850:15:9" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "18830:3:9", + "nodeType": "YulIdentifier", + "src": "18830:3:9" + }, + "nativeSrc": "18830:36:9", + "nodeType": "YulFunctionCall", + "src": "18830:36:9" + }, + "variableNames": [ + { + "name": "result.length", + "nativeSrc": "18813:13:9", + "nodeType": "YulIdentifier", + "src": "18813:13:9" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2876, + "isOffset": false, + "isSlot": false, + "src": "18581:3:9", + "valueSize": 1 + }, + { + "declaration": 2876, + "isOffset": false, + "isSlot": false, + "src": "18592:3:9", + "valueSize": 1 + }, + { + "declaration": 2876, + "isOffset": false, + "isSlot": false, + "src": "18605:3:9", + "valueSize": 1 + }, + { + "declaration": 2876, + "isOffset": false, + "isSlot": false, + "src": "18646:3:9", + "valueSize": 1 + }, + { + "declaration": 2876, + "isOffset": false, + "isSlot": false, + "src": "18844:3:9", + "valueSize": 1 + }, + { + "declaration": 2876, + "isOffset": false, + "isSlot": false, + "src": "18854:3:9", + "valueSize": 1 + }, + { + "declaration": 2879, + "isOffset": false, + "isSlot": false, + "src": "18813:13:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 2879, + "isOffset": true, + "isSlot": false, + "src": "18757:13:9", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 2874, + "isOffset": false, + "isSlot": false, + "src": "18665:5:9", + "valueSize": 1 + }, + { + "declaration": 2874, + "isOffset": false, + "isSlot": false, + "src": "18678:5:9", + "valueSize": 1 + }, + { + "declaration": 2874, + "isOffset": false, + "isSlot": false, + "src": "18693:5:9", + "valueSize": 1 + }, + { + "declaration": 2874, + "isOffset": false, + "isSlot": false, + "src": "18736:5:9", + "valueSize": 1 + }, + { + "declaration": 2874, + "isOffset": false, + "isSlot": false, + "src": "18794:5:9", + "valueSize": 1 + }, + { + "declaration": 2874, + "isOffset": false, + "isSlot": false, + "src": "18837:5:9", + "valueSize": 1 + }, + { + "declaration": 2874, + "isOffset": false, + "isSlot": false, + "src": "18859:5:9", + "valueSize": 1 + }, + { + "declaration": 2872, + "isOffset": false, + "isSlot": false, + "src": "18610:14:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 2872, + "isOffset": false, + "isSlot": false, + "src": "18630:14:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 2872, + "isOffset": false, + "isSlot": false, + "src": "18700:14:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 2872, + "isOffset": false, + "isSlot": false, + "src": "18720:14:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 2872, + "isOffset": true, + "isSlot": false, + "src": "18778:14:9", + "suffix": "offset", + "valueSize": 1 + } + ], + "id": 2881, + "nodeType": "InlineAssembly", + "src": "18558:318:9" + } + ] + }, + "documentation": { + "id": 2870, + "nodeType": "StructuredDocumentation", + "src": "18190:161:9", + "text": "@dev Returns a copy of `subject` sliced from `start` to `end` (exclusive).\n `start` and `end` are byte offsets. Faster than Solidity's native slicing." + }, + "id": 2883, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sliceCalldata", + "nameLocation": "18365:13:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2877, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2872, + "mutability": "mutable", + "name": "subject", + "nameLocation": "18394:7:9", + "nodeType": "VariableDeclaration", + "scope": 2883, + "src": "18379:22:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2871, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "18379:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2874, + "mutability": "mutable", + "name": "start", + "nameLocation": "18411:5:9", + "nodeType": "VariableDeclaration", + "scope": 2883, + "src": "18403:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2873, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18403:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2876, + "mutability": "mutable", + "name": "end", + "nameLocation": "18426:3:9", + "nodeType": "VariableDeclaration", + "scope": 2883, + "src": "18418:11:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2875, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18418:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "18378:52:9" + }, + "returnParameters": { + "id": 2880, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2879, + "mutability": "mutable", + "name": "result", + "nameLocation": "18493:6:9", + "nodeType": "VariableDeclaration", + "scope": 2883, + "src": "18478:21:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2878, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "18478:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "18477:23:9" + }, + "scope": 3089, + "src": "18356:526:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2894, + "nodeType": "Block", + "src": "19183:315:9", + "statements": [ + { + "AST": { + "nativeSrc": "19245:247:9", + "nodeType": "YulBlock", + "src": "19245:247:9", + "statements": [ + { + "nativeSrc": "19259:79:9", + "nodeType": "YulAssignment", + "src": "19259:79:9", + "value": { + "arguments": [ + { + "name": "start", + "nativeSrc": "19272:5:9", + "nodeType": "YulIdentifier", + "src": "19272:5:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "start", + "nativeSrc": "19287:5:9", + "nodeType": "YulIdentifier", + "src": "19287:5:9" + }, + { + "name": "subject.length", + "nativeSrc": "19294:14:9", + "nodeType": "YulIdentifier", + "src": "19294:14:9" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "19283:3:9", + "nodeType": "YulIdentifier", + "src": "19283:3:9" + }, + "nativeSrc": "19283:26:9", + "nodeType": "YulFunctionCall", + "src": "19283:26:9" + }, + { + "arguments": [ + { + "name": "subject.length", + "nativeSrc": "19314:14:9", + "nodeType": "YulIdentifier", + "src": "19314:14:9" + }, + { + "name": "start", + "nativeSrc": "19330:5:9", + "nodeType": "YulIdentifier", + "src": "19330:5:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "19311:2:9", + "nodeType": "YulIdentifier", + "src": "19311:2:9" + }, + "nativeSrc": "19311:25:9", + "nodeType": "YulFunctionCall", + "src": "19311:25:9" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "19279:3:9", + "nodeType": "YulIdentifier", + "src": "19279:3:9" + }, + "nativeSrc": "19279:58:9", + "nodeType": "YulFunctionCall", + "src": "19279:58:9" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "19268:3:9", + "nodeType": "YulIdentifier", + "src": "19268:3:9" + }, + "nativeSrc": "19268:70:9", + "nodeType": "YulFunctionCall", + "src": "19268:70:9" + }, + "variableNames": [ + { + "name": "start", + "nativeSrc": "19259:5:9", + "nodeType": "YulIdentifier", + "src": "19259:5:9" + } + ] + }, + { + "nativeSrc": "19351:43:9", + "nodeType": "YulAssignment", + "src": "19351:43:9", + "value": { + "arguments": [ + { + "name": "subject.offset", + "nativeSrc": "19372:14:9", + "nodeType": "YulIdentifier", + "src": "19372:14:9" + }, + { + "name": "start", + "nativeSrc": "19388:5:9", + "nodeType": "YulIdentifier", + "src": "19388:5:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19368:3:9", + "nodeType": "YulIdentifier", + "src": "19368:3:9" + }, + "nativeSrc": "19368:26:9", + "nodeType": "YulFunctionCall", + "src": "19368:26:9" + }, + "variableNames": [ + { + "name": "result.offset", + "nativeSrc": "19351:13:9", + "nodeType": "YulIdentifier", + "src": "19351:13:9" + } + ] + }, + { + "nativeSrc": "19407:75:9", + "nodeType": "YulAssignment", + "src": "19407:75:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "start", + "nativeSrc": "19431:5:9", + "nodeType": "YulIdentifier", + "src": "19431:5:9" + }, + { + "name": "subject.length", + "nativeSrc": "19438:14:9", + "nodeType": "YulIdentifier", + "src": "19438:14:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "19428:2:9", + "nodeType": "YulIdentifier", + "src": "19428:2:9" + }, + "nativeSrc": "19428:25:9", + "nodeType": "YulFunctionCall", + "src": "19428:25:9" + }, + { + "arguments": [ + { + "name": "subject.length", + "nativeSrc": "19459:14:9", + "nodeType": "YulIdentifier", + "src": "19459:14:9" + }, + { + "name": "start", + "nativeSrc": "19475:5:9", + "nodeType": "YulIdentifier", + "src": "19475:5:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "19455:3:9", + "nodeType": "YulIdentifier", + "src": "19455:3:9" + }, + "nativeSrc": "19455:26:9", + "nodeType": "YulFunctionCall", + "src": "19455:26:9" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "19424:3:9", + "nodeType": "YulIdentifier", + "src": "19424:3:9" + }, + "nativeSrc": "19424:58:9", + "nodeType": "YulFunctionCall", + "src": "19424:58:9" + }, + "variableNames": [ + { + "name": "result.length", + "nativeSrc": "19407:13:9", + "nodeType": "YulIdentifier", + "src": "19407:13:9" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2891, + "isOffset": false, + "isSlot": false, + "src": "19407:13:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 2891, + "isOffset": true, + "isSlot": false, + "src": "19351:13:9", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 2888, + "isOffset": false, + "isSlot": false, + "src": "19259:5:9", + "valueSize": 1 + }, + { + "declaration": 2888, + "isOffset": false, + "isSlot": false, + "src": "19272:5:9", + "valueSize": 1 + }, + { + "declaration": 2888, + "isOffset": false, + "isSlot": false, + "src": "19287:5:9", + "valueSize": 1 + }, + { + "declaration": 2888, + "isOffset": false, + "isSlot": false, + "src": "19330:5:9", + "valueSize": 1 + }, + { + "declaration": 2888, + "isOffset": false, + "isSlot": false, + "src": "19388:5:9", + "valueSize": 1 + }, + { + "declaration": 2888, + "isOffset": false, + "isSlot": false, + "src": "19431:5:9", + "valueSize": 1 + }, + { + "declaration": 2888, + "isOffset": false, + "isSlot": false, + "src": "19475:5:9", + "valueSize": 1 + }, + { + "declaration": 2886, + "isOffset": false, + "isSlot": false, + "src": "19294:14:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 2886, + "isOffset": false, + "isSlot": false, + "src": "19314:14:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 2886, + "isOffset": false, + "isSlot": false, + "src": "19438:14:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 2886, + "isOffset": false, + "isSlot": false, + "src": "19459:14:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 2886, + "isOffset": true, + "isSlot": false, + "src": "19372:14:9", + "suffix": "offset", + "valueSize": 1 + } + ], + "id": 2893, + "nodeType": "InlineAssembly", + "src": "19236:256:9" + } + ] + }, + "documentation": { + "id": 2884, + "nodeType": "StructuredDocumentation", + "src": "18888:154:9", + "text": "@dev Returns a copy of `subject` sliced from `start` to the end of the bytes.\n `start` is a byte offset. Faster than Solidity's native slicing." + }, + "id": 2895, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sliceCalldata", + "nameLocation": "19056:13:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2889, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2886, + "mutability": "mutable", + "name": "subject", + "nameLocation": "19085:7:9", + "nodeType": "VariableDeclaration", + "scope": 2895, + "src": "19070:22:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2885, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "19070:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2888, + "mutability": "mutable", + "name": "start", + "nameLocation": "19102:5:9", + "nodeType": "VariableDeclaration", + "scope": 2895, + "src": "19094:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2887, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19094:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "19069:39:9" + }, + "returnParameters": { + "id": 2892, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2891, + "mutability": "mutable", + "name": "result", + "nameLocation": "19171:6:9", + "nodeType": "VariableDeclaration", + "scope": 2895, + "src": "19156:21:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2890, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "19156:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "19155:23:9" + }, + "scope": 3089, + "src": "19047:451:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2906, + "nodeType": "Block", + "src": "19754:166:9", + "statements": [ + { + "AST": { + "nativeSrc": "19816:98:9", + "nodeType": "YulBlock", + "src": "19816:98:9", + "statements": [ + { + "nativeSrc": "19830:17:9", + "nodeType": "YulAssignment", + "src": "19830:17:9", + "value": { + "name": "subject", + "nativeSrc": "19840:7:9", + "nodeType": "YulIdentifier", + "src": "19840:7:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "19830:6:9", + "nodeType": "YulIdentifier", + "src": "19830:6:9" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "n", + "nativeSrc": "19874:1:9", + "nodeType": "YulIdentifier", + "src": "19874:1:9" + }, + { + "arguments": [ + { + "name": "result", + "nativeSrc": "19883:6:9", + "nodeType": "YulIdentifier", + "src": "19883:6:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "19877:5:9", + "nodeType": "YulIdentifier", + "src": "19877:5:9" + }, + "nativeSrc": "19877:13:9", + "nodeType": "YulFunctionCall", + "src": "19877:13:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "19871:2:9", + "nodeType": "YulIdentifier", + "src": "19871:2:9" + }, + "nativeSrc": "19871:20:9", + "nodeType": "YulFunctionCall", + "src": "19871:20:9" + }, + { + "name": "result", + "nativeSrc": "19893:6:9", + "nodeType": "YulIdentifier", + "src": "19893:6:9" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "19867:3:9", + "nodeType": "YulIdentifier", + "src": "19867:3:9" + }, + "nativeSrc": "19867:33:9", + "nodeType": "YulFunctionCall", + "src": "19867:33:9" + }, + { + "name": "n", + "nativeSrc": "19902:1:9", + "nodeType": "YulIdentifier", + "src": "19902:1:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "19860:6:9", + "nodeType": "YulIdentifier", + "src": "19860:6:9" + }, + "nativeSrc": "19860:44:9", + "nodeType": "YulFunctionCall", + "src": "19860:44:9" + }, + "nativeSrc": "19860:44:9", + "nodeType": "YulExpressionStatement", + "src": "19860:44:9" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2900, + "isOffset": false, + "isSlot": false, + "src": "19874:1:9", + "valueSize": 1 + }, + { + "declaration": 2900, + "isOffset": false, + "isSlot": false, + "src": "19902:1:9", + "valueSize": 1 + }, + { + "declaration": 2903, + "isOffset": false, + "isSlot": false, + "src": "19830:6:9", + "valueSize": 1 + }, + { + "declaration": 2903, + "isOffset": false, + "isSlot": false, + "src": "19883:6:9", + "valueSize": 1 + }, + { + "declaration": 2903, + "isOffset": false, + "isSlot": false, + "src": "19893:6:9", + "valueSize": 1 + }, + { + "declaration": 2898, + "isOffset": false, + "isSlot": false, + "src": "19840:7:9", + "valueSize": 1 + } + ], + "id": 2905, + "nodeType": "InlineAssembly", + "src": "19807:107:9" + } + ] + }, + "documentation": { + "id": 2896, + "nodeType": "StructuredDocumentation", + "src": "19504:122:9", + "text": "@dev Reduces the size of `subject` to `n`.\n If `n` is greater than the size of `subject`, this will be a no-op." + }, + "id": 2907, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "truncate", + "nameLocation": "19640:8:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2901, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2898, + "mutability": "mutable", + "name": "subject", + "nameLocation": "19662:7:9", + "nodeType": "VariableDeclaration", + "scope": 2907, + "src": "19649:20:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2897, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "19649:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2900, + "mutability": "mutable", + "name": "n", + "nameLocation": "19679:1:9", + "nodeType": "VariableDeclaration", + "scope": 2907, + "src": "19671:9:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2899, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19671:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "19648:33:9" + }, + "returnParameters": { + "id": 2904, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2903, + "mutability": "mutable", + "name": "result", + "nameLocation": "19742:6:9", + "nodeType": "VariableDeclaration", + "scope": 2907, + "src": "19729:19:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2902, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "19729:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "19728:21:9" + }, + "scope": 3089, + "src": "19631:289:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2918, + "nodeType": "Block", + "src": "20212:211:9", + "statements": [ + { + "AST": { + "nativeSrc": "20274:143:9", + "nodeType": "YulBlock", + "src": "20274:143:9", + "statements": [ + { + "nativeSrc": "20288:31:9", + "nodeType": "YulAssignment", + "src": "20288:31:9", + "value": { + "name": "subject.offset", + "nativeSrc": "20305:14:9", + "nodeType": "YulIdentifier", + "src": "20305:14:9" + }, + "variableNames": [ + { + "name": "result.offset", + "nativeSrc": "20288:13:9", + "nodeType": "YulIdentifier", + "src": "20288:13:9" + } + ] + }, + { + "nativeSrc": "20332:75:9", + "nodeType": "YulAssignment", + "src": "20332:75:9", + "value": { + "arguments": [ + { + "name": "n", + "nativeSrc": "20353:1:9", + "nodeType": "YulIdentifier", + "src": "20353:1:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "n", + "nativeSrc": "20364:1:9", + "nodeType": "YulIdentifier", + "src": "20364:1:9" + }, + { + "name": "subject.length", + "nativeSrc": "20367:14:9", + "nodeType": "YulIdentifier", + "src": "20367:14:9" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "20360:3:9", + "nodeType": "YulIdentifier", + "src": "20360:3:9" + }, + "nativeSrc": "20360:22:9", + "nodeType": "YulFunctionCall", + "src": "20360:22:9" + }, + { + "arguments": [ + { + "name": "subject.length", + "nativeSrc": "20387:14:9", + "nodeType": "YulIdentifier", + "src": "20387:14:9" + }, + { + "name": "n", + "nativeSrc": "20403:1:9", + "nodeType": "YulIdentifier", + "src": "20403:1:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "20384:2:9", + "nodeType": "YulIdentifier", + "src": "20384:2:9" + }, + "nativeSrc": "20384:21:9", + "nodeType": "YulFunctionCall", + "src": "20384:21:9" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "20356:3:9", + "nodeType": "YulIdentifier", + "src": "20356:3:9" + }, + "nativeSrc": "20356:50:9", + "nodeType": "YulFunctionCall", + "src": "20356:50:9" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "20349:3:9", + "nodeType": "YulIdentifier", + "src": "20349:3:9" + }, + "nativeSrc": "20349:58:9", + "nodeType": "YulFunctionCall", + "src": "20349:58:9" + }, + "variableNames": [ + { + "name": "result.length", + "nativeSrc": "20332:13:9", + "nodeType": "YulIdentifier", + "src": "20332:13:9" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2912, + "isOffset": false, + "isSlot": false, + "src": "20353:1:9", + "valueSize": 1 + }, + { + "declaration": 2912, + "isOffset": false, + "isSlot": false, + "src": "20364:1:9", + "valueSize": 1 + }, + { + "declaration": 2912, + "isOffset": false, + "isSlot": false, + "src": "20403:1:9", + "valueSize": 1 + }, + { + "declaration": 2915, + "isOffset": false, + "isSlot": false, + "src": "20332:13:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 2915, + "isOffset": true, + "isSlot": false, + "src": "20288:13:9", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 2910, + "isOffset": false, + "isSlot": false, + "src": "20367:14:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 2910, + "isOffset": false, + "isSlot": false, + "src": "20387:14:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 2910, + "isOffset": true, + "isSlot": false, + "src": "20305:14:9", + "suffix": "offset", + "valueSize": 1 + } + ], + "id": 2917, + "nodeType": "InlineAssembly", + "src": "20265:152:9" + } + ] + }, + "documentation": { + "id": 2908, + "nodeType": "StructuredDocumentation", + "src": "19926:145:9", + "text": "@dev Returns a copy of `subject`, with the length reduced to `n`.\n If `n` is greater than the size of `subject`, this will be a no-op." + }, + "id": 2919, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "truncatedCalldata", + "nameLocation": "20085:17:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2913, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2910, + "mutability": "mutable", + "name": "subject", + "nameLocation": "20118:7:9", + "nodeType": "VariableDeclaration", + "scope": 2919, + "src": "20103:22:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2909, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "20103:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2912, + "mutability": "mutable", + "name": "n", + "nameLocation": "20135:1:9", + "nodeType": "VariableDeclaration", + "scope": 2919, + "src": "20127:9:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2911, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20127:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "20102:35:9" + }, + "returnParameters": { + "id": 2916, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2915, + "mutability": "mutable", + "name": "result", + "nameLocation": "20200:6:9", + "nodeType": "VariableDeclaration", + "scope": 2919, + "src": "20185:21:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2914, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "20185:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "20184:23:9" + }, + "scope": 3089, + "src": "20076:347:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2931, + "nodeType": "Block", + "src": "20668:1991:9", + "statements": [ + { + "AST": { + "nativeSrc": "20730:1923:9", + "nodeType": "YulBlock", + "src": "20730:1923:9", + "statements": [ + { + "nativeSrc": "20744:30:9", + "nodeType": "YulVariableDeclaration", + "src": "20744:30:9", + "value": { + "arguments": [ + { + "name": "needle", + "nativeSrc": "20767:6:9", + "nodeType": "YulIdentifier", + "src": "20767:6:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "20761:5:9", + "nodeType": "YulIdentifier", + "src": "20761:5:9" + }, + "nativeSrc": "20761:13:9", + "nodeType": "YulFunctionCall", + "src": "20761:13:9" + }, + "variables": [ + { + "name": "searchLen", + "nativeSrc": "20748:9:9", + "nodeType": "YulTypedName", + "src": "20748:9:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "20828:1815:9", + "nodeType": "YulBlock", + "src": "20828:1815:9", + "statements": [ + { + "nativeSrc": "20846:21:9", + "nodeType": "YulAssignment", + "src": "20846:21:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20862:4:9", + "nodeType": "YulLiteral", + "src": "20862:4:9", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "20856:5:9", + "nodeType": "YulIdentifier", + "src": "20856:5:9" + }, + "nativeSrc": "20856:11:9", + "nodeType": "YulFunctionCall", + "src": "20856:11:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "20846:6:9", + "nodeType": "YulIdentifier", + "src": "20846:6:9" + } + ] + }, + { + "nativeSrc": "20884:27:9", + "nodeType": "YulVariableDeclaration", + "src": "20884:27:9", + "value": { + "arguments": [ + { + "name": "subject", + "nativeSrc": "20897:7:9", + "nodeType": "YulIdentifier", + "src": "20897:7:9" + }, + { + "kind": "number", + "nativeSrc": "20906:4:9", + "nodeType": "YulLiteral", + "src": "20906:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20893:3:9", + "nodeType": "YulIdentifier", + "src": "20893:3:9" + }, + "nativeSrc": "20893:18:9", + "nodeType": "YulFunctionCall", + "src": "20893:18:9" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "20888:1:9", + "nodeType": "YulTypedName", + "src": "20888:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "20928:26:9", + "nodeType": "YulVariableDeclaration", + "src": "20928:26:9", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "20941:6:9", + "nodeType": "YulIdentifier", + "src": "20941:6:9" + }, + { + "kind": "number", + "nativeSrc": "20949:4:9", + "nodeType": "YulLiteral", + "src": "20949:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20937:3:9", + "nodeType": "YulIdentifier", + "src": "20937:3:9" + }, + "nativeSrc": "20937:17:9", + "nodeType": "YulFunctionCall", + "src": "20937:17:9" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "20932:1:9", + "nodeType": "YulTypedName", + "src": "20932:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "20971:70:9", + "nodeType": "YulVariableDeclaration", + "src": "20971:70:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "21007:1:9", + "nodeType": "YulIdentifier", + "src": "21007:1:9" + }, + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "21016:7:9", + "nodeType": "YulIdentifier", + "src": "21016:7:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "21010:5:9", + "nodeType": "YulIdentifier", + "src": "21010:5:9" + }, + "nativeSrc": "21010:14:9", + "nodeType": "YulFunctionCall", + "src": "21010:14:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21003:3:9", + "nodeType": "YulIdentifier", + "src": "21003:3:9" + }, + "nativeSrc": "21003:22:9", + "nodeType": "YulFunctionCall", + "src": "21003:22:9" + }, + { + "name": "searchLen", + "nativeSrc": "21027:9:9", + "nodeType": "YulIdentifier", + "src": "21027:9:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "20999:3:9", + "nodeType": "YulIdentifier", + "src": "20999:3:9" + }, + "nativeSrc": "20999:38:9", + "nodeType": "YulFunctionCall", + "src": "20999:38:9" + }, + { + "kind": "number", + "nativeSrc": "21039:1:9", + "nodeType": "YulLiteral", + "src": "21039:1:9", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20995:3:9", + "nodeType": "YulIdentifier", + "src": "20995:3:9" + }, + "nativeSrc": "20995:46:9", + "nodeType": "YulFunctionCall", + "src": "20995:46:9" + }, + "variables": [ + { + "name": "subjectSearchEnd", + "nativeSrc": "20975:16:9", + "nodeType": "YulTypedName", + "src": "20975:16:9", + "type": "" + } + ] + }, + { + "nativeSrc": "21058:10:9", + "nodeType": "YulVariableDeclaration", + "src": "21058:10:9", + "value": { + "kind": "number", + "nativeSrc": "21067:1:9", + "nodeType": "YulLiteral", + "src": "21067:1:9", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "h", + "nativeSrc": "21062:1:9", + "nodeType": "YulTypedName", + "src": "21062:1:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "21141:48:9", + "nodeType": "YulBlock", + "src": "21141:48:9", + "statements": [ + { + "nativeSrc": "21143:44:9", + "nodeType": "YulAssignment", + "src": "21143:44:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "needle", + "nativeSrc": "21162:6:9", + "nodeType": "YulIdentifier", + "src": "21162:6:9" + }, + { + "kind": "number", + "nativeSrc": "21170:4:9", + "nodeType": "YulLiteral", + "src": "21170:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21158:3:9", + "nodeType": "YulIdentifier", + "src": "21158:3:9" + }, + "nativeSrc": "21158:17:9", + "nodeType": "YulFunctionCall", + "src": "21158:17:9" + }, + { + "name": "searchLen", + "nativeSrc": "21177:9:9", + "nodeType": "YulIdentifier", + "src": "21177:9:9" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "21148:9:9", + "nodeType": "YulIdentifier", + "src": "21148:9:9" + }, + "nativeSrc": "21148:39:9", + "nodeType": "YulFunctionCall", + "src": "21148:39:9" + }, + "variableNames": [ + { + "name": "h", + "nativeSrc": "21143:1:9", + "nodeType": "YulIdentifier", + "src": "21143:1:9" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "searchLen", + "nativeSrc": "21123:9:9", + "nodeType": "YulIdentifier", + "src": "21123:9:9" + }, + { + "kind": "number", + "nativeSrc": "21134:4:9", + "nodeType": "YulLiteral", + "src": "21134:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "21120:2:9", + "nodeType": "YulIdentifier", + "src": "21120:2:9" + }, + "nativeSrc": "21120:19:9", + "nodeType": "YulFunctionCall", + "src": "21120:19:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "21113:6:9", + "nodeType": "YulIdentifier", + "src": "21113:6:9" + }, + "nativeSrc": "21113:27:9", + "nodeType": "YulFunctionCall", + "src": "21113:27:9" + }, + "nativeSrc": "21110:79:9", + "nodeType": "YulIf", + "src": "21110:79:9" + }, + { + "nativeSrc": "21206:33:9", + "nodeType": "YulVariableDeclaration", + "src": "21206:33:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "needle", + "nativeSrc": "21225:6:9", + "nodeType": "YulIdentifier", + "src": "21225:6:9" + }, + { + "kind": "number", + "nativeSrc": "21233:4:9", + "nodeType": "YulLiteral", + "src": "21233:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21221:3:9", + "nodeType": "YulIdentifier", + "src": "21221:3:9" + }, + "nativeSrc": "21221:17:9", + "nodeType": "YulFunctionCall", + "src": "21221:17:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "21215:5:9", + "nodeType": "YulIdentifier", + "src": "21215:5:9" + }, + "nativeSrc": "21215:24:9", + "nodeType": "YulFunctionCall", + "src": "21215:24:9" + }, + "variables": [ + { + "name": "s", + "nativeSrc": "21210:1:9", + "nodeType": "YulTypedName", + "src": "21210:1:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "21318:1033:9", + "nodeType": "YulBlock", + "src": "21318:1033:9", + "statements": [ + { + "nativeSrc": "21340:17:9", + "nodeType": "YulVariableDeclaration", + "src": "21340:17:9", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "21355:1:9", + "nodeType": "YulIdentifier", + "src": "21355:1:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "21349:5:9", + "nodeType": "YulIdentifier", + "src": "21349:5:9" + }, + "nativeSrc": "21349:8:9", + "nodeType": "YulFunctionCall", + "src": "21349:8:9" + }, + "variables": [ + { + "name": "t", + "nativeSrc": "21344:1:9", + "nodeType": "YulTypedName", + "src": "21344:1:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "21506:727:9", + "nodeType": "YulBlock", + "src": "21506:727:9", + "statements": [ + { + "body": { + "nativeSrc": "21537:294:9", + "nodeType": "YulBlock", + "src": "21537:294:9", + "statements": [ + { + "body": { + "nativeSrc": "21609:196:9", + "nodeType": "YulBlock", + "src": "21609:196:9", + "statements": [ + { + "nativeSrc": "21643:14:9", + "nodeType": "YulAssignment", + "src": "21643:14:9", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "21652:1:9", + "nodeType": "YulIdentifier", + "src": "21652:1:9" + }, + { + "kind": "number", + "nativeSrc": "21655:1:9", + "nodeType": "YulLiteral", + "src": "21655:1:9", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21648:3:9", + "nodeType": "YulIdentifier", + "src": "21648:3:9" + }, + "nativeSrc": "21648:9:9", + "nodeType": "YulFunctionCall", + "src": "21648:9:9" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "21643:1:9", + "nodeType": "YulIdentifier", + "src": "21643:1:9" + } + ] + }, + { + "body": { + "nativeSrc": "21725:9:9", + "nodeType": "YulBlock", + "src": "21725:9:9", + "statements": [ + { + "nativeSrc": "21727:5:9", + "nodeType": "YulBreak", + "src": "21727:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "21703:1:9", + "nodeType": "YulIdentifier", + "src": "21703:1:9" + }, + { + "name": "subjectSearchEnd", + "nativeSrc": "21706:16:9", + "nodeType": "YulIdentifier", + "src": "21706:16:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "21700:2:9", + "nodeType": "YulIdentifier", + "src": "21700:2:9" + }, + "nativeSrc": "21700:23:9", + "nodeType": "YulFunctionCall", + "src": "21700:23:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "21693:6:9", + "nodeType": "YulIdentifier", + "src": "21693:6:9" + }, + "nativeSrc": "21693:31:9", + "nodeType": "YulFunctionCall", + "src": "21693:31:9" + }, + "nativeSrc": "21690:44:9", + "nodeType": "YulIf", + "src": "21690:44:9" + }, + { + "nativeSrc": "21767:8:9", + "nodeType": "YulContinue", + "src": "21767:8:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "21590:1:9", + "nodeType": "YulIdentifier", + "src": "21590:1:9" + }, + { + "name": "searchLen", + "nativeSrc": "21593:9:9", + "nodeType": "YulIdentifier", + "src": "21593:9:9" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "21580:9:9", + "nodeType": "YulIdentifier", + "src": "21580:9:9" + }, + "nativeSrc": "21580:23:9", + "nodeType": "YulFunctionCall", + "src": "21580:23:9" + }, + { + "name": "h", + "nativeSrc": "21605:1:9", + "nodeType": "YulIdentifier", + "src": "21605:1:9" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "21577:2:9", + "nodeType": "YulIdentifier", + "src": "21577:2:9" + }, + "nativeSrc": "21577:30:9", + "nodeType": "YulFunctionCall", + "src": "21577:30:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "21570:6:9", + "nodeType": "YulIdentifier", + "src": "21570:6:9" + }, + "nativeSrc": "21570:38:9", + "nodeType": "YulFunctionCall", + "src": "21570:38:9" + }, + "nativeSrc": "21567:238:9", + "nodeType": "YulIf", + "src": "21567:238:9" + } + ] + }, + "condition": { + "name": "h", + "nativeSrc": "21535:1:9", + "nodeType": "YulIdentifier", + "src": "21535:1:9" + }, + "nativeSrc": "21532:299:9", + "nodeType": "YulIf", + "src": "21532:299:9" + }, + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "21863:1:9", + "nodeType": "YulIdentifier", + "src": "21863:1:9" + }, + { + "arguments": [ + { + "name": "i", + "nativeSrc": "21870:1:9", + "nodeType": "YulIdentifier", + "src": "21870:1:9" + }, + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "21877:7:9", + "nodeType": "YulIdentifier", + "src": "21877:7:9" + }, + { + "kind": "number", + "nativeSrc": "21886:4:9", + "nodeType": "YulLiteral", + "src": "21886:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21873:3:9", + "nodeType": "YulIdentifier", + "src": "21873:3:9" + }, + "nativeSrc": "21873:18:9", + "nodeType": "YulFunctionCall", + "src": "21873:18:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "21866:3:9", + "nodeType": "YulIdentifier", + "src": "21866:3:9" + }, + "nativeSrc": "21866:26:9", + "nodeType": "YulFunctionCall", + "src": "21866:26:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "21856:6:9", + "nodeType": "YulIdentifier", + "src": "21856:6:9" + }, + "nativeSrc": "21856:37:9", + "nodeType": "YulFunctionCall", + "src": "21856:37:9" + }, + "nativeSrc": "21856:37:9", + "nodeType": "YulExpressionStatement", + "src": "21856:37:9" + }, + { + "nativeSrc": "21941:17:9", + "nodeType": "YulAssignment", + "src": "21941:17:9", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "21950:1:9", + "nodeType": "YulIdentifier", + "src": "21950:1:9" + }, + { + "kind": "number", + "nativeSrc": "21953:4:9", + "nodeType": "YulLiteral", + "src": "21953:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21946:3:9", + "nodeType": "YulIdentifier", + "src": "21946:3:9" + }, + "nativeSrc": "21946:12:9", + "nodeType": "YulFunctionCall", + "src": "21946:12:9" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "21941:1:9", + "nodeType": "YulIdentifier", + "src": "21941:1:9" + } + ] + }, + { + "nativeSrc": "21983:22:9", + "nodeType": "YulAssignment", + "src": "21983:22:9", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "21992:1:9", + "nodeType": "YulIdentifier", + "src": "21992:1:9" + }, + { + "name": "searchLen", + "nativeSrc": "21995:9:9", + "nodeType": "YulIdentifier", + "src": "21995:9:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21988:3:9", + "nodeType": "YulIdentifier", + "src": "21988:3:9" + }, + "nativeSrc": "21988:17:9", + "nodeType": "YulFunctionCall", + "src": "21988:17:9" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "21983:1:9", + "nodeType": "YulIdentifier", + "src": "21983:1:9" + } + ] + }, + { + "body": { + "nativeSrc": "22074:137:9", + "nodeType": "YulBlock", + "src": "22074:137:9", + "statements": [ + { + "body": { + "nativeSrc": "22139:9:9", + "nodeType": "YulBlock", + "src": "22139:9:9", + "statements": [ + { + "nativeSrc": "22141:5:9", + "nodeType": "YulBreak", + "src": "22141:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "22117:1:9", + "nodeType": "YulIdentifier", + "src": "22117:1:9" + }, + { + "name": "subjectSearchEnd", + "nativeSrc": "22120:16:9", + "nodeType": "YulIdentifier", + "src": "22120:16:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "22114:2:9", + "nodeType": "YulIdentifier", + "src": "22114:2:9" + }, + "nativeSrc": "22114:23:9", + "nodeType": "YulFunctionCall", + "src": "22114:23:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "22107:6:9", + "nodeType": "YulIdentifier", + "src": "22107:6:9" + }, + "nativeSrc": "22107:31:9", + "nodeType": "YulFunctionCall", + "src": "22107:31:9" + }, + "nativeSrc": "22104:44:9", + "nodeType": "YulIf", + "src": "22104:44:9" + }, + { + "nativeSrc": "22177:8:9", + "nodeType": "YulContinue", + "src": "22177:8:9" + } + ] + }, + "condition": { + "name": "searchLen", + "nativeSrc": "22064:9:9", + "nodeType": "YulIdentifier", + "src": "22064:9:9" + }, + "nativeSrc": "22061:150:9", + "nodeType": "YulIf", + "src": "22061:150:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "21491:1:9", + "nodeType": "YulIdentifier", + "src": "21491:1:9" + }, + { + "arguments": [ + { + "name": "t", + "nativeSrc": "21498:1:9", + "nodeType": "YulIdentifier", + "src": "21498:1:9" + }, + { + "name": "s", + "nativeSrc": "21501:1:9", + "nodeType": "YulIdentifier", + "src": "21501:1:9" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "21494:3:9", + "nodeType": "YulIdentifier", + "src": "21494:3:9" + }, + "nativeSrc": "21494:9:9", + "nodeType": "YulFunctionCall", + "src": "21494:9:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "21487:3:9", + "nodeType": "YulIdentifier", + "src": "21487:3:9" + }, + "nativeSrc": "21487:17:9", + "nodeType": "YulFunctionCall", + "src": "21487:17:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "21480:6:9", + "nodeType": "YulIdentifier", + "src": "21480:6:9" + }, + "nativeSrc": "21480:25:9", + "nodeType": "YulFunctionCall", + "src": "21480:25:9" + }, + "nativeSrc": "21477:756:9", + "nodeType": "YulIf", + "src": "21477:756:9" + }, + { + "nativeSrc": "22254:14:9", + "nodeType": "YulAssignment", + "src": "22254:14:9", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "22263:1:9", + "nodeType": "YulIdentifier", + "src": "22263:1:9" + }, + { + "kind": "number", + "nativeSrc": "22266:1:9", + "nodeType": "YulLiteral", + "src": "22266:1:9", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22259:3:9", + "nodeType": "YulIdentifier", + "src": "22259:3:9" + }, + "nativeSrc": "22259:9:9", + "nodeType": "YulFunctionCall", + "src": "22259:9:9" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "22254:1:9", + "nodeType": "YulIdentifier", + "src": "22254:1:9" + } + ] + }, + { + "body": { + "nativeSrc": "22324:9:9", + "nodeType": "YulBlock", + "src": "22324:9:9", + "statements": [ + { + "nativeSrc": "22326:5:9", + "nodeType": "YulBreak", + "src": "22326:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "22302:1:9", + "nodeType": "YulIdentifier", + "src": "22302:1:9" + }, + { + "name": "subjectSearchEnd", + "nativeSrc": "22305:16:9", + "nodeType": "YulIdentifier", + "src": "22305:16:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "22299:2:9", + "nodeType": "YulIdentifier", + "src": "22299:2:9" + }, + "nativeSrc": "22299:23:9", + "nodeType": "YulFunctionCall", + "src": "22299:23:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "22292:6:9", + "nodeType": "YulIdentifier", + "src": "22292:6:9" + }, + "nativeSrc": "22292:31:9", + "nodeType": "YulFunctionCall", + "src": "22292:31:9" + }, + "nativeSrc": "22289:44:9", + "nodeType": "YulIf", + "src": "22289:44:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "21313:1:9", + "nodeType": "YulLiteral", + "src": "21313:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "21256:1095:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "21315:2:9", + "nodeType": "YulBlock", + "src": "21315:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "21260:52:9", + "nodeType": "YulBlock", + "src": "21260:52:9", + "statements": [ + { + "nativeSrc": "21262:48:9", + "nodeType": "YulVariableDeclaration", + "src": "21262:48:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21275:1:9", + "nodeType": "YulLiteral", + "src": "21275:1:9", + "type": "", + "value": "3" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21282:4:9", + "nodeType": "YulLiteral", + "src": "21282:4:9", + "type": "", + "value": "0x20" + }, + { + "arguments": [ + { + "name": "searchLen", + "nativeSrc": "21292:9:9", + "nodeType": "YulIdentifier", + "src": "21292:9:9" + }, + { + "kind": "number", + "nativeSrc": "21303:4:9", + "nodeType": "YulLiteral", + "src": "21303:4:9", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "21288:3:9", + "nodeType": "YulIdentifier", + "src": "21288:3:9" + }, + "nativeSrc": "21288:20:9", + "nodeType": "YulFunctionCall", + "src": "21288:20:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "21278:3:9", + "nodeType": "YulIdentifier", + "src": "21278:3:9" + }, + "nativeSrc": "21278:31:9", + "nodeType": "YulFunctionCall", + "src": "21278:31:9" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "21271:3:9", + "nodeType": "YulIdentifier", + "src": "21271:3:9" + }, + "nativeSrc": "21271:39:9", + "nodeType": "YulFunctionCall", + "src": "21271:39:9" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "21266:1:9", + "nodeType": "YulTypedName", + "src": "21266:1:9", + "type": "" + } + ] + } + ] + }, + "src": "21256:1095:9" + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "22375:6:9", + "nodeType": "YulIdentifier", + "src": "22375:6:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22387:1:9", + "nodeType": "YulLiteral", + "src": "22387:1:9", + "type": "", + "value": "5" + }, + { + "arguments": [ + { + "name": "o", + "nativeSrc": "22394:1:9", + "nodeType": "YulIdentifier", + "src": "22394:1:9" + }, + { + "arguments": [ + { + "name": "result", + "nativeSrc": "22401:6:9", + "nodeType": "YulIdentifier", + "src": "22401:6:9" + }, + { + "kind": "number", + "nativeSrc": "22409:4:9", + "nodeType": "YulLiteral", + "src": "22409:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22397:3:9", + "nodeType": "YulIdentifier", + "src": "22397:3:9" + }, + "nativeSrc": "22397:17:9", + "nodeType": "YulFunctionCall", + "src": "22397:17:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "22390:3:9", + "nodeType": "YulIdentifier", + "src": "22390:3:9" + }, + "nativeSrc": "22390:25:9", + "nodeType": "YulFunctionCall", + "src": "22390:25:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "22383:3:9", + "nodeType": "YulIdentifier", + "src": "22383:3:9" + }, + "nativeSrc": "22383:33:9", + "nodeType": "YulFunctionCall", + "src": "22383:33:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22368:6:9", + "nodeType": "YulIdentifier", + "src": "22368:6:9" + }, + "nativeSrc": "22368:49:9", + "nodeType": "YulFunctionCall", + "src": "22368:49:9" + }, + "nativeSrc": "22368:49:9", + "nodeType": "YulExpressionStatement", + "src": "22368:49:9" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22610:4:9", + "nodeType": "YulLiteral", + "src": "22610:4:9", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "o", + "nativeSrc": "22620:1:9", + "nodeType": "YulIdentifier", + "src": "22620:1:9" + }, + { + "kind": "number", + "nativeSrc": "22623:4:9", + "nodeType": "YulLiteral", + "src": "22623:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22616:3:9", + "nodeType": "YulIdentifier", + "src": "22616:3:9" + }, + "nativeSrc": "22616:12:9", + "nodeType": "YulFunctionCall", + "src": "22616:12:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22603:6:9", + "nodeType": "YulIdentifier", + "src": "22603:6:9" + }, + "nativeSrc": "22603:26:9", + "nodeType": "YulFunctionCall", + "src": "22603:26:9" + }, + "nativeSrc": "22603:26:9", + "nodeType": "YulExpressionStatement", + "src": "22603:26:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "searchLen", + "nativeSrc": "20800:9:9", + "nodeType": "YulIdentifier", + "src": "20800:9:9" + }, + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "20817:7:9", + "nodeType": "YulIdentifier", + "src": "20817:7:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "20811:5:9", + "nodeType": "YulIdentifier", + "src": "20811:5:9" + }, + "nativeSrc": "20811:14:9", + "nodeType": "YulFunctionCall", + "src": "20811:14:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "20797:2:9", + "nodeType": "YulIdentifier", + "src": "20797:2:9" + }, + "nativeSrc": "20797:29:9", + "nodeType": "YulFunctionCall", + "src": "20797:29:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "20790:6:9", + "nodeType": "YulIdentifier", + "src": "20790:6:9" + }, + "nativeSrc": "20790:37:9", + "nodeType": "YulFunctionCall", + "src": "20790:37:9" + }, + "nativeSrc": "20787:1856:9", + "nodeType": "YulIf", + "src": "20787:1856:9" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2924, + "isOffset": false, + "isSlot": false, + "src": "20767:6:9", + "valueSize": 1 + }, + { + "declaration": 2924, + "isOffset": false, + "isSlot": false, + "src": "21162:6:9", + "valueSize": 1 + }, + { + "declaration": 2924, + "isOffset": false, + "isSlot": false, + "src": "21225:6:9", + "valueSize": 1 + }, + { + "declaration": 2928, + "isOffset": false, + "isSlot": false, + "src": "20846:6:9", + "valueSize": 1 + }, + { + "declaration": 2928, + "isOffset": false, + "isSlot": false, + "src": "20941:6:9", + "valueSize": 1 + }, + { + "declaration": 2928, + "isOffset": false, + "isSlot": false, + "src": "22375:6:9", + "valueSize": 1 + }, + { + "declaration": 2928, + "isOffset": false, + "isSlot": false, + "src": "22401:6:9", + "valueSize": 1 + }, + { + "declaration": 2922, + "isOffset": false, + "isSlot": false, + "src": "20817:7:9", + "valueSize": 1 + }, + { + "declaration": 2922, + "isOffset": false, + "isSlot": false, + "src": "20897:7:9", + "valueSize": 1 + }, + { + "declaration": 2922, + "isOffset": false, + "isSlot": false, + "src": "21016:7:9", + "valueSize": 1 + }, + { + "declaration": 2922, + "isOffset": false, + "isSlot": false, + "src": "21877:7:9", + "valueSize": 1 + } + ], + "id": 2930, + "nodeType": "InlineAssembly", + "src": "20721:1932:9" + } + ] + }, + "documentation": { + "id": 2920, + "nodeType": "StructuredDocumentation", + "src": "20429:96:9", + "text": "@dev Returns all the indices of `needle` in `subject`.\n The indices are byte offsets." + }, + "id": 2932, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "indicesOf", + "nameLocation": "20539:9:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2925, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2922, + "mutability": "mutable", + "name": "subject", + "nameLocation": "20562:7:9", + "nodeType": "VariableDeclaration", + "scope": 2932, + "src": "20549:20:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2921, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "20549:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2924, + "mutability": "mutable", + "name": "needle", + "nameLocation": "20584:6:9", + "nodeType": "VariableDeclaration", + "scope": 2932, + "src": "20571:19:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2923, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "20571:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "20548:43:9" + }, + "returnParameters": { + "id": 2929, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2928, + "mutability": "mutable", + "name": "result", + "nameLocation": "20656:6:9", + "nodeType": "VariableDeclaration", + "scope": 2932, + "src": "20639:23:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 2926, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20639:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2927, + "nodeType": "ArrayTypeName", + "src": "20639:9:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "20638:25:9" + }, + "scope": 3089, + "src": "20530:2129:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2954, + "nodeType": "Block", + "src": "22897:1848:9", + "statements": [ + { + "assignments": [ + 2947 + ], + "declarations": [ + { + "constant": false, + "id": 2947, + "mutability": "mutable", + "name": "indices", + "nameLocation": "22924:7:9", + "nodeType": "VariableDeclaration", + "scope": 2954, + "src": "22907:24:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 2945, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "22907:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2946, + "nodeType": "ArrayTypeName", + "src": "22907:9:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "id": 2952, + "initialValue": { + "arguments": [ + { + "id": 2949, + "name": "subject", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2935, + "src": "22944:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 2950, + "name": "delimiter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2937, + "src": "22953:9:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2948, + "name": "indicesOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2932, + "src": "22934:9:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (bytes memory,bytes memory) pure returns (uint256[] memory)" + } + }, + "id": 2951, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22934:29:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "22907:56:9" + }, + { + "AST": { + "nativeSrc": "23025:1714:9", + "nodeType": "YulBlock", + "src": "23025:1714:9", + "statements": [ + { + "nativeSrc": "23039:18:9", + "nodeType": "YulVariableDeclaration", + "src": "23039:18:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23052:4:9", + "nodeType": "YulLiteral", + "src": "23052:4:9", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "23048:3:9", + "nodeType": "YulIdentifier", + "src": "23048:3:9" + }, + "nativeSrc": "23048:9:9", + "nodeType": "YulFunctionCall", + "src": "23048:9:9" + }, + "variables": [ + { + "name": "w", + "nativeSrc": "23043:1:9", + "nodeType": "YulTypedName", + "src": "23043:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "23070:34:9", + "nodeType": "YulVariableDeclaration", + "src": "23070:34:9", + "value": { + "arguments": [ + { + "name": "indices", + "nativeSrc": "23090:7:9", + "nodeType": "YulIdentifier", + "src": "23090:7:9" + }, + { + "kind": "number", + "nativeSrc": "23099:4:9", + "nodeType": "YulLiteral", + "src": "23099:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23086:3:9", + "nodeType": "YulIdentifier", + "src": "23086:3:9" + }, + "nativeSrc": "23086:18:9", + "nodeType": "YulFunctionCall", + "src": "23086:18:9" + }, + "variables": [ + { + "name": "indexPtr", + "nativeSrc": "23074:8:9", + "nodeType": "YulTypedName", + "src": "23074:8:9", + "type": "" + } + ] + }, + { + "nativeSrc": "23117:63:9", + "nodeType": "YulVariableDeclaration", + "src": "23117:63:9", + "value": { + "arguments": [ + { + "name": "indexPtr", + "nativeSrc": "23139:8:9", + "nodeType": "YulIdentifier", + "src": "23139:8:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23153:1:9", + "nodeType": "YulLiteral", + "src": "23153:1:9", + "type": "", + "value": "5" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "indices", + "nativeSrc": "23166:7:9", + "nodeType": "YulIdentifier", + "src": "23166:7:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "23160:5:9", + "nodeType": "YulIdentifier", + "src": "23160:5:9" + }, + "nativeSrc": "23160:14:9", + "nodeType": "YulFunctionCall", + "src": "23160:14:9" + }, + { + "kind": "number", + "nativeSrc": "23176:1:9", + "nodeType": "YulLiteral", + "src": "23176:1:9", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23156:3:9", + "nodeType": "YulIdentifier", + "src": "23156:3:9" + }, + "nativeSrc": "23156:22:9", + "nodeType": "YulFunctionCall", + "src": "23156:22:9" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "23149:3:9", + "nodeType": "YulIdentifier", + "src": "23149:3:9" + }, + "nativeSrc": "23149:30:9", + "nodeType": "YulFunctionCall", + "src": "23149:30:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23135:3:9", + "nodeType": "YulIdentifier", + "src": "23135:3:9" + }, + "nativeSrc": "23135:45:9", + "nodeType": "YulFunctionCall", + "src": "23135:45:9" + }, + "variables": [ + { + "name": "indicesEnd", + "nativeSrc": "23121:10:9", + "nodeType": "YulTypedName", + "src": "23121:10:9", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "indicesEnd", + "nativeSrc": "23204:10:9", + "nodeType": "YulIdentifier", + "src": "23204:10:9" + }, + { + "name": "w", + "nativeSrc": "23216:1:9", + "nodeType": "YulIdentifier", + "src": "23216:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23200:3:9", + "nodeType": "YulIdentifier", + "src": "23200:3:9" + }, + "nativeSrc": "23200:18:9", + "nodeType": "YulFunctionCall", + "src": "23200:18:9" + }, + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "23226:7:9", + "nodeType": "YulIdentifier", + "src": "23226:7:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "23220:5:9", + "nodeType": "YulIdentifier", + "src": "23220:5:9" + }, + "nativeSrc": "23220:14:9", + "nodeType": "YulFunctionCall", + "src": "23220:14:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "23193:6:9", + "nodeType": "YulIdentifier", + "src": "23193:6:9" + }, + "nativeSrc": "23193:42:9", + "nodeType": "YulFunctionCall", + "src": "23193:42:9" + }, + "nativeSrc": "23193:42:9", + "nodeType": "YulExpressionStatement", + "src": "23193:42:9" + }, + { + "expression": { + "arguments": [ + { + "name": "indices", + "nativeSrc": "23255:7:9", + "nodeType": "YulIdentifier", + "src": "23255:7:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "indices", + "nativeSrc": "23274:7:9", + "nodeType": "YulIdentifier", + "src": "23274:7:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "23268:5:9", + "nodeType": "YulIdentifier", + "src": "23268:5:9" + }, + "nativeSrc": "23268:14:9", + "nodeType": "YulFunctionCall", + "src": "23268:14:9" + }, + { + "kind": "number", + "nativeSrc": "23284:1:9", + "nodeType": "YulLiteral", + "src": "23284:1:9", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23264:3:9", + "nodeType": "YulIdentifier", + "src": "23264:3:9" + }, + "nativeSrc": "23264:22:9", + "nodeType": "YulFunctionCall", + "src": "23264:22:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "23248:6:9", + "nodeType": "YulIdentifier", + "src": "23248:6:9" + }, + "nativeSrc": "23248:39:9", + "nodeType": "YulFunctionCall", + "src": "23248:39:9" + }, + "nativeSrc": "23248:39:9", + "nodeType": "YulExpressionStatement", + "src": "23248:39:9" + }, + { + "body": { + "nativeSrc": "23332:1211:9", + "nodeType": "YulBlock", + "src": "23332:1211:9", + "statements": [ + { + "nativeSrc": "23350:28:9", + "nodeType": "YulVariableDeclaration", + "src": "23350:28:9", + "value": { + "arguments": [ + { + "name": "indexPtr", + "nativeSrc": "23369:8:9", + "nodeType": "YulIdentifier", + "src": "23369:8:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "23363:5:9", + "nodeType": "YulIdentifier", + "src": "23363:5:9" + }, + "nativeSrc": "23363:15:9", + "nodeType": "YulFunctionCall", + "src": "23363:15:9" + }, + "variables": [ + { + "name": "index", + "nativeSrc": "23354:5:9", + "nodeType": "YulTypedName", + "src": "23354:5:9", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "indexPtr", + "nativeSrc": "23402:8:9", + "nodeType": "YulIdentifier", + "src": "23402:8:9" + }, + { + "kind": "number", + "nativeSrc": "23412:4:9", + "nodeType": "YulLiteral", + "src": "23412:4:9", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "23395:6:9", + "nodeType": "YulIdentifier", + "src": "23395:6:9" + }, + "nativeSrc": "23395:22:9", + "nodeType": "YulFunctionCall", + "src": "23395:22:9" + }, + "nativeSrc": "23395:22:9", + "nodeType": "YulExpressionStatement", + "src": "23395:22:9" + }, + { + "body": { + "nativeSrc": "23466:895:9", + "nodeType": "YulBlock", + "src": "23466:895:9", + "statements": [ + { + "nativeSrc": "23488:26:9", + "nodeType": "YulVariableDeclaration", + "src": "23488:26:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23509:4:9", + "nodeType": "YulLiteral", + "src": "23509:4:9", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "23503:5:9", + "nodeType": "YulIdentifier", + "src": "23503:5:9" + }, + "nativeSrc": "23503:11:9", + "nodeType": "YulFunctionCall", + "src": "23503:11:9" + }, + "variables": [ + { + "name": "element", + "nativeSrc": "23492:7:9", + "nodeType": "YulTypedName", + "src": "23492:7:9", + "type": "" + } + ] + }, + { + "nativeSrc": "23535:30:9", + "nodeType": "YulVariableDeclaration", + "src": "23535:30:9", + "value": { + "arguments": [ + { + "name": "index", + "nativeSrc": "23548:5:9", + "nodeType": "YulIdentifier", + "src": "23548:5:9" + }, + { + "name": "prevIndex", + "nativeSrc": "23555:9:9", + "nodeType": "YulIdentifier", + "src": "23555:9:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "23544:3:9", + "nodeType": "YulIdentifier", + "src": "23544:3:9" + }, + "nativeSrc": "23544:21:9", + "nodeType": "YulFunctionCall", + "src": "23544:21:9" + }, + "variables": [ + { + "name": "l", + "nativeSrc": "23539:1:9", + "nodeType": "YulTypedName", + "src": "23539:1:9", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "element", + "nativeSrc": "23593:7:9", + "nodeType": "YulIdentifier", + "src": "23593:7:9" + }, + { + "name": "l", + "nativeSrc": "23602:1:9", + "nodeType": "YulIdentifier", + "src": "23602:1:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "23586:6:9", + "nodeType": "YulIdentifier", + "src": "23586:6:9" + }, + "nativeSrc": "23586:18:9", + "nodeType": "YulFunctionCall", + "src": "23586:18:9" + }, + "nativeSrc": "23586:18:9", + "nodeType": "YulExpressionStatement", + "src": "23586:18:9" + }, + { + "body": { + "nativeSrc": "23777:216:9", + "nodeType": "YulBlock", + "src": "23777:216:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "element", + "nativeSrc": "23814:7:9", + "nodeType": "YulIdentifier", + "src": "23814:7:9" + }, + { + "name": "o", + "nativeSrc": "23823:1:9", + "nodeType": "YulIdentifier", + "src": "23823:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23810:3:9", + "nodeType": "YulIdentifier", + "src": "23810:3:9" + }, + "nativeSrc": "23810:15:9", + "nodeType": "YulFunctionCall", + "src": "23810:15:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "subject", + "nativeSrc": "23841:7:9", + "nodeType": "YulIdentifier", + "src": "23841:7:9" + }, + { + "name": "prevIndex", + "nativeSrc": "23850:9:9", + "nodeType": "YulIdentifier", + "src": "23850:9:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23837:3:9", + "nodeType": "YulIdentifier", + "src": "23837:3:9" + }, + "nativeSrc": "23837:23:9", + "nodeType": "YulFunctionCall", + "src": "23837:23:9" + }, + { + "name": "o", + "nativeSrc": "23862:1:9", + "nodeType": "YulIdentifier", + "src": "23862:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23833:3:9", + "nodeType": "YulIdentifier", + "src": "23833:3:9" + }, + "nativeSrc": "23833:31:9", + "nodeType": "YulFunctionCall", + "src": "23833:31:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "23827:5:9", + "nodeType": "YulIdentifier", + "src": "23827:5:9" + }, + "nativeSrc": "23827:38:9", + "nodeType": "YulFunctionCall", + "src": "23827:38:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "23803:6:9", + "nodeType": "YulIdentifier", + "src": "23803:6:9" + }, + "nativeSrc": "23803:63:9", + "nodeType": "YulFunctionCall", + "src": "23803:63:9" + }, + "nativeSrc": "23803:63:9", + "nodeType": "YulExpressionStatement", + "src": "23803:63:9" + }, + { + "nativeSrc": "23891:14:9", + "nodeType": "YulAssignment", + "src": "23891:14:9", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "23900:1:9", + "nodeType": "YulIdentifier", + "src": "23900:1:9" + }, + { + "name": "w", + "nativeSrc": "23903:1:9", + "nodeType": "YulIdentifier", + "src": "23903:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23896:3:9", + "nodeType": "YulIdentifier", + "src": "23896:3:9" + }, + "nativeSrc": "23896:9:9", + "nodeType": "YulFunctionCall", + "src": "23896:9:9" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "23891:1:9", + "nodeType": "YulIdentifier", + "src": "23891:1:9" + } + ] + }, + { + "body": { + "nativeSrc": "23962:9:9", + "nodeType": "YulBlock", + "src": "23962:9:9", + "statements": [ + { + "nativeSrc": "23964:5:9", + "nodeType": "YulBreak", + "src": "23964:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "o", + "nativeSrc": "23959:1:9", + "nodeType": "YulIdentifier", + "src": "23959:1:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "23952:6:9", + "nodeType": "YulIdentifier", + "src": "23952:6:9" + }, + "nativeSrc": "23952:9:9", + "nodeType": "YulFunctionCall", + "src": "23952:9:9" + }, + "nativeSrc": "23949:22:9", + "nodeType": "YulIf", + "src": "23949:22:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "23772:1:9", + "nodeType": "YulLiteral", + "src": "23772:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "23734:259:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "23774:2:9", + "nodeType": "YulBlock", + "src": "23774:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "23738:33:9", + "nodeType": "YulBlock", + "src": "23738:33:9", + "statements": [ + { + "nativeSrc": "23740:29:9", + "nodeType": "YulVariableDeclaration", + "src": "23740:29:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "l", + "nativeSrc": "23757:1:9", + "nodeType": "YulIdentifier", + "src": "23757:1:9" + }, + { + "kind": "number", + "nativeSrc": "23760:4:9", + "nodeType": "YulLiteral", + "src": "23760:4:9", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23753:3:9", + "nodeType": "YulIdentifier", + "src": "23753:3:9" + }, + "nativeSrc": "23753:12:9", + "nodeType": "YulFunctionCall", + "src": "23753:12:9" + }, + { + "name": "w", + "nativeSrc": "23767:1:9", + "nodeType": "YulIdentifier", + "src": "23767:1:9" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "23749:3:9", + "nodeType": "YulIdentifier", + "src": "23749:3:9" + }, + "nativeSrc": "23749:20:9", + "nodeType": "YulFunctionCall", + "src": "23749:20:9" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "23744:1:9", + "nodeType": "YulTypedName", + "src": "23744:1:9", + "type": "" + } + ] + } + ] + }, + "src": "23734:259:9" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "element", + "nativeSrc": "24029:7:9", + "nodeType": "YulIdentifier", + "src": "24029:7:9" + }, + { + "kind": "number", + "nativeSrc": "24038:4:9", + "nodeType": "YulLiteral", + "src": "24038:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24025:3:9", + "nodeType": "YulIdentifier", + "src": "24025:3:9" + }, + "nativeSrc": "24025:18:9", + "nodeType": "YulFunctionCall", + "src": "24025:18:9" + }, + { + "name": "l", + "nativeSrc": "24045:1:9", + "nodeType": "YulIdentifier", + "src": "24045:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24021:3:9", + "nodeType": "YulIdentifier", + "src": "24021:3:9" + }, + "nativeSrc": "24021:26:9", + "nodeType": "YulFunctionCall", + "src": "24021:26:9" + }, + { + "kind": "number", + "nativeSrc": "24049:1:9", + "nodeType": "YulLiteral", + "src": "24049:1:9", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "24014:6:9", + "nodeType": "YulIdentifier", + "src": "24014:6:9" + }, + "nativeSrc": "24014:37:9", + "nodeType": "YulFunctionCall", + "src": "24014:37:9" + }, + "nativeSrc": "24014:37:9", + "nodeType": "YulExpressionStatement", + "src": "24014:37:9" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "24217:4:9", + "nodeType": "YulLiteral", + "src": "24217:4:9", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "element", + "nativeSrc": "24227:7:9", + "nodeType": "YulIdentifier", + "src": "24227:7:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "l", + "nativeSrc": "24244:1:9", + "nodeType": "YulIdentifier", + "src": "24244:1:9" + }, + { + "kind": "number", + "nativeSrc": "24247:4:9", + "nodeType": "YulLiteral", + "src": "24247:4:9", + "type": "", + "value": "0x3f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24240:3:9", + "nodeType": "YulIdentifier", + "src": "24240:3:9" + }, + "nativeSrc": "24240:12:9", + "nodeType": "YulFunctionCall", + "src": "24240:12:9" + }, + { + "name": "w", + "nativeSrc": "24254:1:9", + "nodeType": "YulIdentifier", + "src": "24254:1:9" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "24236:3:9", + "nodeType": "YulIdentifier", + "src": "24236:3:9" + }, + "nativeSrc": "24236:20:9", + "nodeType": "YulFunctionCall", + "src": "24236:20:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24223:3:9", + "nodeType": "YulIdentifier", + "src": "24223:3:9" + }, + "nativeSrc": "24223:34:9", + "nodeType": "YulFunctionCall", + "src": "24223:34:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "24210:6:9", + "nodeType": "YulIdentifier", + "src": "24210:6:9" + }, + "nativeSrc": "24210:48:9", + "nodeType": "YulFunctionCall", + "src": "24210:48:9" + }, + "nativeSrc": "24210:48:9", + "nodeType": "YulExpressionStatement", + "src": "24210:48:9" + }, + { + "expression": { + "arguments": [ + { + "name": "indexPtr", + "nativeSrc": "24286:8:9", + "nodeType": "YulIdentifier", + "src": "24286:8:9" + }, + { + "name": "element", + "nativeSrc": "24296:7:9", + "nodeType": "YulIdentifier", + "src": "24296:7:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "24279:6:9", + "nodeType": "YulIdentifier", + "src": "24279:6:9" + }, + "nativeSrc": "24279:25:9", + "nodeType": "YulFunctionCall", + "src": "24279:25:9" + }, + "nativeSrc": "24279:25:9", + "nodeType": "YulExpressionStatement", + "src": "24279:25:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "index", + "nativeSrc": "23447:5:9", + "nodeType": "YulIdentifier", + "src": "23447:5:9" + }, + { + "name": "prevIndex", + "nativeSrc": "23454:9:9", + "nodeType": "YulIdentifier", + "src": "23454:9:9" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "23444:2:9", + "nodeType": "YulIdentifier", + "src": "23444:2:9" + }, + "nativeSrc": "23444:20:9", + "nodeType": "YulFunctionCall", + "src": "23444:20:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "23437:6:9", + "nodeType": "YulIdentifier", + "src": "23437:6:9" + }, + "nativeSrc": "23437:28:9", + "nodeType": "YulFunctionCall", + "src": "23437:28:9" + }, + "nativeSrc": "23434:927:9", + "nodeType": "YulIf", + "src": "23434:927:9" + }, + { + "nativeSrc": "24378:41:9", + "nodeType": "YulAssignment", + "src": "24378:41:9", + "value": { + "arguments": [ + { + "name": "index", + "nativeSrc": "24395:5:9", + "nodeType": "YulIdentifier", + "src": "24395:5:9" + }, + { + "arguments": [ + { + "name": "delimiter", + "nativeSrc": "24408:9:9", + "nodeType": "YulIdentifier", + "src": "24408:9:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "24402:5:9", + "nodeType": "YulIdentifier", + "src": "24402:5:9" + }, + "nativeSrc": "24402:16:9", + "nodeType": "YulFunctionCall", + "src": "24402:16:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24391:3:9", + "nodeType": "YulIdentifier", + "src": "24391:3:9" + }, + "nativeSrc": "24391:28:9", + "nodeType": "YulFunctionCall", + "src": "24391:28:9" + }, + "variableNames": [ + { + "name": "prevIndex", + "nativeSrc": "24378:9:9", + "nodeType": "YulIdentifier", + "src": "24378:9:9" + } + ] + }, + { + "nativeSrc": "24436:31:9", + "nodeType": "YulAssignment", + "src": "24436:31:9", + "value": { + "arguments": [ + { + "name": "indexPtr", + "nativeSrc": "24452:8:9", + "nodeType": "YulIdentifier", + "src": "24452:8:9" + }, + { + "kind": "number", + "nativeSrc": "24462:4:9", + "nodeType": "YulLiteral", + "src": "24462:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24448:3:9", + "nodeType": "YulIdentifier", + "src": "24448:3:9" + }, + "nativeSrc": "24448:19:9", + "nodeType": "YulFunctionCall", + "src": "24448:19:9" + }, + "variableNames": [ + { + "name": "indexPtr", + "nativeSrc": "24436:8:9", + "nodeType": "YulIdentifier", + "src": "24436:8:9" + } + ] + }, + { + "body": { + "nativeSrc": "24520:9:9", + "nodeType": "YulBlock", + "src": "24520:9:9", + "statements": [ + { + "nativeSrc": "24522:5:9", + "nodeType": "YulBreak", + "src": "24522:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "indexPtr", + "nativeSrc": "24497:8:9", + "nodeType": "YulIdentifier", + "src": "24497:8:9" + }, + { + "name": "indicesEnd", + "nativeSrc": "24507:10:9", + "nodeType": "YulIdentifier", + "src": "24507:10:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "24494:2:9", + "nodeType": "YulIdentifier", + "src": "24494:2:9" + }, + "nativeSrc": "24494:24:9", + "nodeType": "YulFunctionCall", + "src": "24494:24:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "24487:6:9", + "nodeType": "YulIdentifier", + "src": "24487:6:9" + }, + "nativeSrc": "24487:32:9", + "nodeType": "YulFunctionCall", + "src": "24487:32:9" + }, + "nativeSrc": "24484:45:9", + "nodeType": "YulIf", + "src": "24484:45:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "23327:1:9", + "nodeType": "YulLiteral", + "src": "23327:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "23300:1243:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "23329:2:9", + "nodeType": "YulBlock", + "src": "23329:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "23304:22:9", + "nodeType": "YulBlock", + "src": "23304:22:9", + "statements": [ + { + "nativeSrc": "23306:18:9", + "nodeType": "YulVariableDeclaration", + "src": "23306:18:9", + "value": { + "kind": "number", + "nativeSrc": "23323:1:9", + "nodeType": "YulLiteral", + "src": "23323:1:9", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "prevIndex", + "nativeSrc": "23310:9:9", + "nodeType": "YulTypedName", + "src": "23310:9:9", + "type": "" + } + ] + } + ] + }, + "src": "23300:1243:9" + }, + { + "nativeSrc": "24556:17:9", + "nodeType": "YulAssignment", + "src": "24556:17:9", + "value": { + "name": "indices", + "nativeSrc": "24566:7:9", + "nodeType": "YulIdentifier", + "src": "24566:7:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "24556:6:9", + "nodeType": "YulIdentifier", + "src": "24556:6:9" + } + ] + }, + { + "body": { + "nativeSrc": "24614:115:9", + "nodeType": "YulBlock", + "src": "24614:115:9", + "statements": [ + { + "nativeSrc": "24632:28:9", + "nodeType": "YulAssignment", + "src": "24632:28:9", + "value": { + "arguments": [ + { + "name": "indices", + "nativeSrc": "24646:7:9", + "nodeType": "YulIdentifier", + "src": "24646:7:9" + }, + { + "kind": "number", + "nativeSrc": "24655:4:9", + "nodeType": "YulLiteral", + "src": "24655:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24642:3:9", + "nodeType": "YulIdentifier", + "src": "24642:3:9" + }, + "nativeSrc": "24642:18:9", + "nodeType": "YulFunctionCall", + "src": "24642:18:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "24632:6:9", + "nodeType": "YulIdentifier", + "src": "24632:6:9" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "24684:6:9", + "nodeType": "YulIdentifier", + "src": "24684:6:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "indices", + "nativeSrc": "24702:7:9", + "nodeType": "YulIdentifier", + "src": "24702:7:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "24696:5:9", + "nodeType": "YulIdentifier", + "src": "24696:5:9" + }, + "nativeSrc": "24696:14:9", + "nodeType": "YulFunctionCall", + "src": "24696:14:9" + }, + { + "kind": "number", + "nativeSrc": "24712:1:9", + "nodeType": "YulLiteral", + "src": "24712:1:9", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "24692:3:9", + "nodeType": "YulIdentifier", + "src": "24692:3:9" + }, + "nativeSrc": "24692:22:9", + "nodeType": "YulFunctionCall", + "src": "24692:22:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "24677:6:9", + "nodeType": "YulIdentifier", + "src": "24677:6:9" + }, + "nativeSrc": "24677:38:9", + "nodeType": "YulFunctionCall", + "src": "24677:38:9" + }, + "nativeSrc": "24677:38:9", + "nodeType": "YulExpressionStatement", + "src": "24677:38:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "delimiter", + "nativeSrc": "24602:9:9", + "nodeType": "YulIdentifier", + "src": "24602:9:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "24596:5:9", + "nodeType": "YulIdentifier", + "src": "24596:5:9" + }, + "nativeSrc": "24596:16:9", + "nodeType": "YulFunctionCall", + "src": "24596:16:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "24589:6:9", + "nodeType": "YulIdentifier", + "src": "24589:6:9" + }, + "nativeSrc": "24589:24:9", + "nodeType": "YulFunctionCall", + "src": "24589:24:9" + }, + "nativeSrc": "24586:143:9", + "nodeType": "YulIf", + "src": "24586:143:9" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2937, + "isOffset": false, + "isSlot": false, + "src": "24408:9:9", + "valueSize": 1 + }, + { + "declaration": 2937, + "isOffset": false, + "isSlot": false, + "src": "24602:9:9", + "valueSize": 1 + }, + { + "declaration": 2947, + "isOffset": false, + "isSlot": false, + "src": "23090:7:9", + "valueSize": 1 + }, + { + "declaration": 2947, + "isOffset": false, + "isSlot": false, + "src": "23166:7:9", + "valueSize": 1 + }, + { + "declaration": 2947, + "isOffset": false, + "isSlot": false, + "src": "23255:7:9", + "valueSize": 1 + }, + { + "declaration": 2947, + "isOffset": false, + "isSlot": false, + "src": "23274:7:9", + "valueSize": 1 + }, + { + "declaration": 2947, + "isOffset": false, + "isSlot": false, + "src": "24566:7:9", + "valueSize": 1 + }, + { + "declaration": 2947, + "isOffset": false, + "isSlot": false, + "src": "24646:7:9", + "valueSize": 1 + }, + { + "declaration": 2947, + "isOffset": false, + "isSlot": false, + "src": "24702:7:9", + "valueSize": 1 + }, + { + "declaration": 2941, + "isOffset": false, + "isSlot": false, + "src": "24556:6:9", + "valueSize": 1 + }, + { + "declaration": 2941, + "isOffset": false, + "isSlot": false, + "src": "24632:6:9", + "valueSize": 1 + }, + { + "declaration": 2941, + "isOffset": false, + "isSlot": false, + "src": "24684:6:9", + "valueSize": 1 + }, + { + "declaration": 2935, + "isOffset": false, + "isSlot": false, + "src": "23226:7:9", + "valueSize": 1 + }, + { + "declaration": 2935, + "isOffset": false, + "isSlot": false, + "src": "23841:7:9", + "valueSize": 1 + } + ], + "id": 2953, + "nodeType": "InlineAssembly", + "src": "23016:1723:9" + } + ] + }, + "documentation": { + "id": 2933, + "nodeType": "StructuredDocumentation", + "src": "22665:92:9", + "text": "@dev Returns an arrays of bytess based on the `delimiter` inside of the `subject` bytes." + }, + "id": 2955, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "split", + "nameLocation": "22771:5:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2938, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2935, + "mutability": "mutable", + "name": "subject", + "nameLocation": "22790:7:9", + "nodeType": "VariableDeclaration", + "scope": 2955, + "src": "22777:20:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2934, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "22777:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2937, + "mutability": "mutable", + "name": "delimiter", + "nameLocation": "22812:9:9", + "nodeType": "VariableDeclaration", + "scope": 2955, + "src": "22799:22:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2936, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "22799:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "22776:46:9" + }, + "returnParameters": { + "id": 2942, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2941, + "mutability": "mutable", + "name": "result", + "nameLocation": "22885:6:9", + "nodeType": "VariableDeclaration", + "scope": 2955, + "src": "22870:21:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 2939, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "22870:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 2940, + "nodeType": "ArrayTypeName", + "src": "22870:7:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + } + ], + "src": "22869:23:9" + }, + "scope": 3089, + "src": "22762:1983:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2966, + "nodeType": "Block", + "src": "24986:1090:9", + "statements": [ + { + "AST": { + "nativeSrc": "25048:1022:9", + "nodeType": "YulBlock", + "src": "25048:1022:9", + "statements": [ + { + "nativeSrc": "25062:21:9", + "nodeType": "YulAssignment", + "src": "25062:21:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "25078:4:9", + "nodeType": "YulLiteral", + "src": "25078:4:9", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "25072:5:9", + "nodeType": "YulIdentifier", + "src": "25072:5:9" + }, + "nativeSrc": "25072:11:9", + "nodeType": "YulFunctionCall", + "src": "25072:11:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "25062:6:9", + "nodeType": "YulIdentifier", + "src": "25062:6:9" + } + ] + }, + { + "nativeSrc": "25096:18:9", + "nodeType": "YulVariableDeclaration", + "src": "25096:18:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "25109:4:9", + "nodeType": "YulLiteral", + "src": "25109:4:9", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "25105:3:9", + "nodeType": "YulIdentifier", + "src": "25105:3:9" + }, + "nativeSrc": "25105:9:9", + "nodeType": "YulFunctionCall", + "src": "25105:9:9" + }, + "variables": [ + { + "name": "w", + "nativeSrc": "25100:1:9", + "nodeType": "YulTypedName", + "src": "25100:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "25127:20:9", + "nodeType": "YulVariableDeclaration", + "src": "25127:20:9", + "value": { + "arguments": [ + { + "name": "a", + "nativeSrc": "25145:1:9", + "nodeType": "YulIdentifier", + "src": "25145:1:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "25139:5:9", + "nodeType": "YulIdentifier", + "src": "25139:5:9" + }, + "nativeSrc": "25139:8:9", + "nodeType": "YulFunctionCall", + "src": "25139:8:9" + }, + "variables": [ + { + "name": "aLen", + "nativeSrc": "25131:4:9", + "nodeType": "YulTypedName", + "src": "25131:4:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "25261:161:9", + "nodeType": "YulBlock", + "src": "25261:161:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "25290:6:9", + "nodeType": "YulIdentifier", + "src": "25290:6:9" + }, + { + "name": "o", + "nativeSrc": "25298:1:9", + "nodeType": "YulIdentifier", + "src": "25298:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "25286:3:9", + "nodeType": "YulIdentifier", + "src": "25286:3:9" + }, + "nativeSrc": "25286:14:9", + "nodeType": "YulFunctionCall", + "src": "25286:14:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "a", + "nativeSrc": "25312:1:9", + "nodeType": "YulIdentifier", + "src": "25312:1:9" + }, + { + "name": "o", + "nativeSrc": "25315:1:9", + "nodeType": "YulIdentifier", + "src": "25315:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "25308:3:9", + "nodeType": "YulIdentifier", + "src": "25308:3:9" + }, + "nativeSrc": "25308:9:9", + "nodeType": "YulFunctionCall", + "src": "25308:9:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "25302:5:9", + "nodeType": "YulIdentifier", + "src": "25302:5:9" + }, + "nativeSrc": "25302:16:9", + "nodeType": "YulFunctionCall", + "src": "25302:16:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "25279:6:9", + "nodeType": "YulIdentifier", + "src": "25279:6:9" + }, + "nativeSrc": "25279:40:9", + "nodeType": "YulFunctionCall", + "src": "25279:40:9" + }, + "nativeSrc": "25279:40:9", + "nodeType": "YulExpressionStatement", + "src": "25279:40:9" + }, + { + "nativeSrc": "25336:14:9", + "nodeType": "YulAssignment", + "src": "25336:14:9", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "25345:1:9", + "nodeType": "YulIdentifier", + "src": "25345:1:9" + }, + { + "name": "w", + "nativeSrc": "25348:1:9", + "nodeType": "YulIdentifier", + "src": "25348:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "25341:3:9", + "nodeType": "YulIdentifier", + "src": "25341:3:9" + }, + "nativeSrc": "25341:9:9", + "nodeType": "YulFunctionCall", + "src": "25341:9:9" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "25336:1:9", + "nodeType": "YulIdentifier", + "src": "25336:1:9" + } + ] + }, + { + "body": { + "nativeSrc": "25399:9:9", + "nodeType": "YulBlock", + "src": "25399:9:9", + "statements": [ + { + "nativeSrc": "25401:5:9", + "nodeType": "YulBreak", + "src": "25401:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "o", + "nativeSrc": "25396:1:9", + "nodeType": "YulIdentifier", + "src": "25396:1:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "25389:6:9", + "nodeType": "YulIdentifier", + "src": "25389:6:9" + }, + "nativeSrc": "25389:9:9", + "nodeType": "YulFunctionCall", + "src": "25389:9:9" + }, + "nativeSrc": "25386:22:9", + "nodeType": "YulIf", + "src": "25386:22:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "25256:1:9", + "nodeType": "YulLiteral", + "src": "25256:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "25215:207:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "25258:2:9", + "nodeType": "YulBlock", + "src": "25258:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "25219:36:9", + "nodeType": "YulBlock", + "src": "25219:36:9", + "statements": [ + { + "nativeSrc": "25221:32:9", + "nodeType": "YulVariableDeclaration", + "src": "25221:32:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "aLen", + "nativeSrc": "25238:4:9", + "nodeType": "YulIdentifier", + "src": "25238:4:9" + }, + { + "kind": "number", + "nativeSrc": "25244:4:9", + "nodeType": "YulLiteral", + "src": "25244:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "25234:3:9", + "nodeType": "YulIdentifier", + "src": "25234:3:9" + }, + "nativeSrc": "25234:15:9", + "nodeType": "YulFunctionCall", + "src": "25234:15:9" + }, + { + "name": "w", + "nativeSrc": "25251:1:9", + "nodeType": "YulIdentifier", + "src": "25251:1:9" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "25230:3:9", + "nodeType": "YulIdentifier", + "src": "25230:3:9" + }, + "nativeSrc": "25230:23:9", + "nodeType": "YulFunctionCall", + "src": "25230:23:9" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "25225:1:9", + "nodeType": "YulTypedName", + "src": "25225:1:9", + "type": "" + } + ] + } + ] + }, + "src": "25215:207:9" + }, + { + "nativeSrc": "25435:20:9", + "nodeType": "YulVariableDeclaration", + "src": "25435:20:9", + "value": { + "arguments": [ + { + "name": "b", + "nativeSrc": "25453:1:9", + "nodeType": "YulIdentifier", + "src": "25453:1:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "25447:5:9", + "nodeType": "YulIdentifier", + "src": "25447:5:9" + }, + "nativeSrc": "25447:8:9", + "nodeType": "YulFunctionCall", + "src": "25447:8:9" + }, + "variables": [ + { + "name": "bLen", + "nativeSrc": "25439:4:9", + "nodeType": "YulTypedName", + "src": "25439:4:9", + "type": "" + } + ] + }, + { + "nativeSrc": "25468:31:9", + "nodeType": "YulVariableDeclaration", + "src": "25468:31:9", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "25486:6:9", + "nodeType": "YulIdentifier", + "src": "25486:6:9" + }, + { + "name": "aLen", + "nativeSrc": "25494:4:9", + "nodeType": "YulIdentifier", + "src": "25494:4:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "25482:3:9", + "nodeType": "YulIdentifier", + "src": "25482:3:9" + }, + "nativeSrc": "25482:17:9", + "nodeType": "YulFunctionCall", + "src": "25482:17:9" + }, + "variables": [ + { + "name": "output", + "nativeSrc": "25472:6:9", + "nodeType": "YulTypedName", + "src": "25472:6:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "25613:161:9", + "nodeType": "YulBlock", + "src": "25613:161:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "output", + "nativeSrc": "25642:6:9", + "nodeType": "YulIdentifier", + "src": "25642:6:9" + }, + { + "name": "o", + "nativeSrc": "25650:1:9", + "nodeType": "YulIdentifier", + "src": "25650:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "25638:3:9", + "nodeType": "YulIdentifier", + "src": "25638:3:9" + }, + "nativeSrc": "25638:14:9", + "nodeType": "YulFunctionCall", + "src": "25638:14:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "b", + "nativeSrc": "25664:1:9", + "nodeType": "YulIdentifier", + "src": "25664:1:9" + }, + { + "name": "o", + "nativeSrc": "25667:1:9", + "nodeType": "YulIdentifier", + "src": "25667:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "25660:3:9", + "nodeType": "YulIdentifier", + "src": "25660:3:9" + }, + "nativeSrc": "25660:9:9", + "nodeType": "YulFunctionCall", + "src": "25660:9:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "25654:5:9", + "nodeType": "YulIdentifier", + "src": "25654:5:9" + }, + "nativeSrc": "25654:16:9", + "nodeType": "YulFunctionCall", + "src": "25654:16:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "25631:6:9", + "nodeType": "YulIdentifier", + "src": "25631:6:9" + }, + "nativeSrc": "25631:40:9", + "nodeType": "YulFunctionCall", + "src": "25631:40:9" + }, + "nativeSrc": "25631:40:9", + "nodeType": "YulExpressionStatement", + "src": "25631:40:9" + }, + { + "nativeSrc": "25688:14:9", + "nodeType": "YulAssignment", + "src": "25688:14:9", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "25697:1:9", + "nodeType": "YulIdentifier", + "src": "25697:1:9" + }, + { + "name": "w", + "nativeSrc": "25700:1:9", + "nodeType": "YulIdentifier", + "src": "25700:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "25693:3:9", + "nodeType": "YulIdentifier", + "src": "25693:3:9" + }, + "nativeSrc": "25693:9:9", + "nodeType": "YulFunctionCall", + "src": "25693:9:9" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "25688:1:9", + "nodeType": "YulIdentifier", + "src": "25688:1:9" + } + ] + }, + { + "body": { + "nativeSrc": "25751:9:9", + "nodeType": "YulBlock", + "src": "25751:9:9", + "statements": [ + { + "nativeSrc": "25753:5:9", + "nodeType": "YulBreak", + "src": "25753:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "o", + "nativeSrc": "25748:1:9", + "nodeType": "YulIdentifier", + "src": "25748:1:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "25741:6:9", + "nodeType": "YulIdentifier", + "src": "25741:6:9" + }, + "nativeSrc": "25741:9:9", + "nodeType": "YulFunctionCall", + "src": "25741:9:9" + }, + "nativeSrc": "25738:22:9", + "nodeType": "YulIf", + "src": "25738:22:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "25608:1:9", + "nodeType": "YulLiteral", + "src": "25608:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "25567:207:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "25610:2:9", + "nodeType": "YulBlock", + "src": "25610:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "25571:36:9", + "nodeType": "YulBlock", + "src": "25571:36:9", + "statements": [ + { + "nativeSrc": "25573:32:9", + "nodeType": "YulVariableDeclaration", + "src": "25573:32:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "bLen", + "nativeSrc": "25590:4:9", + "nodeType": "YulIdentifier", + "src": "25590:4:9" + }, + { + "kind": "number", + "nativeSrc": "25596:4:9", + "nodeType": "YulLiteral", + "src": "25596:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "25586:3:9", + "nodeType": "YulIdentifier", + "src": "25586:3:9" + }, + "nativeSrc": "25586:15:9", + "nodeType": "YulFunctionCall", + "src": "25586:15:9" + }, + { + "name": "w", + "nativeSrc": "25603:1:9", + "nodeType": "YulIdentifier", + "src": "25603:1:9" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "25582:3:9", + "nodeType": "YulIdentifier", + "src": "25582:3:9" + }, + "nativeSrc": "25582:23:9", + "nodeType": "YulFunctionCall", + "src": "25582:23:9" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "25577:1:9", + "nodeType": "YulTypedName", + "src": "25577:1:9", + "type": "" + } + ] + } + ] + }, + "src": "25567:207:9" + }, + { + "nativeSrc": "25787:31:9", + "nodeType": "YulVariableDeclaration", + "src": "25787:31:9", + "value": { + "arguments": [ + { + "name": "aLen", + "nativeSrc": "25807:4:9", + "nodeType": "YulIdentifier", + "src": "25807:4:9" + }, + { + "name": "bLen", + "nativeSrc": "25813:4:9", + "nodeType": "YulIdentifier", + "src": "25813:4:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "25803:3:9", + "nodeType": "YulIdentifier", + "src": "25803:3:9" + }, + "nativeSrc": "25803:15:9", + "nodeType": "YulFunctionCall", + "src": "25803:15:9" + }, + "variables": [ + { + "name": "totalLen", + "nativeSrc": "25791:8:9", + "nodeType": "YulTypedName", + "src": "25791:8:9", + "type": "" + } + ] + }, + { + "nativeSrc": "25831:44:9", + "nodeType": "YulVariableDeclaration", + "src": "25831:44:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "25851:6:9", + "nodeType": "YulIdentifier", + "src": "25851:6:9" + }, + { + "kind": "number", + "nativeSrc": "25859:4:9", + "nodeType": "YulLiteral", + "src": "25859:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "25847:3:9", + "nodeType": "YulIdentifier", + "src": "25847:3:9" + }, + "nativeSrc": "25847:17:9", + "nodeType": "YulFunctionCall", + "src": "25847:17:9" + }, + { + "name": "totalLen", + "nativeSrc": "25866:8:9", + "nodeType": "YulIdentifier", + "src": "25866:8:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "25843:3:9", + "nodeType": "YulIdentifier", + "src": "25843:3:9" + }, + "nativeSrc": "25843:32:9", + "nodeType": "YulFunctionCall", + "src": "25843:32:9" + }, + "variables": [ + { + "name": "last", + "nativeSrc": "25835:4:9", + "nodeType": "YulTypedName", + "src": "25835:4:9", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "last", + "nativeSrc": "25895:4:9", + "nodeType": "YulIdentifier", + "src": "25895:4:9" + }, + { + "kind": "number", + "nativeSrc": "25901:1:9", + "nodeType": "YulLiteral", + "src": "25901:1:9", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "25888:6:9", + "nodeType": "YulIdentifier", + "src": "25888:6:9" + }, + "nativeSrc": "25888:15:9", + "nodeType": "YulFunctionCall", + "src": "25888:15:9" + }, + "nativeSrc": "25888:15:9", + "nodeType": "YulExpressionStatement", + "src": "25888:15:9" + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "25960:6:9", + "nodeType": "YulIdentifier", + "src": "25960:6:9" + }, + { + "name": "totalLen", + "nativeSrc": "25968:8:9", + "nodeType": "YulIdentifier", + "src": "25968:8:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "25953:6:9", + "nodeType": "YulIdentifier", + "src": "25953:6:9" + }, + "nativeSrc": "25953:24:9", + "nodeType": "YulFunctionCall", + "src": "25953:24:9" + }, + "nativeSrc": "25953:24:9", + "nodeType": "YulExpressionStatement", + "src": "25953:24:9" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "26018:4:9", + "nodeType": "YulLiteral", + "src": "26018:4:9", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "last", + "nativeSrc": "26028:4:9", + "nodeType": "YulIdentifier", + "src": "26028:4:9" + }, + { + "kind": "number", + "nativeSrc": "26034:4:9", + "nodeType": "YulLiteral", + "src": "26034:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "26024:3:9", + "nodeType": "YulIdentifier", + "src": "26024:3:9" + }, + "nativeSrc": "26024:15:9", + "nodeType": "YulFunctionCall", + "src": "26024:15:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "26011:6:9", + "nodeType": "YulIdentifier", + "src": "26011:6:9" + }, + "nativeSrc": "26011:29:9", + "nodeType": "YulFunctionCall", + "src": "26011:29:9" + }, + "nativeSrc": "26011:29:9", + "nodeType": "YulExpressionStatement", + "src": "26011:29:9" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2958, + "isOffset": false, + "isSlot": false, + "src": "25145:1:9", + "valueSize": 1 + }, + { + "declaration": 2958, + "isOffset": false, + "isSlot": false, + "src": "25312:1:9", + "valueSize": 1 + }, + { + "declaration": 2960, + "isOffset": false, + "isSlot": false, + "src": "25453:1:9", + "valueSize": 1 + }, + { + "declaration": 2960, + "isOffset": false, + "isSlot": false, + "src": "25664:1:9", + "valueSize": 1 + }, + { + "declaration": 2963, + "isOffset": false, + "isSlot": false, + "src": "25062:6:9", + "valueSize": 1 + }, + { + "declaration": 2963, + "isOffset": false, + "isSlot": false, + "src": "25290:6:9", + "valueSize": 1 + }, + { + "declaration": 2963, + "isOffset": false, + "isSlot": false, + "src": "25486:6:9", + "valueSize": 1 + }, + { + "declaration": 2963, + "isOffset": false, + "isSlot": false, + "src": "25851:6:9", + "valueSize": 1 + }, + { + "declaration": 2963, + "isOffset": false, + "isSlot": false, + "src": "25960:6:9", + "valueSize": 1 + } + ], + "id": 2965, + "nodeType": "InlineAssembly", + "src": "25039:1031:9" + } + ] + }, + "documentation": { + "id": 2956, + "nodeType": "StructuredDocumentation", + "src": "24751:138:9", + "text": "@dev Returns a concatenated bytes of `a` and `b`.\n Cheaper than `bytes.concat()` and does not de-align the free memory pointer." + }, + "id": 2967, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "concat", + "nameLocation": "24903:6:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2961, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2958, + "mutability": "mutable", + "name": "a", + "nameLocation": "24923:1:9", + "nodeType": "VariableDeclaration", + "scope": 2967, + "src": "24910:14:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2957, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "24910:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2960, + "mutability": "mutable", + "name": "b", + "nameLocation": "24939:1:9", + "nodeType": "VariableDeclaration", + "scope": 2967, + "src": "24926:14:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2959, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "24926:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "24909:32:9" + }, + "returnParameters": { + "id": 2964, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2963, + "mutability": "mutable", + "name": "result", + "nameLocation": "24978:6:9", + "nodeType": "VariableDeclaration", + "scope": 2967, + "src": "24965:19:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2962, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "24965:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "24964:21:9" + }, + "scope": 3089, + "src": "24894:1182:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2978, + "nodeType": "Block", + "src": "26207:174:9", + "statements": [ + { + "AST": { + "nativeSrc": "26269:106:9", + "nodeType": "YulBlock", + "src": "26269:106:9", + "statements": [ + { + "nativeSrc": "26283:82:9", + "nodeType": "YulAssignment", + "src": "26283:82:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "a", + "nativeSrc": "26310:1:9", + "nodeType": "YulIdentifier", + "src": "26310:1:9" + }, + { + "kind": "number", + "nativeSrc": "26313:4:9", + "nodeType": "YulLiteral", + "src": "26313:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "26306:3:9", + "nodeType": "YulIdentifier", + "src": "26306:3:9" + }, + "nativeSrc": "26306:12:9", + "nodeType": "YulFunctionCall", + "src": "26306:12:9" + }, + { + "arguments": [ + { + "name": "a", + "nativeSrc": "26326:1:9", + "nodeType": "YulIdentifier", + "src": "26326:1:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "26320:5:9", + "nodeType": "YulIdentifier", + "src": "26320:5:9" + }, + "nativeSrc": "26320:8:9", + "nodeType": "YulFunctionCall", + "src": "26320:8:9" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "26296:9:9", + "nodeType": "YulIdentifier", + "src": "26296:9:9" + }, + "nativeSrc": "26296:33:9", + "nodeType": "YulFunctionCall", + "src": "26296:33:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "b", + "nativeSrc": "26345:1:9", + "nodeType": "YulIdentifier", + "src": "26345:1:9" + }, + { + "kind": "number", + "nativeSrc": "26348:4:9", + "nodeType": "YulLiteral", + "src": "26348:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "26341:3:9", + "nodeType": "YulIdentifier", + "src": "26341:3:9" + }, + "nativeSrc": "26341:12:9", + "nodeType": "YulFunctionCall", + "src": "26341:12:9" + }, + { + "arguments": [ + { + "name": "b", + "nativeSrc": "26361:1:9", + "nodeType": "YulIdentifier", + "src": "26361:1:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "26355:5:9", + "nodeType": "YulIdentifier", + "src": "26355:5:9" + }, + "nativeSrc": "26355:8:9", + "nodeType": "YulFunctionCall", + "src": "26355:8:9" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "26331:9:9", + "nodeType": "YulIdentifier", + "src": "26331:9:9" + }, + "nativeSrc": "26331:33:9", + "nodeType": "YulFunctionCall", + "src": "26331:33:9" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "26293:2:9", + "nodeType": "YulIdentifier", + "src": "26293:2:9" + }, + "nativeSrc": "26293:72:9", + "nodeType": "YulFunctionCall", + "src": "26293:72:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "26283:6:9", + "nodeType": "YulIdentifier", + "src": "26283:6:9" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2970, + "isOffset": false, + "isSlot": false, + "src": "26310:1:9", + "valueSize": 1 + }, + { + "declaration": 2970, + "isOffset": false, + "isSlot": false, + "src": "26326:1:9", + "valueSize": 1 + }, + { + "declaration": 2972, + "isOffset": false, + "isSlot": false, + "src": "26345:1:9", + "valueSize": 1 + }, + { + "declaration": 2972, + "isOffset": false, + "isSlot": false, + "src": "26361:1:9", + "valueSize": 1 + }, + { + "declaration": 2975, + "isOffset": false, + "isSlot": false, + "src": "26283:6:9", + "valueSize": 1 + } + ], + "id": 2977, + "nodeType": "InlineAssembly", + "src": "26260:115:9" + } + ] + }, + "documentation": { + "id": 2968, + "nodeType": "StructuredDocumentation", + "src": "26082:40:9", + "text": "@dev Returns whether `a` equals `b`." + }, + "id": 2979, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "eq", + "nameLocation": "26136:2:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2973, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2970, + "mutability": "mutable", + "name": "a", + "nameLocation": "26152:1:9", + "nodeType": "VariableDeclaration", + "scope": 2979, + "src": "26139:14:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2969, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "26139:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2972, + "mutability": "mutable", + "name": "b", + "nameLocation": "26168:1:9", + "nodeType": "VariableDeclaration", + "scope": 2979, + "src": "26155:14:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2971, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "26155:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "26138:32:9" + }, + "returnParameters": { + "id": 2976, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2975, + "mutability": "mutable", + "name": "result", + "nameLocation": "26199:6:9", + "nodeType": "VariableDeclaration", + "scope": 2979, + "src": "26194:11:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2974, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "26194:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "26193:13:9" + }, + "scope": 3089, + "src": "26127:254:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2990, + "nodeType": "Block", + "src": "26552:774:9", + "statements": [ + { + "AST": { + "nativeSrc": "26614:706:9", + "nodeType": "YulBlock", + "src": "26614:706:9", + "statements": [ + { + "nativeSrc": "26706:46:9", + "nodeType": "YulVariableDeclaration", + "src": "26706:46:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "26723:1:9", + "nodeType": "YulLiteral", + "src": "26723:1:9", + "type": "", + "value": "7" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "b", + "nativeSrc": "26741:1:9", + "nodeType": "YulIdentifier", + "src": "26741:1:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "26734:6:9", + "nodeType": "YulIdentifier", + "src": "26734:6:9" + }, + "nativeSrc": "26734:9:9", + "nodeType": "YulFunctionCall", + "src": "26734:9:9" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "26730:3:9", + "nodeType": "YulIdentifier", + "src": "26730:3:9" + }, + "nativeSrc": "26730:14:9", + "nodeType": "YulFunctionCall", + "src": "26730:14:9" + }, + { + "kind": "number", + "nativeSrc": "26746:3:9", + "nodeType": "YulLiteral", + "src": "26746:3:9", + "type": "", + "value": "255" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "26726:3:9", + "nodeType": "YulIdentifier", + "src": "26726:3:9" + }, + "nativeSrc": "26726:24:9", + "nodeType": "YulFunctionCall", + "src": "26726:24:9" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "26719:3:9", + "nodeType": "YulIdentifier", + "src": "26719:3:9" + }, + "nativeSrc": "26719:32:9", + "nodeType": "YulFunctionCall", + "src": "26719:32:9" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "26715:3:9", + "nodeType": "YulIdentifier", + "src": "26715:3:9" + }, + "nativeSrc": "26715:37:9", + "nodeType": "YulFunctionCall", + "src": "26715:37:9" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "26710:1:9", + "nodeType": "YulTypedName", + "src": "26710:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "26782:45:9", + "nodeType": "YulVariableDeclaration", + "src": "26782:45:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "26798:1:9", + "nodeType": "YulIdentifier", + "src": "26798:1:9" + }, + { + "arguments": [ + { + "name": "b", + "nativeSrc": "26804:1:9", + "nodeType": "YulIdentifier", + "src": "26804:1:9" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "26811:1:9", + "nodeType": "YulIdentifier", + "src": "26811:1:9" + }, + { + "arguments": [ + { + "name": "b", + "nativeSrc": "26818:1:9", + "nodeType": "YulIdentifier", + "src": "26818:1:9" + }, + { + "name": "m", + "nativeSrc": "26821:1:9", + "nodeType": "YulIdentifier", + "src": "26821:1:9" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "26814:3:9", + "nodeType": "YulIdentifier", + "src": "26814:3:9" + }, + "nativeSrc": "26814:9:9", + "nodeType": "YulFunctionCall", + "src": "26814:9:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "26807:3:9", + "nodeType": "YulIdentifier", + "src": "26807:3:9" + }, + "nativeSrc": "26807:17:9", + "nodeType": "YulFunctionCall", + "src": "26807:17:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "26801:2:9", + "nodeType": "YulIdentifier", + "src": "26801:2:9" + }, + "nativeSrc": "26801:24:9", + "nodeType": "YulFunctionCall", + "src": "26801:24:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "26795:2:9", + "nodeType": "YulIdentifier", + "src": "26795:2:9" + }, + "nativeSrc": "26795:31:9", + "nodeType": "YulFunctionCall", + "src": "26795:31:9" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "26791:3:9", + "nodeType": "YulIdentifier", + "src": "26791:3:9" + }, + "nativeSrc": "26791:36:9", + "nodeType": "YulFunctionCall", + "src": "26791:36:9" + }, + "variables": [ + { + "name": "x", + "nativeSrc": "26786:1:9", + "nodeType": "YulTypedName", + "src": "26786:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "26840:44:9", + "nodeType": "YulVariableDeclaration", + "src": "26840:44:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "26853:1:9", + "nodeType": "YulLiteral", + "src": "26853:1:9", + "type": "", + "value": "7" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "26874:3:9", + "nodeType": "YulLiteral", + "src": "26874:3:9", + "type": "", + "value": "128" + }, + { + "name": "x", + "nativeSrc": "26879:1:9", + "nodeType": "YulIdentifier", + "src": "26879:1:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "26870:3:9", + "nodeType": "YulIdentifier", + "src": "26870:3:9" + }, + "nativeSrc": "26870:11:9", + "nodeType": "YulFunctionCall", + "src": "26870:11:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "26863:6:9", + "nodeType": "YulIdentifier", + "src": "26863:6:9" + }, + "nativeSrc": "26863:19:9", + "nodeType": "YulFunctionCall", + "src": "26863:19:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "26856:6:9", + "nodeType": "YulIdentifier", + "src": "26856:6:9" + }, + "nativeSrc": "26856:27:9", + "nodeType": "YulFunctionCall", + "src": "26856:27:9" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "26849:3:9", + "nodeType": "YulIdentifier", + "src": "26849:3:9" + }, + "nativeSrc": "26849:35:9", + "nodeType": "YulFunctionCall", + "src": "26849:35:9" + }, + "variables": [ + { + "name": "r", + "nativeSrc": "26844:1:9", + "nodeType": "YulTypedName", + "src": "26844:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "26897:54:9", + "nodeType": "YulAssignment", + "src": "26897:54:9", + "value": { + "arguments": [ + { + "name": "r", + "nativeSrc": "26905:1:9", + "nodeType": "YulIdentifier", + "src": "26905:1:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "26912:1:9", + "nodeType": "YulLiteral", + "src": "26912:1:9", + "type": "", + "value": "6" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "26933:2:9", + "nodeType": "YulLiteral", + "src": "26933:2:9", + "type": "", + "value": "64" + }, + { + "arguments": [ + { + "name": "r", + "nativeSrc": "26941:1:9", + "nodeType": "YulIdentifier", + "src": "26941:1:9" + }, + { + "name": "x", + "nativeSrc": "26944:1:9", + "nodeType": "YulIdentifier", + "src": "26944:1:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "26937:3:9", + "nodeType": "YulIdentifier", + "src": "26937:3:9" + }, + "nativeSrc": "26937:9:9", + "nodeType": "YulFunctionCall", + "src": "26937:9:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "26929:3:9", + "nodeType": "YulIdentifier", + "src": "26929:3:9" + }, + "nativeSrc": "26929:18:9", + "nodeType": "YulFunctionCall", + "src": "26929:18:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "26922:6:9", + "nodeType": "YulIdentifier", + "src": "26922:6:9" + }, + "nativeSrc": "26922:26:9", + "nodeType": "YulFunctionCall", + "src": "26922:26:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "26915:6:9", + "nodeType": "YulIdentifier", + "src": "26915:6:9" + }, + "nativeSrc": "26915:34:9", + "nodeType": "YulFunctionCall", + "src": "26915:34:9" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "26908:3:9", + "nodeType": "YulIdentifier", + "src": "26908:3:9" + }, + "nativeSrc": "26908:42:9", + "nodeType": "YulFunctionCall", + "src": "26908:42:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "26902:2:9", + "nodeType": "YulIdentifier", + "src": "26902:2:9" + }, + "nativeSrc": "26902:49:9", + "nodeType": "YulFunctionCall", + "src": "26902:49:9" + }, + "variableNames": [ + { + "name": "r", + "nativeSrc": "26897:1:9", + "nodeType": "YulIdentifier", + "src": "26897:1:9" + } + ] + }, + { + "nativeSrc": "26964:45:9", + "nodeType": "YulAssignment", + "src": "26964:45:9", + "value": { + "arguments": [ + { + "name": "r", + "nativeSrc": "26972:1:9", + "nodeType": "YulIdentifier", + "src": "26972:1:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "26979:1:9", + "nodeType": "YulLiteral", + "src": "26979:1:9", + "type": "", + "value": "5" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "26985:10:9", + "nodeType": "YulLiteral", + "src": "26985:10:9", + "type": "", + "value": "0xffffffff" + }, + { + "arguments": [ + { + "name": "r", + "nativeSrc": "27001:1:9", + "nodeType": "YulIdentifier", + "src": "27001:1:9" + }, + { + "name": "x", + "nativeSrc": "27004:1:9", + "nodeType": "YulIdentifier", + "src": "27004:1:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "26997:3:9", + "nodeType": "YulIdentifier", + "src": "26997:3:9" + }, + "nativeSrc": "26997:9:9", + "nodeType": "YulFunctionCall", + "src": "26997:9:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "26982:2:9", + "nodeType": "YulIdentifier", + "src": "26982:2:9" + }, + "nativeSrc": "26982:25:9", + "nodeType": "YulFunctionCall", + "src": "26982:25:9" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "26975:3:9", + "nodeType": "YulIdentifier", + "src": "26975:3:9" + }, + "nativeSrc": "26975:33:9", + "nodeType": "YulFunctionCall", + "src": "26975:33:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "26969:2:9", + "nodeType": "YulIdentifier", + "src": "26969:2:9" + }, + "nativeSrc": "26969:40:9", + "nodeType": "YulFunctionCall", + "src": "26969:40:9" + }, + "variableNames": [ + { + "name": "r", + "nativeSrc": "26964:1:9", + "nodeType": "YulIdentifier", + "src": "26964:1:9" + } + ] + }, + { + "nativeSrc": "27022:41:9", + "nodeType": "YulAssignment", + "src": "27022:41:9", + "value": { + "arguments": [ + { + "name": "r", + "nativeSrc": "27030:1:9", + "nodeType": "YulIdentifier", + "src": "27030:1:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "27037:1:9", + "nodeType": "YulLiteral", + "src": "27037:1:9", + "type": "", + "value": "4" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "27043:6:9", + "nodeType": "YulLiteral", + "src": "27043:6:9", + "type": "", + "value": "0xffff" + }, + { + "arguments": [ + { + "name": "r", + "nativeSrc": "27055:1:9", + "nodeType": "YulIdentifier", + "src": "27055:1:9" + }, + { + "name": "x", + "nativeSrc": "27058:1:9", + "nodeType": "YulIdentifier", + "src": "27058:1:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "27051:3:9", + "nodeType": "YulIdentifier", + "src": "27051:3:9" + }, + "nativeSrc": "27051:9:9", + "nodeType": "YulFunctionCall", + "src": "27051:9:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "27040:2:9", + "nodeType": "YulIdentifier", + "src": "27040:2:9" + }, + "nativeSrc": "27040:21:9", + "nodeType": "YulFunctionCall", + "src": "27040:21:9" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "27033:3:9", + "nodeType": "YulIdentifier", + "src": "27033:3:9" + }, + "nativeSrc": "27033:29:9", + "nodeType": "YulFunctionCall", + "src": "27033:29:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "27027:2:9", + "nodeType": "YulIdentifier", + "src": "27027:2:9" + }, + "nativeSrc": "27027:36:9", + "nodeType": "YulFunctionCall", + "src": "27027:36:9" + }, + "variableNames": [ + { + "name": "r", + "nativeSrc": "27022:1:9", + "nodeType": "YulIdentifier", + "src": "27022:1:9" + } + ] + }, + { + "nativeSrc": "27076:39:9", + "nodeType": "YulAssignment", + "src": "27076:39:9", + "value": { + "arguments": [ + { + "name": "r", + "nativeSrc": "27084:1:9", + "nodeType": "YulIdentifier", + "src": "27084:1:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "27091:1:9", + "nodeType": "YulLiteral", + "src": "27091:1:9", + "type": "", + "value": "3" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "27097:4:9", + "nodeType": "YulLiteral", + "src": "27097:4:9", + "type": "", + "value": "0xff" + }, + { + "arguments": [ + { + "name": "r", + "nativeSrc": "27107:1:9", + "nodeType": "YulIdentifier", + "src": "27107:1:9" + }, + { + "name": "x", + "nativeSrc": "27110:1:9", + "nodeType": "YulIdentifier", + "src": "27110:1:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "27103:3:9", + "nodeType": "YulIdentifier", + "src": "27103:3:9" + }, + "nativeSrc": "27103:9:9", + "nodeType": "YulFunctionCall", + "src": "27103:9:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "27094:2:9", + "nodeType": "YulIdentifier", + "src": "27094:2:9" + }, + "nativeSrc": "27094:19:9", + "nodeType": "YulFunctionCall", + "src": "27094:19:9" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "27087:3:9", + "nodeType": "YulIdentifier", + "src": "27087:3:9" + }, + "nativeSrc": "27087:27:9", + "nodeType": "YulFunctionCall", + "src": "27087:27:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "27081:2:9", + "nodeType": "YulIdentifier", + "src": "27081:2:9" + }, + "nativeSrc": "27081:34:9", + "nodeType": "YulFunctionCall", + "src": "27081:34:9" + }, + "variableNames": [ + { + "name": "r", + "nativeSrc": "27076:1:9", + "nodeType": "YulIdentifier", + "src": "27076:1:9" + } + ] + }, + { + "nativeSrc": "27171:139:9", + "nodeType": "YulAssignment", + "src": "27171:139:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "a", + "nativeSrc": "27193:1:9", + "nodeType": "YulIdentifier", + "src": "27193:1:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "27187:5:9", + "nodeType": "YulIdentifier", + "src": "27187:5:9" + }, + "nativeSrc": "27187:8:9", + "nodeType": "YulFunctionCall", + "src": "27187:8:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "x", + "nativeSrc": "27208:1:9", + "nodeType": "YulIdentifier", + "src": "27208:1:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "27201:6:9", + "nodeType": "YulIdentifier", + "src": "27201:6:9" + }, + "nativeSrc": "27201:9:9", + "nodeType": "YulFunctionCall", + "src": "27201:9:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "27216:2:9", + "nodeType": "YulLiteral", + "src": "27216:2:9", + "type": "", + "value": "31" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "27224:1:9", + "nodeType": "YulLiteral", + "src": "27224:1:9", + "type": "", + "value": "3" + }, + { + "name": "r", + "nativeSrc": "27227:1:9", + "nodeType": "YulIdentifier", + "src": "27227:1:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "27220:3:9", + "nodeType": "YulIdentifier", + "src": "27220:3:9" + }, + "nativeSrc": "27220:9:9", + "nodeType": "YulFunctionCall", + "src": "27220:9:9" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "27212:3:9", + "nodeType": "YulIdentifier", + "src": "27212:3:9" + }, + "nativeSrc": "27212:18:9", + "nodeType": "YulFunctionCall", + "src": "27212:18:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "27197:3:9", + "nodeType": "YulIdentifier", + "src": "27197:3:9" + }, + "nativeSrc": "27197:34:9", + "nodeType": "YulFunctionCall", + "src": "27197:34:9" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "27184:2:9", + "nodeType": "YulIdentifier", + "src": "27184:2:9" + }, + "nativeSrc": "27184:48:9", + "nodeType": "YulFunctionCall", + "src": "27184:48:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "27262:1:9", + "nodeType": "YulLiteral", + "src": "27262:1:9", + "type": "", + "value": "8" + }, + { + "name": "r", + "nativeSrc": "27265:1:9", + "nodeType": "YulIdentifier", + "src": "27265:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "27258:3:9", + "nodeType": "YulIdentifier", + "src": "27258:3:9" + }, + "nativeSrc": "27258:9:9", + "nodeType": "YulFunctionCall", + "src": "27258:9:9" + }, + { + "name": "b", + "nativeSrc": "27269:1:9", + "nodeType": "YulIdentifier", + "src": "27269:1:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "27254:3:9", + "nodeType": "YulIdentifier", + "src": "27254:3:9" + }, + "nativeSrc": "27254:17:9", + "nodeType": "YulFunctionCall", + "src": "27254:17:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "27281:1:9", + "nodeType": "YulLiteral", + "src": "27281:1:9", + "type": "", + "value": "8" + }, + { + "name": "r", + "nativeSrc": "27284:1:9", + "nodeType": "YulIdentifier", + "src": "27284:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "27277:3:9", + "nodeType": "YulIdentifier", + "src": "27277:3:9" + }, + "nativeSrc": "27277:9:9", + "nodeType": "YulFunctionCall", + "src": "27277:9:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "a", + "nativeSrc": "27298:1:9", + "nodeType": "YulIdentifier", + "src": "27298:1:9" + }, + { + "kind": "number", + "nativeSrc": "27301:4:9", + "nodeType": "YulLiteral", + "src": "27301:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "27294:3:9", + "nodeType": "YulIdentifier", + "src": "27294:3:9" + }, + "nativeSrc": "27294:12:9", + "nodeType": "YulFunctionCall", + "src": "27294:12:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "27288:5:9", + "nodeType": "YulIdentifier", + "src": "27288:5:9" + }, + "nativeSrc": "27288:19:9", + "nodeType": "YulFunctionCall", + "src": "27288:19:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "27273:3:9", + "nodeType": "YulIdentifier", + "src": "27273:3:9" + }, + "nativeSrc": "27273:35:9", + "nodeType": "YulFunctionCall", + "src": "27273:35:9" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "27250:3:9", + "nodeType": "YulIdentifier", + "src": "27250:3:9" + }, + "nativeSrc": "27250:59:9", + "nodeType": "YulFunctionCall", + "src": "27250:59:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "27181:2:9", + "nodeType": "YulIdentifier", + "src": "27181:2:9" + }, + "nativeSrc": "27181:129:9", + "nodeType": "YulFunctionCall", + "src": "27181:129:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "27171:6:9", + "nodeType": "YulIdentifier", + "src": "27171:6:9" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2982, + "isOffset": false, + "isSlot": false, + "src": "27193:1:9", + "valueSize": 1 + }, + { + "declaration": 2982, + "isOffset": false, + "isSlot": false, + "src": "27298:1:9", + "valueSize": 1 + }, + { + "declaration": 2984, + "isOffset": false, + "isSlot": false, + "src": "26741:1:9", + "valueSize": 1 + }, + { + "declaration": 2984, + "isOffset": false, + "isSlot": false, + "src": "26804:1:9", + "valueSize": 1 + }, + { + "declaration": 2984, + "isOffset": false, + "isSlot": false, + "src": "26818:1:9", + "valueSize": 1 + }, + { + "declaration": 2984, + "isOffset": false, + "isSlot": false, + "src": "27269:1:9", + "valueSize": 1 + }, + { + "declaration": 2987, + "isOffset": false, + "isSlot": false, + "src": "27171:6:9", + "valueSize": 1 + } + ], + "id": 2989, + "nodeType": "InlineAssembly", + "src": "26605:715:9" + } + ] + }, + "documentation": { + "id": 2980, + "nodeType": "StructuredDocumentation", + "src": "26387:84:9", + "text": "@dev Returns whether `a` equals `b`, where `b` is a null-terminated small bytes." + }, + "id": 2991, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "eqs", + "nameLocation": "26485:3:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2985, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2982, + "mutability": "mutable", + "name": "a", + "nameLocation": "26502:1:9", + "nodeType": "VariableDeclaration", + "scope": 2991, + "src": "26489:14:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2981, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "26489:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2984, + "mutability": "mutable", + "name": "b", + "nameLocation": "26513:1:9", + "nodeType": "VariableDeclaration", + "scope": 2991, + "src": "26505:9:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2983, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "26505:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "26488:27:9" + }, + "returnParameters": { + "id": 2988, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2987, + "mutability": "mutable", + "name": "result", + "nameLocation": "26544:6:9", + "nodeType": "VariableDeclaration", + "scope": 2991, + "src": "26539:11:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2986, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "26539:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "26538:13:9" + }, + "scope": 3089, + "src": "26476:850:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3002, + "nodeType": "Block", + "src": "27553:1171:9", + "statements": [ + { + "AST": { + "nativeSrc": "27615:1103:9", + "nodeType": "YulBlock", + "src": "27615:1103:9", + "statements": [ + { + "nativeSrc": "27629:20:9", + "nodeType": "YulVariableDeclaration", + "src": "27629:20:9", + "value": { + "arguments": [ + { + "name": "a", + "nativeSrc": "27647:1:9", + "nodeType": "YulIdentifier", + "src": "27647:1:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "27641:5:9", + "nodeType": "YulIdentifier", + "src": "27641:5:9" + }, + "nativeSrc": "27641:8:9", + "nodeType": "YulFunctionCall", + "src": "27641:8:9" + }, + "variables": [ + { + "name": "aLen", + "nativeSrc": "27633:4:9", + "nodeType": "YulTypedName", + "src": "27633:4:9", + "type": "" + } + ] + }, + { + "nativeSrc": "27662:20:9", + "nodeType": "YulVariableDeclaration", + "src": "27662:20:9", + "value": { + "arguments": [ + { + "name": "b", + "nativeSrc": "27680:1:9", + "nodeType": "YulIdentifier", + "src": "27680:1:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "27674:5:9", + "nodeType": "YulIdentifier", + "src": "27674:5:9" + }, + "nativeSrc": "27674:8:9", + "nodeType": "YulFunctionCall", + "src": "27674:8:9" + }, + "variables": [ + { + "name": "bLen", + "nativeSrc": "27666:4:9", + "nodeType": "YulTypedName", + "src": "27666:4:9", + "type": "" + } + ] + }, + { + "nativeSrc": "27695:72:9", + "nodeType": "YulVariableDeclaration", + "src": "27695:72:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "aLen", + "nativeSrc": "27712:4:9", + "nodeType": "YulIdentifier", + "src": "27712:4:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "aLen", + "nativeSrc": "27726:4:9", + "nodeType": "YulIdentifier", + "src": "27726:4:9" + }, + { + "name": "bLen", + "nativeSrc": "27732:4:9", + "nodeType": "YulIdentifier", + "src": "27732:4:9" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "27722:3:9", + "nodeType": "YulIdentifier", + "src": "27722:3:9" + }, + "nativeSrc": "27722:15:9", + "nodeType": "YulFunctionCall", + "src": "27722:15:9" + }, + { + "arguments": [ + { + "name": "bLen", + "nativeSrc": "27742:4:9", + "nodeType": "YulIdentifier", + "src": "27742:4:9" + }, + { + "name": "aLen", + "nativeSrc": "27748:4:9", + "nodeType": "YulIdentifier", + "src": "27748:4:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "27739:2:9", + "nodeType": "YulIdentifier", + "src": "27739:2:9" + }, + "nativeSrc": "27739:14:9", + "nodeType": "YulFunctionCall", + "src": "27739:14:9" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "27718:3:9", + "nodeType": "YulIdentifier", + "src": "27718:3:9" + }, + "nativeSrc": "27718:36:9", + "nodeType": "YulFunctionCall", + "src": "27718:36:9" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "27708:3:9", + "nodeType": "YulIdentifier", + "src": "27708:3:9" + }, + "nativeSrc": "27708:47:9", + "nodeType": "YulFunctionCall", + "src": "27708:47:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "27761:4:9", + "nodeType": "YulLiteral", + "src": "27761:4:9", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "27757:3:9", + "nodeType": "YulIdentifier", + "src": "27757:3:9" + }, + "nativeSrc": "27757:9:9", + "nodeType": "YulFunctionCall", + "src": "27757:9:9" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "27704:3:9", + "nodeType": "YulIdentifier", + "src": "27704:3:9" + }, + "nativeSrc": "27704:63:9", + "nodeType": "YulFunctionCall", + "src": "27704:63:9" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "27699:1:9", + "nodeType": "YulTypedName", + "src": "27699:1:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "27785:404:9", + "nodeType": "YulBlock", + "src": "27785:404:9", + "statements": [ + { + "body": { + "nativeSrc": "27830:345:9", + "nodeType": "YulBlock", + "src": "27830:345:9", + "statements": [ + { + "nativeSrc": "27852:25:9", + "nodeType": "YulVariableDeclaration", + "src": "27852:25:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "a", + "nativeSrc": "27871:1:9", + "nodeType": "YulIdentifier", + "src": "27871:1:9" + }, + { + "name": "i", + "nativeSrc": "27874:1:9", + "nodeType": "YulIdentifier", + "src": "27874:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "27867:3:9", + "nodeType": "YulIdentifier", + "src": "27867:3:9" + }, + "nativeSrc": "27867:9:9", + "nodeType": "YulFunctionCall", + "src": "27867:9:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "27861:5:9", + "nodeType": "YulIdentifier", + "src": "27861:5:9" + }, + "nativeSrc": "27861:16:9", + "nodeType": "YulFunctionCall", + "src": "27861:16:9" + }, + "variables": [ + { + "name": "x", + "nativeSrc": "27856:1:9", + "nodeType": "YulTypedName", + "src": "27856:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "27898:25:9", + "nodeType": "YulVariableDeclaration", + "src": "27898:25:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "b", + "nativeSrc": "27917:1:9", + "nodeType": "YulIdentifier", + "src": "27917:1:9" + }, + { + "name": "i", + "nativeSrc": "27920:1:9", + "nodeType": "YulIdentifier", + "src": "27920:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "27913:3:9", + "nodeType": "YulIdentifier", + "src": "27913:3:9" + }, + "nativeSrc": "27913:9:9", + "nodeType": "YulFunctionCall", + "src": "27913:9:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "27907:5:9", + "nodeType": "YulIdentifier", + "src": "27907:5:9" + }, + "nativeSrc": "27907:16:9", + "nodeType": "YulFunctionCall", + "src": "27907:16:9" + }, + "variables": [ + { + "name": "y", + "nativeSrc": "27902:1:9", + "nodeType": "YulTypedName", + "src": "27902:1:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "27979:98:9", + "nodeType": "YulBlock", + "src": "27979:98:9", + "statements": [ + { + "nativeSrc": "28005:17:9", + "nodeType": "YulAssignment", + "src": "28005:17:9", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "28014:1:9", + "nodeType": "YulIdentifier", + "src": "28014:1:9" + }, + { + "kind": "number", + "nativeSrc": "28017:4:9", + "nodeType": "YulLiteral", + "src": "28017:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "28010:3:9", + "nodeType": "YulIdentifier", + "src": "28010:3:9" + }, + "nativeSrc": "28010:12:9", + "nodeType": "YulFunctionCall", + "src": "28010:12:9" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "28005:1:9", + "nodeType": "YulIdentifier", + "src": "28005:1:9" + } + ] + }, + { + "nativeSrc": "28047:8:9", + "nodeType": "YulContinue", + "src": "28047:8:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "x", + "nativeSrc": "27961:1:9", + "nodeType": "YulIdentifier", + "src": "27961:1:9" + }, + { + "name": "y", + "nativeSrc": "27964:1:9", + "nodeType": "YulIdentifier", + "src": "27964:1:9" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "27957:3:9", + "nodeType": "YulIdentifier", + "src": "27957:3:9" + }, + "nativeSrc": "27957:9:9", + "nodeType": "YulFunctionCall", + "src": "27957:9:9" + }, + { + "arguments": [ + { + "name": "i", + "nativeSrc": "27971:1:9", + "nodeType": "YulIdentifier", + "src": "27971:1:9" + }, + { + "name": "n", + "nativeSrc": "27974:1:9", + "nodeType": "YulIdentifier", + "src": "27974:1:9" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "27968:2:9", + "nodeType": "YulIdentifier", + "src": "27968:2:9" + }, + "nativeSrc": "27968:8:9", + "nodeType": "YulFunctionCall", + "src": "27968:8:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "27954:2:9", + "nodeType": "YulIdentifier", + "src": "27954:2:9" + }, + "nativeSrc": "27954:23:9", + "nodeType": "YulFunctionCall", + "src": "27954:23:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "27947:6:9", + "nodeType": "YulIdentifier", + "src": "27947:6:9" + }, + "nativeSrc": "27947:31:9", + "nodeType": "YulFunctionCall", + "src": "27947:31:9" + }, + "nativeSrc": "27944:133:9", + "nodeType": "YulIf", + "src": "27944:133:9" + }, + { + "nativeSrc": "28098:33:9", + "nodeType": "YulAssignment", + "src": "28098:33:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "x", + "nativeSrc": "28115:1:9", + "nodeType": "YulIdentifier", + "src": "28115:1:9" + }, + { + "name": "y", + "nativeSrc": "28118:1:9", + "nodeType": "YulIdentifier", + "src": "28118:1:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "28112:2:9", + "nodeType": "YulIdentifier", + "src": "28112:2:9" + }, + "nativeSrc": "28112:8:9", + "nodeType": "YulFunctionCall", + "src": "28112:8:9" + }, + { + "arguments": [ + { + "name": "x", + "nativeSrc": "28125:1:9", + "nodeType": "YulIdentifier", + "src": "28125:1:9" + }, + { + "name": "y", + "nativeSrc": "28128:1:9", + "nodeType": "YulIdentifier", + "src": "28128:1:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "28122:2:9", + "nodeType": "YulIdentifier", + "src": "28122:2:9" + }, + "nativeSrc": "28122:8:9", + "nodeType": "YulFunctionCall", + "src": "28122:8:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "28108:3:9", + "nodeType": "YulIdentifier", + "src": "28108:3:9" + }, + "nativeSrc": "28108:23:9", + "nodeType": "YulFunctionCall", + "src": "28108:23:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "28098:6:9", + "nodeType": "YulIdentifier", + "src": "28098:6:9" + } + ] + }, + { + "nativeSrc": "28152:5:9", + "nodeType": "YulBreak", + "src": "28152:5:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "27825:1:9", + "nodeType": "YulLiteral", + "src": "27825:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "27803:372:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "27827:2:9", + "nodeType": "YulBlock", + "src": "27827:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "27807:17:9", + "nodeType": "YulBlock", + "src": "27807:17:9", + "statements": [ + { + "nativeSrc": "27809:13:9", + "nodeType": "YulVariableDeclaration", + "src": "27809:13:9", + "value": { + "kind": "number", + "nativeSrc": "27818:4:9", + "nodeType": "YulLiteral", + "src": "27818:4:9", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "27813:1:9", + "nodeType": "YulTypedName", + "src": "27813:1:9", + "type": "" + } + ] + } + ] + }, + "src": "27803:372:9" + } + ] + }, + "condition": { + "name": "n", + "nativeSrc": "27783:1:9", + "nodeType": "YulIdentifier", + "src": "27783:1:9" + }, + "nativeSrc": "27780:409:9", + "nodeType": "YulIf", + "src": "27780:409:9" + }, + { + "body": { + "nativeSrc": "28263:445:9", + "nodeType": "YulBlock", + "src": "28263:445:9", + "statements": [ + { + "nativeSrc": "28281:75:9", + "nodeType": "YulVariableDeclaration", + "src": "28281:75:9", + "value": { + "kind": "number", + "nativeSrc": "28290:66:9", + "nodeType": "YulLiteral", + "src": "28290:66:9", + "type": "", + "value": "0x201f1e1d1c1b1a191817161514131211100f0e0d0c0b0a090807060504030201" + }, + "variables": [ + { + "name": "l", + "nativeSrc": "28285:1:9", + "nodeType": "YulTypedName", + "src": "28285:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "28373:85:9", + "nodeType": "YulVariableDeclaration", + "src": "28373:85:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "a", + "nativeSrc": "28400:1:9", + "nodeType": "YulIdentifier", + "src": "28400:1:9" + }, + { + "kind": "number", + "nativeSrc": "28403:4:9", + "nodeType": "YulLiteral", + "src": "28403:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "28396:3:9", + "nodeType": "YulIdentifier", + "src": "28396:3:9" + }, + "nativeSrc": "28396:12:9", + "nodeType": "YulFunctionCall", + "src": "28396:12:9" + }, + { + "name": "n", + "nativeSrc": "28410:1:9", + "nodeType": "YulIdentifier", + "src": "28410:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "28392:3:9", + "nodeType": "YulIdentifier", + "src": "28392:3:9" + }, + "nativeSrc": "28392:20:9", + "nodeType": "YulFunctionCall", + "src": "28392:20:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "28386:5:9", + "nodeType": "YulIdentifier", + "src": "28386:5:9" + }, + "nativeSrc": "28386:27:9", + "nodeType": "YulFunctionCall", + "src": "28386:27:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "28423:1:9", + "nodeType": "YulLiteral", + "src": "28423:1:9", + "type": "", + "value": "3" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "aLen", + "nativeSrc": "28435:4:9", + "nodeType": "YulIdentifier", + "src": "28435:4:9" + }, + { + "name": "n", + "nativeSrc": "28441:1:9", + "nodeType": "YulIdentifier", + "src": "28441:1:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "28431:3:9", + "nodeType": "YulIdentifier", + "src": "28431:3:9" + }, + "nativeSrc": "28431:12:9", + "nodeType": "YulFunctionCall", + "src": "28431:12:9" + }, + { + "name": "l", + "nativeSrc": "28445:1:9", + "nodeType": "YulIdentifier", + "src": "28445:1:9" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "28426:4:9", + "nodeType": "YulIdentifier", + "src": "28426:4:9" + }, + "nativeSrc": "28426:21:9", + "nodeType": "YulFunctionCall", + "src": "28426:21:9" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "28419:3:9", + "nodeType": "YulIdentifier", + "src": "28419:3:9" + }, + "nativeSrc": "28419:29:9", + "nodeType": "YulFunctionCall", + "src": "28419:29:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "28454:1:9", + "nodeType": "YulLiteral", + "src": "28454:1:9", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "28450:3:9", + "nodeType": "YulIdentifier", + "src": "28450:3:9" + }, + "nativeSrc": "28450:6:9", + "nodeType": "YulFunctionCall", + "src": "28450:6:9" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "28415:3:9", + "nodeType": "YulIdentifier", + "src": "28415:3:9" + }, + "nativeSrc": "28415:42:9", + "nodeType": "YulFunctionCall", + "src": "28415:42:9" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "28382:3:9", + "nodeType": "YulIdentifier", + "src": "28382:3:9" + }, + "nativeSrc": "28382:76:9", + "nodeType": "YulFunctionCall", + "src": "28382:76:9" + }, + "variables": [ + { + "name": "x", + "nativeSrc": "28377:1:9", + "nodeType": "YulTypedName", + "src": "28377:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "28475:85:9", + "nodeType": "YulVariableDeclaration", + "src": "28475:85:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "b", + "nativeSrc": "28502:1:9", + "nodeType": "YulIdentifier", + "src": "28502:1:9" + }, + { + "kind": "number", + "nativeSrc": "28505:4:9", + "nodeType": "YulLiteral", + "src": "28505:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "28498:3:9", + "nodeType": "YulIdentifier", + "src": "28498:3:9" + }, + "nativeSrc": "28498:12:9", + "nodeType": "YulFunctionCall", + "src": "28498:12:9" + }, + { + "name": "n", + "nativeSrc": "28512:1:9", + "nodeType": "YulIdentifier", + "src": "28512:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "28494:3:9", + "nodeType": "YulIdentifier", + "src": "28494:3:9" + }, + "nativeSrc": "28494:20:9", + "nodeType": "YulFunctionCall", + "src": "28494:20:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "28488:5:9", + "nodeType": "YulIdentifier", + "src": "28488:5:9" + }, + "nativeSrc": "28488:27:9", + "nodeType": "YulFunctionCall", + "src": "28488:27:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "28525:1:9", + "nodeType": "YulLiteral", + "src": "28525:1:9", + "type": "", + "value": "3" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "bLen", + "nativeSrc": "28537:4:9", + "nodeType": "YulIdentifier", + "src": "28537:4:9" + }, + { + "name": "n", + "nativeSrc": "28543:1:9", + "nodeType": "YulIdentifier", + "src": "28543:1:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "28533:3:9", + "nodeType": "YulIdentifier", + "src": "28533:3:9" + }, + "nativeSrc": "28533:12:9", + "nodeType": "YulFunctionCall", + "src": "28533:12:9" + }, + { + "name": "l", + "nativeSrc": "28547:1:9", + "nodeType": "YulIdentifier", + "src": "28547:1:9" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "28528:4:9", + "nodeType": "YulIdentifier", + "src": "28528:4:9" + }, + "nativeSrc": "28528:21:9", + "nodeType": "YulFunctionCall", + "src": "28528:21:9" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "28521:3:9", + "nodeType": "YulIdentifier", + "src": "28521:3:9" + }, + "nativeSrc": "28521:29:9", + "nodeType": "YulFunctionCall", + "src": "28521:29:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "28556:1:9", + "nodeType": "YulLiteral", + "src": "28556:1:9", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "28552:3:9", + "nodeType": "YulIdentifier", + "src": "28552:3:9" + }, + "nativeSrc": "28552:6:9", + "nodeType": "YulFunctionCall", + "src": "28552:6:9" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "28517:3:9", + "nodeType": "YulIdentifier", + "src": "28517:3:9" + }, + "nativeSrc": "28517:42:9", + "nodeType": "YulFunctionCall", + "src": "28517:42:9" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "28484:3:9", + "nodeType": "YulIdentifier", + "src": "28484:3:9" + }, + "nativeSrc": "28484:76:9", + "nodeType": "YulFunctionCall", + "src": "28484:76:9" + }, + "variables": [ + { + "name": "y", + "nativeSrc": "28479:1:9", + "nodeType": "YulTypedName", + "src": "28479:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "28577:33:9", + "nodeType": "YulAssignment", + "src": "28577:33:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "x", + "nativeSrc": "28594:1:9", + "nodeType": "YulIdentifier", + "src": "28594:1:9" + }, + { + "name": "y", + "nativeSrc": "28597:1:9", + "nodeType": "YulIdentifier", + "src": "28597:1:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "28591:2:9", + "nodeType": "YulIdentifier", + "src": "28591:2:9" + }, + "nativeSrc": "28591:8:9", + "nodeType": "YulFunctionCall", + "src": "28591:8:9" + }, + { + "arguments": [ + { + "name": "x", + "nativeSrc": "28604:1:9", + "nodeType": "YulIdentifier", + "src": "28604:1:9" + }, + { + "name": "y", + "nativeSrc": "28607:1:9", + "nodeType": "YulIdentifier", + "src": "28607:1:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "28601:2:9", + "nodeType": "YulIdentifier", + "src": "28601:2:9" + }, + "nativeSrc": "28601:8:9", + "nodeType": "YulFunctionCall", + "src": "28601:8:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "28587:3:9", + "nodeType": "YulIdentifier", + "src": "28587:3:9" + }, + "nativeSrc": "28587:23:9", + "nodeType": "YulFunctionCall", + "src": "28587:23:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "28577:6:9", + "nodeType": "YulIdentifier", + "src": "28577:6:9" + } + ] + }, + { + "body": { + "nativeSrc": "28645:49:9", + "nodeType": "YulBlock", + "src": "28645:49:9", + "statements": [ + { + "nativeSrc": "28647:45:9", + "nodeType": "YulAssignment", + "src": "28647:45:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "aLen", + "nativeSrc": "28664:4:9", + "nodeType": "YulIdentifier", + "src": "28664:4:9" + }, + { + "name": "bLen", + "nativeSrc": "28670:4:9", + "nodeType": "YulIdentifier", + "src": "28670:4:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "28661:2:9", + "nodeType": "YulIdentifier", + "src": "28661:2:9" + }, + "nativeSrc": "28661:14:9", + "nodeType": "YulFunctionCall", + "src": "28661:14:9" + }, + { + "arguments": [ + { + "name": "aLen", + "nativeSrc": "28680:4:9", + "nodeType": "YulIdentifier", + "src": "28680:4:9" + }, + { + "name": "bLen", + "nativeSrc": "28686:4:9", + "nodeType": "YulIdentifier", + "src": "28686:4:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "28677:2:9", + "nodeType": "YulIdentifier", + "src": "28677:2:9" + }, + "nativeSrc": "28677:14:9", + "nodeType": "YulFunctionCall", + "src": "28677:14:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "28657:3:9", + "nodeType": "YulIdentifier", + "src": "28657:3:9" + }, + "nativeSrc": "28657:35:9", + "nodeType": "YulFunctionCall", + "src": "28657:35:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "28647:6:9", + "nodeType": "YulIdentifier", + "src": "28647:6:9" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "result", + "nativeSrc": "28637:6:9", + "nodeType": "YulIdentifier", + "src": "28637:6:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "28630:6:9", + "nodeType": "YulIdentifier", + "src": "28630:6:9" + }, + "nativeSrc": "28630:14:9", + "nodeType": "YulFunctionCall", + "src": "28630:14:9" + }, + "nativeSrc": "28627:67:9", + "nodeType": "YulIf", + "src": "28627:67:9" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "result", + "nativeSrc": "28255:6:9", + "nodeType": "YulIdentifier", + "src": "28255:6:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "28248:6:9", + "nodeType": "YulIdentifier", + "src": "28248:6:9" + }, + "nativeSrc": "28248:14:9", + "nodeType": "YulFunctionCall", + "src": "28248:14:9" + }, + "nativeSrc": "28245:463:9", + "nodeType": "YulIf", + "src": "28245:463:9" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2994, + "isOffset": false, + "isSlot": false, + "src": "27647:1:9", + "valueSize": 1 + }, + { + "declaration": 2994, + "isOffset": false, + "isSlot": false, + "src": "27871:1:9", + "valueSize": 1 + }, + { + "declaration": 2994, + "isOffset": false, + "isSlot": false, + "src": "28400:1:9", + "valueSize": 1 + }, + { + "declaration": 2996, + "isOffset": false, + "isSlot": false, + "src": "27680:1:9", + "valueSize": 1 + }, + { + "declaration": 2996, + "isOffset": false, + "isSlot": false, + "src": "27917:1:9", + "valueSize": 1 + }, + { + "declaration": 2996, + "isOffset": false, + "isSlot": false, + "src": "28502:1:9", + "valueSize": 1 + }, + { + "declaration": 2999, + "isOffset": false, + "isSlot": false, + "src": "28098:6:9", + "valueSize": 1 + }, + { + "declaration": 2999, + "isOffset": false, + "isSlot": false, + "src": "28255:6:9", + "valueSize": 1 + }, + { + "declaration": 2999, + "isOffset": false, + "isSlot": false, + "src": "28577:6:9", + "valueSize": 1 + }, + { + "declaration": 2999, + "isOffset": false, + "isSlot": false, + "src": "28637:6:9", + "valueSize": 1 + }, + { + "declaration": 2999, + "isOffset": false, + "isSlot": false, + "src": "28647:6:9", + "valueSize": 1 + } + ], + "id": 3001, + "nodeType": "InlineAssembly", + "src": "27606:1112:9" + } + ] + }, + "documentation": { + "id": 2992, + "nodeType": "StructuredDocumentation", + "src": "27332:133:9", + "text": "@dev Returns 0 if `a == b`, -1 if `a < b`, +1 if `a > b`.\n If `a` == b[:a.length]`, and `a.length < b.length`, returns -1." + }, + "id": 3003, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "cmp", + "nameLocation": "27479:3:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2997, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2994, + "mutability": "mutable", + "name": "a", + "nameLocation": "27496:1:9", + "nodeType": "VariableDeclaration", + "scope": 3003, + "src": "27483:14:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2993, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "27483:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2996, + "mutability": "mutable", + "name": "b", + "nameLocation": "27512:1:9", + "nodeType": "VariableDeclaration", + "scope": 3003, + "src": "27499:14:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2995, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "27499:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "27482:32:9" + }, + "returnParameters": { + "id": 3000, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2999, + "mutability": "mutable", + "name": "result", + "nameLocation": "27545:6:9", + "nodeType": "VariableDeclaration", + "scope": 3003, + "src": "27538:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2998, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "27538:6:9", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "27537:15:9" + }, + "scope": 3089, + "src": "27470:1254:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3010, + "nodeType": "Block", + "src": "28833:628:9", + "statements": [ + { + "AST": { + "nativeSrc": "28895:560:9", + "nodeType": "YulBlock", + "src": "28895:560:9", + "statements": [ + { + "nativeSrc": "28986:28:9", + "nodeType": "YulVariableDeclaration", + "src": "28986:28:9", + "value": { + "arguments": [ + { + "name": "a", + "nativeSrc": "29006:1:9", + "nodeType": "YulIdentifier", + "src": "29006:1:9" + }, + { + "kind": "number", + "nativeSrc": "29009:4:9", + "nodeType": "YulLiteral", + "src": "29009:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "29002:3:9", + "nodeType": "YulIdentifier", + "src": "29002:3:9" + }, + "nativeSrc": "29002:12:9", + "nodeType": "YulFunctionCall", + "src": "29002:12:9" + }, + "variables": [ + { + "name": "retStart", + "nativeSrc": "28990:8:9", + "nodeType": "YulTypedName", + "src": "28990:8:9", + "type": "" + } + ] + }, + { + "nativeSrc": "29027:42:9", + "nodeType": "YulVariableDeclaration", + "src": "29027:42:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "a", + "nativeSrc": "29060:1:9", + "nodeType": "YulIdentifier", + "src": "29060:1:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "29054:5:9", + "nodeType": "YulIdentifier", + "src": "29054:5:9" + }, + "nativeSrc": "29054:8:9", + "nodeType": "YulFunctionCall", + "src": "29054:8:9" + }, + { + "kind": "number", + "nativeSrc": "29064:4:9", + "nodeType": "YulLiteral", + "src": "29064:4:9", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "29050:3:9", + "nodeType": "YulIdentifier", + "src": "29050:3:9" + }, + "nativeSrc": "29050:19:9", + "nodeType": "YulFunctionCall", + "src": "29050:19:9" + }, + "variables": [ + { + "name": "retUnpaddedSize", + "nativeSrc": "29031:15:9", + "nodeType": "YulTypedName", + "src": "29031:15:9", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "retStart", + "nativeSrc": "29222:8:9", + "nodeType": "YulIdentifier", + "src": "29222:8:9" + }, + { + "name": "retUnpaddedSize", + "nativeSrc": "29232:15:9", + "nodeType": "YulIdentifier", + "src": "29232:15:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "29218:3:9", + "nodeType": "YulIdentifier", + "src": "29218:3:9" + }, + "nativeSrc": "29218:30:9", + "nodeType": "YulFunctionCall", + "src": "29218:30:9" + }, + { + "kind": "number", + "nativeSrc": "29250:1:9", + "nodeType": "YulLiteral", + "src": "29250:1:9", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "29211:6:9", + "nodeType": "YulIdentifier", + "src": "29211:6:9" + }, + "nativeSrc": "29211:41:9", + "nodeType": "YulFunctionCall", + "src": "29211:41:9" + }, + "nativeSrc": "29211:41:9", + "nodeType": "YulExpressionStatement", + "src": "29211:41:9" + }, + { + "expression": { + "arguments": [ + { + "name": "retStart", + "nativeSrc": "29272:8:9", + "nodeType": "YulIdentifier", + "src": "29272:8:9" + }, + { + "kind": "number", + "nativeSrc": "29282:4:9", + "nodeType": "YulLiteral", + "src": "29282:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "29265:6:9", + "nodeType": "YulIdentifier", + "src": "29265:6:9" + }, + "nativeSrc": "29265:22:9", + "nodeType": "YulFunctionCall", + "src": "29265:22:9" + }, + "nativeSrc": "29265:22:9", + "nodeType": "YulExpressionStatement", + "src": "29265:22:9" + }, + { + "expression": { + "arguments": [ + { + "name": "retStart", + "nativeSrc": "29392:8:9", + "nodeType": "YulIdentifier", + "src": "29392:8:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "29410:4:9", + "nodeType": "YulLiteral", + "src": "29410:4:9", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "29406:3:9", + "nodeType": "YulIdentifier", + "src": "29406:3:9" + }, + "nativeSrc": "29406:9:9", + "nodeType": "YulFunctionCall", + "src": "29406:9:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "29421:4:9", + "nodeType": "YulLiteral", + "src": "29421:4:9", + "type": "", + "value": "0x1f" + }, + { + "name": "retUnpaddedSize", + "nativeSrc": "29427:15:9", + "nodeType": "YulIdentifier", + "src": "29427:15:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "29417:3:9", + "nodeType": "YulIdentifier", + "src": "29417:3:9" + }, + "nativeSrc": "29417:26:9", + "nodeType": "YulFunctionCall", + "src": "29417:26:9" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "29402:3:9", + "nodeType": "YulIdentifier", + "src": "29402:3:9" + }, + "nativeSrc": "29402:42:9", + "nodeType": "YulFunctionCall", + "src": "29402:42:9" + } + ], + "functionName": { + "name": "return", + "nativeSrc": "29385:6:9", + "nodeType": "YulIdentifier", + "src": "29385:6:9" + }, + "nativeSrc": "29385:60:9", + "nodeType": "YulFunctionCall", + "src": "29385:60:9" + }, + "nativeSrc": "29385:60:9", + "nodeType": "YulExpressionStatement", + "src": "29385:60:9" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3006, + "isOffset": false, + "isSlot": false, + "src": "29006:1:9", + "valueSize": 1 + }, + { + "declaration": 3006, + "isOffset": false, + "isSlot": false, + "src": "29060:1:9", + "valueSize": 1 + } + ], + "id": 3009, + "nodeType": "InlineAssembly", + "src": "28886:569:9" + } + ] + }, + "documentation": { + "id": 3004, + "nodeType": "StructuredDocumentation", + "src": "28730:46:9", + "text": "@dev Directly returns `a` without copying." + }, + "id": 3011, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "directReturn", + "nameLocation": "28790:12:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3007, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3006, + "mutability": "mutable", + "name": "a", + "nameLocation": "28816:1:9", + "nodeType": "VariableDeclaration", + "scope": 3011, + "src": "28803:14:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3005, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "28803:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "28802:16:9" + }, + "returnParameters": { + "id": 3008, + "nodeType": "ParameterList", + "parameters": [], + "src": "28833:0:9" + }, + "scope": 3089, + "src": "28781:680:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3019, + "nodeType": "Block", + "src": "29577:1825:9", + "statements": [ + { + "AST": { + "nativeSrc": "29639:1757:9", + "nodeType": "YulBlock", + "src": "29639:1757:9", + "statements": [ + { + "nativeSrc": "29653:17:9", + "nodeType": "YulVariableDeclaration", + "src": "29653:17:9", + "value": { + "arguments": [ + { + "name": "a", + "nativeSrc": "29668:1:9", + "nodeType": "YulIdentifier", + "src": "29668:1:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "29662:5:9", + "nodeType": "YulIdentifier", + "src": "29662:5:9" + }, + "nativeSrc": "29662:8:9", + "nodeType": "YulFunctionCall", + "src": "29662:8:9" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "29657:1:9", + "nodeType": "YulTypedName", + "src": "29657:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "29698:21:9", + "nodeType": "YulVariableDeclaration", + "src": "29698:21:9", + "value": { + "arguments": [ + { + "name": "a", + "nativeSrc": "29711:1:9", + "nodeType": "YulIdentifier", + "src": "29711:1:9" + }, + { + "kind": "number", + "nativeSrc": "29714:4:9", + "nodeType": "YulLiteral", + "src": "29714:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "29707:3:9", + "nodeType": "YulIdentifier", + "src": "29707:3:9" + }, + "nativeSrc": "29707:12:9", + "nodeType": "YulFunctionCall", + "src": "29707:12:9" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "29702:1:9", + "nodeType": "YulTypedName", + "src": "29702:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "29761:10:9", + "nodeType": "YulVariableDeclaration", + "src": "29761:10:9", + "value": { + "name": "a", + "nativeSrc": "29770:1:9", + "nodeType": "YulIdentifier", + "src": "29770:1:9" + }, + "variables": [ + { + "name": "u", + "nativeSrc": "29765:1:9", + "nodeType": "YulTypedName", + "src": "29765:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "29808:18:9", + "nodeType": "YulVariableDeclaration", + "src": "29808:18:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "29821:4:9", + "nodeType": "YulLiteral", + "src": "29821:4:9", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "29817:3:9", + "nodeType": "YulIdentifier", + "src": "29817:3:9" + }, + "nativeSrc": "29817:9:9", + "nodeType": "YulFunctionCall", + "src": "29817:9:9" + }, + "variables": [ + { + "name": "w", + "nativeSrc": "29812:1:9", + "nodeType": "YulTypedName", + "src": "29812:1:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "29894:1260:9", + "nodeType": "YulBlock", + "src": "29894:1260:9", + "statements": [ + { + "nativeSrc": "29912:26:9", + "nodeType": "YulVariableDeclaration", + "src": "29912:26:9", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "29925:1:9", + "nodeType": "YulIdentifier", + "src": "29925:1:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "29932:1:9", + "nodeType": "YulLiteral", + "src": "29932:1:9", + "type": "", + "value": "5" + }, + { + "name": "i", + "nativeSrc": "29935:1:9", + "nodeType": "YulIdentifier", + "src": "29935:1:9" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "29928:3:9", + "nodeType": "YulIdentifier", + "src": "29928:3:9" + }, + "nativeSrc": "29928:9:9", + "nodeType": "YulFunctionCall", + "src": "29928:9:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "29921:3:9", + "nodeType": "YulIdentifier", + "src": "29921:3:9" + }, + "nativeSrc": "29921:17:9", + "nodeType": "YulFunctionCall", + "src": "29921:17:9" + }, + "variables": [ + { + "name": "c", + "nativeSrc": "29916:1:9", + "nodeType": "YulTypedName", + "src": "29916:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "29989:17:9", + "nodeType": "YulVariableDeclaration", + "src": "29989:17:9", + "value": { + "arguments": [ + { + "name": "c", + "nativeSrc": "30004:1:9", + "nodeType": "YulIdentifier", + "src": "30004:1:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "29998:5:9", + "nodeType": "YulIdentifier", + "src": "29998:5:9" + }, + "nativeSrc": "29998:8:9", + "nodeType": "YulFunctionCall", + "src": "29998:8:9" + }, + "variables": [ + { + "name": "s", + "nativeSrc": "29993:1:9", + "nodeType": "YulTypedName", + "src": "29993:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "30034:17:9", + "nodeType": "YulVariableDeclaration", + "src": "30034:17:9", + "value": { + "arguments": [ + { + "name": "s", + "nativeSrc": "30049:1:9", + "nodeType": "YulIdentifier", + "src": "30049:1:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "30043:5:9", + "nodeType": "YulIdentifier", + "src": "30043:5:9" + }, + "nativeSrc": "30043:8:9", + "nodeType": "YulFunctionCall", + "src": "30043:8:9" + }, + "variables": [ + { + "name": "l", + "nativeSrc": "30038:1:9", + "nodeType": "YulTypedName", + "src": "30038:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "30086:21:9", + "nodeType": "YulVariableDeclaration", + "src": "30086:21:9", + "value": { + "arguments": [ + { + "name": "l", + "nativeSrc": "30099:1:9", + "nodeType": "YulIdentifier", + "src": "30099:1:9" + }, + { + "kind": "number", + "nativeSrc": "30102:4:9", + "nodeType": "YulLiteral", + "src": "30102:4:9", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "30095:3:9", + "nodeType": "YulIdentifier", + "src": "30095:3:9" + }, + "nativeSrc": "30095:12:9", + "nodeType": "YulFunctionCall", + "src": "30095:12:9" + }, + "variables": [ + { + "name": "r", + "nativeSrc": "30090:1:9", + "nodeType": "YulTypedName", + "src": "30090:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "30147:29:9", + "nodeType": "YulVariableDeclaration", + "src": "30147:29:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30160:4:9", + "nodeType": "YulLiteral", + "src": "30160:4:9", + "type": "", + "value": "0x20" + }, + { + "arguments": [ + { + "name": "l", + "nativeSrc": "30170:1:9", + "nodeType": "YulIdentifier", + "src": "30170:1:9" + }, + { + "name": "w", + "nativeSrc": "30173:1:9", + "nodeType": "YulIdentifier", + "src": "30173:1:9" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "30166:3:9", + "nodeType": "YulIdentifier", + "src": "30166:3:9" + }, + "nativeSrc": "30166:9:9", + "nodeType": "YulFunctionCall", + "src": "30166:9:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30156:3:9", + "nodeType": "YulIdentifier", + "src": "30156:3:9" + }, + "nativeSrc": "30156:20:9", + "nodeType": "YulFunctionCall", + "src": "30156:20:9" + }, + "variables": [ + { + "name": "z", + "nativeSrc": "30151:1:9", + "nodeType": "YulTypedName", + "src": "30151:1:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "30394:585:9", + "nodeType": "YulBlock", + "src": "30394:585:9", + "statements": [ + { + "nativeSrc": "30416:20:9", + "nodeType": "YulVariableDeclaration", + "src": "30416:20:9", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30431:4:9", + "nodeType": "YulLiteral", + "src": "30431:4:9", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "30425:5:9", + "nodeType": "YulIdentifier", + "src": "30425:5:9" + }, + "nativeSrc": "30425:11:9", + "nodeType": "YulFunctionCall", + "src": "30425:11:9" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "30420:1:9", + "nodeType": "YulTypedName", + "src": "30420:1:9", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "30464:1:9", + "nodeType": "YulIdentifier", + "src": "30464:1:9" + }, + { + "name": "l", + "nativeSrc": "30467:1:9", + "nodeType": "YulIdentifier", + "src": "30467:1:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "30457:6:9", + "nodeType": "YulIdentifier", + "src": "30457:6:9" + }, + "nativeSrc": "30457:12:9", + "nodeType": "YulFunctionCall", + "src": "30457:12:9" + }, + "nativeSrc": "30457:12:9", + "nodeType": "YulExpressionStatement", + "src": "30457:12:9" + }, + { + "body": { + "nativeSrc": "30525:215:9", + "nodeType": "YulBlock", + "src": "30525:215:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "30562:1:9", + "nodeType": "YulIdentifier", + "src": "30562:1:9" + }, + { + "name": "z", + "nativeSrc": "30565:1:9", + "nodeType": "YulIdentifier", + "src": "30565:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30558:3:9", + "nodeType": "YulIdentifier", + "src": "30558:3:9" + }, + "nativeSrc": "30558:9:9", + "nodeType": "YulFunctionCall", + "src": "30558:9:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "s", + "nativeSrc": "30579:1:9", + "nodeType": "YulIdentifier", + "src": "30579:1:9" + }, + { + "name": "z", + "nativeSrc": "30582:1:9", + "nodeType": "YulIdentifier", + "src": "30582:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30575:3:9", + "nodeType": "YulIdentifier", + "src": "30575:3:9" + }, + "nativeSrc": "30575:9:9", + "nodeType": "YulFunctionCall", + "src": "30575:9:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "30569:5:9", + "nodeType": "YulIdentifier", + "src": "30569:5:9" + }, + "nativeSrc": "30569:16:9", + "nodeType": "YulFunctionCall", + "src": "30569:16:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "30551:6:9", + "nodeType": "YulIdentifier", + "src": "30551:6:9" + }, + "nativeSrc": "30551:35:9", + "nodeType": "YulFunctionCall", + "src": "30551:35:9" + }, + "nativeSrc": "30551:35:9", + "nodeType": "YulExpressionStatement", + "src": "30551:35:9" + }, + { + "nativeSrc": "30638:14:9", + "nodeType": "YulAssignment", + "src": "30638:14:9", + "value": { + "arguments": [ + { + "name": "z", + "nativeSrc": "30647:1:9", + "nodeType": "YulIdentifier", + "src": "30647:1:9" + }, + { + "name": "w", + "nativeSrc": "30650:1:9", + "nodeType": "YulIdentifier", + "src": "30650:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30643:3:9", + "nodeType": "YulIdentifier", + "src": "30643:3:9" + }, + "nativeSrc": "30643:9:9", + "nodeType": "YulFunctionCall", + "src": "30643:9:9" + }, + "variableNames": [ + { + "name": "z", + "nativeSrc": "30638:1:9", + "nodeType": "YulIdentifier", + "src": "30638:1:9" + } + ] + }, + { + "body": { + "nativeSrc": "30709:9:9", + "nodeType": "YulBlock", + "src": "30709:9:9", + "statements": [ + { + "nativeSrc": "30711:5:9", + "nodeType": "YulBreak", + "src": "30711:5:9" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "z", + "nativeSrc": "30706:1:9", + "nodeType": "YulIdentifier", + "src": "30706:1:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "30699:6:9", + "nodeType": "YulIdentifier", + "src": "30699:6:9" + }, + "nativeSrc": "30699:9:9", + "nodeType": "YulFunctionCall", + "src": "30699:9:9" + }, + "nativeSrc": "30696:22:9", + "nodeType": "YulIf", + "src": "30696:22:9" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "30520:1:9", + "nodeType": "YulLiteral", + "src": "30520:1:9", + "type": "", + "value": "1" + }, + "nativeSrc": "30513:227:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "30522:2:9", + "nodeType": "YulBlock", + "src": "30522:2:9", + "statements": [] + }, + "pre": { + "nativeSrc": "30517:2:9", + "nodeType": "YulBlock", + "src": "30517:2:9", + "statements": [] + }, + "src": "30513:227:9" + }, + { + "nativeSrc": "30761:29:9", + "nodeType": "YulVariableDeclaration", + "src": "30761:29:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "30778:1:9", + "nodeType": "YulIdentifier", + "src": "30778:1:9" + }, + { + "kind": "number", + "nativeSrc": "30781:4:9", + "nodeType": "YulLiteral", + "src": "30781:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30774:3:9", + "nodeType": "YulIdentifier", + "src": "30774:3:9" + }, + "nativeSrc": "30774:12:9", + "nodeType": "YulFunctionCall", + "src": "30774:12:9" + }, + { + "name": "l", + "nativeSrc": "30788:1:9", + "nodeType": "YulIdentifier", + "src": "30788:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30770:3:9", + "nodeType": "YulIdentifier", + "src": "30770:3:9" + }, + "nativeSrc": "30770:20:9", + "nodeType": "YulFunctionCall", + "src": "30770:20:9" + }, + "variables": [ + { + "name": "e", + "nativeSrc": "30765:1:9", + "nodeType": "YulTypedName", + "src": "30765:1:9", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "e", + "nativeSrc": "30818:1:9", + "nodeType": "YulIdentifier", + "src": "30818:1:9" + }, + { + "kind": "number", + "nativeSrc": "30821:1:9", + "nodeType": "YulLiteral", + "src": "30821:1:9", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "30811:6:9", + "nodeType": "YulIdentifier", + "src": "30811:6:9" + }, + "nativeSrc": "30811:12:9", + "nodeType": "YulFunctionCall", + "src": "30811:12:9" + }, + "nativeSrc": "30811:12:9", + "nodeType": "YulExpressionStatement", + "src": "30811:12:9" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30895:4:9", + "nodeType": "YulLiteral", + "src": "30895:4:9", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "e", + "nativeSrc": "30905:1:9", + "nodeType": "YulIdentifier", + "src": "30905:1:9" + }, + { + "kind": "number", + "nativeSrc": "30908:4:9", + "nodeType": "YulLiteral", + "src": "30908:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30901:3:9", + "nodeType": "YulIdentifier", + "src": "30901:3:9" + }, + "nativeSrc": "30901:12:9", + "nodeType": "YulFunctionCall", + "src": "30901:12:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "30888:6:9", + "nodeType": "YulIdentifier", + "src": "30888:6:9" + }, + "nativeSrc": "30888:26:9", + "nodeType": "YulFunctionCall", + "src": "30888:26:9" + }, + "nativeSrc": "30888:26:9", + "nodeType": "YulExpressionStatement", + "src": "30888:26:9" + }, + { + "nativeSrc": "30955:6:9", + "nodeType": "YulAssignment", + "src": "30955:6:9", + "value": { + "name": "m", + "nativeSrc": "30960:1:9", + "nodeType": "YulIdentifier", + "src": "30960:1:9" + }, + "variableNames": [ + { + "name": "s", + "nativeSrc": "30955:1:9", + "nodeType": "YulIdentifier", + "src": "30955:1:9" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "s", + "nativeSrc": "30329:1:9", + "nodeType": "YulIdentifier", + "src": "30329:1:9" + }, + { + "name": "o", + "nativeSrc": "30332:1:9", + "nodeType": "YulIdentifier", + "src": "30332:1:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "30326:2:9", + "nodeType": "YulIdentifier", + "src": "30326:2:9" + }, + "nativeSrc": "30326:8:9", + "nodeType": "YulFunctionCall", + "src": "30326:8:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "r", + "nativeSrc": "30346:1:9", + "nodeType": "YulIdentifier", + "src": "30346:1:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "30339:6:9", + "nodeType": "YulIdentifier", + "src": "30339:6:9" + }, + "nativeSrc": "30339:9:9", + "nodeType": "YulFunctionCall", + "src": "30339:9:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30365:1:9", + "nodeType": "YulLiteral", + "src": "30365:1:9", + "type": "", + "value": "3" + }, + { + "name": "r", + "nativeSrc": "30368:1:9", + "nodeType": "YulIdentifier", + "src": "30368:1:9" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "30361:3:9", + "nodeType": "YulIdentifier", + "src": "30361:3:9" + }, + "nativeSrc": "30361:9:9", + "nodeType": "YulFunctionCall", + "src": "30361:9:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "s", + "nativeSrc": "30382:1:9", + "nodeType": "YulIdentifier", + "src": "30382:1:9" + }, + { + "name": "z", + "nativeSrc": "30385:1:9", + "nodeType": "YulIdentifier", + "src": "30385:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30378:3:9", + "nodeType": "YulIdentifier", + "src": "30378:3:9" + }, + "nativeSrc": "30378:9:9", + "nodeType": "YulFunctionCall", + "src": "30378:9:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "30372:5:9", + "nodeType": "YulIdentifier", + "src": "30372:5:9" + }, + "nativeSrc": "30372:16:9", + "nodeType": "YulFunctionCall", + "src": "30372:16:9" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "30357:3:9", + "nodeType": "YulIdentifier", + "src": "30357:3:9" + }, + "nativeSrc": "30357:32:9", + "nodeType": "YulFunctionCall", + "src": "30357:32:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "30350:6:9", + "nodeType": "YulIdentifier", + "src": "30350:6:9" + }, + "nativeSrc": "30350:40:9", + "nodeType": "YulFunctionCall", + "src": "30350:40:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "30336:2:9", + "nodeType": "YulIdentifier", + "src": "30336:2:9" + }, + "nativeSrc": "30336:55:9", + "nodeType": "YulFunctionCall", + "src": "30336:55:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "30323:2:9", + "nodeType": "YulIdentifier", + "src": "30323:2:9" + }, + "nativeSrc": "30323:69:9", + "nodeType": "YulFunctionCall", + "src": "30323:69:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "30316:6:9", + "nodeType": "YulIdentifier", + "src": "30316:6:9" + }, + "nativeSrc": "30316:77:9", + "nodeType": "YulFunctionCall", + "src": "30316:77:9" + }, + "nativeSrc": "30313:666:9", + "nodeType": "YulIf", + "src": "30313:666:9" + }, + { + "expression": { + "arguments": [ + { + "name": "c", + "nativeSrc": "31003:1:9", + "nodeType": "YulIdentifier", + "src": "31003:1:9" + }, + { + "arguments": [ + { + "name": "s", + "nativeSrc": "31010:1:9", + "nodeType": "YulIdentifier", + "src": "31010:1:9" + }, + { + "name": "o", + "nativeSrc": "31013:1:9", + "nodeType": "YulIdentifier", + "src": "31013:1:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "31006:3:9", + "nodeType": "YulIdentifier", + "src": "31006:3:9" + }, + "nativeSrc": "31006:9:9", + "nodeType": "YulFunctionCall", + "src": "31006:9:9" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "30996:6:9", + "nodeType": "YulIdentifier", + "src": "30996:6:9" + }, + "nativeSrc": "30996:20:9", + "nodeType": "YulFunctionCall", + "src": "30996:20:9" + }, + "nativeSrc": "30996:20:9", + "nodeType": "YulExpressionStatement", + "src": "30996:20:9" + }, + { + "nativeSrc": "31064:29:9", + "nodeType": "YulVariableDeclaration", + "src": "31064:29:9", + "value": { + "arguments": [ + { + "name": "l", + "nativeSrc": "31077:1:9", + "nodeType": "YulIdentifier", + "src": "31077:1:9" + }, + { + "arguments": [ + { + "name": "s", + "nativeSrc": "31084:1:9", + "nodeType": "YulIdentifier", + "src": "31084:1:9" + }, + { + "kind": "number", + "nativeSrc": "31087:4:9", + "nodeType": "YulLiteral", + "src": "31087:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31080:3:9", + "nodeType": "YulIdentifier", + "src": "31080:3:9" + }, + "nativeSrc": "31080:12:9", + "nodeType": "YulFunctionCall", + "src": "31080:12:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31073:3:9", + "nodeType": "YulIdentifier", + "src": "31073:3:9" + }, + "nativeSrc": "31073:20:9", + "nodeType": "YulFunctionCall", + "src": "31073:20:9" + }, + "variables": [ + { + "name": "t", + "nativeSrc": "31068:1:9", + "nodeType": "YulTypedName", + "src": "31068:1:9", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "31130:10:9", + "nodeType": "YulBlock", + "src": "31130:10:9", + "statements": [ + { + "nativeSrc": "31132:6:9", + "nodeType": "YulAssignment", + "src": "31132:6:9", + "value": { + "name": "t", + "nativeSrc": "31137:1:9", + "nodeType": "YulIdentifier", + "src": "31137:1:9" + }, + "variableNames": [ + { + "name": "u", + "nativeSrc": "31132:1:9", + "nodeType": "YulIdentifier", + "src": "31132:1:9" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "t", + "nativeSrc": "31123:1:9", + "nodeType": "YulIdentifier", + "src": "31123:1:9" + }, + { + "name": "u", + "nativeSrc": "31126:1:9", + "nodeType": "YulIdentifier", + "src": "31126:1:9" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "31120:2:9", + "nodeType": "YulIdentifier", + "src": "31120:2:9" + }, + "nativeSrc": "31120:8:9", + "nodeType": "YulFunctionCall", + "src": "31120:8:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "31113:6:9", + "nodeType": "YulIdentifier", + "src": "31113:6:9" + }, + "nativeSrc": "31113:16:9", + "nodeType": "YulFunctionCall", + "src": "31113:16:9" + }, + "nativeSrc": "31110:30:9", + "nodeType": "YulIf", + "src": "31110:30:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "29868:1:9", + "nodeType": "YulIdentifier", + "src": "29868:1:9" + }, + { + "name": "n", + "nativeSrc": "29871:1:9", + "nodeType": "YulIdentifier", + "src": "29871:1:9" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "29865:2:9", + "nodeType": "YulIdentifier", + "src": "29865:2:9" + }, + "nativeSrc": "29865:8:9", + "nodeType": "YulFunctionCall", + "src": "29865:8:9" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "29858:6:9", + "nodeType": "YulIdentifier", + "src": "29858:6:9" + }, + "nativeSrc": "29858:16:9", + "nodeType": "YulFunctionCall", + "src": "29858:16:9" + }, + "nativeSrc": "29839:1315:9", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "29875:18:9", + "nodeType": "YulBlock", + "src": "29875:18:9", + "statements": [ + { + "nativeSrc": "29877:14:9", + "nodeType": "YulAssignment", + "src": "29877:14:9", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "29886:1:9", + "nodeType": "YulIdentifier", + "src": "29886:1:9" + }, + { + "kind": "number", + "nativeSrc": "29889:1:9", + "nodeType": "YulLiteral", + "src": "29889:1:9", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "29882:3:9", + "nodeType": "YulIdentifier", + "src": "29882:3:9" + }, + "nativeSrc": "29882:9:9", + "nodeType": "YulFunctionCall", + "src": "29882:9:9" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "29877:1:9", + "nodeType": "YulIdentifier", + "src": "29877:1:9" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "29843:14:9", + "nodeType": "YulBlock", + "src": "29843:14:9", + "statements": [ + { + "nativeSrc": "29845:10:9", + "nodeType": "YulVariableDeclaration", + "src": "29845:10:9", + "value": { + "kind": "number", + "nativeSrc": "29854:1:9", + "nodeType": "YulLiteral", + "src": "29854:1:9", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "29849:1:9", + "nodeType": "YulTypedName", + "src": "29849:1:9", + "type": "" + } + ] + } + ] + }, + "src": "29839:1315:9" + }, + { + "nativeSrc": "31167:25:9", + "nodeType": "YulVariableDeclaration", + "src": "31167:25:9", + "value": { + "arguments": [ + { + "name": "a", + "nativeSrc": "31187:1:9", + "nodeType": "YulIdentifier", + "src": "31187:1:9" + }, + { + "name": "w", + "nativeSrc": "31190:1:9", + "nodeType": "YulIdentifier", + "src": "31190:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31183:3:9", + "nodeType": "YulIdentifier", + "src": "31183:3:9" + }, + "nativeSrc": "31183:9:9", + "nodeType": "YulFunctionCall", + "src": "31183:9:9" + }, + "variables": [ + { + "name": "retStart", + "nativeSrc": "31171:8:9", + "nodeType": "YulTypedName", + "src": "31171:8:9", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "retStart", + "nativeSrc": "31261:8:9", + "nodeType": "YulIdentifier", + "src": "31261:8:9" + }, + { + "kind": "number", + "nativeSrc": "31271:4:9", + "nodeType": "YulLiteral", + "src": "31271:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "31254:6:9", + "nodeType": "YulIdentifier", + "src": "31254:6:9" + }, + "nativeSrc": "31254:22:9", + "nodeType": "YulFunctionCall", + "src": "31254:22:9" + }, + "nativeSrc": "31254:22:9", + "nodeType": "YulExpressionStatement", + "src": "31254:22:9" + }, + { + "expression": { + "arguments": [ + { + "name": "retStart", + "nativeSrc": "31324:8:9", + "nodeType": "YulIdentifier", + "src": "31324:8:9" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "31338:4:9", + "nodeType": "YulLiteral", + "src": "31338:4:9", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "u", + "nativeSrc": "31348:1:9", + "nodeType": "YulIdentifier", + "src": "31348:1:9" + }, + { + "name": "retStart", + "nativeSrc": "31351:8:9", + "nodeType": "YulIdentifier", + "src": "31351:8:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "31344:3:9", + "nodeType": "YulIdentifier", + "src": "31344:3:9" + }, + "nativeSrc": "31344:16:9", + "nodeType": "YulFunctionCall", + "src": "31344:16:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31334:3:9", + "nodeType": "YulIdentifier", + "src": "31334:3:9" + }, + "nativeSrc": "31334:27:9", + "nodeType": "YulFunctionCall", + "src": "31334:27:9" + } + ], + "functionName": { + "name": "return", + "nativeSrc": "31317:6:9", + "nodeType": "YulIdentifier", + "src": "31317:6:9" + }, + "nativeSrc": "31317:45:9", + "nodeType": "YulFunctionCall", + "src": "31317:45:9" + }, + "nativeSrc": "31317:45:9", + "nodeType": "YulExpressionStatement", + "src": "31317:45:9" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3015, + "isOffset": false, + "isSlot": false, + "src": "29668:1:9", + "valueSize": 1 + }, + { + "declaration": 3015, + "isOffset": false, + "isSlot": false, + "src": "29711:1:9", + "valueSize": 1 + }, + { + "declaration": 3015, + "isOffset": false, + "isSlot": false, + "src": "29770:1:9", + "valueSize": 1 + }, + { + "declaration": 3015, + "isOffset": false, + "isSlot": false, + "src": "31187:1:9", + "valueSize": 1 + } + ], + "id": 3018, + "nodeType": "InlineAssembly", + "src": "29630:1766:9" + } + ] + }, + "documentation": { + "id": 3012, + "nodeType": "StructuredDocumentation", + "src": "29467:51:9", + "text": "@dev Directly returns `a` with minimal copying." + }, + "id": 3020, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "directReturn", + "nameLocation": "29532:12:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3016, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3015, + "mutability": "mutable", + "name": "a", + "nameLocation": "29560:1:9", + "nodeType": "VariableDeclaration", + "scope": 3020, + "src": "29545:16:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 3013, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "29545:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 3014, + "nodeType": "ArrayTypeName", + "src": "29545:7:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + } + ], + "src": "29544:18:9" + }, + "returnParameters": { + "id": 3017, + "nodeType": "ParameterList", + "parameters": [], + "src": "29577:0:9" + }, + "scope": 3089, + "src": "29523:1879:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3031, + "nodeType": "Block", + "src": "31563:134:9", + "statements": [ + { + "AST": { + "nativeSrc": "31625:66:9", + "nodeType": "YulBlock", + "src": "31625:66:9", + "statements": [ + { + "nativeSrc": "31639:42:9", + "nodeType": "YulAssignment", + "src": "31639:42:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "a", + "nativeSrc": "31663:1:9", + "nodeType": "YulIdentifier", + "src": "31663:1:9" + }, + { + "kind": "number", + "nativeSrc": "31666:4:9", + "nodeType": "YulLiteral", + "src": "31666:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31659:3:9", + "nodeType": "YulIdentifier", + "src": "31659:3:9" + }, + "nativeSrc": "31659:12:9", + "nodeType": "YulFunctionCall", + "src": "31659:12:9" + }, + { + "name": "offset", + "nativeSrc": "31673:6:9", + "nodeType": "YulIdentifier", + "src": "31673:6:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31655:3:9", + "nodeType": "YulIdentifier", + "src": "31655:3:9" + }, + "nativeSrc": "31655:25:9", + "nodeType": "YulFunctionCall", + "src": "31655:25:9" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "31649:5:9", + "nodeType": "YulIdentifier", + "src": "31649:5:9" + }, + "nativeSrc": "31649:32:9", + "nodeType": "YulFunctionCall", + "src": "31649:32:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "31639:6:9", + "nodeType": "YulIdentifier", + "src": "31639:6:9" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3023, + "isOffset": false, + "isSlot": false, + "src": "31663:1:9", + "valueSize": 1 + }, + { + "declaration": 3025, + "isOffset": false, + "isSlot": false, + "src": "31673:6:9", + "valueSize": 1 + }, + { + "declaration": 3028, + "isOffset": false, + "isSlot": false, + "src": "31639:6:9", + "valueSize": 1 + } + ], + "id": 3030, + "nodeType": "InlineAssembly", + "src": "31616:75:9" + } + ] + }, + "documentation": { + "id": 3021, + "nodeType": "StructuredDocumentation", + "src": "31408:65:9", + "text": "@dev Returns the word at `offset`, without any bounds checks." + }, + "id": 3032, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "load", + "nameLocation": "31487:4:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3026, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3023, + "mutability": "mutable", + "name": "a", + "nameLocation": "31505:1:9", + "nodeType": "VariableDeclaration", + "scope": 3032, + "src": "31492:14:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3022, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "31492:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3025, + "mutability": "mutable", + "name": "offset", + "nameLocation": "31516:6:9", + "nodeType": "VariableDeclaration", + "scope": 3032, + "src": "31508:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3024, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "31508:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "31491:32:9" + }, + "returnParameters": { + "id": 3029, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3028, + "mutability": "mutable", + "name": "result", + "nameLocation": "31555:6:9", + "nodeType": "VariableDeclaration", + "scope": 3032, + "src": "31547:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3027, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "31547:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "31546:16:9" + }, + "scope": 3089, + "src": "31478:219:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3043, + "nodeType": "Block", + "src": "31896:137:9", + "statements": [ + { + "AST": { + "nativeSrc": "31958:69:9", + "nodeType": "YulBlock", + "src": "31958:69:9", + "statements": [ + { + "nativeSrc": "31972:45:9", + "nodeType": "YulAssignment", + "src": "31972:45:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "a.offset", + "nativeSrc": "31999:8:9", + "nodeType": "YulIdentifier", + "src": "31999:8:9" + }, + { + "name": "offset", + "nativeSrc": "32009:6:9", + "nodeType": "YulIdentifier", + "src": "32009:6:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31995:3:9", + "nodeType": "YulIdentifier", + "src": "31995:3:9" + }, + "nativeSrc": "31995:21:9", + "nodeType": "YulFunctionCall", + "src": "31995:21:9" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "31982:12:9", + "nodeType": "YulIdentifier", + "src": "31982:12:9" + }, + "nativeSrc": "31982:35:9", + "nodeType": "YulFunctionCall", + "src": "31982:35:9" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "31972:6:9", + "nodeType": "YulIdentifier", + "src": "31972:6:9" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3035, + "isOffset": true, + "isSlot": false, + "src": "31999:8:9", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 3037, + "isOffset": false, + "isSlot": false, + "src": "32009:6:9", + "valueSize": 1 + }, + { + "declaration": 3040, + "isOffset": false, + "isSlot": false, + "src": "31972:6:9", + "valueSize": 1 + } + ], + "id": 3042, + "nodeType": "InlineAssembly", + "src": "31949:78:9" + } + ] + }, + "documentation": { + "id": 3033, + "nodeType": "StructuredDocumentation", + "src": "31703:65:9", + "text": "@dev Returns the word at `offset`, without any bounds checks." + }, + "id": 3044, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "loadCalldata", + "nameLocation": "31782:12:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3038, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3035, + "mutability": "mutable", + "name": "a", + "nameLocation": "31810:1:9", + "nodeType": "VariableDeclaration", + "scope": 3044, + "src": "31795:16:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3034, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "31795:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3037, + "mutability": "mutable", + "name": "offset", + "nameLocation": "31821:6:9", + "nodeType": "VariableDeclaration", + "scope": 3044, + "src": "31813:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3036, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "31813:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "31794:34:9" + }, + "returnParameters": { + "id": 3041, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3040, + "mutability": "mutable", + "name": "result", + "nameLocation": "31884:6:9", + "nodeType": "VariableDeclaration", + "scope": 3044, + "src": "31876:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3039, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "31876:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "31875:16:9" + }, + "scope": 3089, + "src": "31773:260:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3055, + "nodeType": "Block", + "src": "32278:301:9", + "statements": [ + { + "AST": { + "nativeSrc": "32340:233:9", + "nodeType": "YulBlock", + "src": "32340:233:9", + "statements": [ + { + "nativeSrc": "32354:28:9", + "nodeType": "YulVariableDeclaration", + "src": "32354:28:9", + "value": { + "arguments": [ + { + "name": "a.length", + "nativeSrc": "32367:8:9", + "nodeType": "YulIdentifier", + "src": "32367:8:9" + }, + { + "kind": "number", + "nativeSrc": "32377:4:9", + "nodeType": "YulLiteral", + "src": "32377:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "32363:3:9", + "nodeType": "YulIdentifier", + "src": "32363:3:9" + }, + "nativeSrc": "32363:19:9", + "nodeType": "YulFunctionCall", + "src": "32363:19:9" + }, + "variables": [ + { + "name": "l", + "nativeSrc": "32358:1:9", + "nodeType": "YulTypedName", + "src": "32358:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "32395:38:9", + "nodeType": "YulAssignment", + "src": "32395:38:9", + "value": { + "arguments": [ + { + "name": "a.offset", + "nativeSrc": "32416:8:9", + "nodeType": "YulIdentifier", + "src": "32416:8:9" + }, + { + "name": "offset", + "nativeSrc": "32426:6:9", + "nodeType": "YulIdentifier", + "src": "32426:6:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "32412:3:9", + "nodeType": "YulIdentifier", + "src": "32412:3:9" + }, + "nativeSrc": "32412:21:9", + "nodeType": "YulFunctionCall", + "src": "32412:21:9" + }, + "variableNames": [ + { + "name": "result.offset", + "nativeSrc": "32395:13:9", + "nodeType": "YulIdentifier", + "src": "32395:13:9" + } + ] + }, + { + "nativeSrc": "32446:38:9", + "nodeType": "YulAssignment", + "src": "32446:38:9", + "value": { + "arguments": [ + { + "name": "a.length", + "nativeSrc": "32467:8:9", + "nodeType": "YulIdentifier", + "src": "32467:8:9" + }, + { + "name": "offset", + "nativeSrc": "32477:6:9", + "nodeType": "YulIdentifier", + "src": "32477:6:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "32463:3:9", + "nodeType": "YulIdentifier", + "src": "32463:3:9" + }, + "nativeSrc": "32463:21:9", + "nodeType": "YulFunctionCall", + "src": "32463:21:9" + }, + "variableNames": [ + { + "name": "result.length", + "nativeSrc": "32446:13:9", + "nodeType": "YulIdentifier", + "src": "32446:13:9" + } + ] + }, + { + "body": { + "nativeSrc": "32544:19:9", + "nodeType": "YulBlock", + "src": "32544:19:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "l", + "nativeSrc": "32553:1:9", + "nodeType": "YulIdentifier", + "src": "32553:1:9" + }, + { + "kind": "number", + "nativeSrc": "32556:4:9", + "nodeType": "YulLiteral", + "src": "32556:4:9", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "32546:6:9", + "nodeType": "YulIdentifier", + "src": "32546:6:9" + }, + "nativeSrc": "32546:15:9", + "nodeType": "YulFunctionCall", + "src": "32546:15:9" + }, + "nativeSrc": "32546:15:9", + "nodeType": "YulExpressionStatement", + "src": "32546:15:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "32507:2:9", + "nodeType": "YulLiteral", + "src": "32507:2:9", + "type": "", + "value": "64" + }, + { + "arguments": [ + { + "name": "l", + "nativeSrc": "32514:1:9", + "nodeType": "YulIdentifier", + "src": "32514:1:9" + }, + { + "name": "a.offset", + "nativeSrc": "32517:8:9", + "nodeType": "YulIdentifier", + "src": "32517:8:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "32511:2:9", + "nodeType": "YulIdentifier", + "src": "32511:2:9" + }, + "nativeSrc": "32511:15:9", + "nodeType": "YulFunctionCall", + "src": "32511:15:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "32503:3:9", + "nodeType": "YulIdentifier", + "src": "32503:3:9" + }, + "nativeSrc": "32503:24:9", + "nodeType": "YulFunctionCall", + "src": "32503:24:9" + }, + { + "arguments": [ + { + "name": "offset", + "nativeSrc": "32532:6:9", + "nodeType": "YulIdentifier", + "src": "32532:6:9" + }, + { + "name": "l", + "nativeSrc": "32540:1:9", + "nodeType": "YulIdentifier", + "src": "32540:1:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "32529:2:9", + "nodeType": "YulIdentifier", + "src": "32529:2:9" + }, + "nativeSrc": "32529:13:9", + "nodeType": "YulFunctionCall", + "src": "32529:13:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "32500:2:9", + "nodeType": "YulIdentifier", + "src": "32500:2:9" + }, + "nativeSrc": "32500:43:9", + "nodeType": "YulFunctionCall", + "src": "32500:43:9" + }, + "nativeSrc": "32497:66:9", + "nodeType": "YulIf", + "src": "32497:66:9" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3047, + "isOffset": false, + "isSlot": false, + "src": "32367:8:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 3047, + "isOffset": false, + "isSlot": false, + "src": "32467:8:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 3047, + "isOffset": true, + "isSlot": false, + "src": "32416:8:9", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 3047, + "isOffset": true, + "isSlot": false, + "src": "32517:8:9", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 3049, + "isOffset": false, + "isSlot": false, + "src": "32426:6:9", + "valueSize": 1 + }, + { + "declaration": 3049, + "isOffset": false, + "isSlot": false, + "src": "32477:6:9", + "valueSize": 1 + }, + { + "declaration": 3049, + "isOffset": false, + "isSlot": false, + "src": "32532:6:9", + "valueSize": 1 + }, + { + "declaration": 3052, + "isOffset": false, + "isSlot": false, + "src": "32446:13:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 3052, + "isOffset": true, + "isSlot": false, + "src": "32395:13:9", + "suffix": "offset", + "valueSize": 1 + } + ], + "id": 3054, + "nodeType": "InlineAssembly", + "src": "32331:242:9" + } + ] + }, + "documentation": { + "id": 3045, + "nodeType": "StructuredDocumentation", + "src": "32039:94:9", + "text": "@dev Returns a slice representing a static struct in the calldata. Performs bounds checks." + }, + "id": 3056, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "staticStructInCalldata", + "nameLocation": "32147:22:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3050, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3047, + "mutability": "mutable", + "name": "a", + "nameLocation": "32185:1:9", + "nodeType": "VariableDeclaration", + "scope": 3056, + "src": "32170:16:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3046, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "32170:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3049, + "mutability": "mutable", + "name": "offset", + "nameLocation": "32196:6:9", + "nodeType": "VariableDeclaration", + "scope": 3056, + "src": "32188:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3048, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "32188:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "32169:34:9" + }, + "returnParameters": { + "id": 3053, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3052, + "mutability": "mutable", + "name": "result", + "nameLocation": "32266:6:9", + "nodeType": "VariableDeclaration", + "scope": 3056, + "src": "32251:21:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3051, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "32251:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "32250:23:9" + }, + "scope": 3089, + "src": "32138:441:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3067, + "nodeType": "Block", + "src": "32826:403:9", + "statements": [ + { + "AST": { + "nativeSrc": "32888:335:9", + "nodeType": "YulBlock", + "src": "32888:335:9", + "statements": [ + { + "nativeSrc": "32902:28:9", + "nodeType": "YulVariableDeclaration", + "src": "32902:28:9", + "value": { + "arguments": [ + { + "name": "a.length", + "nativeSrc": "32915:8:9", + "nodeType": "YulIdentifier", + "src": "32915:8:9" + }, + { + "kind": "number", + "nativeSrc": "32925:4:9", + "nodeType": "YulLiteral", + "src": "32925:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "32911:3:9", + "nodeType": "YulIdentifier", + "src": "32911:3:9" + }, + "nativeSrc": "32911:19:9", + "nodeType": "YulFunctionCall", + "src": "32911:19:9" + }, + "variables": [ + { + "name": "l", + "nativeSrc": "32906:1:9", + "nodeType": "YulTypedName", + "src": "32906:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "32943:44:9", + "nodeType": "YulVariableDeclaration", + "src": "32943:44:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "a.offset", + "nativeSrc": "32969:8:9", + "nodeType": "YulIdentifier", + "src": "32969:8:9" + }, + { + "name": "offset", + "nativeSrc": "32979:6:9", + "nodeType": "YulIdentifier", + "src": "32979:6:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "32965:3:9", + "nodeType": "YulIdentifier", + "src": "32965:3:9" + }, + "nativeSrc": "32965:21:9", + "nodeType": "YulFunctionCall", + "src": "32965:21:9" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "32952:12:9", + "nodeType": "YulIdentifier", + "src": "32952:12:9" + }, + "nativeSrc": "32952:35:9", + "nodeType": "YulFunctionCall", + "src": "32952:35:9" + }, + "variables": [ + { + "name": "s", + "nativeSrc": "32947:1:9", + "nodeType": "YulTypedName", + "src": "32947:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "33048:33:9", + "nodeType": "YulAssignment", + "src": "33048:33:9", + "value": { + "arguments": [ + { + "name": "a.offset", + "nativeSrc": "33069:8:9", + "nodeType": "YulIdentifier", + "src": "33069:8:9" + }, + { + "name": "s", + "nativeSrc": "33079:1:9", + "nodeType": "YulIdentifier", + "src": "33079:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33065:3:9", + "nodeType": "YulIdentifier", + "src": "33065:3:9" + }, + "nativeSrc": "33065:16:9", + "nodeType": "YulFunctionCall", + "src": "33065:16:9" + }, + "variableNames": [ + { + "name": "result.offset", + "nativeSrc": "33048:13:9", + "nodeType": "YulIdentifier", + "src": "33048:13:9" + } + ] + }, + { + "nativeSrc": "33094:33:9", + "nodeType": "YulAssignment", + "src": "33094:33:9", + "value": { + "arguments": [ + { + "name": "a.length", + "nativeSrc": "33115:8:9", + "nodeType": "YulIdentifier", + "src": "33115:8:9" + }, + { + "name": "s", + "nativeSrc": "33125:1:9", + "nodeType": "YulIdentifier", + "src": "33125:1:9" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "33111:3:9", + "nodeType": "YulIdentifier", + "src": "33111:3:9" + }, + "nativeSrc": "33111:16:9", + "nodeType": "YulFunctionCall", + "src": "33111:16:9" + }, + "variableNames": [ + { + "name": "result.length", + "nativeSrc": "33094:13:9", + "nodeType": "YulIdentifier", + "src": "33094:13:9" + } + ] + }, + { + "body": { + "nativeSrc": "33194:19:9", + "nodeType": "YulBlock", + "src": "33194:19:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "l", + "nativeSrc": "33203:1:9", + "nodeType": "YulIdentifier", + "src": "33203:1:9" + }, + { + "kind": "number", + "nativeSrc": "33206:4:9", + "nodeType": "YulLiteral", + "src": "33206:4:9", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "33196:6:9", + "nodeType": "YulIdentifier", + "src": "33196:6:9" + }, + "nativeSrc": "33196:15:9", + "nodeType": "YulFunctionCall", + "src": "33196:15:9" + }, + "nativeSrc": "33196:15:9", + "nodeType": "YulExpressionStatement", + "src": "33196:15:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33150:2:9", + "nodeType": "YulLiteral", + "src": "33150:2:9", + "type": "", + "value": "64" + }, + { + "arguments": [ + { + "name": "s", + "nativeSrc": "33157:1:9", + "nodeType": "YulIdentifier", + "src": "33157:1:9" + }, + { + "arguments": [ + { + "name": "l", + "nativeSrc": "33163:1:9", + "nodeType": "YulIdentifier", + "src": "33163:1:9" + }, + { + "name": "a.offset", + "nativeSrc": "33166:8:9", + "nodeType": "YulIdentifier", + "src": "33166:8:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "33160:2:9", + "nodeType": "YulIdentifier", + "src": "33160:2:9" + }, + "nativeSrc": "33160:15:9", + "nodeType": "YulFunctionCall", + "src": "33160:15:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "33154:2:9", + "nodeType": "YulIdentifier", + "src": "33154:2:9" + }, + "nativeSrc": "33154:22:9", + "nodeType": "YulFunctionCall", + "src": "33154:22:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "33146:3:9", + "nodeType": "YulIdentifier", + "src": "33146:3:9" + }, + "nativeSrc": "33146:31:9", + "nodeType": "YulFunctionCall", + "src": "33146:31:9" + }, + { + "arguments": [ + { + "name": "offset", + "nativeSrc": "33182:6:9", + "nodeType": "YulIdentifier", + "src": "33182:6:9" + }, + { + "name": "l", + "nativeSrc": "33190:1:9", + "nodeType": "YulIdentifier", + "src": "33190:1:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "33179:2:9", + "nodeType": "YulIdentifier", + "src": "33179:2:9" + }, + "nativeSrc": "33179:13:9", + "nodeType": "YulFunctionCall", + "src": "33179:13:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "33143:2:9", + "nodeType": "YulIdentifier", + "src": "33143:2:9" + }, + "nativeSrc": "33143:50:9", + "nodeType": "YulFunctionCall", + "src": "33143:50:9" + }, + "nativeSrc": "33140:73:9", + "nodeType": "YulIf", + "src": "33140:73:9" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3059, + "isOffset": false, + "isSlot": false, + "src": "32915:8:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 3059, + "isOffset": false, + "isSlot": false, + "src": "33115:8:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 3059, + "isOffset": true, + "isSlot": false, + "src": "32969:8:9", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 3059, + "isOffset": true, + "isSlot": false, + "src": "33069:8:9", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 3059, + "isOffset": true, + "isSlot": false, + "src": "33166:8:9", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 3061, + "isOffset": false, + "isSlot": false, + "src": "32979:6:9", + "valueSize": 1 + }, + { + "declaration": 3061, + "isOffset": false, + "isSlot": false, + "src": "33182:6:9", + "valueSize": 1 + }, + { + "declaration": 3064, + "isOffset": false, + "isSlot": false, + "src": "33094:13:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 3064, + "isOffset": true, + "isSlot": false, + "src": "33048:13:9", + "suffix": "offset", + "valueSize": 1 + } + ], + "id": 3066, + "nodeType": "InlineAssembly", + "src": "32879:344:9" + } + ] + }, + "documentation": { + "id": 3057, + "nodeType": "StructuredDocumentation", + "src": "32585:95:9", + "text": "@dev Returns a slice representing a dynamic struct in the calldata. Performs bounds checks." + }, + "id": 3068, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "dynamicStructInCalldata", + "nameLocation": "32694:23:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3062, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3059, + "mutability": "mutable", + "name": "a", + "nameLocation": "32733:1:9", + "nodeType": "VariableDeclaration", + "scope": 3068, + "src": "32718:16:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3058, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "32718:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3061, + "mutability": "mutable", + "name": "offset", + "nameLocation": "32744:6:9", + "nodeType": "VariableDeclaration", + "scope": 3068, + "src": "32736:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3060, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "32736:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "32717:34:9" + }, + "returnParameters": { + "id": 3065, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3064, + "mutability": "mutable", + "name": "result", + "nameLocation": "32814:6:9", + "nodeType": "VariableDeclaration", + "scope": 3068, + "src": "32799:21:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3063, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "32799:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "32798:23:9" + }, + "scope": 3089, + "src": "32685:544:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3079, + "nodeType": "Block", + "src": "33432:540:9", + "statements": [ + { + "AST": { + "nativeSrc": "33494:472:9", + "nodeType": "YulBlock", + "src": "33494:472:9", + "statements": [ + { + "nativeSrc": "33508:28:9", + "nodeType": "YulVariableDeclaration", + "src": "33508:28:9", + "value": { + "arguments": [ + { + "name": "a.length", + "nativeSrc": "33521:8:9", + "nodeType": "YulIdentifier", + "src": "33521:8:9" + }, + { + "kind": "number", + "nativeSrc": "33531:4:9", + "nodeType": "YulLiteral", + "src": "33531:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "33517:3:9", + "nodeType": "YulIdentifier", + "src": "33517:3:9" + }, + "nativeSrc": "33517:19:9", + "nodeType": "YulFunctionCall", + "src": "33517:19:9" + }, + "variables": [ + { + "name": "l", + "nativeSrc": "33512:1:9", + "nodeType": "YulTypedName", + "src": "33512:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "33549:44:9", + "nodeType": "YulVariableDeclaration", + "src": "33549:44:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "a.offset", + "nativeSrc": "33575:8:9", + "nodeType": "YulIdentifier", + "src": "33575:8:9" + }, + { + "name": "offset", + "nativeSrc": "33585:6:9", + "nodeType": "YulIdentifier", + "src": "33585:6:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33571:3:9", + "nodeType": "YulIdentifier", + "src": "33571:3:9" + }, + "nativeSrc": "33571:21:9", + "nodeType": "YulFunctionCall", + "src": "33571:21:9" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "33558:12:9", + "nodeType": "YulIdentifier", + "src": "33558:12:9" + }, + "nativeSrc": "33558:35:9", + "nodeType": "YulFunctionCall", + "src": "33558:35:9" + }, + "variables": [ + { + "name": "s", + "nativeSrc": "33553:1:9", + "nodeType": "YulTypedName", + "src": "33553:1:9", + "type": "" + } + ] + }, + { + "nativeSrc": "33654:44:9", + "nodeType": "YulAssignment", + "src": "33654:44:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "a.offset", + "nativeSrc": "33679:8:9", + "nodeType": "YulIdentifier", + "src": "33679:8:9" + }, + { + "name": "s", + "nativeSrc": "33689:1:9", + "nodeType": "YulIdentifier", + "src": "33689:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33675:3:9", + "nodeType": "YulIdentifier", + "src": "33675:3:9" + }, + "nativeSrc": "33675:16:9", + "nodeType": "YulFunctionCall", + "src": "33675:16:9" + }, + { + "kind": "number", + "nativeSrc": "33693:4:9", + "nodeType": "YulLiteral", + "src": "33693:4:9", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33671:3:9", + "nodeType": "YulIdentifier", + "src": "33671:3:9" + }, + "nativeSrc": "33671:27:9", + "nodeType": "YulFunctionCall", + "src": "33671:27:9" + }, + "variableNames": [ + { + "name": "result.offset", + "nativeSrc": "33654:13:9", + "nodeType": "YulIdentifier", + "src": "33654:13:9" + } + ] + }, + { + "nativeSrc": "33711:47:9", + "nodeType": "YulAssignment", + "src": "33711:47:9", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "a.offset", + "nativeSrc": "33745:8:9", + "nodeType": "YulIdentifier", + "src": "33745:8:9" + }, + { + "name": "s", + "nativeSrc": "33755:1:9", + "nodeType": "YulIdentifier", + "src": "33755:1:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33741:3:9", + "nodeType": "YulIdentifier", + "src": "33741:3:9" + }, + "nativeSrc": "33741:16:9", + "nodeType": "YulFunctionCall", + "src": "33741:16:9" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "33728:12:9", + "nodeType": "YulIdentifier", + "src": "33728:12:9" + }, + "nativeSrc": "33728:30:9", + "nodeType": "YulFunctionCall", + "src": "33728:30:9" + }, + "variableNames": [ + { + "name": "result.length", + "nativeSrc": "33711:13:9", + "nodeType": "YulIdentifier", + "src": "33711:13:9" + } + ] + }, + { + "body": { + "nativeSrc": "33937:19:9", + "nodeType": "YulBlock", + "src": "33937:19:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "l", + "nativeSrc": "33946:1:9", + "nodeType": "YulIdentifier", + "src": "33946:1:9" + }, + { + "kind": "number", + "nativeSrc": "33949:4:9", + "nodeType": "YulLiteral", + "src": "33949:4:9", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "33939:6:9", + "nodeType": "YulIdentifier", + "src": "33939:6:9" + }, + "nativeSrc": "33939:15:9", + "nodeType": "YulFunctionCall", + "src": "33939:15:9" + }, + "nativeSrc": "33939:15:9", + "nodeType": "YulExpressionStatement", + "src": "33939:15:9" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33824:2:9", + "nodeType": "YulLiteral", + "src": "33824:2:9", + "type": "", + "value": "64" + }, + { + "arguments": [ + { + "name": "result.length", + "nativeSrc": "33831:13:9", + "nodeType": "YulIdentifier", + "src": "33831:13:9" + }, + { + "arguments": [ + { + "name": "s", + "nativeSrc": "33849:1:9", + "nodeType": "YulIdentifier", + "src": "33849:1:9" + }, + { + "arguments": [ + { + "name": "l", + "nativeSrc": "33855:1:9", + "nodeType": "YulIdentifier", + "src": "33855:1:9" + }, + { + "name": "a.offset", + "nativeSrc": "33858:8:9", + "nodeType": "YulIdentifier", + "src": "33858:8:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "33852:2:9", + "nodeType": "YulIdentifier", + "src": "33852:2:9" + }, + "nativeSrc": "33852:15:9", + "nodeType": "YulFunctionCall", + "src": "33852:15:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "33846:2:9", + "nodeType": "YulIdentifier", + "src": "33846:2:9" + }, + "nativeSrc": "33846:22:9", + "nodeType": "YulFunctionCall", + "src": "33846:22:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "33828:2:9", + "nodeType": "YulIdentifier", + "src": "33828:2:9" + }, + "nativeSrc": "33828:41:9", + "nodeType": "YulFunctionCall", + "src": "33828:41:9" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "33820:3:9", + "nodeType": "YulIdentifier", + "src": "33820:3:9" + }, + "nativeSrc": "33820:50:9", + "nodeType": "YulFunctionCall", + "src": "33820:50:9" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "s", + "nativeSrc": "33898:1:9", + "nodeType": "YulIdentifier", + "src": "33898:1:9" + }, + { + "name": "result.length", + "nativeSrc": "33901:13:9", + "nodeType": "YulIdentifier", + "src": "33901:13:9" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33894:3:9", + "nodeType": "YulIdentifier", + "src": "33894:3:9" + }, + "nativeSrc": "33894:21:9", + "nodeType": "YulFunctionCall", + "src": "33894:21:9" + }, + { + "name": "l", + "nativeSrc": "33917:1:9", + "nodeType": "YulIdentifier", + "src": "33917:1:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "33891:2:9", + "nodeType": "YulIdentifier", + "src": "33891:2:9" + }, + "nativeSrc": "33891:28:9", + "nodeType": "YulFunctionCall", + "src": "33891:28:9" + }, + { + "arguments": [ + { + "name": "offset", + "nativeSrc": "33924:6:9", + "nodeType": "YulIdentifier", + "src": "33924:6:9" + }, + { + "name": "l", + "nativeSrc": "33932:1:9", + "nodeType": "YulIdentifier", + "src": "33932:1:9" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "33921:2:9", + "nodeType": "YulIdentifier", + "src": "33921:2:9" + }, + "nativeSrc": "33921:13:9", + "nodeType": "YulFunctionCall", + "src": "33921:13:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "33888:2:9", + "nodeType": "YulIdentifier", + "src": "33888:2:9" + }, + "nativeSrc": "33888:47:9", + "nodeType": "YulFunctionCall", + "src": "33888:47:9" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "33817:2:9", + "nodeType": "YulIdentifier", + "src": "33817:2:9" + }, + "nativeSrc": "33817:119:9", + "nodeType": "YulFunctionCall", + "src": "33817:119:9" + }, + "nativeSrc": "33814:142:9", + "nodeType": "YulIf", + "src": "33814:142:9" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3071, + "isOffset": false, + "isSlot": false, + "src": "33521:8:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 3071, + "isOffset": true, + "isSlot": false, + "src": "33575:8:9", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 3071, + "isOffset": true, + "isSlot": false, + "src": "33679:8:9", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 3071, + "isOffset": true, + "isSlot": false, + "src": "33745:8:9", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 3071, + "isOffset": true, + "isSlot": false, + "src": "33858:8:9", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 3073, + "isOffset": false, + "isSlot": false, + "src": "33585:6:9", + "valueSize": 1 + }, + { + "declaration": 3073, + "isOffset": false, + "isSlot": false, + "src": "33924:6:9", + "valueSize": 1 + }, + { + "declaration": 3076, + "isOffset": false, + "isSlot": false, + "src": "33711:13:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 3076, + "isOffset": false, + "isSlot": false, + "src": "33831:13:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 3076, + "isOffset": false, + "isSlot": false, + "src": "33901:13:9", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 3076, + "isOffset": true, + "isSlot": false, + "src": "33654:13:9", + "suffix": "offset", + "valueSize": 1 + } + ], + "id": 3078, + "nodeType": "InlineAssembly", + "src": "33485:481:9" + } + ] + }, + "documentation": { + "id": 3069, + "nodeType": "StructuredDocumentation", + "src": "33235:59:9", + "text": "@dev Returns bytes in calldata. Performs bounds checks." + }, + "id": 3080, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "bytesInCalldata", + "nameLocation": "33308:15:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3074, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3071, + "mutability": "mutable", + "name": "a", + "nameLocation": "33339:1:9", + "nodeType": "VariableDeclaration", + "scope": 3080, + "src": "33324:16:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3070, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "33324:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3073, + "mutability": "mutable", + "name": "offset", + "nameLocation": "33350:6:9", + "nodeType": "VariableDeclaration", + "scope": 3080, + "src": "33342:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3072, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "33342:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "33323:34:9" + }, + "returnParameters": { + "id": 3077, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3076, + "mutability": "mutable", + "name": "result", + "nameLocation": "33420:6:9", + "nodeType": "VariableDeclaration", + "scope": 3080, + "src": "33405:21:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3075, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "33405:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "33404:23:9" + }, + "scope": 3089, + "src": "33299:673:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3087, + "nodeType": "Block", + "src": "34120:110:9", + "statements": [ + { + "AST": { + "nativeSrc": "34182:42:9", + "nodeType": "YulBlock", + "src": "34182:42:9", + "statements": [ + { + "nativeSrc": "34196:18:9", + "nodeType": "YulAssignment", + "src": "34196:18:9", + "value": { + "kind": "number", + "nativeSrc": "34213:1:9", + "nodeType": "YulLiteral", + "src": "34213:1:9", + "type": "", + "value": "0" + }, + "variableNames": [ + { + "name": "result.length", + "nativeSrc": "34196:13:9", + "nodeType": "YulIdentifier", + "src": "34196:13:9" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3084, + "isOffset": false, + "isSlot": false, + "src": "34196:13:9", + "suffix": "length", + "valueSize": 1 + } + ], + "id": 3086, + "nodeType": "InlineAssembly", + "src": "34173:51:9" + } + ] + }, + "documentation": { + "id": 3081, + "nodeType": "StructuredDocumentation", + "src": "33978:66:9", + "text": "@dev Returns empty calldata bytes. For silencing the compiler." + }, + "id": 3088, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "emptyCalldata", + "nameLocation": "34058:13:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3082, + "nodeType": "ParameterList", + "parameters": [], + "src": "34071:2:9" + }, + "returnParameters": { + "id": 3085, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3084, + "mutability": "mutable", + "name": "result", + "nameLocation": "34112:6:9", + "nodeType": "VariableDeclaration", + "scope": 3088, + "src": "34097:21:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3083, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "34097:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "34096:23:9" + }, + "scope": 3089, + "src": "34049:181:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 3090, + "src": "197:34035:9", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "32:34201:9" + }, + "id": 9 + }, + "solady/utils/LibClone.sol": { + "ast": { + "absolutePath": "solady/utils/LibClone.sol", + "exportedSymbols": { + "LibClone": [ + 5104 + ] + }, + "id": 5105, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3091, + "literals": [ + "solidity", + "^", + "0.8", + ".4" + ], + "nodeType": "PragmaDirective", + "src": "32:23:10" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "LibClone", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 3092, + "nodeType": "StructuredDocumentation", + "src": "57:3699:10", + "text": "@notice Minimal proxy library.\n @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/LibClone.sol)\n @author Minimal proxy by 0age (https://github.com/0age)\n @author Clones with immutable args by wighawag, zefram.eth, Saw-mon & Natalie\n (https://github.com/Saw-mon-and-Natalie/clones-with-immutable-args)\n @author Minimal ERC1967 proxy by jtriley-eth (https://github.com/jtriley-eth/minimum-viable-proxy)\n @dev Minimal proxy:\n Although the sw0nt pattern saves 5 gas over the ERC1167 pattern during runtime,\n it is not supported out-of-the-box on Etherscan. Hence, we choose to use the 0age pattern,\n which saves 4 gas over the ERC1167 pattern during runtime, and has the smallest bytecode.\n - Automatically verified on Etherscan.\n @dev Minimal proxy (PUSH0 variant):\n This is a new minimal proxy that uses the PUSH0 opcode introduced during Shanghai.\n It is optimized first for minimal runtime gas, then for minimal bytecode.\n The PUSH0 clone functions are intentionally postfixed with a jarring \"_PUSH0\" as\n many EVM chains may not support the PUSH0 opcode in the early months after Shanghai.\n Please use with caution.\n - Automatically verified on Etherscan.\n @dev Clones with immutable args (CWIA):\n The implementation of CWIA here does NOT append the immutable args into the calldata\n passed into delegatecall. It is simply an ERC1167 minimal proxy with the immutable arguments\n appended to the back of the runtime bytecode.\n - Uses the identity precompile (0x4) to copy args during deployment.\n @dev Minimal ERC1967 proxy:\n A minimal ERC1967 proxy, intended to be upgraded with UUPS.\n This is NOT the same as ERC1967Factory's transparent proxy, which includes admin logic.\n - Automatically verified on Etherscan.\n @dev Minimal ERC1967 proxy with immutable args:\n - Uses the identity precompile (0x4) to copy args during deployment.\n - Automatically verified on Etherscan.\n @dev ERC1967I proxy:\n A variant of the minimal ERC1967 proxy, with a special code path that activates\n if `calldatasize() == 1`. This code path skips the delegatecall and directly returns the\n `implementation` address. The returned implementation is guaranteed to be valid if the\n keccak256 of the proxy's code is equal to `ERC1967I_CODE_HASH`.\n @dev ERC1967I proxy with immutable args:\n A variant of the minimal ERC1967 proxy, with a special code path that activates\n if `calldatasize() == 1`. This code path skips the delegatecall and directly returns the\n - Uses the identity precompile (0x4) to copy args during deployment.\n @dev Minimal ERC1967 beacon proxy:\n A minimal beacon proxy, intended to be upgraded with an upgradable beacon.\n - Automatically verified on Etherscan.\n @dev Minimal ERC1967 beacon proxy with immutable args:\n - Uses the identity precompile (0x4) to copy args during deployment.\n - Automatically verified on Etherscan.\n @dev ERC1967I beacon proxy:\n A variant of the minimal ERC1967 beacon proxy, with a special code path that activates\n if `calldatasize() == 1`. This code path skips the delegatecall and directly returns the\n `implementation` address. The returned implementation is guaranteed to be valid if the\n keccak256 of the proxy's code is equal to `ERC1967I_CODE_HASH`.\n @dev ERC1967I proxy with immutable args:\n A variant of the minimal ERC1967 beacon proxy, with a special code path that activates\n if `calldatasize() == 1`. This code path skips the delegatecall and directly returns the\n - Uses the identity precompile (0x4) to copy args during deployment." + }, + "fullyImplemented": true, + "id": 5104, + "linearizedBaseContracts": [ + 5104 + ], + "name": "LibClone", + "nameLocation": "3764:8:10", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "documentation": { + "id": 3093, + "nodeType": "StructuredDocumentation", + "src": "4062:113:10", + "text": "@dev The keccak256 of deployed code for the clone proxy,\n with the implementation set to `address(0)`." + }, + "id": 3096, + "mutability": "constant", + "name": "CLONE_CODE_HASH", + "nameLocation": "4206:15:10", + "nodeType": "VariableDeclaration", + "scope": 5104, + "src": "4180:118:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3094, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4180:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307834386462326366646232383533666365306234363466316639336131393936343639343539646633616236633831323130363037346334313036613165623166", + "id": 3095, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4232:66:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_32953775121687815178966905492285762856483655534839352964685488268574961298207_by_1", + "typeString": "int_const 3295...(69 digits omitted)...8207" + }, + "value": "0x48db2cfdb2853fce0b464f1f93a1996469459df3ab6c812106074c4106a1eb1f" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 3097, + "nodeType": "StructuredDocumentation", + "src": "4305:113:10", + "text": "@dev The keccak256 of deployed code for the PUSH0 proxy,\n with the implementation set to `address(0)`." + }, + "id": 3100, + "mutability": "constant", + "name": "PUSH0_CLONE_CODE_HASH", + "nameLocation": "4449:21:10", + "nodeType": "VariableDeclaration", + "scope": 5104, + "src": "4423:124:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3098, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4423:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307836376263366264653162383464363665323637633731386261343463663339323861363135643239383835353337393535636234336434346233653738396463", + "id": 3099, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4481:66:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_46921135127120119055790321133066561721794295594222880073092654593624563485148_by_1", + "typeString": "int_const 4692...(69 digits omitted)...5148" + }, + "value": "0x67bc6bde1b84d66e267c718ba44cf3928a615d29885537955cb43d44b3e789dc" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 3101, + "nodeType": "StructuredDocumentation", + "src": "4554:121:10", + "text": "@dev The keccak256 of deployed code for the ERC-1167 CWIA proxy,\n with the implementation set to `address(0)`." + }, + "id": 3104, + "mutability": "constant", + "name": "CWIA_CODE_HASH", + "nameLocation": "4706:14:10", + "nodeType": "VariableDeclaration", + "scope": 5104, + "src": "4680:117:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3102, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4680:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307833636639323436343236383232356134353133646134306133346439363733353436383463333263643065646436376235663636386466653335353065393430", + "id": 3103, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4731:66:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_27578966997044358645488470518768744668637152609449014031475063678064313559360_by_1", + "typeString": "int_const 2757...(69 digits omitted)...9360" + }, + "value": "0x3cf92464268225a4513da40a34d967354684c32cd0edd67b5f668dfe3550e940" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 3105, + "nodeType": "StructuredDocumentation", + "src": "4804:66:10", + "text": "@dev The keccak256 of the deployed code for the ERC1967 proxy." + }, + "id": 3108, + "mutability": "constant", + "name": "ERC1967_CODE_HASH", + "nameLocation": "4901:17:10", + "nodeType": "VariableDeclaration", + "scope": 5104, + "src": "4875:120:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3106, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4875:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307861616135326338636338613065336664323763653735366363366234653730633531343233653962353937623131663332643365343966386231666338393064", + "id": 3107, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4929:66:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_77185021497204156503765693158949628883174901464818108677459927010977630685453_by_1", + "typeString": "int_const 7718...(69 digits omitted)...5453" + }, + "value": "0xaaa52c8cc8a0e3fd27ce756cc6b4e70c51423e9b597b11f32d3e49f8b1fc890d" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 3109, + "nodeType": "StructuredDocumentation", + "src": "5002:67:10", + "text": "@dev The keccak256 of the deployed code for the ERC1967I proxy." + }, + "id": 3112, + "mutability": "constant", + "name": "ERC1967I_CODE_HASH", + "nameLocation": "5100:18:10", + "nodeType": "VariableDeclaration", + "scope": 5104, + "src": "5074:121:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3110, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5074:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307863653730303232336330643463656134353833343039616363666334356164616334613039336233353139393938613963626265313530346461646261366637", + "id": 3111, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5129:66:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_93374348446806385783963617675677071552231539524766885499178152025851048994551_by_1", + "typeString": "int_const 9337...(69 digits omitted)...4551" + }, + "value": "0xce700223c0d4cea4583409accfc45adac4a093b3519998a9cbbe1504dadba6f7" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 3113, + "nodeType": "StructuredDocumentation", + "src": "5202:73:10", + "text": "@dev The keccak256 of the deployed code for the ERC1967 beacon proxy." + }, + "id": 3116, + "mutability": "constant", + "name": "ERC1967_BEACON_PROXY_CODE_HASH", + "nameLocation": "5306:30:10", + "nodeType": "VariableDeclaration", + "scope": 5104, + "src": "5280:133:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3114, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5280:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307831343034343435396166313762633466306635616132663635386362363932616464373764313330326332396665326165626162303035656561396431313632", + "id": 3115, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5347:66:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_9053796096550691733351246263824737728846953073129913053479247112142852002146_by_1", + "typeString": "int_const 9053...(68 digits omitted)...2146" + }, + "value": "0x14044459af17bc4f0f5aa2f658cb692add77d1302c29fe2aebab005eea9d1162" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 3117, + "nodeType": "StructuredDocumentation", + "src": "5420:73:10", + "text": "@dev The keccak256 of the deployed code for the ERC1967 beacon proxy." + }, + "id": 3120, + "mutability": "constant", + "name": "ERC1967I_BEACON_PROXY_CODE_HASH", + "nameLocation": "5524:31:10", + "nodeType": "VariableDeclaration", + "scope": 5104, + "src": "5498:134:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3118, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5498:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307866386334366432373933643561613938346562383237616561626134623633616564636162383031313932313266636538323733303937383837333535313961", + "id": 3119, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5566:66:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_112520641830705151963982941871809749409489933969190717264161230730867152081306_by_1", + "typeString": "int_const 1125...(70 digits omitted)...1306" + }, + "value": "0xf8c46d2793d5aa984eb827aeaba4b63aedcab80119212fce827309788735519a" + }, + "visibility": "internal" + }, + { + "documentation": { + "id": 3121, + "nodeType": "StructuredDocumentation", + "src": "5922:36:10", + "text": "@dev Unable to deploy the clone." + }, + "errorSelector": "30116425", + "id": 3123, + "name": "DeploymentFailed", + "nameLocation": "5969:16:10", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3122, + "nodeType": "ParameterList", + "parameters": [], + "src": "5985:2:10" + }, + "src": "5963:25:10" + }, + { + "documentation": { + "id": 3124, + "nodeType": "StructuredDocumentation", + "src": "5994:66:10", + "text": "@dev The salt must start with either the zero address or `by`." + }, + "errorSelector": "0c4549ef", + "id": 3126, + "name": "SaltDoesNotStartWith", + "nameLocation": "6071:20:10", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3125, + "nodeType": "ParameterList", + "parameters": [], + "src": "6091:2:10" + }, + "src": "6065:29:10" + }, + { + "documentation": { + "id": 3127, + "nodeType": "StructuredDocumentation", + "src": "6100:37:10", + "text": "@dev The ETH transfer has failed." + }, + "errorSelector": "b12d13eb", + "id": 3129, + "name": "ETHTransferFailed", + "nameLocation": "6148:17:10", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3128, + "nodeType": "ParameterList", + "parameters": [], + "src": "6165:2:10" + }, + "src": "6142:26:10" + }, + { + "body": { + "id": 3144, + "nodeType": "Block", + "src": "6582:52:10", + "statements": [ + { + "expression": { + "id": 3142, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3137, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3135, + "src": "6592:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 3139, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6609:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 3140, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3132, + "src": "6612:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3138, + "name": "clone", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3145, + 3157, + 3364, + 3378 + ], + "referencedDeclaration": 3157, + "src": "6603:5:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$_t_address_$", + "typeString": "function (uint256,address) returns (address)" + } + }, + "id": 3141, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6603:24:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "6592:35:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3143, + "nodeType": "ExpressionStatement", + "src": "6592:35:10" + } + ] + }, + "documentation": { + "id": 3130, + "nodeType": "StructuredDocumentation", + "src": "6457:45:10", + "text": "@dev Deploys a clone of `implementation`." + }, + "id": 3145, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "clone", + "nameLocation": "6516:5:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3133, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3132, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "6530:14:10", + "nodeType": "VariableDeclaration", + "scope": 3145, + "src": "6522:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3131, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6522:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6521:24:10" + }, + "returnParameters": { + "id": 3136, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3135, + "mutability": "mutable", + "name": "instance", + "nameLocation": "6572:8:10", + "nodeType": "VariableDeclaration", + "scope": 3145, + "src": "6564:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3134, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6564:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6563:18:10" + }, + "scope": 5104, + "src": "6507:127:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3156, + "nodeType": "Block", + "src": "6828:5477:10", + "statements": [ + { + "AST": { + "nativeSrc": "6890:5409:10", + "nodeType": "YulBlock", + "src": "6890:5409:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "11857:4:10", + "nodeType": "YulLiteral", + "src": "11857:4:10", + "type": "", + "value": "0x21" + }, + { + "kind": "number", + "nativeSrc": "11863:28:10", + "nodeType": "YulLiteral", + "src": "11863:28:10", + "type": "", + "value": "0x5af43d3d93803e602a57fd5bf3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11850:6:10", + "nodeType": "YulIdentifier", + "src": "11850:6:10" + }, + "nativeSrc": "11850:42:10", + "nodeType": "YulFunctionCall", + "src": "11850:42:10" + }, + "nativeSrc": "11850:42:10", + "nodeType": "YulExpressionStatement", + "src": "11850:42:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "11912:4:10", + "nodeType": "YulLiteral", + "src": "11912:4:10", + "type": "", + "value": "0x14" + }, + { + "name": "implementation", + "nativeSrc": "11918:14:10", + "nodeType": "YulIdentifier", + "src": "11918:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11905:6:10", + "nodeType": "YulIdentifier", + "src": "11905:6:10" + }, + "nativeSrc": "11905:28:10", + "nodeType": "YulFunctionCall", + "src": "11905:28:10" + }, + "nativeSrc": "11905:28:10", + "nodeType": "YulExpressionStatement", + "src": "11905:28:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "11953:4:10", + "nodeType": "YulLiteral", + "src": "11953:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "11959:42:10", + "nodeType": "YulLiteral", + "src": "11959:42:10", + "type": "", + "value": "0x602c3d8160093d39f33d3d3d3d363d3d37363d73" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11946:6:10", + "nodeType": "YulIdentifier", + "src": "11946:6:10" + }, + "nativeSrc": "11946:56:10", + "nodeType": "YulFunctionCall", + "src": "11946:56:10" + }, + "nativeSrc": "11946:56:10", + "nodeType": "YulExpressionStatement", + "src": "11946:56:10" + }, + { + "nativeSrc": "12015:37:10", + "nodeType": "YulAssignment", + "src": "12015:37:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "12034:5:10", + "nodeType": "YulIdentifier", + "src": "12034:5:10" + }, + { + "kind": "number", + "nativeSrc": "12041:4:10", + "nodeType": "YulLiteral", + "src": "12041:4:10", + "type": "", + "value": "0x0c" + }, + { + "kind": "number", + "nativeSrc": "12047:4:10", + "nodeType": "YulLiteral", + "src": "12047:4:10", + "type": "", + "value": "0x35" + } + ], + "functionName": { + "name": "create", + "nativeSrc": "12027:6:10", + "nodeType": "YulIdentifier", + "src": "12027:6:10" + }, + "nativeSrc": "12027:25:10", + "nodeType": "YulFunctionCall", + "src": "12027:25:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "12015:8:10", + "nodeType": "YulIdentifier", + "src": "12015:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "12085:116:10", + "nodeType": "YulBlock", + "src": "12085:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12110:4:10", + "nodeType": "YulLiteral", + "src": "12110:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "12116:10:10", + "nodeType": "YulLiteral", + "src": "12116:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12103:6:10", + "nodeType": "YulIdentifier", + "src": "12103:6:10" + }, + "nativeSrc": "12103:24:10", + "nodeType": "YulFunctionCall", + "src": "12103:24:10" + }, + "nativeSrc": "12103:24:10", + "nodeType": "YulExpressionStatement", + "src": "12103:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12176:4:10", + "nodeType": "YulLiteral", + "src": "12176:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "12182:4:10", + "nodeType": "YulLiteral", + "src": "12182:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "12169:6:10", + "nodeType": "YulIdentifier", + "src": "12169:6:10" + }, + "nativeSrc": "12169:18:10", + "nodeType": "YulFunctionCall", + "src": "12169:18:10" + }, + "nativeSrc": "12169:18:10", + "nodeType": "YulExpressionStatement", + "src": "12169:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "12075:8:10", + "nodeType": "YulIdentifier", + "src": "12075:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "12068:6:10", + "nodeType": "YulIdentifier", + "src": "12068:6:10" + }, + "nativeSrc": "12068:16:10", + "nodeType": "YulFunctionCall", + "src": "12068:16:10" + }, + "nativeSrc": "12065:136:10", + "nodeType": "YulIf", + "src": "12065:136:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12221:4:10", + "nodeType": "YulLiteral", + "src": "12221:4:10", + "type": "", + "value": "0x21" + }, + { + "kind": "number", + "nativeSrc": "12227:1:10", + "nodeType": "YulLiteral", + "src": "12227:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12214:6:10", + "nodeType": "YulIdentifier", + "src": "12214:6:10" + }, + "nativeSrc": "12214:15:10", + "nodeType": "YulFunctionCall", + "src": "12214:15:10" + }, + "nativeSrc": "12214:15:10", + "nodeType": "YulExpressionStatement", + "src": "12214:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3150, + "isOffset": false, + "isSlot": false, + "src": "11918:14:10", + "valueSize": 1 + }, + { + "declaration": 3153, + "isOffset": false, + "isSlot": false, + "src": "12015:8:10", + "valueSize": 1 + }, + { + "declaration": 3153, + "isOffset": false, + "isSlot": false, + "src": "12075:8:10", + "valueSize": 1 + }, + { + "declaration": 3148, + "isOffset": false, + "isSlot": false, + "src": "12034:5:10", + "valueSize": 1 + } + ], + "id": 3155, + "nodeType": "InlineAssembly", + "src": "6881:5418:10" + } + ] + }, + "documentation": { + "id": 3146, + "nodeType": "StructuredDocumentation", + "src": "6640:93:10", + "text": "@dev Deploys a clone of `implementation`.\n Deposits `value` ETH during deployment." + }, + "id": 3157, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "clone", + "nameLocation": "6747:5:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3151, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3148, + "mutability": "mutable", + "name": "value", + "nameLocation": "6761:5:10", + "nodeType": "VariableDeclaration", + "scope": 3157, + "src": "6753:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3147, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6753:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3150, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "6776:14:10", + "nodeType": "VariableDeclaration", + "scope": 3157, + "src": "6768:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3149, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6768:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6752:39:10" + }, + "returnParameters": { + "id": 3154, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3153, + "mutability": "mutable", + "name": "instance", + "nameLocation": "6818:8:10", + "nodeType": "VariableDeclaration", + "scope": 3157, + "src": "6810:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3152, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6810:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6809:18:10" + }, + "scope": 5104, + "src": "6738:5567:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3175, + "nodeType": "Block", + "src": "12509:71:10", + "statements": [ + { + "expression": { + "id": 3173, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3167, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3165, + "src": "12519:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 3169, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12549:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 3170, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3160, + "src": "12552:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3171, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3162, + "src": "12568:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3168, + "name": "cloneDeterministic", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3176, + 3190, + 3400, + 3416 + ], + "referencedDeclaration": 3190, + "src": "12530:18:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (uint256,address,bytes32) returns (address)" + } + }, + "id": 3172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12530:43:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "12519:54:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3174, + "nodeType": "ExpressionStatement", + "src": "12519:54:10" + } + ] + }, + "documentation": { + "id": 3158, + "nodeType": "StructuredDocumentation", + "src": "12311:71:10", + "text": "@dev Deploys a deterministic clone of `implementation` with `salt`." + }, + "id": 3176, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "cloneDeterministic", + "nameLocation": "12396:18:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3163, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3160, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "12423:14:10", + "nodeType": "VariableDeclaration", + "scope": 3176, + "src": "12415:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3159, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12415:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3162, + "mutability": "mutable", + "name": "salt", + "nameLocation": "12447:4:10", + "nodeType": "VariableDeclaration", + "scope": 3176, + "src": "12439:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3161, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12439:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "12414:38:10" + }, + "returnParameters": { + "id": 3166, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3165, + "mutability": "mutable", + "name": "instance", + "nameLocation": "12495:8:10", + "nodeType": "VariableDeclaration", + "scope": 3176, + "src": "12487:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3164, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12487:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "12486:18:10" + }, + "scope": 5104, + "src": "12387:193:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3189, + "nodeType": "Block", + "src": "12847:538:10", + "statements": [ + { + "AST": { + "nativeSrc": "12909:470:10", + "nodeType": "YulBlock", + "src": "12909:470:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12930:4:10", + "nodeType": "YulLiteral", + "src": "12930:4:10", + "type": "", + "value": "0x21" + }, + { + "kind": "number", + "nativeSrc": "12936:28:10", + "nodeType": "YulLiteral", + "src": "12936:28:10", + "type": "", + "value": "0x5af43d3d93803e602a57fd5bf3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12923:6:10", + "nodeType": "YulIdentifier", + "src": "12923:6:10" + }, + "nativeSrc": "12923:42:10", + "nodeType": "YulFunctionCall", + "src": "12923:42:10" + }, + "nativeSrc": "12923:42:10", + "nodeType": "YulExpressionStatement", + "src": "12923:42:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12985:4:10", + "nodeType": "YulLiteral", + "src": "12985:4:10", + "type": "", + "value": "0x14" + }, + { + "name": "implementation", + "nativeSrc": "12991:14:10", + "nodeType": "YulIdentifier", + "src": "12991:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12978:6:10", + "nodeType": "YulIdentifier", + "src": "12978:6:10" + }, + "nativeSrc": "12978:28:10", + "nodeType": "YulFunctionCall", + "src": "12978:28:10" + }, + "nativeSrc": "12978:28:10", + "nodeType": "YulExpressionStatement", + "src": "12978:28:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13026:4:10", + "nodeType": "YulLiteral", + "src": "13026:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "13032:42:10", + "nodeType": "YulLiteral", + "src": "13032:42:10", + "type": "", + "value": "0x602c3d8160093d39f33d3d3d3d363d3d37363d73" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13019:6:10", + "nodeType": "YulIdentifier", + "src": "13019:6:10" + }, + "nativeSrc": "13019:56:10", + "nodeType": "YulFunctionCall", + "src": "13019:56:10" + }, + "nativeSrc": "13019:56:10", + "nodeType": "YulExpressionStatement", + "src": "13019:56:10" + }, + { + "nativeSrc": "13088:44:10", + "nodeType": "YulAssignment", + "src": "13088:44:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "13108:5:10", + "nodeType": "YulIdentifier", + "src": "13108:5:10" + }, + { + "kind": "number", + "nativeSrc": "13115:4:10", + "nodeType": "YulLiteral", + "src": "13115:4:10", + "type": "", + "value": "0x0c" + }, + { + "kind": "number", + "nativeSrc": "13121:4:10", + "nodeType": "YulLiteral", + "src": "13121:4:10", + "type": "", + "value": "0x35" + }, + { + "name": "salt", + "nativeSrc": "13127:4:10", + "nodeType": "YulIdentifier", + "src": "13127:4:10" + } + ], + "functionName": { + "name": "create2", + "nativeSrc": "13100:7:10", + "nodeType": "YulIdentifier", + "src": "13100:7:10" + }, + "nativeSrc": "13100:32:10", + "nodeType": "YulFunctionCall", + "src": "13100:32:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "13088:8:10", + "nodeType": "YulIdentifier", + "src": "13088:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "13165:116:10", + "nodeType": "YulBlock", + "src": "13165:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13190:4:10", + "nodeType": "YulLiteral", + "src": "13190:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "13196:10:10", + "nodeType": "YulLiteral", + "src": "13196:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13183:6:10", + "nodeType": "YulIdentifier", + "src": "13183:6:10" + }, + "nativeSrc": "13183:24:10", + "nodeType": "YulFunctionCall", + "src": "13183:24:10" + }, + "nativeSrc": "13183:24:10", + "nodeType": "YulExpressionStatement", + "src": "13183:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13256:4:10", + "nodeType": "YulLiteral", + "src": "13256:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "13262:4:10", + "nodeType": "YulLiteral", + "src": "13262:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "13249:6:10", + "nodeType": "YulIdentifier", + "src": "13249:6:10" + }, + "nativeSrc": "13249:18:10", + "nodeType": "YulFunctionCall", + "src": "13249:18:10" + }, + "nativeSrc": "13249:18:10", + "nodeType": "YulExpressionStatement", + "src": "13249:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "13155:8:10", + "nodeType": "YulIdentifier", + "src": "13155:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "13148:6:10", + "nodeType": "YulIdentifier", + "src": "13148:6:10" + }, + "nativeSrc": "13148:16:10", + "nodeType": "YulFunctionCall", + "src": "13148:16:10" + }, + "nativeSrc": "13145:136:10", + "nodeType": "YulIf", + "src": "13145:136:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13301:4:10", + "nodeType": "YulLiteral", + "src": "13301:4:10", + "type": "", + "value": "0x21" + }, + { + "kind": "number", + "nativeSrc": "13307:1:10", + "nodeType": "YulLiteral", + "src": "13307:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13294:6:10", + "nodeType": "YulIdentifier", + "src": "13294:6:10" + }, + "nativeSrc": "13294:15:10", + "nodeType": "YulFunctionCall", + "src": "13294:15:10" + }, + "nativeSrc": "13294:15:10", + "nodeType": "YulExpressionStatement", + "src": "13294:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3181, + "isOffset": false, + "isSlot": false, + "src": "12991:14:10", + "valueSize": 1 + }, + { + "declaration": 3186, + "isOffset": false, + "isSlot": false, + "src": "13088:8:10", + "valueSize": 1 + }, + { + "declaration": 3186, + "isOffset": false, + "isSlot": false, + "src": "13155:8:10", + "valueSize": 1 + }, + { + "declaration": 3183, + "isOffset": false, + "isSlot": false, + "src": "13127:4:10", + "valueSize": 1 + }, + { + "declaration": 3179, + "isOffset": false, + "isSlot": false, + "src": "13108:5:10", + "valueSize": 1 + } + ], + "id": 3188, + "nodeType": "InlineAssembly", + "src": "12900:479:10" + } + ] + }, + "documentation": { + "id": 3177, + "nodeType": "StructuredDocumentation", + "src": "12586:119:10", + "text": "@dev Deploys a deterministic clone of `implementation` with `salt`.\n Deposits `value` ETH during deployment." + }, + "id": 3190, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "cloneDeterministic", + "nameLocation": "12719:18:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3184, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3179, + "mutability": "mutable", + "name": "value", + "nameLocation": "12746:5:10", + "nodeType": "VariableDeclaration", + "scope": 3190, + "src": "12738:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3178, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12738:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3181, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "12761:14:10", + "nodeType": "VariableDeclaration", + "scope": 3190, + "src": "12753:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3180, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12753:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3183, + "mutability": "mutable", + "name": "salt", + "nameLocation": "12785:4:10", + "nodeType": "VariableDeclaration", + "scope": 3190, + "src": "12777:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3182, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12777:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "12737:53:10" + }, + "returnParameters": { + "id": 3187, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3186, + "mutability": "mutable", + "name": "instance", + "nameLocation": "12833:8:10", + "nodeType": "VariableDeclaration", + "scope": 3190, + "src": "12825:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3185, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12825:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "12824:18:10" + }, + "scope": 5104, + "src": "12710:675:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3199, + "nodeType": "Block", + "src": "13551:427:10", + "statements": [ + { + "AST": { + "nativeSrc": "13613:359:10", + "nodeType": "YulBlock", + "src": "13613:359:10", + "statements": [ + { + "nativeSrc": "13627:16:10", + "nodeType": "YulAssignment", + "src": "13627:16:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13638:4:10", + "nodeType": "YulLiteral", + "src": "13638:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "13632:5:10", + "nodeType": "YulIdentifier", + "src": "13632:5:10" + }, + "nativeSrc": "13632:11:10", + "nodeType": "YulFunctionCall", + "src": "13632:11:10" + }, + "variableNames": [ + { + "name": "c", + "nativeSrc": "13627:1:10", + "nodeType": "YulIdentifier", + "src": "13627:1:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "13667:1:10", + "nodeType": "YulIdentifier", + "src": "13667:1:10" + }, + { + "kind": "number", + "nativeSrc": "13670:4:10", + "nodeType": "YulLiteral", + "src": "13670:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13663:3:10", + "nodeType": "YulIdentifier", + "src": "13663:3:10" + }, + "nativeSrc": "13663:12:10", + "nodeType": "YulFunctionCall", + "src": "13663:12:10" + }, + { + "kind": "number", + "nativeSrc": "13677:50:10", + "nodeType": "YulLiteral", + "src": "13677:50:10", + "type": "", + "value": "0x5af43d3d93803e602a57fd5bf30000000000000000000000" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13656:6:10", + "nodeType": "YulIdentifier", + "src": "13656:6:10" + }, + "nativeSrc": "13656:72:10", + "nodeType": "YulFunctionCall", + "src": "13656:72:10" + }, + "nativeSrc": "13656:72:10", + "nodeType": "YulExpressionStatement", + "src": "13656:72:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "13752:1:10", + "nodeType": "YulIdentifier", + "src": "13752:1:10" + }, + { + "kind": "number", + "nativeSrc": "13755:4:10", + "nodeType": "YulLiteral", + "src": "13755:4:10", + "type": "", + "value": "0x28" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13748:3:10", + "nodeType": "YulIdentifier", + "src": "13748:3:10" + }, + "nativeSrc": "13748:12:10", + "nodeType": "YulFunctionCall", + "src": "13748:12:10" + }, + { + "name": "implementation", + "nativeSrc": "13762:14:10", + "nodeType": "YulIdentifier", + "src": "13762:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13741:6:10", + "nodeType": "YulIdentifier", + "src": "13741:6:10" + }, + "nativeSrc": "13741:36:10", + "nodeType": "YulFunctionCall", + "src": "13741:36:10" + }, + "nativeSrc": "13741:36:10", + "nodeType": "YulExpressionStatement", + "src": "13741:36:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "13801:1:10", + "nodeType": "YulIdentifier", + "src": "13801:1:10" + }, + { + "kind": "number", + "nativeSrc": "13804:4:10", + "nodeType": "YulLiteral", + "src": "13804:4:10", + "type": "", + "value": "0x14" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13797:3:10", + "nodeType": "YulIdentifier", + "src": "13797:3:10" + }, + "nativeSrc": "13797:12:10", + "nodeType": "YulFunctionCall", + "src": "13797:12:10" + }, + { + "kind": "number", + "nativeSrc": "13811:42:10", + "nodeType": "YulLiteral", + "src": "13811:42:10", + "type": "", + "value": "0x602c3d8160093d39f33d3d3d3d363d3d37363d73" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13790:6:10", + "nodeType": "YulIdentifier", + "src": "13790:6:10" + }, + "nativeSrc": "13790:64:10", + "nodeType": "YulFunctionCall", + "src": "13790:64:10" + }, + "nativeSrc": "13790:64:10", + "nodeType": "YulExpressionStatement", + "src": "13790:64:10" + }, + { + "expression": { + "arguments": [ + { + "name": "c", + "nativeSrc": "13874:1:10", + "nodeType": "YulIdentifier", + "src": "13874:1:10" + }, + { + "kind": "number", + "nativeSrc": "13877:4:10", + "nodeType": "YulLiteral", + "src": "13877:4:10", + "type": "", + "value": "0x35" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13867:6:10", + "nodeType": "YulIdentifier", + "src": "13867:6:10" + }, + "nativeSrc": "13867:15:10", + "nodeType": "YulFunctionCall", + "src": "13867:15:10" + }, + "nativeSrc": "13867:15:10", + "nodeType": "YulExpressionStatement", + "src": "13867:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13923:4:10", + "nodeType": "YulLiteral", + "src": "13923:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "c", + "nativeSrc": "13933:1:10", + "nodeType": "YulIdentifier", + "src": "13933:1:10" + }, + { + "kind": "number", + "nativeSrc": "13936:4:10", + "nodeType": "YulLiteral", + "src": "13936:4:10", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13929:3:10", + "nodeType": "YulIdentifier", + "src": "13929:3:10" + }, + "nativeSrc": "13929:12:10", + "nodeType": "YulFunctionCall", + "src": "13929:12:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13916:6:10", + "nodeType": "YulIdentifier", + "src": "13916:6:10" + }, + "nativeSrc": "13916:26:10", + "nodeType": "YulFunctionCall", + "src": "13916:26:10" + }, + "nativeSrc": "13916:26:10", + "nodeType": "YulExpressionStatement", + "src": "13916:26:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3196, + "isOffset": false, + "isSlot": false, + "src": "13627:1:10", + "valueSize": 1 + }, + { + "declaration": 3196, + "isOffset": false, + "isSlot": false, + "src": "13667:1:10", + "valueSize": 1 + }, + { + "declaration": 3196, + "isOffset": false, + "isSlot": false, + "src": "13752:1:10", + "valueSize": 1 + }, + { + "declaration": 3196, + "isOffset": false, + "isSlot": false, + "src": "13801:1:10", + "valueSize": 1 + }, + { + "declaration": 3196, + "isOffset": false, + "isSlot": false, + "src": "13874:1:10", + "valueSize": 1 + }, + { + "declaration": 3196, + "isOffset": false, + "isSlot": false, + "src": "13933:1:10", + "valueSize": 1 + }, + { + "declaration": 3193, + "isOffset": false, + "isSlot": false, + "src": "13762:14:10", + "valueSize": 1 + } + ], + "id": 3198, + "nodeType": "InlineAssembly", + "src": "13604:368:10" + } + ] + }, + "documentation": { + "id": 3191, + "nodeType": "StructuredDocumentation", + "src": "13391:74:10", + "text": "@dev Returns the initialization code of the clone of `implementation`." + }, + "id": 3200, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCode", + "nameLocation": "13479:8:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3194, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3193, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "13496:14:10", + "nodeType": "VariableDeclaration", + "scope": 3200, + "src": "13488:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3192, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13488:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "13487:24:10" + }, + "returnParameters": { + "id": 3197, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3196, + "mutability": "mutable", + "name": "c", + "nameLocation": "13548:1:10", + "nodeType": "VariableDeclaration", + "scope": 3200, + "src": "13535:14:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3195, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "13535:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "13534:16:10" + }, + "scope": 5104, + "src": "13470:508:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3209, + "nodeType": "Block", + "src": "14151:374:10", + "statements": [ + { + "AST": { + "nativeSrc": "14213:306:10", + "nodeType": "YulBlock", + "src": "14213:306:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14234:4:10", + "nodeType": "YulLiteral", + "src": "14234:4:10", + "type": "", + "value": "0x21" + }, + { + "kind": "number", + "nativeSrc": "14240:28:10", + "nodeType": "YulLiteral", + "src": "14240:28:10", + "type": "", + "value": "0x5af43d3d93803e602a57fd5bf3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "14227:6:10", + "nodeType": "YulIdentifier", + "src": "14227:6:10" + }, + "nativeSrc": "14227:42:10", + "nodeType": "YulFunctionCall", + "src": "14227:42:10" + }, + "nativeSrc": "14227:42:10", + "nodeType": "YulExpressionStatement", + "src": "14227:42:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14289:4:10", + "nodeType": "YulLiteral", + "src": "14289:4:10", + "type": "", + "value": "0x14" + }, + { + "name": "implementation", + "nativeSrc": "14295:14:10", + "nodeType": "YulIdentifier", + "src": "14295:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "14282:6:10", + "nodeType": "YulIdentifier", + "src": "14282:6:10" + }, + "nativeSrc": "14282:28:10", + "nodeType": "YulFunctionCall", + "src": "14282:28:10" + }, + "nativeSrc": "14282:28:10", + "nodeType": "YulExpressionStatement", + "src": "14282:28:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14330:4:10", + "nodeType": "YulLiteral", + "src": "14330:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "14336:42:10", + "nodeType": "YulLiteral", + "src": "14336:42:10", + "type": "", + "value": "0x602c3d8160093d39f33d3d3d3d363d3d37363d73" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "14323:6:10", + "nodeType": "YulIdentifier", + "src": "14323:6:10" + }, + "nativeSrc": "14323:56:10", + "nodeType": "YulFunctionCall", + "src": "14323:56:10" + }, + "nativeSrc": "14323:56:10", + "nodeType": "YulExpressionStatement", + "src": "14323:56:10" + }, + { + "nativeSrc": "14392:29:10", + "nodeType": "YulAssignment", + "src": "14392:29:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14410:4:10", + "nodeType": "YulLiteral", + "src": "14410:4:10", + "type": "", + "value": "0x0c" + }, + { + "kind": "number", + "nativeSrc": "14416:4:10", + "nodeType": "YulLiteral", + "src": "14416:4:10", + "type": "", + "value": "0x35" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "14400:9:10", + "nodeType": "YulIdentifier", + "src": "14400:9:10" + }, + "nativeSrc": "14400:21:10", + "nodeType": "YulFunctionCall", + "src": "14400:21:10" + }, + "variableNames": [ + { + "name": "hash", + "nativeSrc": "14392:4:10", + "nodeType": "YulIdentifier", + "src": "14392:4:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14441:4:10", + "nodeType": "YulLiteral", + "src": "14441:4:10", + "type": "", + "value": "0x21" + }, + { + "kind": "number", + "nativeSrc": "14447:1:10", + "nodeType": "YulLiteral", + "src": "14447:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "14434:6:10", + "nodeType": "YulIdentifier", + "src": "14434:6:10" + }, + "nativeSrc": "14434:15:10", + "nodeType": "YulFunctionCall", + "src": "14434:15:10" + }, + "nativeSrc": "14434:15:10", + "nodeType": "YulExpressionStatement", + "src": "14434:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3206, + "isOffset": false, + "isSlot": false, + "src": "14392:4:10", + "valueSize": 1 + }, + { + "declaration": 3203, + "isOffset": false, + "isSlot": false, + "src": "14295:14:10", + "valueSize": 1 + } + ], + "id": 3208, + "nodeType": "InlineAssembly", + "src": "14204:315:10" + } + ] + }, + "documentation": { + "id": 3201, + "nodeType": "StructuredDocumentation", + "src": "13984:79:10", + "text": "@dev Returns the initialization code hash of the clone of `implementation`." + }, + "id": 3210, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeHash", + "nameLocation": "14077:12:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3204, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3203, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "14098:14:10", + "nodeType": "VariableDeclaration", + "scope": 3210, + "src": "14090:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3202, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14090:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "14089:24:10" + }, + "returnParameters": { + "id": 3207, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3206, + "mutability": "mutable", + "name": "hash", + "nameLocation": "14145:4:10", + "nodeType": "VariableDeclaration", + "scope": 3210, + "src": "14137:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3205, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14137:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "14136:14:10" + }, + "scope": 5104, + "src": "14068:457:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3236, + "nodeType": "Block", + "src": "14881:131:10", + "statements": [ + { + "assignments": [ + 3223 + ], + "declarations": [ + { + "constant": false, + "id": 3223, + "mutability": "mutable", + "name": "hash", + "nameLocation": "14899:4:10", + "nodeType": "VariableDeclaration", + "scope": 3236, + "src": "14891:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3222, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14891:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 3227, + "initialValue": { + "arguments": [ + { + "id": 3225, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3213, + "src": "14919:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3224, + "name": "initCodeHash", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3210, + 3480 + ], + "referencedDeclaration": 3210, + "src": "14906:12:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_bytes32_$", + "typeString": "function (address) pure returns (bytes32)" + } + }, + "id": 3226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14906:28:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14891:43:10" + }, + { + "expression": { + "id": 3234, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3228, + "name": "predicted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3220, + "src": "14944:9:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3230, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3223, + "src": "14984:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 3231, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3215, + "src": "14990:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 3232, + "name": "deployer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3217, + "src": "14996:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3229, + "name": "predictDeterministicAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3237, + 3510, + 5081 + ], + "referencedDeclaration": 5081, + "src": "14956:27:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_address_$", + "typeString": "function (bytes32,bytes32,address) pure returns (address)" + } + }, + "id": 3233, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14956:49:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "14944:61:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3235, + "nodeType": "ExpressionStatement", + "src": "14944:61:10" + } + ] + }, + "documentation": { + "id": 3211, + "nodeType": "StructuredDocumentation", + "src": "14531:182:10", + "text": "@dev Returns the address of the clone of `implementation`, with `salt` by `deployer`.\n Note: The returned result has dirty upper 96 bits. Please clean if used in assembly." + }, + "id": 3237, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "predictDeterministicAddress", + "nameLocation": "14727:27:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3218, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3213, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "14763:14:10", + "nodeType": "VariableDeclaration", + "scope": 3237, + "src": "14755:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3212, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14755:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3215, + "mutability": "mutable", + "name": "salt", + "nameLocation": "14787:4:10", + "nodeType": "VariableDeclaration", + "scope": 3237, + "src": "14779:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3214, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14779:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3217, + "mutability": "mutable", + "name": "deployer", + "nameLocation": "14801:8:10", + "nodeType": "VariableDeclaration", + "scope": 3237, + "src": "14793:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3216, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14793:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "14754:56:10" + }, + "returnParameters": { + "id": 3221, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3220, + "mutability": "mutable", + "name": "predicted", + "nameLocation": "14866:9:10", + "nodeType": "VariableDeclaration", + "scope": 3237, + "src": "14858:17:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3219, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14858:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "14857:19:10" + }, + "scope": 5104, + "src": "14718:294:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3252, + "nodeType": "Block", + "src": "15438:58:10", + "statements": [ + { + "expression": { + "id": 3250, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3245, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3243, + "src": "15448:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 3247, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15471:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 3248, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3240, + "src": "15474:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3246, + "name": "clone_PUSH0", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3253, + 3265 + ], + "referencedDeclaration": 3265, + "src": "15459:11:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$_t_address_$", + "typeString": "function (uint256,address) returns (address)" + } + }, + "id": 3249, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15459:30:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "15448:41:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3251, + "nodeType": "ExpressionStatement", + "src": "15448:41:10" + } + ] + }, + "documentation": { + "id": 3238, + "nodeType": "StructuredDocumentation", + "src": "15301:51:10", + "text": "@dev Deploys a PUSH0 clone of `implementation`." + }, + "id": 3253, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "clone_PUSH0", + "nameLocation": "15366:11:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3241, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3240, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "15386:14:10", + "nodeType": "VariableDeclaration", + "scope": 3253, + "src": "15378:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3239, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15378:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "15377:24:10" + }, + "returnParameters": { + "id": 3244, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3243, + "mutability": "mutable", + "name": "instance", + "nameLocation": "15428:8:10", + "nodeType": "VariableDeclaration", + "scope": 3253, + "src": "15420:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3242, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15420:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "15419:18:10" + }, + "scope": 5104, + "src": "15357:139:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3264, + "nodeType": "Block", + "src": "15722:5591:10", + "statements": [ + { + "AST": { + "nativeSrc": "15784:5523:10", + "nodeType": "YulBlock", + "src": "15784:5523:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20842:4:10", + "nodeType": "YulLiteral", + "src": "20842:4:10", + "type": "", + "value": "0x24" + }, + { + "kind": "number", + "nativeSrc": "20848:34:10", + "nodeType": "YulLiteral", + "src": "20848:34:10", + "type": "", + "value": "0x5af43d5f5f3e6029573d5ffd5b3d5ff3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "20835:6:10", + "nodeType": "YulIdentifier", + "src": "20835:6:10" + }, + "nativeSrc": "20835:48:10", + "nodeType": "YulFunctionCall", + "src": "20835:48:10" + }, + "nativeSrc": "20835:48:10", + "nodeType": "YulExpressionStatement", + "src": "20835:48:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20909:4:10", + "nodeType": "YulLiteral", + "src": "20909:4:10", + "type": "", + "value": "0x14" + }, + { + "name": "implementation", + "nativeSrc": "20915:14:10", + "nodeType": "YulIdentifier", + "src": "20915:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "20902:6:10", + "nodeType": "YulIdentifier", + "src": "20902:6:10" + }, + "nativeSrc": "20902:28:10", + "nodeType": "YulFunctionCall", + "src": "20902:28:10" + }, + "nativeSrc": "20902:28:10", + "nodeType": "YulExpressionStatement", + "src": "20902:28:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20956:4:10", + "nodeType": "YulLiteral", + "src": "20956:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "20962:38:10", + "nodeType": "YulLiteral", + "src": "20962:38:10", + "type": "", + "value": "0x602d5f8160095f39f35f5f365f5f37365f73" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "20949:6:10", + "nodeType": "YulIdentifier", + "src": "20949:6:10" + }, + "nativeSrc": "20949:52:10", + "nodeType": "YulFunctionCall", + "src": "20949:52:10" + }, + "nativeSrc": "20949:52:10", + "nodeType": "YulExpressionStatement", + "src": "20949:52:10" + }, + { + "nativeSrc": "21023:37:10", + "nodeType": "YulAssignment", + "src": "21023:37:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "21042:5:10", + "nodeType": "YulIdentifier", + "src": "21042:5:10" + }, + { + "kind": "number", + "nativeSrc": "21049:4:10", + "nodeType": "YulLiteral", + "src": "21049:4:10", + "type": "", + "value": "0x0e" + }, + { + "kind": "number", + "nativeSrc": "21055:4:10", + "nodeType": "YulLiteral", + "src": "21055:4:10", + "type": "", + "value": "0x36" + } + ], + "functionName": { + "name": "create", + "nativeSrc": "21035:6:10", + "nodeType": "YulIdentifier", + "src": "21035:6:10" + }, + "nativeSrc": "21035:25:10", + "nodeType": "YulFunctionCall", + "src": "21035:25:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "21023:8:10", + "nodeType": "YulIdentifier", + "src": "21023:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "21093:116:10", + "nodeType": "YulBlock", + "src": "21093:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21118:4:10", + "nodeType": "YulLiteral", + "src": "21118:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "21124:10:10", + "nodeType": "YulLiteral", + "src": "21124:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "21111:6:10", + "nodeType": "YulIdentifier", + "src": "21111:6:10" + }, + "nativeSrc": "21111:24:10", + "nodeType": "YulFunctionCall", + "src": "21111:24:10" + }, + "nativeSrc": "21111:24:10", + "nodeType": "YulExpressionStatement", + "src": "21111:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21184:4:10", + "nodeType": "YulLiteral", + "src": "21184:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "21190:4:10", + "nodeType": "YulLiteral", + "src": "21190:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "21177:6:10", + "nodeType": "YulIdentifier", + "src": "21177:6:10" + }, + "nativeSrc": "21177:18:10", + "nodeType": "YulFunctionCall", + "src": "21177:18:10" + }, + "nativeSrc": "21177:18:10", + "nodeType": "YulExpressionStatement", + "src": "21177:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "21083:8:10", + "nodeType": "YulIdentifier", + "src": "21083:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "21076:6:10", + "nodeType": "YulIdentifier", + "src": "21076:6:10" + }, + "nativeSrc": "21076:16:10", + "nodeType": "YulFunctionCall", + "src": "21076:16:10" + }, + "nativeSrc": "21073:136:10", + "nodeType": "YulIf", + "src": "21073:136:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21229:4:10", + "nodeType": "YulLiteral", + "src": "21229:4:10", + "type": "", + "value": "0x24" + }, + { + "kind": "number", + "nativeSrc": "21235:1:10", + "nodeType": "YulLiteral", + "src": "21235:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "21222:6:10", + "nodeType": "YulIdentifier", + "src": "21222:6:10" + }, + "nativeSrc": "21222:15:10", + "nodeType": "YulFunctionCall", + "src": "21222:15:10" + }, + "nativeSrc": "21222:15:10", + "nodeType": "YulExpressionStatement", + "src": "21222:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3258, + "isOffset": false, + "isSlot": false, + "src": "20915:14:10", + "valueSize": 1 + }, + { + "declaration": 3261, + "isOffset": false, + "isSlot": false, + "src": "21023:8:10", + "valueSize": 1 + }, + { + "declaration": 3261, + "isOffset": false, + "isSlot": false, + "src": "21083:8:10", + "valueSize": 1 + }, + { + "declaration": 3256, + "isOffset": false, + "isSlot": false, + "src": "21042:5:10", + "valueSize": 1 + } + ], + "id": 3263, + "nodeType": "InlineAssembly", + "src": "15775:5532:10" + } + ] + }, + "documentation": { + "id": 3254, + "nodeType": "StructuredDocumentation", + "src": "15502:99:10", + "text": "@dev Deploys a PUSH0 clone of `implementation`.\n Deposits `value` ETH during deployment." + }, + "id": 3265, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "clone_PUSH0", + "nameLocation": "15615:11:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3259, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3256, + "mutability": "mutable", + "name": "value", + "nameLocation": "15635:5:10", + "nodeType": "VariableDeclaration", + "scope": 3265, + "src": "15627:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3255, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15627:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3258, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "15650:14:10", + "nodeType": "VariableDeclaration", + "scope": 3265, + "src": "15642:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3257, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15642:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "15626:39:10" + }, + "returnParameters": { + "id": 3262, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3261, + "mutability": "mutable", + "name": "instance", + "nameLocation": "15708:8:10", + "nodeType": "VariableDeclaration", + "scope": 3265, + "src": "15700:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3260, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15700:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "15699:18:10" + }, + "scope": 5104, + "src": "15606:5707:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3283, + "nodeType": "Block", + "src": "21529:77:10", + "statements": [ + { + "expression": { + "id": 3281, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3275, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3273, + "src": "21539:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 3277, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21575:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 3278, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3268, + "src": "21578:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3279, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3270, + "src": "21594:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3276, + "name": "cloneDeterministic_PUSH0", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3284, + 3298 + ], + "referencedDeclaration": 3298, + "src": "21550:24:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (uint256,address,bytes32) returns (address)" + } + }, + "id": 3280, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21550:49:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "21539:60:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3282, + "nodeType": "ExpressionStatement", + "src": "21539:60:10" + } + ] + }, + "documentation": { + "id": 3266, + "nodeType": "StructuredDocumentation", + "src": "21319:77:10", + "text": "@dev Deploys a deterministic PUSH0 clone of `implementation` with `salt`." + }, + "id": 3284, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "cloneDeterministic_PUSH0", + "nameLocation": "21410:24:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3271, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3268, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "21443:14:10", + "nodeType": "VariableDeclaration", + "scope": 3284, + "src": "21435:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3267, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21435:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3270, + "mutability": "mutable", + "name": "salt", + "nameLocation": "21467:4:10", + "nodeType": "VariableDeclaration", + "scope": 3284, + "src": "21459:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3269, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "21459:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "21434:38:10" + }, + "returnParameters": { + "id": 3274, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3273, + "mutability": "mutable", + "name": "instance", + "nameLocation": "21515:8:10", + "nodeType": "VariableDeclaration", + "scope": 3284, + "src": "21507:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3272, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21507:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "21506:18:10" + }, + "scope": 5104, + "src": "21401:205:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3297, + "nodeType": "Block", + "src": "21885:561:10", + "statements": [ + { + "AST": { + "nativeSrc": "21947:493:10", + "nodeType": "YulBlock", + "src": "21947:493:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21968:4:10", + "nodeType": "YulLiteral", + "src": "21968:4:10", + "type": "", + "value": "0x24" + }, + { + "kind": "number", + "nativeSrc": "21974:34:10", + "nodeType": "YulLiteral", + "src": "21974:34:10", + "type": "", + "value": "0x5af43d5f5f3e6029573d5ffd5b3d5ff3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "21961:6:10", + "nodeType": "YulIdentifier", + "src": "21961:6:10" + }, + "nativeSrc": "21961:48:10", + "nodeType": "YulFunctionCall", + "src": "21961:48:10" + }, + "nativeSrc": "21961:48:10", + "nodeType": "YulExpressionStatement", + "src": "21961:48:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22035:4:10", + "nodeType": "YulLiteral", + "src": "22035:4:10", + "type": "", + "value": "0x14" + }, + { + "name": "implementation", + "nativeSrc": "22041:14:10", + "nodeType": "YulIdentifier", + "src": "22041:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22028:6:10", + "nodeType": "YulIdentifier", + "src": "22028:6:10" + }, + "nativeSrc": "22028:28:10", + "nodeType": "YulFunctionCall", + "src": "22028:28:10" + }, + "nativeSrc": "22028:28:10", + "nodeType": "YulExpressionStatement", + "src": "22028:28:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22082:4:10", + "nodeType": "YulLiteral", + "src": "22082:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "22088:38:10", + "nodeType": "YulLiteral", + "src": "22088:38:10", + "type": "", + "value": "0x602d5f8160095f39f35f5f365f5f37365f73" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22075:6:10", + "nodeType": "YulIdentifier", + "src": "22075:6:10" + }, + "nativeSrc": "22075:52:10", + "nodeType": "YulFunctionCall", + "src": "22075:52:10" + }, + "nativeSrc": "22075:52:10", + "nodeType": "YulExpressionStatement", + "src": "22075:52:10" + }, + { + "nativeSrc": "22149:44:10", + "nodeType": "YulAssignment", + "src": "22149:44:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "22169:5:10", + "nodeType": "YulIdentifier", + "src": "22169:5:10" + }, + { + "kind": "number", + "nativeSrc": "22176:4:10", + "nodeType": "YulLiteral", + "src": "22176:4:10", + "type": "", + "value": "0x0e" + }, + { + "kind": "number", + "nativeSrc": "22182:4:10", + "nodeType": "YulLiteral", + "src": "22182:4:10", + "type": "", + "value": "0x36" + }, + { + "name": "salt", + "nativeSrc": "22188:4:10", + "nodeType": "YulIdentifier", + "src": "22188:4:10" + } + ], + "functionName": { + "name": "create2", + "nativeSrc": "22161:7:10", + "nodeType": "YulIdentifier", + "src": "22161:7:10" + }, + "nativeSrc": "22161:32:10", + "nodeType": "YulFunctionCall", + "src": "22161:32:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "22149:8:10", + "nodeType": "YulIdentifier", + "src": "22149:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "22226:116:10", + "nodeType": "YulBlock", + "src": "22226:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22251:4:10", + "nodeType": "YulLiteral", + "src": "22251:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "22257:10:10", + "nodeType": "YulLiteral", + "src": "22257:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22244:6:10", + "nodeType": "YulIdentifier", + "src": "22244:6:10" + }, + "nativeSrc": "22244:24:10", + "nodeType": "YulFunctionCall", + "src": "22244:24:10" + }, + "nativeSrc": "22244:24:10", + "nodeType": "YulExpressionStatement", + "src": "22244:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22317:4:10", + "nodeType": "YulLiteral", + "src": "22317:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "22323:4:10", + "nodeType": "YulLiteral", + "src": "22323:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "22310:6:10", + "nodeType": "YulIdentifier", + "src": "22310:6:10" + }, + "nativeSrc": "22310:18:10", + "nodeType": "YulFunctionCall", + "src": "22310:18:10" + }, + "nativeSrc": "22310:18:10", + "nodeType": "YulExpressionStatement", + "src": "22310:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "22216:8:10", + "nodeType": "YulIdentifier", + "src": "22216:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "22209:6:10", + "nodeType": "YulIdentifier", + "src": "22209:6:10" + }, + "nativeSrc": "22209:16:10", + "nodeType": "YulFunctionCall", + "src": "22209:16:10" + }, + "nativeSrc": "22206:136:10", + "nodeType": "YulIf", + "src": "22206:136:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22362:4:10", + "nodeType": "YulLiteral", + "src": "22362:4:10", + "type": "", + "value": "0x24" + }, + { + "kind": "number", + "nativeSrc": "22368:1:10", + "nodeType": "YulLiteral", + "src": "22368:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22355:6:10", + "nodeType": "YulIdentifier", + "src": "22355:6:10" + }, + "nativeSrc": "22355:15:10", + "nodeType": "YulFunctionCall", + "src": "22355:15:10" + }, + "nativeSrc": "22355:15:10", + "nodeType": "YulExpressionStatement", + "src": "22355:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3289, + "isOffset": false, + "isSlot": false, + "src": "22041:14:10", + "valueSize": 1 + }, + { + "declaration": 3294, + "isOffset": false, + "isSlot": false, + "src": "22149:8:10", + "valueSize": 1 + }, + { + "declaration": 3294, + "isOffset": false, + "isSlot": false, + "src": "22216:8:10", + "valueSize": 1 + }, + { + "declaration": 3291, + "isOffset": false, + "isSlot": false, + "src": "22188:4:10", + "valueSize": 1 + }, + { + "declaration": 3287, + "isOffset": false, + "isSlot": false, + "src": "22169:5:10", + "valueSize": 1 + } + ], + "id": 3296, + "nodeType": "InlineAssembly", + "src": "21938:502:10" + } + ] + }, + "documentation": { + "id": 3285, + "nodeType": "StructuredDocumentation", + "src": "21612:125:10", + "text": "@dev Deploys a deterministic PUSH0 clone of `implementation` with `salt`.\n Deposits `value` ETH during deployment." + }, + "id": 3298, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "cloneDeterministic_PUSH0", + "nameLocation": "21751:24:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3292, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3287, + "mutability": "mutable", + "name": "value", + "nameLocation": "21784:5:10", + "nodeType": "VariableDeclaration", + "scope": 3298, + "src": "21776:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3286, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21776:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3289, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "21799:14:10", + "nodeType": "VariableDeclaration", + "scope": 3298, + "src": "21791:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3288, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21791:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3291, + "mutability": "mutable", + "name": "salt", + "nameLocation": "21823:4:10", + "nodeType": "VariableDeclaration", + "scope": 3298, + "src": "21815:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3290, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "21815:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "21775:53:10" + }, + "returnParameters": { + "id": 3295, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3294, + "mutability": "mutable", + "name": "instance", + "nameLocation": "21871:8:10", + "nodeType": "VariableDeclaration", + "scope": 3298, + "src": "21863:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3293, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21863:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "21862:18:10" + }, + "scope": 5104, + "src": "21742:704:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3307, + "nodeType": "Block", + "src": "22624:448:10", + "statements": [ + { + "AST": { + "nativeSrc": "22686:380:10", + "nodeType": "YulBlock", + "src": "22686:380:10", + "statements": [ + { + "nativeSrc": "22700:16:10", + "nodeType": "YulAssignment", + "src": "22700:16:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22711:4:10", + "nodeType": "YulLiteral", + "src": "22711:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "22705:5:10", + "nodeType": "YulIdentifier", + "src": "22705:5:10" + }, + "nativeSrc": "22705:11:10", + "nodeType": "YulFunctionCall", + "src": "22705:11:10" + }, + "variableNames": [ + { + "name": "c", + "nativeSrc": "22700:1:10", + "nodeType": "YulIdentifier", + "src": "22700:1:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "22740:1:10", + "nodeType": "YulIdentifier", + "src": "22740:1:10" + }, + { + "kind": "number", + "nativeSrc": "22743:4:10", + "nodeType": "YulLiteral", + "src": "22743:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22736:3:10", + "nodeType": "YulIdentifier", + "src": "22736:3:10" + }, + "nativeSrc": "22736:12:10", + "nodeType": "YulFunctionCall", + "src": "22736:12:10" + }, + { + "kind": "number", + "nativeSrc": "22750:54:10", + "nodeType": "YulLiteral", + "src": "22750:54:10", + "type": "", + "value": "0x5af43d5f5f3e6029573d5ffd5b3d5ff300000000000000000000" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22729:6:10", + "nodeType": "YulIdentifier", + "src": "22729:6:10" + }, + "nativeSrc": "22729:76:10", + "nodeType": "YulFunctionCall", + "src": "22729:76:10" + }, + "nativeSrc": "22729:76:10", + "nodeType": "YulExpressionStatement", + "src": "22729:76:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "22835:1:10", + "nodeType": "YulIdentifier", + "src": "22835:1:10" + }, + { + "kind": "number", + "nativeSrc": "22838:4:10", + "nodeType": "YulLiteral", + "src": "22838:4:10", + "type": "", + "value": "0x26" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22831:3:10", + "nodeType": "YulIdentifier", + "src": "22831:3:10" + }, + "nativeSrc": "22831:12:10", + "nodeType": "YulFunctionCall", + "src": "22831:12:10" + }, + { + "name": "implementation", + "nativeSrc": "22845:14:10", + "nodeType": "YulIdentifier", + "src": "22845:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22824:6:10", + "nodeType": "YulIdentifier", + "src": "22824:6:10" + }, + "nativeSrc": "22824:36:10", + "nodeType": "YulFunctionCall", + "src": "22824:36:10" + }, + "nativeSrc": "22824:36:10", + "nodeType": "YulExpressionStatement", + "src": "22824:36:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "22890:1:10", + "nodeType": "YulIdentifier", + "src": "22890:1:10" + }, + { + "kind": "number", + "nativeSrc": "22893:4:10", + "nodeType": "YulLiteral", + "src": "22893:4:10", + "type": "", + "value": "0x12" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22886:3:10", + "nodeType": "YulIdentifier", + "src": "22886:3:10" + }, + "nativeSrc": "22886:12:10", + "nodeType": "YulFunctionCall", + "src": "22886:12:10" + }, + { + "kind": "number", + "nativeSrc": "22900:38:10", + "nodeType": "YulLiteral", + "src": "22900:38:10", + "type": "", + "value": "0x602d5f8160095f39f35f5f365f5f37365f73" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22879:6:10", + "nodeType": "YulIdentifier", + "src": "22879:6:10" + }, + "nativeSrc": "22879:60:10", + "nodeType": "YulFunctionCall", + "src": "22879:60:10" + }, + "nativeSrc": "22879:60:10", + "nodeType": "YulExpressionStatement", + "src": "22879:60:10" + }, + { + "expression": { + "arguments": [ + { + "name": "c", + "nativeSrc": "22968:1:10", + "nodeType": "YulIdentifier", + "src": "22968:1:10" + }, + { + "kind": "number", + "nativeSrc": "22971:4:10", + "nodeType": "YulLiteral", + "src": "22971:4:10", + "type": "", + "value": "0x36" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22961:6:10", + "nodeType": "YulIdentifier", + "src": "22961:6:10" + }, + "nativeSrc": "22961:15:10", + "nodeType": "YulFunctionCall", + "src": "22961:15:10" + }, + "nativeSrc": "22961:15:10", + "nodeType": "YulExpressionStatement", + "src": "22961:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23017:4:10", + "nodeType": "YulLiteral", + "src": "23017:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "c", + "nativeSrc": "23027:1:10", + "nodeType": "YulIdentifier", + "src": "23027:1:10" + }, + { + "kind": "number", + "nativeSrc": "23030:4:10", + "nodeType": "YulLiteral", + "src": "23030:4:10", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23023:3:10", + "nodeType": "YulIdentifier", + "src": "23023:3:10" + }, + "nativeSrc": "23023:12:10", + "nodeType": "YulFunctionCall", + "src": "23023:12:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "23010:6:10", + "nodeType": "YulIdentifier", + "src": "23010:6:10" + }, + "nativeSrc": "23010:26:10", + "nodeType": "YulFunctionCall", + "src": "23010:26:10" + }, + "nativeSrc": "23010:26:10", + "nodeType": "YulExpressionStatement", + "src": "23010:26:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3304, + "isOffset": false, + "isSlot": false, + "src": "22700:1:10", + "valueSize": 1 + }, + { + "declaration": 3304, + "isOffset": false, + "isSlot": false, + "src": "22740:1:10", + "valueSize": 1 + }, + { + "declaration": 3304, + "isOffset": false, + "isSlot": false, + "src": "22835:1:10", + "valueSize": 1 + }, + { + "declaration": 3304, + "isOffset": false, + "isSlot": false, + "src": "22890:1:10", + "valueSize": 1 + }, + { + "declaration": 3304, + "isOffset": false, + "isSlot": false, + "src": "22968:1:10", + "valueSize": 1 + }, + { + "declaration": 3304, + "isOffset": false, + "isSlot": false, + "src": "23027:1:10", + "valueSize": 1 + }, + { + "declaration": 3301, + "isOffset": false, + "isSlot": false, + "src": "22845:14:10", + "valueSize": 1 + } + ], + "id": 3306, + "nodeType": "InlineAssembly", + "src": "22677:389:10" + } + ] + }, + "documentation": { + "id": 3299, + "nodeType": "StructuredDocumentation", + "src": "22452:80:10", + "text": "@dev Returns the initialization code of the PUSH0 clone of `implementation`." + }, + "id": 3308, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCode_PUSH0", + "nameLocation": "22546:14:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3302, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3301, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "22569:14:10", + "nodeType": "VariableDeclaration", + "scope": 3308, + "src": "22561:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3300, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "22561:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "22560:24:10" + }, + "returnParameters": { + "id": 3305, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3304, + "mutability": "mutable", + "name": "c", + "nameLocation": "22621:1:10", + "nodeType": "VariableDeclaration", + "scope": 3308, + "src": "22608:14:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3303, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "22608:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "22607:16:10" + }, + "scope": 5104, + "src": "22537:535:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3317, + "nodeType": "Block", + "src": "23257:397:10", + "statements": [ + { + "AST": { + "nativeSrc": "23319:329:10", + "nodeType": "YulBlock", + "src": "23319:329:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23340:4:10", + "nodeType": "YulLiteral", + "src": "23340:4:10", + "type": "", + "value": "0x24" + }, + { + "kind": "number", + "nativeSrc": "23346:34:10", + "nodeType": "YulLiteral", + "src": "23346:34:10", + "type": "", + "value": "0x5af43d5f5f3e6029573d5ffd5b3d5ff3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "23333:6:10", + "nodeType": "YulIdentifier", + "src": "23333:6:10" + }, + "nativeSrc": "23333:48:10", + "nodeType": "YulFunctionCall", + "src": "23333:48:10" + }, + "nativeSrc": "23333:48:10", + "nodeType": "YulExpressionStatement", + "src": "23333:48:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23407:4:10", + "nodeType": "YulLiteral", + "src": "23407:4:10", + "type": "", + "value": "0x14" + }, + { + "name": "implementation", + "nativeSrc": "23413:14:10", + "nodeType": "YulIdentifier", + "src": "23413:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "23400:6:10", + "nodeType": "YulIdentifier", + "src": "23400:6:10" + }, + "nativeSrc": "23400:28:10", + "nodeType": "YulFunctionCall", + "src": "23400:28:10" + }, + "nativeSrc": "23400:28:10", + "nodeType": "YulExpressionStatement", + "src": "23400:28:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23454:4:10", + "nodeType": "YulLiteral", + "src": "23454:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "23460:38:10", + "nodeType": "YulLiteral", + "src": "23460:38:10", + "type": "", + "value": "0x602d5f8160095f39f35f5f365f5f37365f73" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "23447:6:10", + "nodeType": "YulIdentifier", + "src": "23447:6:10" + }, + "nativeSrc": "23447:52:10", + "nodeType": "YulFunctionCall", + "src": "23447:52:10" + }, + "nativeSrc": "23447:52:10", + "nodeType": "YulExpressionStatement", + "src": "23447:52:10" + }, + { + "nativeSrc": "23521:29:10", + "nodeType": "YulAssignment", + "src": "23521:29:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23539:4:10", + "nodeType": "YulLiteral", + "src": "23539:4:10", + "type": "", + "value": "0x0e" + }, + { + "kind": "number", + "nativeSrc": "23545:4:10", + "nodeType": "YulLiteral", + "src": "23545:4:10", + "type": "", + "value": "0x36" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "23529:9:10", + "nodeType": "YulIdentifier", + "src": "23529:9:10" + }, + "nativeSrc": "23529:21:10", + "nodeType": "YulFunctionCall", + "src": "23529:21:10" + }, + "variableNames": [ + { + "name": "hash", + "nativeSrc": "23521:4:10", + "nodeType": "YulIdentifier", + "src": "23521:4:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23570:4:10", + "nodeType": "YulLiteral", + "src": "23570:4:10", + "type": "", + "value": "0x24" + }, + { + "kind": "number", + "nativeSrc": "23576:1:10", + "nodeType": "YulLiteral", + "src": "23576:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "23563:6:10", + "nodeType": "YulIdentifier", + "src": "23563:6:10" + }, + "nativeSrc": "23563:15:10", + "nodeType": "YulFunctionCall", + "src": "23563:15:10" + }, + "nativeSrc": "23563:15:10", + "nodeType": "YulExpressionStatement", + "src": "23563:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3314, + "isOffset": false, + "isSlot": false, + "src": "23521:4:10", + "valueSize": 1 + }, + { + "declaration": 3311, + "isOffset": false, + "isSlot": false, + "src": "23413:14:10", + "valueSize": 1 + } + ], + "id": 3316, + "nodeType": "InlineAssembly", + "src": "23310:338:10" + } + ] + }, + "documentation": { + "id": 3309, + "nodeType": "StructuredDocumentation", + "src": "23078:85:10", + "text": "@dev Returns the initialization code hash of the PUSH0 clone of `implementation`." + }, + "id": 3318, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeHash_PUSH0", + "nameLocation": "23177:18:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3312, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3311, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "23204:14:10", + "nodeType": "VariableDeclaration", + "scope": 3318, + "src": "23196:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3310, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "23196:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "23195:24:10" + }, + "returnParameters": { + "id": 3315, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3314, + "mutability": "mutable", + "name": "hash", + "nameLocation": "23251:4:10", + "nodeType": "VariableDeclaration", + "scope": 3318, + "src": "23243:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3313, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "23243:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "23242:14:10" + }, + "scope": 5104, + "src": "23168:486:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3344, + "nodeType": "Block", + "src": "24024:137:10", + "statements": [ + { + "assignments": [ + 3331 + ], + "declarations": [ + { + "constant": false, + "id": 3331, + "mutability": "mutable", + "name": "hash", + "nameLocation": "24042:4:10", + "nodeType": "VariableDeclaration", + "scope": 3344, + "src": "24034:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3330, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "24034:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 3335, + "initialValue": { + "arguments": [ + { + "id": 3333, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3321, + "src": "24068:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3332, + "name": "initCodeHash_PUSH0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3318, + "src": "24049:18:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_bytes32_$", + "typeString": "function (address) pure returns (bytes32)" + } + }, + "id": 3334, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24049:34:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "24034:49:10" + }, + { + "expression": { + "id": 3342, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3336, + "name": "predicted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3328, + "src": "24093:9:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3338, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3331, + "src": "24133:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 3339, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3323, + "src": "24139:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 3340, + "name": "deployer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3325, + "src": "24145:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3337, + "name": "predictDeterministicAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3237, + 3510, + 5081 + ], + "referencedDeclaration": 5081, + "src": "24105:27:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_address_$", + "typeString": "function (bytes32,bytes32,address) pure returns (address)" + } + }, + "id": 3341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24105:49:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "24093:61:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3343, + "nodeType": "ExpressionStatement", + "src": "24093:61:10" + } + ] + }, + "documentation": { + "id": 3319, + "nodeType": "StructuredDocumentation", + "src": "23660:188:10", + "text": "@dev Returns the address of the PUSH0 clone of `implementation`, with `salt` by `deployer`.\n Note: The returned result has dirty upper 96 bits. Please clean if used in assembly." + }, + "id": 3345, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "predictDeterministicAddress_PUSH0", + "nameLocation": "23862:33:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3326, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3321, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "23913:14:10", + "nodeType": "VariableDeclaration", + "scope": 3345, + "src": "23905:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3320, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "23905:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3323, + "mutability": "mutable", + "name": "salt", + "nameLocation": "23945:4:10", + "nodeType": "VariableDeclaration", + "scope": 3345, + "src": "23937:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3322, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "23937:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3325, + "mutability": "mutable", + "name": "deployer", + "nameLocation": "23967:8:10", + "nodeType": "VariableDeclaration", + "scope": 3345, + "src": "23959:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3324, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "23959:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "23895:86:10" + }, + "returnParameters": { + "id": 3329, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3328, + "mutability": "mutable", + "name": "predicted", + "nameLocation": "24013:9:10", + "nodeType": "VariableDeclaration", + "scope": 3345, + "src": "24005:17:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3327, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24005:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "24004:19:10" + }, + "scope": 5104, + "src": "23853:308:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3363, + "nodeType": "Block", + "src": "24637:58:10", + "statements": [ + { + "expression": { + "id": 3361, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3355, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3353, + "src": "24647:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 3357, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24664:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 3358, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3348, + "src": "24667:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3359, + "name": "args", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3350, + "src": "24683:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 3356, + "name": "clone", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3145, + 3157, + 3364, + 3378 + ], + "referencedDeclaration": 3378, + "src": "24658:5:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$", + "typeString": "function (uint256,address,bytes memory) returns (address)" + } + }, + "id": 3360, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24658:30:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "24647:41:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3362, + "nodeType": "ExpressionStatement", + "src": "24647:41:10" + } + ] + }, + "documentation": { + "id": 3346, + "nodeType": "StructuredDocumentation", + "src": "24450:88:10", + "text": "@dev Deploys a clone of `implementation` with immutable arguments encoded in `args`." + }, + "id": 3364, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "clone", + "nameLocation": "24552:5:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3351, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3348, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "24566:14:10", + "nodeType": "VariableDeclaration", + "scope": 3364, + "src": "24558:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3347, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24558:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3350, + "mutability": "mutable", + "name": "args", + "nameLocation": "24595:4:10", + "nodeType": "VariableDeclaration", + "scope": 3364, + "src": "24582:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3349, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "24582:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "24557:43:10" + }, + "returnParameters": { + "id": 3354, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3353, + "mutability": "mutable", + "name": "instance", + "nameLocation": "24627:8:10", + "nodeType": "VariableDeclaration", + "scope": 3364, + "src": "24619:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3352, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24619:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "24618:18:10" + }, + "scope": 5104, + "src": "24543:152:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3377, + "nodeType": "Block", + "src": "24971:5652:10", + "statements": [ + { + "AST": { + "nativeSrc": "25033:5584:10", + "nodeType": "YulBlock", + "src": "25033:5584:10", + "statements": [ + { + "nativeSrc": "29955:20:10", + "nodeType": "YulVariableDeclaration", + "src": "29955:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "29970:4:10", + "nodeType": "YulLiteral", + "src": "29970:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "29964:5:10", + "nodeType": "YulIdentifier", + "src": "29964:5:10" + }, + "nativeSrc": "29964:11:10", + "nodeType": "YulFunctionCall", + "src": "29964:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "29959:1:10", + "nodeType": "YulTypedName", + "src": "29959:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "29988:20:10", + "nodeType": "YulVariableDeclaration", + "src": "29988:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "30003:4:10", + "nodeType": "YulIdentifier", + "src": "30003:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "29997:5:10", + "nodeType": "YulIdentifier", + "src": "29997:5:10" + }, + "nativeSrc": "29997:11:10", + "nodeType": "YulFunctionCall", + "src": "29997:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "29992:1:10", + "nodeType": "YulTypedName", + "src": "29992:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "30036:3:10", + "nodeType": "YulIdentifier", + "src": "30036:3:10" + }, + "nativeSrc": "30036:5:10", + "nodeType": "YulFunctionCall", + "src": "30036:5:10" + }, + { + "kind": "number", + "nativeSrc": "30043:1:10", + "nodeType": "YulLiteral", + "src": "30043:1:10", + "type": "", + "value": "4" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "30050:4:10", + "nodeType": "YulIdentifier", + "src": "30050:4:10" + }, + { + "kind": "number", + "nativeSrc": "30056:4:10", + "nodeType": "YulLiteral", + "src": "30056:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30046:3:10", + "nodeType": "YulIdentifier", + "src": "30046:3:10" + }, + "nativeSrc": "30046:15:10", + "nodeType": "YulFunctionCall", + "src": "30046:15:10" + }, + { + "name": "n", + "nativeSrc": "30063:1:10", + "nodeType": "YulIdentifier", + "src": "30063:1:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "30070:1:10", + "nodeType": "YulIdentifier", + "src": "30070:1:10" + }, + { + "kind": "number", + "nativeSrc": "30073:4:10", + "nodeType": "YulLiteral", + "src": "30073:4:10", + "type": "", + "value": "0x43" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30066:3:10", + "nodeType": "YulIdentifier", + "src": "30066:3:10" + }, + "nativeSrc": "30066:12:10", + "nodeType": "YulFunctionCall", + "src": "30066:12:10" + }, + { + "name": "n", + "nativeSrc": "30080:1:10", + "nodeType": "YulIdentifier", + "src": "30080:1:10" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "30025:10:10", + "nodeType": "YulIdentifier", + "src": "30025:10:10" + }, + "nativeSrc": "30025:57:10", + "nodeType": "YulFunctionCall", + "src": "30025:57:10" + } + ], + "functionName": { + "name": "pop", + "nativeSrc": "30021:3:10", + "nodeType": "YulIdentifier", + "src": "30021:3:10" + }, + "nativeSrc": "30021:62:10", + "nodeType": "YulFunctionCall", + "src": "30021:62:10" + }, + "nativeSrc": "30021:62:10", + "nodeType": "YulExpressionStatement", + "src": "30021:62:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "30107:1:10", + "nodeType": "YulIdentifier", + "src": "30107:1:10" + }, + { + "kind": "number", + "nativeSrc": "30110:4:10", + "nodeType": "YulLiteral", + "src": "30110:4:10", + "type": "", + "value": "0x23" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30103:3:10", + "nodeType": "YulIdentifier", + "src": "30103:3:10" + }, + "nativeSrc": "30103:12:10", + "nodeType": "YulFunctionCall", + "src": "30103:12:10" + }, + { + "kind": "number", + "nativeSrc": "30117:32:10", + "nodeType": "YulLiteral", + "src": "30117:32:10", + "type": "", + "value": "0x5af43d82803e903d91602b57fd5bf3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "30096:6:10", + "nodeType": "YulIdentifier", + "src": "30096:6:10" + }, + "nativeSrc": "30096:54:10", + "nodeType": "YulFunctionCall", + "src": "30096:54:10" + }, + "nativeSrc": "30096:54:10", + "nodeType": "YulExpressionStatement", + "src": "30096:54:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "30174:1:10", + "nodeType": "YulIdentifier", + "src": "30174:1:10" + }, + { + "kind": "number", + "nativeSrc": "30177:4:10", + "nodeType": "YulLiteral", + "src": "30177:4:10", + "type": "", + "value": "0x14" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30170:3:10", + "nodeType": "YulIdentifier", + "src": "30170:3:10" + }, + "nativeSrc": "30170:12:10", + "nodeType": "YulFunctionCall", + "src": "30170:12:10" + }, + { + "name": "implementation", + "nativeSrc": "30184:14:10", + "nodeType": "YulIdentifier", + "src": "30184:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "30163:6:10", + "nodeType": "YulIdentifier", + "src": "30163:6:10" + }, + "nativeSrc": "30163:36:10", + "nodeType": "YulFunctionCall", + "src": "30163:36:10" + }, + "nativeSrc": "30163:36:10", + "nodeType": "YulExpressionStatement", + "src": "30163:36:10" + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "30219:1:10", + "nodeType": "YulIdentifier", + "src": "30219:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30226:44:10", + "nodeType": "YulLiteral", + "src": "30226:44:10", + "type": "", + "value": "0xfe61002d3d81600a3d39f3363d3d373d3d3d363d73" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30276:3:10", + "nodeType": "YulLiteral", + "src": "30276:3:10", + "type": "", + "value": "136" + }, + { + "name": "n", + "nativeSrc": "30281:1:10", + "nodeType": "YulIdentifier", + "src": "30281:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "30272:3:10", + "nodeType": "YulIdentifier", + "src": "30272:3:10" + }, + "nativeSrc": "30272:11:10", + "nodeType": "YulFunctionCall", + "src": "30272:11:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30222:3:10", + "nodeType": "YulIdentifier", + "src": "30222:3:10" + }, + "nativeSrc": "30222:62:10", + "nodeType": "YulFunctionCall", + "src": "30222:62:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "30212:6:10", + "nodeType": "YulIdentifier", + "src": "30212:6:10" + }, + "nativeSrc": "30212:73:10", + "nodeType": "YulFunctionCall", + "src": "30212:73:10" + }, + "nativeSrc": "30212:73:10", + "nodeType": "YulExpressionStatement", + "src": "30212:73:10" + }, + { + "nativeSrc": "30385:73:10", + "nodeType": "YulAssignment", + "src": "30385:73:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "30404:5:10", + "nodeType": "YulIdentifier", + "src": "30404:5:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "30415:1:10", + "nodeType": "YulIdentifier", + "src": "30415:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30422:4:10", + "nodeType": "YulLiteral", + "src": "30422:4:10", + "type": "", + "value": "0x0b" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "30431:1:10", + "nodeType": "YulIdentifier", + "src": "30431:1:10" + }, + { + "kind": "number", + "nativeSrc": "30434:6:10", + "nodeType": "YulLiteral", + "src": "30434:6:10", + "type": "", + "value": "0xffd3" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "30428:2:10", + "nodeType": "YulIdentifier", + "src": "30428:2:10" + }, + "nativeSrc": "30428:13:10", + "nodeType": "YulFunctionCall", + "src": "30428:13:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30418:3:10", + "nodeType": "YulIdentifier", + "src": "30418:3:10" + }, + "nativeSrc": "30418:24:10", + "nodeType": "YulFunctionCall", + "src": "30418:24:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30411:3:10", + "nodeType": "YulIdentifier", + "src": "30411:3:10" + }, + "nativeSrc": "30411:32:10", + "nodeType": "YulFunctionCall", + "src": "30411:32:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "30449:1:10", + "nodeType": "YulIdentifier", + "src": "30449:1:10" + }, + { + "kind": "number", + "nativeSrc": "30452:4:10", + "nodeType": "YulLiteral", + "src": "30452:4:10", + "type": "", + "value": "0x37" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30445:3:10", + "nodeType": "YulIdentifier", + "src": "30445:3:10" + }, + "nativeSrc": "30445:12:10", + "nodeType": "YulFunctionCall", + "src": "30445:12:10" + } + ], + "functionName": { + "name": "create", + "nativeSrc": "30397:6:10", + "nodeType": "YulIdentifier", + "src": "30397:6:10" + }, + "nativeSrc": "30397:61:10", + "nodeType": "YulFunctionCall", + "src": "30397:61:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "30385:8:10", + "nodeType": "YulIdentifier", + "src": "30385:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "30491:116:10", + "nodeType": "YulBlock", + "src": "30491:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30516:4:10", + "nodeType": "YulLiteral", + "src": "30516:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "30522:10:10", + "nodeType": "YulLiteral", + "src": "30522:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "30509:6:10", + "nodeType": "YulIdentifier", + "src": "30509:6:10" + }, + "nativeSrc": "30509:24:10", + "nodeType": "YulFunctionCall", + "src": "30509:24:10" + }, + "nativeSrc": "30509:24:10", + "nodeType": "YulExpressionStatement", + "src": "30509:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30582:4:10", + "nodeType": "YulLiteral", + "src": "30582:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "30588:4:10", + "nodeType": "YulLiteral", + "src": "30588:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "30575:6:10", + "nodeType": "YulIdentifier", + "src": "30575:6:10" + }, + "nativeSrc": "30575:18:10", + "nodeType": "YulFunctionCall", + "src": "30575:18:10" + }, + "nativeSrc": "30575:18:10", + "nodeType": "YulExpressionStatement", + "src": "30575:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "30481:8:10", + "nodeType": "YulIdentifier", + "src": "30481:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "30474:6:10", + "nodeType": "YulIdentifier", + "src": "30474:6:10" + }, + "nativeSrc": "30474:16:10", + "nodeType": "YulFunctionCall", + "src": "30474:16:10" + }, + "nativeSrc": "30471:136:10", + "nodeType": "YulIf", + "src": "30471:136:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3371, + "isOffset": false, + "isSlot": false, + "src": "30003:4:10", + "valueSize": 1 + }, + { + "declaration": 3371, + "isOffset": false, + "isSlot": false, + "src": "30050:4:10", + "valueSize": 1 + }, + { + "declaration": 3369, + "isOffset": false, + "isSlot": false, + "src": "30184:14:10", + "valueSize": 1 + }, + { + "declaration": 3374, + "isOffset": false, + "isSlot": false, + "src": "30385:8:10", + "valueSize": 1 + }, + { + "declaration": 3374, + "isOffset": false, + "isSlot": false, + "src": "30481:8:10", + "valueSize": 1 + }, + { + "declaration": 3367, + "isOffset": false, + "isSlot": false, + "src": "30404:5:10", + "valueSize": 1 + } + ], + "id": 3376, + "nodeType": "InlineAssembly", + "src": "25024:5593:10" + } + ] + }, + "documentation": { + "id": 3365, + "nodeType": "StructuredDocumentation", + "src": "24701:136:10", + "text": "@dev Deploys a clone of `implementation` with immutable arguments encoded in `args`.\n Deposits `value` ETH during deployment." + }, + "id": 3378, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "clone", + "nameLocation": "24851:5:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3372, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3367, + "mutability": "mutable", + "name": "value", + "nameLocation": "24865:5:10", + "nodeType": "VariableDeclaration", + "scope": 3378, + "src": "24857:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3366, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "24857:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3369, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "24880:14:10", + "nodeType": "VariableDeclaration", + "scope": 3378, + "src": "24872:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3368, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24872:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3371, + "mutability": "mutable", + "name": "args", + "nameLocation": "24909:4:10", + "nodeType": "VariableDeclaration", + "scope": 3378, + "src": "24896:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3370, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "24896:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "24856:58:10" + }, + "returnParameters": { + "id": 3375, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3374, + "mutability": "mutable", + "name": "instance", + "nameLocation": "24957:8:10", + "nodeType": "VariableDeclaration", + "scope": 3378, + "src": "24949:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3373, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24949:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "24948:18:10" + }, + "scope": 5104, + "src": "24842:5781:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3399, + "nodeType": "Block", + "src": "30896:77:10", + "statements": [ + { + "expression": { + "id": 3397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3390, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3388, + "src": "30906:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 3392, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30936:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 3393, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3381, + "src": "30939:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3394, + "name": "args", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3383, + "src": "30955:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 3395, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3385, + "src": "30961:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3391, + "name": "cloneDeterministic", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3176, + 3190, + 3400, + 3416 + ], + "referencedDeclaration": 3416, + "src": "30917:18:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (uint256,address,bytes memory,bytes32) returns (address)" + } + }, + "id": 3396, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "30917:49:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "30906:60:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3398, + "nodeType": "ExpressionStatement", + "src": "30906:60:10" + } + ] + }, + "documentation": { + "id": 3379, + "nodeType": "StructuredDocumentation", + "src": "30629:121:10", + "text": "@dev Deploys a deterministic clone of `implementation`\n with immutable arguments encoded in `args` and `salt`." + }, + "id": 3400, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "cloneDeterministic", + "nameLocation": "30764:18:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3386, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3381, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "30791:14:10", + "nodeType": "VariableDeclaration", + "scope": 3400, + "src": "30783:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3380, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "30783:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3383, + "mutability": "mutable", + "name": "args", + "nameLocation": "30820:4:10", + "nodeType": "VariableDeclaration", + "scope": 3400, + "src": "30807:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3382, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "30807:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3385, + "mutability": "mutable", + "name": "salt", + "nameLocation": "30834:4:10", + "nodeType": "VariableDeclaration", + "scope": 3400, + "src": "30826:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3384, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "30826:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "30782:57:10" + }, + "returnParameters": { + "id": 3389, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3388, + "mutability": "mutable", + "name": "instance", + "nameLocation": "30882:8:10", + "nodeType": "VariableDeclaration", + "scope": 3400, + "src": "30874:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3387, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "30874:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "30873:18:10" + }, + "scope": 5104, + "src": "30755:218:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3415, + "nodeType": "Block", + "src": "31279:751:10", + "statements": [ + { + "AST": { + "nativeSrc": "31341:683:10", + "nodeType": "YulBlock", + "src": "31341:683:10", + "statements": [ + { + "nativeSrc": "31355:20:10", + "nodeType": "YulVariableDeclaration", + "src": "31355:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "31370:4:10", + "nodeType": "YulLiteral", + "src": "31370:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "31364:5:10", + "nodeType": "YulIdentifier", + "src": "31364:5:10" + }, + "nativeSrc": "31364:11:10", + "nodeType": "YulFunctionCall", + "src": "31364:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "31359:1:10", + "nodeType": "YulTypedName", + "src": "31359:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "31388:20:10", + "nodeType": "YulVariableDeclaration", + "src": "31388:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "31403:4:10", + "nodeType": "YulIdentifier", + "src": "31403:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "31397:5:10", + "nodeType": "YulIdentifier", + "src": "31397:5:10" + }, + "nativeSrc": "31397:11:10", + "nodeType": "YulFunctionCall", + "src": "31397:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "31392:1:10", + "nodeType": "YulTypedName", + "src": "31392:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "31436:3:10", + "nodeType": "YulIdentifier", + "src": "31436:3:10" + }, + "nativeSrc": "31436:5:10", + "nodeType": "YulFunctionCall", + "src": "31436:5:10" + }, + { + "kind": "number", + "nativeSrc": "31443:1:10", + "nodeType": "YulLiteral", + "src": "31443:1:10", + "type": "", + "value": "4" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "31450:4:10", + "nodeType": "YulIdentifier", + "src": "31450:4:10" + }, + { + "kind": "number", + "nativeSrc": "31456:4:10", + "nodeType": "YulLiteral", + "src": "31456:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31446:3:10", + "nodeType": "YulIdentifier", + "src": "31446:3:10" + }, + "nativeSrc": "31446:15:10", + "nodeType": "YulFunctionCall", + "src": "31446:15:10" + }, + { + "name": "n", + "nativeSrc": "31463:1:10", + "nodeType": "YulIdentifier", + "src": "31463:1:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "31470:1:10", + "nodeType": "YulIdentifier", + "src": "31470:1:10" + }, + { + "kind": "number", + "nativeSrc": "31473:4:10", + "nodeType": "YulLiteral", + "src": "31473:4:10", + "type": "", + "value": "0x43" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31466:3:10", + "nodeType": "YulIdentifier", + "src": "31466:3:10" + }, + "nativeSrc": "31466:12:10", + "nodeType": "YulFunctionCall", + "src": "31466:12:10" + }, + { + "name": "n", + "nativeSrc": "31480:1:10", + "nodeType": "YulIdentifier", + "src": "31480:1:10" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "31425:10:10", + "nodeType": "YulIdentifier", + "src": "31425:10:10" + }, + "nativeSrc": "31425:57:10", + "nodeType": "YulFunctionCall", + "src": "31425:57:10" + } + ], + "functionName": { + "name": "pop", + "nativeSrc": "31421:3:10", + "nodeType": "YulIdentifier", + "src": "31421:3:10" + }, + "nativeSrc": "31421:62:10", + "nodeType": "YulFunctionCall", + "src": "31421:62:10" + }, + "nativeSrc": "31421:62:10", + "nodeType": "YulExpressionStatement", + "src": "31421:62:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "31507:1:10", + "nodeType": "YulIdentifier", + "src": "31507:1:10" + }, + { + "kind": "number", + "nativeSrc": "31510:4:10", + "nodeType": "YulLiteral", + "src": "31510:4:10", + "type": "", + "value": "0x23" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31503:3:10", + "nodeType": "YulIdentifier", + "src": "31503:3:10" + }, + "nativeSrc": "31503:12:10", + "nodeType": "YulFunctionCall", + "src": "31503:12:10" + }, + { + "kind": "number", + "nativeSrc": "31517:32:10", + "nodeType": "YulLiteral", + "src": "31517:32:10", + "type": "", + "value": "0x5af43d82803e903d91602b57fd5bf3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "31496:6:10", + "nodeType": "YulIdentifier", + "src": "31496:6:10" + }, + "nativeSrc": "31496:54:10", + "nodeType": "YulFunctionCall", + "src": "31496:54:10" + }, + "nativeSrc": "31496:54:10", + "nodeType": "YulExpressionStatement", + "src": "31496:54:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "31574:1:10", + "nodeType": "YulIdentifier", + "src": "31574:1:10" + }, + { + "kind": "number", + "nativeSrc": "31577:4:10", + "nodeType": "YulLiteral", + "src": "31577:4:10", + "type": "", + "value": "0x14" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31570:3:10", + "nodeType": "YulIdentifier", + "src": "31570:3:10" + }, + "nativeSrc": "31570:12:10", + "nodeType": "YulFunctionCall", + "src": "31570:12:10" + }, + { + "name": "implementation", + "nativeSrc": "31584:14:10", + "nodeType": "YulIdentifier", + "src": "31584:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "31563:6:10", + "nodeType": "YulIdentifier", + "src": "31563:6:10" + }, + "nativeSrc": "31563:36:10", + "nodeType": "YulFunctionCall", + "src": "31563:36:10" + }, + "nativeSrc": "31563:36:10", + "nodeType": "YulExpressionStatement", + "src": "31563:36:10" + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "31619:1:10", + "nodeType": "YulIdentifier", + "src": "31619:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "31626:44:10", + "nodeType": "YulLiteral", + "src": "31626:44:10", + "type": "", + "value": "0xfe61002d3d81600a3d39f3363d3d373d3d3d363d73" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "31676:3:10", + "nodeType": "YulLiteral", + "src": "31676:3:10", + "type": "", + "value": "136" + }, + { + "name": "n", + "nativeSrc": "31681:1:10", + "nodeType": "YulIdentifier", + "src": "31681:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "31672:3:10", + "nodeType": "YulIdentifier", + "src": "31672:3:10" + }, + "nativeSrc": "31672:11:10", + "nodeType": "YulFunctionCall", + "src": "31672:11:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31622:3:10", + "nodeType": "YulIdentifier", + "src": "31622:3:10" + }, + "nativeSrc": "31622:62:10", + "nodeType": "YulFunctionCall", + "src": "31622:62:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "31612:6:10", + "nodeType": "YulIdentifier", + "src": "31612:6:10" + }, + "nativeSrc": "31612:73:10", + "nodeType": "YulFunctionCall", + "src": "31612:73:10" + }, + "nativeSrc": "31612:73:10", + "nodeType": "YulExpressionStatement", + "src": "31612:73:10" + }, + { + "nativeSrc": "31785:80:10", + "nodeType": "YulAssignment", + "src": "31785:80:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "31805:5:10", + "nodeType": "YulIdentifier", + "src": "31805:5:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "31816:1:10", + "nodeType": "YulIdentifier", + "src": "31816:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "31823:4:10", + "nodeType": "YulLiteral", + "src": "31823:4:10", + "type": "", + "value": "0x0b" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "31832:1:10", + "nodeType": "YulIdentifier", + "src": "31832:1:10" + }, + { + "kind": "number", + "nativeSrc": "31835:6:10", + "nodeType": "YulLiteral", + "src": "31835:6:10", + "type": "", + "value": "0xffd3" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "31829:2:10", + "nodeType": "YulIdentifier", + "src": "31829:2:10" + }, + "nativeSrc": "31829:13:10", + "nodeType": "YulFunctionCall", + "src": "31829:13:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31819:3:10", + "nodeType": "YulIdentifier", + "src": "31819:3:10" + }, + "nativeSrc": "31819:24:10", + "nodeType": "YulFunctionCall", + "src": "31819:24:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31812:3:10", + "nodeType": "YulIdentifier", + "src": "31812:3:10" + }, + "nativeSrc": "31812:32:10", + "nodeType": "YulFunctionCall", + "src": "31812:32:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "31850:1:10", + "nodeType": "YulIdentifier", + "src": "31850:1:10" + }, + { + "kind": "number", + "nativeSrc": "31853:4:10", + "nodeType": "YulLiteral", + "src": "31853:4:10", + "type": "", + "value": "0x37" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31846:3:10", + "nodeType": "YulIdentifier", + "src": "31846:3:10" + }, + "nativeSrc": "31846:12:10", + "nodeType": "YulFunctionCall", + "src": "31846:12:10" + }, + { + "name": "salt", + "nativeSrc": "31860:4:10", + "nodeType": "YulIdentifier", + "src": "31860:4:10" + } + ], + "functionName": { + "name": "create2", + "nativeSrc": "31797:7:10", + "nodeType": "YulIdentifier", + "src": "31797:7:10" + }, + "nativeSrc": "31797:68:10", + "nodeType": "YulFunctionCall", + "src": "31797:68:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "31785:8:10", + "nodeType": "YulIdentifier", + "src": "31785:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "31898:116:10", + "nodeType": "YulBlock", + "src": "31898:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "31923:4:10", + "nodeType": "YulLiteral", + "src": "31923:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "31929:10:10", + "nodeType": "YulLiteral", + "src": "31929:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "31916:6:10", + "nodeType": "YulIdentifier", + "src": "31916:6:10" + }, + "nativeSrc": "31916:24:10", + "nodeType": "YulFunctionCall", + "src": "31916:24:10" + }, + "nativeSrc": "31916:24:10", + "nodeType": "YulExpressionStatement", + "src": "31916:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "31989:4:10", + "nodeType": "YulLiteral", + "src": "31989:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "31995:4:10", + "nodeType": "YulLiteral", + "src": "31995:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "31982:6:10", + "nodeType": "YulIdentifier", + "src": "31982:6:10" + }, + "nativeSrc": "31982:18:10", + "nodeType": "YulFunctionCall", + "src": "31982:18:10" + }, + "nativeSrc": "31982:18:10", + "nodeType": "YulExpressionStatement", + "src": "31982:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "31888:8:10", + "nodeType": "YulIdentifier", + "src": "31888:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "31881:6:10", + "nodeType": "YulIdentifier", + "src": "31881:6:10" + }, + "nativeSrc": "31881:16:10", + "nodeType": "YulFunctionCall", + "src": "31881:16:10" + }, + "nativeSrc": "31878:136:10", + "nodeType": "YulIf", + "src": "31878:136:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3407, + "isOffset": false, + "isSlot": false, + "src": "31403:4:10", + "valueSize": 1 + }, + { + "declaration": 3407, + "isOffset": false, + "isSlot": false, + "src": "31450:4:10", + "valueSize": 1 + }, + { + "declaration": 3405, + "isOffset": false, + "isSlot": false, + "src": "31584:14:10", + "valueSize": 1 + }, + { + "declaration": 3412, + "isOffset": false, + "isSlot": false, + "src": "31785:8:10", + "valueSize": 1 + }, + { + "declaration": 3412, + "isOffset": false, + "isSlot": false, + "src": "31888:8:10", + "valueSize": 1 + }, + { + "declaration": 3409, + "isOffset": false, + "isSlot": false, + "src": "31860:4:10", + "valueSize": 1 + }, + { + "declaration": 3403, + "isOffset": false, + "isSlot": false, + "src": "31805:5:10", + "valueSize": 1 + } + ], + "id": 3414, + "nodeType": "InlineAssembly", + "src": "31332:692:10" + } + ] + }, + "documentation": { + "id": 3401, + "nodeType": "StructuredDocumentation", + "src": "30979:121:10", + "text": "@dev Deploys a deterministic clone of `implementation`\n with immutable arguments encoded in `args` and `salt`." + }, + "id": 3416, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "cloneDeterministic", + "nameLocation": "31114:18:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3410, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3403, + "mutability": "mutable", + "name": "value", + "nameLocation": "31150:5:10", + "nodeType": "VariableDeclaration", + "scope": 3416, + "src": "31142:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3402, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "31142:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3405, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "31173:14:10", + "nodeType": "VariableDeclaration", + "scope": 3416, + "src": "31165:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3404, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "31165:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3407, + "mutability": "mutable", + "name": "args", + "nameLocation": "31210:4:10", + "nodeType": "VariableDeclaration", + "scope": 3416, + "src": "31197:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3406, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "31197:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3409, + "mutability": "mutable", + "name": "salt", + "nameLocation": "31232:4:10", + "nodeType": "VariableDeclaration", + "scope": 3416, + "src": "31224:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3408, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "31224:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "31132:110:10" + }, + "returnParameters": { + "id": 3413, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3412, + "mutability": "mutable", + "name": "instance", + "nameLocation": "31269:8:10", + "nodeType": "VariableDeclaration", + "scope": 3416, + "src": "31261:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3411, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "31261:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "31260:18:10" + }, + "scope": 5104, + "src": "31105:925:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3437, + "nodeType": "Block", + "src": "32407:79:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "30", + "id": 3431, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32449:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 3432, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3419, + "src": "32452:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3433, + "name": "args", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3421, + "src": "32468:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 3434, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3423, + "src": "32474:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3430, + "name": "createDeterministicClone", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3438, + 3456 + ], + "referencedDeclaration": 3456, + "src": "32424:24:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$_t_bytes32_$returns$_t_bool_$_t_address_$", + "typeString": "function (uint256,address,bytes memory,bytes32) returns (bool,address)" + } + }, + "id": 3435, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "32424:55:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_address_$", + "typeString": "tuple(bool,address)" + } + }, + "functionReturnParameters": 3429, + "id": 3436, + "nodeType": "Return", + "src": "32417:62:10" + } + ] + }, + "documentation": { + "id": 3417, + "nodeType": "StructuredDocumentation", + "src": "32036:197:10", + "text": "@dev Deploys a deterministic clone of `implementation`\n with immutable arguments encoded in `args` and `salt`.\n This method does not revert if the clone has already been deployed." + }, + "id": 3438, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createDeterministicClone", + "nameLocation": "32247:24:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3424, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3419, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "32280:14:10", + "nodeType": "VariableDeclaration", + "scope": 3438, + "src": "32272:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3418, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32272:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3421, + "mutability": "mutable", + "name": "args", + "nameLocation": "32309:4:10", + "nodeType": "VariableDeclaration", + "scope": 3438, + "src": "32296:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3420, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "32296:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3423, + "mutability": "mutable", + "name": "salt", + "nameLocation": "32323:4:10", + "nodeType": "VariableDeclaration", + "scope": 3438, + "src": "32315:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3422, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "32315:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "32271:57:10" + }, + "returnParameters": { + "id": 3429, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3426, + "mutability": "mutable", + "name": "alreadyDeployed", + "nameLocation": "32368:15:10", + "nodeType": "VariableDeclaration", + "scope": 3438, + "src": "32363:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3425, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "32363:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3428, + "mutability": "mutable", + "name": "instance", + "nameLocation": "32393:8:10", + "nodeType": "VariableDeclaration", + "scope": 3438, + "src": "32385:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3427, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32385:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "32362:40:10" + }, + "scope": 5104, + "src": "32238:248:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3455, + "nodeType": "Block", + "src": "32896:1672:10", + "statements": [ + { + "AST": { + "nativeSrc": "32958:1604:10", + "nodeType": "YulBlock", + "src": "32958:1604:10", + "statements": [ + { + "nativeSrc": "32972:20:10", + "nodeType": "YulVariableDeclaration", + "src": "32972:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "32987:4:10", + "nodeType": "YulLiteral", + "src": "32987:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "32981:5:10", + "nodeType": "YulIdentifier", + "src": "32981:5:10" + }, + "nativeSrc": "32981:11:10", + "nodeType": "YulFunctionCall", + "src": "32981:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "32976:1:10", + "nodeType": "YulTypedName", + "src": "32976:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "33005:20:10", + "nodeType": "YulVariableDeclaration", + "src": "33005:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "33020:4:10", + "nodeType": "YulIdentifier", + "src": "33020:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "33014:5:10", + "nodeType": "YulIdentifier", + "src": "33014:5:10" + }, + "nativeSrc": "33014:11:10", + "nodeType": "YulFunctionCall", + "src": "33014:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "33009:1:10", + "nodeType": "YulTypedName", + "src": "33009:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "33053:3:10", + "nodeType": "YulIdentifier", + "src": "33053:3:10" + }, + "nativeSrc": "33053:5:10", + "nodeType": "YulFunctionCall", + "src": "33053:5:10" + }, + { + "kind": "number", + "nativeSrc": "33060:1:10", + "nodeType": "YulLiteral", + "src": "33060:1:10", + "type": "", + "value": "4" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "33067:4:10", + "nodeType": "YulIdentifier", + "src": "33067:4:10" + }, + { + "kind": "number", + "nativeSrc": "33073:4:10", + "nodeType": "YulLiteral", + "src": "33073:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33063:3:10", + "nodeType": "YulIdentifier", + "src": "33063:3:10" + }, + "nativeSrc": "33063:15:10", + "nodeType": "YulFunctionCall", + "src": "33063:15:10" + }, + { + "name": "n", + "nativeSrc": "33080:1:10", + "nodeType": "YulIdentifier", + "src": "33080:1:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "33087:1:10", + "nodeType": "YulIdentifier", + "src": "33087:1:10" + }, + { + "kind": "number", + "nativeSrc": "33090:4:10", + "nodeType": "YulLiteral", + "src": "33090:4:10", + "type": "", + "value": "0x43" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33083:3:10", + "nodeType": "YulIdentifier", + "src": "33083:3:10" + }, + "nativeSrc": "33083:12:10", + "nodeType": "YulFunctionCall", + "src": "33083:12:10" + }, + { + "name": "n", + "nativeSrc": "33097:1:10", + "nodeType": "YulIdentifier", + "src": "33097:1:10" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "33042:10:10", + "nodeType": "YulIdentifier", + "src": "33042:10:10" + }, + "nativeSrc": "33042:57:10", + "nodeType": "YulFunctionCall", + "src": "33042:57:10" + } + ], + "functionName": { + "name": "pop", + "nativeSrc": "33038:3:10", + "nodeType": "YulIdentifier", + "src": "33038:3:10" + }, + "nativeSrc": "33038:62:10", + "nodeType": "YulFunctionCall", + "src": "33038:62:10" + }, + "nativeSrc": "33038:62:10", + "nodeType": "YulExpressionStatement", + "src": "33038:62:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "33124:1:10", + "nodeType": "YulIdentifier", + "src": "33124:1:10" + }, + { + "kind": "number", + "nativeSrc": "33127:4:10", + "nodeType": "YulLiteral", + "src": "33127:4:10", + "type": "", + "value": "0x23" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33120:3:10", + "nodeType": "YulIdentifier", + "src": "33120:3:10" + }, + "nativeSrc": "33120:12:10", + "nodeType": "YulFunctionCall", + "src": "33120:12:10" + }, + { + "kind": "number", + "nativeSrc": "33134:32:10", + "nodeType": "YulLiteral", + "src": "33134:32:10", + "type": "", + "value": "0x5af43d82803e903d91602b57fd5bf3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "33113:6:10", + "nodeType": "YulIdentifier", + "src": "33113:6:10" + }, + "nativeSrc": "33113:54:10", + "nodeType": "YulFunctionCall", + "src": "33113:54:10" + }, + "nativeSrc": "33113:54:10", + "nodeType": "YulExpressionStatement", + "src": "33113:54:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "33191:1:10", + "nodeType": "YulIdentifier", + "src": "33191:1:10" + }, + { + "kind": "number", + "nativeSrc": "33194:4:10", + "nodeType": "YulLiteral", + "src": "33194:4:10", + "type": "", + "value": "0x14" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33187:3:10", + "nodeType": "YulIdentifier", + "src": "33187:3:10" + }, + "nativeSrc": "33187:12:10", + "nodeType": "YulFunctionCall", + "src": "33187:12:10" + }, + { + "name": "implementation", + "nativeSrc": "33201:14:10", + "nodeType": "YulIdentifier", + "src": "33201:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "33180:6:10", + "nodeType": "YulIdentifier", + "src": "33180:6:10" + }, + "nativeSrc": "33180:36:10", + "nodeType": "YulFunctionCall", + "src": "33180:36:10" + }, + "nativeSrc": "33180:36:10", + "nodeType": "YulExpressionStatement", + "src": "33180:36:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "33370:1:10", + "nodeType": "YulIdentifier", + "src": "33370:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "33376:1:10", + "nodeType": "YulIdentifier", + "src": "33376:1:10" + }, + { + "kind": "number", + "nativeSrc": "33379:6:10", + "nodeType": "YulLiteral", + "src": "33379:6:10", + "type": "", + "value": "0xffd2" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "33373:2:10", + "nodeType": "YulIdentifier", + "src": "33373:2:10" + }, + "nativeSrc": "33373:13:10", + "nodeType": "YulFunctionCall", + "src": "33373:13:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33366:3:10", + "nodeType": "YulIdentifier", + "src": "33366:3:10" + }, + "nativeSrc": "33366:21:10", + "nodeType": "YulFunctionCall", + "src": "33366:21:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33393:44:10", + "nodeType": "YulLiteral", + "src": "33393:44:10", + "type": "", + "value": "0xfe61002d3d81600a3d39f3363d3d373d3d3d363d73" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33443:3:10", + "nodeType": "YulLiteral", + "src": "33443:3:10", + "type": "", + "value": "136" + }, + { + "name": "n", + "nativeSrc": "33448:1:10", + "nodeType": "YulIdentifier", + "src": "33448:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "33439:3:10", + "nodeType": "YulIdentifier", + "src": "33439:3:10" + }, + "nativeSrc": "33439:11:10", + "nodeType": "YulFunctionCall", + "src": "33439:11:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33389:3:10", + "nodeType": "YulIdentifier", + "src": "33389:3:10" + }, + "nativeSrc": "33389:62:10", + "nodeType": "YulFunctionCall", + "src": "33389:62:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "33359:6:10", + "nodeType": "YulIdentifier", + "src": "33359:6:10" + }, + "nativeSrc": "33359:93:10", + "nodeType": "YulFunctionCall", + "src": "33359:93:10" + }, + "nativeSrc": "33359:93:10", + "nodeType": "YulExpressionStatement", + "src": "33359:93:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33525:4:10", + "nodeType": "YulLiteral", + "src": "33525:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "33531:4:10", + "nodeType": "YulLiteral", + "src": "33531:4:10", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "33517:7:10", + "nodeType": "YulIdentifier", + "src": "33517:7:10" + }, + "nativeSrc": "33517:19:10", + "nodeType": "YulFunctionCall", + "src": "33517:19:10" + }, + "nativeSrc": "33517:19:10", + "nodeType": "YulExpressionStatement", + "src": "33517:19:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33577:4:10", + "nodeType": "YulLiteral", + "src": "33577:4:10", + "type": "", + "value": "0x35" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "33597:1:10", + "nodeType": "YulIdentifier", + "src": "33597:1:10" + }, + { + "kind": "number", + "nativeSrc": "33600:4:10", + "nodeType": "YulLiteral", + "src": "33600:4:10", + "type": "", + "value": "0x0c" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33593:3:10", + "nodeType": "YulIdentifier", + "src": "33593:3:10" + }, + "nativeSrc": "33593:12:10", + "nodeType": "YulFunctionCall", + "src": "33593:12:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "33611:1:10", + "nodeType": "YulIdentifier", + "src": "33611:1:10" + }, + { + "kind": "number", + "nativeSrc": "33614:4:10", + "nodeType": "YulLiteral", + "src": "33614:4:10", + "type": "", + "value": "0x37" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33607:3:10", + "nodeType": "YulIdentifier", + "src": "33607:3:10" + }, + "nativeSrc": "33607:12:10", + "nodeType": "YulFunctionCall", + "src": "33607:12:10" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "33583:9:10", + "nodeType": "YulIdentifier", + "src": "33583:9:10" + }, + "nativeSrc": "33583:37:10", + "nodeType": "YulFunctionCall", + "src": "33583:37:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "33570:6:10", + "nodeType": "YulIdentifier", + "src": "33570:6:10" + }, + "nativeSrc": "33570:51:10", + "nodeType": "YulFunctionCall", + "src": "33570:51:10" + }, + "nativeSrc": "33570:51:10", + "nodeType": "YulExpressionStatement", + "src": "33570:51:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33641:4:10", + "nodeType": "YulLiteral", + "src": "33641:4:10", + "type": "", + "value": "0x01" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33651:2:10", + "nodeType": "YulLiteral", + "src": "33651:2:10", + "type": "", + "value": "96" + }, + { + "arguments": [], + "functionName": { + "name": "address", + "nativeSrc": "33655:7:10", + "nodeType": "YulIdentifier", + "src": "33655:7:10" + }, + "nativeSrc": "33655:9:10", + "nodeType": "YulFunctionCall", + "src": "33655:9:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "33647:3:10", + "nodeType": "YulIdentifier", + "src": "33647:3:10" + }, + "nativeSrc": "33647:18:10", + "nodeType": "YulFunctionCall", + "src": "33647:18:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "33634:6:10", + "nodeType": "YulIdentifier", + "src": "33634:6:10" + }, + "nativeSrc": "33634:32:10", + "nodeType": "YulFunctionCall", + "src": "33634:32:10" + }, + "nativeSrc": "33634:32:10", + "nodeType": "YulExpressionStatement", + "src": "33634:32:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33686:4:10", + "nodeType": "YulLiteral", + "src": "33686:4:10", + "type": "", + "value": "0x15" + }, + { + "name": "salt", + "nativeSrc": "33692:4:10", + "nodeType": "YulIdentifier", + "src": "33692:4:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "33679:6:10", + "nodeType": "YulIdentifier", + "src": "33679:6:10" + }, + "nativeSrc": "33679:18:10", + "nodeType": "YulFunctionCall", + "src": "33679:18:10" + }, + "nativeSrc": "33679:18:10", + "nodeType": "YulExpressionStatement", + "src": "33679:18:10" + }, + { + "nativeSrc": "33710:33:10", + "nodeType": "YulAssignment", + "src": "33710:33:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33732:4:10", + "nodeType": "YulLiteral", + "src": "33732:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "33738:4:10", + "nodeType": "YulLiteral", + "src": "33738:4:10", + "type": "", + "value": "0x55" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "33722:9:10", + "nodeType": "YulIdentifier", + "src": "33722:9:10" + }, + "nativeSrc": "33722:21:10", + "nodeType": "YulFunctionCall", + "src": "33722:21:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "33710:8:10", + "nodeType": "YulIdentifier", + "src": "33710:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "33768:696:10", + "nodeType": "YulBlock", + "src": "33768:696:10", + "statements": [ + { + "body": { + "nativeSrc": "33819:307:10", + "nodeType": "YulBlock", + "src": "33819:307:10", + "statements": [ + { + "nativeSrc": "33841:60:10", + "nodeType": "YulAssignment", + "src": "33841:60:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "33861:5:10", + "nodeType": "YulIdentifier", + "src": "33861:5:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "33872:1:10", + "nodeType": "YulIdentifier", + "src": "33872:1:10" + }, + { + "kind": "number", + "nativeSrc": "33875:4:10", + "nodeType": "YulLiteral", + "src": "33875:4:10", + "type": "", + "value": "0x0c" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33868:3:10", + "nodeType": "YulIdentifier", + "src": "33868:3:10" + }, + "nativeSrc": "33868:12:10", + "nodeType": "YulFunctionCall", + "src": "33868:12:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "33886:1:10", + "nodeType": "YulIdentifier", + "src": "33886:1:10" + }, + { + "kind": "number", + "nativeSrc": "33889:4:10", + "nodeType": "YulLiteral", + "src": "33889:4:10", + "type": "", + "value": "0x37" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33882:3:10", + "nodeType": "YulIdentifier", + "src": "33882:3:10" + }, + "nativeSrc": "33882:12:10", + "nodeType": "YulFunctionCall", + "src": "33882:12:10" + }, + { + "name": "salt", + "nativeSrc": "33896:4:10", + "nodeType": "YulIdentifier", + "src": "33896:4:10" + } + ], + "functionName": { + "name": "create2", + "nativeSrc": "33853:7:10", + "nodeType": "YulIdentifier", + "src": "33853:7:10" + }, + "nativeSrc": "33853:48:10", + "nodeType": "YulFunctionCall", + "src": "33853:48:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "33841:8:10", + "nodeType": "YulIdentifier", + "src": "33841:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "33942:140:10", + "nodeType": "YulBlock", + "src": "33942:140:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33975:4:10", + "nodeType": "YulLiteral", + "src": "33975:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "33981:10:10", + "nodeType": "YulLiteral", + "src": "33981:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "33968:6:10", + "nodeType": "YulIdentifier", + "src": "33968:6:10" + }, + "nativeSrc": "33968:24:10", + "nodeType": "YulFunctionCall", + "src": "33968:24:10" + }, + "nativeSrc": "33968:24:10", + "nodeType": "YulExpressionStatement", + "src": "33968:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "34049:4:10", + "nodeType": "YulLiteral", + "src": "34049:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "34055:4:10", + "nodeType": "YulLiteral", + "src": "34055:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "34042:6:10", + "nodeType": "YulIdentifier", + "src": "34042:6:10" + }, + "nativeSrc": "34042:18:10", + "nodeType": "YulFunctionCall", + "src": "34042:18:10" + }, + "nativeSrc": "34042:18:10", + "nodeType": "YulExpressionStatement", + "src": "34042:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "33932:8:10", + "nodeType": "YulIdentifier", + "src": "33932:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "33925:6:10", + "nodeType": "YulIdentifier", + "src": "33925:6:10" + }, + "nativeSrc": "33925:16:10", + "nodeType": "YulFunctionCall", + "src": "33925:16:10" + }, + "nativeSrc": "33922:160:10", + "nodeType": "YulIf", + "src": "33922:160:10" + }, + { + "nativeSrc": "34103:5:10", + "nodeType": "YulBreak", + "src": "34103:5:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "33808:8:10", + "nodeType": "YulIdentifier", + "src": "33808:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "33796:11:10", + "nodeType": "YulIdentifier", + "src": "33796:11:10" + }, + "nativeSrc": "33796:21:10", + "nodeType": "YulFunctionCall", + "src": "33796:21:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "33789:6:10", + "nodeType": "YulIdentifier", + "src": "33789:6:10" + }, + "nativeSrc": "33789:29:10", + "nodeType": "YulFunctionCall", + "src": "33789:29:10" + }, + "nativeSrc": "33786:340:10", + "nodeType": "YulIf", + "src": "33786:340:10" + }, + { + "nativeSrc": "34143:20:10", + "nodeType": "YulAssignment", + "src": "34143:20:10", + "value": { + "kind": "number", + "nativeSrc": "34162:1:10", + "nodeType": "YulLiteral", + "src": "34162:1:10", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "alreadyDeployed", + "nativeSrc": "34143:15:10", + "nodeType": "YulIdentifier", + "src": "34143:15:10" + } + ] + }, + { + "body": { + "nativeSrc": "34197:9:10", + "nodeType": "YulBlock", + "src": "34197:9:10", + "statements": [ + { + "nativeSrc": "34199:5:10", + "nodeType": "YulBreak", + "src": "34199:5:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nativeSrc": "34190:5:10", + "nodeType": "YulIdentifier", + "src": "34190:5:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "34183:6:10", + "nodeType": "YulIdentifier", + "src": "34183:6:10" + }, + "nativeSrc": "34183:13:10", + "nodeType": "YulFunctionCall", + "src": "34183:13:10" + }, + "nativeSrc": "34180:26:10", + "nodeType": "YulIf", + "src": "34180:26:10" + }, + { + "body": { + "nativeSrc": "34299:129:10", + "nodeType": "YulBlock", + "src": "34299:129:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "34328:4:10", + "nodeType": "YulLiteral", + "src": "34328:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "34334:10:10", + "nodeType": "YulLiteral", + "src": "34334:10:10", + "type": "", + "value": "0xb12d13eb" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "34321:6:10", + "nodeType": "YulIdentifier", + "src": "34321:6:10" + }, + "nativeSrc": "34321:24:10", + "nodeType": "YulFunctionCall", + "src": "34321:24:10" + }, + "nativeSrc": "34321:24:10", + "nodeType": "YulExpressionStatement", + "src": "34321:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "34399:4:10", + "nodeType": "YulLiteral", + "src": "34399:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "34405:4:10", + "nodeType": "YulLiteral", + "src": "34405:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "34392:6:10", + "nodeType": "YulIdentifier", + "src": "34392:6:10" + }, + "nativeSrc": "34392:18:10", + "nodeType": "YulFunctionCall", + "src": "34392:18:10" + }, + "nativeSrc": "34392:18:10", + "nodeType": "YulExpressionStatement", + "src": "34392:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "34238:3:10", + "nodeType": "YulIdentifier", + "src": "34238:3:10" + }, + "nativeSrc": "34238:5:10", + "nodeType": "YulFunctionCall", + "src": "34238:5:10" + }, + { + "name": "instance", + "nativeSrc": "34245:8:10", + "nodeType": "YulIdentifier", + "src": "34245:8:10" + }, + { + "name": "value", + "nativeSrc": "34255:5:10", + "nodeType": "YulIdentifier", + "src": "34255:5:10" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "34262:8:10", + "nodeType": "YulIdentifier", + "src": "34262:8:10" + }, + "nativeSrc": "34262:10:10", + "nodeType": "YulFunctionCall", + "src": "34262:10:10" + }, + { + "kind": "number", + "nativeSrc": "34274:4:10", + "nodeType": "YulLiteral", + "src": "34274:4:10", + "type": "", + "value": "0x00" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "34280:8:10", + "nodeType": "YulIdentifier", + "src": "34280:8:10" + }, + "nativeSrc": "34280:10:10", + "nodeType": "YulFunctionCall", + "src": "34280:10:10" + }, + { + "kind": "number", + "nativeSrc": "34292:4:10", + "nodeType": "YulLiteral", + "src": "34292:4:10", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "call", + "nativeSrc": "34233:4:10", + "nodeType": "YulIdentifier", + "src": "34233:4:10" + }, + "nativeSrc": "34233:64:10", + "nodeType": "YulFunctionCall", + "src": "34233:64:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "34226:6:10", + "nodeType": "YulIdentifier", + "src": "34226:6:10" + }, + "nativeSrc": "34226:72:10", + "nodeType": "YulFunctionCall", + "src": "34226:72:10" + }, + "nativeSrc": "34223:205:10", + "nodeType": "YulIf", + "src": "34223:205:10" + }, + { + "nativeSrc": "34445:5:10", + "nodeType": "YulBreak", + "src": "34445:5:10" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "33763:1:10", + "nodeType": "YulLiteral", + "src": "33763:1:10", + "type": "", + "value": "1" + }, + "nativeSrc": "33756:708:10", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "33765:2:10", + "nodeType": "YulBlock", + "src": "33765:2:10", + "statements": [] + }, + "pre": { + "nativeSrc": "33760:2:10", + "nodeType": "YulBlock", + "src": "33760:2:10", + "statements": [] + }, + "src": "33756:708:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "34484:4:10", + "nodeType": "YulLiteral", + "src": "34484:4:10", + "type": "", + "value": "0x35" + }, + { + "kind": "number", + "nativeSrc": "34490:1:10", + "nodeType": "YulLiteral", + "src": "34490:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "34477:6:10", + "nodeType": "YulIdentifier", + "src": "34477:6:10" + }, + "nativeSrc": "34477:15:10", + "nodeType": "YulFunctionCall", + "src": "34477:15:10" + }, + "nativeSrc": "34477:15:10", + "nodeType": "YulExpressionStatement", + "src": "34477:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3450, + "isOffset": false, + "isSlot": false, + "src": "34143:15:10", + "valueSize": 1 + }, + { + "declaration": 3445, + "isOffset": false, + "isSlot": false, + "src": "33020:4:10", + "valueSize": 1 + }, + { + "declaration": 3445, + "isOffset": false, + "isSlot": false, + "src": "33067:4:10", + "valueSize": 1 + }, + { + "declaration": 3443, + "isOffset": false, + "isSlot": false, + "src": "33201:14:10", + "valueSize": 1 + }, + { + "declaration": 3452, + "isOffset": false, + "isSlot": false, + "src": "33710:8:10", + "valueSize": 1 + }, + { + "declaration": 3452, + "isOffset": false, + "isSlot": false, + "src": "33808:8:10", + "valueSize": 1 + }, + { + "declaration": 3452, + "isOffset": false, + "isSlot": false, + "src": "33841:8:10", + "valueSize": 1 + }, + { + "declaration": 3452, + "isOffset": false, + "isSlot": false, + "src": "33932:8:10", + "valueSize": 1 + }, + { + "declaration": 3452, + "isOffset": false, + "isSlot": false, + "src": "34245:8:10", + "valueSize": 1 + }, + { + "declaration": 3447, + "isOffset": false, + "isSlot": false, + "src": "33692:4:10", + "valueSize": 1 + }, + { + "declaration": 3447, + "isOffset": false, + "isSlot": false, + "src": "33896:4:10", + "valueSize": 1 + }, + { + "declaration": 3441, + "isOffset": false, + "isSlot": false, + "src": "33861:5:10", + "valueSize": 1 + }, + { + "declaration": 3441, + "isOffset": false, + "isSlot": false, + "src": "34190:5:10", + "valueSize": 1 + }, + { + "declaration": 3441, + "isOffset": false, + "isSlot": false, + "src": "34255:5:10", + "valueSize": 1 + } + ], + "id": 3454, + "nodeType": "InlineAssembly", + "src": "32949:1613:10" + } + ] + }, + "documentation": { + "id": 3439, + "nodeType": "StructuredDocumentation", + "src": "32492:197:10", + "text": "@dev Deploys a deterministic clone of `implementation`\n with immutable arguments encoded in `args` and `salt`.\n This method does not revert if the clone has already been deployed." + }, + "id": 3456, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createDeterministicClone", + "nameLocation": "32703:24:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3448, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3441, + "mutability": "mutable", + "name": "value", + "nameLocation": "32745:5:10", + "nodeType": "VariableDeclaration", + "scope": 3456, + "src": "32737:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3440, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "32737:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3443, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "32768:14:10", + "nodeType": "VariableDeclaration", + "scope": 3456, + "src": "32760:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3442, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32760:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3445, + "mutability": "mutable", + "name": "args", + "nameLocation": "32805:4:10", + "nodeType": "VariableDeclaration", + "scope": 3456, + "src": "32792:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3444, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "32792:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3447, + "mutability": "mutable", + "name": "salt", + "nameLocation": "32827:4:10", + "nodeType": "VariableDeclaration", + "scope": 3456, + "src": "32819:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3446, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "32819:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "32727:110:10" + }, + "returnParameters": { + "id": 3453, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3450, + "mutability": "mutable", + "name": "alreadyDeployed", + "nameLocation": "32861:15:10", + "nodeType": "VariableDeclaration", + "scope": 3456, + "src": "32856:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3449, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "32856:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3452, + "mutability": "mutable", + "name": "instance", + "nameLocation": "32886:8:10", + "nodeType": "VariableDeclaration", + "scope": 3456, + "src": "32878:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3451, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32878:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "32855:40:10" + }, + "scope": 5104, + "src": "32694:1874:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3467, + "nodeType": "Block", + "src": "34833:877:10", + "statements": [ + { + "AST": { + "nativeSrc": "34895:809:10", + "nodeType": "YulBlock", + "src": "34895:809:10", + "statements": [ + { + "nativeSrc": "34909:16:10", + "nodeType": "YulAssignment", + "src": "34909:16:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "34920:4:10", + "nodeType": "YulLiteral", + "src": "34920:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "34914:5:10", + "nodeType": "YulIdentifier", + "src": "34914:5:10" + }, + "nativeSrc": "34914:11:10", + "nodeType": "YulFunctionCall", + "src": "34914:11:10" + }, + "variableNames": [ + { + "name": "c", + "nativeSrc": "34909:1:10", + "nodeType": "YulIdentifier", + "src": "34909:1:10" + } + ] + }, + { + "nativeSrc": "34938:20:10", + "nodeType": "YulVariableDeclaration", + "src": "34938:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "34953:4:10", + "nodeType": "YulIdentifier", + "src": "34953:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "34947:5:10", + "nodeType": "YulIdentifier", + "src": "34947:5:10" + }, + "nativeSrc": "34947:11:10", + "nodeType": "YulFunctionCall", + "src": "34947:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "34942:1:10", + "nodeType": "YulTypedName", + "src": "34942:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "35073:14:10", + "nodeType": "YulIdentifier", + "src": "35073:14:10" + }, + "nativeSrc": "35073:16:10", + "nodeType": "YulFunctionCall", + "src": "35073:16:10" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "35091:14:10", + "nodeType": "YulIdentifier", + "src": "35091:14:10" + }, + "nativeSrc": "35091:16:10", + "nodeType": "YulFunctionCall", + "src": "35091:16:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "35112:1:10", + "nodeType": "YulIdentifier", + "src": "35112:1:10" + }, + { + "kind": "number", + "nativeSrc": "35115:6:10", + "nodeType": "YulLiteral", + "src": "35115:6:10", + "type": "", + "value": "0xffd2" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "35109:2:10", + "nodeType": "YulIdentifier", + "src": "35109:2:10" + }, + "nativeSrc": "35109:13:10", + "nodeType": "YulFunctionCall", + "src": "35109:13:10" + } + ], + "functionName": { + "name": "returndatacopy", + "nativeSrc": "35058:14:10", + "nodeType": "YulIdentifier", + "src": "35058:14:10" + }, + "nativeSrc": "35058:65:10", + "nodeType": "YulFunctionCall", + "src": "35058:65:10" + }, + "nativeSrc": "35058:65:10", + "nodeType": "YulExpressionStatement", + "src": "35058:65:10" + }, + { + "body": { + "nativeSrc": "35186:92:10", + "nodeType": "YulBlock", + "src": "35186:92:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "35219:1:10", + "nodeType": "YulIdentifier", + "src": "35219:1:10" + }, + { + "kind": "number", + "nativeSrc": "35222:4:10", + "nodeType": "YulLiteral", + "src": "35222:4:10", + "type": "", + "value": "0x57" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35215:3:10", + "nodeType": "YulIdentifier", + "src": "35215:3:10" + }, + "nativeSrc": "35215:12:10", + "nodeType": "YulFunctionCall", + "src": "35215:12:10" + }, + { + "name": "i", + "nativeSrc": "35229:1:10", + "nodeType": "YulIdentifier", + "src": "35229:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35211:3:10", + "nodeType": "YulIdentifier", + "src": "35211:3:10" + }, + "nativeSrc": "35211:20:10", + "nodeType": "YulFunctionCall", + "src": "35211:20:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "35247:4:10", + "nodeType": "YulIdentifier", + "src": "35247:4:10" + }, + { + "kind": "number", + "nativeSrc": "35253:4:10", + "nodeType": "YulLiteral", + "src": "35253:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35243:3:10", + "nodeType": "YulIdentifier", + "src": "35243:3:10" + }, + "nativeSrc": "35243:15:10", + "nodeType": "YulFunctionCall", + "src": "35243:15:10" + }, + { + "name": "i", + "nativeSrc": "35260:1:10", + "nodeType": "YulIdentifier", + "src": "35260:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35239:3:10", + "nodeType": "YulIdentifier", + "src": "35239:3:10" + }, + "nativeSrc": "35239:23:10", + "nodeType": "YulFunctionCall", + "src": "35239:23:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "35233:5:10", + "nodeType": "YulIdentifier", + "src": "35233:5:10" + }, + "nativeSrc": "35233:30:10", + "nodeType": "YulFunctionCall", + "src": "35233:30:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "35204:6:10", + "nodeType": "YulIdentifier", + "src": "35204:6:10" + }, + "nativeSrc": "35204:60:10", + "nodeType": "YulFunctionCall", + "src": "35204:60:10" + }, + "nativeSrc": "35204:60:10", + "nodeType": "YulExpressionStatement", + "src": "35204:60:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "35158:1:10", + "nodeType": "YulIdentifier", + "src": "35158:1:10" + }, + { + "name": "n", + "nativeSrc": "35161:1:10", + "nodeType": "YulIdentifier", + "src": "35161:1:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "35155:2:10", + "nodeType": "YulIdentifier", + "src": "35155:2:10" + }, + "nativeSrc": "35155:8:10", + "nodeType": "YulFunctionCall", + "src": "35155:8:10" + }, + "nativeSrc": "35136:142:10", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "35164:21:10", + "nodeType": "YulBlock", + "src": "35164:21:10", + "statements": [ + { + "nativeSrc": "35166:17:10", + "nodeType": "YulAssignment", + "src": "35166:17:10", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "35175:1:10", + "nodeType": "YulIdentifier", + "src": "35175:1:10" + }, + { + "kind": "number", + "nativeSrc": "35178:4:10", + "nodeType": "YulLiteral", + "src": "35178:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35171:3:10", + "nodeType": "YulIdentifier", + "src": "35171:3:10" + }, + "nativeSrc": "35171:12:10", + "nodeType": "YulFunctionCall", + "src": "35171:12:10" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "35166:1:10", + "nodeType": "YulIdentifier", + "src": "35166:1:10" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "35140:14:10", + "nodeType": "YulBlock", + "src": "35140:14:10", + "statements": [ + { + "nativeSrc": "35142:10:10", + "nodeType": "YulVariableDeclaration", + "src": "35142:10:10", + "value": { + "kind": "number", + "nativeSrc": "35151:1:10", + "nodeType": "YulLiteral", + "src": "35151:1:10", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "35146:1:10", + "nodeType": "YulTypedName", + "src": "35146:1:10", + "type": "" + } + ] + } + ] + }, + "src": "35136:142:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "35302:1:10", + "nodeType": "YulIdentifier", + "src": "35302:1:10" + }, + { + "kind": "number", + "nativeSrc": "35305:4:10", + "nodeType": "YulLiteral", + "src": "35305:4:10", + "type": "", + "value": "0x37" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35298:3:10", + "nodeType": "YulIdentifier", + "src": "35298:3:10" + }, + "nativeSrc": "35298:12:10", + "nodeType": "YulFunctionCall", + "src": "35298:12:10" + }, + { + "kind": "number", + "nativeSrc": "35312:32:10", + "nodeType": "YulLiteral", + "src": "35312:32:10", + "type": "", + "value": "0x5af43d82803e903d91602b57fd5bf3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "35291:6:10", + "nodeType": "YulIdentifier", + "src": "35291:6:10" + }, + "nativeSrc": "35291:54:10", + "nodeType": "YulFunctionCall", + "src": "35291:54:10" + }, + "nativeSrc": "35291:54:10", + "nodeType": "YulExpressionStatement", + "src": "35291:54:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "35369:1:10", + "nodeType": "YulIdentifier", + "src": "35369:1:10" + }, + { + "kind": "number", + "nativeSrc": "35372:4:10", + "nodeType": "YulLiteral", + "src": "35372:4:10", + "type": "", + "value": "0x28" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35365:3:10", + "nodeType": "YulIdentifier", + "src": "35365:3:10" + }, + "nativeSrc": "35365:12:10", + "nodeType": "YulFunctionCall", + "src": "35365:12:10" + }, + { + "name": "implementation", + "nativeSrc": "35379:14:10", + "nodeType": "YulIdentifier", + "src": "35379:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "35358:6:10", + "nodeType": "YulIdentifier", + "src": "35358:6:10" + }, + "nativeSrc": "35358:36:10", + "nodeType": "YulFunctionCall", + "src": "35358:36:10" + }, + "nativeSrc": "35358:36:10", + "nodeType": "YulExpressionStatement", + "src": "35358:36:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "35418:1:10", + "nodeType": "YulIdentifier", + "src": "35418:1:10" + }, + { + "kind": "number", + "nativeSrc": "35421:4:10", + "nodeType": "YulLiteral", + "src": "35421:4:10", + "type": "", + "value": "0x14" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35414:3:10", + "nodeType": "YulIdentifier", + "src": "35414:3:10" + }, + "nativeSrc": "35414:12:10", + "nodeType": "YulFunctionCall", + "src": "35414:12:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "35432:42:10", + "nodeType": "YulLiteral", + "src": "35432:42:10", + "type": "", + "value": "0x61002d3d81600a3d39f3363d3d373d3d3d363d73" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "35480:3:10", + "nodeType": "YulLiteral", + "src": "35480:3:10", + "type": "", + "value": "136" + }, + { + "name": "n", + "nativeSrc": "35485:1:10", + "nodeType": "YulIdentifier", + "src": "35485:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "35476:3:10", + "nodeType": "YulIdentifier", + "src": "35476:3:10" + }, + "nativeSrc": "35476:11:10", + "nodeType": "YulFunctionCall", + "src": "35476:11:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35428:3:10", + "nodeType": "YulIdentifier", + "src": "35428:3:10" + }, + "nativeSrc": "35428:60:10", + "nodeType": "YulFunctionCall", + "src": "35428:60:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "35407:6:10", + "nodeType": "YulIdentifier", + "src": "35407:6:10" + }, + "nativeSrc": "35407:82:10", + "nodeType": "YulFunctionCall", + "src": "35407:82:10" + }, + "nativeSrc": "35407:82:10", + "nodeType": "YulExpressionStatement", + "src": "35407:82:10" + }, + { + "expression": { + "arguments": [ + { + "name": "c", + "nativeSrc": "35509:1:10", + "nodeType": "YulIdentifier", + "src": "35509:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "35516:4:10", + "nodeType": "YulLiteral", + "src": "35516:4:10", + "type": "", + "value": "0x37" + }, + { + "name": "n", + "nativeSrc": "35522:1:10", + "nodeType": "YulIdentifier", + "src": "35522:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35512:3:10", + "nodeType": "YulIdentifier", + "src": "35512:3:10" + }, + "nativeSrc": "35512:12:10", + "nodeType": "YulFunctionCall", + "src": "35512:12:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "35502:6:10", + "nodeType": "YulIdentifier", + "src": "35502:6:10" + }, + "nativeSrc": "35502:23:10", + "nodeType": "YulFunctionCall", + "src": "35502:23:10" + }, + "nativeSrc": "35502:23:10", + "nodeType": "YulExpressionStatement", + "src": "35502:23:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "35570:1:10", + "nodeType": "YulIdentifier", + "src": "35570:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "35577:1:10", + "nodeType": "YulIdentifier", + "src": "35577:1:10" + }, + { + "kind": "number", + "nativeSrc": "35580:4:10", + "nodeType": "YulLiteral", + "src": "35580:4:10", + "type": "", + "value": "0x57" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35573:3:10", + "nodeType": "YulIdentifier", + "src": "35573:3:10" + }, + "nativeSrc": "35573:12:10", + "nodeType": "YulFunctionCall", + "src": "35573:12:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35566:3:10", + "nodeType": "YulIdentifier", + "src": "35566:3:10" + }, + "nativeSrc": "35566:20:10", + "nodeType": "YulFunctionCall", + "src": "35566:20:10" + }, + { + "kind": "number", + "nativeSrc": "35588:1:10", + "nodeType": "YulLiteral", + "src": "35588:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "35559:6:10", + "nodeType": "YulIdentifier", + "src": "35559:6:10" + }, + "nativeSrc": "35559:31:10", + "nodeType": "YulFunctionCall", + "src": "35559:31:10" + }, + "nativeSrc": "35559:31:10", + "nodeType": "YulExpressionStatement", + "src": "35559:31:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "35647:4:10", + "nodeType": "YulLiteral", + "src": "35647:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "c", + "nativeSrc": "35657:1:10", + "nodeType": "YulIdentifier", + "src": "35657:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "35664:1:10", + "nodeType": "YulIdentifier", + "src": "35664:1:10" + }, + { + "kind": "number", + "nativeSrc": "35667:4:10", + "nodeType": "YulLiteral", + "src": "35667:4:10", + "type": "", + "value": "0x77" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35660:3:10", + "nodeType": "YulIdentifier", + "src": "35660:3:10" + }, + "nativeSrc": "35660:12:10", + "nodeType": "YulFunctionCall", + "src": "35660:12:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35653:3:10", + "nodeType": "YulIdentifier", + "src": "35653:3:10" + }, + "nativeSrc": "35653:20:10", + "nodeType": "YulFunctionCall", + "src": "35653:20:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "35640:6:10", + "nodeType": "YulIdentifier", + "src": "35640:6:10" + }, + "nativeSrc": "35640:34:10", + "nodeType": "YulFunctionCall", + "src": "35640:34:10" + }, + "nativeSrc": "35640:34:10", + "nodeType": "YulExpressionStatement", + "src": "35640:34:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3461, + "isOffset": false, + "isSlot": false, + "src": "34953:4:10", + "valueSize": 1 + }, + { + "declaration": 3461, + "isOffset": false, + "isSlot": false, + "src": "35247:4:10", + "valueSize": 1 + }, + { + "declaration": 3464, + "isOffset": false, + "isSlot": false, + "src": "34909:1:10", + "valueSize": 1 + }, + { + "declaration": 3464, + "isOffset": false, + "isSlot": false, + "src": "35219:1:10", + "valueSize": 1 + }, + { + "declaration": 3464, + "isOffset": false, + "isSlot": false, + "src": "35302:1:10", + "valueSize": 1 + }, + { + "declaration": 3464, + "isOffset": false, + "isSlot": false, + "src": "35369:1:10", + "valueSize": 1 + }, + { + "declaration": 3464, + "isOffset": false, + "isSlot": false, + "src": "35418:1:10", + "valueSize": 1 + }, + { + "declaration": 3464, + "isOffset": false, + "isSlot": false, + "src": "35509:1:10", + "valueSize": 1 + }, + { + "declaration": 3464, + "isOffset": false, + "isSlot": false, + "src": "35570:1:10", + "valueSize": 1 + }, + { + "declaration": 3464, + "isOffset": false, + "isSlot": false, + "src": "35657:1:10", + "valueSize": 1 + }, + { + "declaration": 3459, + "isOffset": false, + "isSlot": false, + "src": "35379:14:10", + "valueSize": 1 + } + ], + "id": 3466, + "nodeType": "InlineAssembly", + "src": "34886:818:10" + } + ] + }, + "documentation": { + "id": 3457, + "nodeType": "StructuredDocumentation", + "src": "34574:126:10", + "text": "@dev Returns the initialization code of the clone of `implementation`\n using immutable arguments encoded in `args`." + }, + "id": 3468, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCode", + "nameLocation": "34714:8:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3462, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3459, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "34731:14:10", + "nodeType": "VariableDeclaration", + "scope": 3468, + "src": "34723:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3458, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "34723:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3461, + "mutability": "mutable", + "name": "args", + "nameLocation": "34760:4:10", + "nodeType": "VariableDeclaration", + "scope": 3468, + "src": "34747:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3460, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "34747:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "34722:43:10" + }, + "returnParameters": { + "id": 3465, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3464, + "mutability": "mutable", + "name": "c", + "nameLocation": "34826:1:10", + "nodeType": "VariableDeclaration", + "scope": 3468, + "src": "34813:14:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3463, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "34813:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "34812:16:10" + }, + "scope": 5104, + "src": "34705:1005:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3479, + "nodeType": "Block", + "src": "35982:723:10", + "statements": [ + { + "AST": { + "nativeSrc": "36044:655:10", + "nodeType": "YulBlock", + "src": "36044:655:10", + "statements": [ + { + "nativeSrc": "36058:20:10", + "nodeType": "YulVariableDeclaration", + "src": "36058:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "36073:4:10", + "nodeType": "YulLiteral", + "src": "36073:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "36067:5:10", + "nodeType": "YulIdentifier", + "src": "36067:5:10" + }, + "nativeSrc": "36067:11:10", + "nodeType": "YulFunctionCall", + "src": "36067:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "36062:1:10", + "nodeType": "YulTypedName", + "src": "36062:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "36091:20:10", + "nodeType": "YulVariableDeclaration", + "src": "36091:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "36106:4:10", + "nodeType": "YulIdentifier", + "src": "36106:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "36100:5:10", + "nodeType": "YulIdentifier", + "src": "36100:5:10" + }, + "nativeSrc": "36100:11:10", + "nodeType": "YulFunctionCall", + "src": "36100:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "36095:1:10", + "nodeType": "YulTypedName", + "src": "36095:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "36226:14:10", + "nodeType": "YulIdentifier", + "src": "36226:14:10" + }, + "nativeSrc": "36226:16:10", + "nodeType": "YulFunctionCall", + "src": "36226:16:10" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "36244:14:10", + "nodeType": "YulIdentifier", + "src": "36244:14:10" + }, + "nativeSrc": "36244:16:10", + "nodeType": "YulFunctionCall", + "src": "36244:16:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "36265:1:10", + "nodeType": "YulIdentifier", + "src": "36265:1:10" + }, + { + "kind": "number", + "nativeSrc": "36268:6:10", + "nodeType": "YulLiteral", + "src": "36268:6:10", + "type": "", + "value": "0xffd2" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "36262:2:10", + "nodeType": "YulIdentifier", + "src": "36262:2:10" + }, + "nativeSrc": "36262:13:10", + "nodeType": "YulFunctionCall", + "src": "36262:13:10" + } + ], + "functionName": { + "name": "returndatacopy", + "nativeSrc": "36211:14:10", + "nodeType": "YulIdentifier", + "src": "36211:14:10" + }, + "nativeSrc": "36211:65:10", + "nodeType": "YulFunctionCall", + "src": "36211:65:10" + }, + "nativeSrc": "36211:65:10", + "nodeType": "YulExpressionStatement", + "src": "36211:65:10" + }, + { + "body": { + "nativeSrc": "36339:92:10", + "nodeType": "YulBlock", + "src": "36339:92:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "36372:1:10", + "nodeType": "YulIdentifier", + "src": "36372:1:10" + }, + { + "kind": "number", + "nativeSrc": "36375:4:10", + "nodeType": "YulLiteral", + "src": "36375:4:10", + "type": "", + "value": "0x43" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36368:3:10", + "nodeType": "YulIdentifier", + "src": "36368:3:10" + }, + "nativeSrc": "36368:12:10", + "nodeType": "YulFunctionCall", + "src": "36368:12:10" + }, + { + "name": "i", + "nativeSrc": "36382:1:10", + "nodeType": "YulIdentifier", + "src": "36382:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36364:3:10", + "nodeType": "YulIdentifier", + "src": "36364:3:10" + }, + "nativeSrc": "36364:20:10", + "nodeType": "YulFunctionCall", + "src": "36364:20:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "36400:4:10", + "nodeType": "YulIdentifier", + "src": "36400:4:10" + }, + { + "kind": "number", + "nativeSrc": "36406:4:10", + "nodeType": "YulLiteral", + "src": "36406:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36396:3:10", + "nodeType": "YulIdentifier", + "src": "36396:3:10" + }, + "nativeSrc": "36396:15:10", + "nodeType": "YulFunctionCall", + "src": "36396:15:10" + }, + { + "name": "i", + "nativeSrc": "36413:1:10", + "nodeType": "YulIdentifier", + "src": "36413:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36392:3:10", + "nodeType": "YulIdentifier", + "src": "36392:3:10" + }, + "nativeSrc": "36392:23:10", + "nodeType": "YulFunctionCall", + "src": "36392:23:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "36386:5:10", + "nodeType": "YulIdentifier", + "src": "36386:5:10" + }, + "nativeSrc": "36386:30:10", + "nodeType": "YulFunctionCall", + "src": "36386:30:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "36357:6:10", + "nodeType": "YulIdentifier", + "src": "36357:6:10" + }, + "nativeSrc": "36357:60:10", + "nodeType": "YulFunctionCall", + "src": "36357:60:10" + }, + "nativeSrc": "36357:60:10", + "nodeType": "YulExpressionStatement", + "src": "36357:60:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "36311:1:10", + "nodeType": "YulIdentifier", + "src": "36311:1:10" + }, + { + "name": "n", + "nativeSrc": "36314:1:10", + "nodeType": "YulIdentifier", + "src": "36314:1:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "36308:2:10", + "nodeType": "YulIdentifier", + "src": "36308:2:10" + }, + "nativeSrc": "36308:8:10", + "nodeType": "YulFunctionCall", + "src": "36308:8:10" + }, + "nativeSrc": "36289:142:10", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "36317:21:10", + "nodeType": "YulBlock", + "src": "36317:21:10", + "statements": [ + { + "nativeSrc": "36319:17:10", + "nodeType": "YulAssignment", + "src": "36319:17:10", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "36328:1:10", + "nodeType": "YulIdentifier", + "src": "36328:1:10" + }, + { + "kind": "number", + "nativeSrc": "36331:4:10", + "nodeType": "YulLiteral", + "src": "36331:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36324:3:10", + "nodeType": "YulIdentifier", + "src": "36324:3:10" + }, + "nativeSrc": "36324:12:10", + "nodeType": "YulFunctionCall", + "src": "36324:12:10" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "36319:1:10", + "nodeType": "YulIdentifier", + "src": "36319:1:10" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "36293:14:10", + "nodeType": "YulBlock", + "src": "36293:14:10", + "statements": [ + { + "nativeSrc": "36295:10:10", + "nodeType": "YulVariableDeclaration", + "src": "36295:10:10", + "value": { + "kind": "number", + "nativeSrc": "36304:1:10", + "nodeType": "YulLiteral", + "src": "36304:1:10", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "36299:1:10", + "nodeType": "YulTypedName", + "src": "36299:1:10", + "type": "" + } + ] + } + ] + }, + "src": "36289:142:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "36455:1:10", + "nodeType": "YulIdentifier", + "src": "36455:1:10" + }, + { + "kind": "number", + "nativeSrc": "36458:4:10", + "nodeType": "YulLiteral", + "src": "36458:4:10", + "type": "", + "value": "0x23" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36451:3:10", + "nodeType": "YulIdentifier", + "src": "36451:3:10" + }, + "nativeSrc": "36451:12:10", + "nodeType": "YulFunctionCall", + "src": "36451:12:10" + }, + { + "kind": "number", + "nativeSrc": "36465:32:10", + "nodeType": "YulLiteral", + "src": "36465:32:10", + "type": "", + "value": "0x5af43d82803e903d91602b57fd5bf3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "36444:6:10", + "nodeType": "YulIdentifier", + "src": "36444:6:10" + }, + "nativeSrc": "36444:54:10", + "nodeType": "YulFunctionCall", + "src": "36444:54:10" + }, + "nativeSrc": "36444:54:10", + "nodeType": "YulExpressionStatement", + "src": "36444:54:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "36522:1:10", + "nodeType": "YulIdentifier", + "src": "36522:1:10" + }, + { + "kind": "number", + "nativeSrc": "36525:4:10", + "nodeType": "YulLiteral", + "src": "36525:4:10", + "type": "", + "value": "0x14" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36518:3:10", + "nodeType": "YulIdentifier", + "src": "36518:3:10" + }, + "nativeSrc": "36518:12:10", + "nodeType": "YulFunctionCall", + "src": "36518:12:10" + }, + { + "name": "implementation", + "nativeSrc": "36532:14:10", + "nodeType": "YulIdentifier", + "src": "36532:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "36511:6:10", + "nodeType": "YulIdentifier", + "src": "36511:6:10" + }, + "nativeSrc": "36511:36:10", + "nodeType": "YulFunctionCall", + "src": "36511:36:10" + }, + "nativeSrc": "36511:36:10", + "nodeType": "YulExpressionStatement", + "src": "36511:36:10" + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "36567:1:10", + "nodeType": "YulIdentifier", + "src": "36567:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "36574:42:10", + "nodeType": "YulLiteral", + "src": "36574:42:10", + "type": "", + "value": "0x61002d3d81600a3d39f3363d3d373d3d3d363d73" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "36622:3:10", + "nodeType": "YulLiteral", + "src": "36622:3:10", + "type": "", + "value": "136" + }, + { + "name": "n", + "nativeSrc": "36627:1:10", + "nodeType": "YulIdentifier", + "src": "36627:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "36618:3:10", + "nodeType": "YulIdentifier", + "src": "36618:3:10" + }, + "nativeSrc": "36618:11:10", + "nodeType": "YulFunctionCall", + "src": "36618:11:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36570:3:10", + "nodeType": "YulIdentifier", + "src": "36570:3:10" + }, + "nativeSrc": "36570:60:10", + "nodeType": "YulFunctionCall", + "src": "36570:60:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "36560:6:10", + "nodeType": "YulIdentifier", + "src": "36560:6:10" + }, + "nativeSrc": "36560:71:10", + "nodeType": "YulFunctionCall", + "src": "36560:71:10" + }, + "nativeSrc": "36560:71:10", + "nodeType": "YulExpressionStatement", + "src": "36560:71:10" + }, + { + "nativeSrc": "36644:45:10", + "nodeType": "YulAssignment", + "src": "36644:45:10", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "36666:1:10", + "nodeType": "YulIdentifier", + "src": "36666:1:10" + }, + { + "kind": "number", + "nativeSrc": "36669:4:10", + "nodeType": "YulLiteral", + "src": "36669:4:10", + "type": "", + "value": "0x0c" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36662:3:10", + "nodeType": "YulIdentifier", + "src": "36662:3:10" + }, + "nativeSrc": "36662:12:10", + "nodeType": "YulFunctionCall", + "src": "36662:12:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "36680:1:10", + "nodeType": "YulIdentifier", + "src": "36680:1:10" + }, + { + "kind": "number", + "nativeSrc": "36683:4:10", + "nodeType": "YulLiteral", + "src": "36683:4:10", + "type": "", + "value": "0x37" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36676:3:10", + "nodeType": "YulIdentifier", + "src": "36676:3:10" + }, + "nativeSrc": "36676:12:10", + "nodeType": "YulFunctionCall", + "src": "36676:12:10" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "36652:9:10", + "nodeType": "YulIdentifier", + "src": "36652:9:10" + }, + "nativeSrc": "36652:37:10", + "nodeType": "YulFunctionCall", + "src": "36652:37:10" + }, + "variableNames": [ + { + "name": "hash", + "nativeSrc": "36644:4:10", + "nodeType": "YulIdentifier", + "src": "36644:4:10" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3473, + "isOffset": false, + "isSlot": false, + "src": "36106:4:10", + "valueSize": 1 + }, + { + "declaration": 3473, + "isOffset": false, + "isSlot": false, + "src": "36400:4:10", + "valueSize": 1 + }, + { + "declaration": 3476, + "isOffset": false, + "isSlot": false, + "src": "36644:4:10", + "valueSize": 1 + }, + { + "declaration": 3471, + "isOffset": false, + "isSlot": false, + "src": "36532:14:10", + "valueSize": 1 + } + ], + "id": 3478, + "nodeType": "InlineAssembly", + "src": "36035:664:10" + } + ] + }, + "documentation": { + "id": 3469, + "nodeType": "StructuredDocumentation", + "src": "35716:131:10", + "text": "@dev Returns the initialization code hash of the clone of `implementation`\n using immutable arguments encoded in `args`." + }, + "id": 3480, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeHash", + "nameLocation": "35861:12:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3474, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3471, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "35882:14:10", + "nodeType": "VariableDeclaration", + "scope": 3480, + "src": "35874:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3470, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "35874:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3473, + "mutability": "mutable", + "name": "args", + "nameLocation": "35911:4:10", + "nodeType": "VariableDeclaration", + "scope": 3480, + "src": "35898:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3472, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "35898:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "35873:43:10" + }, + "returnParameters": { + "id": 3477, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3476, + "mutability": "mutable", + "name": "hash", + "nameLocation": "35972:4:10", + "nodeType": "VariableDeclaration", + "scope": 3480, + "src": "35964:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3475, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "35964:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "35963:14:10" + }, + "scope": 5104, + "src": "35852:853:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3509, + "nodeType": "Block", + "src": "37143:137:10", + "statements": [ + { + "assignments": [ + 3495 + ], + "declarations": [ + { + "constant": false, + "id": 3495, + "mutability": "mutable", + "name": "hash", + "nameLocation": "37161:4:10", + "nodeType": "VariableDeclaration", + "scope": 3509, + "src": "37153:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3494, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "37153:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 3500, + "initialValue": { + "arguments": [ + { + "id": 3497, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3483, + "src": "37181:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3498, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3485, + "src": "37197:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 3496, + "name": "initCodeHash", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3210, + 3480 + ], + "referencedDeclaration": 3480, + "src": "37168:12:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (address,bytes memory) pure returns (bytes32)" + } + }, + "id": 3499, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "37168:34:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "37153:49:10" + }, + { + "expression": { + "id": 3507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3501, + "name": "predicted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3492, + "src": "37212:9:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3503, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3495, + "src": "37252:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 3504, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3487, + "src": "37258:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 3505, + "name": "deployer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3489, + "src": "37264:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3502, + "name": "predictDeterministicAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3237, + 3510, + 5081 + ], + "referencedDeclaration": 5081, + "src": "37224:27:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_address_$", + "typeString": "function (bytes32,bytes32,address) pure returns (address)" + } + }, + "id": 3506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "37224:49:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "37212:61:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3508, + "nodeType": "ExpressionStatement", + "src": "37212:61:10" + } + ] + }, + "documentation": { + "id": 3481, + "nodeType": "StructuredDocumentation", + "src": "36711:235:10", + "text": "@dev Returns the address of the clone of\n `implementation` using immutable arguments encoded in `args`, with `salt`, by `deployer`.\n Note: The returned result has dirty upper 96 bits. Please clean if used in assembly." + }, + "id": 3510, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "predictDeterministicAddress", + "nameLocation": "36960:27:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3490, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3483, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "37005:14:10", + "nodeType": "VariableDeclaration", + "scope": 3510, + "src": "36997:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3482, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "36997:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3485, + "mutability": "mutable", + "name": "data", + "nameLocation": "37042:4:10", + "nodeType": "VariableDeclaration", + "scope": 3510, + "src": "37029:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3484, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "37029:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3487, + "mutability": "mutable", + "name": "salt", + "nameLocation": "37064:4:10", + "nodeType": "VariableDeclaration", + "scope": 3510, + "src": "37056:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3486, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "37056:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3489, + "mutability": "mutable", + "name": "deployer", + "nameLocation": "37086:8:10", + "nodeType": "VariableDeclaration", + "scope": 3510, + "src": "37078:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3488, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "37078:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "36987:113:10" + }, + "returnParameters": { + "id": 3493, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3492, + "mutability": "mutable", + "name": "predicted", + "nameLocation": "37132:9:10", + "nodeType": "VariableDeclaration", + "scope": 3510, + "src": "37124:17:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3491, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "37124:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "37123:19:10" + }, + "scope": 5104, + "src": "36951:329:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3519, + "nodeType": "Block", + "src": "37436:371:10", + "statements": [ + { + "AST": { + "nativeSrc": "37498:303:10", + "nodeType": "YulBlock", + "src": "37498:303:10", + "statements": [ + { + "nativeSrc": "37512:19:10", + "nodeType": "YulAssignment", + "src": "37512:19:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "37526:4:10", + "nodeType": "YulLiteral", + "src": "37526:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "37520:5:10", + "nodeType": "YulIdentifier", + "src": "37520:5:10" + }, + "nativeSrc": "37520:11:10", + "nodeType": "YulFunctionCall", + "src": "37520:11:10" + }, + "variableNames": [ + { + "name": "args", + "nativeSrc": "37512:4:10", + "nodeType": "YulIdentifier", + "src": "37512:4:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "args", + "nativeSrc": "37551:4:10", + "nodeType": "YulIdentifier", + "src": "37551:4:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "37561:12:10", + "nodeType": "YulLiteral", + "src": "37561:12:10", + "type": "", + "value": "0xffffffffff" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "37591:8:10", + "nodeType": "YulIdentifier", + "src": "37591:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "37579:11:10", + "nodeType": "YulIdentifier", + "src": "37579:11:10" + }, + "nativeSrc": "37579:21:10", + "nodeType": "YulFunctionCall", + "src": "37579:21:10" + }, + { + "kind": "number", + "nativeSrc": "37602:4:10", + "nodeType": "YulLiteral", + "src": "37602:4:10", + "type": "", + "value": "0x2d" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "37575:3:10", + "nodeType": "YulIdentifier", + "src": "37575:3:10" + }, + "nativeSrc": "37575:32:10", + "nodeType": "YulFunctionCall", + "src": "37575:32:10" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "37557:3:10", + "nodeType": "YulIdentifier", + "src": "37557:3:10" + }, + "nativeSrc": "37557:51:10", + "nodeType": "YulFunctionCall", + "src": "37557:51:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "37544:6:10", + "nodeType": "YulIdentifier", + "src": "37544:6:10" + }, + "nativeSrc": "37544:65:10", + "nodeType": "YulFunctionCall", + "src": "37544:65:10" + }, + "nativeSrc": "37544:65:10", + "nodeType": "YulExpressionStatement", + "src": "37544:65:10" + }, + { + "expression": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "37655:8:10", + "nodeType": "YulIdentifier", + "src": "37655:8:10" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "37669:4:10", + "nodeType": "YulIdentifier", + "src": "37669:4:10" + }, + { + "kind": "number", + "nativeSrc": "37675:4:10", + "nodeType": "YulLiteral", + "src": "37675:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "37665:3:10", + "nodeType": "YulIdentifier", + "src": "37665:3:10" + }, + "nativeSrc": "37665:15:10", + "nodeType": "YulFunctionCall", + "src": "37665:15:10" + }, + { + "kind": "number", + "nativeSrc": "37682:4:10", + "nodeType": "YulLiteral", + "src": "37682:4:10", + "type": "", + "value": "0x2d" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "37698:4:10", + "nodeType": "YulIdentifier", + "src": "37698:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "37692:5:10", + "nodeType": "YulIdentifier", + "src": "37692:5:10" + }, + "nativeSrc": "37692:11:10", + "nodeType": "YulFunctionCall", + "src": "37692:11:10" + }, + { + "kind": "number", + "nativeSrc": "37705:4:10", + "nodeType": "YulLiteral", + "src": "37705:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "37688:3:10", + "nodeType": "YulIdentifier", + "src": "37688:3:10" + }, + "nativeSrc": "37688:22:10", + "nodeType": "YulFunctionCall", + "src": "37688:22:10" + } + ], + "functionName": { + "name": "extcodecopy", + "nativeSrc": "37643:11:10", + "nodeType": "YulIdentifier", + "src": "37643:11:10" + }, + "nativeSrc": "37643:68:10", + "nodeType": "YulFunctionCall", + "src": "37643:68:10" + }, + "nativeSrc": "37643:68:10", + "nodeType": "YulExpressionStatement", + "src": "37643:68:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "37731:4:10", + "nodeType": "YulLiteral", + "src": "37731:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "37747:4:10", + "nodeType": "YulIdentifier", + "src": "37747:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "37741:5:10", + "nodeType": "YulIdentifier", + "src": "37741:5:10" + }, + "nativeSrc": "37741:11:10", + "nodeType": "YulFunctionCall", + "src": "37741:11:10" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "37758:4:10", + "nodeType": "YulIdentifier", + "src": "37758:4:10" + }, + { + "kind": "number", + "nativeSrc": "37764:4:10", + "nodeType": "YulLiteral", + "src": "37764:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "37754:3:10", + "nodeType": "YulIdentifier", + "src": "37754:3:10" + }, + "nativeSrc": "37754:15:10", + "nodeType": "YulFunctionCall", + "src": "37754:15:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "37737:3:10", + "nodeType": "YulIdentifier", + "src": "37737:3:10" + }, + "nativeSrc": "37737:33:10", + "nodeType": "YulFunctionCall", + "src": "37737:33:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "37724:6:10", + "nodeType": "YulIdentifier", + "src": "37724:6:10" + }, + "nativeSrc": "37724:47:10", + "nodeType": "YulFunctionCall", + "src": "37724:47:10" + }, + "nativeSrc": "37724:47:10", + "nodeType": "YulExpressionStatement", + "src": "37724:47:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3516, + "isOffset": false, + "isSlot": false, + "src": "37512:4:10", + "valueSize": 1 + }, + { + "declaration": 3516, + "isOffset": false, + "isSlot": false, + "src": "37551:4:10", + "valueSize": 1 + }, + { + "declaration": 3516, + "isOffset": false, + "isSlot": false, + "src": "37669:4:10", + "valueSize": 1 + }, + { + "declaration": 3516, + "isOffset": false, + "isSlot": false, + "src": "37698:4:10", + "valueSize": 1 + }, + { + "declaration": 3516, + "isOffset": false, + "isSlot": false, + "src": "37747:4:10", + "valueSize": 1 + }, + { + "declaration": 3516, + "isOffset": false, + "isSlot": false, + "src": "37758:4:10", + "valueSize": 1 + }, + { + "declaration": 3513, + "isOffset": false, + "isSlot": false, + "src": "37591:8:10", + "valueSize": 1 + }, + { + "declaration": 3513, + "isOffset": false, + "isSlot": false, + "src": "37655:8:10", + "valueSize": 1 + } + ], + "id": 3518, + "nodeType": "InlineAssembly", + "src": "37489:312:10" + } + ] + }, + "documentation": { + "id": 3511, + "nodeType": "StructuredDocumentation", + "src": "37286:64:10", + "text": "@dev Equivalent to `argsOnClone(instance, 0, 2 ** 256 - 1)`." + }, + "id": 3520, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "argsOnClone", + "nameLocation": "37364:11:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3514, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3513, + "mutability": "mutable", + "name": "instance", + "nameLocation": "37384:8:10", + "nodeType": "VariableDeclaration", + "scope": 3520, + "src": "37376:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3512, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "37376:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "37375:18:10" + }, + "returnParameters": { + "id": 3517, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3516, + "mutability": "mutable", + "name": "args", + "nameLocation": "37430:4:10", + "nodeType": "VariableDeclaration", + "scope": 3520, + "src": "37417:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3515, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "37417:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "37416:19:10" + }, + "scope": 5104, + "src": "37355:452:10", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3531, + "nodeType": "Block", + "src": "38010:485:10", + "statements": [ + { + "AST": { + "nativeSrc": "38072:417:10", + "nodeType": "YulBlock", + "src": "38072:417:10", + "statements": [ + { + "nativeSrc": "38086:19:10", + "nodeType": "YulAssignment", + "src": "38086:19:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "38100:4:10", + "nodeType": "YulLiteral", + "src": "38100:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "38094:5:10", + "nodeType": "YulIdentifier", + "src": "38094:5:10" + }, + "nativeSrc": "38094:11:10", + "nodeType": "YulFunctionCall", + "src": "38094:11:10" + }, + "variableNames": [ + { + "name": "args", + "nativeSrc": "38086:4:10", + "nodeType": "YulIdentifier", + "src": "38086:4:10" + } + ] + }, + { + "nativeSrc": "38118:60:10", + "nodeType": "YulVariableDeclaration", + "src": "38118:60:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "38131:12:10", + "nodeType": "YulLiteral", + "src": "38131:12:10", + "type": "", + "value": "0xffffffffff" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "38161:8:10", + "nodeType": "YulIdentifier", + "src": "38161:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "38149:11:10", + "nodeType": "YulIdentifier", + "src": "38149:11:10" + }, + "nativeSrc": "38149:21:10", + "nodeType": "YulFunctionCall", + "src": "38149:21:10" + }, + { + "kind": "number", + "nativeSrc": "38172:4:10", + "nodeType": "YulLiteral", + "src": "38172:4:10", + "type": "", + "value": "0x2d" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "38145:3:10", + "nodeType": "YulIdentifier", + "src": "38145:3:10" + }, + "nativeSrc": "38145:32:10", + "nodeType": "YulFunctionCall", + "src": "38145:32:10" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "38127:3:10", + "nodeType": "YulIdentifier", + "src": "38127:3:10" + }, + "nativeSrc": "38127:51:10", + "nodeType": "YulFunctionCall", + "src": "38127:51:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "38122:1:10", + "nodeType": "YulTypedName", + "src": "38122:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "38191:56:10", + "nodeType": "YulVariableDeclaration", + "src": "38191:56:10", + "value": { + "arguments": [ + { + "name": "n", + "nativeSrc": "38204:1:10", + "nodeType": "YulIdentifier", + "src": "38204:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "38211:8:10", + "nodeType": "YulLiteral", + "src": "38211:8:10", + "type": "", + "value": "0xffffff" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "start", + "nativeSrc": "38228:5:10", + "nodeType": "YulIdentifier", + "src": "38228:5:10" + }, + { + "name": "n", + "nativeSrc": "38235:1:10", + "nodeType": "YulIdentifier", + "src": "38235:1:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "38225:2:10", + "nodeType": "YulIdentifier", + "src": "38225:2:10" + }, + "nativeSrc": "38225:12:10", + "nodeType": "YulFunctionCall", + "src": "38225:12:10" + }, + { + "name": "start", + "nativeSrc": "38239:5:10", + "nodeType": "YulIdentifier", + "src": "38239:5:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "38221:3:10", + "nodeType": "YulIdentifier", + "src": "38221:3:10" + }, + "nativeSrc": "38221:24:10", + "nodeType": "YulFunctionCall", + "src": "38221:24:10" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "38207:3:10", + "nodeType": "YulIdentifier", + "src": "38207:3:10" + }, + "nativeSrc": "38207:39:10", + "nodeType": "YulFunctionCall", + "src": "38207:39:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "38200:3:10", + "nodeType": "YulIdentifier", + "src": "38200:3:10" + }, + "nativeSrc": "38200:47:10", + "nodeType": "YulFunctionCall", + "src": "38200:47:10" + }, + "variables": [ + { + "name": "l", + "nativeSrc": "38195:1:10", + "nodeType": "YulTypedName", + "src": "38195:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "38272:8:10", + "nodeType": "YulIdentifier", + "src": "38272:8:10" + }, + { + "name": "args", + "nativeSrc": "38282:4:10", + "nodeType": "YulIdentifier", + "src": "38282:4:10" + }, + { + "arguments": [ + { + "name": "start", + "nativeSrc": "38292:5:10", + "nodeType": "YulIdentifier", + "src": "38292:5:10" + }, + { + "kind": "number", + "nativeSrc": "38299:4:10", + "nodeType": "YulLiteral", + "src": "38299:4:10", + "type": "", + "value": "0x0d" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "38288:3:10", + "nodeType": "YulIdentifier", + "src": "38288:3:10" + }, + "nativeSrc": "38288:16:10", + "nodeType": "YulFunctionCall", + "src": "38288:16:10" + }, + { + "arguments": [ + { + "name": "l", + "nativeSrc": "38310:1:10", + "nodeType": "YulIdentifier", + "src": "38310:1:10" + }, + { + "kind": "number", + "nativeSrc": "38313:4:10", + "nodeType": "YulLiteral", + "src": "38313:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "38306:3:10", + "nodeType": "YulIdentifier", + "src": "38306:3:10" + }, + "nativeSrc": "38306:12:10", + "nodeType": "YulFunctionCall", + "src": "38306:12:10" + } + ], + "functionName": { + "name": "extcodecopy", + "nativeSrc": "38260:11:10", + "nodeType": "YulIdentifier", + "src": "38260:11:10" + }, + "nativeSrc": "38260:59:10", + "nodeType": "YulFunctionCall", + "src": "38260:59:10" + }, + "nativeSrc": "38260:59:10", + "nodeType": "YulExpressionStatement", + "src": "38260:59:10" + }, + { + "expression": { + "arguments": [ + { + "name": "args", + "nativeSrc": "38339:4:10", + "nodeType": "YulIdentifier", + "src": "38339:4:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "n", + "nativeSrc": "38353:1:10", + "nodeType": "YulIdentifier", + "src": "38353:1:10" + }, + { + "name": "start", + "nativeSrc": "38356:5:10", + "nodeType": "YulIdentifier", + "src": "38356:5:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "38349:3:10", + "nodeType": "YulIdentifier", + "src": "38349:3:10" + }, + "nativeSrc": "38349:13:10", + "nodeType": "YulFunctionCall", + "src": "38349:13:10" + }, + { + "arguments": [ + { + "name": "start", + "nativeSrc": "38367:5:10", + "nodeType": "YulIdentifier", + "src": "38367:5:10" + }, + { + "name": "n", + "nativeSrc": "38374:1:10", + "nodeType": "YulIdentifier", + "src": "38374:1:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "38364:2:10", + "nodeType": "YulIdentifier", + "src": "38364:2:10" + }, + "nativeSrc": "38364:12:10", + "nodeType": "YulFunctionCall", + "src": "38364:12:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "38345:3:10", + "nodeType": "YulIdentifier", + "src": "38345:3:10" + }, + "nativeSrc": "38345:32:10", + "nodeType": "YulFunctionCall", + "src": "38345:32:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "38332:6:10", + "nodeType": "YulIdentifier", + "src": "38332:6:10" + }, + "nativeSrc": "38332:46:10", + "nodeType": "YulFunctionCall", + "src": "38332:46:10" + }, + "nativeSrc": "38332:46:10", + "nodeType": "YulExpressionStatement", + "src": "38332:46:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "38419:4:10", + "nodeType": "YulLiteral", + "src": "38419:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "38429:4:10", + "nodeType": "YulIdentifier", + "src": "38429:4:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "38439:4:10", + "nodeType": "YulLiteral", + "src": "38439:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "38451:4:10", + "nodeType": "YulIdentifier", + "src": "38451:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "38445:5:10", + "nodeType": "YulIdentifier", + "src": "38445:5:10" + }, + "nativeSrc": "38445:11:10", + "nodeType": "YulFunctionCall", + "src": "38445:11:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "38435:3:10", + "nodeType": "YulIdentifier", + "src": "38435:3:10" + }, + "nativeSrc": "38435:22:10", + "nodeType": "YulFunctionCall", + "src": "38435:22:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "38425:3:10", + "nodeType": "YulIdentifier", + "src": "38425:3:10" + }, + "nativeSrc": "38425:33:10", + "nodeType": "YulFunctionCall", + "src": "38425:33:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "38412:6:10", + "nodeType": "YulIdentifier", + "src": "38412:6:10" + }, + "nativeSrc": "38412:47:10", + "nodeType": "YulFunctionCall", + "src": "38412:47:10" + }, + "nativeSrc": "38412:47:10", + "nodeType": "YulExpressionStatement", + "src": "38412:47:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3528, + "isOffset": false, + "isSlot": false, + "src": "38086:4:10", + "valueSize": 1 + }, + { + "declaration": 3528, + "isOffset": false, + "isSlot": false, + "src": "38282:4:10", + "valueSize": 1 + }, + { + "declaration": 3528, + "isOffset": false, + "isSlot": false, + "src": "38339:4:10", + "valueSize": 1 + }, + { + "declaration": 3528, + "isOffset": false, + "isSlot": false, + "src": "38429:4:10", + "valueSize": 1 + }, + { + "declaration": 3528, + "isOffset": false, + "isSlot": false, + "src": "38451:4:10", + "valueSize": 1 + }, + { + "declaration": 3523, + "isOffset": false, + "isSlot": false, + "src": "38161:8:10", + "valueSize": 1 + }, + { + "declaration": 3523, + "isOffset": false, + "isSlot": false, + "src": "38272:8:10", + "valueSize": 1 + }, + { + "declaration": 3525, + "isOffset": false, + "isSlot": false, + "src": "38228:5:10", + "valueSize": 1 + }, + { + "declaration": 3525, + "isOffset": false, + "isSlot": false, + "src": "38239:5:10", + "valueSize": 1 + }, + { + "declaration": 3525, + "isOffset": false, + "isSlot": false, + "src": "38292:5:10", + "valueSize": 1 + }, + { + "declaration": 3525, + "isOffset": false, + "isSlot": false, + "src": "38356:5:10", + "valueSize": 1 + }, + { + "declaration": 3525, + "isOffset": false, + "isSlot": false, + "src": "38367:5:10", + "valueSize": 1 + } + ], + "id": 3530, + "nodeType": "InlineAssembly", + "src": "38063:426:10" + } + ] + }, + "documentation": { + "id": 3521, + "nodeType": "StructuredDocumentation", + "src": "37813:68:10", + "text": "@dev Equivalent to `argsOnClone(instance, start, 2 ** 256 - 1)`." + }, + "id": 3532, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "argsOnClone", + "nameLocation": "37895:11:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3526, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3523, + "mutability": "mutable", + "name": "instance", + "nameLocation": "37915:8:10", + "nodeType": "VariableDeclaration", + "scope": 3532, + "src": "37907:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3522, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "37907:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3525, + "mutability": "mutable", + "name": "start", + "nameLocation": "37933:5:10", + "nodeType": "VariableDeclaration", + "scope": 3532, + "src": "37925:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3524, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "37925:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "37906:33:10" + }, + "returnParameters": { + "id": 3529, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3528, + "mutability": "mutable", + "name": "args", + "nameLocation": "38000:4:10", + "nodeType": "VariableDeclaration", + "scope": 3532, + "src": "37987:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3527, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "37987:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "37986:19:10" + }, + "scope": 5104, + "src": "37886:609:10", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3545, + "nodeType": "Block", + "src": "39002:785:10", + "statements": [ + { + "AST": { + "nativeSrc": "39064:717:10", + "nodeType": "YulBlock", + "src": "39064:717:10", + "statements": [ + { + "nativeSrc": "39078:19:10", + "nodeType": "YulAssignment", + "src": "39078:19:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "39092:4:10", + "nodeType": "YulLiteral", + "src": "39092:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "39086:5:10", + "nodeType": "YulIdentifier", + "src": "39086:5:10" + }, + "nativeSrc": "39086:11:10", + "nodeType": "YulFunctionCall", + "src": "39086:11:10" + }, + "variableNames": [ + { + "name": "args", + "nativeSrc": "39078:4:10", + "nodeType": "YulIdentifier", + "src": "39078:4:10" + } + ] + }, + { + "body": { + "nativeSrc": "39137:17:10", + "nodeType": "YulBlock", + "src": "39137:17:10", + "statements": [ + { + "nativeSrc": "39139:13:10", + "nodeType": "YulAssignment", + "src": "39139:13:10", + "value": { + "kind": "number", + "nativeSrc": "39146:6:10", + "nodeType": "YulLiteral", + "src": "39146:6:10", + "type": "", + "value": "0xffff" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "39139:3:10", + "nodeType": "YulIdentifier", + "src": "39139:3:10" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "end", + "nativeSrc": "39123:3:10", + "nodeType": "YulIdentifier", + "src": "39123:3:10" + }, + { + "kind": "number", + "nativeSrc": "39128:6:10", + "nodeType": "YulLiteral", + "src": "39128:6:10", + "type": "", + "value": "0xffff" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "39120:2:10", + "nodeType": "YulIdentifier", + "src": "39120:2:10" + }, + "nativeSrc": "39120:15:10", + "nodeType": "YulFunctionCall", + "src": "39120:15:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "39113:6:10", + "nodeType": "YulIdentifier", + "src": "39113:6:10" + }, + "nativeSrc": "39113:23:10", + "nodeType": "YulFunctionCall", + "src": "39113:23:10" + }, + "nativeSrc": "39110:44:10", + "nodeType": "YulIf", + "src": "39110:44:10" + }, + { + "nativeSrc": "39167:45:10", + "nodeType": "YulVariableDeclaration", + "src": "39167:45:10", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "end", + "nativeSrc": "39184:3:10", + "nodeType": "YulIdentifier", + "src": "39184:3:10" + }, + { + "name": "start", + "nativeSrc": "39189:5:10", + "nodeType": "YulIdentifier", + "src": "39189:5:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "39180:3:10", + "nodeType": "YulIdentifier", + "src": "39180:3:10" + }, + "nativeSrc": "39180:15:10", + "nodeType": "YulFunctionCall", + "src": "39180:15:10" + }, + { + "arguments": [ + { + "name": "start", + "nativeSrc": "39200:5:10", + "nodeType": "YulIdentifier", + "src": "39200:5:10" + }, + { + "name": "end", + "nativeSrc": "39207:3:10", + "nodeType": "YulIdentifier", + "src": "39207:3:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "39197:2:10", + "nodeType": "YulIdentifier", + "src": "39197:2:10" + }, + "nativeSrc": "39197:14:10", + "nodeType": "YulFunctionCall", + "src": "39197:14:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "39176:3:10", + "nodeType": "YulIdentifier", + "src": "39176:3:10" + }, + "nativeSrc": "39176:36:10", + "nodeType": "YulFunctionCall", + "src": "39176:36:10" + }, + "variables": [ + { + "name": "d", + "nativeSrc": "39171:1:10", + "nodeType": "YulTypedName", + "src": "39171:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "39237:8:10", + "nodeType": "YulIdentifier", + "src": "39237:8:10" + }, + { + "name": "args", + "nativeSrc": "39247:4:10", + "nodeType": "YulIdentifier", + "src": "39247:4:10" + }, + { + "arguments": [ + { + "name": "start", + "nativeSrc": "39257:5:10", + "nodeType": "YulIdentifier", + "src": "39257:5:10" + }, + { + "kind": "number", + "nativeSrc": "39264:4:10", + "nodeType": "YulLiteral", + "src": "39264:4:10", + "type": "", + "value": "0x0d" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "39253:3:10", + "nodeType": "YulIdentifier", + "src": "39253:3:10" + }, + "nativeSrc": "39253:16:10", + "nodeType": "YulFunctionCall", + "src": "39253:16:10" + }, + { + "arguments": [ + { + "name": "d", + "nativeSrc": "39275:1:10", + "nodeType": "YulIdentifier", + "src": "39275:1:10" + }, + { + "kind": "number", + "nativeSrc": "39278:4:10", + "nodeType": "YulLiteral", + "src": "39278:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "39271:3:10", + "nodeType": "YulIdentifier", + "src": "39271:3:10" + }, + "nativeSrc": "39271:12:10", + "nodeType": "YulFunctionCall", + "src": "39271:12:10" + } + ], + "functionName": { + "name": "extcodecopy", + "nativeSrc": "39225:11:10", + "nodeType": "YulIdentifier", + "src": "39225:11:10" + }, + "nativeSrc": "39225:59:10", + "nodeType": "YulFunctionCall", + "src": "39225:59:10" + }, + "nativeSrc": "39225:59:10", + "nodeType": "YulExpressionStatement", + "src": "39225:59:10" + }, + { + "body": { + "nativeSrc": "39339:229:10", + "nodeType": "YulBlock", + "src": "39339:229:10", + "statements": [ + { + "nativeSrc": "39357:41:10", + "nodeType": "YulVariableDeclaration", + "src": "39357:41:10", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "39382:8:10", + "nodeType": "YulIdentifier", + "src": "39382:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "39370:11:10", + "nodeType": "YulIdentifier", + "src": "39370:11:10" + }, + "nativeSrc": "39370:21:10", + "nodeType": "YulFunctionCall", + "src": "39370:21:10" + }, + { + "kind": "number", + "nativeSrc": "39393:4:10", + "nodeType": "YulLiteral", + "src": "39393:4:10", + "type": "", + "value": "0x2d" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "39366:3:10", + "nodeType": "YulIdentifier", + "src": "39366:3:10" + }, + "nativeSrc": "39366:32:10", + "nodeType": "YulFunctionCall", + "src": "39366:32:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "39361:1:10", + "nodeType": "YulTypedName", + "src": "39361:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "39430:14:10", + "nodeType": "YulIdentifier", + "src": "39430:14:10" + }, + "nativeSrc": "39430:16:10", + "nodeType": "YulFunctionCall", + "src": "39430:16:10" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "39448:14:10", + "nodeType": "YulIdentifier", + "src": "39448:14:10" + }, + "nativeSrc": "39448:16:10", + "nodeType": "YulFunctionCall", + "src": "39448:16:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "39470:2:10", + "nodeType": "YulLiteral", + "src": "39470:2:10", + "type": "", + "value": "40" + }, + { + "name": "n", + "nativeSrc": "39474:1:10", + "nodeType": "YulIdentifier", + "src": "39474:1:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "39466:3:10", + "nodeType": "YulIdentifier", + "src": "39466:3:10" + }, + "nativeSrc": "39466:10:10", + "nodeType": "YulFunctionCall", + "src": "39466:10:10" + } + ], + "functionName": { + "name": "returndatacopy", + "nativeSrc": "39415:14:10", + "nodeType": "YulIdentifier", + "src": "39415:14:10" + }, + "nativeSrc": "39415:62:10", + "nodeType": "YulFunctionCall", + "src": "39415:62:10" + }, + "nativeSrc": "39415:62:10", + "nodeType": "YulExpressionStatement", + "src": "39415:62:10" + }, + { + "nativeSrc": "39494:60:10", + "nodeType": "YulAssignment", + "src": "39494:60:10", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "n", + "nativeSrc": "39506:1:10", + "nodeType": "YulIdentifier", + "src": "39506:1:10" + }, + { + "name": "start", + "nativeSrc": "39509:5:10", + "nodeType": "YulIdentifier", + "src": "39509:5:10" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "39503:2:10", + "nodeType": "YulIdentifier", + "src": "39503:2:10" + }, + "nativeSrc": "39503:12:10", + "nodeType": "YulFunctionCall", + "src": "39503:12:10" + }, + { + "arguments": [ + { + "name": "d", + "nativeSrc": "39521:1:10", + "nodeType": "YulIdentifier", + "src": "39521:1:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "end", + "nativeSrc": "39531:3:10", + "nodeType": "YulIdentifier", + "src": "39531:3:10" + }, + { + "name": "n", + "nativeSrc": "39536:1:10", + "nodeType": "YulIdentifier", + "src": "39536:1:10" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "39528:2:10", + "nodeType": "YulIdentifier", + "src": "39528:2:10" + }, + "nativeSrc": "39528:10:10", + "nodeType": "YulFunctionCall", + "src": "39528:10:10" + }, + { + "arguments": [ + { + "name": "end", + "nativeSrc": "39544:3:10", + "nodeType": "YulIdentifier", + "src": "39544:3:10" + }, + { + "name": "n", + "nativeSrc": "39549:1:10", + "nodeType": "YulIdentifier", + "src": "39549:1:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "39540:3:10", + "nodeType": "YulIdentifier", + "src": "39540:3:10" + }, + "nativeSrc": "39540:11:10", + "nodeType": "YulFunctionCall", + "src": "39540:11:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "39524:3:10", + "nodeType": "YulIdentifier", + "src": "39524:3:10" + }, + "nativeSrc": "39524:28:10", + "nodeType": "YulFunctionCall", + "src": "39524:28:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "39517:3:10", + "nodeType": "YulIdentifier", + "src": "39517:3:10" + }, + "nativeSrc": "39517:36:10", + "nodeType": "YulFunctionCall", + "src": "39517:36:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "39499:3:10", + "nodeType": "YulIdentifier", + "src": "39499:3:10" + }, + "nativeSrc": "39499:55:10", + "nodeType": "YulFunctionCall", + "src": "39499:55:10" + }, + "variableNames": [ + { + "name": "d", + "nativeSrc": "39494:1:10", + "nodeType": "YulIdentifier", + "src": "39494:1:10" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "39311:4:10", + "nodeType": "YulLiteral", + "src": "39311:4:10", + "type": "", + "value": "0xff" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "39327:4:10", + "nodeType": "YulIdentifier", + "src": "39327:4:10" + }, + { + "name": "d", + "nativeSrc": "39333:1:10", + "nodeType": "YulIdentifier", + "src": "39333:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "39323:3:10", + "nodeType": "YulIdentifier", + "src": "39323:3:10" + }, + "nativeSrc": "39323:12:10", + "nodeType": "YulFunctionCall", + "src": "39323:12:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "39317:5:10", + "nodeType": "YulIdentifier", + "src": "39317:5:10" + }, + "nativeSrc": "39317:19:10", + "nodeType": "YulFunctionCall", + "src": "39317:19:10" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "39307:3:10", + "nodeType": "YulIdentifier", + "src": "39307:3:10" + }, + "nativeSrc": "39307:30:10", + "nodeType": "YulFunctionCall", + "src": "39307:30:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "39300:6:10", + "nodeType": "YulIdentifier", + "src": "39300:6:10" + }, + "nativeSrc": "39300:38:10", + "nodeType": "YulFunctionCall", + "src": "39300:38:10" + }, + "nativeSrc": "39297:271:10", + "nodeType": "YulIf", + "src": "39297:271:10" + }, + { + "expression": { + "arguments": [ + { + "name": "args", + "nativeSrc": "39588:4:10", + "nodeType": "YulIdentifier", + "src": "39588:4:10" + }, + { + "name": "d", + "nativeSrc": "39594:1:10", + "nodeType": "YulIdentifier", + "src": "39594:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "39581:6:10", + "nodeType": "YulIdentifier", + "src": "39581:6:10" + }, + "nativeSrc": "39581:15:10", + "nodeType": "YulFunctionCall", + "src": "39581:15:10" + }, + "nativeSrc": "39581:15:10", + "nodeType": "YulExpressionStatement", + "src": "39581:15:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "39645:4:10", + "nodeType": "YulIdentifier", + "src": "39645:4:10" + }, + { + "kind": "number", + "nativeSrc": "39651:4:10", + "nodeType": "YulLiteral", + "src": "39651:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "39641:3:10", + "nodeType": "YulIdentifier", + "src": "39641:3:10" + }, + "nativeSrc": "39641:15:10", + "nodeType": "YulFunctionCall", + "src": "39641:15:10" + }, + { + "name": "d", + "nativeSrc": "39658:1:10", + "nodeType": "YulIdentifier", + "src": "39658:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "39637:3:10", + "nodeType": "YulIdentifier", + "src": "39637:3:10" + }, + "nativeSrc": "39637:23:10", + "nodeType": "YulFunctionCall", + "src": "39637:23:10" + }, + { + "kind": "number", + "nativeSrc": "39662:1:10", + "nodeType": "YulLiteral", + "src": "39662:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "39630:6:10", + "nodeType": "YulIdentifier", + "src": "39630:6:10" + }, + "nativeSrc": "39630:34:10", + "nodeType": "YulFunctionCall", + "src": "39630:34:10" + }, + "nativeSrc": "39630:34:10", + "nodeType": "YulExpressionStatement", + "src": "39630:34:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "39721:4:10", + "nodeType": "YulLiteral", + "src": "39721:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "39735:4:10", + "nodeType": "YulIdentifier", + "src": "39735:4:10" + }, + { + "kind": "number", + "nativeSrc": "39741:4:10", + "nodeType": "YulLiteral", + "src": "39741:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "39731:3:10", + "nodeType": "YulIdentifier", + "src": "39731:3:10" + }, + "nativeSrc": "39731:15:10", + "nodeType": "YulFunctionCall", + "src": "39731:15:10" + }, + { + "name": "d", + "nativeSrc": "39748:1:10", + "nodeType": "YulIdentifier", + "src": "39748:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "39727:3:10", + "nodeType": "YulIdentifier", + "src": "39727:3:10" + }, + "nativeSrc": "39727:23:10", + "nodeType": "YulFunctionCall", + "src": "39727:23:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "39714:6:10", + "nodeType": "YulIdentifier", + "src": "39714:6:10" + }, + "nativeSrc": "39714:37:10", + "nodeType": "YulFunctionCall", + "src": "39714:37:10" + }, + "nativeSrc": "39714:37:10", + "nodeType": "YulExpressionStatement", + "src": "39714:37:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3542, + "isOffset": false, + "isSlot": false, + "src": "39078:4:10", + "valueSize": 1 + }, + { + "declaration": 3542, + "isOffset": false, + "isSlot": false, + "src": "39247:4:10", + "valueSize": 1 + }, + { + "declaration": 3542, + "isOffset": false, + "isSlot": false, + "src": "39327:4:10", + "valueSize": 1 + }, + { + "declaration": 3542, + "isOffset": false, + "isSlot": false, + "src": "39588:4:10", + "valueSize": 1 + }, + { + "declaration": 3542, + "isOffset": false, + "isSlot": false, + "src": "39645:4:10", + "valueSize": 1 + }, + { + "declaration": 3542, + "isOffset": false, + "isSlot": false, + "src": "39735:4:10", + "valueSize": 1 + }, + { + "declaration": 3539, + "isOffset": false, + "isSlot": false, + "src": "39123:3:10", + "valueSize": 1 + }, + { + "declaration": 3539, + "isOffset": false, + "isSlot": false, + "src": "39139:3:10", + "valueSize": 1 + }, + { + "declaration": 3539, + "isOffset": false, + "isSlot": false, + "src": "39184:3:10", + "valueSize": 1 + }, + { + "declaration": 3539, + "isOffset": false, + "isSlot": false, + "src": "39207:3:10", + "valueSize": 1 + }, + { + "declaration": 3539, + "isOffset": false, + "isSlot": false, + "src": "39531:3:10", + "valueSize": 1 + }, + { + "declaration": 3539, + "isOffset": false, + "isSlot": false, + "src": "39544:3:10", + "valueSize": 1 + }, + { + "declaration": 3535, + "isOffset": false, + "isSlot": false, + "src": "39237:8:10", + "valueSize": 1 + }, + { + "declaration": 3535, + "isOffset": false, + "isSlot": false, + "src": "39382:8:10", + "valueSize": 1 + }, + { + "declaration": 3537, + "isOffset": false, + "isSlot": false, + "src": "39189:5:10", + "valueSize": 1 + }, + { + "declaration": 3537, + "isOffset": false, + "isSlot": false, + "src": "39200:5:10", + "valueSize": 1 + }, + { + "declaration": 3537, + "isOffset": false, + "isSlot": false, + "src": "39257:5:10", + "valueSize": 1 + }, + { + "declaration": 3537, + "isOffset": false, + "isSlot": false, + "src": "39509:5:10", + "valueSize": 1 + } + ], + "id": 3544, + "nodeType": "InlineAssembly", + "src": "39055:726:10" + } + ] + }, + "documentation": { + "id": 3533, + "nodeType": "StructuredDocumentation", + "src": "38501:359:10", + "text": "@dev Returns a slice of the immutable arguments on `instance` from `start` to `end`.\n `start` and `end` will be clamped to the range `[0, args.length]`.\n The `instance` MUST be deployed via the clone with immutable args functions.\n Otherwise, the behavior is undefined.\n Out-of-gas reverts if `instance` does not have any code." + }, + "id": 3546, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "argsOnClone", + "nameLocation": "38874:11:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3540, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3535, + "mutability": "mutable", + "name": "instance", + "nameLocation": "38894:8:10", + "nodeType": "VariableDeclaration", + "scope": 3546, + "src": "38886:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3534, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "38886:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3537, + "mutability": "mutable", + "name": "start", + "nameLocation": "38912:5:10", + "nodeType": "VariableDeclaration", + "scope": 3546, + "src": "38904:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3536, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "38904:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3539, + "mutability": "mutable", + "name": "end", + "nameLocation": "38927:3:10", + "nodeType": "VariableDeclaration", + "scope": 3546, + "src": "38919:11:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3538, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "38919:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "38885:46:10" + }, + "returnParameters": { + "id": 3543, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3542, + "mutability": "mutable", + "name": "args", + "nameLocation": "38992:4:10", + "nodeType": "VariableDeclaration", + "scope": 3546, + "src": "38979:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3541, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "38979:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "38978:19:10" + }, + "scope": 5104, + "src": "38865:922:10", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3561, + "nodeType": "Block", + "src": "40397:60:10", + "statements": [ + { + "expression": { + "id": 3559, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3554, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3552, + "src": "40407:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 3556, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "40432:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 3557, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3549, + "src": "40435:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3555, + "name": "deployERC1967", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3562, + 3574, + 3708, + 3722 + ], + "referencedDeclaration": 3574, + "src": "40418:13:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$_t_address_$", + "typeString": "function (uint256,address) returns (address)" + } + }, + "id": 3558, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "40418:32:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "40407:43:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3560, + "nodeType": "ExpressionStatement", + "src": "40407:43:10" + } + ] + }, + "documentation": { + "id": 3547, + "nodeType": "StructuredDocumentation", + "src": "40246:63:10", + "text": "@dev Deploys a minimal ERC1967 proxy with `implementation`." + }, + "id": 3562, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployERC1967", + "nameLocation": "40323:13:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3550, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3549, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "40345:14:10", + "nodeType": "VariableDeclaration", + "scope": 3562, + "src": "40337:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3548, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "40337:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "40336:24:10" + }, + "returnParameters": { + "id": 3553, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3552, + "mutability": "mutable", + "name": "instance", + "nameLocation": "40387:8:10", + "nodeType": "VariableDeclaration", + "scope": 3562, + "src": "40379:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3551, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "40379:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "40378:18:10" + }, + "scope": 5104, + "src": "40314:143:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3573, + "nodeType": "Block", + "src": "40697:6584:10", + "statements": [ + { + "AST": { + "nativeSrc": "40759:6516:10", + "nodeType": "YulBlock", + "src": "40759:6516:10", + "statements": [ + { + "nativeSrc": "46587:20:10", + "nodeType": "YulVariableDeclaration", + "src": "46587:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "46602:4:10", + "nodeType": "YulLiteral", + "src": "46602:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "46596:5:10", + "nodeType": "YulIdentifier", + "src": "46596:5:10" + }, + "nativeSrc": "46596:11:10", + "nodeType": "YulFunctionCall", + "src": "46596:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "46591:1:10", + "nodeType": "YulTypedName", + "src": "46591:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "46661:4:10", + "nodeType": "YulLiteral", + "src": "46661:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "46667:66:10", + "nodeType": "YulLiteral", + "src": "46667:66:10", + "type": "", + "value": "0xcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "46654:6:10", + "nodeType": "YulIdentifier", + "src": "46654:6:10" + }, + "nativeSrc": "46654:80:10", + "nodeType": "YulFunctionCall", + "src": "46654:80:10" + }, + "nativeSrc": "46654:80:10", + "nodeType": "YulExpressionStatement", + "src": "46654:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "46754:4:10", + "nodeType": "YulLiteral", + "src": "46754:4:10", + "type": "", + "value": "0x40" + }, + { + "kind": "number", + "nativeSrc": "46760:66:10", + "nodeType": "YulLiteral", + "src": "46760:66:10", + "type": "", + "value": "0x5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "46747:6:10", + "nodeType": "YulIdentifier", + "src": "46747:6:10" + }, + "nativeSrc": "46747:80:10", + "nodeType": "YulFunctionCall", + "src": "46747:80:10" + }, + "nativeSrc": "46747:80:10", + "nodeType": "YulExpressionStatement", + "src": "46747:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "46847:4:10", + "nodeType": "YulLiteral", + "src": "46847:4:10", + "type": "", + "value": "0x20" + }, + { + "kind": "number", + "nativeSrc": "46853:6:10", + "nodeType": "YulLiteral", + "src": "46853:6:10", + "type": "", + "value": "0x6009" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "46840:6:10", + "nodeType": "YulIdentifier", + "src": "46840:6:10" + }, + "nativeSrc": "46840:20:10", + "nodeType": "YulFunctionCall", + "src": "46840:20:10" + }, + "nativeSrc": "46840:20:10", + "nodeType": "YulExpressionStatement", + "src": "46840:20:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "46880:4:10", + "nodeType": "YulLiteral", + "src": "46880:4:10", + "type": "", + "value": "0x1e" + }, + { + "name": "implementation", + "nativeSrc": "46886:14:10", + "nodeType": "YulIdentifier", + "src": "46886:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "46873:6:10", + "nodeType": "YulIdentifier", + "src": "46873:6:10" + }, + "nativeSrc": "46873:28:10", + "nodeType": "YulFunctionCall", + "src": "46873:28:10" + }, + "nativeSrc": "46873:28:10", + "nodeType": "YulExpressionStatement", + "src": "46873:28:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "46921:4:10", + "nodeType": "YulLiteral", + "src": "46921:4:10", + "type": "", + "value": "0x0a" + }, + { + "kind": "number", + "nativeSrc": "46927:20:10", + "nodeType": "YulLiteral", + "src": "46927:20:10", + "type": "", + "value": "0x603d3d8160223d3973" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "46914:6:10", + "nodeType": "YulIdentifier", + "src": "46914:6:10" + }, + "nativeSrc": "46914:34:10", + "nodeType": "YulFunctionCall", + "src": "46914:34:10" + }, + "nativeSrc": "46914:34:10", + "nodeType": "YulExpressionStatement", + "src": "46914:34:10" + }, + { + "nativeSrc": "46961:37:10", + "nodeType": "YulAssignment", + "src": "46961:37:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "46980:5:10", + "nodeType": "YulIdentifier", + "src": "46980:5:10" + }, + { + "kind": "number", + "nativeSrc": "46987:4:10", + "nodeType": "YulLiteral", + "src": "46987:4:10", + "type": "", + "value": "0x21" + }, + { + "kind": "number", + "nativeSrc": "46993:4:10", + "nodeType": "YulLiteral", + "src": "46993:4:10", + "type": "", + "value": "0x5f" + } + ], + "functionName": { + "name": "create", + "nativeSrc": "46973:6:10", + "nodeType": "YulIdentifier", + "src": "46973:6:10" + }, + "nativeSrc": "46973:25:10", + "nodeType": "YulFunctionCall", + "src": "46973:25:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "46961:8:10", + "nodeType": "YulIdentifier", + "src": "46961:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "47031:116:10", + "nodeType": "YulBlock", + "src": "47031:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "47056:4:10", + "nodeType": "YulLiteral", + "src": "47056:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "47062:10:10", + "nodeType": "YulLiteral", + "src": "47062:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "47049:6:10", + "nodeType": "YulIdentifier", + "src": "47049:6:10" + }, + "nativeSrc": "47049:24:10", + "nodeType": "YulFunctionCall", + "src": "47049:24:10" + }, + "nativeSrc": "47049:24:10", + "nodeType": "YulExpressionStatement", + "src": "47049:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "47122:4:10", + "nodeType": "YulLiteral", + "src": "47122:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "47128:4:10", + "nodeType": "YulLiteral", + "src": "47128:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "47115:6:10", + "nodeType": "YulIdentifier", + "src": "47115:6:10" + }, + "nativeSrc": "47115:18:10", + "nodeType": "YulFunctionCall", + "src": "47115:18:10" + }, + "nativeSrc": "47115:18:10", + "nodeType": "YulExpressionStatement", + "src": "47115:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "47021:8:10", + "nodeType": "YulIdentifier", + "src": "47021:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "47014:6:10", + "nodeType": "YulIdentifier", + "src": "47014:6:10" + }, + "nativeSrc": "47014:16:10", + "nodeType": "YulFunctionCall", + "src": "47014:16:10" + }, + "nativeSrc": "47011:136:10", + "nodeType": "YulIf", + "src": "47011:136:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "47167:4:10", + "nodeType": "YulLiteral", + "src": "47167:4:10", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "47173:1:10", + "nodeType": "YulIdentifier", + "src": "47173:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "47160:6:10", + "nodeType": "YulIdentifier", + "src": "47160:6:10" + }, + "nativeSrc": "47160:15:10", + "nodeType": "YulFunctionCall", + "src": "47160:15:10" + }, + "nativeSrc": "47160:15:10", + "nodeType": "YulExpressionStatement", + "src": "47160:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "47231:4:10", + "nodeType": "YulLiteral", + "src": "47231:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "47237:1:10", + "nodeType": "YulLiteral", + "src": "47237:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "47224:6:10", + "nodeType": "YulIdentifier", + "src": "47224:6:10" + }, + "nativeSrc": "47224:15:10", + "nodeType": "YulFunctionCall", + "src": "47224:15:10" + }, + "nativeSrc": "47224:15:10", + "nodeType": "YulExpressionStatement", + "src": "47224:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3567, + "isOffset": false, + "isSlot": false, + "src": "46886:14:10", + "valueSize": 1 + }, + { + "declaration": 3570, + "isOffset": false, + "isSlot": false, + "src": "46961:8:10", + "valueSize": 1 + }, + { + "declaration": 3570, + "isOffset": false, + "isSlot": false, + "src": "47021:8:10", + "valueSize": 1 + }, + { + "declaration": 3565, + "isOffset": false, + "isSlot": false, + "src": "46980:5:10", + "valueSize": 1 + } + ], + "id": 3572, + "nodeType": "InlineAssembly", + "src": "40750:6525:10" + } + ] + }, + "documentation": { + "id": 3563, + "nodeType": "StructuredDocumentation", + "src": "40463:111:10", + "text": "@dev Deploys a minimal ERC1967 proxy with `implementation`.\n Deposits `value` ETH during deployment." + }, + "id": 3574, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployERC1967", + "nameLocation": "40588:13:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3568, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3565, + "mutability": "mutable", + "name": "value", + "nameLocation": "40610:5:10", + "nodeType": "VariableDeclaration", + "scope": 3574, + "src": "40602:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3564, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "40602:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3567, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "40625:14:10", + "nodeType": "VariableDeclaration", + "scope": 3574, + "src": "40617:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3566, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "40617:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "40601:39:10" + }, + "returnParameters": { + "id": 3571, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3570, + "mutability": "mutable", + "name": "instance", + "nameLocation": "40683:8:10", + "nodeType": "VariableDeclaration", + "scope": 3574, + "src": "40675:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3569, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "40675:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "40674:18:10" + }, + "scope": 5104, + "src": "40579:6702:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3592, + "nodeType": "Block", + "src": "47510:79:10", + "statements": [ + { + "expression": { + "id": 3590, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3584, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3582, + "src": "47520:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 3586, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "47558:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 3587, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3577, + "src": "47561:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3588, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3579, + "src": "47577:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3585, + "name": "deployDeterministicERC1967", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3593, + 3607, + 3744, + 3760 + ], + "referencedDeclaration": 3607, + "src": "47531:26:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (uint256,address,bytes32) returns (address)" + } + }, + "id": 3589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "47531:51:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "47520:62:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3591, + "nodeType": "ExpressionStatement", + "src": "47520:62:10" + } + ] + }, + "documentation": { + "id": 3575, + "nodeType": "StructuredDocumentation", + "src": "47287:88:10", + "text": "@dev Deploys a deterministic minimal ERC1967 proxy with `implementation` and `salt`." + }, + "id": 3593, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployDeterministicERC1967", + "nameLocation": "47389:26:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3580, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3577, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "47424:14:10", + "nodeType": "VariableDeclaration", + "scope": 3593, + "src": "47416:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3576, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "47416:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3579, + "mutability": "mutable", + "name": "salt", + "nameLocation": "47448:4:10", + "nodeType": "VariableDeclaration", + "scope": 3593, + "src": "47440:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3578, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "47440:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "47415:38:10" + }, + "returnParameters": { + "id": 3583, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3582, + "mutability": "mutable", + "name": "instance", + "nameLocation": "47496:8:10", + "nodeType": "VariableDeclaration", + "scope": 3593, + "src": "47488:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3581, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "47488:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "47487:18:10" + }, + "scope": 5104, + "src": "47380:209:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3606, + "nodeType": "Block", + "src": "47881:777:10", + "statements": [ + { + "AST": { + "nativeSrc": "47943:709:10", + "nodeType": "YulBlock", + "src": "47943:709:10", + "statements": [ + { + "nativeSrc": "47957:20:10", + "nodeType": "YulVariableDeclaration", + "src": "47957:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "47972:4:10", + "nodeType": "YulLiteral", + "src": "47972:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "47966:5:10", + "nodeType": "YulIdentifier", + "src": "47966:5:10" + }, + "nativeSrc": "47966:11:10", + "nodeType": "YulFunctionCall", + "src": "47966:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "47961:1:10", + "nodeType": "YulTypedName", + "src": "47961:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "48031:4:10", + "nodeType": "YulLiteral", + "src": "48031:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "48037:66:10", + "nodeType": "YulLiteral", + "src": "48037:66:10", + "type": "", + "value": "0xcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "48024:6:10", + "nodeType": "YulIdentifier", + "src": "48024:6:10" + }, + "nativeSrc": "48024:80:10", + "nodeType": "YulFunctionCall", + "src": "48024:80:10" + }, + "nativeSrc": "48024:80:10", + "nodeType": "YulExpressionStatement", + "src": "48024:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "48124:4:10", + "nodeType": "YulLiteral", + "src": "48124:4:10", + "type": "", + "value": "0x40" + }, + { + "kind": "number", + "nativeSrc": "48130:66:10", + "nodeType": "YulLiteral", + "src": "48130:66:10", + "type": "", + "value": "0x5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "48117:6:10", + "nodeType": "YulIdentifier", + "src": "48117:6:10" + }, + "nativeSrc": "48117:80:10", + "nodeType": "YulFunctionCall", + "src": "48117:80:10" + }, + "nativeSrc": "48117:80:10", + "nodeType": "YulExpressionStatement", + "src": "48117:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "48217:4:10", + "nodeType": "YulLiteral", + "src": "48217:4:10", + "type": "", + "value": "0x20" + }, + { + "kind": "number", + "nativeSrc": "48223:6:10", + "nodeType": "YulLiteral", + "src": "48223:6:10", + "type": "", + "value": "0x6009" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "48210:6:10", + "nodeType": "YulIdentifier", + "src": "48210:6:10" + }, + "nativeSrc": "48210:20:10", + "nodeType": "YulFunctionCall", + "src": "48210:20:10" + }, + "nativeSrc": "48210:20:10", + "nodeType": "YulExpressionStatement", + "src": "48210:20:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "48250:4:10", + "nodeType": "YulLiteral", + "src": "48250:4:10", + "type": "", + "value": "0x1e" + }, + { + "name": "implementation", + "nativeSrc": "48256:14:10", + "nodeType": "YulIdentifier", + "src": "48256:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "48243:6:10", + "nodeType": "YulIdentifier", + "src": "48243:6:10" + }, + "nativeSrc": "48243:28:10", + "nodeType": "YulFunctionCall", + "src": "48243:28:10" + }, + "nativeSrc": "48243:28:10", + "nodeType": "YulExpressionStatement", + "src": "48243:28:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "48291:4:10", + "nodeType": "YulLiteral", + "src": "48291:4:10", + "type": "", + "value": "0x0a" + }, + { + "kind": "number", + "nativeSrc": "48297:20:10", + "nodeType": "YulLiteral", + "src": "48297:20:10", + "type": "", + "value": "0x603d3d8160223d3973" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "48284:6:10", + "nodeType": "YulIdentifier", + "src": "48284:6:10" + }, + "nativeSrc": "48284:34:10", + "nodeType": "YulFunctionCall", + "src": "48284:34:10" + }, + "nativeSrc": "48284:34:10", + "nodeType": "YulExpressionStatement", + "src": "48284:34:10" + }, + { + "nativeSrc": "48331:44:10", + "nodeType": "YulAssignment", + "src": "48331:44:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "48351:5:10", + "nodeType": "YulIdentifier", + "src": "48351:5:10" + }, + { + "kind": "number", + "nativeSrc": "48358:4:10", + "nodeType": "YulLiteral", + "src": "48358:4:10", + "type": "", + "value": "0x21" + }, + { + "kind": "number", + "nativeSrc": "48364:4:10", + "nodeType": "YulLiteral", + "src": "48364:4:10", + "type": "", + "value": "0x5f" + }, + { + "name": "salt", + "nativeSrc": "48370:4:10", + "nodeType": "YulIdentifier", + "src": "48370:4:10" + } + ], + "functionName": { + "name": "create2", + "nativeSrc": "48343:7:10", + "nodeType": "YulIdentifier", + "src": "48343:7:10" + }, + "nativeSrc": "48343:32:10", + "nodeType": "YulFunctionCall", + "src": "48343:32:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "48331:8:10", + "nodeType": "YulIdentifier", + "src": "48331:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "48408:116:10", + "nodeType": "YulBlock", + "src": "48408:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "48433:4:10", + "nodeType": "YulLiteral", + "src": "48433:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "48439:10:10", + "nodeType": "YulLiteral", + "src": "48439:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "48426:6:10", + "nodeType": "YulIdentifier", + "src": "48426:6:10" + }, + "nativeSrc": "48426:24:10", + "nodeType": "YulFunctionCall", + "src": "48426:24:10" + }, + "nativeSrc": "48426:24:10", + "nodeType": "YulExpressionStatement", + "src": "48426:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "48499:4:10", + "nodeType": "YulLiteral", + "src": "48499:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "48505:4:10", + "nodeType": "YulLiteral", + "src": "48505:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "48492:6:10", + "nodeType": "YulIdentifier", + "src": "48492:6:10" + }, + "nativeSrc": "48492:18:10", + "nodeType": "YulFunctionCall", + "src": "48492:18:10" + }, + "nativeSrc": "48492:18:10", + "nodeType": "YulExpressionStatement", + "src": "48492:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "48398:8:10", + "nodeType": "YulIdentifier", + "src": "48398:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "48391:6:10", + "nodeType": "YulIdentifier", + "src": "48391:6:10" + }, + "nativeSrc": "48391:16:10", + "nodeType": "YulFunctionCall", + "src": "48391:16:10" + }, + "nativeSrc": "48388:136:10", + "nodeType": "YulIf", + "src": "48388:136:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "48544:4:10", + "nodeType": "YulLiteral", + "src": "48544:4:10", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "48550:1:10", + "nodeType": "YulIdentifier", + "src": "48550:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "48537:6:10", + "nodeType": "YulIdentifier", + "src": "48537:6:10" + }, + "nativeSrc": "48537:15:10", + "nodeType": "YulFunctionCall", + "src": "48537:15:10" + }, + "nativeSrc": "48537:15:10", + "nodeType": "YulExpressionStatement", + "src": "48537:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "48608:4:10", + "nodeType": "YulLiteral", + "src": "48608:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "48614:1:10", + "nodeType": "YulLiteral", + "src": "48614:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "48601:6:10", + "nodeType": "YulIdentifier", + "src": "48601:6:10" + }, + "nativeSrc": "48601:15:10", + "nodeType": "YulFunctionCall", + "src": "48601:15:10" + }, + "nativeSrc": "48601:15:10", + "nodeType": "YulExpressionStatement", + "src": "48601:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3598, + "isOffset": false, + "isSlot": false, + "src": "48256:14:10", + "valueSize": 1 + }, + { + "declaration": 3603, + "isOffset": false, + "isSlot": false, + "src": "48331:8:10", + "valueSize": 1 + }, + { + "declaration": 3603, + "isOffset": false, + "isSlot": false, + "src": "48398:8:10", + "valueSize": 1 + }, + { + "declaration": 3600, + "isOffset": false, + "isSlot": false, + "src": "48370:4:10", + "valueSize": 1 + }, + { + "declaration": 3596, + "isOffset": false, + "isSlot": false, + "src": "48351:5:10", + "valueSize": 1 + } + ], + "id": 3605, + "nodeType": "InlineAssembly", + "src": "47934:718:10" + } + ] + }, + "documentation": { + "id": 3594, + "nodeType": "StructuredDocumentation", + "src": "47595:136:10", + "text": "@dev Deploys a deterministic minimal ERC1967 proxy with `implementation` and `salt`.\n Deposits `value` ETH during deployment." + }, + "id": 3607, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployDeterministicERC1967", + "nameLocation": "47745:26:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3601, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3596, + "mutability": "mutable", + "name": "value", + "nameLocation": "47780:5:10", + "nodeType": "VariableDeclaration", + "scope": 3607, + "src": "47772:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3595, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "47772:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3598, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "47795:14:10", + "nodeType": "VariableDeclaration", + "scope": 3607, + "src": "47787:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3597, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "47787:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3600, + "mutability": "mutable", + "name": "salt", + "nameLocation": "47819:4:10", + "nodeType": "VariableDeclaration", + "scope": 3607, + "src": "47811:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3599, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "47811:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "47771:53:10" + }, + "returnParameters": { + "id": 3604, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3603, + "mutability": "mutable", + "name": "instance", + "nameLocation": "47867:8:10", + "nodeType": "VariableDeclaration", + "scope": 3607, + "src": "47859:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3602, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "47859:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "47858:18:10" + }, + "scope": 5104, + "src": "47736:922:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3625, + "nodeType": "Block", + "src": "49052:75:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "30", + "id": 3620, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "49096:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 3621, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3610, + "src": "49099:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3622, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3612, + "src": "49115:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3619, + "name": "createDeterministicERC1967", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3626, + 3642, + 3782, + 3800 + ], + "referencedDeclaration": 3642, + "src": "49069:26:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$_t_bool_$_t_address_$", + "typeString": "function (uint256,address,bytes32) returns (bool,address)" + } + }, + "id": 3623, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "49069:51:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_address_$", + "typeString": "tuple(bool,address)" + } + }, + "functionReturnParameters": 3618, + "id": 3624, + "nodeType": "Return", + "src": "49062:58:10" + } + ] + }, + "documentation": { + "id": 3608, + "nodeType": "StructuredDocumentation", + "src": "48664:231:10", + "text": "@dev Creates a deterministic minimal ERC1967 proxy with `implementation` and `salt`.\n Note: This method is intended for use in ERC4337 factories,\n which are expected to NOT revert if the proxy is already deployed." + }, + "id": 3626, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createDeterministicERC1967", + "nameLocation": "48909:26:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3613, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3610, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "48944:14:10", + "nodeType": "VariableDeclaration", + "scope": 3626, + "src": "48936:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3609, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "48936:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3612, + "mutability": "mutable", + "name": "salt", + "nameLocation": "48968:4:10", + "nodeType": "VariableDeclaration", + "scope": 3626, + "src": "48960:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3611, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "48960:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "48935:38:10" + }, + "returnParameters": { + "id": 3618, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3615, + "mutability": "mutable", + "name": "alreadyDeployed", + "nameLocation": "49013:15:10", + "nodeType": "VariableDeclaration", + "scope": 3626, + "src": "49008:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3614, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "49008:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3617, + "mutability": "mutable", + "name": "instance", + "nameLocation": "49038:8:10", + "nodeType": "VariableDeclaration", + "scope": 3626, + "src": "49030:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3616, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "49030:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "49007:40:10" + }, + "scope": 5104, + "src": "48900:227:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3641, + "nodeType": "Block", + "src": "49584:1558:10", + "statements": [ + { + "AST": { + "nativeSrc": "49646:1490:10", + "nodeType": "YulBlock", + "src": "49646:1490:10", + "statements": [ + { + "nativeSrc": "49660:20:10", + "nodeType": "YulVariableDeclaration", + "src": "49660:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "49675:4:10", + "nodeType": "YulLiteral", + "src": "49675:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "49669:5:10", + "nodeType": "YulIdentifier", + "src": "49669:5:10" + }, + "nativeSrc": "49669:11:10", + "nodeType": "YulFunctionCall", + "src": "49669:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "49664:1:10", + "nodeType": "YulTypedName", + "src": "49664:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "49734:4:10", + "nodeType": "YulLiteral", + "src": "49734:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "49740:66:10", + "nodeType": "YulLiteral", + "src": "49740:66:10", + "type": "", + "value": "0xcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "49727:6:10", + "nodeType": "YulIdentifier", + "src": "49727:6:10" + }, + "nativeSrc": "49727:80:10", + "nodeType": "YulFunctionCall", + "src": "49727:80:10" + }, + "nativeSrc": "49727:80:10", + "nodeType": "YulExpressionStatement", + "src": "49727:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "49827:4:10", + "nodeType": "YulLiteral", + "src": "49827:4:10", + "type": "", + "value": "0x40" + }, + { + "kind": "number", + "nativeSrc": "49833:66:10", + "nodeType": "YulLiteral", + "src": "49833:66:10", + "type": "", + "value": "0x5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "49820:6:10", + "nodeType": "YulIdentifier", + "src": "49820:6:10" + }, + "nativeSrc": "49820:80:10", + "nodeType": "YulFunctionCall", + "src": "49820:80:10" + }, + "nativeSrc": "49820:80:10", + "nodeType": "YulExpressionStatement", + "src": "49820:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "49920:4:10", + "nodeType": "YulLiteral", + "src": "49920:4:10", + "type": "", + "value": "0x20" + }, + { + "kind": "number", + "nativeSrc": "49926:6:10", + "nodeType": "YulLiteral", + "src": "49926:6:10", + "type": "", + "value": "0x6009" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "49913:6:10", + "nodeType": "YulIdentifier", + "src": "49913:6:10" + }, + "nativeSrc": "49913:20:10", + "nodeType": "YulFunctionCall", + "src": "49913:20:10" + }, + "nativeSrc": "49913:20:10", + "nodeType": "YulExpressionStatement", + "src": "49913:20:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "49953:4:10", + "nodeType": "YulLiteral", + "src": "49953:4:10", + "type": "", + "value": "0x1e" + }, + { + "name": "implementation", + "nativeSrc": "49959:14:10", + "nodeType": "YulIdentifier", + "src": "49959:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "49946:6:10", + "nodeType": "YulIdentifier", + "src": "49946:6:10" + }, + "nativeSrc": "49946:28:10", + "nodeType": "YulFunctionCall", + "src": "49946:28:10" + }, + "nativeSrc": "49946:28:10", + "nodeType": "YulExpressionStatement", + "src": "49946:28:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "49994:4:10", + "nodeType": "YulLiteral", + "src": "49994:4:10", + "type": "", + "value": "0x0a" + }, + { + "kind": "number", + "nativeSrc": "50000:20:10", + "nodeType": "YulLiteral", + "src": "50000:20:10", + "type": "", + "value": "0x603d3d8160223d3973" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "49987:6:10", + "nodeType": "YulIdentifier", + "src": "49987:6:10" + }, + "nativeSrc": "49987:34:10", + "nodeType": "YulFunctionCall", + "src": "49987:34:10" + }, + "nativeSrc": "49987:34:10", + "nodeType": "YulExpressionStatement", + "src": "49987:34:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "50097:1:10", + "nodeType": "YulIdentifier", + "src": "50097:1:10" + }, + { + "kind": "number", + "nativeSrc": "50100:4:10", + "nodeType": "YulLiteral", + "src": "50100:4:10", + "type": "", + "value": "0x35" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "50093:3:10", + "nodeType": "YulIdentifier", + "src": "50093:3:10" + }, + "nativeSrc": "50093:12:10", + "nodeType": "YulFunctionCall", + "src": "50093:12:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "50117:4:10", + "nodeType": "YulLiteral", + "src": "50117:4:10", + "type": "", + "value": "0x21" + }, + { + "kind": "number", + "nativeSrc": "50123:4:10", + "nodeType": "YulLiteral", + "src": "50123:4:10", + "type": "", + "value": "0x5f" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "50107:9:10", + "nodeType": "YulIdentifier", + "src": "50107:9:10" + }, + "nativeSrc": "50107:21:10", + "nodeType": "YulFunctionCall", + "src": "50107:21:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "50086:6:10", + "nodeType": "YulIdentifier", + "src": "50086:6:10" + }, + "nativeSrc": "50086:43:10", + "nodeType": "YulFunctionCall", + "src": "50086:43:10" + }, + "nativeSrc": "50086:43:10", + "nodeType": "YulExpressionStatement", + "src": "50086:43:10" + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "50149:1:10", + "nodeType": "YulIdentifier", + "src": "50149:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "50156:2:10", + "nodeType": "YulLiteral", + "src": "50156:2:10", + "type": "", + "value": "88" + }, + { + "arguments": [], + "functionName": { + "name": "address", + "nativeSrc": "50160:7:10", + "nodeType": "YulIdentifier", + "src": "50160:7:10" + }, + "nativeSrc": "50160:9:10", + "nodeType": "YulFunctionCall", + "src": "50160:9:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "50152:3:10", + "nodeType": "YulIdentifier", + "src": "50152:3:10" + }, + "nativeSrc": "50152:18:10", + "nodeType": "YulFunctionCall", + "src": "50152:18:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "50142:6:10", + "nodeType": "YulIdentifier", + "src": "50142:6:10" + }, + "nativeSrc": "50142:29:10", + "nodeType": "YulFunctionCall", + "src": "50142:29:10" + }, + "nativeSrc": "50142:29:10", + "nodeType": "YulExpressionStatement", + "src": "50142:29:10" + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "50192:1:10", + "nodeType": "YulIdentifier", + "src": "50192:1:10" + }, + { + "kind": "number", + "nativeSrc": "50195:4:10", + "nodeType": "YulLiteral", + "src": "50195:4:10", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "50184:7:10", + "nodeType": "YulIdentifier", + "src": "50184:7:10" + }, + "nativeSrc": "50184:16:10", + "nodeType": "YulFunctionCall", + "src": "50184:16:10" + }, + "nativeSrc": "50184:16:10", + "nodeType": "YulExpressionStatement", + "src": "50184:16:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "50245:1:10", + "nodeType": "YulIdentifier", + "src": "50245:1:10" + }, + { + "kind": "number", + "nativeSrc": "50248:4:10", + "nodeType": "YulLiteral", + "src": "50248:4:10", + "type": "", + "value": "0x15" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "50241:3:10", + "nodeType": "YulIdentifier", + "src": "50241:3:10" + }, + "nativeSrc": "50241:12:10", + "nodeType": "YulFunctionCall", + "src": "50241:12:10" + }, + { + "name": "salt", + "nativeSrc": "50255:4:10", + "nodeType": "YulIdentifier", + "src": "50255:4:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "50234:6:10", + "nodeType": "YulIdentifier", + "src": "50234:6:10" + }, + "nativeSrc": "50234:26:10", + "nodeType": "YulFunctionCall", + "src": "50234:26:10" + }, + "nativeSrc": "50234:26:10", + "nodeType": "YulExpressionStatement", + "src": "50234:26:10" + }, + { + "nativeSrc": "50273:30:10", + "nodeType": "YulAssignment", + "src": "50273:30:10", + "value": { + "arguments": [ + { + "name": "m", + "nativeSrc": "50295:1:10", + "nodeType": "YulIdentifier", + "src": "50295:1:10" + }, + { + "kind": "number", + "nativeSrc": "50298:4:10", + "nodeType": "YulLiteral", + "src": "50298:4:10", + "type": "", + "value": "0x55" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "50285:9:10", + "nodeType": "YulIdentifier", + "src": "50285:9:10" + }, + "nativeSrc": "50285:18:10", + "nodeType": "YulFunctionCall", + "src": "50285:18:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "50273:8:10", + "nodeType": "YulIdentifier", + "src": "50273:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "50328:680:10", + "nodeType": "YulBlock", + "src": "50328:680:10", + "statements": [ + { + "body": { + "nativeSrc": "50379:291:10", + "nodeType": "YulBlock", + "src": "50379:291:10", + "statements": [ + { + "nativeSrc": "50401:44:10", + "nodeType": "YulAssignment", + "src": "50401:44:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "50421:5:10", + "nodeType": "YulIdentifier", + "src": "50421:5:10" + }, + { + "kind": "number", + "nativeSrc": "50428:4:10", + "nodeType": "YulLiteral", + "src": "50428:4:10", + "type": "", + "value": "0x21" + }, + { + "kind": "number", + "nativeSrc": "50434:4:10", + "nodeType": "YulLiteral", + "src": "50434:4:10", + "type": "", + "value": "0x5f" + }, + { + "name": "salt", + "nativeSrc": "50440:4:10", + "nodeType": "YulIdentifier", + "src": "50440:4:10" + } + ], + "functionName": { + "name": "create2", + "nativeSrc": "50413:7:10", + "nodeType": "YulIdentifier", + "src": "50413:7:10" + }, + "nativeSrc": "50413:32:10", + "nodeType": "YulFunctionCall", + "src": "50413:32:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "50401:8:10", + "nodeType": "YulIdentifier", + "src": "50401:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "50486:140:10", + "nodeType": "YulBlock", + "src": "50486:140:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "50519:4:10", + "nodeType": "YulLiteral", + "src": "50519:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "50525:10:10", + "nodeType": "YulLiteral", + "src": "50525:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "50512:6:10", + "nodeType": "YulIdentifier", + "src": "50512:6:10" + }, + "nativeSrc": "50512:24:10", + "nodeType": "YulFunctionCall", + "src": "50512:24:10" + }, + "nativeSrc": "50512:24:10", + "nodeType": "YulExpressionStatement", + "src": "50512:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "50593:4:10", + "nodeType": "YulLiteral", + "src": "50593:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "50599:4:10", + "nodeType": "YulLiteral", + "src": "50599:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "50586:6:10", + "nodeType": "YulIdentifier", + "src": "50586:6:10" + }, + "nativeSrc": "50586:18:10", + "nodeType": "YulFunctionCall", + "src": "50586:18:10" + }, + "nativeSrc": "50586:18:10", + "nodeType": "YulExpressionStatement", + "src": "50586:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "50476:8:10", + "nodeType": "YulIdentifier", + "src": "50476:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "50469:6:10", + "nodeType": "YulIdentifier", + "src": "50469:6:10" + }, + "nativeSrc": "50469:16:10", + "nodeType": "YulFunctionCall", + "src": "50469:16:10" + }, + "nativeSrc": "50466:160:10", + "nodeType": "YulIf", + "src": "50466:160:10" + }, + { + "nativeSrc": "50647:5:10", + "nodeType": "YulBreak", + "src": "50647:5:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "50368:8:10", + "nodeType": "YulIdentifier", + "src": "50368:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "50356:11:10", + "nodeType": "YulIdentifier", + "src": "50356:11:10" + }, + "nativeSrc": "50356:21:10", + "nodeType": "YulFunctionCall", + "src": "50356:21:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "50349:6:10", + "nodeType": "YulIdentifier", + "src": "50349:6:10" + }, + "nativeSrc": "50349:29:10", + "nodeType": "YulFunctionCall", + "src": "50349:29:10" + }, + "nativeSrc": "50346:324:10", + "nodeType": "YulIf", + "src": "50346:324:10" + }, + { + "nativeSrc": "50687:20:10", + "nodeType": "YulAssignment", + "src": "50687:20:10", + "value": { + "kind": "number", + "nativeSrc": "50706:1:10", + "nodeType": "YulLiteral", + "src": "50706:1:10", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "alreadyDeployed", + "nativeSrc": "50687:15:10", + "nodeType": "YulIdentifier", + "src": "50687:15:10" + } + ] + }, + { + "body": { + "nativeSrc": "50741:9:10", + "nodeType": "YulBlock", + "src": "50741:9:10", + "statements": [ + { + "nativeSrc": "50743:5:10", + "nodeType": "YulBreak", + "src": "50743:5:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nativeSrc": "50734:5:10", + "nodeType": "YulIdentifier", + "src": "50734:5:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "50727:6:10", + "nodeType": "YulIdentifier", + "src": "50727:6:10" + }, + "nativeSrc": "50727:13:10", + "nodeType": "YulFunctionCall", + "src": "50727:13:10" + }, + "nativeSrc": "50724:26:10", + "nodeType": "YulIf", + "src": "50724:26:10" + }, + { + "body": { + "nativeSrc": "50843:129:10", + "nodeType": "YulBlock", + "src": "50843:129:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "50872:4:10", + "nodeType": "YulLiteral", + "src": "50872:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "50878:10:10", + "nodeType": "YulLiteral", + "src": "50878:10:10", + "type": "", + "value": "0xb12d13eb" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "50865:6:10", + "nodeType": "YulIdentifier", + "src": "50865:6:10" + }, + "nativeSrc": "50865:24:10", + "nodeType": "YulFunctionCall", + "src": "50865:24:10" + }, + "nativeSrc": "50865:24:10", + "nodeType": "YulExpressionStatement", + "src": "50865:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "50943:4:10", + "nodeType": "YulLiteral", + "src": "50943:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "50949:4:10", + "nodeType": "YulLiteral", + "src": "50949:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "50936:6:10", + "nodeType": "YulIdentifier", + "src": "50936:6:10" + }, + "nativeSrc": "50936:18:10", + "nodeType": "YulFunctionCall", + "src": "50936:18:10" + }, + "nativeSrc": "50936:18:10", + "nodeType": "YulExpressionStatement", + "src": "50936:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "50782:3:10", + "nodeType": "YulIdentifier", + "src": "50782:3:10" + }, + "nativeSrc": "50782:5:10", + "nodeType": "YulFunctionCall", + "src": "50782:5:10" + }, + { + "name": "instance", + "nativeSrc": "50789:8:10", + "nodeType": "YulIdentifier", + "src": "50789:8:10" + }, + { + "name": "value", + "nativeSrc": "50799:5:10", + "nodeType": "YulIdentifier", + "src": "50799:5:10" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "50806:8:10", + "nodeType": "YulIdentifier", + "src": "50806:8:10" + }, + "nativeSrc": "50806:10:10", + "nodeType": "YulFunctionCall", + "src": "50806:10:10" + }, + { + "kind": "number", + "nativeSrc": "50818:4:10", + "nodeType": "YulLiteral", + "src": "50818:4:10", + "type": "", + "value": "0x00" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "50824:8:10", + "nodeType": "YulIdentifier", + "src": "50824:8:10" + }, + "nativeSrc": "50824:10:10", + "nodeType": "YulFunctionCall", + "src": "50824:10:10" + }, + { + "kind": "number", + "nativeSrc": "50836:4:10", + "nodeType": "YulLiteral", + "src": "50836:4:10", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "call", + "nativeSrc": "50777:4:10", + "nodeType": "YulIdentifier", + "src": "50777:4:10" + }, + "nativeSrc": "50777:64:10", + "nodeType": "YulFunctionCall", + "src": "50777:64:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "50770:6:10", + "nodeType": "YulIdentifier", + "src": "50770:6:10" + }, + "nativeSrc": "50770:72:10", + "nodeType": "YulFunctionCall", + "src": "50770:72:10" + }, + "nativeSrc": "50767:205:10", + "nodeType": "YulIf", + "src": "50767:205:10" + }, + { + "nativeSrc": "50989:5:10", + "nodeType": "YulBreak", + "src": "50989:5:10" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "50323:1:10", + "nodeType": "YulLiteral", + "src": "50323:1:10", + "type": "", + "value": "1" + }, + "nativeSrc": "50316:692:10", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "50325:2:10", + "nodeType": "YulBlock", + "src": "50325:2:10", + "statements": [] + }, + "pre": { + "nativeSrc": "50320:2:10", + "nodeType": "YulBlock", + "src": "50320:2:10", + "statements": [] + }, + "src": "50316:692:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "51028:4:10", + "nodeType": "YulLiteral", + "src": "51028:4:10", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "51034:1:10", + "nodeType": "YulIdentifier", + "src": "51034:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "51021:6:10", + "nodeType": "YulIdentifier", + "src": "51021:6:10" + }, + "nativeSrc": "51021:15:10", + "nodeType": "YulFunctionCall", + "src": "51021:15:10" + }, + "nativeSrc": "51021:15:10", + "nodeType": "YulExpressionStatement", + "src": "51021:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "51092:4:10", + "nodeType": "YulLiteral", + "src": "51092:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "51098:1:10", + "nodeType": "YulLiteral", + "src": "51098:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "51085:6:10", + "nodeType": "YulIdentifier", + "src": "51085:6:10" + }, + "nativeSrc": "51085:15:10", + "nodeType": "YulFunctionCall", + "src": "51085:15:10" + }, + "nativeSrc": "51085:15:10", + "nodeType": "YulExpressionStatement", + "src": "51085:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3636, + "isOffset": false, + "isSlot": false, + "src": "50687:15:10", + "valueSize": 1 + }, + { + "declaration": 3631, + "isOffset": false, + "isSlot": false, + "src": "49959:14:10", + "valueSize": 1 + }, + { + "declaration": 3638, + "isOffset": false, + "isSlot": false, + "src": "50273:8:10", + "valueSize": 1 + }, + { + "declaration": 3638, + "isOffset": false, + "isSlot": false, + "src": "50368:8:10", + "valueSize": 1 + }, + { + "declaration": 3638, + "isOffset": false, + "isSlot": false, + "src": "50401:8:10", + "valueSize": 1 + }, + { + "declaration": 3638, + "isOffset": false, + "isSlot": false, + "src": "50476:8:10", + "valueSize": 1 + }, + { + "declaration": 3638, + "isOffset": false, + "isSlot": false, + "src": "50789:8:10", + "valueSize": 1 + }, + { + "declaration": 3633, + "isOffset": false, + "isSlot": false, + "src": "50255:4:10", + "valueSize": 1 + }, + { + "declaration": 3633, + "isOffset": false, + "isSlot": false, + "src": "50440:4:10", + "valueSize": 1 + }, + { + "declaration": 3629, + "isOffset": false, + "isSlot": false, + "src": "50421:5:10", + "valueSize": 1 + }, + { + "declaration": 3629, + "isOffset": false, + "isSlot": false, + "src": "50734:5:10", + "valueSize": 1 + }, + { + "declaration": 3629, + "isOffset": false, + "isSlot": false, + "src": "50799:5:10", + "valueSize": 1 + } + ], + "id": 3640, + "nodeType": "InlineAssembly", + "src": "49637:1499:10" + } + ] + }, + "documentation": { + "id": 3627, + "nodeType": "StructuredDocumentation", + "src": "49133:279:10", + "text": "@dev Creates a deterministic minimal ERC1967 proxy with `implementation` and `salt`.\n Deposits `value` ETH during deployment.\n Note: This method is intended for use in ERC4337 factories,\n which are expected to NOT revert if the proxy is already deployed." + }, + "id": 3642, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createDeterministicERC1967", + "nameLocation": "49426:26:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3634, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3629, + "mutability": "mutable", + "name": "value", + "nameLocation": "49461:5:10", + "nodeType": "VariableDeclaration", + "scope": 3642, + "src": "49453:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3628, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "49453:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3631, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "49476:14:10", + "nodeType": "VariableDeclaration", + "scope": 3642, + "src": "49468:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3630, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "49468:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3633, + "mutability": "mutable", + "name": "salt", + "nameLocation": "49500:4:10", + "nodeType": "VariableDeclaration", + "scope": 3642, + "src": "49492:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3632, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "49492:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "49452:53:10" + }, + "returnParameters": { + "id": 3639, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3636, + "mutability": "mutable", + "name": "alreadyDeployed", + "nameLocation": "49545:15:10", + "nodeType": "VariableDeclaration", + "scope": 3642, + "src": "49540:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3635, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "49540:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3638, + "mutability": "mutable", + "name": "instance", + "nameLocation": "49570:8:10", + "nodeType": "VariableDeclaration", + "scope": 3642, + "src": "49562:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3637, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "49562:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "49539:40:10" + }, + "scope": 5104, + "src": "49417:1725:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3651, + "nodeType": "Block", + "src": "51331:545:10", + "statements": [ + { + "AST": { + "nativeSrc": "51393:477:10", + "nodeType": "YulBlock", + "src": "51393:477:10", + "statements": [ + { + "nativeSrc": "51407:16:10", + "nodeType": "YulAssignment", + "src": "51407:16:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "51418:4:10", + "nodeType": "YulLiteral", + "src": "51418:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "51412:5:10", + "nodeType": "YulIdentifier", + "src": "51412:5:10" + }, + "nativeSrc": "51412:11:10", + "nodeType": "YulFunctionCall", + "src": "51412:11:10" + }, + "variableNames": [ + { + "name": "c", + "nativeSrc": "51407:1:10", + "nodeType": "YulIdentifier", + "src": "51407:1:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "51447:1:10", + "nodeType": "YulIdentifier", + "src": "51447:1:10" + }, + { + "kind": "number", + "nativeSrc": "51450:4:10", + "nodeType": "YulLiteral", + "src": "51450:4:10", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "51443:3:10", + "nodeType": "YulIdentifier", + "src": "51443:3:10" + }, + "nativeSrc": "51443:12:10", + "nodeType": "YulFunctionCall", + "src": "51443:12:10" + }, + { + "kind": "number", + "nativeSrc": "51457:66:10", + "nodeType": "YulLiteral", + "src": "51457:66:10", + "type": "", + "value": "0x3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f300" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "51436:6:10", + "nodeType": "YulIdentifier", + "src": "51436:6:10" + }, + "nativeSrc": "51436:88:10", + "nodeType": "YulFunctionCall", + "src": "51436:88:10" + }, + "nativeSrc": "51436:88:10", + "nodeType": "YulExpressionStatement", + "src": "51436:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "51548:1:10", + "nodeType": "YulIdentifier", + "src": "51548:1:10" + }, + { + "kind": "number", + "nativeSrc": "51551:4:10", + "nodeType": "YulLiteral", + "src": "51551:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "51544:3:10", + "nodeType": "YulIdentifier", + "src": "51544:3:10" + }, + "nativeSrc": "51544:12:10", + "nodeType": "YulFunctionCall", + "src": "51544:12:10" + }, + { + "kind": "number", + "nativeSrc": "51558:66:10", + "nodeType": "YulLiteral", + "src": "51558:66:10", + "type": "", + "value": "0x55f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076cc" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "51537:6:10", + "nodeType": "YulIdentifier", + "src": "51537:6:10" + }, + "nativeSrc": "51537:88:10", + "nodeType": "YulFunctionCall", + "src": "51537:88:10" + }, + "nativeSrc": "51537:88:10", + "nodeType": "YulExpressionStatement", + "src": "51537:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "51649:1:10", + "nodeType": "YulIdentifier", + "src": "51649:1:10" + }, + { + "kind": "number", + "nativeSrc": "51652:4:10", + "nodeType": "YulLiteral", + "src": "51652:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "51645:3:10", + "nodeType": "YulIdentifier", + "src": "51645:3:10" + }, + "nativeSrc": "51645:12:10", + "nodeType": "YulFunctionCall", + "src": "51645:12:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "51666:2:10", + "nodeType": "YulLiteral", + "src": "51666:2:10", + "type": "", + "value": "24" + }, + { + "name": "implementation", + "nativeSrc": "51670:14:10", + "nodeType": "YulIdentifier", + "src": "51670:14:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "51662:3:10", + "nodeType": "YulIdentifier", + "src": "51662:3:10" + }, + "nativeSrc": "51662:23:10", + "nodeType": "YulFunctionCall", + "src": "51662:23:10" + }, + { + "kind": "number", + "nativeSrc": "51687:8:10", + "nodeType": "YulLiteral", + "src": "51687:8:10", + "type": "", + "value": "0x600951" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "51659:2:10", + "nodeType": "YulIdentifier", + "src": "51659:2:10" + }, + "nativeSrc": "51659:37:10", + "nodeType": "YulFunctionCall", + "src": "51659:37:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "51638:6:10", + "nodeType": "YulIdentifier", + "src": "51638:6:10" + }, + "nativeSrc": "51638:59:10", + "nodeType": "YulFunctionCall", + "src": "51638:59:10" + }, + "nativeSrc": "51638:59:10", + "nodeType": "YulExpressionStatement", + "src": "51638:59:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "51721:1:10", + "nodeType": "YulIdentifier", + "src": "51721:1:10" + }, + { + "kind": "number", + "nativeSrc": "51724:4:10", + "nodeType": "YulLiteral", + "src": "51724:4:10", + "type": "", + "value": "0x09" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "51717:3:10", + "nodeType": "YulIdentifier", + "src": "51717:3:10" + }, + "nativeSrc": "51717:12:10", + "nodeType": "YulFunctionCall", + "src": "51717:12:10" + }, + { + "kind": "number", + "nativeSrc": "51731:20:10", + "nodeType": "YulLiteral", + "src": "51731:20:10", + "type": "", + "value": "0x603d3d8160223d3973" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "51710:6:10", + "nodeType": "YulIdentifier", + "src": "51710:6:10" + }, + "nativeSrc": "51710:42:10", + "nodeType": "YulFunctionCall", + "src": "51710:42:10" + }, + "nativeSrc": "51710:42:10", + "nodeType": "YulExpressionStatement", + "src": "51710:42:10" + }, + { + "expression": { + "arguments": [ + { + "name": "c", + "nativeSrc": "51772:1:10", + "nodeType": "YulIdentifier", + "src": "51772:1:10" + }, + { + "kind": "number", + "nativeSrc": "51775:4:10", + "nodeType": "YulLiteral", + "src": "51775:4:10", + "type": "", + "value": "0x5f" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "51765:6:10", + "nodeType": "YulIdentifier", + "src": "51765:6:10" + }, + "nativeSrc": "51765:15:10", + "nodeType": "YulFunctionCall", + "src": "51765:15:10" + }, + "nativeSrc": "51765:15:10", + "nodeType": "YulExpressionStatement", + "src": "51765:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "51821:4:10", + "nodeType": "YulLiteral", + "src": "51821:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "c", + "nativeSrc": "51831:1:10", + "nodeType": "YulIdentifier", + "src": "51831:1:10" + }, + { + "kind": "number", + "nativeSrc": "51834:4:10", + "nodeType": "YulLiteral", + "src": "51834:4:10", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "51827:3:10", + "nodeType": "YulIdentifier", + "src": "51827:3:10" + }, + "nativeSrc": "51827:12:10", + "nodeType": "YulFunctionCall", + "src": "51827:12:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "51814:6:10", + "nodeType": "YulIdentifier", + "src": "51814:6:10" + }, + "nativeSrc": "51814:26:10", + "nodeType": "YulFunctionCall", + "src": "51814:26:10" + }, + "nativeSrc": "51814:26:10", + "nodeType": "YulExpressionStatement", + "src": "51814:26:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3648, + "isOffset": false, + "isSlot": false, + "src": "51407:1:10", + "valueSize": 1 + }, + { + "declaration": 3648, + "isOffset": false, + "isSlot": false, + "src": "51447:1:10", + "valueSize": 1 + }, + { + "declaration": 3648, + "isOffset": false, + "isSlot": false, + "src": "51548:1:10", + "valueSize": 1 + }, + { + "declaration": 3648, + "isOffset": false, + "isSlot": false, + "src": "51649:1:10", + "valueSize": 1 + }, + { + "declaration": 3648, + "isOffset": false, + "isSlot": false, + "src": "51721:1:10", + "valueSize": 1 + }, + { + "declaration": 3648, + "isOffset": false, + "isSlot": false, + "src": "51772:1:10", + "valueSize": 1 + }, + { + "declaration": 3648, + "isOffset": false, + "isSlot": false, + "src": "51831:1:10", + "valueSize": 1 + }, + { + "declaration": 3645, + "isOffset": false, + "isSlot": false, + "src": "51670:14:10", + "valueSize": 1 + } + ], + "id": 3650, + "nodeType": "InlineAssembly", + "src": "51384:486:10" + } + ] + }, + "documentation": { + "id": 3643, + "nodeType": "StructuredDocumentation", + "src": "51148:90:10", + "text": "@dev Returns the initialization code of the minimal ERC1967 proxy of `implementation`." + }, + "id": 3652, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeERC1967", + "nameLocation": "51252:15:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3646, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3645, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "51276:14:10", + "nodeType": "VariableDeclaration", + "scope": 3652, + "src": "51268:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3644, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "51268:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "51267:24:10" + }, + "returnParameters": { + "id": 3649, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3648, + "mutability": "mutable", + "name": "c", + "nameLocation": "51328:1:10", + "nodeType": "VariableDeclaration", + "scope": 3652, + "src": "51315:14:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3647, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "51315:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "51314:16:10" + }, + "scope": 5104, + "src": "51243:633:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3661, + "nodeType": "Block", + "src": "52072:613:10", + "statements": [ + { + "AST": { + "nativeSrc": "52134:545:10", + "nodeType": "YulBlock", + "src": "52134:545:10", + "statements": [ + { + "nativeSrc": "52148:20:10", + "nodeType": "YulVariableDeclaration", + "src": "52148:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "52163:4:10", + "nodeType": "YulLiteral", + "src": "52163:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "52157:5:10", + "nodeType": "YulIdentifier", + "src": "52157:5:10" + }, + "nativeSrc": "52157:11:10", + "nodeType": "YulFunctionCall", + "src": "52157:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "52152:1:10", + "nodeType": "YulTypedName", + "src": "52152:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "52222:4:10", + "nodeType": "YulLiteral", + "src": "52222:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "52228:66:10", + "nodeType": "YulLiteral", + "src": "52228:66:10", + "type": "", + "value": "0xcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "52215:6:10", + "nodeType": "YulIdentifier", + "src": "52215:6:10" + }, + "nativeSrc": "52215:80:10", + "nodeType": "YulFunctionCall", + "src": "52215:80:10" + }, + "nativeSrc": "52215:80:10", + "nodeType": "YulExpressionStatement", + "src": "52215:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "52315:4:10", + "nodeType": "YulLiteral", + "src": "52315:4:10", + "type": "", + "value": "0x40" + }, + { + "kind": "number", + "nativeSrc": "52321:66:10", + "nodeType": "YulLiteral", + "src": "52321:66:10", + "type": "", + "value": "0x5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "52308:6:10", + "nodeType": "YulIdentifier", + "src": "52308:6:10" + }, + "nativeSrc": "52308:80:10", + "nodeType": "YulFunctionCall", + "src": "52308:80:10" + }, + "nativeSrc": "52308:80:10", + "nodeType": "YulExpressionStatement", + "src": "52308:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "52408:4:10", + "nodeType": "YulLiteral", + "src": "52408:4:10", + "type": "", + "value": "0x20" + }, + { + "kind": "number", + "nativeSrc": "52414:6:10", + "nodeType": "YulLiteral", + "src": "52414:6:10", + "type": "", + "value": "0x6009" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "52401:6:10", + "nodeType": "YulIdentifier", + "src": "52401:6:10" + }, + "nativeSrc": "52401:20:10", + "nodeType": "YulFunctionCall", + "src": "52401:20:10" + }, + "nativeSrc": "52401:20:10", + "nodeType": "YulExpressionStatement", + "src": "52401:20:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "52441:4:10", + "nodeType": "YulLiteral", + "src": "52441:4:10", + "type": "", + "value": "0x1e" + }, + { + "name": "implementation", + "nativeSrc": "52447:14:10", + "nodeType": "YulIdentifier", + "src": "52447:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "52434:6:10", + "nodeType": "YulIdentifier", + "src": "52434:6:10" + }, + "nativeSrc": "52434:28:10", + "nodeType": "YulFunctionCall", + "src": "52434:28:10" + }, + "nativeSrc": "52434:28:10", + "nodeType": "YulExpressionStatement", + "src": "52434:28:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "52482:4:10", + "nodeType": "YulLiteral", + "src": "52482:4:10", + "type": "", + "value": "0x0a" + }, + { + "kind": "number", + "nativeSrc": "52488:20:10", + "nodeType": "YulLiteral", + "src": "52488:20:10", + "type": "", + "value": "0x603d3d8160223d3973" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "52475:6:10", + "nodeType": "YulIdentifier", + "src": "52475:6:10" + }, + "nativeSrc": "52475:34:10", + "nodeType": "YulFunctionCall", + "src": "52475:34:10" + }, + "nativeSrc": "52475:34:10", + "nodeType": "YulExpressionStatement", + "src": "52475:34:10" + }, + { + "nativeSrc": "52522:29:10", + "nodeType": "YulAssignment", + "src": "52522:29:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "52540:4:10", + "nodeType": "YulLiteral", + "src": "52540:4:10", + "type": "", + "value": "0x21" + }, + { + "kind": "number", + "nativeSrc": "52546:4:10", + "nodeType": "YulLiteral", + "src": "52546:4:10", + "type": "", + "value": "0x5f" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "52530:9:10", + "nodeType": "YulIdentifier", + "src": "52530:9:10" + }, + "nativeSrc": "52530:21:10", + "nodeType": "YulFunctionCall", + "src": "52530:21:10" + }, + "variableNames": [ + { + "name": "hash", + "nativeSrc": "52522:4:10", + "nodeType": "YulIdentifier", + "src": "52522:4:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "52571:4:10", + "nodeType": "YulLiteral", + "src": "52571:4:10", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "52577:1:10", + "nodeType": "YulIdentifier", + "src": "52577:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "52564:6:10", + "nodeType": "YulIdentifier", + "src": "52564:6:10" + }, + "nativeSrc": "52564:15:10", + "nodeType": "YulFunctionCall", + "src": "52564:15:10" + }, + "nativeSrc": "52564:15:10", + "nodeType": "YulExpressionStatement", + "src": "52564:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "52635:4:10", + "nodeType": "YulLiteral", + "src": "52635:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "52641:1:10", + "nodeType": "YulLiteral", + "src": "52641:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "52628:6:10", + "nodeType": "YulIdentifier", + "src": "52628:6:10" + }, + "nativeSrc": "52628:15:10", + "nodeType": "YulFunctionCall", + "src": "52628:15:10" + }, + "nativeSrc": "52628:15:10", + "nodeType": "YulExpressionStatement", + "src": "52628:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3658, + "isOffset": false, + "isSlot": false, + "src": "52522:4:10", + "valueSize": 1 + }, + { + "declaration": 3655, + "isOffset": false, + "isSlot": false, + "src": "52447:14:10", + "valueSize": 1 + } + ], + "id": 3660, + "nodeType": "InlineAssembly", + "src": "52125:554:10" + } + ] + }, + "documentation": { + "id": 3653, + "nodeType": "StructuredDocumentation", + "src": "51882:95:10", + "text": "@dev Returns the initialization code hash of the minimal ERC1967 proxy of `implementation`." + }, + "id": 3662, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeHashERC1967", + "nameLocation": "51991:19:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3656, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3655, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "52019:14:10", + "nodeType": "VariableDeclaration", + "scope": 3662, + "src": "52011:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3654, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "52011:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "52010:24:10" + }, + "returnParameters": { + "id": 3659, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3658, + "mutability": "mutable", + "name": "hash", + "nameLocation": "52066:4:10", + "nodeType": "VariableDeclaration", + "scope": 3662, + "src": "52058:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3657, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "52058:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "52057:14:10" + }, + "scope": 5104, + "src": "51982:703:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3688, + "nodeType": "Block", + "src": "53058:138:10", + "statements": [ + { + "assignments": [ + 3675 + ], + "declarations": [ + { + "constant": false, + "id": 3675, + "mutability": "mutable", + "name": "hash", + "nameLocation": "53076:4:10", + "nodeType": "VariableDeclaration", + "scope": 3688, + "src": "53068:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3674, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "53068:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 3679, + "initialValue": { + "arguments": [ + { + "id": 3677, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3665, + "src": "53103:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3676, + "name": "initCodeHashERC1967", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3662, + 3824 + ], + "referencedDeclaration": 3662, + "src": "53083:19:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_bytes32_$", + "typeString": "function (address) pure returns (bytes32)" + } + }, + "id": 3678, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "53083:35:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "53068:50:10" + }, + { + "expression": { + "id": 3686, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3680, + "name": "predicted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3672, + "src": "53128:9:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3682, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3675, + "src": "53168:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 3683, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3667, + "src": "53174:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 3684, + "name": "deployer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3669, + "src": "53180:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3681, + "name": "predictDeterministicAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3237, + 3510, + 5081 + ], + "referencedDeclaration": 5081, + "src": "53140:27:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_address_$", + "typeString": "function (bytes32,bytes32,address) pure returns (address)" + } + }, + "id": 3685, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "53140:49:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "53128:61:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3687, + "nodeType": "ExpressionStatement", + "src": "53128:61:10" + } + ] + }, + "documentation": { + "id": 3663, + "nodeType": "StructuredDocumentation", + "src": "52691:190:10", + "text": "@dev Returns the address of the ERC1967 proxy of `implementation`, with `salt` by `deployer`.\n Note: The returned result has dirty upper 96 bits. Please clean if used in assembly." + }, + "id": 3689, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "predictDeterministicAddressERC1967", + "nameLocation": "52895:34:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3670, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3665, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "52947:14:10", + "nodeType": "VariableDeclaration", + "scope": 3689, + "src": "52939:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3664, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "52939:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3667, + "mutability": "mutable", + "name": "salt", + "nameLocation": "52979:4:10", + "nodeType": "VariableDeclaration", + "scope": 3689, + "src": "52971:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3666, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "52971:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3669, + "mutability": "mutable", + "name": "deployer", + "nameLocation": "53001:8:10", + "nodeType": "VariableDeclaration", + "scope": 3689, + "src": "52993:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3668, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "52993:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "52929:86:10" + }, + "returnParameters": { + "id": 3673, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3672, + "mutability": "mutable", + "name": "predicted", + "nameLocation": "53047:9:10", + "nodeType": "VariableDeclaration", + "scope": 3689, + "src": "53039:17:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3671, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "53039:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "53038:19:10" + }, + "scope": 5104, + "src": "52886:310:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3707, + "nodeType": "Block", + "src": "53686:66:10", + "statements": [ + { + "expression": { + "id": 3705, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3699, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3697, + "src": "53696:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 3701, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "53721:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 3702, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3692, + "src": "53724:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3703, + "name": "args", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3694, + "src": "53740:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 3700, + "name": "deployERC1967", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3562, + 3574, + 3708, + 3722 + ], + "referencedDeclaration": 3722, + "src": "53707:13:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$", + "typeString": "function (uint256,address,bytes memory) returns (address)" + } + }, + "id": 3704, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "53707:38:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "53696:49:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3706, + "nodeType": "ExpressionStatement", + "src": "53696:49:10" + } + ] + }, + "documentation": { + "id": 3690, + "nodeType": "StructuredDocumentation", + "src": "53485:74:10", + "text": "@dev Deploys a minimal ERC1967 proxy with `implementation` and `args`." + }, + "id": 3708, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployERC1967", + "nameLocation": "53573:13:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3695, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3692, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "53595:14:10", + "nodeType": "VariableDeclaration", + "scope": 3708, + "src": "53587:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3691, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "53587:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3694, + "mutability": "mutable", + "name": "args", + "nameLocation": "53624:4:10", + "nodeType": "VariableDeclaration", + "scope": 3708, + "src": "53611:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3693, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "53611:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "53586:43:10" + }, + "returnParameters": { + "id": 3698, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3697, + "mutability": "mutable", + "name": "instance", + "nameLocation": "53672:8:10", + "nodeType": "VariableDeclaration", + "scope": 3708, + "src": "53664:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3696, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "53664:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "53663:18:10" + }, + "scope": 5104, + "src": "53564:188:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3721, + "nodeType": "Block", + "src": "54022:899:10", + "statements": [ + { + "AST": { + "nativeSrc": "54084:831:10", + "nodeType": "YulBlock", + "src": "54084:831:10", + "statements": [ + { + "nativeSrc": "54098:20:10", + "nodeType": "YulVariableDeclaration", + "src": "54098:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "54113:4:10", + "nodeType": "YulLiteral", + "src": "54113:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "54107:5:10", + "nodeType": "YulIdentifier", + "src": "54107:5:10" + }, + "nativeSrc": "54107:11:10", + "nodeType": "YulFunctionCall", + "src": "54107:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "54102:1:10", + "nodeType": "YulTypedName", + "src": "54102:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "54131:20:10", + "nodeType": "YulVariableDeclaration", + "src": "54131:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "54146:4:10", + "nodeType": "YulIdentifier", + "src": "54146:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "54140:5:10", + "nodeType": "YulIdentifier", + "src": "54140:5:10" + }, + "nativeSrc": "54140:11:10", + "nodeType": "YulFunctionCall", + "src": "54140:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "54135:1:10", + "nodeType": "YulTypedName", + "src": "54135:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "54179:3:10", + "nodeType": "YulIdentifier", + "src": "54179:3:10" + }, + "nativeSrc": "54179:5:10", + "nodeType": "YulFunctionCall", + "src": "54179:5:10" + }, + { + "kind": "number", + "nativeSrc": "54186:1:10", + "nodeType": "YulLiteral", + "src": "54186:1:10", + "type": "", + "value": "4" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "54193:4:10", + "nodeType": "YulIdentifier", + "src": "54193:4:10" + }, + { + "kind": "number", + "nativeSrc": "54199:4:10", + "nodeType": "YulLiteral", + "src": "54199:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "54189:3:10", + "nodeType": "YulIdentifier", + "src": "54189:3:10" + }, + "nativeSrc": "54189:15:10", + "nodeType": "YulFunctionCall", + "src": "54189:15:10" + }, + { + "name": "n", + "nativeSrc": "54206:1:10", + "nodeType": "YulIdentifier", + "src": "54206:1:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "54213:1:10", + "nodeType": "YulIdentifier", + "src": "54213:1:10" + }, + { + "kind": "number", + "nativeSrc": "54216:4:10", + "nodeType": "YulLiteral", + "src": "54216:4:10", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "54209:3:10", + "nodeType": "YulIdentifier", + "src": "54209:3:10" + }, + "nativeSrc": "54209:12:10", + "nodeType": "YulFunctionCall", + "src": "54209:12:10" + }, + { + "name": "n", + "nativeSrc": "54223:1:10", + "nodeType": "YulIdentifier", + "src": "54223:1:10" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "54168:10:10", + "nodeType": "YulIdentifier", + "src": "54168:10:10" + }, + "nativeSrc": "54168:57:10", + "nodeType": "YulFunctionCall", + "src": "54168:57:10" + } + ], + "functionName": { + "name": "pop", + "nativeSrc": "54164:3:10", + "nodeType": "YulIdentifier", + "src": "54164:3:10" + }, + "nativeSrc": "54164:62:10", + "nodeType": "YulFunctionCall", + "src": "54164:62:10" + }, + "nativeSrc": "54164:62:10", + "nodeType": "YulExpressionStatement", + "src": "54164:62:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "54250:1:10", + "nodeType": "YulIdentifier", + "src": "54250:1:10" + }, + { + "kind": "number", + "nativeSrc": "54253:4:10", + "nodeType": "YulLiteral", + "src": "54253:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "54246:3:10", + "nodeType": "YulIdentifier", + "src": "54246:3:10" + }, + "nativeSrc": "54246:12:10", + "nodeType": "YulFunctionCall", + "src": "54246:12:10" + }, + { + "kind": "number", + "nativeSrc": "54260:66:10", + "nodeType": "YulLiteral", + "src": "54260:66:10", + "type": "", + "value": "0xcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "54239:6:10", + "nodeType": "YulIdentifier", + "src": "54239:6:10" + }, + "nativeSrc": "54239:88:10", + "nodeType": "YulFunctionCall", + "src": "54239:88:10" + }, + "nativeSrc": "54239:88:10", + "nodeType": "YulExpressionStatement", + "src": "54239:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "54351:1:10", + "nodeType": "YulIdentifier", + "src": "54351:1:10" + }, + { + "kind": "number", + "nativeSrc": "54354:4:10", + "nodeType": "YulLiteral", + "src": "54354:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "54347:3:10", + "nodeType": "YulIdentifier", + "src": "54347:3:10" + }, + "nativeSrc": "54347:12:10", + "nodeType": "YulFunctionCall", + "src": "54347:12:10" + }, + { + "kind": "number", + "nativeSrc": "54361:66:10", + "nodeType": "YulLiteral", + "src": "54361:66:10", + "type": "", + "value": "0x5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "54340:6:10", + "nodeType": "YulIdentifier", + "src": "54340:6:10" + }, + "nativeSrc": "54340:88:10", + "nodeType": "YulFunctionCall", + "src": "54340:88:10" + }, + "nativeSrc": "54340:88:10", + "nodeType": "YulExpressionStatement", + "src": "54340:88:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "54448:4:10", + "nodeType": "YulLiteral", + "src": "54448:4:10", + "type": "", + "value": "0x16" + }, + { + "kind": "number", + "nativeSrc": "54454:6:10", + "nodeType": "YulLiteral", + "src": "54454:6:10", + "type": "", + "value": "0x6009" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "54441:6:10", + "nodeType": "YulIdentifier", + "src": "54441:6:10" + }, + "nativeSrc": "54441:20:10", + "nodeType": "YulFunctionCall", + "src": "54441:20:10" + }, + "nativeSrc": "54441:20:10", + "nodeType": "YulExpressionStatement", + "src": "54441:20:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "54481:4:10", + "nodeType": "YulLiteral", + "src": "54481:4:10", + "type": "", + "value": "0x14" + }, + { + "name": "implementation", + "nativeSrc": "54487:14:10", + "nodeType": "YulIdentifier", + "src": "54487:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "54474:6:10", + "nodeType": "YulIdentifier", + "src": "54474:6:10" + }, + "nativeSrc": "54474:28:10", + "nodeType": "YulFunctionCall", + "src": "54474:28:10" + }, + "nativeSrc": "54474:28:10", + "nodeType": "YulExpressionStatement", + "src": "54474:28:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "n", + "nativeSrc": "54612:1:10", + "nodeType": "YulIdentifier", + "src": "54612:1:10" + }, + { + "kind": "number", + "nativeSrc": "54615:6:10", + "nodeType": "YulLiteral", + "src": "54615:6:10", + "type": "", + "value": "0xffc2" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "54609:2:10", + "nodeType": "YulIdentifier", + "src": "54609:2:10" + }, + "nativeSrc": "54609:13:10", + "nodeType": "YulFunctionCall", + "src": "54609:13:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "54628:24:10", + "nodeType": "YulLiteral", + "src": "54628:24:10", + "type": "", + "value": "0xfe61003d3d8160233d3973" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "54658:2:10", + "nodeType": "YulLiteral", + "src": "54658:2:10", + "type": "", + "value": "56" + }, + { + "name": "n", + "nativeSrc": "54662:1:10", + "nodeType": "YulIdentifier", + "src": "54662:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "54654:3:10", + "nodeType": "YulIdentifier", + "src": "54654:3:10" + }, + "nativeSrc": "54654:10:10", + "nodeType": "YulFunctionCall", + "src": "54654:10:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "54624:3:10", + "nodeType": "YulIdentifier", + "src": "54624:3:10" + }, + "nativeSrc": "54624:41:10", + "nodeType": "YulFunctionCall", + "src": "54624:41:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "54602:6:10", + "nodeType": "YulIdentifier", + "src": "54602:6:10" + }, + "nativeSrc": "54602:64:10", + "nodeType": "YulFunctionCall", + "src": "54602:64:10" + }, + "nativeSrc": "54602:64:10", + "nodeType": "YulExpressionStatement", + "src": "54602:64:10" + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "54686:1:10", + "nodeType": "YulIdentifier", + "src": "54686:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "54695:4:10", + "nodeType": "YulLiteral", + "src": "54695:4:10", + "type": "", + "value": "0x16" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "54689:5:10", + "nodeType": "YulIdentifier", + "src": "54689:5:10" + }, + "nativeSrc": "54689:11:10", + "nodeType": "YulFunctionCall", + "src": "54689:11:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "54679:6:10", + "nodeType": "YulIdentifier", + "src": "54679:6:10" + }, + "nativeSrc": "54679:22:10", + "nodeType": "YulFunctionCall", + "src": "54679:22:10" + }, + "nativeSrc": "54679:22:10", + "nodeType": "YulExpressionStatement", + "src": "54679:22:10" + }, + { + "nativeSrc": "54714:42:10", + "nodeType": "YulAssignment", + "src": "54714:42:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "54733:5:10", + "nodeType": "YulIdentifier", + "src": "54733:5:10" + }, + { + "name": "m", + "nativeSrc": "54740:1:10", + "nodeType": "YulIdentifier", + "src": "54740:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "54747:1:10", + "nodeType": "YulIdentifier", + "src": "54747:1:10" + }, + { + "kind": "number", + "nativeSrc": "54750:4:10", + "nodeType": "YulLiteral", + "src": "54750:4:10", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "54743:3:10", + "nodeType": "YulIdentifier", + "src": "54743:3:10" + }, + "nativeSrc": "54743:12:10", + "nodeType": "YulFunctionCall", + "src": "54743:12:10" + } + ], + "functionName": { + "name": "create", + "nativeSrc": "54726:6:10", + "nodeType": "YulIdentifier", + "src": "54726:6:10" + }, + "nativeSrc": "54726:30:10", + "nodeType": "YulFunctionCall", + "src": "54726:30:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "54714:8:10", + "nodeType": "YulIdentifier", + "src": "54714:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "54789:116:10", + "nodeType": "YulBlock", + "src": "54789:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "54814:4:10", + "nodeType": "YulLiteral", + "src": "54814:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "54820:10:10", + "nodeType": "YulLiteral", + "src": "54820:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "54807:6:10", + "nodeType": "YulIdentifier", + "src": "54807:6:10" + }, + "nativeSrc": "54807:24:10", + "nodeType": "YulFunctionCall", + "src": "54807:24:10" + }, + "nativeSrc": "54807:24:10", + "nodeType": "YulExpressionStatement", + "src": "54807:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "54880:4:10", + "nodeType": "YulLiteral", + "src": "54880:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "54886:4:10", + "nodeType": "YulLiteral", + "src": "54886:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "54873:6:10", + "nodeType": "YulIdentifier", + "src": "54873:6:10" + }, + "nativeSrc": "54873:18:10", + "nodeType": "YulFunctionCall", + "src": "54873:18:10" + }, + "nativeSrc": "54873:18:10", + "nodeType": "YulExpressionStatement", + "src": "54873:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "54779:8:10", + "nodeType": "YulIdentifier", + "src": "54779:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "54772:6:10", + "nodeType": "YulIdentifier", + "src": "54772:6:10" + }, + "nativeSrc": "54772:16:10", + "nodeType": "YulFunctionCall", + "src": "54772:16:10" + }, + "nativeSrc": "54769:136:10", + "nodeType": "YulIf", + "src": "54769:136:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3715, + "isOffset": false, + "isSlot": false, + "src": "54146:4:10", + "valueSize": 1 + }, + { + "declaration": 3715, + "isOffset": false, + "isSlot": false, + "src": "54193:4:10", + "valueSize": 1 + }, + { + "declaration": 3713, + "isOffset": false, + "isSlot": false, + "src": "54487:14:10", + "valueSize": 1 + }, + { + "declaration": 3718, + "isOffset": false, + "isSlot": false, + "src": "54714:8:10", + "valueSize": 1 + }, + { + "declaration": 3718, + "isOffset": false, + "isSlot": false, + "src": "54779:8:10", + "valueSize": 1 + }, + { + "declaration": 3711, + "isOffset": false, + "isSlot": false, + "src": "54733:5:10", + "valueSize": 1 + } + ], + "id": 3720, + "nodeType": "InlineAssembly", + "src": "54075:840:10" + } + ] + }, + "documentation": { + "id": 3709, + "nodeType": "StructuredDocumentation", + "src": "53758:122:10", + "text": "@dev Deploys a minimal ERC1967 proxy with `implementation` and `args`.\n Deposits `value` ETH during deployment." + }, + "id": 3722, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployERC1967", + "nameLocation": "53894:13:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3716, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3711, + "mutability": "mutable", + "name": "value", + "nameLocation": "53916:5:10", + "nodeType": "VariableDeclaration", + "scope": 3722, + "src": "53908:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3710, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "53908:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3713, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "53931:14:10", + "nodeType": "VariableDeclaration", + "scope": 3722, + "src": "53923:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3712, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "53923:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3715, + "mutability": "mutable", + "name": "args", + "nameLocation": "53960:4:10", + "nodeType": "VariableDeclaration", + "scope": 3722, + "src": "53947:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3714, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "53947:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "53907:58:10" + }, + "returnParameters": { + "id": 3719, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3718, + "mutability": "mutable", + "name": "instance", + "nameLocation": "54008:8:10", + "nodeType": "VariableDeclaration", + "scope": 3722, + "src": "54000:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3717, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "54000:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "53999:18:10" + }, + "scope": 5104, + "src": "53885:1036:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3743, + "nodeType": "Block", + "src": "55177:85:10", + "statements": [ + { + "expression": { + "id": 3741, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3734, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3732, + "src": "55187:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 3736, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "55225:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 3737, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3725, + "src": "55228:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3738, + "name": "args", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3727, + "src": "55244:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 3739, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3729, + "src": "55250:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3735, + "name": "deployDeterministicERC1967", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3593, + 3607, + 3744, + 3760 + ], + "referencedDeclaration": 3760, + "src": "55198:26:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (uint256,address,bytes memory,bytes32) returns (address)" + } + }, + "id": 3740, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "55198:57:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "55187:68:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3742, + "nodeType": "ExpressionStatement", + "src": "55187:68:10" + } + ] + }, + "documentation": { + "id": 3723, + "nodeType": "StructuredDocumentation", + "src": "54927:96:10", + "text": "@dev Deploys a deterministic minimal ERC1967 proxy with `implementation`, `args` and `salt`." + }, + "id": 3744, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployDeterministicERC1967", + "nameLocation": "55037:26:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3730, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3725, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "55072:14:10", + "nodeType": "VariableDeclaration", + "scope": 3744, + "src": "55064:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3724, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "55064:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3727, + "mutability": "mutable", + "name": "args", + "nameLocation": "55101:4:10", + "nodeType": "VariableDeclaration", + "scope": 3744, + "src": "55088:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3726, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "55088:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3729, + "mutability": "mutable", + "name": "salt", + "nameLocation": "55115:4:10", + "nodeType": "VariableDeclaration", + "scope": 3744, + "src": "55107:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3728, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "55107:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "55063:57:10" + }, + "returnParameters": { + "id": 3733, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3732, + "mutability": "mutable", + "name": "instance", + "nameLocation": "55163:8:10", + "nodeType": "VariableDeclaration", + "scope": 3744, + "src": "55155:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3731, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "55155:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "55154:18:10" + }, + "scope": 5104, + "src": "55028:234:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3759, + "nodeType": "Block", + "src": "55599:906:10", + "statements": [ + { + "AST": { + "nativeSrc": "55661:838:10", + "nodeType": "YulBlock", + "src": "55661:838:10", + "statements": [ + { + "nativeSrc": "55675:20:10", + "nodeType": "YulVariableDeclaration", + "src": "55675:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "55690:4:10", + "nodeType": "YulLiteral", + "src": "55690:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "55684:5:10", + "nodeType": "YulIdentifier", + "src": "55684:5:10" + }, + "nativeSrc": "55684:11:10", + "nodeType": "YulFunctionCall", + "src": "55684:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "55679:1:10", + "nodeType": "YulTypedName", + "src": "55679:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "55708:20:10", + "nodeType": "YulVariableDeclaration", + "src": "55708:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "55723:4:10", + "nodeType": "YulIdentifier", + "src": "55723:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "55717:5:10", + "nodeType": "YulIdentifier", + "src": "55717:5:10" + }, + "nativeSrc": "55717:11:10", + "nodeType": "YulFunctionCall", + "src": "55717:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "55712:1:10", + "nodeType": "YulTypedName", + "src": "55712:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "55756:3:10", + "nodeType": "YulIdentifier", + "src": "55756:3:10" + }, + "nativeSrc": "55756:5:10", + "nodeType": "YulFunctionCall", + "src": "55756:5:10" + }, + { + "kind": "number", + "nativeSrc": "55763:1:10", + "nodeType": "YulLiteral", + "src": "55763:1:10", + "type": "", + "value": "4" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "55770:4:10", + "nodeType": "YulIdentifier", + "src": "55770:4:10" + }, + { + "kind": "number", + "nativeSrc": "55776:4:10", + "nodeType": "YulLiteral", + "src": "55776:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "55766:3:10", + "nodeType": "YulIdentifier", + "src": "55766:3:10" + }, + "nativeSrc": "55766:15:10", + "nodeType": "YulFunctionCall", + "src": "55766:15:10" + }, + { + "name": "n", + "nativeSrc": "55783:1:10", + "nodeType": "YulIdentifier", + "src": "55783:1:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "55790:1:10", + "nodeType": "YulIdentifier", + "src": "55790:1:10" + }, + { + "kind": "number", + "nativeSrc": "55793:4:10", + "nodeType": "YulLiteral", + "src": "55793:4:10", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "55786:3:10", + "nodeType": "YulIdentifier", + "src": "55786:3:10" + }, + "nativeSrc": "55786:12:10", + "nodeType": "YulFunctionCall", + "src": "55786:12:10" + }, + { + "name": "n", + "nativeSrc": "55800:1:10", + "nodeType": "YulIdentifier", + "src": "55800:1:10" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "55745:10:10", + "nodeType": "YulIdentifier", + "src": "55745:10:10" + }, + "nativeSrc": "55745:57:10", + "nodeType": "YulFunctionCall", + "src": "55745:57:10" + } + ], + "functionName": { + "name": "pop", + "nativeSrc": "55741:3:10", + "nodeType": "YulIdentifier", + "src": "55741:3:10" + }, + "nativeSrc": "55741:62:10", + "nodeType": "YulFunctionCall", + "src": "55741:62:10" + }, + "nativeSrc": "55741:62:10", + "nodeType": "YulExpressionStatement", + "src": "55741:62:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "55827:1:10", + "nodeType": "YulIdentifier", + "src": "55827:1:10" + }, + { + "kind": "number", + "nativeSrc": "55830:4:10", + "nodeType": "YulLiteral", + "src": "55830:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "55823:3:10", + "nodeType": "YulIdentifier", + "src": "55823:3:10" + }, + "nativeSrc": "55823:12:10", + "nodeType": "YulFunctionCall", + "src": "55823:12:10" + }, + { + "kind": "number", + "nativeSrc": "55837:66:10", + "nodeType": "YulLiteral", + "src": "55837:66:10", + "type": "", + "value": "0xcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "55816:6:10", + "nodeType": "YulIdentifier", + "src": "55816:6:10" + }, + "nativeSrc": "55816:88:10", + "nodeType": "YulFunctionCall", + "src": "55816:88:10" + }, + "nativeSrc": "55816:88:10", + "nodeType": "YulExpressionStatement", + "src": "55816:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "55928:1:10", + "nodeType": "YulIdentifier", + "src": "55928:1:10" + }, + { + "kind": "number", + "nativeSrc": "55931:4:10", + "nodeType": "YulLiteral", + "src": "55931:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "55924:3:10", + "nodeType": "YulIdentifier", + "src": "55924:3:10" + }, + "nativeSrc": "55924:12:10", + "nodeType": "YulFunctionCall", + "src": "55924:12:10" + }, + { + "kind": "number", + "nativeSrc": "55938:66:10", + "nodeType": "YulLiteral", + "src": "55938:66:10", + "type": "", + "value": "0x5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "55917:6:10", + "nodeType": "YulIdentifier", + "src": "55917:6:10" + }, + "nativeSrc": "55917:88:10", + "nodeType": "YulFunctionCall", + "src": "55917:88:10" + }, + "nativeSrc": "55917:88:10", + "nodeType": "YulExpressionStatement", + "src": "55917:88:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "56025:4:10", + "nodeType": "YulLiteral", + "src": "56025:4:10", + "type": "", + "value": "0x16" + }, + { + "kind": "number", + "nativeSrc": "56031:6:10", + "nodeType": "YulLiteral", + "src": "56031:6:10", + "type": "", + "value": "0x6009" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "56018:6:10", + "nodeType": "YulIdentifier", + "src": "56018:6:10" + }, + "nativeSrc": "56018:20:10", + "nodeType": "YulFunctionCall", + "src": "56018:20:10" + }, + "nativeSrc": "56018:20:10", + "nodeType": "YulExpressionStatement", + "src": "56018:20:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "56058:4:10", + "nodeType": "YulLiteral", + "src": "56058:4:10", + "type": "", + "value": "0x14" + }, + { + "name": "implementation", + "nativeSrc": "56064:14:10", + "nodeType": "YulIdentifier", + "src": "56064:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "56051:6:10", + "nodeType": "YulIdentifier", + "src": "56051:6:10" + }, + "nativeSrc": "56051:28:10", + "nodeType": "YulFunctionCall", + "src": "56051:28:10" + }, + "nativeSrc": "56051:28:10", + "nodeType": "YulExpressionStatement", + "src": "56051:28:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "n", + "nativeSrc": "56189:1:10", + "nodeType": "YulIdentifier", + "src": "56189:1:10" + }, + { + "kind": "number", + "nativeSrc": "56192:6:10", + "nodeType": "YulLiteral", + "src": "56192:6:10", + "type": "", + "value": "0xffc2" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "56186:2:10", + "nodeType": "YulIdentifier", + "src": "56186:2:10" + }, + "nativeSrc": "56186:13:10", + "nodeType": "YulFunctionCall", + "src": "56186:13:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "56205:24:10", + "nodeType": "YulLiteral", + "src": "56205:24:10", + "type": "", + "value": "0xfe61003d3d8160233d3973" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "56235:2:10", + "nodeType": "YulLiteral", + "src": "56235:2:10", + "type": "", + "value": "56" + }, + { + "name": "n", + "nativeSrc": "56239:1:10", + "nodeType": "YulIdentifier", + "src": "56239:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "56231:3:10", + "nodeType": "YulIdentifier", + "src": "56231:3:10" + }, + "nativeSrc": "56231:10:10", + "nodeType": "YulFunctionCall", + "src": "56231:10:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "56201:3:10", + "nodeType": "YulIdentifier", + "src": "56201:3:10" + }, + "nativeSrc": "56201:41:10", + "nodeType": "YulFunctionCall", + "src": "56201:41:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "56179:6:10", + "nodeType": "YulIdentifier", + "src": "56179:6:10" + }, + "nativeSrc": "56179:64:10", + "nodeType": "YulFunctionCall", + "src": "56179:64:10" + }, + "nativeSrc": "56179:64:10", + "nodeType": "YulExpressionStatement", + "src": "56179:64:10" + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "56263:1:10", + "nodeType": "YulIdentifier", + "src": "56263:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "56272:4:10", + "nodeType": "YulLiteral", + "src": "56272:4:10", + "type": "", + "value": "0x16" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "56266:5:10", + "nodeType": "YulIdentifier", + "src": "56266:5:10" + }, + "nativeSrc": "56266:11:10", + "nodeType": "YulFunctionCall", + "src": "56266:11:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "56256:6:10", + "nodeType": "YulIdentifier", + "src": "56256:6:10" + }, + "nativeSrc": "56256:22:10", + "nodeType": "YulFunctionCall", + "src": "56256:22:10" + }, + "nativeSrc": "56256:22:10", + "nodeType": "YulExpressionStatement", + "src": "56256:22:10" + }, + { + "nativeSrc": "56291:49:10", + "nodeType": "YulAssignment", + "src": "56291:49:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "56311:5:10", + "nodeType": "YulIdentifier", + "src": "56311:5:10" + }, + { + "name": "m", + "nativeSrc": "56318:1:10", + "nodeType": "YulIdentifier", + "src": "56318:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "56325:1:10", + "nodeType": "YulIdentifier", + "src": "56325:1:10" + }, + { + "kind": "number", + "nativeSrc": "56328:4:10", + "nodeType": "YulLiteral", + "src": "56328:4:10", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "56321:3:10", + "nodeType": "YulIdentifier", + "src": "56321:3:10" + }, + "nativeSrc": "56321:12:10", + "nodeType": "YulFunctionCall", + "src": "56321:12:10" + }, + { + "name": "salt", + "nativeSrc": "56335:4:10", + "nodeType": "YulIdentifier", + "src": "56335:4:10" + } + ], + "functionName": { + "name": "create2", + "nativeSrc": "56303:7:10", + "nodeType": "YulIdentifier", + "src": "56303:7:10" + }, + "nativeSrc": "56303:37:10", + "nodeType": "YulFunctionCall", + "src": "56303:37:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "56291:8:10", + "nodeType": "YulIdentifier", + "src": "56291:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "56373:116:10", + "nodeType": "YulBlock", + "src": "56373:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "56398:4:10", + "nodeType": "YulLiteral", + "src": "56398:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "56404:10:10", + "nodeType": "YulLiteral", + "src": "56404:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "56391:6:10", + "nodeType": "YulIdentifier", + "src": "56391:6:10" + }, + "nativeSrc": "56391:24:10", + "nodeType": "YulFunctionCall", + "src": "56391:24:10" + }, + "nativeSrc": "56391:24:10", + "nodeType": "YulExpressionStatement", + "src": "56391:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "56464:4:10", + "nodeType": "YulLiteral", + "src": "56464:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "56470:4:10", + "nodeType": "YulLiteral", + "src": "56470:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "56457:6:10", + "nodeType": "YulIdentifier", + "src": "56457:6:10" + }, + "nativeSrc": "56457:18:10", + "nodeType": "YulFunctionCall", + "src": "56457:18:10" + }, + "nativeSrc": "56457:18:10", + "nodeType": "YulExpressionStatement", + "src": "56457:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "56363:8:10", + "nodeType": "YulIdentifier", + "src": "56363:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "56356:6:10", + "nodeType": "YulIdentifier", + "src": "56356:6:10" + }, + "nativeSrc": "56356:16:10", + "nodeType": "YulFunctionCall", + "src": "56356:16:10" + }, + "nativeSrc": "56353:136:10", + "nodeType": "YulIf", + "src": "56353:136:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3751, + "isOffset": false, + "isSlot": false, + "src": "55723:4:10", + "valueSize": 1 + }, + { + "declaration": 3751, + "isOffset": false, + "isSlot": false, + "src": "55770:4:10", + "valueSize": 1 + }, + { + "declaration": 3749, + "isOffset": false, + "isSlot": false, + "src": "56064:14:10", + "valueSize": 1 + }, + { + "declaration": 3756, + "isOffset": false, + "isSlot": false, + "src": "56291:8:10", + "valueSize": 1 + }, + { + "declaration": 3756, + "isOffset": false, + "isSlot": false, + "src": "56363:8:10", + "valueSize": 1 + }, + { + "declaration": 3753, + "isOffset": false, + "isSlot": false, + "src": "56335:4:10", + "valueSize": 1 + }, + { + "declaration": 3747, + "isOffset": false, + "isSlot": false, + "src": "56311:5:10", + "valueSize": 1 + } + ], + "id": 3758, + "nodeType": "InlineAssembly", + "src": "55652:847:10" + } + ] + }, + "documentation": { + "id": 3745, + "nodeType": "StructuredDocumentation", + "src": "55268:144:10", + "text": "@dev Deploys a deterministic minimal ERC1967 proxy with `implementation`, `args` and `salt`.\n Deposits `value` ETH during deployment." + }, + "id": 3760, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployDeterministicERC1967", + "nameLocation": "55426:26:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3754, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3747, + "mutability": "mutable", + "name": "value", + "nameLocation": "55470:5:10", + "nodeType": "VariableDeclaration", + "scope": 3760, + "src": "55462:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3746, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "55462:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3749, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "55493:14:10", + "nodeType": "VariableDeclaration", + "scope": 3760, + "src": "55485:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3748, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "55485:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3751, + "mutability": "mutable", + "name": "args", + "nameLocation": "55530:4:10", + "nodeType": "VariableDeclaration", + "scope": 3760, + "src": "55517:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3750, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "55517:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3753, + "mutability": "mutable", + "name": "salt", + "nameLocation": "55552:4:10", + "nodeType": "VariableDeclaration", + "scope": 3760, + "src": "55544:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3752, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "55544:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "55452:110:10" + }, + "returnParameters": { + "id": 3757, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3756, + "mutability": "mutable", + "name": "instance", + "nameLocation": "55589:8:10", + "nodeType": "VariableDeclaration", + "scope": 3760, + "src": "55581:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3755, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "55581:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "55580:18:10" + }, + "scope": 5104, + "src": "55417:1088:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3781, + "nodeType": "Block", + "src": "56926:81:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "30", + "id": 3775, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "56970:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 3776, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3763, + "src": "56973:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3777, + "name": "args", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3765, + "src": "56989:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 3778, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3767, + "src": "56995:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3774, + "name": "createDeterministicERC1967", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3626, + 3642, + 3782, + 3800 + ], + "referencedDeclaration": 3800, + "src": "56943:26:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$_t_bytes32_$returns$_t_bool_$_t_address_$", + "typeString": "function (uint256,address,bytes memory,bytes32) returns (bool,address)" + } + }, + "id": 3779, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "56943:57:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_address_$", + "typeString": "tuple(bool,address)" + } + }, + "functionReturnParameters": 3773, + "id": 3780, + "nodeType": "Return", + "src": "56936:64:10" + } + ] + }, + "documentation": { + "id": 3761, + "nodeType": "StructuredDocumentation", + "src": "56511:239:10", + "text": "@dev Creates a deterministic minimal ERC1967 proxy with `implementation`, `args` and `salt`.\n Note: This method is intended for use in ERC4337 factories,\n which are expected to NOT revert if the proxy is already deployed." + }, + "id": 3782, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createDeterministicERC1967", + "nameLocation": "56764:26:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3768, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3763, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "56799:14:10", + "nodeType": "VariableDeclaration", + "scope": 3782, + "src": "56791:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3762, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "56791:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3765, + "mutability": "mutable", + "name": "args", + "nameLocation": "56828:4:10", + "nodeType": "VariableDeclaration", + "scope": 3782, + "src": "56815:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3764, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "56815:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3767, + "mutability": "mutable", + "name": "salt", + "nameLocation": "56842:4:10", + "nodeType": "VariableDeclaration", + "scope": 3782, + "src": "56834:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3766, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "56834:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "56790:57:10" + }, + "returnParameters": { + "id": 3773, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3770, + "mutability": "mutable", + "name": "alreadyDeployed", + "nameLocation": "56887:15:10", + "nodeType": "VariableDeclaration", + "scope": 3782, + "src": "56882:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3769, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "56882:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3772, + "mutability": "mutable", + "name": "instance", + "nameLocation": "56912:8:10", + "nodeType": "VariableDeclaration", + "scope": 3782, + "src": "56904:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3771, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "56904:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "56881:40:10" + }, + "scope": 5104, + "src": "56755:252:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3799, + "nodeType": "Block", + "src": "57509:1773:10", + "statements": [ + { + "AST": { + "nativeSrc": "57571:1705:10", + "nodeType": "YulBlock", + "src": "57571:1705:10", + "statements": [ + { + "nativeSrc": "57585:20:10", + "nodeType": "YulVariableDeclaration", + "src": "57585:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "57600:4:10", + "nodeType": "YulLiteral", + "src": "57600:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "57594:5:10", + "nodeType": "YulIdentifier", + "src": "57594:5:10" + }, + "nativeSrc": "57594:11:10", + "nodeType": "YulFunctionCall", + "src": "57594:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "57589:1:10", + "nodeType": "YulTypedName", + "src": "57589:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "57618:20:10", + "nodeType": "YulVariableDeclaration", + "src": "57618:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "57633:4:10", + "nodeType": "YulIdentifier", + "src": "57633:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "57627:5:10", + "nodeType": "YulIdentifier", + "src": "57627:5:10" + }, + "nativeSrc": "57627:11:10", + "nodeType": "YulFunctionCall", + "src": "57627:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "57622:1:10", + "nodeType": "YulTypedName", + "src": "57622:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "57666:3:10", + "nodeType": "YulIdentifier", + "src": "57666:3:10" + }, + "nativeSrc": "57666:5:10", + "nodeType": "YulFunctionCall", + "src": "57666:5:10" + }, + { + "kind": "number", + "nativeSrc": "57673:1:10", + "nodeType": "YulLiteral", + "src": "57673:1:10", + "type": "", + "value": "4" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "57680:4:10", + "nodeType": "YulIdentifier", + "src": "57680:4:10" + }, + { + "kind": "number", + "nativeSrc": "57686:4:10", + "nodeType": "YulLiteral", + "src": "57686:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "57676:3:10", + "nodeType": "YulIdentifier", + "src": "57676:3:10" + }, + "nativeSrc": "57676:15:10", + "nodeType": "YulFunctionCall", + "src": "57676:15:10" + }, + { + "name": "n", + "nativeSrc": "57693:1:10", + "nodeType": "YulIdentifier", + "src": "57693:1:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "57700:1:10", + "nodeType": "YulIdentifier", + "src": "57700:1:10" + }, + { + "kind": "number", + "nativeSrc": "57703:4:10", + "nodeType": "YulLiteral", + "src": "57703:4:10", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "57696:3:10", + "nodeType": "YulIdentifier", + "src": "57696:3:10" + }, + "nativeSrc": "57696:12:10", + "nodeType": "YulFunctionCall", + "src": "57696:12:10" + }, + { + "name": "n", + "nativeSrc": "57710:1:10", + "nodeType": "YulIdentifier", + "src": "57710:1:10" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "57655:10:10", + "nodeType": "YulIdentifier", + "src": "57655:10:10" + }, + "nativeSrc": "57655:57:10", + "nodeType": "YulFunctionCall", + "src": "57655:57:10" + } + ], + "functionName": { + "name": "pop", + "nativeSrc": "57651:3:10", + "nodeType": "YulIdentifier", + "src": "57651:3:10" + }, + "nativeSrc": "57651:62:10", + "nodeType": "YulFunctionCall", + "src": "57651:62:10" + }, + "nativeSrc": "57651:62:10", + "nodeType": "YulExpressionStatement", + "src": "57651:62:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "57737:1:10", + "nodeType": "YulIdentifier", + "src": "57737:1:10" + }, + { + "kind": "number", + "nativeSrc": "57740:4:10", + "nodeType": "YulLiteral", + "src": "57740:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "57733:3:10", + "nodeType": "YulIdentifier", + "src": "57733:3:10" + }, + "nativeSrc": "57733:12:10", + "nodeType": "YulFunctionCall", + "src": "57733:12:10" + }, + { + "kind": "number", + "nativeSrc": "57747:66:10", + "nodeType": "YulLiteral", + "src": "57747:66:10", + "type": "", + "value": "0xcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "57726:6:10", + "nodeType": "YulIdentifier", + "src": "57726:6:10" + }, + "nativeSrc": "57726:88:10", + "nodeType": "YulFunctionCall", + "src": "57726:88:10" + }, + "nativeSrc": "57726:88:10", + "nodeType": "YulExpressionStatement", + "src": "57726:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "57838:1:10", + "nodeType": "YulIdentifier", + "src": "57838:1:10" + }, + { + "kind": "number", + "nativeSrc": "57841:4:10", + "nodeType": "YulLiteral", + "src": "57841:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "57834:3:10", + "nodeType": "YulIdentifier", + "src": "57834:3:10" + }, + "nativeSrc": "57834:12:10", + "nodeType": "YulFunctionCall", + "src": "57834:12:10" + }, + { + "kind": "number", + "nativeSrc": "57848:66:10", + "nodeType": "YulLiteral", + "src": "57848:66:10", + "type": "", + "value": "0x5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "57827:6:10", + "nodeType": "YulIdentifier", + "src": "57827:6:10" + }, + "nativeSrc": "57827:88:10", + "nodeType": "YulFunctionCall", + "src": "57827:88:10" + }, + "nativeSrc": "57827:88:10", + "nodeType": "YulExpressionStatement", + "src": "57827:88:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "57935:4:10", + "nodeType": "YulLiteral", + "src": "57935:4:10", + "type": "", + "value": "0x16" + }, + { + "kind": "number", + "nativeSrc": "57941:6:10", + "nodeType": "YulLiteral", + "src": "57941:6:10", + "type": "", + "value": "0x6009" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "57928:6:10", + "nodeType": "YulIdentifier", + "src": "57928:6:10" + }, + "nativeSrc": "57928:20:10", + "nodeType": "YulFunctionCall", + "src": "57928:20:10" + }, + "nativeSrc": "57928:20:10", + "nodeType": "YulExpressionStatement", + "src": "57928:20:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "57968:4:10", + "nodeType": "YulLiteral", + "src": "57968:4:10", + "type": "", + "value": "0x14" + }, + { + "name": "implementation", + "nativeSrc": "57974:14:10", + "nodeType": "YulIdentifier", + "src": "57974:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "57961:6:10", + "nodeType": "YulIdentifier", + "src": "57961:6:10" + }, + "nativeSrc": "57961:28:10", + "nodeType": "YulFunctionCall", + "src": "57961:28:10" + }, + "nativeSrc": "57961:28:10", + "nodeType": "YulExpressionStatement", + "src": "57961:28:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "n", + "nativeSrc": "58099:1:10", + "nodeType": "YulIdentifier", + "src": "58099:1:10" + }, + { + "kind": "number", + "nativeSrc": "58102:6:10", + "nodeType": "YulLiteral", + "src": "58102:6:10", + "type": "", + "value": "0xffc2" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "58096:2:10", + "nodeType": "YulIdentifier", + "src": "58096:2:10" + }, + "nativeSrc": "58096:13:10", + "nodeType": "YulFunctionCall", + "src": "58096:13:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "58115:24:10", + "nodeType": "YulLiteral", + "src": "58115:24:10", + "type": "", + "value": "0xfe61003d3d8160233d3973" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "58145:2:10", + "nodeType": "YulLiteral", + "src": "58145:2:10", + "type": "", + "value": "56" + }, + { + "name": "n", + "nativeSrc": "58149:1:10", + "nodeType": "YulIdentifier", + "src": "58149:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "58141:3:10", + "nodeType": "YulIdentifier", + "src": "58141:3:10" + }, + "nativeSrc": "58141:10:10", + "nodeType": "YulFunctionCall", + "src": "58141:10:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "58111:3:10", + "nodeType": "YulIdentifier", + "src": "58111:3:10" + }, + "nativeSrc": "58111:41:10", + "nodeType": "YulFunctionCall", + "src": "58111:41:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "58089:6:10", + "nodeType": "YulIdentifier", + "src": "58089:6:10" + }, + "nativeSrc": "58089:64:10", + "nodeType": "YulFunctionCall", + "src": "58089:64:10" + }, + "nativeSrc": "58089:64:10", + "nodeType": "YulExpressionStatement", + "src": "58089:64:10" + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "58173:1:10", + "nodeType": "YulIdentifier", + "src": "58173:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "58182:4:10", + "nodeType": "YulLiteral", + "src": "58182:4:10", + "type": "", + "value": "0x16" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "58176:5:10", + "nodeType": "YulIdentifier", + "src": "58176:5:10" + }, + "nativeSrc": "58176:11:10", + "nodeType": "YulFunctionCall", + "src": "58176:11:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "58166:6:10", + "nodeType": "YulIdentifier", + "src": "58166:6:10" + }, + "nativeSrc": "58166:22:10", + "nodeType": "YulFunctionCall", + "src": "58166:22:10" + }, + "nativeSrc": "58166:22:10", + "nodeType": "YulExpressionStatement", + "src": "58166:22:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "58261:4:10", + "nodeType": "YulLiteral", + "src": "58261:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "58267:4:10", + "nodeType": "YulLiteral", + "src": "58267:4:10", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "58253:7:10", + "nodeType": "YulIdentifier", + "src": "58253:7:10" + }, + "nativeSrc": "58253:19:10", + "nodeType": "YulFunctionCall", + "src": "58253:19:10" + }, + "nativeSrc": "58253:19:10", + "nodeType": "YulExpressionStatement", + "src": "58253:19:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "58313:4:10", + "nodeType": "YulLiteral", + "src": "58313:4:10", + "type": "", + "value": "0x35" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "58329:1:10", + "nodeType": "YulIdentifier", + "src": "58329:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "58336:1:10", + "nodeType": "YulIdentifier", + "src": "58336:1:10" + }, + { + "kind": "number", + "nativeSrc": "58339:4:10", + "nodeType": "YulLiteral", + "src": "58339:4:10", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "58332:3:10", + "nodeType": "YulIdentifier", + "src": "58332:3:10" + }, + "nativeSrc": "58332:12:10", + "nodeType": "YulFunctionCall", + "src": "58332:12:10" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "58319:9:10", + "nodeType": "YulIdentifier", + "src": "58319:9:10" + }, + "nativeSrc": "58319:26:10", + "nodeType": "YulFunctionCall", + "src": "58319:26:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "58306:6:10", + "nodeType": "YulIdentifier", + "src": "58306:6:10" + }, + "nativeSrc": "58306:40:10", + "nodeType": "YulFunctionCall", + "src": "58306:40:10" + }, + "nativeSrc": "58306:40:10", + "nodeType": "YulExpressionStatement", + "src": "58306:40:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "58366:4:10", + "nodeType": "YulLiteral", + "src": "58366:4:10", + "type": "", + "value": "0x01" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "58376:2:10", + "nodeType": "YulLiteral", + "src": "58376:2:10", + "type": "", + "value": "96" + }, + { + "arguments": [], + "functionName": { + "name": "address", + "nativeSrc": "58380:7:10", + "nodeType": "YulIdentifier", + "src": "58380:7:10" + }, + "nativeSrc": "58380:9:10", + "nodeType": "YulFunctionCall", + "src": "58380:9:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "58372:3:10", + "nodeType": "YulIdentifier", + "src": "58372:3:10" + }, + "nativeSrc": "58372:18:10", + "nodeType": "YulFunctionCall", + "src": "58372:18:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "58359:6:10", + "nodeType": "YulIdentifier", + "src": "58359:6:10" + }, + "nativeSrc": "58359:32:10", + "nodeType": "YulFunctionCall", + "src": "58359:32:10" + }, + "nativeSrc": "58359:32:10", + "nodeType": "YulExpressionStatement", + "src": "58359:32:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "58411:4:10", + "nodeType": "YulLiteral", + "src": "58411:4:10", + "type": "", + "value": "0x15" + }, + { + "name": "salt", + "nativeSrc": "58417:4:10", + "nodeType": "YulIdentifier", + "src": "58417:4:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "58404:6:10", + "nodeType": "YulIdentifier", + "src": "58404:6:10" + }, + "nativeSrc": "58404:18:10", + "nodeType": "YulFunctionCall", + "src": "58404:18:10" + }, + "nativeSrc": "58404:18:10", + "nodeType": "YulExpressionStatement", + "src": "58404:18:10" + }, + { + "nativeSrc": "58435:33:10", + "nodeType": "YulAssignment", + "src": "58435:33:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "58457:4:10", + "nodeType": "YulLiteral", + "src": "58457:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "58463:4:10", + "nodeType": "YulLiteral", + "src": "58463:4:10", + "type": "", + "value": "0x55" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "58447:9:10", + "nodeType": "YulIdentifier", + "src": "58447:9:10" + }, + "nativeSrc": "58447:21:10", + "nodeType": "YulFunctionCall", + "src": "58447:21:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "58435:8:10", + "nodeType": "YulIdentifier", + "src": "58435:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "58493:685:10", + "nodeType": "YulBlock", + "src": "58493:685:10", + "statements": [ + { + "body": { + "nativeSrc": "58544:296:10", + "nodeType": "YulBlock", + "src": "58544:296:10", + "statements": [ + { + "nativeSrc": "58566:49:10", + "nodeType": "YulAssignment", + "src": "58566:49:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "58586:5:10", + "nodeType": "YulIdentifier", + "src": "58586:5:10" + }, + { + "name": "m", + "nativeSrc": "58593:1:10", + "nodeType": "YulIdentifier", + "src": "58593:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "58600:1:10", + "nodeType": "YulIdentifier", + "src": "58600:1:10" + }, + { + "kind": "number", + "nativeSrc": "58603:4:10", + "nodeType": "YulLiteral", + "src": "58603:4:10", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "58596:3:10", + "nodeType": "YulIdentifier", + "src": "58596:3:10" + }, + "nativeSrc": "58596:12:10", + "nodeType": "YulFunctionCall", + "src": "58596:12:10" + }, + { + "name": "salt", + "nativeSrc": "58610:4:10", + "nodeType": "YulIdentifier", + "src": "58610:4:10" + } + ], + "functionName": { + "name": "create2", + "nativeSrc": "58578:7:10", + "nodeType": "YulIdentifier", + "src": "58578:7:10" + }, + "nativeSrc": "58578:37:10", + "nodeType": "YulFunctionCall", + "src": "58578:37:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "58566:8:10", + "nodeType": "YulIdentifier", + "src": "58566:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "58656:140:10", + "nodeType": "YulBlock", + "src": "58656:140:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "58689:4:10", + "nodeType": "YulLiteral", + "src": "58689:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "58695:10:10", + "nodeType": "YulLiteral", + "src": "58695:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "58682:6:10", + "nodeType": "YulIdentifier", + "src": "58682:6:10" + }, + "nativeSrc": "58682:24:10", + "nodeType": "YulFunctionCall", + "src": "58682:24:10" + }, + "nativeSrc": "58682:24:10", + "nodeType": "YulExpressionStatement", + "src": "58682:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "58763:4:10", + "nodeType": "YulLiteral", + "src": "58763:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "58769:4:10", + "nodeType": "YulLiteral", + "src": "58769:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "58756:6:10", + "nodeType": "YulIdentifier", + "src": "58756:6:10" + }, + "nativeSrc": "58756:18:10", + "nodeType": "YulFunctionCall", + "src": "58756:18:10" + }, + "nativeSrc": "58756:18:10", + "nodeType": "YulExpressionStatement", + "src": "58756:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "58646:8:10", + "nodeType": "YulIdentifier", + "src": "58646:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "58639:6:10", + "nodeType": "YulIdentifier", + "src": "58639:6:10" + }, + "nativeSrc": "58639:16:10", + "nodeType": "YulFunctionCall", + "src": "58639:16:10" + }, + "nativeSrc": "58636:160:10", + "nodeType": "YulIf", + "src": "58636:160:10" + }, + { + "nativeSrc": "58817:5:10", + "nodeType": "YulBreak", + "src": "58817:5:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "58533:8:10", + "nodeType": "YulIdentifier", + "src": "58533:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "58521:11:10", + "nodeType": "YulIdentifier", + "src": "58521:11:10" + }, + "nativeSrc": "58521:21:10", + "nodeType": "YulFunctionCall", + "src": "58521:21:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "58514:6:10", + "nodeType": "YulIdentifier", + "src": "58514:6:10" + }, + "nativeSrc": "58514:29:10", + "nodeType": "YulFunctionCall", + "src": "58514:29:10" + }, + "nativeSrc": "58511:329:10", + "nodeType": "YulIf", + "src": "58511:329:10" + }, + { + "nativeSrc": "58857:20:10", + "nodeType": "YulAssignment", + "src": "58857:20:10", + "value": { + "kind": "number", + "nativeSrc": "58876:1:10", + "nodeType": "YulLiteral", + "src": "58876:1:10", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "alreadyDeployed", + "nativeSrc": "58857:15:10", + "nodeType": "YulIdentifier", + "src": "58857:15:10" + } + ] + }, + { + "body": { + "nativeSrc": "58911:9:10", + "nodeType": "YulBlock", + "src": "58911:9:10", + "statements": [ + { + "nativeSrc": "58913:5:10", + "nodeType": "YulBreak", + "src": "58913:5:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nativeSrc": "58904:5:10", + "nodeType": "YulIdentifier", + "src": "58904:5:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "58897:6:10", + "nodeType": "YulIdentifier", + "src": "58897:6:10" + }, + "nativeSrc": "58897:13:10", + "nodeType": "YulFunctionCall", + "src": "58897:13:10" + }, + "nativeSrc": "58894:26:10", + "nodeType": "YulIf", + "src": "58894:26:10" + }, + { + "body": { + "nativeSrc": "59013:129:10", + "nodeType": "YulBlock", + "src": "59013:129:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "59042:4:10", + "nodeType": "YulLiteral", + "src": "59042:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "59048:10:10", + "nodeType": "YulLiteral", + "src": "59048:10:10", + "type": "", + "value": "0xb12d13eb" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "59035:6:10", + "nodeType": "YulIdentifier", + "src": "59035:6:10" + }, + "nativeSrc": "59035:24:10", + "nodeType": "YulFunctionCall", + "src": "59035:24:10" + }, + "nativeSrc": "59035:24:10", + "nodeType": "YulExpressionStatement", + "src": "59035:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "59113:4:10", + "nodeType": "YulLiteral", + "src": "59113:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "59119:4:10", + "nodeType": "YulLiteral", + "src": "59119:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "59106:6:10", + "nodeType": "YulIdentifier", + "src": "59106:6:10" + }, + "nativeSrc": "59106:18:10", + "nodeType": "YulFunctionCall", + "src": "59106:18:10" + }, + "nativeSrc": "59106:18:10", + "nodeType": "YulExpressionStatement", + "src": "59106:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "58952:3:10", + "nodeType": "YulIdentifier", + "src": "58952:3:10" + }, + "nativeSrc": "58952:5:10", + "nodeType": "YulFunctionCall", + "src": "58952:5:10" + }, + { + "name": "instance", + "nativeSrc": "58959:8:10", + "nodeType": "YulIdentifier", + "src": "58959:8:10" + }, + { + "name": "value", + "nativeSrc": "58969:5:10", + "nodeType": "YulIdentifier", + "src": "58969:5:10" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "58976:8:10", + "nodeType": "YulIdentifier", + "src": "58976:8:10" + }, + "nativeSrc": "58976:10:10", + "nodeType": "YulFunctionCall", + "src": "58976:10:10" + }, + { + "kind": "number", + "nativeSrc": "58988:4:10", + "nodeType": "YulLiteral", + "src": "58988:4:10", + "type": "", + "value": "0x00" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "58994:8:10", + "nodeType": "YulIdentifier", + "src": "58994:8:10" + }, + "nativeSrc": "58994:10:10", + "nodeType": "YulFunctionCall", + "src": "58994:10:10" + }, + { + "kind": "number", + "nativeSrc": "59006:4:10", + "nodeType": "YulLiteral", + "src": "59006:4:10", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "call", + "nativeSrc": "58947:4:10", + "nodeType": "YulIdentifier", + "src": "58947:4:10" + }, + "nativeSrc": "58947:64:10", + "nodeType": "YulFunctionCall", + "src": "58947:64:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "58940:6:10", + "nodeType": "YulIdentifier", + "src": "58940:6:10" + }, + "nativeSrc": "58940:72:10", + "nodeType": "YulFunctionCall", + "src": "58940:72:10" + }, + "nativeSrc": "58937:205:10", + "nodeType": "YulIf", + "src": "58937:205:10" + }, + { + "nativeSrc": "59159:5:10", + "nodeType": "YulBreak", + "src": "59159:5:10" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "58488:1:10", + "nodeType": "YulLiteral", + "src": "58488:1:10", + "type": "", + "value": "1" + }, + "nativeSrc": "58481:697:10", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "58490:2:10", + "nodeType": "YulBlock", + "src": "58490:2:10", + "statements": [] + }, + "pre": { + "nativeSrc": "58485:2:10", + "nodeType": "YulBlock", + "src": "58485:2:10", + "statements": [] + }, + "src": "58481:697:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "59198:4:10", + "nodeType": "YulLiteral", + "src": "59198:4:10", + "type": "", + "value": "0x35" + }, + { + "kind": "number", + "nativeSrc": "59204:1:10", + "nodeType": "YulLiteral", + "src": "59204:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "59191:6:10", + "nodeType": "YulIdentifier", + "src": "59191:6:10" + }, + "nativeSrc": "59191:15:10", + "nodeType": "YulFunctionCall", + "src": "59191:15:10" + }, + "nativeSrc": "59191:15:10", + "nodeType": "YulExpressionStatement", + "src": "59191:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3794, + "isOffset": false, + "isSlot": false, + "src": "58857:15:10", + "valueSize": 1 + }, + { + "declaration": 3789, + "isOffset": false, + "isSlot": false, + "src": "57633:4:10", + "valueSize": 1 + }, + { + "declaration": 3789, + "isOffset": false, + "isSlot": false, + "src": "57680:4:10", + "valueSize": 1 + }, + { + "declaration": 3787, + "isOffset": false, + "isSlot": false, + "src": "57974:14:10", + "valueSize": 1 + }, + { + "declaration": 3796, + "isOffset": false, + "isSlot": false, + "src": "58435:8:10", + "valueSize": 1 + }, + { + "declaration": 3796, + "isOffset": false, + "isSlot": false, + "src": "58533:8:10", + "valueSize": 1 + }, + { + "declaration": 3796, + "isOffset": false, + "isSlot": false, + "src": "58566:8:10", + "valueSize": 1 + }, + { + "declaration": 3796, + "isOffset": false, + "isSlot": false, + "src": "58646:8:10", + "valueSize": 1 + }, + { + "declaration": 3796, + "isOffset": false, + "isSlot": false, + "src": "58959:8:10", + "valueSize": 1 + }, + { + "declaration": 3791, + "isOffset": false, + "isSlot": false, + "src": "58417:4:10", + "valueSize": 1 + }, + { + "declaration": 3791, + "isOffset": false, + "isSlot": false, + "src": "58610:4:10", + "valueSize": 1 + }, + { + "declaration": 3785, + "isOffset": false, + "isSlot": false, + "src": "58586:5:10", + "valueSize": 1 + }, + { + "declaration": 3785, + "isOffset": false, + "isSlot": false, + "src": "58904:5:10", + "valueSize": 1 + }, + { + "declaration": 3785, + "isOffset": false, + "isSlot": false, + "src": "58969:5:10", + "valueSize": 1 + } + ], + "id": 3798, + "nodeType": "InlineAssembly", + "src": "57562:1714:10" + } + ] + }, + "documentation": { + "id": 3783, + "nodeType": "StructuredDocumentation", + "src": "57013:287:10", + "text": "@dev Creates a deterministic minimal ERC1967 proxy with `implementation`, `args` and `salt`.\n Deposits `value` ETH during deployment.\n Note: This method is intended for use in ERC4337 factories,\n which are expected to NOT revert if the proxy is already deployed." + }, + "id": 3800, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createDeterministicERC1967", + "nameLocation": "57314:26:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3792, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3785, + "mutability": "mutable", + "name": "value", + "nameLocation": "57358:5:10", + "nodeType": "VariableDeclaration", + "scope": 3800, + "src": "57350:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3784, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "57350:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3787, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "57381:14:10", + "nodeType": "VariableDeclaration", + "scope": 3800, + "src": "57373:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3786, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "57373:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3789, + "mutability": "mutable", + "name": "args", + "nameLocation": "57418:4:10", + "nodeType": "VariableDeclaration", + "scope": 3800, + "src": "57405:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3788, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "57405:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3791, + "mutability": "mutable", + "name": "salt", + "nameLocation": "57440:4:10", + "nodeType": "VariableDeclaration", + "scope": 3800, + "src": "57432:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3790, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "57432:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "57340:110:10" + }, + "returnParameters": { + "id": 3797, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3794, + "mutability": "mutable", + "name": "alreadyDeployed", + "nameLocation": "57474:15:10", + "nodeType": "VariableDeclaration", + "scope": 3800, + "src": "57469:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3793, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "57469:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3796, + "mutability": "mutable", + "name": "instance", + "nameLocation": "57499:8:10", + "nodeType": "VariableDeclaration", + "scope": 3800, + "src": "57491:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3795, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "57491:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "57468:40:10" + }, + "scope": 5104, + "src": "57305:1977:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3811, + "nodeType": "Block", + "src": "59529:1032:10", + "statements": [ + { + "AST": { + "nativeSrc": "59591:964:10", + "nodeType": "YulBlock", + "src": "59591:964:10", + "statements": [ + { + "nativeSrc": "59605:16:10", + "nodeType": "YulAssignment", + "src": "59605:16:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "59616:4:10", + "nodeType": "YulLiteral", + "src": "59616:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "59610:5:10", + "nodeType": "YulIdentifier", + "src": "59610:5:10" + }, + "nativeSrc": "59610:11:10", + "nodeType": "YulFunctionCall", + "src": "59610:11:10" + }, + "variableNames": [ + { + "name": "c", + "nativeSrc": "59605:1:10", + "nodeType": "YulIdentifier", + "src": "59605:1:10" + } + ] + }, + { + "nativeSrc": "59634:20:10", + "nodeType": "YulVariableDeclaration", + "src": "59634:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "59649:4:10", + "nodeType": "YulIdentifier", + "src": "59649:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "59643:5:10", + "nodeType": "YulIdentifier", + "src": "59643:5:10" + }, + "nativeSrc": "59643:11:10", + "nodeType": "YulFunctionCall", + "src": "59643:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "59638:1:10", + "nodeType": "YulTypedName", + "src": "59638:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "59769:14:10", + "nodeType": "YulIdentifier", + "src": "59769:14:10" + }, + "nativeSrc": "59769:16:10", + "nodeType": "YulFunctionCall", + "src": "59769:16:10" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "59787:14:10", + "nodeType": "YulIdentifier", + "src": "59787:14:10" + }, + "nativeSrc": "59787:16:10", + "nodeType": "YulFunctionCall", + "src": "59787:16:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "59808:1:10", + "nodeType": "YulIdentifier", + "src": "59808:1:10" + }, + { + "kind": "number", + "nativeSrc": "59811:6:10", + "nodeType": "YulLiteral", + "src": "59811:6:10", + "type": "", + "value": "0xffc2" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "59805:2:10", + "nodeType": "YulIdentifier", + "src": "59805:2:10" + }, + "nativeSrc": "59805:13:10", + "nodeType": "YulFunctionCall", + "src": "59805:13:10" + } + ], + "functionName": { + "name": "returndatacopy", + "nativeSrc": "59754:14:10", + "nodeType": "YulIdentifier", + "src": "59754:14:10" + }, + "nativeSrc": "59754:65:10", + "nodeType": "YulFunctionCall", + "src": "59754:65:10" + }, + "nativeSrc": "59754:65:10", + "nodeType": "YulExpressionStatement", + "src": "59754:65:10" + }, + { + "body": { + "nativeSrc": "59882:92:10", + "nodeType": "YulBlock", + "src": "59882:92:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "59915:1:10", + "nodeType": "YulIdentifier", + "src": "59915:1:10" + }, + { + "kind": "number", + "nativeSrc": "59918:4:10", + "nodeType": "YulLiteral", + "src": "59918:4:10", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "59911:3:10", + "nodeType": "YulIdentifier", + "src": "59911:3:10" + }, + "nativeSrc": "59911:12:10", + "nodeType": "YulFunctionCall", + "src": "59911:12:10" + }, + { + "name": "i", + "nativeSrc": "59925:1:10", + "nodeType": "YulIdentifier", + "src": "59925:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "59907:3:10", + "nodeType": "YulIdentifier", + "src": "59907:3:10" + }, + "nativeSrc": "59907:20:10", + "nodeType": "YulFunctionCall", + "src": "59907:20:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "59943:4:10", + "nodeType": "YulIdentifier", + "src": "59943:4:10" + }, + { + "kind": "number", + "nativeSrc": "59949:4:10", + "nodeType": "YulLiteral", + "src": "59949:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "59939:3:10", + "nodeType": "YulIdentifier", + "src": "59939:3:10" + }, + "nativeSrc": "59939:15:10", + "nodeType": "YulFunctionCall", + "src": "59939:15:10" + }, + { + "name": "i", + "nativeSrc": "59956:1:10", + "nodeType": "YulIdentifier", + "src": "59956:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "59935:3:10", + "nodeType": "YulIdentifier", + "src": "59935:3:10" + }, + "nativeSrc": "59935:23:10", + "nodeType": "YulFunctionCall", + "src": "59935:23:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "59929:5:10", + "nodeType": "YulIdentifier", + "src": "59929:5:10" + }, + "nativeSrc": "59929:30:10", + "nodeType": "YulFunctionCall", + "src": "59929:30:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "59900:6:10", + "nodeType": "YulIdentifier", + "src": "59900:6:10" + }, + "nativeSrc": "59900:60:10", + "nodeType": "YulFunctionCall", + "src": "59900:60:10" + }, + "nativeSrc": "59900:60:10", + "nodeType": "YulExpressionStatement", + "src": "59900:60:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "59854:1:10", + "nodeType": "YulIdentifier", + "src": "59854:1:10" + }, + { + "name": "n", + "nativeSrc": "59857:1:10", + "nodeType": "YulIdentifier", + "src": "59857:1:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "59851:2:10", + "nodeType": "YulIdentifier", + "src": "59851:2:10" + }, + "nativeSrc": "59851:8:10", + "nodeType": "YulFunctionCall", + "src": "59851:8:10" + }, + "nativeSrc": "59832:142:10", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "59860:21:10", + "nodeType": "YulBlock", + "src": "59860:21:10", + "statements": [ + { + "nativeSrc": "59862:17:10", + "nodeType": "YulAssignment", + "src": "59862:17:10", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "59871:1:10", + "nodeType": "YulIdentifier", + "src": "59871:1:10" + }, + { + "kind": "number", + "nativeSrc": "59874:4:10", + "nodeType": "YulLiteral", + "src": "59874:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "59867:3:10", + "nodeType": "YulIdentifier", + "src": "59867:3:10" + }, + "nativeSrc": "59867:12:10", + "nodeType": "YulFunctionCall", + "src": "59867:12:10" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "59862:1:10", + "nodeType": "YulIdentifier", + "src": "59862:1:10" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "59836:14:10", + "nodeType": "YulBlock", + "src": "59836:14:10", + "statements": [ + { + "nativeSrc": "59838:10:10", + "nodeType": "YulVariableDeclaration", + "src": "59838:10:10", + "value": { + "kind": "number", + "nativeSrc": "59847:1:10", + "nodeType": "YulLiteral", + "src": "59847:1:10", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "59842:1:10", + "nodeType": "YulTypedName", + "src": "59842:1:10", + "type": "" + } + ] + } + ] + }, + "src": "59832:142:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "59998:1:10", + "nodeType": "YulIdentifier", + "src": "59998:1:10" + }, + { + "kind": "number", + "nativeSrc": "60001:4:10", + "nodeType": "YulLiteral", + "src": "60001:4:10", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "59994:3:10", + "nodeType": "YulIdentifier", + "src": "59994:3:10" + }, + "nativeSrc": "59994:12:10", + "nodeType": "YulFunctionCall", + "src": "59994:12:10" + }, + { + "kind": "number", + "nativeSrc": "60008:66:10", + "nodeType": "YulLiteral", + "src": "60008:66:10", + "type": "", + "value": "0xcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "59987:6:10", + "nodeType": "YulIdentifier", + "src": "59987:6:10" + }, + "nativeSrc": "59987:88:10", + "nodeType": "YulFunctionCall", + "src": "59987:88:10" + }, + "nativeSrc": "59987:88:10", + "nodeType": "YulExpressionStatement", + "src": "59987:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "60099:1:10", + "nodeType": "YulIdentifier", + "src": "60099:1:10" + }, + { + "kind": "number", + "nativeSrc": "60102:4:10", + "nodeType": "YulLiteral", + "src": "60102:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "60095:3:10", + "nodeType": "YulIdentifier", + "src": "60095:3:10" + }, + "nativeSrc": "60095:12:10", + "nodeType": "YulFunctionCall", + "src": "60095:12:10" + }, + { + "kind": "number", + "nativeSrc": "60109:66:10", + "nodeType": "YulLiteral", + "src": "60109:66:10", + "type": "", + "value": "0x5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "60088:6:10", + "nodeType": "YulIdentifier", + "src": "60088:6:10" + }, + "nativeSrc": "60088:88:10", + "nodeType": "YulFunctionCall", + "src": "60088:88:10" + }, + "nativeSrc": "60088:88:10", + "nodeType": "YulExpressionStatement", + "src": "60088:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "60200:1:10", + "nodeType": "YulIdentifier", + "src": "60200:1:10" + }, + { + "kind": "number", + "nativeSrc": "60203:4:10", + "nodeType": "YulLiteral", + "src": "60203:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "60196:3:10", + "nodeType": "YulIdentifier", + "src": "60196:3:10" + }, + "nativeSrc": "60196:12:10", + "nodeType": "YulFunctionCall", + "src": "60196:12:10" + }, + { + "kind": "number", + "nativeSrc": "60210:6:10", + "nodeType": "YulLiteral", + "src": "60210:6:10", + "type": "", + "value": "0x6009" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "60189:6:10", + "nodeType": "YulIdentifier", + "src": "60189:6:10" + }, + "nativeSrc": "60189:28:10", + "nodeType": "YulFunctionCall", + "src": "60189:28:10" + }, + "nativeSrc": "60189:28:10", + "nodeType": "YulExpressionStatement", + "src": "60189:28:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "60241:1:10", + "nodeType": "YulIdentifier", + "src": "60241:1:10" + }, + { + "kind": "number", + "nativeSrc": "60244:4:10", + "nodeType": "YulLiteral", + "src": "60244:4:10", + "type": "", + "value": "0x1e" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "60237:3:10", + "nodeType": "YulIdentifier", + "src": "60237:3:10" + }, + "nativeSrc": "60237:12:10", + "nodeType": "YulFunctionCall", + "src": "60237:12:10" + }, + { + "name": "implementation", + "nativeSrc": "60251:14:10", + "nodeType": "YulIdentifier", + "src": "60251:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "60230:6:10", + "nodeType": "YulIdentifier", + "src": "60230:6:10" + }, + "nativeSrc": "60230:36:10", + "nodeType": "YulFunctionCall", + "src": "60230:36:10" + }, + "nativeSrc": "60230:36:10", + "nodeType": "YulExpressionStatement", + "src": "60230:36:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "60290:1:10", + "nodeType": "YulIdentifier", + "src": "60290:1:10" + }, + { + "kind": "number", + "nativeSrc": "60293:4:10", + "nodeType": "YulLiteral", + "src": "60293:4:10", + "type": "", + "value": "0x0a" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "60286:3:10", + "nodeType": "YulIdentifier", + "src": "60286:3:10" + }, + "nativeSrc": "60286:12:10", + "nodeType": "YulFunctionCall", + "src": "60286:12:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "60304:22:10", + "nodeType": "YulLiteral", + "src": "60304:22:10", + "type": "", + "value": "0x61003d3d8160233d3973" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "60332:2:10", + "nodeType": "YulLiteral", + "src": "60332:2:10", + "type": "", + "value": "56" + }, + { + "name": "n", + "nativeSrc": "60336:1:10", + "nodeType": "YulIdentifier", + "src": "60336:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "60328:3:10", + "nodeType": "YulIdentifier", + "src": "60328:3:10" + }, + "nativeSrc": "60328:10:10", + "nodeType": "YulFunctionCall", + "src": "60328:10:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "60300:3:10", + "nodeType": "YulIdentifier", + "src": "60300:3:10" + }, + "nativeSrc": "60300:39:10", + "nodeType": "YulFunctionCall", + "src": "60300:39:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "60279:6:10", + "nodeType": "YulIdentifier", + "src": "60279:6:10" + }, + "nativeSrc": "60279:61:10", + "nodeType": "YulFunctionCall", + "src": "60279:61:10" + }, + "nativeSrc": "60279:61:10", + "nodeType": "YulExpressionStatement", + "src": "60279:61:10" + }, + { + "expression": { + "arguments": [ + { + "name": "c", + "nativeSrc": "60360:1:10", + "nodeType": "YulIdentifier", + "src": "60360:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "60367:1:10", + "nodeType": "YulIdentifier", + "src": "60367:1:10" + }, + { + "kind": "number", + "nativeSrc": "60370:4:10", + "nodeType": "YulLiteral", + "src": "60370:4:10", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "60363:3:10", + "nodeType": "YulIdentifier", + "src": "60363:3:10" + }, + "nativeSrc": "60363:12:10", + "nodeType": "YulFunctionCall", + "src": "60363:12:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "60353:6:10", + "nodeType": "YulIdentifier", + "src": "60353:6:10" + }, + "nativeSrc": "60353:23:10", + "nodeType": "YulFunctionCall", + "src": "60353:23:10" + }, + "nativeSrc": "60353:23:10", + "nodeType": "YulExpressionStatement", + "src": "60353:23:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "60421:1:10", + "nodeType": "YulIdentifier", + "src": "60421:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "60428:1:10", + "nodeType": "YulIdentifier", + "src": "60428:1:10" + }, + { + "kind": "number", + "nativeSrc": "60431:4:10", + "nodeType": "YulLiteral", + "src": "60431:4:10", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "60424:3:10", + "nodeType": "YulIdentifier", + "src": "60424:3:10" + }, + "nativeSrc": "60424:12:10", + "nodeType": "YulFunctionCall", + "src": "60424:12:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "60417:3:10", + "nodeType": "YulIdentifier", + "src": "60417:3:10" + }, + "nativeSrc": "60417:20:10", + "nodeType": "YulFunctionCall", + "src": "60417:20:10" + }, + { + "kind": "number", + "nativeSrc": "60439:1:10", + "nodeType": "YulLiteral", + "src": "60439:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "60410:6:10", + "nodeType": "YulIdentifier", + "src": "60410:6:10" + }, + "nativeSrc": "60410:31:10", + "nodeType": "YulFunctionCall", + "src": "60410:31:10" + }, + "nativeSrc": "60410:31:10", + "nodeType": "YulExpressionStatement", + "src": "60410:31:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "60498:4:10", + "nodeType": "YulLiteral", + "src": "60498:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "c", + "nativeSrc": "60508:1:10", + "nodeType": "YulIdentifier", + "src": "60508:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "60515:1:10", + "nodeType": "YulIdentifier", + "src": "60515:1:10" + }, + { + "kind": "number", + "nativeSrc": "60518:4:10", + "nodeType": "YulLiteral", + "src": "60518:4:10", + "type": "", + "value": "0xa0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "60511:3:10", + "nodeType": "YulIdentifier", + "src": "60511:3:10" + }, + "nativeSrc": "60511:12:10", + "nodeType": "YulFunctionCall", + "src": "60511:12:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "60504:3:10", + "nodeType": "YulIdentifier", + "src": "60504:3:10" + }, + "nativeSrc": "60504:20:10", + "nodeType": "YulFunctionCall", + "src": "60504:20:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "60491:6:10", + "nodeType": "YulIdentifier", + "src": "60491:6:10" + }, + "nativeSrc": "60491:34:10", + "nodeType": "YulFunctionCall", + "src": "60491:34:10" + }, + "nativeSrc": "60491:34:10", + "nodeType": "YulExpressionStatement", + "src": "60491:34:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3805, + "isOffset": false, + "isSlot": false, + "src": "59649:4:10", + "valueSize": 1 + }, + { + "declaration": 3805, + "isOffset": false, + "isSlot": false, + "src": "59943:4:10", + "valueSize": 1 + }, + { + "declaration": 3808, + "isOffset": false, + "isSlot": false, + "src": "59605:1:10", + "valueSize": 1 + }, + { + "declaration": 3808, + "isOffset": false, + "isSlot": false, + "src": "59915:1:10", + "valueSize": 1 + }, + { + "declaration": 3808, + "isOffset": false, + "isSlot": false, + "src": "59998:1:10", + "valueSize": 1 + }, + { + "declaration": 3808, + "isOffset": false, + "isSlot": false, + "src": "60099:1:10", + "valueSize": 1 + }, + { + "declaration": 3808, + "isOffset": false, + "isSlot": false, + "src": "60200:1:10", + "valueSize": 1 + }, + { + "declaration": 3808, + "isOffset": false, + "isSlot": false, + "src": "60241:1:10", + "valueSize": 1 + }, + { + "declaration": 3808, + "isOffset": false, + "isSlot": false, + "src": "60290:1:10", + "valueSize": 1 + }, + { + "declaration": 3808, + "isOffset": false, + "isSlot": false, + "src": "60360:1:10", + "valueSize": 1 + }, + { + "declaration": 3808, + "isOffset": false, + "isSlot": false, + "src": "60421:1:10", + "valueSize": 1 + }, + { + "declaration": 3808, + "isOffset": false, + "isSlot": false, + "src": "60508:1:10", + "valueSize": 1 + }, + { + "declaration": 3803, + "isOffset": false, + "isSlot": false, + "src": "60251:14:10", + "valueSize": 1 + } + ], + "id": 3810, + "nodeType": "InlineAssembly", + "src": "59582:973:10" + } + ] + }, + "documentation": { + "id": 3801, + "nodeType": "StructuredDocumentation", + "src": "59288:101:10", + "text": "@dev Returns the initialization code of the minimal ERC1967 proxy of `implementation` and `args`." + }, + "id": 3812, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeERC1967", + "nameLocation": "59403:15:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3806, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3803, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "59427:14:10", + "nodeType": "VariableDeclaration", + "scope": 3812, + "src": "59419:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3802, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "59419:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3805, + "mutability": "mutable", + "name": "args", + "nameLocation": "59456:4:10", + "nodeType": "VariableDeclaration", + "scope": 3812, + "src": "59443:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3804, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "59443:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "59418:43:10" + }, + "returnParameters": { + "id": 3809, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3808, + "mutability": "mutable", + "name": "c", + "nameLocation": "59522:1:10", + "nodeType": "VariableDeclaration", + "scope": 3812, + "src": "59509:14:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3807, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "59509:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "59508:16:10" + }, + "scope": 5104, + "src": "59394:1167:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3823, + "nodeType": "Block", + "src": "60815:889:10", + "statements": [ + { + "AST": { + "nativeSrc": "60877:821:10", + "nodeType": "YulBlock", + "src": "60877:821:10", + "statements": [ + { + "nativeSrc": "60891:20:10", + "nodeType": "YulVariableDeclaration", + "src": "60891:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "60906:4:10", + "nodeType": "YulLiteral", + "src": "60906:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "60900:5:10", + "nodeType": "YulIdentifier", + "src": "60900:5:10" + }, + "nativeSrc": "60900:11:10", + "nodeType": "YulFunctionCall", + "src": "60900:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "60895:1:10", + "nodeType": "YulTypedName", + "src": "60895:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "60924:20:10", + "nodeType": "YulVariableDeclaration", + "src": "60924:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "60939:4:10", + "nodeType": "YulIdentifier", + "src": "60939:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "60933:5:10", + "nodeType": "YulIdentifier", + "src": "60933:5:10" + }, + "nativeSrc": "60933:11:10", + "nodeType": "YulFunctionCall", + "src": "60933:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "60928:1:10", + "nodeType": "YulTypedName", + "src": "60928:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "61059:14:10", + "nodeType": "YulIdentifier", + "src": "61059:14:10" + }, + "nativeSrc": "61059:16:10", + "nodeType": "YulFunctionCall", + "src": "61059:16:10" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "61077:14:10", + "nodeType": "YulIdentifier", + "src": "61077:14:10" + }, + "nativeSrc": "61077:16:10", + "nodeType": "YulFunctionCall", + "src": "61077:16:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "61098:1:10", + "nodeType": "YulIdentifier", + "src": "61098:1:10" + }, + { + "kind": "number", + "nativeSrc": "61101:6:10", + "nodeType": "YulLiteral", + "src": "61101:6:10", + "type": "", + "value": "0xffc2" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "61095:2:10", + "nodeType": "YulIdentifier", + "src": "61095:2:10" + }, + "nativeSrc": "61095:13:10", + "nodeType": "YulFunctionCall", + "src": "61095:13:10" + } + ], + "functionName": { + "name": "returndatacopy", + "nativeSrc": "61044:14:10", + "nodeType": "YulIdentifier", + "src": "61044:14:10" + }, + "nativeSrc": "61044:65:10", + "nodeType": "YulFunctionCall", + "src": "61044:65:10" + }, + "nativeSrc": "61044:65:10", + "nodeType": "YulExpressionStatement", + "src": "61044:65:10" + }, + { + "body": { + "nativeSrc": "61172:92:10", + "nodeType": "YulBlock", + "src": "61172:92:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "61205:1:10", + "nodeType": "YulIdentifier", + "src": "61205:1:10" + }, + { + "kind": "number", + "nativeSrc": "61208:4:10", + "nodeType": "YulLiteral", + "src": "61208:4:10", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "61201:3:10", + "nodeType": "YulIdentifier", + "src": "61201:3:10" + }, + "nativeSrc": "61201:12:10", + "nodeType": "YulFunctionCall", + "src": "61201:12:10" + }, + { + "name": "i", + "nativeSrc": "61215:1:10", + "nodeType": "YulIdentifier", + "src": "61215:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "61197:3:10", + "nodeType": "YulIdentifier", + "src": "61197:3:10" + }, + "nativeSrc": "61197:20:10", + "nodeType": "YulFunctionCall", + "src": "61197:20:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "61233:4:10", + "nodeType": "YulIdentifier", + "src": "61233:4:10" + }, + { + "kind": "number", + "nativeSrc": "61239:4:10", + "nodeType": "YulLiteral", + "src": "61239:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "61229:3:10", + "nodeType": "YulIdentifier", + "src": "61229:3:10" + }, + "nativeSrc": "61229:15:10", + "nodeType": "YulFunctionCall", + "src": "61229:15:10" + }, + { + "name": "i", + "nativeSrc": "61246:1:10", + "nodeType": "YulIdentifier", + "src": "61246:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "61225:3:10", + "nodeType": "YulIdentifier", + "src": "61225:3:10" + }, + "nativeSrc": "61225:23:10", + "nodeType": "YulFunctionCall", + "src": "61225:23:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "61219:5:10", + "nodeType": "YulIdentifier", + "src": "61219:5:10" + }, + "nativeSrc": "61219:30:10", + "nodeType": "YulFunctionCall", + "src": "61219:30:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "61190:6:10", + "nodeType": "YulIdentifier", + "src": "61190:6:10" + }, + "nativeSrc": "61190:60:10", + "nodeType": "YulFunctionCall", + "src": "61190:60:10" + }, + "nativeSrc": "61190:60:10", + "nodeType": "YulExpressionStatement", + "src": "61190:60:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "61144:1:10", + "nodeType": "YulIdentifier", + "src": "61144:1:10" + }, + { + "name": "n", + "nativeSrc": "61147:1:10", + "nodeType": "YulIdentifier", + "src": "61147:1:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "61141:2:10", + "nodeType": "YulIdentifier", + "src": "61141:2:10" + }, + "nativeSrc": "61141:8:10", + "nodeType": "YulFunctionCall", + "src": "61141:8:10" + }, + "nativeSrc": "61122:142:10", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "61150:21:10", + "nodeType": "YulBlock", + "src": "61150:21:10", + "statements": [ + { + "nativeSrc": "61152:17:10", + "nodeType": "YulAssignment", + "src": "61152:17:10", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "61161:1:10", + "nodeType": "YulIdentifier", + "src": "61161:1:10" + }, + { + "kind": "number", + "nativeSrc": "61164:4:10", + "nodeType": "YulLiteral", + "src": "61164:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "61157:3:10", + "nodeType": "YulIdentifier", + "src": "61157:3:10" + }, + "nativeSrc": "61157:12:10", + "nodeType": "YulFunctionCall", + "src": "61157:12:10" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "61152:1:10", + "nodeType": "YulIdentifier", + "src": "61152:1:10" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "61126:14:10", + "nodeType": "YulBlock", + "src": "61126:14:10", + "statements": [ + { + "nativeSrc": "61128:10:10", + "nodeType": "YulVariableDeclaration", + "src": "61128:10:10", + "value": { + "kind": "number", + "nativeSrc": "61137:1:10", + "nodeType": "YulLiteral", + "src": "61137:1:10", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "61132:1:10", + "nodeType": "YulTypedName", + "src": "61132:1:10", + "type": "" + } + ] + } + ] + }, + "src": "61122:142:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "61288:1:10", + "nodeType": "YulIdentifier", + "src": "61288:1:10" + }, + { + "kind": "number", + "nativeSrc": "61291:4:10", + "nodeType": "YulLiteral", + "src": "61291:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "61284:3:10", + "nodeType": "YulIdentifier", + "src": "61284:3:10" + }, + "nativeSrc": "61284:12:10", + "nodeType": "YulFunctionCall", + "src": "61284:12:10" + }, + { + "kind": "number", + "nativeSrc": "61298:66:10", + "nodeType": "YulLiteral", + "src": "61298:66:10", + "type": "", + "value": "0xcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "61277:6:10", + "nodeType": "YulIdentifier", + "src": "61277:6:10" + }, + "nativeSrc": "61277:88:10", + "nodeType": "YulFunctionCall", + "src": "61277:88:10" + }, + "nativeSrc": "61277:88:10", + "nodeType": "YulExpressionStatement", + "src": "61277:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "61389:1:10", + "nodeType": "YulIdentifier", + "src": "61389:1:10" + }, + { + "kind": "number", + "nativeSrc": "61392:4:10", + "nodeType": "YulLiteral", + "src": "61392:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "61385:3:10", + "nodeType": "YulIdentifier", + "src": "61385:3:10" + }, + "nativeSrc": "61385:12:10", + "nodeType": "YulFunctionCall", + "src": "61385:12:10" + }, + { + "kind": "number", + "nativeSrc": "61399:66:10", + "nodeType": "YulLiteral", + "src": "61399:66:10", + "type": "", + "value": "0x5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "61378:6:10", + "nodeType": "YulIdentifier", + "src": "61378:6:10" + }, + "nativeSrc": "61378:88:10", + "nodeType": "YulFunctionCall", + "src": "61378:88:10" + }, + "nativeSrc": "61378:88:10", + "nodeType": "YulExpressionStatement", + "src": "61378:88:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "61486:4:10", + "nodeType": "YulLiteral", + "src": "61486:4:10", + "type": "", + "value": "0x16" + }, + { + "kind": "number", + "nativeSrc": "61492:6:10", + "nodeType": "YulLiteral", + "src": "61492:6:10", + "type": "", + "value": "0x6009" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "61479:6:10", + "nodeType": "YulIdentifier", + "src": "61479:6:10" + }, + "nativeSrc": "61479:20:10", + "nodeType": "YulFunctionCall", + "src": "61479:20:10" + }, + "nativeSrc": "61479:20:10", + "nodeType": "YulExpressionStatement", + "src": "61479:20:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "61519:4:10", + "nodeType": "YulLiteral", + "src": "61519:4:10", + "type": "", + "value": "0x14" + }, + { + "name": "implementation", + "nativeSrc": "61525:14:10", + "nodeType": "YulIdentifier", + "src": "61525:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "61512:6:10", + "nodeType": "YulIdentifier", + "src": "61512:6:10" + }, + "nativeSrc": "61512:28:10", + "nodeType": "YulFunctionCall", + "src": "61512:28:10" + }, + "nativeSrc": "61512:28:10", + "nodeType": "YulExpressionStatement", + "src": "61512:28:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "61560:4:10", + "nodeType": "YulLiteral", + "src": "61560:4:10", + "type": "", + "value": "0x00" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "61570:22:10", + "nodeType": "YulLiteral", + "src": "61570:22:10", + "type": "", + "value": "0x61003d3d8160233d3973" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "61598:2:10", + "nodeType": "YulLiteral", + "src": "61598:2:10", + "type": "", + "value": "56" + }, + { + "name": "n", + "nativeSrc": "61602:1:10", + "nodeType": "YulIdentifier", + "src": "61602:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "61594:3:10", + "nodeType": "YulIdentifier", + "src": "61594:3:10" + }, + "nativeSrc": "61594:10:10", + "nodeType": "YulFunctionCall", + "src": "61594:10:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "61566:3:10", + "nodeType": "YulIdentifier", + "src": "61566:3:10" + }, + "nativeSrc": "61566:39:10", + "nodeType": "YulFunctionCall", + "src": "61566:39:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "61553:6:10", + "nodeType": "YulIdentifier", + "src": "61553:6:10" + }, + "nativeSrc": "61553:53:10", + "nodeType": "YulFunctionCall", + "src": "61553:53:10" + }, + "nativeSrc": "61553:53:10", + "nodeType": "YulExpressionStatement", + "src": "61553:53:10" + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "61626:1:10", + "nodeType": "YulIdentifier", + "src": "61626:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "61635:4:10", + "nodeType": "YulLiteral", + "src": "61635:4:10", + "type": "", + "value": "0x16" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "61629:5:10", + "nodeType": "YulIdentifier", + "src": "61629:5:10" + }, + "nativeSrc": "61629:11:10", + "nodeType": "YulFunctionCall", + "src": "61629:11:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "61619:6:10", + "nodeType": "YulIdentifier", + "src": "61619:6:10" + }, + "nativeSrc": "61619:22:10", + "nodeType": "YulFunctionCall", + "src": "61619:22:10" + }, + "nativeSrc": "61619:22:10", + "nodeType": "YulExpressionStatement", + "src": "61619:22:10" + }, + { + "nativeSrc": "61654:34:10", + "nodeType": "YulAssignment", + "src": "61654:34:10", + "value": { + "arguments": [ + { + "name": "m", + "nativeSrc": "61672:1:10", + "nodeType": "YulIdentifier", + "src": "61672:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "61679:1:10", + "nodeType": "YulIdentifier", + "src": "61679:1:10" + }, + { + "kind": "number", + "nativeSrc": "61682:4:10", + "nodeType": "YulLiteral", + "src": "61682:4:10", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "61675:3:10", + "nodeType": "YulIdentifier", + "src": "61675:3:10" + }, + "nativeSrc": "61675:12:10", + "nodeType": "YulFunctionCall", + "src": "61675:12:10" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "61662:9:10", + "nodeType": "YulIdentifier", + "src": "61662:9:10" + }, + "nativeSrc": "61662:26:10", + "nodeType": "YulFunctionCall", + "src": "61662:26:10" + }, + "variableNames": [ + { + "name": "hash", + "nativeSrc": "61654:4:10", + "nodeType": "YulIdentifier", + "src": "61654:4:10" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3817, + "isOffset": false, + "isSlot": false, + "src": "60939:4:10", + "valueSize": 1 + }, + { + "declaration": 3817, + "isOffset": false, + "isSlot": false, + "src": "61233:4:10", + "valueSize": 1 + }, + { + "declaration": 3820, + "isOffset": false, + "isSlot": false, + "src": "61654:4:10", + "valueSize": 1 + }, + { + "declaration": 3815, + "isOffset": false, + "isSlot": false, + "src": "61525:14:10", + "valueSize": 1 + } + ], + "id": 3822, + "nodeType": "InlineAssembly", + "src": "60868:830:10" + } + ] + }, + "documentation": { + "id": 3813, + "nodeType": "StructuredDocumentation", + "src": "60567:106:10", + "text": "@dev Returns the initialization code hash of the minimal ERC1967 proxy of `implementation` and `args`." + }, + "id": 3824, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeHashERC1967", + "nameLocation": "60687:19:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3818, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3815, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "60715:14:10", + "nodeType": "VariableDeclaration", + "scope": 3824, + "src": "60707:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3814, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "60707:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3817, + "mutability": "mutable", + "name": "args", + "nameLocation": "60744:4:10", + "nodeType": "VariableDeclaration", + "scope": 3824, + "src": "60731:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3816, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "60731:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "60706:43:10" + }, + "returnParameters": { + "id": 3821, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3820, + "mutability": "mutable", + "name": "hash", + "nameLocation": "60805:4:10", + "nodeType": "VariableDeclaration", + "scope": 3824, + "src": "60797:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3819, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "60797:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "60796:14:10" + }, + "scope": 5104, + "src": "60678:1026:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3853, + "nodeType": "Block", + "src": "62112:144:10", + "statements": [ + { + "assignments": [ + 3839 + ], + "declarations": [ + { + "constant": false, + "id": 3839, + "mutability": "mutable", + "name": "hash", + "nameLocation": "62130:4:10", + "nodeType": "VariableDeclaration", + "scope": 3853, + "src": "62122:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3838, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "62122:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 3844, + "initialValue": { + "arguments": [ + { + "id": 3841, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3827, + "src": "62157:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3842, + "name": "args", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3829, + "src": "62173:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 3840, + "name": "initCodeHashERC1967", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3662, + 3824 + ], + "referencedDeclaration": 3824, + "src": "62137:19:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (address,bytes memory) pure returns (bytes32)" + } + }, + "id": 3843, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "62137:41:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "62122:56:10" + }, + { + "expression": { + "id": 3851, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3845, + "name": "predicted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3836, + "src": "62188:9:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3847, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3839, + "src": "62228:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 3848, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3831, + "src": "62234:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 3849, + "name": "deployer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3833, + "src": "62240:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3846, + "name": "predictDeterministicAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3237, + 3510, + 5081 + ], + "referencedDeclaration": 5081, + "src": "62200:27:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_address_$", + "typeString": "function (bytes32,bytes32,address) pure returns (address)" + } + }, + "id": 3850, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "62200:49:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "62188:61:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3852, + "nodeType": "ExpressionStatement", + "src": "62188:61:10" + } + ] + }, + "documentation": { + "id": 3825, + "nodeType": "StructuredDocumentation", + "src": "61710:198:10", + "text": "@dev Returns the address of the ERC1967 proxy of `implementation`, `args`, with `salt` by `deployer`.\n Note: The returned result has dirty upper 96 bits. Please clean if used in assembly." + }, + "id": 3854, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "predictDeterministicAddressERC1967", + "nameLocation": "61922:34:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3834, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3827, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "61974:14:10", + "nodeType": "VariableDeclaration", + "scope": 3854, + "src": "61966:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3826, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "61966:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3829, + "mutability": "mutable", + "name": "args", + "nameLocation": "62011:4:10", + "nodeType": "VariableDeclaration", + "scope": 3854, + "src": "61998:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3828, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "61998:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3831, + "mutability": "mutable", + "name": "salt", + "nameLocation": "62033:4:10", + "nodeType": "VariableDeclaration", + "scope": 3854, + "src": "62025:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3830, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "62025:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3833, + "mutability": "mutable", + "name": "deployer", + "nameLocation": "62055:8:10", + "nodeType": "VariableDeclaration", + "scope": 3854, + "src": "62047:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3832, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "62047:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "61956:113:10" + }, + "returnParameters": { + "id": 3837, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3836, + "mutability": "mutable", + "name": "predicted", + "nameLocation": "62101:9:10", + "nodeType": "VariableDeclaration", + "scope": 3854, + "src": "62093:17:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3835, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "62093:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "62092:19:10" + }, + "scope": 5104, + "src": "61913:343:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3863, + "nodeType": "Block", + "src": "62420:371:10", + "statements": [ + { + "AST": { + "nativeSrc": "62482:303:10", + "nodeType": "YulBlock", + "src": "62482:303:10", + "statements": [ + { + "nativeSrc": "62496:19:10", + "nodeType": "YulAssignment", + "src": "62496:19:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "62510:4:10", + "nodeType": "YulLiteral", + "src": "62510:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "62504:5:10", + "nodeType": "YulIdentifier", + "src": "62504:5:10" + }, + "nativeSrc": "62504:11:10", + "nodeType": "YulFunctionCall", + "src": "62504:11:10" + }, + "variableNames": [ + { + "name": "args", + "nativeSrc": "62496:4:10", + "nodeType": "YulIdentifier", + "src": "62496:4:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "args", + "nativeSrc": "62535:4:10", + "nodeType": "YulIdentifier", + "src": "62535:4:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "62545:12:10", + "nodeType": "YulLiteral", + "src": "62545:12:10", + "type": "", + "value": "0xffffffffff" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "62575:8:10", + "nodeType": "YulIdentifier", + "src": "62575:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "62563:11:10", + "nodeType": "YulIdentifier", + "src": "62563:11:10" + }, + "nativeSrc": "62563:21:10", + "nodeType": "YulFunctionCall", + "src": "62563:21:10" + }, + { + "kind": "number", + "nativeSrc": "62586:4:10", + "nodeType": "YulLiteral", + "src": "62586:4:10", + "type": "", + "value": "0x3d" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "62559:3:10", + "nodeType": "YulIdentifier", + "src": "62559:3:10" + }, + "nativeSrc": "62559:32:10", + "nodeType": "YulFunctionCall", + "src": "62559:32:10" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "62541:3:10", + "nodeType": "YulIdentifier", + "src": "62541:3:10" + }, + "nativeSrc": "62541:51:10", + "nodeType": "YulFunctionCall", + "src": "62541:51:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "62528:6:10", + "nodeType": "YulIdentifier", + "src": "62528:6:10" + }, + "nativeSrc": "62528:65:10", + "nodeType": "YulFunctionCall", + "src": "62528:65:10" + }, + "nativeSrc": "62528:65:10", + "nodeType": "YulExpressionStatement", + "src": "62528:65:10" + }, + { + "expression": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "62639:8:10", + "nodeType": "YulIdentifier", + "src": "62639:8:10" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "62653:4:10", + "nodeType": "YulIdentifier", + "src": "62653:4:10" + }, + { + "kind": "number", + "nativeSrc": "62659:4:10", + "nodeType": "YulLiteral", + "src": "62659:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "62649:3:10", + "nodeType": "YulIdentifier", + "src": "62649:3:10" + }, + "nativeSrc": "62649:15:10", + "nodeType": "YulFunctionCall", + "src": "62649:15:10" + }, + { + "kind": "number", + "nativeSrc": "62666:4:10", + "nodeType": "YulLiteral", + "src": "62666:4:10", + "type": "", + "value": "0x3d" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "62682:4:10", + "nodeType": "YulIdentifier", + "src": "62682:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "62676:5:10", + "nodeType": "YulIdentifier", + "src": "62676:5:10" + }, + "nativeSrc": "62676:11:10", + "nodeType": "YulFunctionCall", + "src": "62676:11:10" + }, + { + "kind": "number", + "nativeSrc": "62689:4:10", + "nodeType": "YulLiteral", + "src": "62689:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "62672:3:10", + "nodeType": "YulIdentifier", + "src": "62672:3:10" + }, + "nativeSrc": "62672:22:10", + "nodeType": "YulFunctionCall", + "src": "62672:22:10" + } + ], + "functionName": { + "name": "extcodecopy", + "nativeSrc": "62627:11:10", + "nodeType": "YulIdentifier", + "src": "62627:11:10" + }, + "nativeSrc": "62627:68:10", + "nodeType": "YulFunctionCall", + "src": "62627:68:10" + }, + "nativeSrc": "62627:68:10", + "nodeType": "YulExpressionStatement", + "src": "62627:68:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "62715:4:10", + "nodeType": "YulLiteral", + "src": "62715:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "62731:4:10", + "nodeType": "YulIdentifier", + "src": "62731:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "62725:5:10", + "nodeType": "YulIdentifier", + "src": "62725:5:10" + }, + "nativeSrc": "62725:11:10", + "nodeType": "YulFunctionCall", + "src": "62725:11:10" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "62742:4:10", + "nodeType": "YulIdentifier", + "src": "62742:4:10" + }, + { + "kind": "number", + "nativeSrc": "62748:4:10", + "nodeType": "YulLiteral", + "src": "62748:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "62738:3:10", + "nodeType": "YulIdentifier", + "src": "62738:3:10" + }, + "nativeSrc": "62738:15:10", + "nodeType": "YulFunctionCall", + "src": "62738:15:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "62721:3:10", + "nodeType": "YulIdentifier", + "src": "62721:3:10" + }, + "nativeSrc": "62721:33:10", + "nodeType": "YulFunctionCall", + "src": "62721:33:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "62708:6:10", + "nodeType": "YulIdentifier", + "src": "62708:6:10" + }, + "nativeSrc": "62708:47:10", + "nodeType": "YulFunctionCall", + "src": "62708:47:10" + }, + "nativeSrc": "62708:47:10", + "nodeType": "YulExpressionStatement", + "src": "62708:47:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3860, + "isOffset": false, + "isSlot": false, + "src": "62496:4:10", + "valueSize": 1 + }, + { + "declaration": 3860, + "isOffset": false, + "isSlot": false, + "src": "62535:4:10", + "valueSize": 1 + }, + { + "declaration": 3860, + "isOffset": false, + "isSlot": false, + "src": "62653:4:10", + "valueSize": 1 + }, + { + "declaration": 3860, + "isOffset": false, + "isSlot": false, + "src": "62682:4:10", + "valueSize": 1 + }, + { + "declaration": 3860, + "isOffset": false, + "isSlot": false, + "src": "62731:4:10", + "valueSize": 1 + }, + { + "declaration": 3860, + "isOffset": false, + "isSlot": false, + "src": "62742:4:10", + "valueSize": 1 + }, + { + "declaration": 3857, + "isOffset": false, + "isSlot": false, + "src": "62575:8:10", + "valueSize": 1 + }, + { + "declaration": 3857, + "isOffset": false, + "isSlot": false, + "src": "62639:8:10", + "valueSize": 1 + } + ], + "id": 3862, + "nodeType": "InlineAssembly", + "src": "62473:312:10" + } + ] + }, + "documentation": { + "id": 3855, + "nodeType": "StructuredDocumentation", + "src": "62262:70:10", + "text": "@dev Equivalent to `argsOnERC1967(instance, start, 2 ** 256 - 1)`." + }, + "id": 3864, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "argsOnERC1967", + "nameLocation": "62346:13:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3858, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3857, + "mutability": "mutable", + "name": "instance", + "nameLocation": "62368:8:10", + "nodeType": "VariableDeclaration", + "scope": 3864, + "src": "62360:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3856, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "62360:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "62359:18:10" + }, + "returnParameters": { + "id": 3861, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3860, + "mutability": "mutable", + "name": "args", + "nameLocation": "62414:4:10", + "nodeType": "VariableDeclaration", + "scope": 3864, + "src": "62401:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3859, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "62401:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "62400:19:10" + }, + "scope": 5104, + "src": "62337:454:10", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3875, + "nodeType": "Block", + "src": "62998:485:10", + "statements": [ + { + "AST": { + "nativeSrc": "63060:417:10", + "nodeType": "YulBlock", + "src": "63060:417:10", + "statements": [ + { + "nativeSrc": "63074:19:10", + "nodeType": "YulAssignment", + "src": "63074:19:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "63088:4:10", + "nodeType": "YulLiteral", + "src": "63088:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "63082:5:10", + "nodeType": "YulIdentifier", + "src": "63082:5:10" + }, + "nativeSrc": "63082:11:10", + "nodeType": "YulFunctionCall", + "src": "63082:11:10" + }, + "variableNames": [ + { + "name": "args", + "nativeSrc": "63074:4:10", + "nodeType": "YulIdentifier", + "src": "63074:4:10" + } + ] + }, + { + "nativeSrc": "63106:60:10", + "nodeType": "YulVariableDeclaration", + "src": "63106:60:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "63119:12:10", + "nodeType": "YulLiteral", + "src": "63119:12:10", + "type": "", + "value": "0xffffffffff" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "63149:8:10", + "nodeType": "YulIdentifier", + "src": "63149:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "63137:11:10", + "nodeType": "YulIdentifier", + "src": "63137:11:10" + }, + "nativeSrc": "63137:21:10", + "nodeType": "YulFunctionCall", + "src": "63137:21:10" + }, + { + "kind": "number", + "nativeSrc": "63160:4:10", + "nodeType": "YulLiteral", + "src": "63160:4:10", + "type": "", + "value": "0x3d" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "63133:3:10", + "nodeType": "YulIdentifier", + "src": "63133:3:10" + }, + "nativeSrc": "63133:32:10", + "nodeType": "YulFunctionCall", + "src": "63133:32:10" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "63115:3:10", + "nodeType": "YulIdentifier", + "src": "63115:3:10" + }, + "nativeSrc": "63115:51:10", + "nodeType": "YulFunctionCall", + "src": "63115:51:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "63110:1:10", + "nodeType": "YulTypedName", + "src": "63110:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "63179:56:10", + "nodeType": "YulVariableDeclaration", + "src": "63179:56:10", + "value": { + "arguments": [ + { + "name": "n", + "nativeSrc": "63192:1:10", + "nodeType": "YulIdentifier", + "src": "63192:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "63199:8:10", + "nodeType": "YulLiteral", + "src": "63199:8:10", + "type": "", + "value": "0xffffff" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "start", + "nativeSrc": "63216:5:10", + "nodeType": "YulIdentifier", + "src": "63216:5:10" + }, + { + "name": "n", + "nativeSrc": "63223:1:10", + "nodeType": "YulIdentifier", + "src": "63223:1:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "63213:2:10", + "nodeType": "YulIdentifier", + "src": "63213:2:10" + }, + "nativeSrc": "63213:12:10", + "nodeType": "YulFunctionCall", + "src": "63213:12:10" + }, + { + "name": "start", + "nativeSrc": "63227:5:10", + "nodeType": "YulIdentifier", + "src": "63227:5:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "63209:3:10", + "nodeType": "YulIdentifier", + "src": "63209:3:10" + }, + "nativeSrc": "63209:24:10", + "nodeType": "YulFunctionCall", + "src": "63209:24:10" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "63195:3:10", + "nodeType": "YulIdentifier", + "src": "63195:3:10" + }, + "nativeSrc": "63195:39:10", + "nodeType": "YulFunctionCall", + "src": "63195:39:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "63188:3:10", + "nodeType": "YulIdentifier", + "src": "63188:3:10" + }, + "nativeSrc": "63188:47:10", + "nodeType": "YulFunctionCall", + "src": "63188:47:10" + }, + "variables": [ + { + "name": "l", + "nativeSrc": "63183:1:10", + "nodeType": "YulTypedName", + "src": "63183:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "63260:8:10", + "nodeType": "YulIdentifier", + "src": "63260:8:10" + }, + { + "name": "args", + "nativeSrc": "63270:4:10", + "nodeType": "YulIdentifier", + "src": "63270:4:10" + }, + { + "arguments": [ + { + "name": "start", + "nativeSrc": "63280:5:10", + "nodeType": "YulIdentifier", + "src": "63280:5:10" + }, + { + "kind": "number", + "nativeSrc": "63287:4:10", + "nodeType": "YulLiteral", + "src": "63287:4:10", + "type": "", + "value": "0x1d" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "63276:3:10", + "nodeType": "YulIdentifier", + "src": "63276:3:10" + }, + "nativeSrc": "63276:16:10", + "nodeType": "YulFunctionCall", + "src": "63276:16:10" + }, + { + "arguments": [ + { + "name": "l", + "nativeSrc": "63298:1:10", + "nodeType": "YulIdentifier", + "src": "63298:1:10" + }, + { + "kind": "number", + "nativeSrc": "63301:4:10", + "nodeType": "YulLiteral", + "src": "63301:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "63294:3:10", + "nodeType": "YulIdentifier", + "src": "63294:3:10" + }, + "nativeSrc": "63294:12:10", + "nodeType": "YulFunctionCall", + "src": "63294:12:10" + } + ], + "functionName": { + "name": "extcodecopy", + "nativeSrc": "63248:11:10", + "nodeType": "YulIdentifier", + "src": "63248:11:10" + }, + "nativeSrc": "63248:59:10", + "nodeType": "YulFunctionCall", + "src": "63248:59:10" + }, + "nativeSrc": "63248:59:10", + "nodeType": "YulExpressionStatement", + "src": "63248:59:10" + }, + { + "expression": { + "arguments": [ + { + "name": "args", + "nativeSrc": "63327:4:10", + "nodeType": "YulIdentifier", + "src": "63327:4:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "n", + "nativeSrc": "63341:1:10", + "nodeType": "YulIdentifier", + "src": "63341:1:10" + }, + { + "name": "start", + "nativeSrc": "63344:5:10", + "nodeType": "YulIdentifier", + "src": "63344:5:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "63337:3:10", + "nodeType": "YulIdentifier", + "src": "63337:3:10" + }, + "nativeSrc": "63337:13:10", + "nodeType": "YulFunctionCall", + "src": "63337:13:10" + }, + { + "arguments": [ + { + "name": "start", + "nativeSrc": "63355:5:10", + "nodeType": "YulIdentifier", + "src": "63355:5:10" + }, + { + "name": "n", + "nativeSrc": "63362:1:10", + "nodeType": "YulIdentifier", + "src": "63362:1:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "63352:2:10", + "nodeType": "YulIdentifier", + "src": "63352:2:10" + }, + "nativeSrc": "63352:12:10", + "nodeType": "YulFunctionCall", + "src": "63352:12:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "63333:3:10", + "nodeType": "YulIdentifier", + "src": "63333:3:10" + }, + "nativeSrc": "63333:32:10", + "nodeType": "YulFunctionCall", + "src": "63333:32:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "63320:6:10", + "nodeType": "YulIdentifier", + "src": "63320:6:10" + }, + "nativeSrc": "63320:46:10", + "nodeType": "YulFunctionCall", + "src": "63320:46:10" + }, + "nativeSrc": "63320:46:10", + "nodeType": "YulExpressionStatement", + "src": "63320:46:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "63407:4:10", + "nodeType": "YulLiteral", + "src": "63407:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "63417:4:10", + "nodeType": "YulIdentifier", + "src": "63417:4:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "63427:4:10", + "nodeType": "YulLiteral", + "src": "63427:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "63439:4:10", + "nodeType": "YulIdentifier", + "src": "63439:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "63433:5:10", + "nodeType": "YulIdentifier", + "src": "63433:5:10" + }, + "nativeSrc": "63433:11:10", + "nodeType": "YulFunctionCall", + "src": "63433:11:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "63423:3:10", + "nodeType": "YulIdentifier", + "src": "63423:3:10" + }, + "nativeSrc": "63423:22:10", + "nodeType": "YulFunctionCall", + "src": "63423:22:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "63413:3:10", + "nodeType": "YulIdentifier", + "src": "63413:3:10" + }, + "nativeSrc": "63413:33:10", + "nodeType": "YulFunctionCall", + "src": "63413:33:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "63400:6:10", + "nodeType": "YulIdentifier", + "src": "63400:6:10" + }, + "nativeSrc": "63400:47:10", + "nodeType": "YulFunctionCall", + "src": "63400:47:10" + }, + "nativeSrc": "63400:47:10", + "nodeType": "YulExpressionStatement", + "src": "63400:47:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3872, + "isOffset": false, + "isSlot": false, + "src": "63074:4:10", + "valueSize": 1 + }, + { + "declaration": 3872, + "isOffset": false, + "isSlot": false, + "src": "63270:4:10", + "valueSize": 1 + }, + { + "declaration": 3872, + "isOffset": false, + "isSlot": false, + "src": "63327:4:10", + "valueSize": 1 + }, + { + "declaration": 3872, + "isOffset": false, + "isSlot": false, + "src": "63417:4:10", + "valueSize": 1 + }, + { + "declaration": 3872, + "isOffset": false, + "isSlot": false, + "src": "63439:4:10", + "valueSize": 1 + }, + { + "declaration": 3867, + "isOffset": false, + "isSlot": false, + "src": "63149:8:10", + "valueSize": 1 + }, + { + "declaration": 3867, + "isOffset": false, + "isSlot": false, + "src": "63260:8:10", + "valueSize": 1 + }, + { + "declaration": 3869, + "isOffset": false, + "isSlot": false, + "src": "63216:5:10", + "valueSize": 1 + }, + { + "declaration": 3869, + "isOffset": false, + "isSlot": false, + "src": "63227:5:10", + "valueSize": 1 + }, + { + "declaration": 3869, + "isOffset": false, + "isSlot": false, + "src": "63280:5:10", + "valueSize": 1 + }, + { + "declaration": 3869, + "isOffset": false, + "isSlot": false, + "src": "63344:5:10", + "valueSize": 1 + }, + { + "declaration": 3869, + "isOffset": false, + "isSlot": false, + "src": "63355:5:10", + "valueSize": 1 + } + ], + "id": 3874, + "nodeType": "InlineAssembly", + "src": "63051:426:10" + } + ] + }, + "documentation": { + "id": 3865, + "nodeType": "StructuredDocumentation", + "src": "62797:70:10", + "text": "@dev Equivalent to `argsOnERC1967(instance, start, 2 ** 256 - 1)`." + }, + "id": 3876, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "argsOnERC1967", + "nameLocation": "62881:13:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3870, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3867, + "mutability": "mutable", + "name": "instance", + "nameLocation": "62903:8:10", + "nodeType": "VariableDeclaration", + "scope": 3876, + "src": "62895:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3866, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "62895:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3869, + "mutability": "mutable", + "name": "start", + "nameLocation": "62921:5:10", + "nodeType": "VariableDeclaration", + "scope": 3876, + "src": "62913:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3868, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "62913:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "62894:33:10" + }, + "returnParameters": { + "id": 3873, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3872, + "mutability": "mutable", + "name": "args", + "nameLocation": "62988:4:10", + "nodeType": "VariableDeclaration", + "scope": 3876, + "src": "62975:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3871, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "62975:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "62974:19:10" + }, + "scope": 5104, + "src": "62872:611:10", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3889, + "nodeType": "Block", + "src": "63994:785:10", + "statements": [ + { + "AST": { + "nativeSrc": "64056:717:10", + "nodeType": "YulBlock", + "src": "64056:717:10", + "statements": [ + { + "nativeSrc": "64070:19:10", + "nodeType": "YulAssignment", + "src": "64070:19:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "64084:4:10", + "nodeType": "YulLiteral", + "src": "64084:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "64078:5:10", + "nodeType": "YulIdentifier", + "src": "64078:5:10" + }, + "nativeSrc": "64078:11:10", + "nodeType": "YulFunctionCall", + "src": "64078:11:10" + }, + "variableNames": [ + { + "name": "args", + "nativeSrc": "64070:4:10", + "nodeType": "YulIdentifier", + "src": "64070:4:10" + } + ] + }, + { + "body": { + "nativeSrc": "64129:17:10", + "nodeType": "YulBlock", + "src": "64129:17:10", + "statements": [ + { + "nativeSrc": "64131:13:10", + "nodeType": "YulAssignment", + "src": "64131:13:10", + "value": { + "kind": "number", + "nativeSrc": "64138:6:10", + "nodeType": "YulLiteral", + "src": "64138:6:10", + "type": "", + "value": "0xffff" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "64131:3:10", + "nodeType": "YulIdentifier", + "src": "64131:3:10" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "end", + "nativeSrc": "64115:3:10", + "nodeType": "YulIdentifier", + "src": "64115:3:10" + }, + { + "kind": "number", + "nativeSrc": "64120:6:10", + "nodeType": "YulLiteral", + "src": "64120:6:10", + "type": "", + "value": "0xffff" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "64112:2:10", + "nodeType": "YulIdentifier", + "src": "64112:2:10" + }, + "nativeSrc": "64112:15:10", + "nodeType": "YulFunctionCall", + "src": "64112:15:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "64105:6:10", + "nodeType": "YulIdentifier", + "src": "64105:6:10" + }, + "nativeSrc": "64105:23:10", + "nodeType": "YulFunctionCall", + "src": "64105:23:10" + }, + "nativeSrc": "64102:44:10", + "nodeType": "YulIf", + "src": "64102:44:10" + }, + { + "nativeSrc": "64159:45:10", + "nodeType": "YulVariableDeclaration", + "src": "64159:45:10", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "end", + "nativeSrc": "64176:3:10", + "nodeType": "YulIdentifier", + "src": "64176:3:10" + }, + { + "name": "start", + "nativeSrc": "64181:5:10", + "nodeType": "YulIdentifier", + "src": "64181:5:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "64172:3:10", + "nodeType": "YulIdentifier", + "src": "64172:3:10" + }, + "nativeSrc": "64172:15:10", + "nodeType": "YulFunctionCall", + "src": "64172:15:10" + }, + { + "arguments": [ + { + "name": "start", + "nativeSrc": "64192:5:10", + "nodeType": "YulIdentifier", + "src": "64192:5:10" + }, + { + "name": "end", + "nativeSrc": "64199:3:10", + "nodeType": "YulIdentifier", + "src": "64199:3:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "64189:2:10", + "nodeType": "YulIdentifier", + "src": "64189:2:10" + }, + "nativeSrc": "64189:14:10", + "nodeType": "YulFunctionCall", + "src": "64189:14:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "64168:3:10", + "nodeType": "YulIdentifier", + "src": "64168:3:10" + }, + "nativeSrc": "64168:36:10", + "nodeType": "YulFunctionCall", + "src": "64168:36:10" + }, + "variables": [ + { + "name": "d", + "nativeSrc": "64163:1:10", + "nodeType": "YulTypedName", + "src": "64163:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "64229:8:10", + "nodeType": "YulIdentifier", + "src": "64229:8:10" + }, + { + "name": "args", + "nativeSrc": "64239:4:10", + "nodeType": "YulIdentifier", + "src": "64239:4:10" + }, + { + "arguments": [ + { + "name": "start", + "nativeSrc": "64249:5:10", + "nodeType": "YulIdentifier", + "src": "64249:5:10" + }, + { + "kind": "number", + "nativeSrc": "64256:4:10", + "nodeType": "YulLiteral", + "src": "64256:4:10", + "type": "", + "value": "0x1d" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "64245:3:10", + "nodeType": "YulIdentifier", + "src": "64245:3:10" + }, + "nativeSrc": "64245:16:10", + "nodeType": "YulFunctionCall", + "src": "64245:16:10" + }, + { + "arguments": [ + { + "name": "d", + "nativeSrc": "64267:1:10", + "nodeType": "YulIdentifier", + "src": "64267:1:10" + }, + { + "kind": "number", + "nativeSrc": "64270:4:10", + "nodeType": "YulLiteral", + "src": "64270:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "64263:3:10", + "nodeType": "YulIdentifier", + "src": "64263:3:10" + }, + "nativeSrc": "64263:12:10", + "nodeType": "YulFunctionCall", + "src": "64263:12:10" + } + ], + "functionName": { + "name": "extcodecopy", + "nativeSrc": "64217:11:10", + "nodeType": "YulIdentifier", + "src": "64217:11:10" + }, + "nativeSrc": "64217:59:10", + "nodeType": "YulFunctionCall", + "src": "64217:59:10" + }, + "nativeSrc": "64217:59:10", + "nodeType": "YulExpressionStatement", + "src": "64217:59:10" + }, + { + "body": { + "nativeSrc": "64331:229:10", + "nodeType": "YulBlock", + "src": "64331:229:10", + "statements": [ + { + "nativeSrc": "64349:41:10", + "nodeType": "YulVariableDeclaration", + "src": "64349:41:10", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "64374:8:10", + "nodeType": "YulIdentifier", + "src": "64374:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "64362:11:10", + "nodeType": "YulIdentifier", + "src": "64362:11:10" + }, + "nativeSrc": "64362:21:10", + "nodeType": "YulFunctionCall", + "src": "64362:21:10" + }, + { + "kind": "number", + "nativeSrc": "64385:4:10", + "nodeType": "YulLiteral", + "src": "64385:4:10", + "type": "", + "value": "0x3d" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "64358:3:10", + "nodeType": "YulIdentifier", + "src": "64358:3:10" + }, + "nativeSrc": "64358:32:10", + "nodeType": "YulFunctionCall", + "src": "64358:32:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "64353:1:10", + "nodeType": "YulTypedName", + "src": "64353:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "64422:14:10", + "nodeType": "YulIdentifier", + "src": "64422:14:10" + }, + "nativeSrc": "64422:16:10", + "nodeType": "YulFunctionCall", + "src": "64422:16:10" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "64440:14:10", + "nodeType": "YulIdentifier", + "src": "64440:14:10" + }, + "nativeSrc": "64440:16:10", + "nodeType": "YulFunctionCall", + "src": "64440:16:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "64462:2:10", + "nodeType": "YulLiteral", + "src": "64462:2:10", + "type": "", + "value": "40" + }, + { + "name": "n", + "nativeSrc": "64466:1:10", + "nodeType": "YulIdentifier", + "src": "64466:1:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "64458:3:10", + "nodeType": "YulIdentifier", + "src": "64458:3:10" + }, + "nativeSrc": "64458:10:10", + "nodeType": "YulFunctionCall", + "src": "64458:10:10" + } + ], + "functionName": { + "name": "returndatacopy", + "nativeSrc": "64407:14:10", + "nodeType": "YulIdentifier", + "src": "64407:14:10" + }, + "nativeSrc": "64407:62:10", + "nodeType": "YulFunctionCall", + "src": "64407:62:10" + }, + "nativeSrc": "64407:62:10", + "nodeType": "YulExpressionStatement", + "src": "64407:62:10" + }, + { + "nativeSrc": "64486:60:10", + "nodeType": "YulAssignment", + "src": "64486:60:10", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "n", + "nativeSrc": "64498:1:10", + "nodeType": "YulIdentifier", + "src": "64498:1:10" + }, + { + "name": "start", + "nativeSrc": "64501:5:10", + "nodeType": "YulIdentifier", + "src": "64501:5:10" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "64495:2:10", + "nodeType": "YulIdentifier", + "src": "64495:2:10" + }, + "nativeSrc": "64495:12:10", + "nodeType": "YulFunctionCall", + "src": "64495:12:10" + }, + { + "arguments": [ + { + "name": "d", + "nativeSrc": "64513:1:10", + "nodeType": "YulIdentifier", + "src": "64513:1:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "end", + "nativeSrc": "64523:3:10", + "nodeType": "YulIdentifier", + "src": "64523:3:10" + }, + { + "name": "n", + "nativeSrc": "64528:1:10", + "nodeType": "YulIdentifier", + "src": "64528:1:10" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "64520:2:10", + "nodeType": "YulIdentifier", + "src": "64520:2:10" + }, + "nativeSrc": "64520:10:10", + "nodeType": "YulFunctionCall", + "src": "64520:10:10" + }, + { + "arguments": [ + { + "name": "end", + "nativeSrc": "64536:3:10", + "nodeType": "YulIdentifier", + "src": "64536:3:10" + }, + { + "name": "n", + "nativeSrc": "64541:1:10", + "nodeType": "YulIdentifier", + "src": "64541:1:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "64532:3:10", + "nodeType": "YulIdentifier", + "src": "64532:3:10" + }, + "nativeSrc": "64532:11:10", + "nodeType": "YulFunctionCall", + "src": "64532:11:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "64516:3:10", + "nodeType": "YulIdentifier", + "src": "64516:3:10" + }, + "nativeSrc": "64516:28:10", + "nodeType": "YulFunctionCall", + "src": "64516:28:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "64509:3:10", + "nodeType": "YulIdentifier", + "src": "64509:3:10" + }, + "nativeSrc": "64509:36:10", + "nodeType": "YulFunctionCall", + "src": "64509:36:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "64491:3:10", + "nodeType": "YulIdentifier", + "src": "64491:3:10" + }, + "nativeSrc": "64491:55:10", + "nodeType": "YulFunctionCall", + "src": "64491:55:10" + }, + "variableNames": [ + { + "name": "d", + "nativeSrc": "64486:1:10", + "nodeType": "YulIdentifier", + "src": "64486:1:10" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "64303:4:10", + "nodeType": "YulLiteral", + "src": "64303:4:10", + "type": "", + "value": "0xff" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "64319:4:10", + "nodeType": "YulIdentifier", + "src": "64319:4:10" + }, + { + "name": "d", + "nativeSrc": "64325:1:10", + "nodeType": "YulIdentifier", + "src": "64325:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "64315:3:10", + "nodeType": "YulIdentifier", + "src": "64315:3:10" + }, + "nativeSrc": "64315:12:10", + "nodeType": "YulFunctionCall", + "src": "64315:12:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "64309:5:10", + "nodeType": "YulIdentifier", + "src": "64309:5:10" + }, + "nativeSrc": "64309:19:10", + "nodeType": "YulFunctionCall", + "src": "64309:19:10" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "64299:3:10", + "nodeType": "YulIdentifier", + "src": "64299:3:10" + }, + "nativeSrc": "64299:30:10", + "nodeType": "YulFunctionCall", + "src": "64299:30:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "64292:6:10", + "nodeType": "YulIdentifier", + "src": "64292:6:10" + }, + "nativeSrc": "64292:38:10", + "nodeType": "YulFunctionCall", + "src": "64292:38:10" + }, + "nativeSrc": "64289:271:10", + "nodeType": "YulIf", + "src": "64289:271:10" + }, + { + "expression": { + "arguments": [ + { + "name": "args", + "nativeSrc": "64580:4:10", + "nodeType": "YulIdentifier", + "src": "64580:4:10" + }, + { + "name": "d", + "nativeSrc": "64586:1:10", + "nodeType": "YulIdentifier", + "src": "64586:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "64573:6:10", + "nodeType": "YulIdentifier", + "src": "64573:6:10" + }, + "nativeSrc": "64573:15:10", + "nodeType": "YulFunctionCall", + "src": "64573:15:10" + }, + "nativeSrc": "64573:15:10", + "nodeType": "YulExpressionStatement", + "src": "64573:15:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "64637:4:10", + "nodeType": "YulIdentifier", + "src": "64637:4:10" + }, + { + "kind": "number", + "nativeSrc": "64643:4:10", + "nodeType": "YulLiteral", + "src": "64643:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "64633:3:10", + "nodeType": "YulIdentifier", + "src": "64633:3:10" + }, + "nativeSrc": "64633:15:10", + "nodeType": "YulFunctionCall", + "src": "64633:15:10" + }, + { + "name": "d", + "nativeSrc": "64650:1:10", + "nodeType": "YulIdentifier", + "src": "64650:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "64629:3:10", + "nodeType": "YulIdentifier", + "src": "64629:3:10" + }, + "nativeSrc": "64629:23:10", + "nodeType": "YulFunctionCall", + "src": "64629:23:10" + }, + { + "kind": "number", + "nativeSrc": "64654:1:10", + "nodeType": "YulLiteral", + "src": "64654:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "64622:6:10", + "nodeType": "YulIdentifier", + "src": "64622:6:10" + }, + "nativeSrc": "64622:34:10", + "nodeType": "YulFunctionCall", + "src": "64622:34:10" + }, + "nativeSrc": "64622:34:10", + "nodeType": "YulExpressionStatement", + "src": "64622:34:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "64713:4:10", + "nodeType": "YulLiteral", + "src": "64713:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "64727:4:10", + "nodeType": "YulIdentifier", + "src": "64727:4:10" + }, + { + "kind": "number", + "nativeSrc": "64733:4:10", + "nodeType": "YulLiteral", + "src": "64733:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "64723:3:10", + "nodeType": "YulIdentifier", + "src": "64723:3:10" + }, + "nativeSrc": "64723:15:10", + "nodeType": "YulFunctionCall", + "src": "64723:15:10" + }, + { + "name": "d", + "nativeSrc": "64740:1:10", + "nodeType": "YulIdentifier", + "src": "64740:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "64719:3:10", + "nodeType": "YulIdentifier", + "src": "64719:3:10" + }, + "nativeSrc": "64719:23:10", + "nodeType": "YulFunctionCall", + "src": "64719:23:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "64706:6:10", + "nodeType": "YulIdentifier", + "src": "64706:6:10" + }, + "nativeSrc": "64706:37:10", + "nodeType": "YulFunctionCall", + "src": "64706:37:10" + }, + "nativeSrc": "64706:37:10", + "nodeType": "YulExpressionStatement", + "src": "64706:37:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3886, + "isOffset": false, + "isSlot": false, + "src": "64070:4:10", + "valueSize": 1 + }, + { + "declaration": 3886, + "isOffset": false, + "isSlot": false, + "src": "64239:4:10", + "valueSize": 1 + }, + { + "declaration": 3886, + "isOffset": false, + "isSlot": false, + "src": "64319:4:10", + "valueSize": 1 + }, + { + "declaration": 3886, + "isOffset": false, + "isSlot": false, + "src": "64580:4:10", + "valueSize": 1 + }, + { + "declaration": 3886, + "isOffset": false, + "isSlot": false, + "src": "64637:4:10", + "valueSize": 1 + }, + { + "declaration": 3886, + "isOffset": false, + "isSlot": false, + "src": "64727:4:10", + "valueSize": 1 + }, + { + "declaration": 3883, + "isOffset": false, + "isSlot": false, + "src": "64115:3:10", + "valueSize": 1 + }, + { + "declaration": 3883, + "isOffset": false, + "isSlot": false, + "src": "64131:3:10", + "valueSize": 1 + }, + { + "declaration": 3883, + "isOffset": false, + "isSlot": false, + "src": "64176:3:10", + "valueSize": 1 + }, + { + "declaration": 3883, + "isOffset": false, + "isSlot": false, + "src": "64199:3:10", + "valueSize": 1 + }, + { + "declaration": 3883, + "isOffset": false, + "isSlot": false, + "src": "64523:3:10", + "valueSize": 1 + }, + { + "declaration": 3883, + "isOffset": false, + "isSlot": false, + "src": "64536:3:10", + "valueSize": 1 + }, + { + "declaration": 3879, + "isOffset": false, + "isSlot": false, + "src": "64229:8:10", + "valueSize": 1 + }, + { + "declaration": 3879, + "isOffset": false, + "isSlot": false, + "src": "64374:8:10", + "valueSize": 1 + }, + { + "declaration": 3881, + "isOffset": false, + "isSlot": false, + "src": "64181:5:10", + "valueSize": 1 + }, + { + "declaration": 3881, + "isOffset": false, + "isSlot": false, + "src": "64192:5:10", + "valueSize": 1 + }, + { + "declaration": 3881, + "isOffset": false, + "isSlot": false, + "src": "64249:5:10", + "valueSize": 1 + }, + { + "declaration": 3881, + "isOffset": false, + "isSlot": false, + "src": "64501:5:10", + "valueSize": 1 + } + ], + "id": 3888, + "nodeType": "InlineAssembly", + "src": "64047:726:10" + } + ] + }, + "documentation": { + "id": 3877, + "nodeType": "StructuredDocumentation", + "src": "63489:361:10", + "text": "@dev Returns a slice of the immutable arguments on `instance` from `start` to `end`.\n `start` and `end` will be clamped to the range `[0, args.length]`.\n The `instance` MUST be deployed via the ERC1967 with immutable args functions.\n Otherwise, the behavior is undefined.\n Out-of-gas reverts if `instance` does not have any code." + }, + "id": 3890, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "argsOnERC1967", + "nameLocation": "63864:13:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3884, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3879, + "mutability": "mutable", + "name": "instance", + "nameLocation": "63886:8:10", + "nodeType": "VariableDeclaration", + "scope": 3890, + "src": "63878:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3878, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "63878:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3881, + "mutability": "mutable", + "name": "start", + "nameLocation": "63904:5:10", + "nodeType": "VariableDeclaration", + "scope": 3890, + "src": "63896:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3880, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "63896:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3883, + "mutability": "mutable", + "name": "end", + "nameLocation": "63919:3:10", + "nodeType": "VariableDeclaration", + "scope": 3890, + "src": "63911:11:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3882, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "63911:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "63877:46:10" + }, + "returnParameters": { + "id": 3887, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3886, + "mutability": "mutable", + "name": "args", + "nameLocation": "63984:4:10", + "nodeType": "VariableDeclaration", + "scope": 3890, + "src": "63971:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3885, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "63971:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "63970:19:10" + }, + "scope": 5104, + "src": "63855:924:10", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3905, + "nodeType": "Block", + "src": "65538:61:10", + "statements": [ + { + "expression": { + "id": 3903, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3898, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3896, + "src": "65548:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 3900, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "65574:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 3901, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3893, + "src": "65577:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3899, + "name": "deployERC1967I", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3906, + 3918, + 4050, + 4064 + ], + "referencedDeclaration": 3918, + "src": "65559:14:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$_t_address_$", + "typeString": "function (uint256,address) returns (address)" + } + }, + "id": 3902, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "65559:33:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "65548:44:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3904, + "nodeType": "ExpressionStatement", + "src": "65548:44:10" + } + ] + }, + "documentation": { + "id": 3891, + "nodeType": "StructuredDocumentation", + "src": "65393:56:10", + "text": "@dev Deploys a ERC1967I proxy with `implementation`." + }, + "id": 3906, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployERC1967I", + "nameLocation": "65463:14:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3894, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3893, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "65486:14:10", + "nodeType": "VariableDeclaration", + "scope": 3906, + "src": "65478:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3892, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "65478:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "65477:24:10" + }, + "returnParameters": { + "id": 3897, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3896, + "mutability": "mutable", + "name": "instance", + "nameLocation": "65528:8:10", + "nodeType": "VariableDeclaration", + "scope": 3906, + "src": "65520:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3895, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "65520:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "65519:18:10" + }, + "scope": 5104, + "src": "65454:145:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3917, + "nodeType": "Block", + "src": "65833:8789:10", + "statements": [ + { + "AST": { + "nativeSrc": "65895:8721:10", + "nodeType": "YulBlock", + "src": "65895:8721:10", + "statements": [ + { + "nativeSrc": "73879:20:10", + "nodeType": "YulVariableDeclaration", + "src": "73879:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "73894:4:10", + "nodeType": "YulLiteral", + "src": "73894:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "73888:5:10", + "nodeType": "YulIdentifier", + "src": "73888:5:10" + }, + "nativeSrc": "73888:11:10", + "nodeType": "YulFunctionCall", + "src": "73888:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "73883:1:10", + "nodeType": "YulTypedName", + "src": "73883:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "73953:4:10", + "nodeType": "YulLiteral", + "src": "73953:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "73959:66:10", + "nodeType": "YulLiteral", + "src": "73959:66:10", + "type": "", + "value": "0x3d6000803e603e573d6000fd5b3d6000f35b6020600f3d393d51543d52593df3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "73946:6:10", + "nodeType": "YulIdentifier", + "src": "73946:6:10" + }, + "nativeSrc": "73946:80:10", + "nodeType": "YulFunctionCall", + "src": "73946:80:10" + }, + "nativeSrc": "73946:80:10", + "nodeType": "YulExpressionStatement", + "src": "73946:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "74046:4:10", + "nodeType": "YulLiteral", + "src": "74046:4:10", + "type": "", + "value": "0x40" + }, + { + "kind": "number", + "nativeSrc": "74052:66:10", + "nodeType": "YulLiteral", + "src": "74052:66:10", + "type": "", + "value": "0xa13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af4" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "74039:6:10", + "nodeType": "YulIdentifier", + "src": "74039:6:10" + }, + "nativeSrc": "74039:80:10", + "nodeType": "YulFunctionCall", + "src": "74039:80:10" + }, + "nativeSrc": "74039:80:10", + "nodeType": "YulExpressionStatement", + "src": "74039:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "74139:4:10", + "nodeType": "YulLiteral", + "src": "74139:4:10", + "type": "", + "value": "0x20" + }, + { + "kind": "number", + "nativeSrc": "74145:48:10", + "nodeType": "YulLiteral", + "src": "74145:48:10", + "type": "", + "value": "0x600f5155f3365814604357363d3d373d3d363d7f360894" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "74132:6:10", + "nodeType": "YulIdentifier", + "src": "74132:6:10" + }, + "nativeSrc": "74132:62:10", + "nodeType": "YulFunctionCall", + "src": "74132:62:10" + }, + "nativeSrc": "74132:62:10", + "nodeType": "YulExpressionStatement", + "src": "74132:62:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "74214:4:10", + "nodeType": "YulLiteral", + "src": "74214:4:10", + "type": "", + "value": "0x09" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "74227:3:10", + "nodeType": "YulLiteral", + "src": "74227:3:10", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "74232:20:10", + "nodeType": "YulLiteral", + "src": "74232:20:10", + "type": "", + "value": "0x60523d8160223d3973" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "74223:3:10", + "nodeType": "YulIdentifier", + "src": "74223:3:10" + }, + "nativeSrc": "74223:30:10", + "nodeType": "YulFunctionCall", + "src": "74223:30:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "74259:2:10", + "nodeType": "YulLiteral", + "src": "74259:2:10", + "type": "", + "value": "96" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "74267:2:10", + "nodeType": "YulLiteral", + "src": "74267:2:10", + "type": "", + "value": "96" + }, + { + "name": "implementation", + "nativeSrc": "74271:14:10", + "nodeType": "YulIdentifier", + "src": "74271:14:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "74263:3:10", + "nodeType": "YulIdentifier", + "src": "74263:3:10" + }, + "nativeSrc": "74263:23:10", + "nodeType": "YulFunctionCall", + "src": "74263:23:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "74255:3:10", + "nodeType": "YulIdentifier", + "src": "74255:3:10" + }, + "nativeSrc": "74255:32:10", + "nodeType": "YulFunctionCall", + "src": "74255:32:10" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "74220:2:10", + "nodeType": "YulIdentifier", + "src": "74220:2:10" + }, + "nativeSrc": "74220:68:10", + "nodeType": "YulFunctionCall", + "src": "74220:68:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "74207:6:10", + "nodeType": "YulIdentifier", + "src": "74207:6:10" + }, + "nativeSrc": "74207:82:10", + "nodeType": "YulFunctionCall", + "src": "74207:82:10" + }, + "nativeSrc": "74207:82:10", + "nodeType": "YulExpressionStatement", + "src": "74207:82:10" + }, + { + "nativeSrc": "74302:37:10", + "nodeType": "YulAssignment", + "src": "74302:37:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "74321:5:10", + "nodeType": "YulIdentifier", + "src": "74321:5:10" + }, + { + "kind": "number", + "nativeSrc": "74328:4:10", + "nodeType": "YulLiteral", + "src": "74328:4:10", + "type": "", + "value": "0x0c" + }, + { + "kind": "number", + "nativeSrc": "74334:4:10", + "nodeType": "YulLiteral", + "src": "74334:4:10", + "type": "", + "value": "0x74" + } + ], + "functionName": { + "name": "create", + "nativeSrc": "74314:6:10", + "nodeType": "YulIdentifier", + "src": "74314:6:10" + }, + "nativeSrc": "74314:25:10", + "nodeType": "YulFunctionCall", + "src": "74314:25:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "74302:8:10", + "nodeType": "YulIdentifier", + "src": "74302:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "74372:116:10", + "nodeType": "YulBlock", + "src": "74372:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "74397:4:10", + "nodeType": "YulLiteral", + "src": "74397:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "74403:10:10", + "nodeType": "YulLiteral", + "src": "74403:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "74390:6:10", + "nodeType": "YulIdentifier", + "src": "74390:6:10" + }, + "nativeSrc": "74390:24:10", + "nodeType": "YulFunctionCall", + "src": "74390:24:10" + }, + "nativeSrc": "74390:24:10", + "nodeType": "YulExpressionStatement", + "src": "74390:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "74463:4:10", + "nodeType": "YulLiteral", + "src": "74463:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "74469:4:10", + "nodeType": "YulLiteral", + "src": "74469:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "74456:6:10", + "nodeType": "YulIdentifier", + "src": "74456:6:10" + }, + "nativeSrc": "74456:18:10", + "nodeType": "YulFunctionCall", + "src": "74456:18:10" + }, + "nativeSrc": "74456:18:10", + "nodeType": "YulExpressionStatement", + "src": "74456:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "74362:8:10", + "nodeType": "YulIdentifier", + "src": "74362:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "74355:6:10", + "nodeType": "YulIdentifier", + "src": "74355:6:10" + }, + "nativeSrc": "74355:16:10", + "nodeType": "YulFunctionCall", + "src": "74355:16:10" + }, + "nativeSrc": "74352:136:10", + "nodeType": "YulIf", + "src": "74352:136:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "74508:4:10", + "nodeType": "YulLiteral", + "src": "74508:4:10", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "74514:1:10", + "nodeType": "YulIdentifier", + "src": "74514:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "74501:6:10", + "nodeType": "YulIdentifier", + "src": "74501:6:10" + }, + "nativeSrc": "74501:15:10", + "nodeType": "YulFunctionCall", + "src": "74501:15:10" + }, + "nativeSrc": "74501:15:10", + "nodeType": "YulExpressionStatement", + "src": "74501:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "74572:4:10", + "nodeType": "YulLiteral", + "src": "74572:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "74578:1:10", + "nodeType": "YulLiteral", + "src": "74578:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "74565:6:10", + "nodeType": "YulIdentifier", + "src": "74565:6:10" + }, + "nativeSrc": "74565:15:10", + "nodeType": "YulFunctionCall", + "src": "74565:15:10" + }, + "nativeSrc": "74565:15:10", + "nodeType": "YulExpressionStatement", + "src": "74565:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3911, + "isOffset": false, + "isSlot": false, + "src": "74271:14:10", + "valueSize": 1 + }, + { + "declaration": 3914, + "isOffset": false, + "isSlot": false, + "src": "74302:8:10", + "valueSize": 1 + }, + { + "declaration": 3914, + "isOffset": false, + "isSlot": false, + "src": "74362:8:10", + "valueSize": 1 + }, + { + "declaration": 3909, + "isOffset": false, + "isSlot": false, + "src": "74321:5:10", + "valueSize": 1 + } + ], + "id": 3916, + "nodeType": "InlineAssembly", + "src": "65886:8730:10" + } + ] + }, + "documentation": { + "id": 3907, + "nodeType": "StructuredDocumentation", + "src": "65605:104:10", + "text": "@dev Deploys a ERC1967I proxy with `implementation`.\n Deposits `value` ETH during deployment." + }, + "id": 3918, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployERC1967I", + "nameLocation": "65723:14:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3912, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3909, + "mutability": "mutable", + "name": "value", + "nameLocation": "65746:5:10", + "nodeType": "VariableDeclaration", + "scope": 3918, + "src": "65738:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3908, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "65738:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3911, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "65761:14:10", + "nodeType": "VariableDeclaration", + "scope": 3918, + "src": "65753:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3910, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "65753:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "65737:39:10" + }, + "returnParameters": { + "id": 3915, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3914, + "mutability": "mutable", + "name": "instance", + "nameLocation": "65819:8:10", + "nodeType": "VariableDeclaration", + "scope": 3918, + "src": "65811:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3913, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "65811:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "65810:18:10" + }, + "scope": 5104, + "src": "65714:8908:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3936, + "nodeType": "Block", + "src": "74845:80:10", + "statements": [ + { + "expression": { + "id": 3934, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3928, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3926, + "src": "74855:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 3930, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "74894:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 3931, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3921, + "src": "74897:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3932, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3923, + "src": "74913:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3929, + "name": "deployDeterministicERC1967I", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3937, + 3951, + 4086, + 4102 + ], + "referencedDeclaration": 3951, + "src": "74866:27:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (uint256,address,bytes32) returns (address)" + } + }, + "id": 3933, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "74866:52:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "74855:63:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3935, + "nodeType": "ExpressionStatement", + "src": "74855:63:10" + } + ] + }, + "documentation": { + "id": 3919, + "nodeType": "StructuredDocumentation", + "src": "74628:81:10", + "text": "@dev Deploys a deterministic ERC1967I proxy with `implementation` and `salt`." + }, + "id": 3937, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployDeterministicERC1967I", + "nameLocation": "74723:27:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3924, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3921, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "74759:14:10", + "nodeType": "VariableDeclaration", + "scope": 3937, + "src": "74751:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3920, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "74751:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3923, + "mutability": "mutable", + "name": "salt", + "nameLocation": "74783:4:10", + "nodeType": "VariableDeclaration", + "scope": 3937, + "src": "74775:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3922, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "74775:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "74750:38:10" + }, + "returnParameters": { + "id": 3927, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3926, + "mutability": "mutable", + "name": "instance", + "nameLocation": "74831:8:10", + "nodeType": "VariableDeclaration", + "scope": 3937, + "src": "74823:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3925, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "74823:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "74822:18:10" + }, + "scope": 5104, + "src": "74714:211:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3950, + "nodeType": "Block", + "src": "75211:826:10", + "statements": [ + { + "AST": { + "nativeSrc": "75273:758:10", + "nodeType": "YulBlock", + "src": "75273:758:10", + "statements": [ + { + "nativeSrc": "75287:20:10", + "nodeType": "YulVariableDeclaration", + "src": "75287:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "75302:4:10", + "nodeType": "YulLiteral", + "src": "75302:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "75296:5:10", + "nodeType": "YulIdentifier", + "src": "75296:5:10" + }, + "nativeSrc": "75296:11:10", + "nodeType": "YulFunctionCall", + "src": "75296:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "75291:1:10", + "nodeType": "YulTypedName", + "src": "75291:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "75361:4:10", + "nodeType": "YulLiteral", + "src": "75361:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "75367:66:10", + "nodeType": "YulLiteral", + "src": "75367:66:10", + "type": "", + "value": "0x3d6000803e603e573d6000fd5b3d6000f35b6020600f3d393d51543d52593df3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "75354:6:10", + "nodeType": "YulIdentifier", + "src": "75354:6:10" + }, + "nativeSrc": "75354:80:10", + "nodeType": "YulFunctionCall", + "src": "75354:80:10" + }, + "nativeSrc": "75354:80:10", + "nodeType": "YulExpressionStatement", + "src": "75354:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "75454:4:10", + "nodeType": "YulLiteral", + "src": "75454:4:10", + "type": "", + "value": "0x40" + }, + { + "kind": "number", + "nativeSrc": "75460:66:10", + "nodeType": "YulLiteral", + "src": "75460:66:10", + "type": "", + "value": "0xa13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af4" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "75447:6:10", + "nodeType": "YulIdentifier", + "src": "75447:6:10" + }, + "nativeSrc": "75447:80:10", + "nodeType": "YulFunctionCall", + "src": "75447:80:10" + }, + "nativeSrc": "75447:80:10", + "nodeType": "YulExpressionStatement", + "src": "75447:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "75547:4:10", + "nodeType": "YulLiteral", + "src": "75547:4:10", + "type": "", + "value": "0x20" + }, + { + "kind": "number", + "nativeSrc": "75553:48:10", + "nodeType": "YulLiteral", + "src": "75553:48:10", + "type": "", + "value": "0x600f5155f3365814604357363d3d373d3d363d7f360894" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "75540:6:10", + "nodeType": "YulIdentifier", + "src": "75540:6:10" + }, + "nativeSrc": "75540:62:10", + "nodeType": "YulFunctionCall", + "src": "75540:62:10" + }, + "nativeSrc": "75540:62:10", + "nodeType": "YulExpressionStatement", + "src": "75540:62:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "75622:4:10", + "nodeType": "YulLiteral", + "src": "75622:4:10", + "type": "", + "value": "0x09" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "75635:3:10", + "nodeType": "YulLiteral", + "src": "75635:3:10", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "75640:20:10", + "nodeType": "YulLiteral", + "src": "75640:20:10", + "type": "", + "value": "0x60523d8160223d3973" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "75631:3:10", + "nodeType": "YulIdentifier", + "src": "75631:3:10" + }, + "nativeSrc": "75631:30:10", + "nodeType": "YulFunctionCall", + "src": "75631:30:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "75667:2:10", + "nodeType": "YulLiteral", + "src": "75667:2:10", + "type": "", + "value": "96" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "75675:2:10", + "nodeType": "YulLiteral", + "src": "75675:2:10", + "type": "", + "value": "96" + }, + { + "name": "implementation", + "nativeSrc": "75679:14:10", + "nodeType": "YulIdentifier", + "src": "75679:14:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "75671:3:10", + "nodeType": "YulIdentifier", + "src": "75671:3:10" + }, + "nativeSrc": "75671:23:10", + "nodeType": "YulFunctionCall", + "src": "75671:23:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "75663:3:10", + "nodeType": "YulIdentifier", + "src": "75663:3:10" + }, + "nativeSrc": "75663:32:10", + "nodeType": "YulFunctionCall", + "src": "75663:32:10" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "75628:2:10", + "nodeType": "YulIdentifier", + "src": "75628:2:10" + }, + "nativeSrc": "75628:68:10", + "nodeType": "YulFunctionCall", + "src": "75628:68:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "75615:6:10", + "nodeType": "YulIdentifier", + "src": "75615:6:10" + }, + "nativeSrc": "75615:82:10", + "nodeType": "YulFunctionCall", + "src": "75615:82:10" + }, + "nativeSrc": "75615:82:10", + "nodeType": "YulExpressionStatement", + "src": "75615:82:10" + }, + { + "nativeSrc": "75710:44:10", + "nodeType": "YulAssignment", + "src": "75710:44:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "75730:5:10", + "nodeType": "YulIdentifier", + "src": "75730:5:10" + }, + { + "kind": "number", + "nativeSrc": "75737:4:10", + "nodeType": "YulLiteral", + "src": "75737:4:10", + "type": "", + "value": "0x0c" + }, + { + "kind": "number", + "nativeSrc": "75743:4:10", + "nodeType": "YulLiteral", + "src": "75743:4:10", + "type": "", + "value": "0x74" + }, + { + "name": "salt", + "nativeSrc": "75749:4:10", + "nodeType": "YulIdentifier", + "src": "75749:4:10" + } + ], + "functionName": { + "name": "create2", + "nativeSrc": "75722:7:10", + "nodeType": "YulIdentifier", + "src": "75722:7:10" + }, + "nativeSrc": "75722:32:10", + "nodeType": "YulFunctionCall", + "src": "75722:32:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "75710:8:10", + "nodeType": "YulIdentifier", + "src": "75710:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "75787:116:10", + "nodeType": "YulBlock", + "src": "75787:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "75812:4:10", + "nodeType": "YulLiteral", + "src": "75812:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "75818:10:10", + "nodeType": "YulLiteral", + "src": "75818:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "75805:6:10", + "nodeType": "YulIdentifier", + "src": "75805:6:10" + }, + "nativeSrc": "75805:24:10", + "nodeType": "YulFunctionCall", + "src": "75805:24:10" + }, + "nativeSrc": "75805:24:10", + "nodeType": "YulExpressionStatement", + "src": "75805:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "75878:4:10", + "nodeType": "YulLiteral", + "src": "75878:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "75884:4:10", + "nodeType": "YulLiteral", + "src": "75884:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "75871:6:10", + "nodeType": "YulIdentifier", + "src": "75871:6:10" + }, + "nativeSrc": "75871:18:10", + "nodeType": "YulFunctionCall", + "src": "75871:18:10" + }, + "nativeSrc": "75871:18:10", + "nodeType": "YulExpressionStatement", + "src": "75871:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "75777:8:10", + "nodeType": "YulIdentifier", + "src": "75777:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "75770:6:10", + "nodeType": "YulIdentifier", + "src": "75770:6:10" + }, + "nativeSrc": "75770:16:10", + "nodeType": "YulFunctionCall", + "src": "75770:16:10" + }, + "nativeSrc": "75767:136:10", + "nodeType": "YulIf", + "src": "75767:136:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "75923:4:10", + "nodeType": "YulLiteral", + "src": "75923:4:10", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "75929:1:10", + "nodeType": "YulIdentifier", + "src": "75929:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "75916:6:10", + "nodeType": "YulIdentifier", + "src": "75916:6:10" + }, + "nativeSrc": "75916:15:10", + "nodeType": "YulFunctionCall", + "src": "75916:15:10" + }, + "nativeSrc": "75916:15:10", + "nodeType": "YulExpressionStatement", + "src": "75916:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "75987:4:10", + "nodeType": "YulLiteral", + "src": "75987:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "75993:1:10", + "nodeType": "YulLiteral", + "src": "75993:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "75980:6:10", + "nodeType": "YulIdentifier", + "src": "75980:6:10" + }, + "nativeSrc": "75980:15:10", + "nodeType": "YulFunctionCall", + "src": "75980:15:10" + }, + "nativeSrc": "75980:15:10", + "nodeType": "YulExpressionStatement", + "src": "75980:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3942, + "isOffset": false, + "isSlot": false, + "src": "75679:14:10", + "valueSize": 1 + }, + { + "declaration": 3947, + "isOffset": false, + "isSlot": false, + "src": "75710:8:10", + "valueSize": 1 + }, + { + "declaration": 3947, + "isOffset": false, + "isSlot": false, + "src": "75777:8:10", + "valueSize": 1 + }, + { + "declaration": 3944, + "isOffset": false, + "isSlot": false, + "src": "75749:4:10", + "valueSize": 1 + }, + { + "declaration": 3940, + "isOffset": false, + "isSlot": false, + "src": "75730:5:10", + "valueSize": 1 + } + ], + "id": 3949, + "nodeType": "InlineAssembly", + "src": "75264:767:10" + } + ] + }, + "documentation": { + "id": 3938, + "nodeType": "StructuredDocumentation", + "src": "74931:129:10", + "text": "@dev Deploys a deterministic ERC1967I proxy with `implementation` and `salt`.\n Deposits `value` ETH during deployment." + }, + "id": 3951, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployDeterministicERC1967I", + "nameLocation": "75074:27:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3945, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3940, + "mutability": "mutable", + "name": "value", + "nameLocation": "75110:5:10", + "nodeType": "VariableDeclaration", + "scope": 3951, + "src": "75102:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3939, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "75102:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3942, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "75125:14:10", + "nodeType": "VariableDeclaration", + "scope": 3951, + "src": "75117:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3941, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "75117:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3944, + "mutability": "mutable", + "name": "salt", + "nameLocation": "75149:4:10", + "nodeType": "VariableDeclaration", + "scope": 3951, + "src": "75141:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3943, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "75141:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "75101:53:10" + }, + "returnParameters": { + "id": 3948, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3947, + "mutability": "mutable", + "name": "instance", + "nameLocation": "75197:8:10", + "nodeType": "VariableDeclaration", + "scope": 3951, + "src": "75189:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3946, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "75189:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "75188:18:10" + }, + "scope": 5104, + "src": "75065:972:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3969, + "nodeType": "Block", + "src": "76425:76:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "30", + "id": 3964, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "76470:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 3965, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3954, + "src": "76473:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3966, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3956, + "src": "76489:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3963, + "name": "createDeterministicERC1967I", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3970, + 3986, + 4124, + 4142 + ], + "referencedDeclaration": 3986, + "src": "76442:27:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$_t_bool_$_t_address_$", + "typeString": "function (uint256,address,bytes32) returns (bool,address)" + } + }, + "id": 3967, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "76442:52:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_address_$", + "typeString": "tuple(bool,address)" + } + }, + "functionReturnParameters": 3962, + "id": 3968, + "nodeType": "Return", + "src": "76435:59:10" + } + ] + }, + "documentation": { + "id": 3952, + "nodeType": "StructuredDocumentation", + "src": "76043:224:10", + "text": "@dev Creates a deterministic ERC1967I proxy with `implementation` and `salt`.\n Note: This method is intended for use in ERC4337 factories,\n which are expected to NOT revert if the proxy is already deployed." + }, + "id": 3970, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createDeterministicERC1967I", + "nameLocation": "76281:27:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3957, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3954, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "76317:14:10", + "nodeType": "VariableDeclaration", + "scope": 3970, + "src": "76309:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3953, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "76309:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3956, + "mutability": "mutable", + "name": "salt", + "nameLocation": "76341:4:10", + "nodeType": "VariableDeclaration", + "scope": 3970, + "src": "76333:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3955, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "76333:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "76308:38:10" + }, + "returnParameters": { + "id": 3962, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3959, + "mutability": "mutable", + "name": "alreadyDeployed", + "nameLocation": "76386:15:10", + "nodeType": "VariableDeclaration", + "scope": 3970, + "src": "76381:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3958, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "76381:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3961, + "mutability": "mutable", + "name": "instance", + "nameLocation": "76411:8:10", + "nodeType": "VariableDeclaration", + "scope": 3970, + "src": "76403:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3960, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "76403:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "76380:40:10" + }, + "scope": 5104, + "src": "76272:229:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3985, + "nodeType": "Block", + "src": "76952:1607:10", + "statements": [ + { + "AST": { + "nativeSrc": "77014:1539:10", + "nodeType": "YulBlock", + "src": "77014:1539:10", + "statements": [ + { + "nativeSrc": "77028:20:10", + "nodeType": "YulVariableDeclaration", + "src": "77028:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "77043:4:10", + "nodeType": "YulLiteral", + "src": "77043:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "77037:5:10", + "nodeType": "YulIdentifier", + "src": "77037:5:10" + }, + "nativeSrc": "77037:11:10", + "nodeType": "YulFunctionCall", + "src": "77037:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "77032:1:10", + "nodeType": "YulTypedName", + "src": "77032:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "77102:4:10", + "nodeType": "YulLiteral", + "src": "77102:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "77108:66:10", + "nodeType": "YulLiteral", + "src": "77108:66:10", + "type": "", + "value": "0x3d6000803e603e573d6000fd5b3d6000f35b6020600f3d393d51543d52593df3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "77095:6:10", + "nodeType": "YulIdentifier", + "src": "77095:6:10" + }, + "nativeSrc": "77095:80:10", + "nodeType": "YulFunctionCall", + "src": "77095:80:10" + }, + "nativeSrc": "77095:80:10", + "nodeType": "YulExpressionStatement", + "src": "77095:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "77195:4:10", + "nodeType": "YulLiteral", + "src": "77195:4:10", + "type": "", + "value": "0x40" + }, + { + "kind": "number", + "nativeSrc": "77201:66:10", + "nodeType": "YulLiteral", + "src": "77201:66:10", + "type": "", + "value": "0xa13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af4" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "77188:6:10", + "nodeType": "YulIdentifier", + "src": "77188:6:10" + }, + "nativeSrc": "77188:80:10", + "nodeType": "YulFunctionCall", + "src": "77188:80:10" + }, + "nativeSrc": "77188:80:10", + "nodeType": "YulExpressionStatement", + "src": "77188:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "77288:4:10", + "nodeType": "YulLiteral", + "src": "77288:4:10", + "type": "", + "value": "0x20" + }, + { + "kind": "number", + "nativeSrc": "77294:48:10", + "nodeType": "YulLiteral", + "src": "77294:48:10", + "type": "", + "value": "0x600f5155f3365814604357363d3d373d3d363d7f360894" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "77281:6:10", + "nodeType": "YulIdentifier", + "src": "77281:6:10" + }, + "nativeSrc": "77281:62:10", + "nodeType": "YulFunctionCall", + "src": "77281:62:10" + }, + "nativeSrc": "77281:62:10", + "nodeType": "YulExpressionStatement", + "src": "77281:62:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "77363:4:10", + "nodeType": "YulLiteral", + "src": "77363:4:10", + "type": "", + "value": "0x09" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "77376:3:10", + "nodeType": "YulLiteral", + "src": "77376:3:10", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "77381:20:10", + "nodeType": "YulLiteral", + "src": "77381:20:10", + "type": "", + "value": "0x60523d8160223d3973" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "77372:3:10", + "nodeType": "YulIdentifier", + "src": "77372:3:10" + }, + "nativeSrc": "77372:30:10", + "nodeType": "YulFunctionCall", + "src": "77372:30:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "77408:2:10", + "nodeType": "YulLiteral", + "src": "77408:2:10", + "type": "", + "value": "96" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "77416:2:10", + "nodeType": "YulLiteral", + "src": "77416:2:10", + "type": "", + "value": "96" + }, + { + "name": "implementation", + "nativeSrc": "77420:14:10", + "nodeType": "YulIdentifier", + "src": "77420:14:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "77412:3:10", + "nodeType": "YulIdentifier", + "src": "77412:3:10" + }, + "nativeSrc": "77412:23:10", + "nodeType": "YulFunctionCall", + "src": "77412:23:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "77404:3:10", + "nodeType": "YulIdentifier", + "src": "77404:3:10" + }, + "nativeSrc": "77404:32:10", + "nodeType": "YulFunctionCall", + "src": "77404:32:10" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "77369:2:10", + "nodeType": "YulIdentifier", + "src": "77369:2:10" + }, + "nativeSrc": "77369:68:10", + "nodeType": "YulFunctionCall", + "src": "77369:68:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "77356:6:10", + "nodeType": "YulIdentifier", + "src": "77356:6:10" + }, + "nativeSrc": "77356:82:10", + "nodeType": "YulFunctionCall", + "src": "77356:82:10" + }, + "nativeSrc": "77356:82:10", + "nodeType": "YulExpressionStatement", + "src": "77356:82:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "77514:1:10", + "nodeType": "YulIdentifier", + "src": "77514:1:10" + }, + { + "kind": "number", + "nativeSrc": "77517:4:10", + "nodeType": "YulLiteral", + "src": "77517:4:10", + "type": "", + "value": "0x35" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "77510:3:10", + "nodeType": "YulIdentifier", + "src": "77510:3:10" + }, + "nativeSrc": "77510:12:10", + "nodeType": "YulFunctionCall", + "src": "77510:12:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "77534:4:10", + "nodeType": "YulLiteral", + "src": "77534:4:10", + "type": "", + "value": "0x0c" + }, + { + "kind": "number", + "nativeSrc": "77540:4:10", + "nodeType": "YulLiteral", + "src": "77540:4:10", + "type": "", + "value": "0x74" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "77524:9:10", + "nodeType": "YulIdentifier", + "src": "77524:9:10" + }, + "nativeSrc": "77524:21:10", + "nodeType": "YulFunctionCall", + "src": "77524:21:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "77503:6:10", + "nodeType": "YulIdentifier", + "src": "77503:6:10" + }, + "nativeSrc": "77503:43:10", + "nodeType": "YulFunctionCall", + "src": "77503:43:10" + }, + "nativeSrc": "77503:43:10", + "nodeType": "YulExpressionStatement", + "src": "77503:43:10" + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "77566:1:10", + "nodeType": "YulIdentifier", + "src": "77566:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "77573:2:10", + "nodeType": "YulLiteral", + "src": "77573:2:10", + "type": "", + "value": "88" + }, + { + "arguments": [], + "functionName": { + "name": "address", + "nativeSrc": "77577:7:10", + "nodeType": "YulIdentifier", + "src": "77577:7:10" + }, + "nativeSrc": "77577:9:10", + "nodeType": "YulFunctionCall", + "src": "77577:9:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "77569:3:10", + "nodeType": "YulIdentifier", + "src": "77569:3:10" + }, + "nativeSrc": "77569:18:10", + "nodeType": "YulFunctionCall", + "src": "77569:18:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "77559:6:10", + "nodeType": "YulIdentifier", + "src": "77559:6:10" + }, + "nativeSrc": "77559:29:10", + "nodeType": "YulFunctionCall", + "src": "77559:29:10" + }, + "nativeSrc": "77559:29:10", + "nodeType": "YulExpressionStatement", + "src": "77559:29:10" + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "77609:1:10", + "nodeType": "YulIdentifier", + "src": "77609:1:10" + }, + { + "kind": "number", + "nativeSrc": "77612:4:10", + "nodeType": "YulLiteral", + "src": "77612:4:10", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "77601:7:10", + "nodeType": "YulIdentifier", + "src": "77601:7:10" + }, + "nativeSrc": "77601:16:10", + "nodeType": "YulFunctionCall", + "src": "77601:16:10" + }, + "nativeSrc": "77601:16:10", + "nodeType": "YulExpressionStatement", + "src": "77601:16:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "77662:1:10", + "nodeType": "YulIdentifier", + "src": "77662:1:10" + }, + { + "kind": "number", + "nativeSrc": "77665:4:10", + "nodeType": "YulLiteral", + "src": "77665:4:10", + "type": "", + "value": "0x15" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "77658:3:10", + "nodeType": "YulIdentifier", + "src": "77658:3:10" + }, + "nativeSrc": "77658:12:10", + "nodeType": "YulFunctionCall", + "src": "77658:12:10" + }, + { + "name": "salt", + "nativeSrc": "77672:4:10", + "nodeType": "YulIdentifier", + "src": "77672:4:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "77651:6:10", + "nodeType": "YulIdentifier", + "src": "77651:6:10" + }, + "nativeSrc": "77651:26:10", + "nodeType": "YulFunctionCall", + "src": "77651:26:10" + }, + "nativeSrc": "77651:26:10", + "nodeType": "YulExpressionStatement", + "src": "77651:26:10" + }, + { + "nativeSrc": "77690:30:10", + "nodeType": "YulAssignment", + "src": "77690:30:10", + "value": { + "arguments": [ + { + "name": "m", + "nativeSrc": "77712:1:10", + "nodeType": "YulIdentifier", + "src": "77712:1:10" + }, + { + "kind": "number", + "nativeSrc": "77715:4:10", + "nodeType": "YulLiteral", + "src": "77715:4:10", + "type": "", + "value": "0x55" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "77702:9:10", + "nodeType": "YulIdentifier", + "src": "77702:9:10" + }, + "nativeSrc": "77702:18:10", + "nodeType": "YulFunctionCall", + "src": "77702:18:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "77690:8:10", + "nodeType": "YulIdentifier", + "src": "77690:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "77745:680:10", + "nodeType": "YulBlock", + "src": "77745:680:10", + "statements": [ + { + "body": { + "nativeSrc": "77796:291:10", + "nodeType": "YulBlock", + "src": "77796:291:10", + "statements": [ + { + "nativeSrc": "77818:44:10", + "nodeType": "YulAssignment", + "src": "77818:44:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "77838:5:10", + "nodeType": "YulIdentifier", + "src": "77838:5:10" + }, + { + "kind": "number", + "nativeSrc": "77845:4:10", + "nodeType": "YulLiteral", + "src": "77845:4:10", + "type": "", + "value": "0x0c" + }, + { + "kind": "number", + "nativeSrc": "77851:4:10", + "nodeType": "YulLiteral", + "src": "77851:4:10", + "type": "", + "value": "0x74" + }, + { + "name": "salt", + "nativeSrc": "77857:4:10", + "nodeType": "YulIdentifier", + "src": "77857:4:10" + } + ], + "functionName": { + "name": "create2", + "nativeSrc": "77830:7:10", + "nodeType": "YulIdentifier", + "src": "77830:7:10" + }, + "nativeSrc": "77830:32:10", + "nodeType": "YulFunctionCall", + "src": "77830:32:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "77818:8:10", + "nodeType": "YulIdentifier", + "src": "77818:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "77903:140:10", + "nodeType": "YulBlock", + "src": "77903:140:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "77936:4:10", + "nodeType": "YulLiteral", + "src": "77936:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "77942:10:10", + "nodeType": "YulLiteral", + "src": "77942:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "77929:6:10", + "nodeType": "YulIdentifier", + "src": "77929:6:10" + }, + "nativeSrc": "77929:24:10", + "nodeType": "YulFunctionCall", + "src": "77929:24:10" + }, + "nativeSrc": "77929:24:10", + "nodeType": "YulExpressionStatement", + "src": "77929:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "78010:4:10", + "nodeType": "YulLiteral", + "src": "78010:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "78016:4:10", + "nodeType": "YulLiteral", + "src": "78016:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "78003:6:10", + "nodeType": "YulIdentifier", + "src": "78003:6:10" + }, + "nativeSrc": "78003:18:10", + "nodeType": "YulFunctionCall", + "src": "78003:18:10" + }, + "nativeSrc": "78003:18:10", + "nodeType": "YulExpressionStatement", + "src": "78003:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "77893:8:10", + "nodeType": "YulIdentifier", + "src": "77893:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "77886:6:10", + "nodeType": "YulIdentifier", + "src": "77886:6:10" + }, + "nativeSrc": "77886:16:10", + "nodeType": "YulFunctionCall", + "src": "77886:16:10" + }, + "nativeSrc": "77883:160:10", + "nodeType": "YulIf", + "src": "77883:160:10" + }, + { + "nativeSrc": "78064:5:10", + "nodeType": "YulBreak", + "src": "78064:5:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "77785:8:10", + "nodeType": "YulIdentifier", + "src": "77785:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "77773:11:10", + "nodeType": "YulIdentifier", + "src": "77773:11:10" + }, + "nativeSrc": "77773:21:10", + "nodeType": "YulFunctionCall", + "src": "77773:21:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "77766:6:10", + "nodeType": "YulIdentifier", + "src": "77766:6:10" + }, + "nativeSrc": "77766:29:10", + "nodeType": "YulFunctionCall", + "src": "77766:29:10" + }, + "nativeSrc": "77763:324:10", + "nodeType": "YulIf", + "src": "77763:324:10" + }, + { + "nativeSrc": "78104:20:10", + "nodeType": "YulAssignment", + "src": "78104:20:10", + "value": { + "kind": "number", + "nativeSrc": "78123:1:10", + "nodeType": "YulLiteral", + "src": "78123:1:10", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "alreadyDeployed", + "nativeSrc": "78104:15:10", + "nodeType": "YulIdentifier", + "src": "78104:15:10" + } + ] + }, + { + "body": { + "nativeSrc": "78158:9:10", + "nodeType": "YulBlock", + "src": "78158:9:10", + "statements": [ + { + "nativeSrc": "78160:5:10", + "nodeType": "YulBreak", + "src": "78160:5:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nativeSrc": "78151:5:10", + "nodeType": "YulIdentifier", + "src": "78151:5:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "78144:6:10", + "nodeType": "YulIdentifier", + "src": "78144:6:10" + }, + "nativeSrc": "78144:13:10", + "nodeType": "YulFunctionCall", + "src": "78144:13:10" + }, + "nativeSrc": "78141:26:10", + "nodeType": "YulIf", + "src": "78141:26:10" + }, + { + "body": { + "nativeSrc": "78260:129:10", + "nodeType": "YulBlock", + "src": "78260:129:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "78289:4:10", + "nodeType": "YulLiteral", + "src": "78289:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "78295:10:10", + "nodeType": "YulLiteral", + "src": "78295:10:10", + "type": "", + "value": "0xb12d13eb" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "78282:6:10", + "nodeType": "YulIdentifier", + "src": "78282:6:10" + }, + "nativeSrc": "78282:24:10", + "nodeType": "YulFunctionCall", + "src": "78282:24:10" + }, + "nativeSrc": "78282:24:10", + "nodeType": "YulExpressionStatement", + "src": "78282:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "78360:4:10", + "nodeType": "YulLiteral", + "src": "78360:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "78366:4:10", + "nodeType": "YulLiteral", + "src": "78366:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "78353:6:10", + "nodeType": "YulIdentifier", + "src": "78353:6:10" + }, + "nativeSrc": "78353:18:10", + "nodeType": "YulFunctionCall", + "src": "78353:18:10" + }, + "nativeSrc": "78353:18:10", + "nodeType": "YulExpressionStatement", + "src": "78353:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "78199:3:10", + "nodeType": "YulIdentifier", + "src": "78199:3:10" + }, + "nativeSrc": "78199:5:10", + "nodeType": "YulFunctionCall", + "src": "78199:5:10" + }, + { + "name": "instance", + "nativeSrc": "78206:8:10", + "nodeType": "YulIdentifier", + "src": "78206:8:10" + }, + { + "name": "value", + "nativeSrc": "78216:5:10", + "nodeType": "YulIdentifier", + "src": "78216:5:10" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "78223:8:10", + "nodeType": "YulIdentifier", + "src": "78223:8:10" + }, + "nativeSrc": "78223:10:10", + "nodeType": "YulFunctionCall", + "src": "78223:10:10" + }, + { + "kind": "number", + "nativeSrc": "78235:4:10", + "nodeType": "YulLiteral", + "src": "78235:4:10", + "type": "", + "value": "0x00" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "78241:8:10", + "nodeType": "YulIdentifier", + "src": "78241:8:10" + }, + "nativeSrc": "78241:10:10", + "nodeType": "YulFunctionCall", + "src": "78241:10:10" + }, + { + "kind": "number", + "nativeSrc": "78253:4:10", + "nodeType": "YulLiteral", + "src": "78253:4:10", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "call", + "nativeSrc": "78194:4:10", + "nodeType": "YulIdentifier", + "src": "78194:4:10" + }, + "nativeSrc": "78194:64:10", + "nodeType": "YulFunctionCall", + "src": "78194:64:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "78187:6:10", + "nodeType": "YulIdentifier", + "src": "78187:6:10" + }, + "nativeSrc": "78187:72:10", + "nodeType": "YulFunctionCall", + "src": "78187:72:10" + }, + "nativeSrc": "78184:205:10", + "nodeType": "YulIf", + "src": "78184:205:10" + }, + { + "nativeSrc": "78406:5:10", + "nodeType": "YulBreak", + "src": "78406:5:10" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "77740:1:10", + "nodeType": "YulLiteral", + "src": "77740:1:10", + "type": "", + "value": "1" + }, + "nativeSrc": "77733:692:10", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "77742:2:10", + "nodeType": "YulBlock", + "src": "77742:2:10", + "statements": [] + }, + "pre": { + "nativeSrc": "77737:2:10", + "nodeType": "YulBlock", + "src": "77737:2:10", + "statements": [] + }, + "src": "77733:692:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "78445:4:10", + "nodeType": "YulLiteral", + "src": "78445:4:10", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "78451:1:10", + "nodeType": "YulIdentifier", + "src": "78451:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "78438:6:10", + "nodeType": "YulIdentifier", + "src": "78438:6:10" + }, + "nativeSrc": "78438:15:10", + "nodeType": "YulFunctionCall", + "src": "78438:15:10" + }, + "nativeSrc": "78438:15:10", + "nodeType": "YulExpressionStatement", + "src": "78438:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "78509:4:10", + "nodeType": "YulLiteral", + "src": "78509:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "78515:1:10", + "nodeType": "YulLiteral", + "src": "78515:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "78502:6:10", + "nodeType": "YulIdentifier", + "src": "78502:6:10" + }, + "nativeSrc": "78502:15:10", + "nodeType": "YulFunctionCall", + "src": "78502:15:10" + }, + "nativeSrc": "78502:15:10", + "nodeType": "YulExpressionStatement", + "src": "78502:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3980, + "isOffset": false, + "isSlot": false, + "src": "78104:15:10", + "valueSize": 1 + }, + { + "declaration": 3975, + "isOffset": false, + "isSlot": false, + "src": "77420:14:10", + "valueSize": 1 + }, + { + "declaration": 3982, + "isOffset": false, + "isSlot": false, + "src": "77690:8:10", + "valueSize": 1 + }, + { + "declaration": 3982, + "isOffset": false, + "isSlot": false, + "src": "77785:8:10", + "valueSize": 1 + }, + { + "declaration": 3982, + "isOffset": false, + "isSlot": false, + "src": "77818:8:10", + "valueSize": 1 + }, + { + "declaration": 3982, + "isOffset": false, + "isSlot": false, + "src": "77893:8:10", + "valueSize": 1 + }, + { + "declaration": 3982, + "isOffset": false, + "isSlot": false, + "src": "78206:8:10", + "valueSize": 1 + }, + { + "declaration": 3977, + "isOffset": false, + "isSlot": false, + "src": "77672:4:10", + "valueSize": 1 + }, + { + "declaration": 3977, + "isOffset": false, + "isSlot": false, + "src": "77857:4:10", + "valueSize": 1 + }, + { + "declaration": 3973, + "isOffset": false, + "isSlot": false, + "src": "77838:5:10", + "valueSize": 1 + }, + { + "declaration": 3973, + "isOffset": false, + "isSlot": false, + "src": "78151:5:10", + "valueSize": 1 + }, + { + "declaration": 3973, + "isOffset": false, + "isSlot": false, + "src": "78216:5:10", + "valueSize": 1 + } + ], + "id": 3984, + "nodeType": "InlineAssembly", + "src": "77005:1548:10" + } + ] + }, + "documentation": { + "id": 3971, + "nodeType": "StructuredDocumentation", + "src": "76507:272:10", + "text": "@dev Creates a deterministic ERC1967I proxy with `implementation` and `salt`.\n Deposits `value` ETH during deployment.\n Note: This method is intended for use in ERC4337 factories,\n which are expected to NOT revert if the proxy is already deployed." + }, + "id": 3986, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createDeterministicERC1967I", + "nameLocation": "76793:27:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3978, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3973, + "mutability": "mutable", + "name": "value", + "nameLocation": "76829:5:10", + "nodeType": "VariableDeclaration", + "scope": 3986, + "src": "76821:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3972, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "76821:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3975, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "76844:14:10", + "nodeType": "VariableDeclaration", + "scope": 3986, + "src": "76836:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3974, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "76836:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3977, + "mutability": "mutable", + "name": "salt", + "nameLocation": "76868:4:10", + "nodeType": "VariableDeclaration", + "scope": 3986, + "src": "76860:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3976, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "76860:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "76820:53:10" + }, + "returnParameters": { + "id": 3983, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3980, + "mutability": "mutable", + "name": "alreadyDeployed", + "nameLocation": "76913:15:10", + "nodeType": "VariableDeclaration", + "scope": 3986, + "src": "76908:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3979, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "76908:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3982, + "mutability": "mutable", + "name": "instance", + "nameLocation": "76938:8:10", + "nodeType": "VariableDeclaration", + "scope": 3986, + "src": "76930:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3981, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "76930:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "76907:40:10" + }, + "scope": 5104, + "src": "76784:1775:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3995, + "nodeType": "Block", + "src": "78742:641:10", + "statements": [ + { + "AST": { + "nativeSrc": "78804:573:10", + "nodeType": "YulBlock", + "src": "78804:573:10", + "statements": [ + { + "nativeSrc": "78818:16:10", + "nodeType": "YulAssignment", + "src": "78818:16:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "78829:4:10", + "nodeType": "YulLiteral", + "src": "78829:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "78823:5:10", + "nodeType": "YulIdentifier", + "src": "78823:5:10" + }, + "nativeSrc": "78823:11:10", + "nodeType": "YulFunctionCall", + "src": "78823:11:10" + }, + "variableNames": [ + { + "name": "c", + "nativeSrc": "78818:1:10", + "nodeType": "YulIdentifier", + "src": "78818:1:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "78858:1:10", + "nodeType": "YulIdentifier", + "src": "78858:1:10" + }, + { + "kind": "number", + "nativeSrc": "78861:4:10", + "nodeType": "YulLiteral", + "src": "78861:4:10", + "type": "", + "value": "0x74" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "78854:3:10", + "nodeType": "YulIdentifier", + "src": "78854:3:10" + }, + "nativeSrc": "78854:12:10", + "nodeType": "YulFunctionCall", + "src": "78854:12:10" + }, + { + "kind": "number", + "nativeSrc": "78868:66:10", + "nodeType": "YulLiteral", + "src": "78868:66:10", + "type": "", + "value": "0x3d6000803e603e573d6000fd5b3d6000f35b6020600f3d393d51543d52593df3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "78847:6:10", + "nodeType": "YulIdentifier", + "src": "78847:6:10" + }, + "nativeSrc": "78847:88:10", + "nodeType": "YulFunctionCall", + "src": "78847:88:10" + }, + "nativeSrc": "78847:88:10", + "nodeType": "YulExpressionStatement", + "src": "78847:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "78959:1:10", + "nodeType": "YulIdentifier", + "src": "78959:1:10" + }, + { + "kind": "number", + "nativeSrc": "78962:4:10", + "nodeType": "YulLiteral", + "src": "78962:4:10", + "type": "", + "value": "0x54" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "78955:3:10", + "nodeType": "YulIdentifier", + "src": "78955:3:10" + }, + "nativeSrc": "78955:12:10", + "nodeType": "YulFunctionCall", + "src": "78955:12:10" + }, + { + "kind": "number", + "nativeSrc": "78969:66:10", + "nodeType": "YulLiteral", + "src": "78969:66:10", + "type": "", + "value": "0xa13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af4" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "78948:6:10", + "nodeType": "YulIdentifier", + "src": "78948:6:10" + }, + "nativeSrc": "78948:88:10", + "nodeType": "YulFunctionCall", + "src": "78948:88:10" + }, + "nativeSrc": "78948:88:10", + "nodeType": "YulExpressionStatement", + "src": "78948:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "79060:1:10", + "nodeType": "YulIdentifier", + "src": "79060:1:10" + }, + { + "kind": "number", + "nativeSrc": "79063:4:10", + "nodeType": "YulLiteral", + "src": "79063:4:10", + "type": "", + "value": "0x34" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "79056:3:10", + "nodeType": "YulIdentifier", + "src": "79056:3:10" + }, + "nativeSrc": "79056:12:10", + "nodeType": "YulFunctionCall", + "src": "79056:12:10" + }, + { + "kind": "number", + "nativeSrc": "79070:48:10", + "nodeType": "YulLiteral", + "src": "79070:48:10", + "type": "", + "value": "0x600f5155f3365814604357363d3d373d3d363d7f360894" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "79049:6:10", + "nodeType": "YulIdentifier", + "src": "79049:6:10" + }, + "nativeSrc": "79049:70:10", + "nodeType": "YulFunctionCall", + "src": "79049:70:10" + }, + "nativeSrc": "79049:70:10", + "nodeType": "YulExpressionStatement", + "src": "79049:70:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "79143:1:10", + "nodeType": "YulIdentifier", + "src": "79143:1:10" + }, + { + "kind": "number", + "nativeSrc": "79146:4:10", + "nodeType": "YulLiteral", + "src": "79146:4:10", + "type": "", + "value": "0x1d" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "79139:3:10", + "nodeType": "YulIdentifier", + "src": "79139:3:10" + }, + "nativeSrc": "79139:12:10", + "nodeType": "YulFunctionCall", + "src": "79139:12:10" + }, + { + "name": "implementation", + "nativeSrc": "79153:14:10", + "nodeType": "YulIdentifier", + "src": "79153:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "79132:6:10", + "nodeType": "YulIdentifier", + "src": "79132:6:10" + }, + "nativeSrc": "79132:36:10", + "nodeType": "YulFunctionCall", + "src": "79132:36:10" + }, + "nativeSrc": "79132:36:10", + "nodeType": "YulExpressionStatement", + "src": "79132:36:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "79192:1:10", + "nodeType": "YulIdentifier", + "src": "79192:1:10" + }, + { + "kind": "number", + "nativeSrc": "79195:4:10", + "nodeType": "YulLiteral", + "src": "79195:4:10", + "type": "", + "value": "0x09" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "79188:3:10", + "nodeType": "YulIdentifier", + "src": "79188:3:10" + }, + "nativeSrc": "79188:12:10", + "nodeType": "YulFunctionCall", + "src": "79188:12:10" + }, + { + "kind": "number", + "nativeSrc": "79202:20:10", + "nodeType": "YulLiteral", + "src": "79202:20:10", + "type": "", + "value": "0x60523d8160223d3973" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "79181:6:10", + "nodeType": "YulIdentifier", + "src": "79181:6:10" + }, + "nativeSrc": "79181:42:10", + "nodeType": "YulFunctionCall", + "src": "79181:42:10" + }, + "nativeSrc": "79181:42:10", + "nodeType": "YulExpressionStatement", + "src": "79181:42:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "79247:1:10", + "nodeType": "YulIdentifier", + "src": "79247:1:10" + }, + { + "kind": "number", + "nativeSrc": "79250:4:10", + "nodeType": "YulLiteral", + "src": "79250:4:10", + "type": "", + "value": "0x94" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "79243:3:10", + "nodeType": "YulIdentifier", + "src": "79243:3:10" + }, + "nativeSrc": "79243:12:10", + "nodeType": "YulFunctionCall", + "src": "79243:12:10" + }, + { + "kind": "number", + "nativeSrc": "79257:1:10", + "nodeType": "YulLiteral", + "src": "79257:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "79236:6:10", + "nodeType": "YulIdentifier", + "src": "79236:6:10" + }, + "nativeSrc": "79236:23:10", + "nodeType": "YulFunctionCall", + "src": "79236:23:10" + }, + "nativeSrc": "79236:23:10", + "nodeType": "YulExpressionStatement", + "src": "79236:23:10" + }, + { + "expression": { + "arguments": [ + { + "name": "c", + "nativeSrc": "79279:1:10", + "nodeType": "YulIdentifier", + "src": "79279:1:10" + }, + { + "kind": "number", + "nativeSrc": "79282:4:10", + "nodeType": "YulLiteral", + "src": "79282:4:10", + "type": "", + "value": "0x74" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "79272:6:10", + "nodeType": "YulIdentifier", + "src": "79272:6:10" + }, + "nativeSrc": "79272:15:10", + "nodeType": "YulFunctionCall", + "src": "79272:15:10" + }, + "nativeSrc": "79272:15:10", + "nodeType": "YulExpressionStatement", + "src": "79272:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "79328:4:10", + "nodeType": "YulLiteral", + "src": "79328:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "c", + "nativeSrc": "79338:1:10", + "nodeType": "YulIdentifier", + "src": "79338:1:10" + }, + { + "kind": "number", + "nativeSrc": "79341:4:10", + "nodeType": "YulLiteral", + "src": "79341:4:10", + "type": "", + "value": "0xa0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "79334:3:10", + "nodeType": "YulIdentifier", + "src": "79334:3:10" + }, + "nativeSrc": "79334:12:10", + "nodeType": "YulFunctionCall", + "src": "79334:12:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "79321:6:10", + "nodeType": "YulIdentifier", + "src": "79321:6:10" + }, + "nativeSrc": "79321:26:10", + "nodeType": "YulFunctionCall", + "src": "79321:26:10" + }, + "nativeSrc": "79321:26:10", + "nodeType": "YulExpressionStatement", + "src": "79321:26:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3992, + "isOffset": false, + "isSlot": false, + "src": "78818:1:10", + "valueSize": 1 + }, + { + "declaration": 3992, + "isOffset": false, + "isSlot": false, + "src": "78858:1:10", + "valueSize": 1 + }, + { + "declaration": 3992, + "isOffset": false, + "isSlot": false, + "src": "78959:1:10", + "valueSize": 1 + }, + { + "declaration": 3992, + "isOffset": false, + "isSlot": false, + "src": "79060:1:10", + "valueSize": 1 + }, + { + "declaration": 3992, + "isOffset": false, + "isSlot": false, + "src": "79143:1:10", + "valueSize": 1 + }, + { + "declaration": 3992, + "isOffset": false, + "isSlot": false, + "src": "79192:1:10", + "valueSize": 1 + }, + { + "declaration": 3992, + "isOffset": false, + "isSlot": false, + "src": "79247:1:10", + "valueSize": 1 + }, + { + "declaration": 3992, + "isOffset": false, + "isSlot": false, + "src": "79279:1:10", + "valueSize": 1 + }, + { + "declaration": 3992, + "isOffset": false, + "isSlot": false, + "src": "79338:1:10", + "valueSize": 1 + }, + { + "declaration": 3989, + "isOffset": false, + "isSlot": false, + "src": "79153:14:10", + "valueSize": 1 + } + ], + "id": 3994, + "nodeType": "InlineAssembly", + "src": "78795:582:10" + } + ] + }, + "documentation": { + "id": 3987, + "nodeType": "StructuredDocumentation", + "src": "78565:83:10", + "text": "@dev Returns the initialization code of the ERC1967I proxy of `implementation`." + }, + "id": 3996, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeERC1967I", + "nameLocation": "78662:16:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3990, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3989, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "78687:14:10", + "nodeType": "VariableDeclaration", + "scope": 3996, + "src": "78679:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3988, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "78679:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "78678:24:10" + }, + "returnParameters": { + "id": 3993, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3992, + "mutability": "mutable", + "name": "c", + "nameLocation": "78739:1:10", + "nodeType": "VariableDeclaration", + "scope": 3996, + "src": "78726:14:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3991, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "78726:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "78725:16:10" + }, + "scope": 5104, + "src": "78653:730:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4005, + "nodeType": "Block", + "src": "79573:662:10", + "statements": [ + { + "AST": { + "nativeSrc": "79635:594:10", + "nodeType": "YulBlock", + "src": "79635:594:10", + "statements": [ + { + "nativeSrc": "79649:20:10", + "nodeType": "YulVariableDeclaration", + "src": "79649:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "79664:4:10", + "nodeType": "YulLiteral", + "src": "79664:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "79658:5:10", + "nodeType": "YulIdentifier", + "src": "79658:5:10" + }, + "nativeSrc": "79658:11:10", + "nodeType": "YulFunctionCall", + "src": "79658:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "79653:1:10", + "nodeType": "YulTypedName", + "src": "79653:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "79723:4:10", + "nodeType": "YulLiteral", + "src": "79723:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "79729:66:10", + "nodeType": "YulLiteral", + "src": "79729:66:10", + "type": "", + "value": "0x3d6000803e603e573d6000fd5b3d6000f35b6020600f3d393d51543d52593df3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "79716:6:10", + "nodeType": "YulIdentifier", + "src": "79716:6:10" + }, + "nativeSrc": "79716:80:10", + "nodeType": "YulFunctionCall", + "src": "79716:80:10" + }, + "nativeSrc": "79716:80:10", + "nodeType": "YulExpressionStatement", + "src": "79716:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "79816:4:10", + "nodeType": "YulLiteral", + "src": "79816:4:10", + "type": "", + "value": "0x40" + }, + { + "kind": "number", + "nativeSrc": "79822:66:10", + "nodeType": "YulLiteral", + "src": "79822:66:10", + "type": "", + "value": "0xa13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af4" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "79809:6:10", + "nodeType": "YulIdentifier", + "src": "79809:6:10" + }, + "nativeSrc": "79809:80:10", + "nodeType": "YulFunctionCall", + "src": "79809:80:10" + }, + "nativeSrc": "79809:80:10", + "nodeType": "YulExpressionStatement", + "src": "79809:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "79909:4:10", + "nodeType": "YulLiteral", + "src": "79909:4:10", + "type": "", + "value": "0x20" + }, + { + "kind": "number", + "nativeSrc": "79915:48:10", + "nodeType": "YulLiteral", + "src": "79915:48:10", + "type": "", + "value": "0x600f5155f3365814604357363d3d373d3d363d7f360894" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "79902:6:10", + "nodeType": "YulIdentifier", + "src": "79902:6:10" + }, + "nativeSrc": "79902:62:10", + "nodeType": "YulFunctionCall", + "src": "79902:62:10" + }, + "nativeSrc": "79902:62:10", + "nodeType": "YulExpressionStatement", + "src": "79902:62:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "79984:4:10", + "nodeType": "YulLiteral", + "src": "79984:4:10", + "type": "", + "value": "0x09" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "79997:3:10", + "nodeType": "YulLiteral", + "src": "79997:3:10", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "80002:20:10", + "nodeType": "YulLiteral", + "src": "80002:20:10", + "type": "", + "value": "0x60523d8160223d3973" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "79993:3:10", + "nodeType": "YulIdentifier", + "src": "79993:3:10" + }, + "nativeSrc": "79993:30:10", + "nodeType": "YulFunctionCall", + "src": "79993:30:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "80029:2:10", + "nodeType": "YulLiteral", + "src": "80029:2:10", + "type": "", + "value": "96" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "80037:2:10", + "nodeType": "YulLiteral", + "src": "80037:2:10", + "type": "", + "value": "96" + }, + { + "name": "implementation", + "nativeSrc": "80041:14:10", + "nodeType": "YulIdentifier", + "src": "80041:14:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "80033:3:10", + "nodeType": "YulIdentifier", + "src": "80033:3:10" + }, + "nativeSrc": "80033:23:10", + "nodeType": "YulFunctionCall", + "src": "80033:23:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "80025:3:10", + "nodeType": "YulIdentifier", + "src": "80025:3:10" + }, + "nativeSrc": "80025:32:10", + "nodeType": "YulFunctionCall", + "src": "80025:32:10" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "79990:2:10", + "nodeType": "YulIdentifier", + "src": "79990:2:10" + }, + "nativeSrc": "79990:68:10", + "nodeType": "YulFunctionCall", + "src": "79990:68:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "79977:6:10", + "nodeType": "YulIdentifier", + "src": "79977:6:10" + }, + "nativeSrc": "79977:82:10", + "nodeType": "YulFunctionCall", + "src": "79977:82:10" + }, + "nativeSrc": "79977:82:10", + "nodeType": "YulExpressionStatement", + "src": "79977:82:10" + }, + { + "nativeSrc": "80072:29:10", + "nodeType": "YulAssignment", + "src": "80072:29:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "80090:4:10", + "nodeType": "YulLiteral", + "src": "80090:4:10", + "type": "", + "value": "0x0c" + }, + { + "kind": "number", + "nativeSrc": "80096:4:10", + "nodeType": "YulLiteral", + "src": "80096:4:10", + "type": "", + "value": "0x74" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "80080:9:10", + "nodeType": "YulIdentifier", + "src": "80080:9:10" + }, + "nativeSrc": "80080:21:10", + "nodeType": "YulFunctionCall", + "src": "80080:21:10" + }, + "variableNames": [ + { + "name": "hash", + "nativeSrc": "80072:4:10", + "nodeType": "YulIdentifier", + "src": "80072:4:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "80121:4:10", + "nodeType": "YulLiteral", + "src": "80121:4:10", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "80127:1:10", + "nodeType": "YulIdentifier", + "src": "80127:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "80114:6:10", + "nodeType": "YulIdentifier", + "src": "80114:6:10" + }, + "nativeSrc": "80114:15:10", + "nodeType": "YulFunctionCall", + "src": "80114:15:10" + }, + "nativeSrc": "80114:15:10", + "nodeType": "YulExpressionStatement", + "src": "80114:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "80185:4:10", + "nodeType": "YulLiteral", + "src": "80185:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "80191:1:10", + "nodeType": "YulLiteral", + "src": "80191:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "80178:6:10", + "nodeType": "YulIdentifier", + "src": "80178:6:10" + }, + "nativeSrc": "80178:15:10", + "nodeType": "YulFunctionCall", + "src": "80178:15:10" + }, + "nativeSrc": "80178:15:10", + "nodeType": "YulExpressionStatement", + "src": "80178:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4002, + "isOffset": false, + "isSlot": false, + "src": "80072:4:10", + "valueSize": 1 + }, + { + "declaration": 3999, + "isOffset": false, + "isSlot": false, + "src": "80041:14:10", + "valueSize": 1 + } + ], + "id": 4004, + "nodeType": "InlineAssembly", + "src": "79626:603:10" + } + ] + }, + "documentation": { + "id": 3997, + "nodeType": "StructuredDocumentation", + "src": "79389:88:10", + "text": "@dev Returns the initialization code hash of the ERC1967I proxy of `implementation`." + }, + "id": 4006, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeHashERC1967I", + "nameLocation": "79491:20:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4000, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3999, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "79520:14:10", + "nodeType": "VariableDeclaration", + "scope": 4006, + "src": "79512:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3998, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "79512:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "79511:24:10" + }, + "returnParameters": { + "id": 4003, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4002, + "mutability": "mutable", + "name": "hash", + "nameLocation": "79567:4:10", + "nodeType": "VariableDeclaration", + "scope": 4006, + "src": "79559:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4001, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "79559:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "79558:14:10" + }, + "scope": 5104, + "src": "79482:753:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4032, + "nodeType": "Block", + "src": "80610:139:10", + "statements": [ + { + "assignments": [ + 4019 + ], + "declarations": [ + { + "constant": false, + "id": 4019, + "mutability": "mutable", + "name": "hash", + "nameLocation": "80628:4:10", + "nodeType": "VariableDeclaration", + "scope": 4032, + "src": "80620:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4018, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "80620:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 4023, + "initialValue": { + "arguments": [ + { + "id": 4021, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4009, + "src": "80656:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4020, + "name": "initCodeHashERC1967I", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4006, + 4166 + ], + "referencedDeclaration": 4006, + "src": "80635:20:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_bytes32_$", + "typeString": "function (address) pure returns (bytes32)" + } + }, + "id": 4022, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "80635:36:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "80620:51:10" + }, + { + "expression": { + "id": 4030, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4024, + "name": "predicted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4016, + "src": "80681:9:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 4026, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4019, + "src": "80721:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 4027, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4011, + "src": "80727:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 4028, + "name": "deployer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4013, + "src": "80733:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4025, + "name": "predictDeterministicAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3237, + 3510, + 5081 + ], + "referencedDeclaration": 5081, + "src": "80693:27:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_address_$", + "typeString": "function (bytes32,bytes32,address) pure returns (address)" + } + }, + "id": 4029, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "80693:49:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "80681:61:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4031, + "nodeType": "ExpressionStatement", + "src": "80681:61:10" + } + ] + }, + "documentation": { + "id": 4007, + "nodeType": "StructuredDocumentation", + "src": "80241:191:10", + "text": "@dev Returns the address of the ERC1967I proxy of `implementation`, with `salt` by `deployer`.\n Note: The returned result has dirty upper 96 bits. Please clean if used in assembly." + }, + "id": 4033, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "predictDeterministicAddressERC1967I", + "nameLocation": "80446:35:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4014, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4009, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "80499:14:10", + "nodeType": "VariableDeclaration", + "scope": 4033, + "src": "80491:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4008, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "80491:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4011, + "mutability": "mutable", + "name": "salt", + "nameLocation": "80531:4:10", + "nodeType": "VariableDeclaration", + "scope": 4033, + "src": "80523:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4010, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "80523:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4013, + "mutability": "mutable", + "name": "deployer", + "nameLocation": "80553:8:10", + "nodeType": "VariableDeclaration", + "scope": 4033, + "src": "80545:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4012, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "80545:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "80481:86:10" + }, + "returnParameters": { + "id": 4017, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4016, + "mutability": "mutable", + "name": "predicted", + "nameLocation": "80599:9:10", + "nodeType": "VariableDeclaration", + "scope": 4033, + "src": "80591:17:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4015, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "80591:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "80590:19:10" + }, + "scope": 5104, + "src": "80437:312:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4049, + "nodeType": "Block", + "src": "81212:63:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "30", + "id": 4044, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "81244:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 4045, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4036, + "src": "81247:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4046, + "name": "args", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4038, + "src": "81263:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 4043, + "name": "deployERC1967I", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3906, + 3918, + 4050, + 4064 + ], + "referencedDeclaration": 4064, + "src": "81229:14:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$", + "typeString": "function (uint256,address,bytes memory) returns (address)" + } + }, + "id": 4047, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "81229:39:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 4042, + "id": 4048, + "nodeType": "Return", + "src": "81222:46:10" + } + ] + }, + "documentation": { + "id": 4034, + "nodeType": "StructuredDocumentation", + "src": "81038:75:10", + "text": "@dev Deploys a minimal ERC1967I proxy with `implementation` and `args`." + }, + "id": 4050, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployERC1967I", + "nameLocation": "81127:14:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4039, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4036, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "81150:14:10", + "nodeType": "VariableDeclaration", + "scope": 4050, + "src": "81142:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4035, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "81142:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4038, + "mutability": "mutable", + "name": "args", + "nameLocation": "81179:4:10", + "nodeType": "VariableDeclaration", + "scope": 4050, + "src": "81166:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4037, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "81166:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "81141:43:10" + }, + "returnParameters": { + "id": 4042, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4041, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4050, + "src": "81203:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4040, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "81203:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "81202:9:10" + }, + "scope": 5104, + "src": "81118:157:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4063, + "nodeType": "Block", + "src": "81547:943:10", + "statements": [ + { + "AST": { + "nativeSrc": "81609:875:10", + "nodeType": "YulBlock", + "src": "81609:875:10", + "statements": [ + { + "nativeSrc": "81623:20:10", + "nodeType": "YulVariableDeclaration", + "src": "81623:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "81638:4:10", + "nodeType": "YulLiteral", + "src": "81638:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "81632:5:10", + "nodeType": "YulIdentifier", + "src": "81632:5:10" + }, + "nativeSrc": "81632:11:10", + "nodeType": "YulFunctionCall", + "src": "81632:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "81627:1:10", + "nodeType": "YulTypedName", + "src": "81627:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "81656:20:10", + "nodeType": "YulVariableDeclaration", + "src": "81656:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "81671:4:10", + "nodeType": "YulIdentifier", + "src": "81671:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "81665:5:10", + "nodeType": "YulIdentifier", + "src": "81665:5:10" + }, + "nativeSrc": "81665:11:10", + "nodeType": "YulFunctionCall", + "src": "81665:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "81660:1:10", + "nodeType": "YulTypedName", + "src": "81660:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "81704:3:10", + "nodeType": "YulIdentifier", + "src": "81704:3:10" + }, + "nativeSrc": "81704:5:10", + "nodeType": "YulFunctionCall", + "src": "81704:5:10" + }, + { + "kind": "number", + "nativeSrc": "81711:1:10", + "nodeType": "YulLiteral", + "src": "81711:1:10", + "type": "", + "value": "4" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "81718:4:10", + "nodeType": "YulIdentifier", + "src": "81718:4:10" + }, + { + "kind": "number", + "nativeSrc": "81724:4:10", + "nodeType": "YulLiteral", + "src": "81724:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "81714:3:10", + "nodeType": "YulIdentifier", + "src": "81714:3:10" + }, + "nativeSrc": "81714:15:10", + "nodeType": "YulFunctionCall", + "src": "81714:15:10" + }, + { + "name": "n", + "nativeSrc": "81731:1:10", + "nodeType": "YulIdentifier", + "src": "81731:1:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "81738:1:10", + "nodeType": "YulIdentifier", + "src": "81738:1:10" + }, + { + "kind": "number", + "nativeSrc": "81741:4:10", + "nodeType": "YulLiteral", + "src": "81741:4:10", + "type": "", + "value": "0x8b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "81734:3:10", + "nodeType": "YulIdentifier", + "src": "81734:3:10" + }, + "nativeSrc": "81734:12:10", + "nodeType": "YulFunctionCall", + "src": "81734:12:10" + }, + { + "name": "n", + "nativeSrc": "81748:1:10", + "nodeType": "YulIdentifier", + "src": "81748:1:10" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "81693:10:10", + "nodeType": "YulIdentifier", + "src": "81693:10:10" + }, + "nativeSrc": "81693:57:10", + "nodeType": "YulFunctionCall", + "src": "81693:57:10" + } + ], + "functionName": { + "name": "pop", + "nativeSrc": "81689:3:10", + "nodeType": "YulIdentifier", + "src": "81689:3:10" + }, + "nativeSrc": "81689:62:10", + "nodeType": "YulFunctionCall", + "src": "81689:62:10" + }, + "nativeSrc": "81689:62:10", + "nodeType": "YulExpressionStatement", + "src": "81689:62:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "81776:1:10", + "nodeType": "YulIdentifier", + "src": "81776:1:10" + }, + { + "kind": "number", + "nativeSrc": "81779:4:10", + "nodeType": "YulLiteral", + "src": "81779:4:10", + "type": "", + "value": "0x6b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "81772:3:10", + "nodeType": "YulIdentifier", + "src": "81772:3:10" + }, + "nativeSrc": "81772:12:10", + "nodeType": "YulFunctionCall", + "src": "81772:12:10" + }, + { + "kind": "number", + "nativeSrc": "81786:66:10", + "nodeType": "YulLiteral", + "src": "81786:66:10", + "type": "", + "value": "0x3d6000803e603e573d6000fd5b3d6000f35b6020600f3d393d51543d52593df3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "81765:6:10", + "nodeType": "YulIdentifier", + "src": "81765:6:10" + }, + "nativeSrc": "81765:88:10", + "nodeType": "YulFunctionCall", + "src": "81765:88:10" + }, + "nativeSrc": "81765:88:10", + "nodeType": "YulExpressionStatement", + "src": "81765:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "81877:1:10", + "nodeType": "YulIdentifier", + "src": "81877:1:10" + }, + { + "kind": "number", + "nativeSrc": "81880:4:10", + "nodeType": "YulLiteral", + "src": "81880:4:10", + "type": "", + "value": "0x4b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "81873:3:10", + "nodeType": "YulIdentifier", + "src": "81873:3:10" + }, + "nativeSrc": "81873:12:10", + "nodeType": "YulFunctionCall", + "src": "81873:12:10" + }, + { + "kind": "number", + "nativeSrc": "81887:66:10", + "nodeType": "YulLiteral", + "src": "81887:66:10", + "type": "", + "value": "0xa13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af4" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "81866:6:10", + "nodeType": "YulIdentifier", + "src": "81866:6:10" + }, + "nativeSrc": "81866:88:10", + "nodeType": "YulFunctionCall", + "src": "81866:88:10" + }, + "nativeSrc": "81866:88:10", + "nodeType": "YulExpressionStatement", + "src": "81866:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "81978:1:10", + "nodeType": "YulIdentifier", + "src": "81978:1:10" + }, + { + "kind": "number", + "nativeSrc": "81981:4:10", + "nodeType": "YulLiteral", + "src": "81981:4:10", + "type": "", + "value": "0x2b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "81974:3:10", + "nodeType": "YulIdentifier", + "src": "81974:3:10" + }, + "nativeSrc": "81974:12:10", + "nodeType": "YulFunctionCall", + "src": "81974:12:10" + }, + { + "kind": "number", + "nativeSrc": "81988:48:10", + "nodeType": "YulLiteral", + "src": "81988:48:10", + "type": "", + "value": "0x600f5155f3365814604357363d3d373d3d363d7f360894" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "81967:6:10", + "nodeType": "YulIdentifier", + "src": "81967:6:10" + }, + "nativeSrc": "81967:70:10", + "nodeType": "YulFunctionCall", + "src": "81967:70:10" + }, + "nativeSrc": "81967:70:10", + "nodeType": "YulExpressionStatement", + "src": "81967:70:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "82061:1:10", + "nodeType": "YulIdentifier", + "src": "82061:1:10" + }, + { + "kind": "number", + "nativeSrc": "82064:4:10", + "nodeType": "YulLiteral", + "src": "82064:4:10", + "type": "", + "value": "0x14" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "82057:3:10", + "nodeType": "YulIdentifier", + "src": "82057:3:10" + }, + "nativeSrc": "82057:12:10", + "nodeType": "YulFunctionCall", + "src": "82057:12:10" + }, + { + "name": "implementation", + "nativeSrc": "82071:14:10", + "nodeType": "YulIdentifier", + "src": "82071:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "82050:6:10", + "nodeType": "YulIdentifier", + "src": "82050:6:10" + }, + "nativeSrc": "82050:36:10", + "nodeType": "YulFunctionCall", + "src": "82050:36:10" + }, + "nativeSrc": "82050:36:10", + "nodeType": "YulExpressionStatement", + "src": "82050:36:10" + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "82106:1:10", + "nodeType": "YulIdentifier", + "src": "82106:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "82113:24:10", + "nodeType": "YulLiteral", + "src": "82113:24:10", + "type": "", + "value": "0xfe6100523d8160233d3973" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "82143:2:10", + "nodeType": "YulLiteral", + "src": "82143:2:10", + "type": "", + "value": "56" + }, + { + "name": "n", + "nativeSrc": "82147:1:10", + "nodeType": "YulIdentifier", + "src": "82147:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "82139:3:10", + "nodeType": "YulIdentifier", + "src": "82139:3:10" + }, + "nativeSrc": "82139:10:10", + "nodeType": "YulFunctionCall", + "src": "82139:10:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "82109:3:10", + "nodeType": "YulIdentifier", + "src": "82109:3:10" + }, + "nativeSrc": "82109:41:10", + "nodeType": "YulFunctionCall", + "src": "82109:41:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "82099:6:10", + "nodeType": "YulIdentifier", + "src": "82099:6:10" + }, + "nativeSrc": "82099:52:10", + "nodeType": "YulFunctionCall", + "src": "82099:52:10" + }, + "nativeSrc": "82099:52:10", + "nodeType": "YulExpressionStatement", + "src": "82099:52:10" + }, + { + "nativeSrc": "82252:73:10", + "nodeType": "YulAssignment", + "src": "82252:73:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "82271:5:10", + "nodeType": "YulIdentifier", + "src": "82271:5:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "82282:1:10", + "nodeType": "YulIdentifier", + "src": "82282:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "82289:4:10", + "nodeType": "YulLiteral", + "src": "82289:4:10", + "type": "", + "value": "0x15" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "82298:1:10", + "nodeType": "YulIdentifier", + "src": "82298:1:10" + }, + { + "kind": "number", + "nativeSrc": "82301:6:10", + "nodeType": "YulLiteral", + "src": "82301:6:10", + "type": "", + "value": "0xffae" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "82295:2:10", + "nodeType": "YulIdentifier", + "src": "82295:2:10" + }, + "nativeSrc": "82295:13:10", + "nodeType": "YulFunctionCall", + "src": "82295:13:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "82285:3:10", + "nodeType": "YulIdentifier", + "src": "82285:3:10" + }, + "nativeSrc": "82285:24:10", + "nodeType": "YulFunctionCall", + "src": "82285:24:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "82278:3:10", + "nodeType": "YulIdentifier", + "src": "82278:3:10" + }, + "nativeSrc": "82278:32:10", + "nodeType": "YulFunctionCall", + "src": "82278:32:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "82316:4:10", + "nodeType": "YulLiteral", + "src": "82316:4:10", + "type": "", + "value": "0x75" + }, + { + "name": "n", + "nativeSrc": "82322:1:10", + "nodeType": "YulIdentifier", + "src": "82322:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "82312:3:10", + "nodeType": "YulIdentifier", + "src": "82312:3:10" + }, + "nativeSrc": "82312:12:10", + "nodeType": "YulFunctionCall", + "src": "82312:12:10" + } + ], + "functionName": { + "name": "create", + "nativeSrc": "82264:6:10", + "nodeType": "YulIdentifier", + "src": "82264:6:10" + }, + "nativeSrc": "82264:61:10", + "nodeType": "YulFunctionCall", + "src": "82264:61:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "82252:8:10", + "nodeType": "YulIdentifier", + "src": "82252:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "82358:116:10", + "nodeType": "YulBlock", + "src": "82358:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "82383:4:10", + "nodeType": "YulLiteral", + "src": "82383:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "82389:10:10", + "nodeType": "YulLiteral", + "src": "82389:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "82376:6:10", + "nodeType": "YulIdentifier", + "src": "82376:6:10" + }, + "nativeSrc": "82376:24:10", + "nodeType": "YulFunctionCall", + "src": "82376:24:10" + }, + "nativeSrc": "82376:24:10", + "nodeType": "YulExpressionStatement", + "src": "82376:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "82449:4:10", + "nodeType": "YulLiteral", + "src": "82449:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "82455:4:10", + "nodeType": "YulLiteral", + "src": "82455:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "82442:6:10", + "nodeType": "YulIdentifier", + "src": "82442:6:10" + }, + "nativeSrc": "82442:18:10", + "nodeType": "YulFunctionCall", + "src": "82442:18:10" + }, + "nativeSrc": "82442:18:10", + "nodeType": "YulExpressionStatement", + "src": "82442:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "82348:8:10", + "nodeType": "YulIdentifier", + "src": "82348:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "82341:6:10", + "nodeType": "YulIdentifier", + "src": "82341:6:10" + }, + "nativeSrc": "82341:16:10", + "nodeType": "YulFunctionCall", + "src": "82341:16:10" + }, + "nativeSrc": "82338:136:10", + "nodeType": "YulIf", + "src": "82338:136:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4057, + "isOffset": false, + "isSlot": false, + "src": "81671:4:10", + "valueSize": 1 + }, + { + "declaration": 4057, + "isOffset": false, + "isSlot": false, + "src": "81718:4:10", + "valueSize": 1 + }, + { + "declaration": 4055, + "isOffset": false, + "isSlot": false, + "src": "82071:14:10", + "valueSize": 1 + }, + { + "declaration": 4060, + "isOffset": false, + "isSlot": false, + "src": "82252:8:10", + "valueSize": 1 + }, + { + "declaration": 4060, + "isOffset": false, + "isSlot": false, + "src": "82348:8:10", + "valueSize": 1 + }, + { + "declaration": 4053, + "isOffset": false, + "isSlot": false, + "src": "82271:5:10", + "valueSize": 1 + } + ], + "id": 4062, + "nodeType": "InlineAssembly", + "src": "81600:884:10" + } + ] + }, + "documentation": { + "id": 4051, + "nodeType": "StructuredDocumentation", + "src": "81281:123:10", + "text": "@dev Deploys a minimal ERC1967I proxy with `implementation` and `args`.\n Deposits `value` ETH during deployment." + }, + "id": 4064, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployERC1967I", + "nameLocation": "81418:14:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4058, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4053, + "mutability": "mutable", + "name": "value", + "nameLocation": "81441:5:10", + "nodeType": "VariableDeclaration", + "scope": 4064, + "src": "81433:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4052, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "81433:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4055, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "81456:14:10", + "nodeType": "VariableDeclaration", + "scope": 4064, + "src": "81448:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4054, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "81448:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4057, + "mutability": "mutable", + "name": "args", + "nameLocation": "81485:4:10", + "nodeType": "VariableDeclaration", + "scope": 4064, + "src": "81472:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4056, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "81472:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "81432:58:10" + }, + "returnParameters": { + "id": 4061, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4060, + "mutability": "mutable", + "name": "instance", + "nameLocation": "81533:8:10", + "nodeType": "VariableDeclaration", + "scope": 4064, + "src": "81525:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4059, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "81525:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "81524:18:10" + }, + "scope": 5104, + "src": "81409:1081:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4085, + "nodeType": "Block", + "src": "82741:86:10", + "statements": [ + { + "expression": { + "id": 4083, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4076, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4074, + "src": "82751:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 4078, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "82790:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 4079, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4067, + "src": "82793:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4080, + "name": "args", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4069, + "src": "82809:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 4081, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4071, + "src": "82815:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4077, + "name": "deployDeterministicERC1967I", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3937, + 3951, + 4086, + 4102 + ], + "referencedDeclaration": 4102, + "src": "82762:27:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (uint256,address,bytes memory,bytes32) returns (address)" + } + }, + "id": 4082, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "82762:58:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "82751:69:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4084, + "nodeType": "ExpressionStatement", + "src": "82751:69:10" + } + ] + }, + "documentation": { + "id": 4065, + "nodeType": "StructuredDocumentation", + "src": "82496:90:10", + "text": "@dev Deploys a deterministic ERC1967I proxy with `implementation`, `args`, and `salt`." + }, + "id": 4086, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployDeterministicERC1967I", + "nameLocation": "82600:27:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4072, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4067, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "82636:14:10", + "nodeType": "VariableDeclaration", + "scope": 4086, + "src": "82628:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4066, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "82628:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4069, + "mutability": "mutable", + "name": "args", + "nameLocation": "82665:4:10", + "nodeType": "VariableDeclaration", + "scope": 4086, + "src": "82652:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4068, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "82652:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4071, + "mutability": "mutable", + "name": "salt", + "nameLocation": "82679:4:10", + "nodeType": "VariableDeclaration", + "scope": 4086, + "src": "82671:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4070, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "82671:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "82627:57:10" + }, + "returnParameters": { + "id": 4075, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4074, + "mutability": "mutable", + "name": "instance", + "nameLocation": "82727:8:10", + "nodeType": "VariableDeclaration", + "scope": 4086, + "src": "82719:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4073, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "82719:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "82718:18:10" + }, + "scope": 5104, + "src": "82591:236:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4101, + "nodeType": "Block", + "src": "83159:950:10", + "statements": [ + { + "AST": { + "nativeSrc": "83221:882:10", + "nodeType": "YulBlock", + "src": "83221:882:10", + "statements": [ + { + "nativeSrc": "83235:20:10", + "nodeType": "YulVariableDeclaration", + "src": "83235:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "83250:4:10", + "nodeType": "YulLiteral", + "src": "83250:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "83244:5:10", + "nodeType": "YulIdentifier", + "src": "83244:5:10" + }, + "nativeSrc": "83244:11:10", + "nodeType": "YulFunctionCall", + "src": "83244:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "83239:1:10", + "nodeType": "YulTypedName", + "src": "83239:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "83268:20:10", + "nodeType": "YulVariableDeclaration", + "src": "83268:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "83283:4:10", + "nodeType": "YulIdentifier", + "src": "83283:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "83277:5:10", + "nodeType": "YulIdentifier", + "src": "83277:5:10" + }, + "nativeSrc": "83277:11:10", + "nodeType": "YulFunctionCall", + "src": "83277:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "83272:1:10", + "nodeType": "YulTypedName", + "src": "83272:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "83316:3:10", + "nodeType": "YulIdentifier", + "src": "83316:3:10" + }, + "nativeSrc": "83316:5:10", + "nodeType": "YulFunctionCall", + "src": "83316:5:10" + }, + { + "kind": "number", + "nativeSrc": "83323:1:10", + "nodeType": "YulLiteral", + "src": "83323:1:10", + "type": "", + "value": "4" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "83330:4:10", + "nodeType": "YulIdentifier", + "src": "83330:4:10" + }, + { + "kind": "number", + "nativeSrc": "83336:4:10", + "nodeType": "YulLiteral", + "src": "83336:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "83326:3:10", + "nodeType": "YulIdentifier", + "src": "83326:3:10" + }, + "nativeSrc": "83326:15:10", + "nodeType": "YulFunctionCall", + "src": "83326:15:10" + }, + { + "name": "n", + "nativeSrc": "83343:1:10", + "nodeType": "YulIdentifier", + "src": "83343:1:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "83350:1:10", + "nodeType": "YulIdentifier", + "src": "83350:1:10" + }, + { + "kind": "number", + "nativeSrc": "83353:4:10", + "nodeType": "YulLiteral", + "src": "83353:4:10", + "type": "", + "value": "0x8b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "83346:3:10", + "nodeType": "YulIdentifier", + "src": "83346:3:10" + }, + "nativeSrc": "83346:12:10", + "nodeType": "YulFunctionCall", + "src": "83346:12:10" + }, + { + "name": "n", + "nativeSrc": "83360:1:10", + "nodeType": "YulIdentifier", + "src": "83360:1:10" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "83305:10:10", + "nodeType": "YulIdentifier", + "src": "83305:10:10" + }, + "nativeSrc": "83305:57:10", + "nodeType": "YulFunctionCall", + "src": "83305:57:10" + } + ], + "functionName": { + "name": "pop", + "nativeSrc": "83301:3:10", + "nodeType": "YulIdentifier", + "src": "83301:3:10" + }, + "nativeSrc": "83301:62:10", + "nodeType": "YulFunctionCall", + "src": "83301:62:10" + }, + "nativeSrc": "83301:62:10", + "nodeType": "YulExpressionStatement", + "src": "83301:62:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "83388:1:10", + "nodeType": "YulIdentifier", + "src": "83388:1:10" + }, + { + "kind": "number", + "nativeSrc": "83391:4:10", + "nodeType": "YulLiteral", + "src": "83391:4:10", + "type": "", + "value": "0x6b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "83384:3:10", + "nodeType": "YulIdentifier", + "src": "83384:3:10" + }, + "nativeSrc": "83384:12:10", + "nodeType": "YulFunctionCall", + "src": "83384:12:10" + }, + { + "kind": "number", + "nativeSrc": "83398:66:10", + "nodeType": "YulLiteral", + "src": "83398:66:10", + "type": "", + "value": "0x3d6000803e603e573d6000fd5b3d6000f35b6020600f3d393d51543d52593df3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "83377:6:10", + "nodeType": "YulIdentifier", + "src": "83377:6:10" + }, + "nativeSrc": "83377:88:10", + "nodeType": "YulFunctionCall", + "src": "83377:88:10" + }, + "nativeSrc": "83377:88:10", + "nodeType": "YulExpressionStatement", + "src": "83377:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "83489:1:10", + "nodeType": "YulIdentifier", + "src": "83489:1:10" + }, + { + "kind": "number", + "nativeSrc": "83492:4:10", + "nodeType": "YulLiteral", + "src": "83492:4:10", + "type": "", + "value": "0x4b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "83485:3:10", + "nodeType": "YulIdentifier", + "src": "83485:3:10" + }, + "nativeSrc": "83485:12:10", + "nodeType": "YulFunctionCall", + "src": "83485:12:10" + }, + { + "kind": "number", + "nativeSrc": "83499:66:10", + "nodeType": "YulLiteral", + "src": "83499:66:10", + "type": "", + "value": "0xa13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af4" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "83478:6:10", + "nodeType": "YulIdentifier", + "src": "83478:6:10" + }, + "nativeSrc": "83478:88:10", + "nodeType": "YulFunctionCall", + "src": "83478:88:10" + }, + "nativeSrc": "83478:88:10", + "nodeType": "YulExpressionStatement", + "src": "83478:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "83590:1:10", + "nodeType": "YulIdentifier", + "src": "83590:1:10" + }, + { + "kind": "number", + "nativeSrc": "83593:4:10", + "nodeType": "YulLiteral", + "src": "83593:4:10", + "type": "", + "value": "0x2b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "83586:3:10", + "nodeType": "YulIdentifier", + "src": "83586:3:10" + }, + "nativeSrc": "83586:12:10", + "nodeType": "YulFunctionCall", + "src": "83586:12:10" + }, + { + "kind": "number", + "nativeSrc": "83600:48:10", + "nodeType": "YulLiteral", + "src": "83600:48:10", + "type": "", + "value": "0x600f5155f3365814604357363d3d373d3d363d7f360894" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "83579:6:10", + "nodeType": "YulIdentifier", + "src": "83579:6:10" + }, + "nativeSrc": "83579:70:10", + "nodeType": "YulFunctionCall", + "src": "83579:70:10" + }, + "nativeSrc": "83579:70:10", + "nodeType": "YulExpressionStatement", + "src": "83579:70:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "83673:1:10", + "nodeType": "YulIdentifier", + "src": "83673:1:10" + }, + { + "kind": "number", + "nativeSrc": "83676:4:10", + "nodeType": "YulLiteral", + "src": "83676:4:10", + "type": "", + "value": "0x14" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "83669:3:10", + "nodeType": "YulIdentifier", + "src": "83669:3:10" + }, + "nativeSrc": "83669:12:10", + "nodeType": "YulFunctionCall", + "src": "83669:12:10" + }, + { + "name": "implementation", + "nativeSrc": "83683:14:10", + "nodeType": "YulIdentifier", + "src": "83683:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "83662:6:10", + "nodeType": "YulIdentifier", + "src": "83662:6:10" + }, + "nativeSrc": "83662:36:10", + "nodeType": "YulFunctionCall", + "src": "83662:36:10" + }, + "nativeSrc": "83662:36:10", + "nodeType": "YulExpressionStatement", + "src": "83662:36:10" + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "83718:1:10", + "nodeType": "YulIdentifier", + "src": "83718:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "83725:24:10", + "nodeType": "YulLiteral", + "src": "83725:24:10", + "type": "", + "value": "0xfe6100523d8160233d3973" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "83755:2:10", + "nodeType": "YulLiteral", + "src": "83755:2:10", + "type": "", + "value": "56" + }, + { + "name": "n", + "nativeSrc": "83759:1:10", + "nodeType": "YulIdentifier", + "src": "83759:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "83751:3:10", + "nodeType": "YulIdentifier", + "src": "83751:3:10" + }, + "nativeSrc": "83751:10:10", + "nodeType": "YulFunctionCall", + "src": "83751:10:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "83721:3:10", + "nodeType": "YulIdentifier", + "src": "83721:3:10" + }, + "nativeSrc": "83721:41:10", + "nodeType": "YulFunctionCall", + "src": "83721:41:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "83711:6:10", + "nodeType": "YulIdentifier", + "src": "83711:6:10" + }, + "nativeSrc": "83711:52:10", + "nodeType": "YulFunctionCall", + "src": "83711:52:10" + }, + "nativeSrc": "83711:52:10", + "nodeType": "YulExpressionStatement", + "src": "83711:52:10" + }, + { + "nativeSrc": "83864:80:10", + "nodeType": "YulAssignment", + "src": "83864:80:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "83884:5:10", + "nodeType": "YulIdentifier", + "src": "83884:5:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "83895:1:10", + "nodeType": "YulIdentifier", + "src": "83895:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "83902:4:10", + "nodeType": "YulLiteral", + "src": "83902:4:10", + "type": "", + "value": "0x15" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "83911:1:10", + "nodeType": "YulIdentifier", + "src": "83911:1:10" + }, + { + "kind": "number", + "nativeSrc": "83914:6:10", + "nodeType": "YulLiteral", + "src": "83914:6:10", + "type": "", + "value": "0xffae" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "83908:2:10", + "nodeType": "YulIdentifier", + "src": "83908:2:10" + }, + "nativeSrc": "83908:13:10", + "nodeType": "YulFunctionCall", + "src": "83908:13:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "83898:3:10", + "nodeType": "YulIdentifier", + "src": "83898:3:10" + }, + "nativeSrc": "83898:24:10", + "nodeType": "YulFunctionCall", + "src": "83898:24:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "83891:3:10", + "nodeType": "YulIdentifier", + "src": "83891:3:10" + }, + "nativeSrc": "83891:32:10", + "nodeType": "YulFunctionCall", + "src": "83891:32:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "83929:4:10", + "nodeType": "YulLiteral", + "src": "83929:4:10", + "type": "", + "value": "0x75" + }, + { + "name": "n", + "nativeSrc": "83935:1:10", + "nodeType": "YulIdentifier", + "src": "83935:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "83925:3:10", + "nodeType": "YulIdentifier", + "src": "83925:3:10" + }, + "nativeSrc": "83925:12:10", + "nodeType": "YulFunctionCall", + "src": "83925:12:10" + }, + { + "name": "salt", + "nativeSrc": "83939:4:10", + "nodeType": "YulIdentifier", + "src": "83939:4:10" + } + ], + "functionName": { + "name": "create2", + "nativeSrc": "83876:7:10", + "nodeType": "YulIdentifier", + "src": "83876:7:10" + }, + "nativeSrc": "83876:68:10", + "nodeType": "YulFunctionCall", + "src": "83876:68:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "83864:8:10", + "nodeType": "YulIdentifier", + "src": "83864:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "83977:116:10", + "nodeType": "YulBlock", + "src": "83977:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "84002:4:10", + "nodeType": "YulLiteral", + "src": "84002:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "84008:10:10", + "nodeType": "YulLiteral", + "src": "84008:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "83995:6:10", + "nodeType": "YulIdentifier", + "src": "83995:6:10" + }, + "nativeSrc": "83995:24:10", + "nodeType": "YulFunctionCall", + "src": "83995:24:10" + }, + "nativeSrc": "83995:24:10", + "nodeType": "YulExpressionStatement", + "src": "83995:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "84068:4:10", + "nodeType": "YulLiteral", + "src": "84068:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "84074:4:10", + "nodeType": "YulLiteral", + "src": "84074:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "84061:6:10", + "nodeType": "YulIdentifier", + "src": "84061:6:10" + }, + "nativeSrc": "84061:18:10", + "nodeType": "YulFunctionCall", + "src": "84061:18:10" + }, + "nativeSrc": "84061:18:10", + "nodeType": "YulExpressionStatement", + "src": "84061:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "83967:8:10", + "nodeType": "YulIdentifier", + "src": "83967:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "83960:6:10", + "nodeType": "YulIdentifier", + "src": "83960:6:10" + }, + "nativeSrc": "83960:16:10", + "nodeType": "YulFunctionCall", + "src": "83960:16:10" + }, + "nativeSrc": "83957:136:10", + "nodeType": "YulIf", + "src": "83957:136:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4093, + "isOffset": false, + "isSlot": false, + "src": "83283:4:10", + "valueSize": 1 + }, + { + "declaration": 4093, + "isOffset": false, + "isSlot": false, + "src": "83330:4:10", + "valueSize": 1 + }, + { + "declaration": 4091, + "isOffset": false, + "isSlot": false, + "src": "83683:14:10", + "valueSize": 1 + }, + { + "declaration": 4098, + "isOffset": false, + "isSlot": false, + "src": "83864:8:10", + "valueSize": 1 + }, + { + "declaration": 4098, + "isOffset": false, + "isSlot": false, + "src": "83967:8:10", + "valueSize": 1 + }, + { + "declaration": 4095, + "isOffset": false, + "isSlot": false, + "src": "83939:4:10", + "valueSize": 1 + }, + { + "declaration": 4089, + "isOffset": false, + "isSlot": false, + "src": "83884:5:10", + "valueSize": 1 + } + ], + "id": 4100, + "nodeType": "InlineAssembly", + "src": "83212:891:10" + } + ] + }, + "documentation": { + "id": 4087, + "nodeType": "StructuredDocumentation", + "src": "82833:138:10", + "text": "@dev Deploys a deterministic ERC1967I proxy with `implementation`, `args`, and `salt`.\n Deposits `value` ETH during deployment." + }, + "id": 4102, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployDeterministicERC1967I", + "nameLocation": "82985:27:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4096, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4089, + "mutability": "mutable", + "name": "value", + "nameLocation": "83030:5:10", + "nodeType": "VariableDeclaration", + "scope": 4102, + "src": "83022:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4088, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "83022:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4091, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "83053:14:10", + "nodeType": "VariableDeclaration", + "scope": 4102, + "src": "83045:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4090, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "83045:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4093, + "mutability": "mutable", + "name": "args", + "nameLocation": "83090:4:10", + "nodeType": "VariableDeclaration", + "scope": 4102, + "src": "83077:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4092, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "83077:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4095, + "mutability": "mutable", + "name": "salt", + "nameLocation": "83112:4:10", + "nodeType": "VariableDeclaration", + "scope": 4102, + "src": "83104:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4094, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "83104:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "83012:110:10" + }, + "returnParameters": { + "id": 4099, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4098, + "mutability": "mutable", + "name": "instance", + "nameLocation": "83149:8:10", + "nodeType": "VariableDeclaration", + "scope": 4102, + "src": "83141:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4097, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "83141:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "83140:18:10" + }, + "scope": 5104, + "src": "82976:1133:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4123, + "nodeType": "Block", + "src": "84524:82:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "30", + "id": 4117, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "84569:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 4118, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4105, + "src": "84572:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4119, + "name": "args", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4107, + "src": "84588:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 4120, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4109, + "src": "84594:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4116, + "name": "createDeterministicERC1967I", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3970, + 3986, + 4124, + 4142 + ], + "referencedDeclaration": 4142, + "src": "84541:27:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$_t_bytes32_$returns$_t_bool_$_t_address_$", + "typeString": "function (uint256,address,bytes memory,bytes32) returns (bool,address)" + } + }, + "id": 4121, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "84541:58:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_address_$", + "typeString": "tuple(bool,address)" + } + }, + "functionReturnParameters": 4115, + "id": 4122, + "nodeType": "Return", + "src": "84534:65:10" + } + ] + }, + "documentation": { + "id": 4103, + "nodeType": "StructuredDocumentation", + "src": "84115:232:10", + "text": "@dev Creates a deterministic ERC1967I proxy with `implementation`, `args` and `salt`.\n Note: This method is intended for use in ERC4337 factories,\n which are expected to NOT revert if the proxy is already deployed." + }, + "id": 4124, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createDeterministicERC1967I", + "nameLocation": "84361:27:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4110, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4105, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "84397:14:10", + "nodeType": "VariableDeclaration", + "scope": 4124, + "src": "84389:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4104, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "84389:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4107, + "mutability": "mutable", + "name": "args", + "nameLocation": "84426:4:10", + "nodeType": "VariableDeclaration", + "scope": 4124, + "src": "84413:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4106, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "84413:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4109, + "mutability": "mutable", + "name": "salt", + "nameLocation": "84440:4:10", + "nodeType": "VariableDeclaration", + "scope": 4124, + "src": "84432:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4108, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "84432:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "84388:57:10" + }, + "returnParameters": { + "id": 4115, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4112, + "mutability": "mutable", + "name": "alreadyDeployed", + "nameLocation": "84485:15:10", + "nodeType": "VariableDeclaration", + "scope": 4124, + "src": "84480:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4111, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "84480:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4114, + "mutability": "mutable", + "name": "instance", + "nameLocation": "84510:8:10", + "nodeType": "VariableDeclaration", + "scope": 4124, + "src": "84502:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4113, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "84502:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "84479:40:10" + }, + "scope": 5104, + "src": "84352:254:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4141, + "nodeType": "Block", + "src": "85102:1852:10", + "statements": [ + { + "AST": { + "nativeSrc": "85164:1784:10", + "nodeType": "YulBlock", + "src": "85164:1784:10", + "statements": [ + { + "nativeSrc": "85178:20:10", + "nodeType": "YulVariableDeclaration", + "src": "85178:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "85193:4:10", + "nodeType": "YulLiteral", + "src": "85193:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "85187:5:10", + "nodeType": "YulIdentifier", + "src": "85187:5:10" + }, + "nativeSrc": "85187:11:10", + "nodeType": "YulFunctionCall", + "src": "85187:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "85182:1:10", + "nodeType": "YulTypedName", + "src": "85182:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "85211:20:10", + "nodeType": "YulVariableDeclaration", + "src": "85211:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "85226:4:10", + "nodeType": "YulIdentifier", + "src": "85226:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "85220:5:10", + "nodeType": "YulIdentifier", + "src": "85220:5:10" + }, + "nativeSrc": "85220:11:10", + "nodeType": "YulFunctionCall", + "src": "85220:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "85215:1:10", + "nodeType": "YulTypedName", + "src": "85215:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "85259:3:10", + "nodeType": "YulIdentifier", + "src": "85259:3:10" + }, + "nativeSrc": "85259:5:10", + "nodeType": "YulFunctionCall", + "src": "85259:5:10" + }, + { + "kind": "number", + "nativeSrc": "85266:1:10", + "nodeType": "YulLiteral", + "src": "85266:1:10", + "type": "", + "value": "4" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "85273:4:10", + "nodeType": "YulIdentifier", + "src": "85273:4:10" + }, + { + "kind": "number", + "nativeSrc": "85279:4:10", + "nodeType": "YulLiteral", + "src": "85279:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "85269:3:10", + "nodeType": "YulIdentifier", + "src": "85269:3:10" + }, + "nativeSrc": "85269:15:10", + "nodeType": "YulFunctionCall", + "src": "85269:15:10" + }, + { + "name": "n", + "nativeSrc": "85286:1:10", + "nodeType": "YulIdentifier", + "src": "85286:1:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "85293:1:10", + "nodeType": "YulIdentifier", + "src": "85293:1:10" + }, + { + "kind": "number", + "nativeSrc": "85296:4:10", + "nodeType": "YulLiteral", + "src": "85296:4:10", + "type": "", + "value": "0x75" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "85289:3:10", + "nodeType": "YulIdentifier", + "src": "85289:3:10" + }, + "nativeSrc": "85289:12:10", + "nodeType": "YulFunctionCall", + "src": "85289:12:10" + }, + { + "name": "n", + "nativeSrc": "85303:1:10", + "nodeType": "YulIdentifier", + "src": "85303:1:10" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "85248:10:10", + "nodeType": "YulIdentifier", + "src": "85248:10:10" + }, + "nativeSrc": "85248:57:10", + "nodeType": "YulFunctionCall", + "src": "85248:57:10" + } + ], + "functionName": { + "name": "pop", + "nativeSrc": "85244:3:10", + "nodeType": "YulIdentifier", + "src": "85244:3:10" + }, + "nativeSrc": "85244:62:10", + "nodeType": "YulFunctionCall", + "src": "85244:62:10" + }, + "nativeSrc": "85244:62:10", + "nodeType": "YulExpressionStatement", + "src": "85244:62:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "85330:1:10", + "nodeType": "YulIdentifier", + "src": "85330:1:10" + }, + { + "kind": "number", + "nativeSrc": "85333:4:10", + "nodeType": "YulLiteral", + "src": "85333:4:10", + "type": "", + "value": "0x55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "85326:3:10", + "nodeType": "YulIdentifier", + "src": "85326:3:10" + }, + "nativeSrc": "85326:12:10", + "nodeType": "YulFunctionCall", + "src": "85326:12:10" + }, + { + "kind": "number", + "nativeSrc": "85340:66:10", + "nodeType": "YulLiteral", + "src": "85340:66:10", + "type": "", + "value": "0x3d6000803e603e573d6000fd5b3d6000f35b6020600f3d393d51543d52593df3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "85319:6:10", + "nodeType": "YulIdentifier", + "src": "85319:6:10" + }, + "nativeSrc": "85319:88:10", + "nodeType": "YulFunctionCall", + "src": "85319:88:10" + }, + "nativeSrc": "85319:88:10", + "nodeType": "YulExpressionStatement", + "src": "85319:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "85431:1:10", + "nodeType": "YulIdentifier", + "src": "85431:1:10" + }, + { + "kind": "number", + "nativeSrc": "85434:4:10", + "nodeType": "YulLiteral", + "src": "85434:4:10", + "type": "", + "value": "0x35" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "85427:3:10", + "nodeType": "YulIdentifier", + "src": "85427:3:10" + }, + "nativeSrc": "85427:12:10", + "nodeType": "YulFunctionCall", + "src": "85427:12:10" + }, + { + "kind": "number", + "nativeSrc": "85441:66:10", + "nodeType": "YulLiteral", + "src": "85441:66:10", + "type": "", + "value": "0xa13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af4" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "85420:6:10", + "nodeType": "YulIdentifier", + "src": "85420:6:10" + }, + "nativeSrc": "85420:88:10", + "nodeType": "YulFunctionCall", + "src": "85420:88:10" + }, + "nativeSrc": "85420:88:10", + "nodeType": "YulExpressionStatement", + "src": "85420:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "85532:1:10", + "nodeType": "YulIdentifier", + "src": "85532:1:10" + }, + { + "kind": "number", + "nativeSrc": "85535:4:10", + "nodeType": "YulLiteral", + "src": "85535:4:10", + "type": "", + "value": "0x15" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "85528:3:10", + "nodeType": "YulIdentifier", + "src": "85528:3:10" + }, + "nativeSrc": "85528:12:10", + "nodeType": "YulFunctionCall", + "src": "85528:12:10" + }, + { + "kind": "number", + "nativeSrc": "85542:44:10", + "nodeType": "YulLiteral", + "src": "85542:44:10", + "type": "", + "value": "0x5155f3365814604357363d3d373d3d363d7f360894" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "85521:6:10", + "nodeType": "YulIdentifier", + "src": "85521:6:10" + }, + "nativeSrc": "85521:66:10", + "nodeType": "YulFunctionCall", + "src": "85521:66:10" + }, + "nativeSrc": "85521:66:10", + "nodeType": "YulExpressionStatement", + "src": "85521:66:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "85607:4:10", + "nodeType": "YulLiteral", + "src": "85607:4:10", + "type": "", + "value": "0x16" + }, + { + "kind": "number", + "nativeSrc": "85613:6:10", + "nodeType": "YulLiteral", + "src": "85613:6:10", + "type": "", + "value": "0x600f" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "85600:6:10", + "nodeType": "YulIdentifier", + "src": "85600:6:10" + }, + "nativeSrc": "85600:20:10", + "nodeType": "YulFunctionCall", + "src": "85600:20:10" + }, + "nativeSrc": "85600:20:10", + "nodeType": "YulExpressionStatement", + "src": "85600:20:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "85640:4:10", + "nodeType": "YulLiteral", + "src": "85640:4:10", + "type": "", + "value": "0x14" + }, + { + "name": "implementation", + "nativeSrc": "85646:14:10", + "nodeType": "YulIdentifier", + "src": "85646:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "85633:6:10", + "nodeType": "YulIdentifier", + "src": "85633:6:10" + }, + "nativeSrc": "85633:28:10", + "nodeType": "YulFunctionCall", + "src": "85633:28:10" + }, + "nativeSrc": "85633:28:10", + "nodeType": "YulExpressionStatement", + "src": "85633:28:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "n", + "nativeSrc": "85771:1:10", + "nodeType": "YulIdentifier", + "src": "85771:1:10" + }, + { + "kind": "number", + "nativeSrc": "85774:6:10", + "nodeType": "YulLiteral", + "src": "85774:6:10", + "type": "", + "value": "0xffad" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "85768:2:10", + "nodeType": "YulIdentifier", + "src": "85768:2:10" + }, + "nativeSrc": "85768:13:10", + "nodeType": "YulFunctionCall", + "src": "85768:13:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "85787:24:10", + "nodeType": "YulLiteral", + "src": "85787:24:10", + "type": "", + "value": "0xfe6100523d8160233d3973" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "85817:2:10", + "nodeType": "YulLiteral", + "src": "85817:2:10", + "type": "", + "value": "56" + }, + { + "name": "n", + "nativeSrc": "85821:1:10", + "nodeType": "YulIdentifier", + "src": "85821:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "85813:3:10", + "nodeType": "YulIdentifier", + "src": "85813:3:10" + }, + "nativeSrc": "85813:10:10", + "nodeType": "YulFunctionCall", + "src": "85813:10:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "85783:3:10", + "nodeType": "YulIdentifier", + "src": "85783:3:10" + }, + "nativeSrc": "85783:41:10", + "nodeType": "YulFunctionCall", + "src": "85783:41:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "85761:6:10", + "nodeType": "YulIdentifier", + "src": "85761:6:10" + }, + "nativeSrc": "85761:64:10", + "nodeType": "YulFunctionCall", + "src": "85761:64:10" + }, + "nativeSrc": "85761:64:10", + "nodeType": "YulExpressionStatement", + "src": "85761:64:10" + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "85845:1:10", + "nodeType": "YulIdentifier", + "src": "85845:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "85854:4:10", + "nodeType": "YulLiteral", + "src": "85854:4:10", + "type": "", + "value": "0x16" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "85848:5:10", + "nodeType": "YulIdentifier", + "src": "85848:5:10" + }, + "nativeSrc": "85848:11:10", + "nodeType": "YulFunctionCall", + "src": "85848:11:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "85838:6:10", + "nodeType": "YulIdentifier", + "src": "85838:6:10" + }, + "nativeSrc": "85838:22:10", + "nodeType": "YulFunctionCall", + "src": "85838:22:10" + }, + "nativeSrc": "85838:22:10", + "nodeType": "YulExpressionStatement", + "src": "85838:22:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "85933:4:10", + "nodeType": "YulLiteral", + "src": "85933:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "85939:4:10", + "nodeType": "YulLiteral", + "src": "85939:4:10", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "85925:7:10", + "nodeType": "YulIdentifier", + "src": "85925:7:10" + }, + "nativeSrc": "85925:19:10", + "nodeType": "YulFunctionCall", + "src": "85925:19:10" + }, + "nativeSrc": "85925:19:10", + "nodeType": "YulExpressionStatement", + "src": "85925:19:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "85985:4:10", + "nodeType": "YulLiteral", + "src": "85985:4:10", + "type": "", + "value": "0x35" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "86001:1:10", + "nodeType": "YulIdentifier", + "src": "86001:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "86008:1:10", + "nodeType": "YulIdentifier", + "src": "86008:1:10" + }, + { + "kind": "number", + "nativeSrc": "86011:4:10", + "nodeType": "YulLiteral", + "src": "86011:4:10", + "type": "", + "value": "0x75" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "86004:3:10", + "nodeType": "YulIdentifier", + "src": "86004:3:10" + }, + "nativeSrc": "86004:12:10", + "nodeType": "YulFunctionCall", + "src": "86004:12:10" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "85991:9:10", + "nodeType": "YulIdentifier", + "src": "85991:9:10" + }, + "nativeSrc": "85991:26:10", + "nodeType": "YulFunctionCall", + "src": "85991:26:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "85978:6:10", + "nodeType": "YulIdentifier", + "src": "85978:6:10" + }, + "nativeSrc": "85978:40:10", + "nodeType": "YulFunctionCall", + "src": "85978:40:10" + }, + "nativeSrc": "85978:40:10", + "nodeType": "YulExpressionStatement", + "src": "85978:40:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "86038:4:10", + "nodeType": "YulLiteral", + "src": "86038:4:10", + "type": "", + "value": "0x01" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "86048:2:10", + "nodeType": "YulLiteral", + "src": "86048:2:10", + "type": "", + "value": "96" + }, + { + "arguments": [], + "functionName": { + "name": "address", + "nativeSrc": "86052:7:10", + "nodeType": "YulIdentifier", + "src": "86052:7:10" + }, + "nativeSrc": "86052:9:10", + "nodeType": "YulFunctionCall", + "src": "86052:9:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "86044:3:10", + "nodeType": "YulIdentifier", + "src": "86044:3:10" + }, + "nativeSrc": "86044:18:10", + "nodeType": "YulFunctionCall", + "src": "86044:18:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "86031:6:10", + "nodeType": "YulIdentifier", + "src": "86031:6:10" + }, + "nativeSrc": "86031:32:10", + "nodeType": "YulFunctionCall", + "src": "86031:32:10" + }, + "nativeSrc": "86031:32:10", + "nodeType": "YulExpressionStatement", + "src": "86031:32:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "86083:4:10", + "nodeType": "YulLiteral", + "src": "86083:4:10", + "type": "", + "value": "0x15" + }, + { + "name": "salt", + "nativeSrc": "86089:4:10", + "nodeType": "YulIdentifier", + "src": "86089:4:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "86076:6:10", + "nodeType": "YulIdentifier", + "src": "86076:6:10" + }, + "nativeSrc": "86076:18:10", + "nodeType": "YulFunctionCall", + "src": "86076:18:10" + }, + "nativeSrc": "86076:18:10", + "nodeType": "YulExpressionStatement", + "src": "86076:18:10" + }, + { + "nativeSrc": "86107:33:10", + "nodeType": "YulAssignment", + "src": "86107:33:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "86129:4:10", + "nodeType": "YulLiteral", + "src": "86129:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "86135:4:10", + "nodeType": "YulLiteral", + "src": "86135:4:10", + "type": "", + "value": "0x55" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "86119:9:10", + "nodeType": "YulIdentifier", + "src": "86119:9:10" + }, + "nativeSrc": "86119:21:10", + "nodeType": "YulFunctionCall", + "src": "86119:21:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "86107:8:10", + "nodeType": "YulIdentifier", + "src": "86107:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "86165:685:10", + "nodeType": "YulBlock", + "src": "86165:685:10", + "statements": [ + { + "body": { + "nativeSrc": "86216:296:10", + "nodeType": "YulBlock", + "src": "86216:296:10", + "statements": [ + { + "nativeSrc": "86238:49:10", + "nodeType": "YulAssignment", + "src": "86238:49:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "86258:5:10", + "nodeType": "YulIdentifier", + "src": "86258:5:10" + }, + { + "name": "m", + "nativeSrc": "86265:1:10", + "nodeType": "YulIdentifier", + "src": "86265:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "86272:4:10", + "nodeType": "YulLiteral", + "src": "86272:4:10", + "type": "", + "value": "0x75" + }, + { + "name": "n", + "nativeSrc": "86278:1:10", + "nodeType": "YulIdentifier", + "src": "86278:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "86268:3:10", + "nodeType": "YulIdentifier", + "src": "86268:3:10" + }, + "nativeSrc": "86268:12:10", + "nodeType": "YulFunctionCall", + "src": "86268:12:10" + }, + { + "name": "salt", + "nativeSrc": "86282:4:10", + "nodeType": "YulIdentifier", + "src": "86282:4:10" + } + ], + "functionName": { + "name": "create2", + "nativeSrc": "86250:7:10", + "nodeType": "YulIdentifier", + "src": "86250:7:10" + }, + "nativeSrc": "86250:37:10", + "nodeType": "YulFunctionCall", + "src": "86250:37:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "86238:8:10", + "nodeType": "YulIdentifier", + "src": "86238:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "86328:140:10", + "nodeType": "YulBlock", + "src": "86328:140:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "86361:4:10", + "nodeType": "YulLiteral", + "src": "86361:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "86367:10:10", + "nodeType": "YulLiteral", + "src": "86367:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "86354:6:10", + "nodeType": "YulIdentifier", + "src": "86354:6:10" + }, + "nativeSrc": "86354:24:10", + "nodeType": "YulFunctionCall", + "src": "86354:24:10" + }, + "nativeSrc": "86354:24:10", + "nodeType": "YulExpressionStatement", + "src": "86354:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "86435:4:10", + "nodeType": "YulLiteral", + "src": "86435:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "86441:4:10", + "nodeType": "YulLiteral", + "src": "86441:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "86428:6:10", + "nodeType": "YulIdentifier", + "src": "86428:6:10" + }, + "nativeSrc": "86428:18:10", + "nodeType": "YulFunctionCall", + "src": "86428:18:10" + }, + "nativeSrc": "86428:18:10", + "nodeType": "YulExpressionStatement", + "src": "86428:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "86318:8:10", + "nodeType": "YulIdentifier", + "src": "86318:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "86311:6:10", + "nodeType": "YulIdentifier", + "src": "86311:6:10" + }, + "nativeSrc": "86311:16:10", + "nodeType": "YulFunctionCall", + "src": "86311:16:10" + }, + "nativeSrc": "86308:160:10", + "nodeType": "YulIf", + "src": "86308:160:10" + }, + { + "nativeSrc": "86489:5:10", + "nodeType": "YulBreak", + "src": "86489:5:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "86205:8:10", + "nodeType": "YulIdentifier", + "src": "86205:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "86193:11:10", + "nodeType": "YulIdentifier", + "src": "86193:11:10" + }, + "nativeSrc": "86193:21:10", + "nodeType": "YulFunctionCall", + "src": "86193:21:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "86186:6:10", + "nodeType": "YulIdentifier", + "src": "86186:6:10" + }, + "nativeSrc": "86186:29:10", + "nodeType": "YulFunctionCall", + "src": "86186:29:10" + }, + "nativeSrc": "86183:329:10", + "nodeType": "YulIf", + "src": "86183:329:10" + }, + { + "nativeSrc": "86529:20:10", + "nodeType": "YulAssignment", + "src": "86529:20:10", + "value": { + "kind": "number", + "nativeSrc": "86548:1:10", + "nodeType": "YulLiteral", + "src": "86548:1:10", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "alreadyDeployed", + "nativeSrc": "86529:15:10", + "nodeType": "YulIdentifier", + "src": "86529:15:10" + } + ] + }, + { + "body": { + "nativeSrc": "86583:9:10", + "nodeType": "YulBlock", + "src": "86583:9:10", + "statements": [ + { + "nativeSrc": "86585:5:10", + "nodeType": "YulBreak", + "src": "86585:5:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nativeSrc": "86576:5:10", + "nodeType": "YulIdentifier", + "src": "86576:5:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "86569:6:10", + "nodeType": "YulIdentifier", + "src": "86569:6:10" + }, + "nativeSrc": "86569:13:10", + "nodeType": "YulFunctionCall", + "src": "86569:13:10" + }, + "nativeSrc": "86566:26:10", + "nodeType": "YulIf", + "src": "86566:26:10" + }, + { + "body": { + "nativeSrc": "86685:129:10", + "nodeType": "YulBlock", + "src": "86685:129:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "86714:4:10", + "nodeType": "YulLiteral", + "src": "86714:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "86720:10:10", + "nodeType": "YulLiteral", + "src": "86720:10:10", + "type": "", + "value": "0xb12d13eb" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "86707:6:10", + "nodeType": "YulIdentifier", + "src": "86707:6:10" + }, + "nativeSrc": "86707:24:10", + "nodeType": "YulFunctionCall", + "src": "86707:24:10" + }, + "nativeSrc": "86707:24:10", + "nodeType": "YulExpressionStatement", + "src": "86707:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "86785:4:10", + "nodeType": "YulLiteral", + "src": "86785:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "86791:4:10", + "nodeType": "YulLiteral", + "src": "86791:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "86778:6:10", + "nodeType": "YulIdentifier", + "src": "86778:6:10" + }, + "nativeSrc": "86778:18:10", + "nodeType": "YulFunctionCall", + "src": "86778:18:10" + }, + "nativeSrc": "86778:18:10", + "nodeType": "YulExpressionStatement", + "src": "86778:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "86624:3:10", + "nodeType": "YulIdentifier", + "src": "86624:3:10" + }, + "nativeSrc": "86624:5:10", + "nodeType": "YulFunctionCall", + "src": "86624:5:10" + }, + { + "name": "instance", + "nativeSrc": "86631:8:10", + "nodeType": "YulIdentifier", + "src": "86631:8:10" + }, + { + "name": "value", + "nativeSrc": "86641:5:10", + "nodeType": "YulIdentifier", + "src": "86641:5:10" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "86648:8:10", + "nodeType": "YulIdentifier", + "src": "86648:8:10" + }, + "nativeSrc": "86648:10:10", + "nodeType": "YulFunctionCall", + "src": "86648:10:10" + }, + { + "kind": "number", + "nativeSrc": "86660:4:10", + "nodeType": "YulLiteral", + "src": "86660:4:10", + "type": "", + "value": "0x00" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "86666:8:10", + "nodeType": "YulIdentifier", + "src": "86666:8:10" + }, + "nativeSrc": "86666:10:10", + "nodeType": "YulFunctionCall", + "src": "86666:10:10" + }, + { + "kind": "number", + "nativeSrc": "86678:4:10", + "nodeType": "YulLiteral", + "src": "86678:4:10", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "call", + "nativeSrc": "86619:4:10", + "nodeType": "YulIdentifier", + "src": "86619:4:10" + }, + "nativeSrc": "86619:64:10", + "nodeType": "YulFunctionCall", + "src": "86619:64:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "86612:6:10", + "nodeType": "YulIdentifier", + "src": "86612:6:10" + }, + "nativeSrc": "86612:72:10", + "nodeType": "YulFunctionCall", + "src": "86612:72:10" + }, + "nativeSrc": "86609:205:10", + "nodeType": "YulIf", + "src": "86609:205:10" + }, + { + "nativeSrc": "86831:5:10", + "nodeType": "YulBreak", + "src": "86831:5:10" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "86160:1:10", + "nodeType": "YulLiteral", + "src": "86160:1:10", + "type": "", + "value": "1" + }, + "nativeSrc": "86153:697:10", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "86162:2:10", + "nodeType": "YulBlock", + "src": "86162:2:10", + "statements": [] + }, + "pre": { + "nativeSrc": "86157:2:10", + "nodeType": "YulBlock", + "src": "86157:2:10", + "statements": [] + }, + "src": "86153:697:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "86870:4:10", + "nodeType": "YulLiteral", + "src": "86870:4:10", + "type": "", + "value": "0x35" + }, + { + "kind": "number", + "nativeSrc": "86876:1:10", + "nodeType": "YulLiteral", + "src": "86876:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "86863:6:10", + "nodeType": "YulIdentifier", + "src": "86863:6:10" + }, + "nativeSrc": "86863:15:10", + "nodeType": "YulFunctionCall", + "src": "86863:15:10" + }, + "nativeSrc": "86863:15:10", + "nodeType": "YulExpressionStatement", + "src": "86863:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4136, + "isOffset": false, + "isSlot": false, + "src": "86529:15:10", + "valueSize": 1 + }, + { + "declaration": 4131, + "isOffset": false, + "isSlot": false, + "src": "85226:4:10", + "valueSize": 1 + }, + { + "declaration": 4131, + "isOffset": false, + "isSlot": false, + "src": "85273:4:10", + "valueSize": 1 + }, + { + "declaration": 4129, + "isOffset": false, + "isSlot": false, + "src": "85646:14:10", + "valueSize": 1 + }, + { + "declaration": 4138, + "isOffset": false, + "isSlot": false, + "src": "86107:8:10", + "valueSize": 1 + }, + { + "declaration": 4138, + "isOffset": false, + "isSlot": false, + "src": "86205:8:10", + "valueSize": 1 + }, + { + "declaration": 4138, + "isOffset": false, + "isSlot": false, + "src": "86238:8:10", + "valueSize": 1 + }, + { + "declaration": 4138, + "isOffset": false, + "isSlot": false, + "src": "86318:8:10", + "valueSize": 1 + }, + { + "declaration": 4138, + "isOffset": false, + "isSlot": false, + "src": "86631:8:10", + "valueSize": 1 + }, + { + "declaration": 4133, + "isOffset": false, + "isSlot": false, + "src": "86089:4:10", + "valueSize": 1 + }, + { + "declaration": 4133, + "isOffset": false, + "isSlot": false, + "src": "86282:4:10", + "valueSize": 1 + }, + { + "declaration": 4127, + "isOffset": false, + "isSlot": false, + "src": "86258:5:10", + "valueSize": 1 + }, + { + "declaration": 4127, + "isOffset": false, + "isSlot": false, + "src": "86576:5:10", + "valueSize": 1 + }, + { + "declaration": 4127, + "isOffset": false, + "isSlot": false, + "src": "86641:5:10", + "valueSize": 1 + } + ], + "id": 4140, + "nodeType": "InlineAssembly", + "src": "85155:1793:10" + } + ] + }, + "documentation": { + "id": 4125, + "nodeType": "StructuredDocumentation", + "src": "84612:280:10", + "text": "@dev Creates a deterministic ERC1967I proxy with `implementation`, `args` and `salt`.\n Deposits `value` ETH during deployment.\n Note: This method is intended for use in ERC4337 factories,\n which are expected to NOT revert if the proxy is already deployed." + }, + "id": 4142, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createDeterministicERC1967I", + "nameLocation": "84906:27:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4134, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4127, + "mutability": "mutable", + "name": "value", + "nameLocation": "84951:5:10", + "nodeType": "VariableDeclaration", + "scope": 4142, + "src": "84943:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4126, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "84943:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4129, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "84974:14:10", + "nodeType": "VariableDeclaration", + "scope": 4142, + "src": "84966:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4128, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "84966:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4131, + "mutability": "mutable", + "name": "args", + "nameLocation": "85011:4:10", + "nodeType": "VariableDeclaration", + "scope": 4142, + "src": "84998:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4130, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "84998:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4133, + "mutability": "mutable", + "name": "salt", + "nameLocation": "85033:4:10", + "nodeType": "VariableDeclaration", + "scope": 4142, + "src": "85025:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4132, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "85025:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "84933:110:10" + }, + "returnParameters": { + "id": 4139, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4136, + "mutability": "mutable", + "name": "alreadyDeployed", + "nameLocation": "85067:15:10", + "nodeType": "VariableDeclaration", + "scope": 4142, + "src": "85062:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4135, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "85062:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4138, + "mutability": "mutable", + "name": "instance", + "nameLocation": "85092:8:10", + "nodeType": "VariableDeclaration", + "scope": 4142, + "src": "85084:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4137, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "85084:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "85061:40:10" + }, + "scope": 5104, + "src": "84897:2057:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4153, + "nodeType": "Block", + "src": "87195:1038:10", + "statements": [ + { + "AST": { + "nativeSrc": "87257:970:10", + "nodeType": "YulBlock", + "src": "87257:970:10", + "statements": [ + { + "nativeSrc": "87271:16:10", + "nodeType": "YulAssignment", + "src": "87271:16:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "87282:4:10", + "nodeType": "YulLiteral", + "src": "87282:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "87276:5:10", + "nodeType": "YulIdentifier", + "src": "87276:5:10" + }, + "nativeSrc": "87276:11:10", + "nodeType": "YulFunctionCall", + "src": "87276:11:10" + }, + "variableNames": [ + { + "name": "c", + "nativeSrc": "87271:1:10", + "nodeType": "YulIdentifier", + "src": "87271:1:10" + } + ] + }, + { + "nativeSrc": "87300:20:10", + "nodeType": "YulVariableDeclaration", + "src": "87300:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "87315:4:10", + "nodeType": "YulIdentifier", + "src": "87315:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "87309:5:10", + "nodeType": "YulIdentifier", + "src": "87309:5:10" + }, + "nativeSrc": "87309:11:10", + "nodeType": "YulFunctionCall", + "src": "87309:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "87304:1:10", + "nodeType": "YulTypedName", + "src": "87304:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "87435:14:10", + "nodeType": "YulIdentifier", + "src": "87435:14:10" + }, + "nativeSrc": "87435:16:10", + "nodeType": "YulFunctionCall", + "src": "87435:16:10" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "87453:14:10", + "nodeType": "YulIdentifier", + "src": "87453:14:10" + }, + "nativeSrc": "87453:16:10", + "nodeType": "YulFunctionCall", + "src": "87453:16:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "87474:1:10", + "nodeType": "YulIdentifier", + "src": "87474:1:10" + }, + { + "kind": "number", + "nativeSrc": "87477:6:10", + "nodeType": "YulLiteral", + "src": "87477:6:10", + "type": "", + "value": "0xffad" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "87471:2:10", + "nodeType": "YulIdentifier", + "src": "87471:2:10" + }, + "nativeSrc": "87471:13:10", + "nodeType": "YulFunctionCall", + "src": "87471:13:10" + } + ], + "functionName": { + "name": "returndatacopy", + "nativeSrc": "87420:14:10", + "nodeType": "YulIdentifier", + "src": "87420:14:10" + }, + "nativeSrc": "87420:65:10", + "nodeType": "YulFunctionCall", + "src": "87420:65:10" + }, + "nativeSrc": "87420:65:10", + "nodeType": "YulExpressionStatement", + "src": "87420:65:10" + }, + { + "body": { + "nativeSrc": "87548:92:10", + "nodeType": "YulBlock", + "src": "87548:92:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "87581:1:10", + "nodeType": "YulIdentifier", + "src": "87581:1:10" + }, + { + "kind": "number", + "nativeSrc": "87584:4:10", + "nodeType": "YulLiteral", + "src": "87584:4:10", + "type": "", + "value": "0x95" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "87577:3:10", + "nodeType": "YulIdentifier", + "src": "87577:3:10" + }, + "nativeSrc": "87577:12:10", + "nodeType": "YulFunctionCall", + "src": "87577:12:10" + }, + { + "name": "i", + "nativeSrc": "87591:1:10", + "nodeType": "YulIdentifier", + "src": "87591:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "87573:3:10", + "nodeType": "YulIdentifier", + "src": "87573:3:10" + }, + "nativeSrc": "87573:20:10", + "nodeType": "YulFunctionCall", + "src": "87573:20:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "87609:4:10", + "nodeType": "YulIdentifier", + "src": "87609:4:10" + }, + { + "kind": "number", + "nativeSrc": "87615:4:10", + "nodeType": "YulLiteral", + "src": "87615:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "87605:3:10", + "nodeType": "YulIdentifier", + "src": "87605:3:10" + }, + "nativeSrc": "87605:15:10", + "nodeType": "YulFunctionCall", + "src": "87605:15:10" + }, + { + "name": "i", + "nativeSrc": "87622:1:10", + "nodeType": "YulIdentifier", + "src": "87622:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "87601:3:10", + "nodeType": "YulIdentifier", + "src": "87601:3:10" + }, + "nativeSrc": "87601:23:10", + "nodeType": "YulFunctionCall", + "src": "87601:23:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "87595:5:10", + "nodeType": "YulIdentifier", + "src": "87595:5:10" + }, + "nativeSrc": "87595:30:10", + "nodeType": "YulFunctionCall", + "src": "87595:30:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "87566:6:10", + "nodeType": "YulIdentifier", + "src": "87566:6:10" + }, + "nativeSrc": "87566:60:10", + "nodeType": "YulFunctionCall", + "src": "87566:60:10" + }, + "nativeSrc": "87566:60:10", + "nodeType": "YulExpressionStatement", + "src": "87566:60:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "87520:1:10", + "nodeType": "YulIdentifier", + "src": "87520:1:10" + }, + { + "name": "n", + "nativeSrc": "87523:1:10", + "nodeType": "YulIdentifier", + "src": "87523:1:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "87517:2:10", + "nodeType": "YulIdentifier", + "src": "87517:2:10" + }, + "nativeSrc": "87517:8:10", + "nodeType": "YulFunctionCall", + "src": "87517:8:10" + }, + "nativeSrc": "87498:142:10", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "87526:21:10", + "nodeType": "YulBlock", + "src": "87526:21:10", + "statements": [ + { + "nativeSrc": "87528:17:10", + "nodeType": "YulAssignment", + "src": "87528:17:10", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "87537:1:10", + "nodeType": "YulIdentifier", + "src": "87537:1:10" + }, + { + "kind": "number", + "nativeSrc": "87540:4:10", + "nodeType": "YulLiteral", + "src": "87540:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "87533:3:10", + "nodeType": "YulIdentifier", + "src": "87533:3:10" + }, + "nativeSrc": "87533:12:10", + "nodeType": "YulFunctionCall", + "src": "87533:12:10" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "87528:1:10", + "nodeType": "YulIdentifier", + "src": "87528:1:10" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "87502:14:10", + "nodeType": "YulBlock", + "src": "87502:14:10", + "statements": [ + { + "nativeSrc": "87504:10:10", + "nodeType": "YulVariableDeclaration", + "src": "87504:10:10", + "value": { + "kind": "number", + "nativeSrc": "87513:1:10", + "nodeType": "YulLiteral", + "src": "87513:1:10", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "87508:1:10", + "nodeType": "YulTypedName", + "src": "87508:1:10", + "type": "" + } + ] + } + ] + }, + "src": "87498:142:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "87665:1:10", + "nodeType": "YulIdentifier", + "src": "87665:1:10" + }, + { + "kind": "number", + "nativeSrc": "87668:4:10", + "nodeType": "YulLiteral", + "src": "87668:4:10", + "type": "", + "value": "0x75" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "87661:3:10", + "nodeType": "YulIdentifier", + "src": "87661:3:10" + }, + "nativeSrc": "87661:12:10", + "nodeType": "YulFunctionCall", + "src": "87661:12:10" + }, + { + "kind": "number", + "nativeSrc": "87675:66:10", + "nodeType": "YulLiteral", + "src": "87675:66:10", + "type": "", + "value": "0x3d6000803e603e573d6000fd5b3d6000f35b6020600f3d393d51543d52593df3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "87654:6:10", + "nodeType": "YulIdentifier", + "src": "87654:6:10" + }, + "nativeSrc": "87654:88:10", + "nodeType": "YulFunctionCall", + "src": "87654:88:10" + }, + "nativeSrc": "87654:88:10", + "nodeType": "YulExpressionStatement", + "src": "87654:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "87766:1:10", + "nodeType": "YulIdentifier", + "src": "87766:1:10" + }, + { + "kind": "number", + "nativeSrc": "87769:4:10", + "nodeType": "YulLiteral", + "src": "87769:4:10", + "type": "", + "value": "0x55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "87762:3:10", + "nodeType": "YulIdentifier", + "src": "87762:3:10" + }, + "nativeSrc": "87762:12:10", + "nodeType": "YulFunctionCall", + "src": "87762:12:10" + }, + { + "kind": "number", + "nativeSrc": "87776:66:10", + "nodeType": "YulLiteral", + "src": "87776:66:10", + "type": "", + "value": "0xa13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af4" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "87755:6:10", + "nodeType": "YulIdentifier", + "src": "87755:6:10" + }, + "nativeSrc": "87755:88:10", + "nodeType": "YulFunctionCall", + "src": "87755:88:10" + }, + "nativeSrc": "87755:88:10", + "nodeType": "YulExpressionStatement", + "src": "87755:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "87867:1:10", + "nodeType": "YulIdentifier", + "src": "87867:1:10" + }, + { + "kind": "number", + "nativeSrc": "87870:4:10", + "nodeType": "YulLiteral", + "src": "87870:4:10", + "type": "", + "value": "0x35" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "87863:3:10", + "nodeType": "YulIdentifier", + "src": "87863:3:10" + }, + "nativeSrc": "87863:12:10", + "nodeType": "YulFunctionCall", + "src": "87863:12:10" + }, + { + "kind": "number", + "nativeSrc": "87877:48:10", + "nodeType": "YulLiteral", + "src": "87877:48:10", + "type": "", + "value": "0x600f5155f3365814604357363d3d373d3d363d7f360894" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "87856:6:10", + "nodeType": "YulIdentifier", + "src": "87856:6:10" + }, + "nativeSrc": "87856:70:10", + "nodeType": "YulFunctionCall", + "src": "87856:70:10" + }, + "nativeSrc": "87856:70:10", + "nodeType": "YulExpressionStatement", + "src": "87856:70:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "87950:1:10", + "nodeType": "YulIdentifier", + "src": "87950:1:10" + }, + { + "kind": "number", + "nativeSrc": "87953:4:10", + "nodeType": "YulLiteral", + "src": "87953:4:10", + "type": "", + "value": "0x1e" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "87946:3:10", + "nodeType": "YulIdentifier", + "src": "87946:3:10" + }, + "nativeSrc": "87946:12:10", + "nodeType": "YulFunctionCall", + "src": "87946:12:10" + }, + { + "name": "implementation", + "nativeSrc": "87960:14:10", + "nodeType": "YulIdentifier", + "src": "87960:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "87939:6:10", + "nodeType": "YulIdentifier", + "src": "87939:6:10" + }, + "nativeSrc": "87939:36:10", + "nodeType": "YulFunctionCall", + "src": "87939:36:10" + }, + "nativeSrc": "87939:36:10", + "nodeType": "YulExpressionStatement", + "src": "87939:36:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "87999:1:10", + "nodeType": "YulIdentifier", + "src": "87999:1:10" + }, + { + "kind": "number", + "nativeSrc": "88002:4:10", + "nodeType": "YulLiteral", + "src": "88002:4:10", + "type": "", + "value": "0x0a" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "87995:3:10", + "nodeType": "YulIdentifier", + "src": "87995:3:10" + }, + "nativeSrc": "87995:12:10", + "nodeType": "YulFunctionCall", + "src": "87995:12:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "88013:22:10", + "nodeType": "YulLiteral", + "src": "88013:22:10", + "type": "", + "value": "0x6100523d8160233d3973" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "88041:2:10", + "nodeType": "YulLiteral", + "src": "88041:2:10", + "type": "", + "value": "56" + }, + { + "name": "n", + "nativeSrc": "88045:1:10", + "nodeType": "YulIdentifier", + "src": "88045:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "88037:3:10", + "nodeType": "YulIdentifier", + "src": "88037:3:10" + }, + "nativeSrc": "88037:10:10", + "nodeType": "YulFunctionCall", + "src": "88037:10:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "88009:3:10", + "nodeType": "YulIdentifier", + "src": "88009:3:10" + }, + "nativeSrc": "88009:39:10", + "nodeType": "YulFunctionCall", + "src": "88009:39:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "87988:6:10", + "nodeType": "YulIdentifier", + "src": "87988:6:10" + }, + "nativeSrc": "87988:61:10", + "nodeType": "YulFunctionCall", + "src": "87988:61:10" + }, + "nativeSrc": "87988:61:10", + "nodeType": "YulExpressionStatement", + "src": "87988:61:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "88073:1:10", + "nodeType": "YulIdentifier", + "src": "88073:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "88080:1:10", + "nodeType": "YulIdentifier", + "src": "88080:1:10" + }, + { + "kind": "number", + "nativeSrc": "88083:4:10", + "nodeType": "YulLiteral", + "src": "88083:4:10", + "type": "", + "value": "0x95" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "88076:3:10", + "nodeType": "YulIdentifier", + "src": "88076:3:10" + }, + "nativeSrc": "88076:12:10", + "nodeType": "YulFunctionCall", + "src": "88076:12:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "88069:3:10", + "nodeType": "YulIdentifier", + "src": "88069:3:10" + }, + "nativeSrc": "88069:20:10", + "nodeType": "YulFunctionCall", + "src": "88069:20:10" + }, + { + "kind": "number", + "nativeSrc": "88091:1:10", + "nodeType": "YulLiteral", + "src": "88091:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "88062:6:10", + "nodeType": "YulIdentifier", + "src": "88062:6:10" + }, + "nativeSrc": "88062:31:10", + "nodeType": "YulFunctionCall", + "src": "88062:31:10" + }, + "nativeSrc": "88062:31:10", + "nodeType": "YulExpressionStatement", + "src": "88062:31:10" + }, + { + "expression": { + "arguments": [ + { + "name": "c", + "nativeSrc": "88113:1:10", + "nodeType": "YulIdentifier", + "src": "88113:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "88120:4:10", + "nodeType": "YulLiteral", + "src": "88120:4:10", + "type": "", + "value": "0x75" + }, + { + "name": "n", + "nativeSrc": "88126:1:10", + "nodeType": "YulIdentifier", + "src": "88126:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "88116:3:10", + "nodeType": "YulIdentifier", + "src": "88116:3:10" + }, + "nativeSrc": "88116:12:10", + "nodeType": "YulFunctionCall", + "src": "88116:12:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "88106:6:10", + "nodeType": "YulIdentifier", + "src": "88106:6:10" + }, + "nativeSrc": "88106:23:10", + "nodeType": "YulFunctionCall", + "src": "88106:23:10" + }, + "nativeSrc": "88106:23:10", + "nodeType": "YulExpressionStatement", + "src": "88106:23:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "88170:4:10", + "nodeType": "YulLiteral", + "src": "88170:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "c", + "nativeSrc": "88180:1:10", + "nodeType": "YulIdentifier", + "src": "88180:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "88187:1:10", + "nodeType": "YulIdentifier", + "src": "88187:1:10" + }, + { + "kind": "number", + "nativeSrc": "88190:4:10", + "nodeType": "YulLiteral", + "src": "88190:4:10", + "type": "", + "value": "0xb5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "88183:3:10", + "nodeType": "YulIdentifier", + "src": "88183:3:10" + }, + "nativeSrc": "88183:12:10", + "nodeType": "YulFunctionCall", + "src": "88183:12:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "88176:3:10", + "nodeType": "YulIdentifier", + "src": "88176:3:10" + }, + "nativeSrc": "88176:20:10", + "nodeType": "YulFunctionCall", + "src": "88176:20:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "88163:6:10", + "nodeType": "YulIdentifier", + "src": "88163:6:10" + }, + "nativeSrc": "88163:34:10", + "nodeType": "YulFunctionCall", + "src": "88163:34:10" + }, + "nativeSrc": "88163:34:10", + "nodeType": "YulExpressionStatement", + "src": "88163:34:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4147, + "isOffset": false, + "isSlot": false, + "src": "87315:4:10", + "valueSize": 1 + }, + { + "declaration": 4147, + "isOffset": false, + "isSlot": false, + "src": "87609:4:10", + "valueSize": 1 + }, + { + "declaration": 4150, + "isOffset": false, + "isSlot": false, + "src": "87271:1:10", + "valueSize": 1 + }, + { + "declaration": 4150, + "isOffset": false, + "isSlot": false, + "src": "87581:1:10", + "valueSize": 1 + }, + { + "declaration": 4150, + "isOffset": false, + "isSlot": false, + "src": "87665:1:10", + "valueSize": 1 + }, + { + "declaration": 4150, + "isOffset": false, + "isSlot": false, + "src": "87766:1:10", + "valueSize": 1 + }, + { + "declaration": 4150, + "isOffset": false, + "isSlot": false, + "src": "87867:1:10", + "valueSize": 1 + }, + { + "declaration": 4150, + "isOffset": false, + "isSlot": false, + "src": "87950:1:10", + "valueSize": 1 + }, + { + "declaration": 4150, + "isOffset": false, + "isSlot": false, + "src": "87999:1:10", + "valueSize": 1 + }, + { + "declaration": 4150, + "isOffset": false, + "isSlot": false, + "src": "88073:1:10", + "valueSize": 1 + }, + { + "declaration": 4150, + "isOffset": false, + "isSlot": false, + "src": "88113:1:10", + "valueSize": 1 + }, + { + "declaration": 4150, + "isOffset": false, + "isSlot": false, + "src": "88180:1:10", + "valueSize": 1 + }, + { + "declaration": 4145, + "isOffset": false, + "isSlot": false, + "src": "87960:14:10", + "valueSize": 1 + } + ], + "id": 4152, + "nodeType": "InlineAssembly", + "src": "87248:979:10" + } + ] + }, + "documentation": { + "id": 4143, + "nodeType": "StructuredDocumentation", + "src": "86960:94:10", + "text": "@dev Returns the initialization code of the ERC1967I proxy of `implementation` and `args`." + }, + "id": 4154, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeERC1967I", + "nameLocation": "87068:16:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4148, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4145, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "87093:14:10", + "nodeType": "VariableDeclaration", + "scope": 4154, + "src": "87085:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4144, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "87085:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4147, + "mutability": "mutable", + "name": "args", + "nameLocation": "87122:4:10", + "nodeType": "VariableDeclaration", + "scope": 4154, + "src": "87109:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4146, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "87109:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "87084:43:10" + }, + "returnParameters": { + "id": 4151, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4150, + "mutability": "mutable", + "name": "c", + "nameLocation": "87188:1:10", + "nodeType": "VariableDeclaration", + "scope": 4154, + "src": "87175:14:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4149, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "87175:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "87174:16:10" + }, + "scope": 5104, + "src": "87059:1174:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4165, + "nodeType": "Block", + "src": "88480:1004:10", + "statements": [ + { + "AST": { + "nativeSrc": "88542:936:10", + "nodeType": "YulBlock", + "src": "88542:936:10", + "statements": [ + { + "nativeSrc": "88556:20:10", + "nodeType": "YulVariableDeclaration", + "src": "88556:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "88571:4:10", + "nodeType": "YulLiteral", + "src": "88571:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "88565:5:10", + "nodeType": "YulIdentifier", + "src": "88565:5:10" + }, + "nativeSrc": "88565:11:10", + "nodeType": "YulFunctionCall", + "src": "88565:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "88560:1:10", + "nodeType": "YulTypedName", + "src": "88560:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "88623:20:10", + "nodeType": "YulVariableDeclaration", + "src": "88623:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "88638:4:10", + "nodeType": "YulIdentifier", + "src": "88638:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "88632:5:10", + "nodeType": "YulIdentifier", + "src": "88632:5:10" + }, + "nativeSrc": "88632:11:10", + "nodeType": "YulFunctionCall", + "src": "88632:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "88627:1:10", + "nodeType": "YulTypedName", + "src": "88627:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "88758:14:10", + "nodeType": "YulIdentifier", + "src": "88758:14:10" + }, + "nativeSrc": "88758:16:10", + "nodeType": "YulFunctionCall", + "src": "88758:16:10" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "88776:14:10", + "nodeType": "YulIdentifier", + "src": "88776:14:10" + }, + "nativeSrc": "88776:16:10", + "nodeType": "YulFunctionCall", + "src": "88776:16:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "88797:1:10", + "nodeType": "YulIdentifier", + "src": "88797:1:10" + }, + { + "kind": "number", + "nativeSrc": "88800:6:10", + "nodeType": "YulLiteral", + "src": "88800:6:10", + "type": "", + "value": "0xffad" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "88794:2:10", + "nodeType": "YulIdentifier", + "src": "88794:2:10" + }, + "nativeSrc": "88794:13:10", + "nodeType": "YulFunctionCall", + "src": "88794:13:10" + } + ], + "functionName": { + "name": "returndatacopy", + "nativeSrc": "88743:14:10", + "nodeType": "YulIdentifier", + "src": "88743:14:10" + }, + "nativeSrc": "88743:65:10", + "nodeType": "YulFunctionCall", + "src": "88743:65:10" + }, + "nativeSrc": "88743:65:10", + "nodeType": "YulExpressionStatement", + "src": "88743:65:10" + }, + { + "body": { + "nativeSrc": "88872:92:10", + "nodeType": "YulBlock", + "src": "88872:92:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "88905:1:10", + "nodeType": "YulIdentifier", + "src": "88905:1:10" + }, + { + "kind": "number", + "nativeSrc": "88908:4:10", + "nodeType": "YulLiteral", + "src": "88908:4:10", + "type": "", + "value": "0x75" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "88901:3:10", + "nodeType": "YulIdentifier", + "src": "88901:3:10" + }, + "nativeSrc": "88901:12:10", + "nodeType": "YulFunctionCall", + "src": "88901:12:10" + }, + { + "name": "i", + "nativeSrc": "88915:1:10", + "nodeType": "YulIdentifier", + "src": "88915:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "88897:3:10", + "nodeType": "YulIdentifier", + "src": "88897:3:10" + }, + "nativeSrc": "88897:20:10", + "nodeType": "YulFunctionCall", + "src": "88897:20:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "88933:4:10", + "nodeType": "YulIdentifier", + "src": "88933:4:10" + }, + { + "kind": "number", + "nativeSrc": "88939:4:10", + "nodeType": "YulLiteral", + "src": "88939:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "88929:3:10", + "nodeType": "YulIdentifier", + "src": "88929:3:10" + }, + "nativeSrc": "88929:15:10", + "nodeType": "YulFunctionCall", + "src": "88929:15:10" + }, + { + "name": "i", + "nativeSrc": "88946:1:10", + "nodeType": "YulIdentifier", + "src": "88946:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "88925:3:10", + "nodeType": "YulIdentifier", + "src": "88925:3:10" + }, + "nativeSrc": "88925:23:10", + "nodeType": "YulFunctionCall", + "src": "88925:23:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "88919:5:10", + "nodeType": "YulIdentifier", + "src": "88919:5:10" + }, + "nativeSrc": "88919:30:10", + "nodeType": "YulFunctionCall", + "src": "88919:30:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "88890:6:10", + "nodeType": "YulIdentifier", + "src": "88890:6:10" + }, + "nativeSrc": "88890:60:10", + "nodeType": "YulFunctionCall", + "src": "88890:60:10" + }, + "nativeSrc": "88890:60:10", + "nodeType": "YulExpressionStatement", + "src": "88890:60:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "88844:1:10", + "nodeType": "YulIdentifier", + "src": "88844:1:10" + }, + { + "name": "n", + "nativeSrc": "88847:1:10", + "nodeType": "YulIdentifier", + "src": "88847:1:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "88841:2:10", + "nodeType": "YulIdentifier", + "src": "88841:2:10" + }, + "nativeSrc": "88841:8:10", + "nodeType": "YulFunctionCall", + "src": "88841:8:10" + }, + "nativeSrc": "88822:142:10", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "88850:21:10", + "nodeType": "YulBlock", + "src": "88850:21:10", + "statements": [ + { + "nativeSrc": "88852:17:10", + "nodeType": "YulAssignment", + "src": "88852:17:10", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "88861:1:10", + "nodeType": "YulIdentifier", + "src": "88861:1:10" + }, + { + "kind": "number", + "nativeSrc": "88864:4:10", + "nodeType": "YulLiteral", + "src": "88864:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "88857:3:10", + "nodeType": "YulIdentifier", + "src": "88857:3:10" + }, + "nativeSrc": "88857:12:10", + "nodeType": "YulFunctionCall", + "src": "88857:12:10" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "88852:1:10", + "nodeType": "YulIdentifier", + "src": "88852:1:10" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "88826:14:10", + "nodeType": "YulBlock", + "src": "88826:14:10", + "statements": [ + { + "nativeSrc": "88828:10:10", + "nodeType": "YulVariableDeclaration", + "src": "88828:10:10", + "value": { + "kind": "number", + "nativeSrc": "88837:1:10", + "nodeType": "YulLiteral", + "src": "88837:1:10", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "88832:1:10", + "nodeType": "YulTypedName", + "src": "88832:1:10", + "type": "" + } + ] + } + ] + }, + "src": "88822:142:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "88989:1:10", + "nodeType": "YulIdentifier", + "src": "88989:1:10" + }, + { + "kind": "number", + "nativeSrc": "88992:4:10", + "nodeType": "YulLiteral", + "src": "88992:4:10", + "type": "", + "value": "0x55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "88985:3:10", + "nodeType": "YulIdentifier", + "src": "88985:3:10" + }, + "nativeSrc": "88985:12:10", + "nodeType": "YulFunctionCall", + "src": "88985:12:10" + }, + { + "kind": "number", + "nativeSrc": "88999:66:10", + "nodeType": "YulLiteral", + "src": "88999:66:10", + "type": "", + "value": "0x3d6000803e603e573d6000fd5b3d6000f35b6020600f3d393d51543d52593df3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "88978:6:10", + "nodeType": "YulIdentifier", + "src": "88978:6:10" + }, + "nativeSrc": "88978:88:10", + "nodeType": "YulFunctionCall", + "src": "88978:88:10" + }, + "nativeSrc": "88978:88:10", + "nodeType": "YulExpressionStatement", + "src": "88978:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "89090:1:10", + "nodeType": "YulIdentifier", + "src": "89090:1:10" + }, + { + "kind": "number", + "nativeSrc": "89093:4:10", + "nodeType": "YulLiteral", + "src": "89093:4:10", + "type": "", + "value": "0x35" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "89086:3:10", + "nodeType": "YulIdentifier", + "src": "89086:3:10" + }, + "nativeSrc": "89086:12:10", + "nodeType": "YulFunctionCall", + "src": "89086:12:10" + }, + { + "kind": "number", + "nativeSrc": "89100:66:10", + "nodeType": "YulLiteral", + "src": "89100:66:10", + "type": "", + "value": "0xa13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af4" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "89079:6:10", + "nodeType": "YulIdentifier", + "src": "89079:6:10" + }, + "nativeSrc": "89079:88:10", + "nodeType": "YulFunctionCall", + "src": "89079:88:10" + }, + "nativeSrc": "89079:88:10", + "nodeType": "YulExpressionStatement", + "src": "89079:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "89191:1:10", + "nodeType": "YulIdentifier", + "src": "89191:1:10" + }, + { + "kind": "number", + "nativeSrc": "89194:4:10", + "nodeType": "YulLiteral", + "src": "89194:4:10", + "type": "", + "value": "0x15" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "89187:3:10", + "nodeType": "YulIdentifier", + "src": "89187:3:10" + }, + "nativeSrc": "89187:12:10", + "nodeType": "YulFunctionCall", + "src": "89187:12:10" + }, + { + "kind": "number", + "nativeSrc": "89201:44:10", + "nodeType": "YulLiteral", + "src": "89201:44:10", + "type": "", + "value": "0x5155f3365814604357363d3d373d3d363d7f360894" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "89180:6:10", + "nodeType": "YulIdentifier", + "src": "89180:6:10" + }, + "nativeSrc": "89180:66:10", + "nodeType": "YulFunctionCall", + "src": "89180:66:10" + }, + "nativeSrc": "89180:66:10", + "nodeType": "YulExpressionStatement", + "src": "89180:66:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "89266:4:10", + "nodeType": "YulLiteral", + "src": "89266:4:10", + "type": "", + "value": "0x16" + }, + { + "kind": "number", + "nativeSrc": "89272:6:10", + "nodeType": "YulLiteral", + "src": "89272:6:10", + "type": "", + "value": "0x600f" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "89259:6:10", + "nodeType": "YulIdentifier", + "src": "89259:6:10" + }, + "nativeSrc": "89259:20:10", + "nodeType": "YulFunctionCall", + "src": "89259:20:10" + }, + "nativeSrc": "89259:20:10", + "nodeType": "YulExpressionStatement", + "src": "89259:20:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "89299:4:10", + "nodeType": "YulLiteral", + "src": "89299:4:10", + "type": "", + "value": "0x14" + }, + { + "name": "implementation", + "nativeSrc": "89305:14:10", + "nodeType": "YulIdentifier", + "src": "89305:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "89292:6:10", + "nodeType": "YulIdentifier", + "src": "89292:6:10" + }, + "nativeSrc": "89292:28:10", + "nodeType": "YulFunctionCall", + "src": "89292:28:10" + }, + "nativeSrc": "89292:28:10", + "nodeType": "YulExpressionStatement", + "src": "89292:28:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "89340:4:10", + "nodeType": "YulLiteral", + "src": "89340:4:10", + "type": "", + "value": "0x00" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "89350:22:10", + "nodeType": "YulLiteral", + "src": "89350:22:10", + "type": "", + "value": "0x6100523d8160233d3973" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "89378:2:10", + "nodeType": "YulLiteral", + "src": "89378:2:10", + "type": "", + "value": "56" + }, + { + "name": "n", + "nativeSrc": "89382:1:10", + "nodeType": "YulIdentifier", + "src": "89382:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "89374:3:10", + "nodeType": "YulIdentifier", + "src": "89374:3:10" + }, + "nativeSrc": "89374:10:10", + "nodeType": "YulFunctionCall", + "src": "89374:10:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "89346:3:10", + "nodeType": "YulIdentifier", + "src": "89346:3:10" + }, + "nativeSrc": "89346:39:10", + "nodeType": "YulFunctionCall", + "src": "89346:39:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "89333:6:10", + "nodeType": "YulIdentifier", + "src": "89333:6:10" + }, + "nativeSrc": "89333:53:10", + "nodeType": "YulFunctionCall", + "src": "89333:53:10" + }, + "nativeSrc": "89333:53:10", + "nodeType": "YulExpressionStatement", + "src": "89333:53:10" + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "89406:1:10", + "nodeType": "YulIdentifier", + "src": "89406:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "89415:4:10", + "nodeType": "YulLiteral", + "src": "89415:4:10", + "type": "", + "value": "0x16" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "89409:5:10", + "nodeType": "YulIdentifier", + "src": "89409:5:10" + }, + "nativeSrc": "89409:11:10", + "nodeType": "YulFunctionCall", + "src": "89409:11:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "89399:6:10", + "nodeType": "YulIdentifier", + "src": "89399:6:10" + }, + "nativeSrc": "89399:22:10", + "nodeType": "YulFunctionCall", + "src": "89399:22:10" + }, + "nativeSrc": "89399:22:10", + "nodeType": "YulExpressionStatement", + "src": "89399:22:10" + }, + { + "nativeSrc": "89434:34:10", + "nodeType": "YulAssignment", + "src": "89434:34:10", + "value": { + "arguments": [ + { + "name": "m", + "nativeSrc": "89452:1:10", + "nodeType": "YulIdentifier", + "src": "89452:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "89459:4:10", + "nodeType": "YulLiteral", + "src": "89459:4:10", + "type": "", + "value": "0x75" + }, + { + "name": "n", + "nativeSrc": "89465:1:10", + "nodeType": "YulIdentifier", + "src": "89465:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "89455:3:10", + "nodeType": "YulIdentifier", + "src": "89455:3:10" + }, + "nativeSrc": "89455:12:10", + "nodeType": "YulFunctionCall", + "src": "89455:12:10" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "89442:9:10", + "nodeType": "YulIdentifier", + "src": "89442:9:10" + }, + "nativeSrc": "89442:26:10", + "nodeType": "YulFunctionCall", + "src": "89442:26:10" + }, + "variableNames": [ + { + "name": "hash", + "nativeSrc": "89434:4:10", + "nodeType": "YulIdentifier", + "src": "89434:4:10" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4159, + "isOffset": false, + "isSlot": false, + "src": "88638:4:10", + "valueSize": 1 + }, + { + "declaration": 4159, + "isOffset": false, + "isSlot": false, + "src": "88933:4:10", + "valueSize": 1 + }, + { + "declaration": 4162, + "isOffset": false, + "isSlot": false, + "src": "89434:4:10", + "valueSize": 1 + }, + { + "declaration": 4157, + "isOffset": false, + "isSlot": false, + "src": "89305:14:10", + "valueSize": 1 + } + ], + "id": 4164, + "nodeType": "InlineAssembly", + "src": "88533:945:10" + } + ] + }, + "documentation": { + "id": 4155, + "nodeType": "StructuredDocumentation", + "src": "88239:98:10", + "text": "@dev Returns the initialization code hash of the ERC1967I proxy of `implementation` and `args." + }, + "id": 4166, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeHashERC1967I", + "nameLocation": "88351:20:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4160, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4157, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "88380:14:10", + "nodeType": "VariableDeclaration", + "scope": 4166, + "src": "88372:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4156, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "88372:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4159, + "mutability": "mutable", + "name": "args", + "nameLocation": "88409:4:10", + "nodeType": "VariableDeclaration", + "scope": 4166, + "src": "88396:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4158, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "88396:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "88371:43:10" + }, + "returnParameters": { + "id": 4163, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4162, + "mutability": "mutable", + "name": "hash", + "nameLocation": "88470:4:10", + "nodeType": "VariableDeclaration", + "scope": 4166, + "src": "88462:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4161, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "88462:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "88461:14:10" + }, + "scope": 5104, + "src": "88342:1142:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4195, + "nodeType": "Block", + "src": "89893:145:10", + "statements": [ + { + "assignments": [ + 4181 + ], + "declarations": [ + { + "constant": false, + "id": 4181, + "mutability": "mutable", + "name": "hash", + "nameLocation": "89911:4:10", + "nodeType": "VariableDeclaration", + "scope": 4195, + "src": "89903:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4180, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "89903:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 4186, + "initialValue": { + "arguments": [ + { + "id": 4183, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4169, + "src": "89939:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4184, + "name": "args", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4171, + "src": "89955:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 4182, + "name": "initCodeHashERC1967I", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4006, + 4166 + ], + "referencedDeclaration": 4166, + "src": "89918:20:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (address,bytes memory) pure returns (bytes32)" + } + }, + "id": 4185, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "89918:42:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "89903:57:10" + }, + { + "expression": { + "id": 4193, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4187, + "name": "predicted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4178, + "src": "89970:9:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 4189, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4181, + "src": "90010:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 4190, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4173, + "src": "90016:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 4191, + "name": "deployer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4175, + "src": "90022:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4188, + "name": "predictDeterministicAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3237, + 3510, + 5081 + ], + "referencedDeclaration": 5081, + "src": "89982:27:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_address_$", + "typeString": "function (bytes32,bytes32,address) pure returns (address)" + } + }, + "id": 4192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "89982:49:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "89970:61:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4194, + "nodeType": "ExpressionStatement", + "src": "89970:61:10" + } + ] + }, + "documentation": { + "id": 4167, + "nodeType": "StructuredDocumentation", + "src": "89490:198:10", + "text": "@dev Returns the address of the ERC1967I proxy of `implementation`, `args` with `salt` by `deployer`.\n Note: The returned result has dirty upper 96 bits. Please clean if used in assembly." + }, + "id": 4196, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "predictDeterministicAddressERC1967I", + "nameLocation": "89702:35:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4176, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4169, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "89755:14:10", + "nodeType": "VariableDeclaration", + "scope": 4196, + "src": "89747:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4168, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "89747:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4171, + "mutability": "mutable", + "name": "args", + "nameLocation": "89792:4:10", + "nodeType": "VariableDeclaration", + "scope": 4196, + "src": "89779:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4170, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "89779:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4173, + "mutability": "mutable", + "name": "salt", + "nameLocation": "89814:4:10", + "nodeType": "VariableDeclaration", + "scope": 4196, + "src": "89806:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4172, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "89806:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4175, + "mutability": "mutable", + "name": "deployer", + "nameLocation": "89836:8:10", + "nodeType": "VariableDeclaration", + "scope": 4196, + "src": "89828:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4174, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "89828:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "89737:113:10" + }, + "returnParameters": { + "id": 4179, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4178, + "mutability": "mutable", + "name": "predicted", + "nameLocation": "89882:9:10", + "nodeType": "VariableDeclaration", + "scope": 4196, + "src": "89874:17:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4177, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "89874:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "89873:19:10" + }, + "scope": 5104, + "src": "89693:345:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4205, + "nodeType": "Block", + "src": "90204:371:10", + "statements": [ + { + "AST": { + "nativeSrc": "90266:303:10", + "nodeType": "YulBlock", + "src": "90266:303:10", + "statements": [ + { + "nativeSrc": "90280:19:10", + "nodeType": "YulAssignment", + "src": "90280:19:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "90294:4:10", + "nodeType": "YulLiteral", + "src": "90294:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "90288:5:10", + "nodeType": "YulIdentifier", + "src": "90288:5:10" + }, + "nativeSrc": "90288:11:10", + "nodeType": "YulFunctionCall", + "src": "90288:11:10" + }, + "variableNames": [ + { + "name": "args", + "nativeSrc": "90280:4:10", + "nodeType": "YulIdentifier", + "src": "90280:4:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "args", + "nativeSrc": "90319:4:10", + "nodeType": "YulIdentifier", + "src": "90319:4:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "90329:12:10", + "nodeType": "YulLiteral", + "src": "90329:12:10", + "type": "", + "value": "0xffffffffff" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "90359:8:10", + "nodeType": "YulIdentifier", + "src": "90359:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "90347:11:10", + "nodeType": "YulIdentifier", + "src": "90347:11:10" + }, + "nativeSrc": "90347:21:10", + "nodeType": "YulFunctionCall", + "src": "90347:21:10" + }, + { + "kind": "number", + "nativeSrc": "90370:4:10", + "nodeType": "YulLiteral", + "src": "90370:4:10", + "type": "", + "value": "0x52" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "90343:3:10", + "nodeType": "YulIdentifier", + "src": "90343:3:10" + }, + "nativeSrc": "90343:32:10", + "nodeType": "YulFunctionCall", + "src": "90343:32:10" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "90325:3:10", + "nodeType": "YulIdentifier", + "src": "90325:3:10" + }, + "nativeSrc": "90325:51:10", + "nodeType": "YulFunctionCall", + "src": "90325:51:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "90312:6:10", + "nodeType": "YulIdentifier", + "src": "90312:6:10" + }, + "nativeSrc": "90312:65:10", + "nodeType": "YulFunctionCall", + "src": "90312:65:10" + }, + "nativeSrc": "90312:65:10", + "nodeType": "YulExpressionStatement", + "src": "90312:65:10" + }, + { + "expression": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "90423:8:10", + "nodeType": "YulIdentifier", + "src": "90423:8:10" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "90437:4:10", + "nodeType": "YulIdentifier", + "src": "90437:4:10" + }, + { + "kind": "number", + "nativeSrc": "90443:4:10", + "nodeType": "YulLiteral", + "src": "90443:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "90433:3:10", + "nodeType": "YulIdentifier", + "src": "90433:3:10" + }, + "nativeSrc": "90433:15:10", + "nodeType": "YulFunctionCall", + "src": "90433:15:10" + }, + { + "kind": "number", + "nativeSrc": "90450:4:10", + "nodeType": "YulLiteral", + "src": "90450:4:10", + "type": "", + "value": "0x52" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "90466:4:10", + "nodeType": "YulIdentifier", + "src": "90466:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "90460:5:10", + "nodeType": "YulIdentifier", + "src": "90460:5:10" + }, + "nativeSrc": "90460:11:10", + "nodeType": "YulFunctionCall", + "src": "90460:11:10" + }, + { + "kind": "number", + "nativeSrc": "90473:4:10", + "nodeType": "YulLiteral", + "src": "90473:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "90456:3:10", + "nodeType": "YulIdentifier", + "src": "90456:3:10" + }, + "nativeSrc": "90456:22:10", + "nodeType": "YulFunctionCall", + "src": "90456:22:10" + } + ], + "functionName": { + "name": "extcodecopy", + "nativeSrc": "90411:11:10", + "nodeType": "YulIdentifier", + "src": "90411:11:10" + }, + "nativeSrc": "90411:68:10", + "nodeType": "YulFunctionCall", + "src": "90411:68:10" + }, + "nativeSrc": "90411:68:10", + "nodeType": "YulExpressionStatement", + "src": "90411:68:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "90499:4:10", + "nodeType": "YulLiteral", + "src": "90499:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "90515:4:10", + "nodeType": "YulIdentifier", + "src": "90515:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "90509:5:10", + "nodeType": "YulIdentifier", + "src": "90509:5:10" + }, + "nativeSrc": "90509:11:10", + "nodeType": "YulFunctionCall", + "src": "90509:11:10" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "90526:4:10", + "nodeType": "YulIdentifier", + "src": "90526:4:10" + }, + { + "kind": "number", + "nativeSrc": "90532:4:10", + "nodeType": "YulLiteral", + "src": "90532:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "90522:3:10", + "nodeType": "YulIdentifier", + "src": "90522:3:10" + }, + "nativeSrc": "90522:15:10", + "nodeType": "YulFunctionCall", + "src": "90522:15:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "90505:3:10", + "nodeType": "YulIdentifier", + "src": "90505:3:10" + }, + "nativeSrc": "90505:33:10", + "nodeType": "YulFunctionCall", + "src": "90505:33:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "90492:6:10", + "nodeType": "YulIdentifier", + "src": "90492:6:10" + }, + "nativeSrc": "90492:47:10", + "nodeType": "YulFunctionCall", + "src": "90492:47:10" + }, + "nativeSrc": "90492:47:10", + "nodeType": "YulExpressionStatement", + "src": "90492:47:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4202, + "isOffset": false, + "isSlot": false, + "src": "90280:4:10", + "valueSize": 1 + }, + { + "declaration": 4202, + "isOffset": false, + "isSlot": false, + "src": "90319:4:10", + "valueSize": 1 + }, + { + "declaration": 4202, + "isOffset": false, + "isSlot": false, + "src": "90437:4:10", + "valueSize": 1 + }, + { + "declaration": 4202, + "isOffset": false, + "isSlot": false, + "src": "90466:4:10", + "valueSize": 1 + }, + { + "declaration": 4202, + "isOffset": false, + "isSlot": false, + "src": "90515:4:10", + "valueSize": 1 + }, + { + "declaration": 4202, + "isOffset": false, + "isSlot": false, + "src": "90526:4:10", + "valueSize": 1 + }, + { + "declaration": 4199, + "isOffset": false, + "isSlot": false, + "src": "90359:8:10", + "valueSize": 1 + }, + { + "declaration": 4199, + "isOffset": false, + "isSlot": false, + "src": "90423:8:10", + "valueSize": 1 + } + ], + "id": 4204, + "nodeType": "InlineAssembly", + "src": "90257:312:10" + } + ] + }, + "documentation": { + "id": 4197, + "nodeType": "StructuredDocumentation", + "src": "90044:71:10", + "text": "@dev Equivalent to `argsOnERC1967I(instance, start, 2 ** 256 - 1)`." + }, + "id": 4206, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "argsOnERC1967I", + "nameLocation": "90129:14:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4200, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4199, + "mutability": "mutable", + "name": "instance", + "nameLocation": "90152:8:10", + "nodeType": "VariableDeclaration", + "scope": 4206, + "src": "90144:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4198, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "90144:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "90143:18:10" + }, + "returnParameters": { + "id": 4203, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4202, + "mutability": "mutable", + "name": "args", + "nameLocation": "90198:4:10", + "nodeType": "VariableDeclaration", + "scope": 4206, + "src": "90185:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4201, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "90185:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "90184:19:10" + }, + "scope": 5104, + "src": "90120:455:10", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4217, + "nodeType": "Block", + "src": "90784:485:10", + "statements": [ + { + "AST": { + "nativeSrc": "90846:417:10", + "nodeType": "YulBlock", + "src": "90846:417:10", + "statements": [ + { + "nativeSrc": "90860:19:10", + "nodeType": "YulAssignment", + "src": "90860:19:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "90874:4:10", + "nodeType": "YulLiteral", + "src": "90874:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "90868:5:10", + "nodeType": "YulIdentifier", + "src": "90868:5:10" + }, + "nativeSrc": "90868:11:10", + "nodeType": "YulFunctionCall", + "src": "90868:11:10" + }, + "variableNames": [ + { + "name": "args", + "nativeSrc": "90860:4:10", + "nodeType": "YulIdentifier", + "src": "90860:4:10" + } + ] + }, + { + "nativeSrc": "90892:60:10", + "nodeType": "YulVariableDeclaration", + "src": "90892:60:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "90905:12:10", + "nodeType": "YulLiteral", + "src": "90905:12:10", + "type": "", + "value": "0xffffffffff" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "90935:8:10", + "nodeType": "YulIdentifier", + "src": "90935:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "90923:11:10", + "nodeType": "YulIdentifier", + "src": "90923:11:10" + }, + "nativeSrc": "90923:21:10", + "nodeType": "YulFunctionCall", + "src": "90923:21:10" + }, + { + "kind": "number", + "nativeSrc": "90946:4:10", + "nodeType": "YulLiteral", + "src": "90946:4:10", + "type": "", + "value": "0x52" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "90919:3:10", + "nodeType": "YulIdentifier", + "src": "90919:3:10" + }, + "nativeSrc": "90919:32:10", + "nodeType": "YulFunctionCall", + "src": "90919:32:10" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "90901:3:10", + "nodeType": "YulIdentifier", + "src": "90901:3:10" + }, + "nativeSrc": "90901:51:10", + "nodeType": "YulFunctionCall", + "src": "90901:51:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "90896:1:10", + "nodeType": "YulTypedName", + "src": "90896:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "90965:56:10", + "nodeType": "YulVariableDeclaration", + "src": "90965:56:10", + "value": { + "arguments": [ + { + "name": "n", + "nativeSrc": "90978:1:10", + "nodeType": "YulIdentifier", + "src": "90978:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "90985:8:10", + "nodeType": "YulLiteral", + "src": "90985:8:10", + "type": "", + "value": "0xffffff" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "start", + "nativeSrc": "91002:5:10", + "nodeType": "YulIdentifier", + "src": "91002:5:10" + }, + { + "name": "n", + "nativeSrc": "91009:1:10", + "nodeType": "YulIdentifier", + "src": "91009:1:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "90999:2:10", + "nodeType": "YulIdentifier", + "src": "90999:2:10" + }, + "nativeSrc": "90999:12:10", + "nodeType": "YulFunctionCall", + "src": "90999:12:10" + }, + { + "name": "start", + "nativeSrc": "91013:5:10", + "nodeType": "YulIdentifier", + "src": "91013:5:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "90995:3:10", + "nodeType": "YulIdentifier", + "src": "90995:3:10" + }, + "nativeSrc": "90995:24:10", + "nodeType": "YulFunctionCall", + "src": "90995:24:10" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "90981:3:10", + "nodeType": "YulIdentifier", + "src": "90981:3:10" + }, + "nativeSrc": "90981:39:10", + "nodeType": "YulFunctionCall", + "src": "90981:39:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "90974:3:10", + "nodeType": "YulIdentifier", + "src": "90974:3:10" + }, + "nativeSrc": "90974:47:10", + "nodeType": "YulFunctionCall", + "src": "90974:47:10" + }, + "variables": [ + { + "name": "l", + "nativeSrc": "90969:1:10", + "nodeType": "YulTypedName", + "src": "90969:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "91046:8:10", + "nodeType": "YulIdentifier", + "src": "91046:8:10" + }, + { + "name": "args", + "nativeSrc": "91056:4:10", + "nodeType": "YulIdentifier", + "src": "91056:4:10" + }, + { + "arguments": [ + { + "name": "start", + "nativeSrc": "91066:5:10", + "nodeType": "YulIdentifier", + "src": "91066:5:10" + }, + { + "kind": "number", + "nativeSrc": "91073:4:10", + "nodeType": "YulLiteral", + "src": "91073:4:10", + "type": "", + "value": "0x32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "91062:3:10", + "nodeType": "YulIdentifier", + "src": "91062:3:10" + }, + "nativeSrc": "91062:16:10", + "nodeType": "YulFunctionCall", + "src": "91062:16:10" + }, + { + "arguments": [ + { + "name": "l", + "nativeSrc": "91084:1:10", + "nodeType": "YulIdentifier", + "src": "91084:1:10" + }, + { + "kind": "number", + "nativeSrc": "91087:4:10", + "nodeType": "YulLiteral", + "src": "91087:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "91080:3:10", + "nodeType": "YulIdentifier", + "src": "91080:3:10" + }, + "nativeSrc": "91080:12:10", + "nodeType": "YulFunctionCall", + "src": "91080:12:10" + } + ], + "functionName": { + "name": "extcodecopy", + "nativeSrc": "91034:11:10", + "nodeType": "YulIdentifier", + "src": "91034:11:10" + }, + "nativeSrc": "91034:59:10", + "nodeType": "YulFunctionCall", + "src": "91034:59:10" + }, + "nativeSrc": "91034:59:10", + "nodeType": "YulExpressionStatement", + "src": "91034:59:10" + }, + { + "expression": { + "arguments": [ + { + "name": "args", + "nativeSrc": "91113:4:10", + "nodeType": "YulIdentifier", + "src": "91113:4:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "n", + "nativeSrc": "91127:1:10", + "nodeType": "YulIdentifier", + "src": "91127:1:10" + }, + { + "name": "start", + "nativeSrc": "91130:5:10", + "nodeType": "YulIdentifier", + "src": "91130:5:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "91123:3:10", + "nodeType": "YulIdentifier", + "src": "91123:3:10" + }, + "nativeSrc": "91123:13:10", + "nodeType": "YulFunctionCall", + "src": "91123:13:10" + }, + { + "arguments": [ + { + "name": "start", + "nativeSrc": "91141:5:10", + "nodeType": "YulIdentifier", + "src": "91141:5:10" + }, + { + "name": "n", + "nativeSrc": "91148:1:10", + "nodeType": "YulIdentifier", + "src": "91148:1:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "91138:2:10", + "nodeType": "YulIdentifier", + "src": "91138:2:10" + }, + "nativeSrc": "91138:12:10", + "nodeType": "YulFunctionCall", + "src": "91138:12:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "91119:3:10", + "nodeType": "YulIdentifier", + "src": "91119:3:10" + }, + "nativeSrc": "91119:32:10", + "nodeType": "YulFunctionCall", + "src": "91119:32:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "91106:6:10", + "nodeType": "YulIdentifier", + "src": "91106:6:10" + }, + "nativeSrc": "91106:46:10", + "nodeType": "YulFunctionCall", + "src": "91106:46:10" + }, + "nativeSrc": "91106:46:10", + "nodeType": "YulExpressionStatement", + "src": "91106:46:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "91193:4:10", + "nodeType": "YulLiteral", + "src": "91193:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "91209:4:10", + "nodeType": "YulIdentifier", + "src": "91209:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "91203:5:10", + "nodeType": "YulIdentifier", + "src": "91203:5:10" + }, + "nativeSrc": "91203:11:10", + "nodeType": "YulFunctionCall", + "src": "91203:11:10" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "91220:4:10", + "nodeType": "YulIdentifier", + "src": "91220:4:10" + }, + { + "kind": "number", + "nativeSrc": "91226:4:10", + "nodeType": "YulLiteral", + "src": "91226:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "91216:3:10", + "nodeType": "YulIdentifier", + "src": "91216:3:10" + }, + "nativeSrc": "91216:15:10", + "nodeType": "YulFunctionCall", + "src": "91216:15:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "91199:3:10", + "nodeType": "YulIdentifier", + "src": "91199:3:10" + }, + "nativeSrc": "91199:33:10", + "nodeType": "YulFunctionCall", + "src": "91199:33:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "91186:6:10", + "nodeType": "YulIdentifier", + "src": "91186:6:10" + }, + "nativeSrc": "91186:47:10", + "nodeType": "YulFunctionCall", + "src": "91186:47:10" + }, + "nativeSrc": "91186:47:10", + "nodeType": "YulExpressionStatement", + "src": "91186:47:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4214, + "isOffset": false, + "isSlot": false, + "src": "90860:4:10", + "valueSize": 1 + }, + { + "declaration": 4214, + "isOffset": false, + "isSlot": false, + "src": "91056:4:10", + "valueSize": 1 + }, + { + "declaration": 4214, + "isOffset": false, + "isSlot": false, + "src": "91113:4:10", + "valueSize": 1 + }, + { + "declaration": 4214, + "isOffset": false, + "isSlot": false, + "src": "91209:4:10", + "valueSize": 1 + }, + { + "declaration": 4214, + "isOffset": false, + "isSlot": false, + "src": "91220:4:10", + "valueSize": 1 + }, + { + "declaration": 4209, + "isOffset": false, + "isSlot": false, + "src": "90935:8:10", + "valueSize": 1 + }, + { + "declaration": 4209, + "isOffset": false, + "isSlot": false, + "src": "91046:8:10", + "valueSize": 1 + }, + { + "declaration": 4211, + "isOffset": false, + "isSlot": false, + "src": "91002:5:10", + "valueSize": 1 + }, + { + "declaration": 4211, + "isOffset": false, + "isSlot": false, + "src": "91013:5:10", + "valueSize": 1 + }, + { + "declaration": 4211, + "isOffset": false, + "isSlot": false, + "src": "91066:5:10", + "valueSize": 1 + }, + { + "declaration": 4211, + "isOffset": false, + "isSlot": false, + "src": "91130:5:10", + "valueSize": 1 + }, + { + "declaration": 4211, + "isOffset": false, + "isSlot": false, + "src": "91141:5:10", + "valueSize": 1 + } + ], + "id": 4216, + "nodeType": "InlineAssembly", + "src": "90837:426:10" + } + ] + }, + "documentation": { + "id": 4207, + "nodeType": "StructuredDocumentation", + "src": "90581:71:10", + "text": "@dev Equivalent to `argsOnERC1967I(instance, start, 2 ** 256 - 1)`." + }, + "id": 4218, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "argsOnERC1967I", + "nameLocation": "90666:14:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4212, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4209, + "mutability": "mutable", + "name": "instance", + "nameLocation": "90689:8:10", + "nodeType": "VariableDeclaration", + "scope": 4218, + "src": "90681:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4208, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "90681:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4211, + "mutability": "mutable", + "name": "start", + "nameLocation": "90707:5:10", + "nodeType": "VariableDeclaration", + "scope": 4218, + "src": "90699:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4210, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "90699:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "90680:33:10" + }, + "returnParameters": { + "id": 4215, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4214, + "mutability": "mutable", + "name": "args", + "nameLocation": "90774:4:10", + "nodeType": "VariableDeclaration", + "scope": 4218, + "src": "90761:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4213, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "90761:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "90760:19:10" + }, + "scope": 5104, + "src": "90657:612:10", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4231, + "nodeType": "Block", + "src": "91781:785:10", + "statements": [ + { + "AST": { + "nativeSrc": "91843:717:10", + "nodeType": "YulBlock", + "src": "91843:717:10", + "statements": [ + { + "nativeSrc": "91857:19:10", + "nodeType": "YulAssignment", + "src": "91857:19:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "91871:4:10", + "nodeType": "YulLiteral", + "src": "91871:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "91865:5:10", + "nodeType": "YulIdentifier", + "src": "91865:5:10" + }, + "nativeSrc": "91865:11:10", + "nodeType": "YulFunctionCall", + "src": "91865:11:10" + }, + "variableNames": [ + { + "name": "args", + "nativeSrc": "91857:4:10", + "nodeType": "YulIdentifier", + "src": "91857:4:10" + } + ] + }, + { + "body": { + "nativeSrc": "91916:17:10", + "nodeType": "YulBlock", + "src": "91916:17:10", + "statements": [ + { + "nativeSrc": "91918:13:10", + "nodeType": "YulAssignment", + "src": "91918:13:10", + "value": { + "kind": "number", + "nativeSrc": "91925:6:10", + "nodeType": "YulLiteral", + "src": "91925:6:10", + "type": "", + "value": "0xffff" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "91918:3:10", + "nodeType": "YulIdentifier", + "src": "91918:3:10" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "end", + "nativeSrc": "91902:3:10", + "nodeType": "YulIdentifier", + "src": "91902:3:10" + }, + { + "kind": "number", + "nativeSrc": "91907:6:10", + "nodeType": "YulLiteral", + "src": "91907:6:10", + "type": "", + "value": "0xffff" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "91899:2:10", + "nodeType": "YulIdentifier", + "src": "91899:2:10" + }, + "nativeSrc": "91899:15:10", + "nodeType": "YulFunctionCall", + "src": "91899:15:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "91892:6:10", + "nodeType": "YulIdentifier", + "src": "91892:6:10" + }, + "nativeSrc": "91892:23:10", + "nodeType": "YulFunctionCall", + "src": "91892:23:10" + }, + "nativeSrc": "91889:44:10", + "nodeType": "YulIf", + "src": "91889:44:10" + }, + { + "nativeSrc": "91946:45:10", + "nodeType": "YulVariableDeclaration", + "src": "91946:45:10", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "end", + "nativeSrc": "91963:3:10", + "nodeType": "YulIdentifier", + "src": "91963:3:10" + }, + { + "name": "start", + "nativeSrc": "91968:5:10", + "nodeType": "YulIdentifier", + "src": "91968:5:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "91959:3:10", + "nodeType": "YulIdentifier", + "src": "91959:3:10" + }, + "nativeSrc": "91959:15:10", + "nodeType": "YulFunctionCall", + "src": "91959:15:10" + }, + { + "arguments": [ + { + "name": "start", + "nativeSrc": "91979:5:10", + "nodeType": "YulIdentifier", + "src": "91979:5:10" + }, + { + "name": "end", + "nativeSrc": "91986:3:10", + "nodeType": "YulIdentifier", + "src": "91986:3:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "91976:2:10", + "nodeType": "YulIdentifier", + "src": "91976:2:10" + }, + "nativeSrc": "91976:14:10", + "nodeType": "YulFunctionCall", + "src": "91976:14:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "91955:3:10", + "nodeType": "YulIdentifier", + "src": "91955:3:10" + }, + "nativeSrc": "91955:36:10", + "nodeType": "YulFunctionCall", + "src": "91955:36:10" + }, + "variables": [ + { + "name": "d", + "nativeSrc": "91950:1:10", + "nodeType": "YulTypedName", + "src": "91950:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "92016:8:10", + "nodeType": "YulIdentifier", + "src": "92016:8:10" + }, + { + "name": "args", + "nativeSrc": "92026:4:10", + "nodeType": "YulIdentifier", + "src": "92026:4:10" + }, + { + "arguments": [ + { + "name": "start", + "nativeSrc": "92036:5:10", + "nodeType": "YulIdentifier", + "src": "92036:5:10" + }, + { + "kind": "number", + "nativeSrc": "92043:4:10", + "nodeType": "YulLiteral", + "src": "92043:4:10", + "type": "", + "value": "0x32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "92032:3:10", + "nodeType": "YulIdentifier", + "src": "92032:3:10" + }, + "nativeSrc": "92032:16:10", + "nodeType": "YulFunctionCall", + "src": "92032:16:10" + }, + { + "arguments": [ + { + "name": "d", + "nativeSrc": "92054:1:10", + "nodeType": "YulIdentifier", + "src": "92054:1:10" + }, + { + "kind": "number", + "nativeSrc": "92057:4:10", + "nodeType": "YulLiteral", + "src": "92057:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "92050:3:10", + "nodeType": "YulIdentifier", + "src": "92050:3:10" + }, + "nativeSrc": "92050:12:10", + "nodeType": "YulFunctionCall", + "src": "92050:12:10" + } + ], + "functionName": { + "name": "extcodecopy", + "nativeSrc": "92004:11:10", + "nodeType": "YulIdentifier", + "src": "92004:11:10" + }, + "nativeSrc": "92004:59:10", + "nodeType": "YulFunctionCall", + "src": "92004:59:10" + }, + "nativeSrc": "92004:59:10", + "nodeType": "YulExpressionStatement", + "src": "92004:59:10" + }, + { + "body": { + "nativeSrc": "92118:229:10", + "nodeType": "YulBlock", + "src": "92118:229:10", + "statements": [ + { + "nativeSrc": "92136:41:10", + "nodeType": "YulVariableDeclaration", + "src": "92136:41:10", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "92161:8:10", + "nodeType": "YulIdentifier", + "src": "92161:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "92149:11:10", + "nodeType": "YulIdentifier", + "src": "92149:11:10" + }, + "nativeSrc": "92149:21:10", + "nodeType": "YulFunctionCall", + "src": "92149:21:10" + }, + { + "kind": "number", + "nativeSrc": "92172:4:10", + "nodeType": "YulLiteral", + "src": "92172:4:10", + "type": "", + "value": "0x52" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "92145:3:10", + "nodeType": "YulIdentifier", + "src": "92145:3:10" + }, + "nativeSrc": "92145:32:10", + "nodeType": "YulFunctionCall", + "src": "92145:32:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "92140:1:10", + "nodeType": "YulTypedName", + "src": "92140:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "92209:14:10", + "nodeType": "YulIdentifier", + "src": "92209:14:10" + }, + "nativeSrc": "92209:16:10", + "nodeType": "YulFunctionCall", + "src": "92209:16:10" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "92227:14:10", + "nodeType": "YulIdentifier", + "src": "92227:14:10" + }, + "nativeSrc": "92227:16:10", + "nodeType": "YulFunctionCall", + "src": "92227:16:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "92249:2:10", + "nodeType": "YulLiteral", + "src": "92249:2:10", + "type": "", + "value": "40" + }, + { + "name": "n", + "nativeSrc": "92253:1:10", + "nodeType": "YulIdentifier", + "src": "92253:1:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "92245:3:10", + "nodeType": "YulIdentifier", + "src": "92245:3:10" + }, + "nativeSrc": "92245:10:10", + "nodeType": "YulFunctionCall", + "src": "92245:10:10" + } + ], + "functionName": { + "name": "returndatacopy", + "nativeSrc": "92194:14:10", + "nodeType": "YulIdentifier", + "src": "92194:14:10" + }, + "nativeSrc": "92194:62:10", + "nodeType": "YulFunctionCall", + "src": "92194:62:10" + }, + "nativeSrc": "92194:62:10", + "nodeType": "YulExpressionStatement", + "src": "92194:62:10" + }, + { + "nativeSrc": "92273:60:10", + "nodeType": "YulAssignment", + "src": "92273:60:10", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "n", + "nativeSrc": "92285:1:10", + "nodeType": "YulIdentifier", + "src": "92285:1:10" + }, + { + "name": "start", + "nativeSrc": "92288:5:10", + "nodeType": "YulIdentifier", + "src": "92288:5:10" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "92282:2:10", + "nodeType": "YulIdentifier", + "src": "92282:2:10" + }, + "nativeSrc": "92282:12:10", + "nodeType": "YulFunctionCall", + "src": "92282:12:10" + }, + { + "arguments": [ + { + "name": "d", + "nativeSrc": "92300:1:10", + "nodeType": "YulIdentifier", + "src": "92300:1:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "end", + "nativeSrc": "92310:3:10", + "nodeType": "YulIdentifier", + "src": "92310:3:10" + }, + { + "name": "n", + "nativeSrc": "92315:1:10", + "nodeType": "YulIdentifier", + "src": "92315:1:10" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "92307:2:10", + "nodeType": "YulIdentifier", + "src": "92307:2:10" + }, + "nativeSrc": "92307:10:10", + "nodeType": "YulFunctionCall", + "src": "92307:10:10" + }, + { + "arguments": [ + { + "name": "end", + "nativeSrc": "92323:3:10", + "nodeType": "YulIdentifier", + "src": "92323:3:10" + }, + { + "name": "n", + "nativeSrc": "92328:1:10", + "nodeType": "YulIdentifier", + "src": "92328:1:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "92319:3:10", + "nodeType": "YulIdentifier", + "src": "92319:3:10" + }, + "nativeSrc": "92319:11:10", + "nodeType": "YulFunctionCall", + "src": "92319:11:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "92303:3:10", + "nodeType": "YulIdentifier", + "src": "92303:3:10" + }, + "nativeSrc": "92303:28:10", + "nodeType": "YulFunctionCall", + "src": "92303:28:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "92296:3:10", + "nodeType": "YulIdentifier", + "src": "92296:3:10" + }, + "nativeSrc": "92296:36:10", + "nodeType": "YulFunctionCall", + "src": "92296:36:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "92278:3:10", + "nodeType": "YulIdentifier", + "src": "92278:3:10" + }, + "nativeSrc": "92278:55:10", + "nodeType": "YulFunctionCall", + "src": "92278:55:10" + }, + "variableNames": [ + { + "name": "d", + "nativeSrc": "92273:1:10", + "nodeType": "YulIdentifier", + "src": "92273:1:10" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "92090:4:10", + "nodeType": "YulLiteral", + "src": "92090:4:10", + "type": "", + "value": "0xff" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "92106:4:10", + "nodeType": "YulIdentifier", + "src": "92106:4:10" + }, + { + "name": "d", + "nativeSrc": "92112:1:10", + "nodeType": "YulIdentifier", + "src": "92112:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "92102:3:10", + "nodeType": "YulIdentifier", + "src": "92102:3:10" + }, + "nativeSrc": "92102:12:10", + "nodeType": "YulFunctionCall", + "src": "92102:12:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "92096:5:10", + "nodeType": "YulIdentifier", + "src": "92096:5:10" + }, + "nativeSrc": "92096:19:10", + "nodeType": "YulFunctionCall", + "src": "92096:19:10" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "92086:3:10", + "nodeType": "YulIdentifier", + "src": "92086:3:10" + }, + "nativeSrc": "92086:30:10", + "nodeType": "YulFunctionCall", + "src": "92086:30:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "92079:6:10", + "nodeType": "YulIdentifier", + "src": "92079:6:10" + }, + "nativeSrc": "92079:38:10", + "nodeType": "YulFunctionCall", + "src": "92079:38:10" + }, + "nativeSrc": "92076:271:10", + "nodeType": "YulIf", + "src": "92076:271:10" + }, + { + "expression": { + "arguments": [ + { + "name": "args", + "nativeSrc": "92367:4:10", + "nodeType": "YulIdentifier", + "src": "92367:4:10" + }, + { + "name": "d", + "nativeSrc": "92373:1:10", + "nodeType": "YulIdentifier", + "src": "92373:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "92360:6:10", + "nodeType": "YulIdentifier", + "src": "92360:6:10" + }, + "nativeSrc": "92360:15:10", + "nodeType": "YulFunctionCall", + "src": "92360:15:10" + }, + "nativeSrc": "92360:15:10", + "nodeType": "YulExpressionStatement", + "src": "92360:15:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "92424:4:10", + "nodeType": "YulIdentifier", + "src": "92424:4:10" + }, + { + "kind": "number", + "nativeSrc": "92430:4:10", + "nodeType": "YulLiteral", + "src": "92430:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "92420:3:10", + "nodeType": "YulIdentifier", + "src": "92420:3:10" + }, + "nativeSrc": "92420:15:10", + "nodeType": "YulFunctionCall", + "src": "92420:15:10" + }, + { + "name": "d", + "nativeSrc": "92437:1:10", + "nodeType": "YulIdentifier", + "src": "92437:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "92416:3:10", + "nodeType": "YulIdentifier", + "src": "92416:3:10" + }, + "nativeSrc": "92416:23:10", + "nodeType": "YulFunctionCall", + "src": "92416:23:10" + }, + { + "kind": "number", + "nativeSrc": "92441:1:10", + "nodeType": "YulLiteral", + "src": "92441:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "92409:6:10", + "nodeType": "YulIdentifier", + "src": "92409:6:10" + }, + "nativeSrc": "92409:34:10", + "nodeType": "YulFunctionCall", + "src": "92409:34:10" + }, + "nativeSrc": "92409:34:10", + "nodeType": "YulExpressionStatement", + "src": "92409:34:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "92500:4:10", + "nodeType": "YulLiteral", + "src": "92500:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "92514:4:10", + "nodeType": "YulIdentifier", + "src": "92514:4:10" + }, + { + "kind": "number", + "nativeSrc": "92520:4:10", + "nodeType": "YulLiteral", + "src": "92520:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "92510:3:10", + "nodeType": "YulIdentifier", + "src": "92510:3:10" + }, + "nativeSrc": "92510:15:10", + "nodeType": "YulFunctionCall", + "src": "92510:15:10" + }, + { + "name": "d", + "nativeSrc": "92527:1:10", + "nodeType": "YulIdentifier", + "src": "92527:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "92506:3:10", + "nodeType": "YulIdentifier", + "src": "92506:3:10" + }, + "nativeSrc": "92506:23:10", + "nodeType": "YulFunctionCall", + "src": "92506:23:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "92493:6:10", + "nodeType": "YulIdentifier", + "src": "92493:6:10" + }, + "nativeSrc": "92493:37:10", + "nodeType": "YulFunctionCall", + "src": "92493:37:10" + }, + "nativeSrc": "92493:37:10", + "nodeType": "YulExpressionStatement", + "src": "92493:37:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4228, + "isOffset": false, + "isSlot": false, + "src": "91857:4:10", + "valueSize": 1 + }, + { + "declaration": 4228, + "isOffset": false, + "isSlot": false, + "src": "92026:4:10", + "valueSize": 1 + }, + { + "declaration": 4228, + "isOffset": false, + "isSlot": false, + "src": "92106:4:10", + "valueSize": 1 + }, + { + "declaration": 4228, + "isOffset": false, + "isSlot": false, + "src": "92367:4:10", + "valueSize": 1 + }, + { + "declaration": 4228, + "isOffset": false, + "isSlot": false, + "src": "92424:4:10", + "valueSize": 1 + }, + { + "declaration": 4228, + "isOffset": false, + "isSlot": false, + "src": "92514:4:10", + "valueSize": 1 + }, + { + "declaration": 4225, + "isOffset": false, + "isSlot": false, + "src": "91902:3:10", + "valueSize": 1 + }, + { + "declaration": 4225, + "isOffset": false, + "isSlot": false, + "src": "91918:3:10", + "valueSize": 1 + }, + { + "declaration": 4225, + "isOffset": false, + "isSlot": false, + "src": "91963:3:10", + "valueSize": 1 + }, + { + "declaration": 4225, + "isOffset": false, + "isSlot": false, + "src": "91986:3:10", + "valueSize": 1 + }, + { + "declaration": 4225, + "isOffset": false, + "isSlot": false, + "src": "92310:3:10", + "valueSize": 1 + }, + { + "declaration": 4225, + "isOffset": false, + "isSlot": false, + "src": "92323:3:10", + "valueSize": 1 + }, + { + "declaration": 4221, + "isOffset": false, + "isSlot": false, + "src": "92016:8:10", + "valueSize": 1 + }, + { + "declaration": 4221, + "isOffset": false, + "isSlot": false, + "src": "92161:8:10", + "valueSize": 1 + }, + { + "declaration": 4223, + "isOffset": false, + "isSlot": false, + "src": "91968:5:10", + "valueSize": 1 + }, + { + "declaration": 4223, + "isOffset": false, + "isSlot": false, + "src": "91979:5:10", + "valueSize": 1 + }, + { + "declaration": 4223, + "isOffset": false, + "isSlot": false, + "src": "92036:5:10", + "valueSize": 1 + }, + { + "declaration": 4223, + "isOffset": false, + "isSlot": false, + "src": "92288:5:10", + "valueSize": 1 + } + ], + "id": 4230, + "nodeType": "InlineAssembly", + "src": "91834:726:10" + } + ] + }, + "documentation": { + "id": 4219, + "nodeType": "StructuredDocumentation", + "src": "91275:361:10", + "text": "@dev Returns a slice of the immutable arguments on `instance` from `start` to `end`.\n `start` and `end` will be clamped to the range `[0, args.length]`.\n The `instance` MUST be deployed via the ERC1967 with immutable args functions.\n Otherwise, the behavior is undefined.\n Out-of-gas reverts if `instance` does not have any code." + }, + "id": 4232, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "argsOnERC1967I", + "nameLocation": "91650:14:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4226, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4221, + "mutability": "mutable", + "name": "instance", + "nameLocation": "91673:8:10", + "nodeType": "VariableDeclaration", + "scope": 4232, + "src": "91665:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4220, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "91665:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4223, + "mutability": "mutable", + "name": "start", + "nameLocation": "91691:5:10", + "nodeType": "VariableDeclaration", + "scope": 4232, + "src": "91683:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4222, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "91683:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4225, + "mutability": "mutable", + "name": "end", + "nameLocation": "91706:3:10", + "nodeType": "VariableDeclaration", + "scope": 4232, + "src": "91698:11:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4224, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "91698:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "91664:46:10" + }, + "returnParameters": { + "id": 4229, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4228, + "mutability": "mutable", + "name": "args", + "nameLocation": "91771:4:10", + "nodeType": "VariableDeclaration", + "scope": 4232, + "src": "91758:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4227, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "91758:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "91757:19:10" + }, + "scope": 5104, + "src": "91641:925:10", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4245, + "nodeType": "Block", + "src": "93444:55:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 4241, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "93486:4:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_LibClone_$5104", + "typeString": "library LibClone" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_LibClone_$5104", + "typeString": "library LibClone" + } + ], + "id": 4240, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "93478:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4239, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "93478:7:10", + "typeDescriptions": {} + } + }, + "id": 4242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "93478:13:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4238, + "name": "erc1967Bootstrap", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4246, + 4278 + ], + "referencedDeclaration": 4278, + "src": "93461:16:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$_t_address_$", + "typeString": "function (address) returns (address)" + } + }, + "id": 4243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "93461:31:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 4237, + "id": 4244, + "nodeType": "Return", + "src": "93454:38:10" + } + ] + }, + "documentation": { + "id": 4233, + "nodeType": "StructuredDocumentation", + "src": "93317:67:10", + "text": "@dev Deploys the ERC1967 bootstrap if it has not been deployed." + }, + "id": 4246, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "erc1967Bootstrap", + "nameLocation": "93398:16:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4234, + "nodeType": "ParameterList", + "parameters": [], + "src": "93414:2:10" + }, + "returnParameters": { + "id": 4237, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4236, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4246, + "src": "93435:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4235, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "93435:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "93434:9:10" + }, + "scope": 5104, + "src": "93389:110:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4277, + "nodeType": "Block", + "src": "93668:496:10", + "statements": [ + { + "assignments": [ + 4255 + ], + "declarations": [ + { + "constant": false, + "id": 4255, + "mutability": "mutable", + "name": "c", + "nameLocation": "93691:1:10", + "nodeType": "VariableDeclaration", + "scope": 4277, + "src": "93678:14:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4254, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "93678:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 4259, + "initialValue": { + "arguments": [ + { + "id": 4257, + "name": "authorizedUpgrader", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4249, + "src": "93720:18:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4256, + "name": "initCodeERC1967Bootstrap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4354, + "src": "93695:24:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address) pure returns (bytes memory)" + } + }, + "id": 4258, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "93695:44:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "93678:61:10" + }, + { + "expression": { + "id": 4274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4260, + "name": "bootstrap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4252, + "src": "93749:9:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 4263, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4255, + "src": "93799:1:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 4262, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "93789:9:10", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 4264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "93789:12:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 4267, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "93811:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4266, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "93803:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 4265, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "93803:7:10", + "typeDescriptions": {} + } + }, + "id": 4268, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "93803:10:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "id": 4271, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "93823:4:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_LibClone_$5104", + "typeString": "library LibClone" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_LibClone_$5104", + "typeString": "library LibClone" + } + ], + "id": 4270, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "93815:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4269, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "93815:7:10", + "typeDescriptions": {} + } + }, + "id": 4272, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "93815:13:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4261, + "name": "predictDeterministicAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3237, + 3510, + 5081 + ], + "referencedDeclaration": 5081, + "src": "93761:27:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_address_$", + "typeString": "function (bytes32,bytes32,address) pure returns (address)" + } + }, + "id": 4273, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "93761:68:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "93749:80:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4275, + "nodeType": "ExpressionStatement", + "src": "93749:80:10" + }, + { + "AST": { + "nativeSrc": "93891:267:10", + "nodeType": "YulBlock", + "src": "93891:267:10", + "statements": [ + { + "body": { + "nativeSrc": "93939:209:10", + "nodeType": "YulBlock", + "src": "93939:209:10", + "statements": [ + { + "body": { + "nativeSrc": "94006:128:10", + "nodeType": "YulBlock", + "src": "94006:128:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "94035:4:10", + "nodeType": "YulLiteral", + "src": "94035:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "94041:10:10", + "nodeType": "YulLiteral", + "src": "94041:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "94028:6:10", + "nodeType": "YulIdentifier", + "src": "94028:6:10" + }, + "nativeSrc": "94028:24:10", + "nodeType": "YulFunctionCall", + "src": "94028:24:10" + }, + "nativeSrc": "94028:24:10", + "nodeType": "YulExpressionStatement", + "src": "94028:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "94105:4:10", + "nodeType": "YulLiteral", + "src": "94105:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "94111:4:10", + "nodeType": "YulLiteral", + "src": "94111:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "94098:6:10", + "nodeType": "YulIdentifier", + "src": "94098:6:10" + }, + "nativeSrc": "94098:18:10", + "nodeType": "YulFunctionCall", + "src": "94098:18:10" + }, + "nativeSrc": "94098:18:10", + "nodeType": "YulExpressionStatement", + "src": "94098:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "93975:1:10", + "nodeType": "YulLiteral", + "src": "93975:1:10", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "name": "c", + "nativeSrc": "93982:1:10", + "nodeType": "YulIdentifier", + "src": "93982:1:10" + }, + { + "kind": "number", + "nativeSrc": "93985:4:10", + "nodeType": "YulLiteral", + "src": "93985:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "93978:3:10", + "nodeType": "YulIdentifier", + "src": "93978:3:10" + }, + "nativeSrc": "93978:12:10", + "nodeType": "YulFunctionCall", + "src": "93978:12:10" + }, + { + "arguments": [ + { + "name": "c", + "nativeSrc": "93998:1:10", + "nodeType": "YulIdentifier", + "src": "93998:1:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "93992:5:10", + "nodeType": "YulIdentifier", + "src": "93992:5:10" + }, + "nativeSrc": "93992:8:10", + "nodeType": "YulFunctionCall", + "src": "93992:8:10" + }, + { + "kind": "number", + "nativeSrc": "94002:1:10", + "nodeType": "YulLiteral", + "src": "94002:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "create2", + "nativeSrc": "93967:7:10", + "nodeType": "YulIdentifier", + "src": "93967:7:10" + }, + "nativeSrc": "93967:37:10", + "nodeType": "YulFunctionCall", + "src": "93967:37:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "93960:6:10", + "nodeType": "YulIdentifier", + "src": "93960:6:10" + }, + "nativeSrc": "93960:45:10", + "nodeType": "YulFunctionCall", + "src": "93960:45:10" + }, + "nativeSrc": "93957:177:10", + "nodeType": "YulIf", + "src": "93957:177:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "bootstrap", + "nativeSrc": "93927:9:10", + "nodeType": "YulIdentifier", + "src": "93927:9:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "93915:11:10", + "nodeType": "YulIdentifier", + "src": "93915:11:10" + }, + "nativeSrc": "93915:22:10", + "nodeType": "YulFunctionCall", + "src": "93915:22:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "93908:6:10", + "nodeType": "YulIdentifier", + "src": "93908:6:10" + }, + "nativeSrc": "93908:30:10", + "nodeType": "YulFunctionCall", + "src": "93908:30:10" + }, + "nativeSrc": "93905:243:10", + "nodeType": "YulIf", + "src": "93905:243:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4252, + "isOffset": false, + "isSlot": false, + "src": "93927:9:10", + "valueSize": 1 + }, + { + "declaration": 4255, + "isOffset": false, + "isSlot": false, + "src": "93982:1:10", + "valueSize": 1 + }, + { + "declaration": 4255, + "isOffset": false, + "isSlot": false, + "src": "93998:1:10", + "valueSize": 1 + } + ], + "id": 4276, + "nodeType": "InlineAssembly", + "src": "93882:276:10" + } + ] + }, + "documentation": { + "id": 4247, + "nodeType": "StructuredDocumentation", + "src": "93505:67:10", + "text": "@dev Deploys the ERC1967 bootstrap if it has not been deployed." + }, + "id": 4278, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "erc1967Bootstrap", + "nameLocation": "93586:16:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4250, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4249, + "mutability": "mutable", + "name": "authorizedUpgrader", + "nameLocation": "93611:18:10", + "nodeType": "VariableDeclaration", + "scope": 4278, + "src": "93603:26:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4248, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "93603:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "93602:28:10" + }, + "returnParameters": { + "id": 4253, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4252, + "mutability": "mutable", + "name": "bootstrap", + "nameLocation": "93657:9:10", + "nodeType": "VariableDeclaration", + "scope": 4278, + "src": "93649:17:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4251, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "93649:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "93648:19:10" + }, + "scope": 5104, + "src": "93577:587:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4287, + "nodeType": "Block", + "src": "94303:315:10", + "statements": [ + { + "AST": { + "nativeSrc": "94365:247:10", + "nodeType": "YulBlock", + "src": "94365:247:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "94386:4:10", + "nodeType": "YulLiteral", + "src": "94386:4:10", + "type": "", + "value": "0x00" + }, + { + "name": "implementation", + "nativeSrc": "94392:14:10", + "nodeType": "YulIdentifier", + "src": "94392:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "94379:6:10", + "nodeType": "YulIdentifier", + "src": "94379:6:10" + }, + "nativeSrc": "94379:28:10", + "nodeType": "YulFunctionCall", + "src": "94379:28:10" + }, + "nativeSrc": "94379:28:10", + "nodeType": "YulExpressionStatement", + "src": "94379:28:10" + }, + { + "body": { + "nativeSrc": "94486:116:10", + "nodeType": "YulBlock", + "src": "94486:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "94511:4:10", + "nodeType": "YulLiteral", + "src": "94511:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "94517:10:10", + "nodeType": "YulLiteral", + "src": "94517:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "94504:6:10", + "nodeType": "YulIdentifier", + "src": "94504:6:10" + }, + "nativeSrc": "94504:24:10", + "nodeType": "YulFunctionCall", + "src": "94504:24:10" + }, + "nativeSrc": "94504:24:10", + "nodeType": "YulExpressionStatement", + "src": "94504:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "94577:4:10", + "nodeType": "YulLiteral", + "src": "94577:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "94583:4:10", + "nodeType": "YulLiteral", + "src": "94583:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "94570:6:10", + "nodeType": "YulIdentifier", + "src": "94570:6:10" + }, + "nativeSrc": "94570:18:10", + "nodeType": "YulFunctionCall", + "src": "94570:18:10" + }, + "nativeSrc": "94570:18:10", + "nodeType": "YulExpressionStatement", + "src": "94570:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "94435:3:10", + "nodeType": "YulIdentifier", + "src": "94435:3:10" + }, + "nativeSrc": "94435:5:10", + "nodeType": "YulFunctionCall", + "src": "94435:5:10" + }, + { + "name": "instance", + "nativeSrc": "94442:8:10", + "nodeType": "YulIdentifier", + "src": "94442:8:10" + }, + { + "kind": "number", + "nativeSrc": "94452:1:10", + "nodeType": "YulLiteral", + "src": "94452:1:10", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "94455:4:10", + "nodeType": "YulLiteral", + "src": "94455:4:10", + "type": "", + "value": "0x0c" + }, + { + "kind": "number", + "nativeSrc": "94461:4:10", + "nodeType": "YulLiteral", + "src": "94461:4:10", + "type": "", + "value": "0x14" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "94467:8:10", + "nodeType": "YulIdentifier", + "src": "94467:8:10" + }, + "nativeSrc": "94467:10:10", + "nodeType": "YulFunctionCall", + "src": "94467:10:10" + }, + { + "kind": "number", + "nativeSrc": "94479:4:10", + "nodeType": "YulLiteral", + "src": "94479:4:10", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "call", + "nativeSrc": "94430:4:10", + "nodeType": "YulIdentifier", + "src": "94430:4:10" + }, + "nativeSrc": "94430:54:10", + "nodeType": "YulFunctionCall", + "src": "94430:54:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "94423:6:10", + "nodeType": "YulIdentifier", + "src": "94423:6:10" + }, + "nativeSrc": "94423:62:10", + "nodeType": "YulFunctionCall", + "src": "94423:62:10" + }, + "nativeSrc": "94420:182:10", + "nodeType": "YulIf", + "src": "94420:182:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4283, + "isOffset": false, + "isSlot": false, + "src": "94392:14:10", + "valueSize": 1 + }, + { + "declaration": 4281, + "isOffset": false, + "isSlot": false, + "src": "94442:8:10", + "valueSize": 1 + } + ], + "id": 4286, + "nodeType": "InlineAssembly", + "src": "94356:256:10" + } + ] + }, + "documentation": { + "id": 4279, + "nodeType": "StructuredDocumentation", + "src": "94170:51:10", + "text": "@dev Replaces the implementation at `instance`." + }, + "id": 4288, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "bootstrapERC1967", + "nameLocation": "94235:16:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4284, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4281, + "mutability": "mutable", + "name": "instance", + "nameLocation": "94260:8:10", + "nodeType": "VariableDeclaration", + "scope": 4288, + "src": "94252:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4280, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "94252:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4283, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "94278:14:10", + "nodeType": "VariableDeclaration", + "scope": 4288, + "src": "94270:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4282, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "94270:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "94251:42:10" + }, + "returnParameters": { + "id": 4285, + "nodeType": "ParameterList", + "parameters": [], + "src": "94303:0:10" + }, + "scope": 5104, + "src": "94226:392:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4299, + "nodeType": "Block", + "src": "94825:622:10", + "statements": [ + { + "AST": { + "nativeSrc": "94887:554:10", + "nodeType": "YulBlock", + "src": "94887:554:10", + "statements": [ + { + "nativeSrc": "94901:20:10", + "nodeType": "YulVariableDeclaration", + "src": "94901:20:10", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "94916:4:10", + "nodeType": "YulIdentifier", + "src": "94916:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "94910:5:10", + "nodeType": "YulIdentifier", + "src": "94910:5:10" + }, + "nativeSrc": "94910:11:10", + "nodeType": "YulFunctionCall", + "src": "94910:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "94905:1:10", + "nodeType": "YulTypedName", + "src": "94905:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "data", + "nativeSrc": "94941:4:10", + "nodeType": "YulIdentifier", + "src": "94941:4:10" + }, + { + "name": "implementation", + "nativeSrc": "94947:14:10", + "nodeType": "YulIdentifier", + "src": "94947:14:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "94934:6:10", + "nodeType": "YulIdentifier", + "src": "94934:6:10" + }, + "nativeSrc": "94934:28:10", + "nodeType": "YulFunctionCall", + "src": "94934:28:10" + }, + "nativeSrc": "94934:28:10", + "nodeType": "YulExpressionStatement", + "src": "94934:28:10" + }, + { + "body": { + "nativeSrc": "95060:310:10", + "nodeType": "YulBlock", + "src": "95060:310:10", + "statements": [ + { + "body": { + "nativeSrc": "95106:128:10", + "nodeType": "YulBlock", + "src": "95106:128:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "95135:4:10", + "nodeType": "YulLiteral", + "src": "95135:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "95141:10:10", + "nodeType": "YulLiteral", + "src": "95141:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "95128:6:10", + "nodeType": "YulIdentifier", + "src": "95128:6:10" + }, + "nativeSrc": "95128:24:10", + "nodeType": "YulFunctionCall", + "src": "95128:24:10" + }, + "nativeSrc": "95128:24:10", + "nodeType": "YulExpressionStatement", + "src": "95128:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "95205:4:10", + "nodeType": "YulLiteral", + "src": "95205:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "95211:4:10", + "nodeType": "YulLiteral", + "src": "95211:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "95198:6:10", + "nodeType": "YulIdentifier", + "src": "95198:6:10" + }, + "nativeSrc": "95198:18:10", + "nodeType": "YulFunctionCall", + "src": "95198:18:10" + }, + "nativeSrc": "95198:18:10", + "nodeType": "YulExpressionStatement", + "src": "95198:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "95088:14:10", + "nodeType": "YulIdentifier", + "src": "95088:14:10" + }, + "nativeSrc": "95088:16:10", + "nodeType": "YulFunctionCall", + "src": "95088:16:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "95081:6:10", + "nodeType": "YulIdentifier", + "src": "95081:6:10" + }, + "nativeSrc": "95081:24:10", + "nodeType": "YulFunctionCall", + "src": "95081:24:10" + }, + "nativeSrc": "95078:156:10", + "nodeType": "YulIf", + "src": "95078:156:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "95272:4:10", + "nodeType": "YulLiteral", + "src": "95272:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "95266:5:10", + "nodeType": "YulIdentifier", + "src": "95266:5:10" + }, + "nativeSrc": "95266:11:10", + "nodeType": "YulFunctionCall", + "src": "95266:11:10" + }, + { + "kind": "number", + "nativeSrc": "95279:4:10", + "nodeType": "YulLiteral", + "src": "95279:4:10", + "type": "", + "value": "0x00" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "95285:14:10", + "nodeType": "YulIdentifier", + "src": "95285:14:10" + }, + "nativeSrc": "95285:16:10", + "nodeType": "YulFunctionCall", + "src": "95285:16:10" + } + ], + "functionName": { + "name": "returndatacopy", + "nativeSrc": "95251:14:10", + "nodeType": "YulIdentifier", + "src": "95251:14:10" + }, + "nativeSrc": "95251:51:10", + "nodeType": "YulFunctionCall", + "src": "95251:51:10" + }, + "nativeSrc": "95251:51:10", + "nodeType": "YulExpressionStatement", + "src": "95251:51:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "95332:4:10", + "nodeType": "YulLiteral", + "src": "95332:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "95326:5:10", + "nodeType": "YulIdentifier", + "src": "95326:5:10" + }, + "nativeSrc": "95326:11:10", + "nodeType": "YulFunctionCall", + "src": "95326:11:10" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "95339:14:10", + "nodeType": "YulIdentifier", + "src": "95339:14:10" + }, + "nativeSrc": "95339:16:10", + "nodeType": "YulFunctionCall", + "src": "95339:16:10" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "95319:6:10", + "nodeType": "YulIdentifier", + "src": "95319:6:10" + }, + "nativeSrc": "95319:37:10", + "nodeType": "YulFunctionCall", + "src": "95319:37:10" + }, + "nativeSrc": "95319:37:10", + "nodeType": "YulExpressionStatement", + "src": "95319:37:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "94990:3:10", + "nodeType": "YulIdentifier", + "src": "94990:3:10" + }, + "nativeSrc": "94990:5:10", + "nodeType": "YulFunctionCall", + "src": "94990:5:10" + }, + { + "name": "instance", + "nativeSrc": "94997:8:10", + "nodeType": "YulIdentifier", + "src": "94997:8:10" + }, + { + "kind": "number", + "nativeSrc": "95007:1:10", + "nodeType": "YulLiteral", + "src": "95007:1:10", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "name": "data", + "nativeSrc": "95014:4:10", + "nodeType": "YulIdentifier", + "src": "95014:4:10" + }, + { + "kind": "number", + "nativeSrc": "95020:4:10", + "nodeType": "YulLiteral", + "src": "95020:4:10", + "type": "", + "value": "0x0c" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "95010:3:10", + "nodeType": "YulIdentifier", + "src": "95010:3:10" + }, + "nativeSrc": "95010:15:10", + "nodeType": "YulFunctionCall", + "src": "95010:15:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "95031:1:10", + "nodeType": "YulIdentifier", + "src": "95031:1:10" + }, + { + "kind": "number", + "nativeSrc": "95034:4:10", + "nodeType": "YulLiteral", + "src": "95034:4:10", + "type": "", + "value": "0x14" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "95027:3:10", + "nodeType": "YulIdentifier", + "src": "95027:3:10" + }, + "nativeSrc": "95027:12:10", + "nodeType": "YulFunctionCall", + "src": "95027:12:10" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "95041:8:10", + "nodeType": "YulIdentifier", + "src": "95041:8:10" + }, + "nativeSrc": "95041:10:10", + "nodeType": "YulFunctionCall", + "src": "95041:10:10" + }, + { + "kind": "number", + "nativeSrc": "95053:4:10", + "nodeType": "YulLiteral", + "src": "95053:4:10", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "call", + "nativeSrc": "94985:4:10", + "nodeType": "YulIdentifier", + "src": "94985:4:10" + }, + "nativeSrc": "94985:73:10", + "nodeType": "YulFunctionCall", + "src": "94985:73:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "94978:6:10", + "nodeType": "YulIdentifier", + "src": "94978:6:10" + }, + "nativeSrc": "94978:81:10", + "nodeType": "YulFunctionCall", + "src": "94978:81:10" + }, + "nativeSrc": "94975:395:10", + "nodeType": "YulIf", + "src": "94975:395:10" + }, + { + "expression": { + "arguments": [ + { + "name": "data", + "nativeSrc": "95390:4:10", + "nodeType": "YulIdentifier", + "src": "95390:4:10" + }, + { + "name": "n", + "nativeSrc": "95396:1:10", + "nodeType": "YulIdentifier", + "src": "95396:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "95383:6:10", + "nodeType": "YulIdentifier", + "src": "95383:6:10" + }, + "nativeSrc": "95383:15:10", + "nodeType": "YulFunctionCall", + "src": "95383:15:10" + }, + "nativeSrc": "95383:15:10", + "nodeType": "YulExpressionStatement", + "src": "95383:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4295, + "isOffset": false, + "isSlot": false, + "src": "94916:4:10", + "valueSize": 1 + }, + { + "declaration": 4295, + "isOffset": false, + "isSlot": false, + "src": "94941:4:10", + "valueSize": 1 + }, + { + "declaration": 4295, + "isOffset": false, + "isSlot": false, + "src": "95014:4:10", + "valueSize": 1 + }, + { + "declaration": 4295, + "isOffset": false, + "isSlot": false, + "src": "95390:4:10", + "valueSize": 1 + }, + { + "declaration": 4293, + "isOffset": false, + "isSlot": false, + "src": "94947:14:10", + "valueSize": 1 + }, + { + "declaration": 4291, + "isOffset": false, + "isSlot": false, + "src": "94997:8:10", + "valueSize": 1 + } + ], + "id": 4298, + "nodeType": "InlineAssembly", + "src": "94878:563:10" + } + ] + }, + "documentation": { + "id": 4289, + "nodeType": "StructuredDocumentation", + "src": "94624:81:10", + "text": "@dev Replaces the implementation at `instance`, and then call it with `data`." + }, + "id": 4300, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "bootstrapERC1967AndCall", + "nameLocation": "94719:23:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4296, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4291, + "mutability": "mutable", + "name": "instance", + "nameLocation": "94751:8:10", + "nodeType": "VariableDeclaration", + "scope": 4300, + "src": "94743:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4290, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "94743:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4293, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "94769:14:10", + "nodeType": "VariableDeclaration", + "scope": 4300, + "src": "94761:22:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4292, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "94761:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4295, + "mutability": "mutable", + "name": "data", + "nameLocation": "94798:4:10", + "nodeType": "VariableDeclaration", + "scope": 4300, + "src": "94785:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4294, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "94785:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "94742:61:10" + }, + "returnParameters": { + "id": 4297, + "nodeType": "ParameterList", + "parameters": [], + "src": "94825:0:10" + }, + "scope": 5104, + "src": "94710:737:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4317, + "nodeType": "Block", + "src": "95632:97:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 4309, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "95701:4:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_LibClone_$5104", + "typeString": "library LibClone" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_LibClone_$5104", + "typeString": "library LibClone" + } + ], + "id": 4308, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "95693:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4307, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "95693:7:10", + "typeDescriptions": {} + } + }, + "id": 4310, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "95693:13:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 4313, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "95716:4:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_LibClone_$5104", + "typeString": "library LibClone" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_LibClone_$5104", + "typeString": "library LibClone" + } + ], + "id": 4312, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "95708:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4311, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "95708:7:10", + "typeDescriptions": {} + } + }, + "id": 4314, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "95708:13:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4306, + "name": "predictDeterministicAddressERC1967Bootstrap", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4318, + 4344 + ], + "referencedDeclaration": 4344, + "src": "95649:43:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$returns$_t_address_$", + "typeString": "function (address,address) pure returns (address)" + } + }, + "id": 4315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "95649:73:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 4305, + "id": 4316, + "nodeType": "Return", + "src": "95642:80:10" + } + ] + }, + "documentation": { + "id": 4301, + "nodeType": "StructuredDocumentation", + "src": "95453:87:10", + "text": "@dev Returns the implementation address of the ERC1967 bootstrap for this contract." + }, + "id": 4318, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "predictDeterministicAddressERC1967Bootstrap", + "nameLocation": "95554:43:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4302, + "nodeType": "ParameterList", + "parameters": [], + "src": "95597:2:10" + }, + "returnParameters": { + "id": 4305, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4304, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4318, + "src": "95623:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4303, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "95623:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "95622:9:10" + }, + "scope": 5104, + "src": "95545:184:10", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4343, + "nodeType": "Block", + "src": "95980:152:10", + "statements": [ + { + "assignments": [ + 4329 + ], + "declarations": [ + { + "constant": false, + "id": 4329, + "mutability": "mutable", + "name": "hash", + "nameLocation": "95998:4:10", + "nodeType": "VariableDeclaration", + "scope": 4343, + "src": "95990:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4328, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "95990:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 4333, + "initialValue": { + "arguments": [ + { + "id": 4331, + "name": "authorizedUpgrader", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4321, + "src": "96034:18:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4330, + "name": "initCodeHashERC1967Bootstrap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4369, + "src": "96005:28:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_bytes32_$", + "typeString": "function (address) pure returns (bytes32)" + } + }, + "id": 4332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "96005:48:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "95990:63:10" + }, + { + "expression": { + "arguments": [ + { + "id": 4335, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4329, + "src": "96098:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 4338, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "96112:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4337, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "96104:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 4336, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "96104:7:10", + "typeDescriptions": {} + } + }, + "id": 4339, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "96104:10:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 4340, + "name": "deployer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4323, + "src": "96116:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4334, + "name": "predictDeterministicAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3237, + 3510, + 5081 + ], + "referencedDeclaration": 5081, + "src": "96070:27:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_address_$", + "typeString": "function (bytes32,bytes32,address) pure returns (address)" + } + }, + "id": 4341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "96070:55:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 4327, + "id": 4342, + "nodeType": "Return", + "src": "96063:62:10" + } + ] + }, + "documentation": { + "id": 4319, + "nodeType": "StructuredDocumentation", + "src": "95735:87:10", + "text": "@dev Returns the implementation address of the ERC1967 bootstrap for this contract." + }, + "id": 4344, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "predictDeterministicAddressERC1967Bootstrap", + "nameLocation": "95836:43:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4324, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4321, + "mutability": "mutable", + "name": "authorizedUpgrader", + "nameLocation": "95897:18:10", + "nodeType": "VariableDeclaration", + "scope": 4344, + "src": "95889:26:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4320, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "95889:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4323, + "mutability": "mutable", + "name": "deployer", + "nameLocation": "95933:8:10", + "nodeType": "VariableDeclaration", + "scope": 4344, + "src": "95925:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4322, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "95925:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "95879:68:10" + }, + "returnParameters": { + "id": 4327, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4326, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4344, + "src": "95971:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4325, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "95971:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "95970:9:10" + }, + "scope": 5104, + "src": "95827:305:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4353, + "nodeType": "Block", + "src": "96338:592:10", + "statements": [ + { + "AST": { + "nativeSrc": "96400:524:10", + "nodeType": "YulBlock", + "src": "96400:524:10", + "statements": [ + { + "nativeSrc": "96414:16:10", + "nodeType": "YulAssignment", + "src": "96414:16:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "96425:4:10", + "nodeType": "YulLiteral", + "src": "96425:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "96419:5:10", + "nodeType": "YulIdentifier", + "src": "96419:5:10" + }, + "nativeSrc": "96419:11:10", + "nodeType": "YulFunctionCall", + "src": "96419:11:10" + }, + "variableNames": [ + { + "name": "c", + "nativeSrc": "96414:1:10", + "nodeType": "YulIdentifier", + "src": "96414:1:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "96454:1:10", + "nodeType": "YulIdentifier", + "src": "96454:1:10" + }, + { + "kind": "number", + "nativeSrc": "96457:4:10", + "nodeType": "YulLiteral", + "src": "96457:4:10", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "96450:3:10", + "nodeType": "YulIdentifier", + "src": "96450:3:10" + }, + "nativeSrc": "96450:12:10", + "nodeType": "YulFunctionCall", + "src": "96450:12:10" + }, + { + "kind": "number", + "nativeSrc": "96464:66:10", + "nodeType": "YulLiteral", + "src": "96464:66:10", + "type": "", + "value": "0x3d3560601c5af46047573d6000383e3d38fd0000000000000000000000000000" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "96443:6:10", + "nodeType": "YulIdentifier", + "src": "96443:6:10" + }, + "nativeSrc": "96443:88:10", + "nodeType": "YulFunctionCall", + "src": "96443:88:10" + }, + "nativeSrc": "96443:88:10", + "nodeType": "YulExpressionStatement", + "src": "96443:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "96555:1:10", + "nodeType": "YulIdentifier", + "src": "96555:1:10" + }, + { + "kind": "number", + "nativeSrc": "96558:4:10", + "nodeType": "YulLiteral", + "src": "96558:4:10", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "96551:3:10", + "nodeType": "YulIdentifier", + "src": "96551:3:10" + }, + "nativeSrc": "96551:12:10", + "nodeType": "YulFunctionCall", + "src": "96551:12:10" + }, + { + "kind": "number", + "nativeSrc": "96565:66:10", + "nodeType": "YulLiteral", + "src": "96565:66:10", + "type": "", + "value": "0xa920a3ca505d382bbc55601436116049575b005b363d3d373d3d601436036014" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "96544:6:10", + "nodeType": "YulIdentifier", + "src": "96544:6:10" + }, + "nativeSrc": "96544:88:10", + "nodeType": "YulFunctionCall", + "src": "96544:88:10" + }, + "nativeSrc": "96544:88:10", + "nodeType": "YulExpressionStatement", + "src": "96544:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "96656:1:10", + "nodeType": "YulIdentifier", + "src": "96656:1:10" + }, + { + "kind": "number", + "nativeSrc": "96659:4:10", + "nodeType": "YulLiteral", + "src": "96659:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "96652:3:10", + "nodeType": "YulIdentifier", + "src": "96652:3:10" + }, + "nativeSrc": "96652:12:10", + "nodeType": "YulFunctionCall", + "src": "96652:12:10" + }, + { + "kind": "number", + "nativeSrc": "96666:66:10", + "nodeType": "YulLiteral", + "src": "96666:66:10", + "type": "", + "value": "0x0338573d3560601c7f360894a13ba1a3210667c828492db98dca3e2076cc3735" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "96645:6:10", + "nodeType": "YulIdentifier", + "src": "96645:6:10" + }, + "nativeSrc": "96645:88:10", + "nodeType": "YulFunctionCall", + "src": "96645:88:10" + }, + "nativeSrc": "96645:88:10", + "nodeType": "YulExpressionStatement", + "src": "96645:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "96757:1:10", + "nodeType": "YulIdentifier", + "src": "96757:1:10" + }, + { + "kind": "number", + "nativeSrc": "96760:4:10", + "nodeType": "YulLiteral", + "src": "96760:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "96753:3:10", + "nodeType": "YulIdentifier", + "src": "96753:3:10" + }, + "nativeSrc": "96753:12:10", + "nodeType": "YulFunctionCall", + "src": "96753:12:10" + }, + { + "name": "authorizedUpgrader", + "nativeSrc": "96767:18:10", + "nodeType": "YulIdentifier", + "src": "96767:18:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "96746:6:10", + "nodeType": "YulIdentifier", + "src": "96746:6:10" + }, + "nativeSrc": "96746:40:10", + "nodeType": "YulFunctionCall", + "src": "96746:40:10" + }, + "nativeSrc": "96746:40:10", + "nodeType": "YulExpressionStatement", + "src": "96746:40:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "96810:1:10", + "nodeType": "YulIdentifier", + "src": "96810:1:10" + }, + { + "kind": "number", + "nativeSrc": "96813:4:10", + "nodeType": "YulLiteral", + "src": "96813:4:10", + "type": "", + "value": "0x0c" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "96806:3:10", + "nodeType": "YulIdentifier", + "src": "96806:3:10" + }, + "nativeSrc": "96806:12:10", + "nodeType": "YulFunctionCall", + "src": "96806:12:10" + }, + { + "kind": "number", + "nativeSrc": "96820:26:10", + "nodeType": "YulLiteral", + "src": "96820:26:10", + "type": "", + "value": "0x606880600a3d393df3fe3373" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "96799:6:10", + "nodeType": "YulIdentifier", + "src": "96799:6:10" + }, + "nativeSrc": "96799:48:10", + "nodeType": "YulFunctionCall", + "src": "96799:48:10" + }, + "nativeSrc": "96799:48:10", + "nodeType": "YulExpressionStatement", + "src": "96799:48:10" + }, + { + "expression": { + "arguments": [ + { + "name": "c", + "nativeSrc": "96867:1:10", + "nodeType": "YulIdentifier", + "src": "96867:1:10" + }, + { + "kind": "number", + "nativeSrc": "96870:4:10", + "nodeType": "YulLiteral", + "src": "96870:4:10", + "type": "", + "value": "0x72" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "96860:6:10", + "nodeType": "YulIdentifier", + "src": "96860:6:10" + }, + "nativeSrc": "96860:15:10", + "nodeType": "YulFunctionCall", + "src": "96860:15:10" + }, + "nativeSrc": "96860:15:10", + "nodeType": "YulExpressionStatement", + "src": "96860:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "96895:4:10", + "nodeType": "YulLiteral", + "src": "96895:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "c", + "nativeSrc": "96905:1:10", + "nodeType": "YulIdentifier", + "src": "96905:1:10" + }, + { + "kind": "number", + "nativeSrc": "96908:4:10", + "nodeType": "YulLiteral", + "src": "96908:4:10", + "type": "", + "value": "0xa0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "96901:3:10", + "nodeType": "YulIdentifier", + "src": "96901:3:10" + }, + "nativeSrc": "96901:12:10", + "nodeType": "YulFunctionCall", + "src": "96901:12:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "96888:6:10", + "nodeType": "YulIdentifier", + "src": "96888:6:10" + }, + "nativeSrc": "96888:26:10", + "nodeType": "YulFunctionCall", + "src": "96888:26:10" + }, + "nativeSrc": "96888:26:10", + "nodeType": "YulExpressionStatement", + "src": "96888:26:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4347, + "isOffset": false, + "isSlot": false, + "src": "96767:18:10", + "valueSize": 1 + }, + { + "declaration": 4350, + "isOffset": false, + "isSlot": false, + "src": "96414:1:10", + "valueSize": 1 + }, + { + "declaration": 4350, + "isOffset": false, + "isSlot": false, + "src": "96454:1:10", + "valueSize": 1 + }, + { + "declaration": 4350, + "isOffset": false, + "isSlot": false, + "src": "96555:1:10", + "valueSize": 1 + }, + { + "declaration": 4350, + "isOffset": false, + "isSlot": false, + "src": "96656:1:10", + "valueSize": 1 + }, + { + "declaration": 4350, + "isOffset": false, + "isSlot": false, + "src": "96757:1:10", + "valueSize": 1 + }, + { + "declaration": 4350, + "isOffset": false, + "isSlot": false, + "src": "96810:1:10", + "valueSize": 1 + }, + { + "declaration": 4350, + "isOffset": false, + "isSlot": false, + "src": "96867:1:10", + "valueSize": 1 + }, + { + "declaration": 4350, + "isOffset": false, + "isSlot": false, + "src": "96905:1:10", + "valueSize": 1 + } + ], + "id": 4352, + "nodeType": "InlineAssembly", + "src": "96391:533:10" + } + ] + }, + "documentation": { + "id": 4345, + "nodeType": "StructuredDocumentation", + "src": "96138:66:10", + "text": "@dev Returns the initialization code of the ERC1967 bootstrap." + }, + "id": 4354, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeERC1967Bootstrap", + "nameLocation": "96218:24:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4348, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4347, + "mutability": "mutable", + "name": "authorizedUpgrader", + "nameLocation": "96251:18:10", + "nodeType": "VariableDeclaration", + "scope": 4354, + "src": "96243:26:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4346, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "96243:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "96242:28:10" + }, + "returnParameters": { + "id": 4351, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4350, + "mutability": "mutable", + "name": "c", + "nameLocation": "96331:1:10", + "nodeType": "VariableDeclaration", + "scope": 4354, + "src": "96318:14:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4349, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "96318:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "96317:16:10" + }, + "scope": 5104, + "src": "96209:721:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4368, + "nodeType": "Block", + "src": "97138:79:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 4364, + "name": "authorizedUpgrader", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4357, + "src": "97190:18:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4363, + "name": "initCodeERC1967Bootstrap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4354, + "src": "97165:24:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address) pure returns (bytes memory)" + } + }, + "id": 4365, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "97165:44:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 4362, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "97155:9:10", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 4366, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "97155:55:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 4361, + "id": 4367, + "nodeType": "Return", + "src": "97148:62:10" + } + ] + }, + "documentation": { + "id": 4355, + "nodeType": "StructuredDocumentation", + "src": "96936:71:10", + "text": "@dev Returns the initialization code hash of the ERC1967 bootstrap." + }, + "id": 4369, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeHashERC1967Bootstrap", + "nameLocation": "97021:28:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4358, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4357, + "mutability": "mutable", + "name": "authorizedUpgrader", + "nameLocation": "97058:18:10", + "nodeType": "VariableDeclaration", + "scope": 4369, + "src": "97050:26:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4356, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "97050:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "97049:28:10" + }, + "returnParameters": { + "id": 4361, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4360, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4369, + "src": "97125:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4359, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "97125:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "97124:9:10" + }, + "scope": 5104, + "src": "97012:205:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4384, + "nodeType": "Block", + "src": "98020:63:10", + "statements": [ + { + "expression": { + "id": 4382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4377, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4375, + "src": "98030:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 4379, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "98066:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 4380, + "name": "beacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4372, + "src": "98069:6:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4378, + "name": "deployERC1967BeaconProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4385, + 4397, + 4531, + 4545 + ], + "referencedDeclaration": 4397, + "src": "98041:24:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$_t_address_$", + "typeString": "function (uint256,address) returns (address)" + } + }, + "id": 4381, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "98041:35:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "98030:46:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4383, + "nodeType": "ExpressionStatement", + "src": "98030:46:10" + } + ] + }, + "documentation": { + "id": 4370, + "nodeType": "StructuredDocumentation", + "src": "97881:48:10", + "text": "@dev Deploys a minimal ERC1967 beacon proxy." + }, + "id": 4385, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployERC1967BeaconProxy", + "nameLocation": "97943:24:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4373, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4372, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "97976:6:10", + "nodeType": "VariableDeclaration", + "scope": 4385, + "src": "97968:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4371, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "97968:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "97967:16:10" + }, + "returnParameters": { + "id": 4376, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4375, + "mutability": "mutable", + "name": "instance", + "nameLocation": "98010:8:10", + "nodeType": "VariableDeclaration", + "scope": 4385, + "src": "98002:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4374, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "98002:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "98001:18:10" + }, + "scope": 5104, + "src": "97934:149:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4396, + "nodeType": "Block", + "src": "98311:8291:10", + "statements": [ + { + "AST": { + "nativeSrc": "98373:8223:10", + "nodeType": "YulBlock", + "src": "98373:8223:10", + "statements": [ + { + "nativeSrc": "105867:20:10", + "nodeType": "YulVariableDeclaration", + "src": "105867:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "105882:4:10", + "nodeType": "YulLiteral", + "src": "105882:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "105876:5:10", + "nodeType": "YulIdentifier", + "src": "105876:5:10" + }, + "nativeSrc": "105876:11:10", + "nodeType": "YulFunctionCall", + "src": "105876:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "105871:1:10", + "nodeType": "YulTypedName", + "src": "105871:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "105941:4:10", + "nodeType": "YulLiteral", + "src": "105941:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "105947:66:10", + "nodeType": "YulLiteral", + "src": "105947:66:10", + "type": "", + "value": "0xb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "105934:6:10", + "nodeType": "YulIdentifier", + "src": "105934:6:10" + }, + "nativeSrc": "105934:80:10", + "nodeType": "YulFunctionCall", + "src": "105934:80:10" + }, + "nativeSrc": "105934:80:10", + "nodeType": "YulExpressionStatement", + "src": "105934:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "106034:4:10", + "nodeType": "YulLiteral", + "src": "106034:4:10", + "type": "", + "value": "0x40" + }, + { + "kind": "number", + "nativeSrc": "106040:66:10", + "nodeType": "YulLiteral", + "src": "106040:66:10", + "type": "", + "value": "0x1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "106027:6:10", + "nodeType": "YulIdentifier", + "src": "106027:6:10" + }, + "nativeSrc": "106027:80:10", + "nodeType": "YulFunctionCall", + "src": "106027:80:10" + }, + "nativeSrc": "106027:80:10", + "nodeType": "YulExpressionStatement", + "src": "106027:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "106127:4:10", + "nodeType": "YulLiteral", + "src": "106127:4:10", + "type": "", + "value": "0x20" + }, + { + "kind": "number", + "nativeSrc": "106133:48:10", + "nodeType": "YulLiteral", + "src": "106133:48:10", + "type": "", + "value": "0x60195155f3363d3d373d3d363d602036600436635c60da" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "106120:6:10", + "nodeType": "YulIdentifier", + "src": "106120:6:10" + }, + "nativeSrc": "106120:62:10", + "nodeType": "YulFunctionCall", + "src": "106120:62:10" + }, + "nativeSrc": "106120:62:10", + "nodeType": "YulExpressionStatement", + "src": "106120:62:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "106202:4:10", + "nodeType": "YulLiteral", + "src": "106202:4:10", + "type": "", + "value": "0x09" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "106215:3:10", + "nodeType": "YulLiteral", + "src": "106215:3:10", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "106220:20:10", + "nodeType": "YulLiteral", + "src": "106220:20:10", + "type": "", + "value": "0x60523d8160223d3973" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "106211:3:10", + "nodeType": "YulIdentifier", + "src": "106211:3:10" + }, + "nativeSrc": "106211:30:10", + "nodeType": "YulFunctionCall", + "src": "106211:30:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "106247:2:10", + "nodeType": "YulLiteral", + "src": "106247:2:10", + "type": "", + "value": "96" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "106255:2:10", + "nodeType": "YulLiteral", + "src": "106255:2:10", + "type": "", + "value": "96" + }, + { + "name": "beacon", + "nativeSrc": "106259:6:10", + "nodeType": "YulIdentifier", + "src": "106259:6:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "106251:3:10", + "nodeType": "YulIdentifier", + "src": "106251:3:10" + }, + "nativeSrc": "106251:15:10", + "nodeType": "YulFunctionCall", + "src": "106251:15:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "106243:3:10", + "nodeType": "YulIdentifier", + "src": "106243:3:10" + }, + "nativeSrc": "106243:24:10", + "nodeType": "YulFunctionCall", + "src": "106243:24:10" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "106208:2:10", + "nodeType": "YulIdentifier", + "src": "106208:2:10" + }, + "nativeSrc": "106208:60:10", + "nodeType": "YulFunctionCall", + "src": "106208:60:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "106195:6:10", + "nodeType": "YulIdentifier", + "src": "106195:6:10" + }, + "nativeSrc": "106195:74:10", + "nodeType": "YulFunctionCall", + "src": "106195:74:10" + }, + "nativeSrc": "106195:74:10", + "nodeType": "YulExpressionStatement", + "src": "106195:74:10" + }, + { + "nativeSrc": "106282:37:10", + "nodeType": "YulAssignment", + "src": "106282:37:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "106301:5:10", + "nodeType": "YulIdentifier", + "src": "106301:5:10" + }, + { + "kind": "number", + "nativeSrc": "106308:4:10", + "nodeType": "YulLiteral", + "src": "106308:4:10", + "type": "", + "value": "0x0c" + }, + { + "kind": "number", + "nativeSrc": "106314:4:10", + "nodeType": "YulLiteral", + "src": "106314:4:10", + "type": "", + "value": "0x74" + } + ], + "functionName": { + "name": "create", + "nativeSrc": "106294:6:10", + "nodeType": "YulIdentifier", + "src": "106294:6:10" + }, + "nativeSrc": "106294:25:10", + "nodeType": "YulFunctionCall", + "src": "106294:25:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "106282:8:10", + "nodeType": "YulIdentifier", + "src": "106282:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "106352:116:10", + "nodeType": "YulBlock", + "src": "106352:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "106377:4:10", + "nodeType": "YulLiteral", + "src": "106377:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "106383:10:10", + "nodeType": "YulLiteral", + "src": "106383:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "106370:6:10", + "nodeType": "YulIdentifier", + "src": "106370:6:10" + }, + "nativeSrc": "106370:24:10", + "nodeType": "YulFunctionCall", + "src": "106370:24:10" + }, + "nativeSrc": "106370:24:10", + "nodeType": "YulExpressionStatement", + "src": "106370:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "106443:4:10", + "nodeType": "YulLiteral", + "src": "106443:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "106449:4:10", + "nodeType": "YulLiteral", + "src": "106449:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "106436:6:10", + "nodeType": "YulIdentifier", + "src": "106436:6:10" + }, + "nativeSrc": "106436:18:10", + "nodeType": "YulFunctionCall", + "src": "106436:18:10" + }, + "nativeSrc": "106436:18:10", + "nodeType": "YulExpressionStatement", + "src": "106436:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "106342:8:10", + "nodeType": "YulIdentifier", + "src": "106342:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "106335:6:10", + "nodeType": "YulIdentifier", + "src": "106335:6:10" + }, + "nativeSrc": "106335:16:10", + "nodeType": "YulFunctionCall", + "src": "106335:16:10" + }, + "nativeSrc": "106332:136:10", + "nodeType": "YulIf", + "src": "106332:136:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "106488:4:10", + "nodeType": "YulLiteral", + "src": "106488:4:10", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "106494:1:10", + "nodeType": "YulIdentifier", + "src": "106494:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "106481:6:10", + "nodeType": "YulIdentifier", + "src": "106481:6:10" + }, + "nativeSrc": "106481:15:10", + "nodeType": "YulFunctionCall", + "src": "106481:15:10" + }, + "nativeSrc": "106481:15:10", + "nodeType": "YulExpressionStatement", + "src": "106481:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "106552:4:10", + "nodeType": "YulLiteral", + "src": "106552:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "106558:1:10", + "nodeType": "YulLiteral", + "src": "106558:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "106545:6:10", + "nodeType": "YulIdentifier", + "src": "106545:6:10" + }, + "nativeSrc": "106545:15:10", + "nodeType": "YulFunctionCall", + "src": "106545:15:10" + }, + "nativeSrc": "106545:15:10", + "nodeType": "YulExpressionStatement", + "src": "106545:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4390, + "isOffset": false, + "isSlot": false, + "src": "106259:6:10", + "valueSize": 1 + }, + { + "declaration": 4393, + "isOffset": false, + "isSlot": false, + "src": "106282:8:10", + "valueSize": 1 + }, + { + "declaration": 4393, + "isOffset": false, + "isSlot": false, + "src": "106342:8:10", + "valueSize": 1 + }, + { + "declaration": 4388, + "isOffset": false, + "isSlot": false, + "src": "106301:5:10", + "valueSize": 1 + } + ], + "id": 4395, + "nodeType": "InlineAssembly", + "src": "98364:8232:10" + } + ] + }, + "documentation": { + "id": 4386, + "nodeType": "StructuredDocumentation", + "src": "98089:96:10", + "text": "@dev Deploys a minimal ERC1967 beacon proxy.\n Deposits `value` ETH during deployment." + }, + "id": 4397, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployERC1967BeaconProxy", + "nameLocation": "98199:24:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4391, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4388, + "mutability": "mutable", + "name": "value", + "nameLocation": "98232:5:10", + "nodeType": "VariableDeclaration", + "scope": 4397, + "src": "98224:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4387, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "98224:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4390, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "98247:6:10", + "nodeType": "VariableDeclaration", + "scope": 4397, + "src": "98239:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4389, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "98239:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "98223:31:10" + }, + "returnParameters": { + "id": 4394, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4393, + "mutability": "mutable", + "name": "instance", + "nameLocation": "98297:8:10", + "nodeType": "VariableDeclaration", + "scope": 4397, + "src": "98289:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4392, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "98289:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "98288:18:10" + }, + "scope": 5104, + "src": "98190:8412:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4415, + "nodeType": "Block", + "src": "106820:82:10", + "statements": [ + { + "expression": { + "id": 4413, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4407, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4405, + "src": "106830:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 4409, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "106879:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 4410, + "name": "beacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4400, + "src": "106882:6:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4411, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4402, + "src": "106890:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4408, + "name": "deployDeterministicERC1967BeaconProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4416, + 4430, + 4567, + 4583 + ], + "referencedDeclaration": 4430, + "src": "106841:37:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (uint256,address,bytes32) returns (address)" + } + }, + "id": 4412, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "106841:54:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "106830:65:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4414, + "nodeType": "ExpressionStatement", + "src": "106830:65:10" + } + ] + }, + "documentation": { + "id": 4398, + "nodeType": "StructuredDocumentation", + "src": "106608:74:10", + "text": "@dev Deploys a deterministic minimal ERC1967 beacon proxy with `salt`." + }, + "id": 4416, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployDeterministicERC1967BeaconProxy", + "nameLocation": "106696:37:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4403, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4400, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "106742:6:10", + "nodeType": "VariableDeclaration", + "scope": 4416, + "src": "106734:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4399, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "106734:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4402, + "mutability": "mutable", + "name": "salt", + "nameLocation": "106758:4:10", + "nodeType": "VariableDeclaration", + "scope": 4416, + "src": "106750:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4401, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "106750:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "106733:30:10" + }, + "returnParameters": { + "id": 4406, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4405, + "mutability": "mutable", + "name": "instance", + "nameLocation": "106806:8:10", + "nodeType": "VariableDeclaration", + "scope": 4416, + "src": "106798:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4404, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "106798:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "106797:18:10" + }, + "scope": 5104, + "src": "106687:215:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4429, + "nodeType": "Block", + "src": "107183:818:10", + "statements": [ + { + "AST": { + "nativeSrc": "107245:750:10", + "nodeType": "YulBlock", + "src": "107245:750:10", + "statements": [ + { + "nativeSrc": "107259:20:10", + "nodeType": "YulVariableDeclaration", + "src": "107259:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "107274:4:10", + "nodeType": "YulLiteral", + "src": "107274:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "107268:5:10", + "nodeType": "YulIdentifier", + "src": "107268:5:10" + }, + "nativeSrc": "107268:11:10", + "nodeType": "YulFunctionCall", + "src": "107268:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "107263:1:10", + "nodeType": "YulTypedName", + "src": "107263:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "107333:4:10", + "nodeType": "YulLiteral", + "src": "107333:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "107339:66:10", + "nodeType": "YulLiteral", + "src": "107339:66:10", + "type": "", + "value": "0xb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "107326:6:10", + "nodeType": "YulIdentifier", + "src": "107326:6:10" + }, + "nativeSrc": "107326:80:10", + "nodeType": "YulFunctionCall", + "src": "107326:80:10" + }, + "nativeSrc": "107326:80:10", + "nodeType": "YulExpressionStatement", + "src": "107326:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "107426:4:10", + "nodeType": "YulLiteral", + "src": "107426:4:10", + "type": "", + "value": "0x40" + }, + { + "kind": "number", + "nativeSrc": "107432:66:10", + "nodeType": "YulLiteral", + "src": "107432:66:10", + "type": "", + "value": "0x1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "107419:6:10", + "nodeType": "YulIdentifier", + "src": "107419:6:10" + }, + "nativeSrc": "107419:80:10", + "nodeType": "YulFunctionCall", + "src": "107419:80:10" + }, + "nativeSrc": "107419:80:10", + "nodeType": "YulExpressionStatement", + "src": "107419:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "107519:4:10", + "nodeType": "YulLiteral", + "src": "107519:4:10", + "type": "", + "value": "0x20" + }, + { + "kind": "number", + "nativeSrc": "107525:48:10", + "nodeType": "YulLiteral", + "src": "107525:48:10", + "type": "", + "value": "0x60195155f3363d3d373d3d363d602036600436635c60da" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "107512:6:10", + "nodeType": "YulIdentifier", + "src": "107512:6:10" + }, + "nativeSrc": "107512:62:10", + "nodeType": "YulFunctionCall", + "src": "107512:62:10" + }, + "nativeSrc": "107512:62:10", + "nodeType": "YulExpressionStatement", + "src": "107512:62:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "107594:4:10", + "nodeType": "YulLiteral", + "src": "107594:4:10", + "type": "", + "value": "0x09" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "107607:3:10", + "nodeType": "YulLiteral", + "src": "107607:3:10", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "107612:20:10", + "nodeType": "YulLiteral", + "src": "107612:20:10", + "type": "", + "value": "0x60523d8160223d3973" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "107603:3:10", + "nodeType": "YulIdentifier", + "src": "107603:3:10" + }, + "nativeSrc": "107603:30:10", + "nodeType": "YulFunctionCall", + "src": "107603:30:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "107639:2:10", + "nodeType": "YulLiteral", + "src": "107639:2:10", + "type": "", + "value": "96" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "107647:2:10", + "nodeType": "YulLiteral", + "src": "107647:2:10", + "type": "", + "value": "96" + }, + { + "name": "beacon", + "nativeSrc": "107651:6:10", + "nodeType": "YulIdentifier", + "src": "107651:6:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "107643:3:10", + "nodeType": "YulIdentifier", + "src": "107643:3:10" + }, + "nativeSrc": "107643:15:10", + "nodeType": "YulFunctionCall", + "src": "107643:15:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "107635:3:10", + "nodeType": "YulIdentifier", + "src": "107635:3:10" + }, + "nativeSrc": "107635:24:10", + "nodeType": "YulFunctionCall", + "src": "107635:24:10" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "107600:2:10", + "nodeType": "YulIdentifier", + "src": "107600:2:10" + }, + "nativeSrc": "107600:60:10", + "nodeType": "YulFunctionCall", + "src": "107600:60:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "107587:6:10", + "nodeType": "YulIdentifier", + "src": "107587:6:10" + }, + "nativeSrc": "107587:74:10", + "nodeType": "YulFunctionCall", + "src": "107587:74:10" + }, + "nativeSrc": "107587:74:10", + "nodeType": "YulExpressionStatement", + "src": "107587:74:10" + }, + { + "nativeSrc": "107674:44:10", + "nodeType": "YulAssignment", + "src": "107674:44:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "107694:5:10", + "nodeType": "YulIdentifier", + "src": "107694:5:10" + }, + { + "kind": "number", + "nativeSrc": "107701:4:10", + "nodeType": "YulLiteral", + "src": "107701:4:10", + "type": "", + "value": "0x0c" + }, + { + "kind": "number", + "nativeSrc": "107707:4:10", + "nodeType": "YulLiteral", + "src": "107707:4:10", + "type": "", + "value": "0x74" + }, + { + "name": "salt", + "nativeSrc": "107713:4:10", + "nodeType": "YulIdentifier", + "src": "107713:4:10" + } + ], + "functionName": { + "name": "create2", + "nativeSrc": "107686:7:10", + "nodeType": "YulIdentifier", + "src": "107686:7:10" + }, + "nativeSrc": "107686:32:10", + "nodeType": "YulFunctionCall", + "src": "107686:32:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "107674:8:10", + "nodeType": "YulIdentifier", + "src": "107674:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "107751:116:10", + "nodeType": "YulBlock", + "src": "107751:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "107776:4:10", + "nodeType": "YulLiteral", + "src": "107776:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "107782:10:10", + "nodeType": "YulLiteral", + "src": "107782:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "107769:6:10", + "nodeType": "YulIdentifier", + "src": "107769:6:10" + }, + "nativeSrc": "107769:24:10", + "nodeType": "YulFunctionCall", + "src": "107769:24:10" + }, + "nativeSrc": "107769:24:10", + "nodeType": "YulExpressionStatement", + "src": "107769:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "107842:4:10", + "nodeType": "YulLiteral", + "src": "107842:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "107848:4:10", + "nodeType": "YulLiteral", + "src": "107848:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "107835:6:10", + "nodeType": "YulIdentifier", + "src": "107835:6:10" + }, + "nativeSrc": "107835:18:10", + "nodeType": "YulFunctionCall", + "src": "107835:18:10" + }, + "nativeSrc": "107835:18:10", + "nodeType": "YulExpressionStatement", + "src": "107835:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "107741:8:10", + "nodeType": "YulIdentifier", + "src": "107741:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "107734:6:10", + "nodeType": "YulIdentifier", + "src": "107734:6:10" + }, + "nativeSrc": "107734:16:10", + "nodeType": "YulFunctionCall", + "src": "107734:16:10" + }, + "nativeSrc": "107731:136:10", + "nodeType": "YulIf", + "src": "107731:136:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "107887:4:10", + "nodeType": "YulLiteral", + "src": "107887:4:10", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "107893:1:10", + "nodeType": "YulIdentifier", + "src": "107893:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "107880:6:10", + "nodeType": "YulIdentifier", + "src": "107880:6:10" + }, + "nativeSrc": "107880:15:10", + "nodeType": "YulFunctionCall", + "src": "107880:15:10" + }, + "nativeSrc": "107880:15:10", + "nodeType": "YulExpressionStatement", + "src": "107880:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "107951:4:10", + "nodeType": "YulLiteral", + "src": "107951:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "107957:1:10", + "nodeType": "YulLiteral", + "src": "107957:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "107944:6:10", + "nodeType": "YulIdentifier", + "src": "107944:6:10" + }, + "nativeSrc": "107944:15:10", + "nodeType": "YulFunctionCall", + "src": "107944:15:10" + }, + "nativeSrc": "107944:15:10", + "nodeType": "YulExpressionStatement", + "src": "107944:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4421, + "isOffset": false, + "isSlot": false, + "src": "107651:6:10", + "valueSize": 1 + }, + { + "declaration": 4426, + "isOffset": false, + "isSlot": false, + "src": "107674:8:10", + "valueSize": 1 + }, + { + "declaration": 4426, + "isOffset": false, + "isSlot": false, + "src": "107741:8:10", + "valueSize": 1 + }, + { + "declaration": 4423, + "isOffset": false, + "isSlot": false, + "src": "107713:4:10", + "valueSize": 1 + }, + { + "declaration": 4419, + "isOffset": false, + "isSlot": false, + "src": "107694:5:10", + "valueSize": 1 + } + ], + "id": 4428, + "nodeType": "InlineAssembly", + "src": "107236:759:10" + } + ] + }, + "documentation": { + "id": 4417, + "nodeType": "StructuredDocumentation", + "src": "106908:122:10", + "text": "@dev Deploys a deterministic minimal ERC1967 beacon proxy with `salt`.\n Deposits `value` ETH during deployment." + }, + "id": 4430, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployDeterministicERC1967BeaconProxy", + "nameLocation": "107044:37:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4424, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4419, + "mutability": "mutable", + "name": "value", + "nameLocation": "107090:5:10", + "nodeType": "VariableDeclaration", + "scope": 4430, + "src": "107082:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4418, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "107082:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4421, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "107105:6:10", + "nodeType": "VariableDeclaration", + "scope": 4430, + "src": "107097:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4420, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "107097:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4423, + "mutability": "mutable", + "name": "salt", + "nameLocation": "107121:4:10", + "nodeType": "VariableDeclaration", + "scope": 4430, + "src": "107113:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4422, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "107113:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "107081:45:10" + }, + "returnParameters": { + "id": 4427, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4426, + "mutability": "mutable", + "name": "instance", + "nameLocation": "107169:8:10", + "nodeType": "VariableDeclaration", + "scope": 4430, + "src": "107161:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4425, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "107161:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "107160:18:10" + }, + "scope": 5104, + "src": "107035:966:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4448, + "nodeType": "Block", + "src": "108384:78:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "30", + "id": 4443, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "108439:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 4444, + "name": "beacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4433, + "src": "108442:6:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4445, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4435, + "src": "108450:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4442, + "name": "createDeterministicERC1967BeaconProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4449, + 4465, + 4605, + 4623 + ], + "referencedDeclaration": 4465, + "src": "108401:37:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$_t_bool_$_t_address_$", + "typeString": "function (uint256,address,bytes32) returns (bool,address)" + } + }, + "id": 4446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "108401:54:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_address_$", + "typeString": "tuple(bool,address)" + } + }, + "functionReturnParameters": 4441, + "id": 4447, + "nodeType": "Return", + "src": "108394:61:10" + } + ] + }, + "documentation": { + "id": 4431, + "nodeType": "StructuredDocumentation", + "src": "108007:217:10", + "text": "@dev Creates a deterministic minimal ERC1967 beacon proxy with `salt`.\n Note: This method is intended for use in ERC4337 factories,\n which are expected to NOT revert if the proxy is already deployed." + }, + "id": 4449, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createDeterministicERC1967BeaconProxy", + "nameLocation": "108238:37:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4436, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4433, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "108284:6:10", + "nodeType": "VariableDeclaration", + "scope": 4449, + "src": "108276:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4432, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "108276:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4435, + "mutability": "mutable", + "name": "salt", + "nameLocation": "108300:4:10", + "nodeType": "VariableDeclaration", + "scope": 4449, + "src": "108292:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4434, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "108292:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "108275:30:10" + }, + "returnParameters": { + "id": 4441, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4438, + "mutability": "mutable", + "name": "alreadyDeployed", + "nameLocation": "108345:15:10", + "nodeType": "VariableDeclaration", + "scope": 4449, + "src": "108340:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4437, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "108340:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4440, + "mutability": "mutable", + "name": "instance", + "nameLocation": "108370:8:10", + "nodeType": "VariableDeclaration", + "scope": 4449, + "src": "108362:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4439, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "108362:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "108339:40:10" + }, + "scope": 5104, + "src": "108229:233:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4464, + "nodeType": "Block", + "src": "108908:1599:10", + "statements": [ + { + "AST": { + "nativeSrc": "108970:1531:10", + "nodeType": "YulBlock", + "src": "108970:1531:10", + "statements": [ + { + "nativeSrc": "108984:20:10", + "nodeType": "YulVariableDeclaration", + "src": "108984:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "108999:4:10", + "nodeType": "YulLiteral", + "src": "108999:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "108993:5:10", + "nodeType": "YulIdentifier", + "src": "108993:5:10" + }, + "nativeSrc": "108993:11:10", + "nodeType": "YulFunctionCall", + "src": "108993:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "108988:1:10", + "nodeType": "YulTypedName", + "src": "108988:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "109058:4:10", + "nodeType": "YulLiteral", + "src": "109058:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "109064:66:10", + "nodeType": "YulLiteral", + "src": "109064:66:10", + "type": "", + "value": "0xb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "109051:6:10", + "nodeType": "YulIdentifier", + "src": "109051:6:10" + }, + "nativeSrc": "109051:80:10", + "nodeType": "YulFunctionCall", + "src": "109051:80:10" + }, + "nativeSrc": "109051:80:10", + "nodeType": "YulExpressionStatement", + "src": "109051:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "109151:4:10", + "nodeType": "YulLiteral", + "src": "109151:4:10", + "type": "", + "value": "0x40" + }, + { + "kind": "number", + "nativeSrc": "109157:66:10", + "nodeType": "YulLiteral", + "src": "109157:66:10", + "type": "", + "value": "0x1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "109144:6:10", + "nodeType": "YulIdentifier", + "src": "109144:6:10" + }, + "nativeSrc": "109144:80:10", + "nodeType": "YulFunctionCall", + "src": "109144:80:10" + }, + "nativeSrc": "109144:80:10", + "nodeType": "YulExpressionStatement", + "src": "109144:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "109244:4:10", + "nodeType": "YulLiteral", + "src": "109244:4:10", + "type": "", + "value": "0x20" + }, + { + "kind": "number", + "nativeSrc": "109250:48:10", + "nodeType": "YulLiteral", + "src": "109250:48:10", + "type": "", + "value": "0x60195155f3363d3d373d3d363d602036600436635c60da" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "109237:6:10", + "nodeType": "YulIdentifier", + "src": "109237:6:10" + }, + "nativeSrc": "109237:62:10", + "nodeType": "YulFunctionCall", + "src": "109237:62:10" + }, + "nativeSrc": "109237:62:10", + "nodeType": "YulExpressionStatement", + "src": "109237:62:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "109319:4:10", + "nodeType": "YulLiteral", + "src": "109319:4:10", + "type": "", + "value": "0x09" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "109332:3:10", + "nodeType": "YulLiteral", + "src": "109332:3:10", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "109337:20:10", + "nodeType": "YulLiteral", + "src": "109337:20:10", + "type": "", + "value": "0x60523d8160223d3973" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "109328:3:10", + "nodeType": "YulIdentifier", + "src": "109328:3:10" + }, + "nativeSrc": "109328:30:10", + "nodeType": "YulFunctionCall", + "src": "109328:30:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "109364:2:10", + "nodeType": "YulLiteral", + "src": "109364:2:10", + "type": "", + "value": "96" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "109372:2:10", + "nodeType": "YulLiteral", + "src": "109372:2:10", + "type": "", + "value": "96" + }, + { + "name": "beacon", + "nativeSrc": "109376:6:10", + "nodeType": "YulIdentifier", + "src": "109376:6:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "109368:3:10", + "nodeType": "YulIdentifier", + "src": "109368:3:10" + }, + "nativeSrc": "109368:15:10", + "nodeType": "YulFunctionCall", + "src": "109368:15:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "109360:3:10", + "nodeType": "YulIdentifier", + "src": "109360:3:10" + }, + "nativeSrc": "109360:24:10", + "nodeType": "YulFunctionCall", + "src": "109360:24:10" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "109325:2:10", + "nodeType": "YulIdentifier", + "src": "109325:2:10" + }, + "nativeSrc": "109325:60:10", + "nodeType": "YulFunctionCall", + "src": "109325:60:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "109312:6:10", + "nodeType": "YulIdentifier", + "src": "109312:6:10" + }, + "nativeSrc": "109312:74:10", + "nodeType": "YulFunctionCall", + "src": "109312:74:10" + }, + "nativeSrc": "109312:74:10", + "nodeType": "YulExpressionStatement", + "src": "109312:74:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "109462:1:10", + "nodeType": "YulIdentifier", + "src": "109462:1:10" + }, + { + "kind": "number", + "nativeSrc": "109465:4:10", + "nodeType": "YulLiteral", + "src": "109465:4:10", + "type": "", + "value": "0x35" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "109458:3:10", + "nodeType": "YulIdentifier", + "src": "109458:3:10" + }, + "nativeSrc": "109458:12:10", + "nodeType": "YulFunctionCall", + "src": "109458:12:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "109482:4:10", + "nodeType": "YulLiteral", + "src": "109482:4:10", + "type": "", + "value": "0x0c" + }, + { + "kind": "number", + "nativeSrc": "109488:4:10", + "nodeType": "YulLiteral", + "src": "109488:4:10", + "type": "", + "value": "0x74" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "109472:9:10", + "nodeType": "YulIdentifier", + "src": "109472:9:10" + }, + "nativeSrc": "109472:21:10", + "nodeType": "YulFunctionCall", + "src": "109472:21:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "109451:6:10", + "nodeType": "YulIdentifier", + "src": "109451:6:10" + }, + "nativeSrc": "109451:43:10", + "nodeType": "YulFunctionCall", + "src": "109451:43:10" + }, + "nativeSrc": "109451:43:10", + "nodeType": "YulExpressionStatement", + "src": "109451:43:10" + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "109514:1:10", + "nodeType": "YulIdentifier", + "src": "109514:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "109521:2:10", + "nodeType": "YulLiteral", + "src": "109521:2:10", + "type": "", + "value": "88" + }, + { + "arguments": [], + "functionName": { + "name": "address", + "nativeSrc": "109525:7:10", + "nodeType": "YulIdentifier", + "src": "109525:7:10" + }, + "nativeSrc": "109525:9:10", + "nodeType": "YulFunctionCall", + "src": "109525:9:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "109517:3:10", + "nodeType": "YulIdentifier", + "src": "109517:3:10" + }, + "nativeSrc": "109517:18:10", + "nodeType": "YulFunctionCall", + "src": "109517:18:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "109507:6:10", + "nodeType": "YulIdentifier", + "src": "109507:6:10" + }, + "nativeSrc": "109507:29:10", + "nodeType": "YulFunctionCall", + "src": "109507:29:10" + }, + "nativeSrc": "109507:29:10", + "nodeType": "YulExpressionStatement", + "src": "109507:29:10" + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "109557:1:10", + "nodeType": "YulIdentifier", + "src": "109557:1:10" + }, + { + "kind": "number", + "nativeSrc": "109560:4:10", + "nodeType": "YulLiteral", + "src": "109560:4:10", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "109549:7:10", + "nodeType": "YulIdentifier", + "src": "109549:7:10" + }, + "nativeSrc": "109549:16:10", + "nodeType": "YulFunctionCall", + "src": "109549:16:10" + }, + "nativeSrc": "109549:16:10", + "nodeType": "YulExpressionStatement", + "src": "109549:16:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "109610:1:10", + "nodeType": "YulIdentifier", + "src": "109610:1:10" + }, + { + "kind": "number", + "nativeSrc": "109613:4:10", + "nodeType": "YulLiteral", + "src": "109613:4:10", + "type": "", + "value": "0x15" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "109606:3:10", + "nodeType": "YulIdentifier", + "src": "109606:3:10" + }, + "nativeSrc": "109606:12:10", + "nodeType": "YulFunctionCall", + "src": "109606:12:10" + }, + { + "name": "salt", + "nativeSrc": "109620:4:10", + "nodeType": "YulIdentifier", + "src": "109620:4:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "109599:6:10", + "nodeType": "YulIdentifier", + "src": "109599:6:10" + }, + "nativeSrc": "109599:26:10", + "nodeType": "YulFunctionCall", + "src": "109599:26:10" + }, + "nativeSrc": "109599:26:10", + "nodeType": "YulExpressionStatement", + "src": "109599:26:10" + }, + { + "nativeSrc": "109638:30:10", + "nodeType": "YulAssignment", + "src": "109638:30:10", + "value": { + "arguments": [ + { + "name": "m", + "nativeSrc": "109660:1:10", + "nodeType": "YulIdentifier", + "src": "109660:1:10" + }, + { + "kind": "number", + "nativeSrc": "109663:4:10", + "nodeType": "YulLiteral", + "src": "109663:4:10", + "type": "", + "value": "0x55" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "109650:9:10", + "nodeType": "YulIdentifier", + "src": "109650:9:10" + }, + "nativeSrc": "109650:18:10", + "nodeType": "YulFunctionCall", + "src": "109650:18:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "109638:8:10", + "nodeType": "YulIdentifier", + "src": "109638:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "109693:680:10", + "nodeType": "YulBlock", + "src": "109693:680:10", + "statements": [ + { + "body": { + "nativeSrc": "109744:291:10", + "nodeType": "YulBlock", + "src": "109744:291:10", + "statements": [ + { + "nativeSrc": "109766:44:10", + "nodeType": "YulAssignment", + "src": "109766:44:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "109786:5:10", + "nodeType": "YulIdentifier", + "src": "109786:5:10" + }, + { + "kind": "number", + "nativeSrc": "109793:4:10", + "nodeType": "YulLiteral", + "src": "109793:4:10", + "type": "", + "value": "0x0c" + }, + { + "kind": "number", + "nativeSrc": "109799:4:10", + "nodeType": "YulLiteral", + "src": "109799:4:10", + "type": "", + "value": "0x74" + }, + { + "name": "salt", + "nativeSrc": "109805:4:10", + "nodeType": "YulIdentifier", + "src": "109805:4:10" + } + ], + "functionName": { + "name": "create2", + "nativeSrc": "109778:7:10", + "nodeType": "YulIdentifier", + "src": "109778:7:10" + }, + "nativeSrc": "109778:32:10", + "nodeType": "YulFunctionCall", + "src": "109778:32:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "109766:8:10", + "nodeType": "YulIdentifier", + "src": "109766:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "109851:140:10", + "nodeType": "YulBlock", + "src": "109851:140:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "109884:4:10", + "nodeType": "YulLiteral", + "src": "109884:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "109890:10:10", + "nodeType": "YulLiteral", + "src": "109890:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "109877:6:10", + "nodeType": "YulIdentifier", + "src": "109877:6:10" + }, + "nativeSrc": "109877:24:10", + "nodeType": "YulFunctionCall", + "src": "109877:24:10" + }, + "nativeSrc": "109877:24:10", + "nodeType": "YulExpressionStatement", + "src": "109877:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "109958:4:10", + "nodeType": "YulLiteral", + "src": "109958:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "109964:4:10", + "nodeType": "YulLiteral", + "src": "109964:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "109951:6:10", + "nodeType": "YulIdentifier", + "src": "109951:6:10" + }, + "nativeSrc": "109951:18:10", + "nodeType": "YulFunctionCall", + "src": "109951:18:10" + }, + "nativeSrc": "109951:18:10", + "nodeType": "YulExpressionStatement", + "src": "109951:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "109841:8:10", + "nodeType": "YulIdentifier", + "src": "109841:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "109834:6:10", + "nodeType": "YulIdentifier", + "src": "109834:6:10" + }, + "nativeSrc": "109834:16:10", + "nodeType": "YulFunctionCall", + "src": "109834:16:10" + }, + "nativeSrc": "109831:160:10", + "nodeType": "YulIf", + "src": "109831:160:10" + }, + { + "nativeSrc": "110012:5:10", + "nodeType": "YulBreak", + "src": "110012:5:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "109733:8:10", + "nodeType": "YulIdentifier", + "src": "109733:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "109721:11:10", + "nodeType": "YulIdentifier", + "src": "109721:11:10" + }, + "nativeSrc": "109721:21:10", + "nodeType": "YulFunctionCall", + "src": "109721:21:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "109714:6:10", + "nodeType": "YulIdentifier", + "src": "109714:6:10" + }, + "nativeSrc": "109714:29:10", + "nodeType": "YulFunctionCall", + "src": "109714:29:10" + }, + "nativeSrc": "109711:324:10", + "nodeType": "YulIf", + "src": "109711:324:10" + }, + { + "nativeSrc": "110052:20:10", + "nodeType": "YulAssignment", + "src": "110052:20:10", + "value": { + "kind": "number", + "nativeSrc": "110071:1:10", + "nodeType": "YulLiteral", + "src": "110071:1:10", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "alreadyDeployed", + "nativeSrc": "110052:15:10", + "nodeType": "YulIdentifier", + "src": "110052:15:10" + } + ] + }, + { + "body": { + "nativeSrc": "110106:9:10", + "nodeType": "YulBlock", + "src": "110106:9:10", + "statements": [ + { + "nativeSrc": "110108:5:10", + "nodeType": "YulBreak", + "src": "110108:5:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nativeSrc": "110099:5:10", + "nodeType": "YulIdentifier", + "src": "110099:5:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "110092:6:10", + "nodeType": "YulIdentifier", + "src": "110092:6:10" + }, + "nativeSrc": "110092:13:10", + "nodeType": "YulFunctionCall", + "src": "110092:13:10" + }, + "nativeSrc": "110089:26:10", + "nodeType": "YulIf", + "src": "110089:26:10" + }, + { + "body": { + "nativeSrc": "110208:129:10", + "nodeType": "YulBlock", + "src": "110208:129:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "110237:4:10", + "nodeType": "YulLiteral", + "src": "110237:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "110243:10:10", + "nodeType": "YulLiteral", + "src": "110243:10:10", + "type": "", + "value": "0xb12d13eb" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "110230:6:10", + "nodeType": "YulIdentifier", + "src": "110230:6:10" + }, + "nativeSrc": "110230:24:10", + "nodeType": "YulFunctionCall", + "src": "110230:24:10" + }, + "nativeSrc": "110230:24:10", + "nodeType": "YulExpressionStatement", + "src": "110230:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "110308:4:10", + "nodeType": "YulLiteral", + "src": "110308:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "110314:4:10", + "nodeType": "YulLiteral", + "src": "110314:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "110301:6:10", + "nodeType": "YulIdentifier", + "src": "110301:6:10" + }, + "nativeSrc": "110301:18:10", + "nodeType": "YulFunctionCall", + "src": "110301:18:10" + }, + "nativeSrc": "110301:18:10", + "nodeType": "YulExpressionStatement", + "src": "110301:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "110147:3:10", + "nodeType": "YulIdentifier", + "src": "110147:3:10" + }, + "nativeSrc": "110147:5:10", + "nodeType": "YulFunctionCall", + "src": "110147:5:10" + }, + { + "name": "instance", + "nativeSrc": "110154:8:10", + "nodeType": "YulIdentifier", + "src": "110154:8:10" + }, + { + "name": "value", + "nativeSrc": "110164:5:10", + "nodeType": "YulIdentifier", + "src": "110164:5:10" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "110171:8:10", + "nodeType": "YulIdentifier", + "src": "110171:8:10" + }, + "nativeSrc": "110171:10:10", + "nodeType": "YulFunctionCall", + "src": "110171:10:10" + }, + { + "kind": "number", + "nativeSrc": "110183:4:10", + "nodeType": "YulLiteral", + "src": "110183:4:10", + "type": "", + "value": "0x00" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "110189:8:10", + "nodeType": "YulIdentifier", + "src": "110189:8:10" + }, + "nativeSrc": "110189:10:10", + "nodeType": "YulFunctionCall", + "src": "110189:10:10" + }, + { + "kind": "number", + "nativeSrc": "110201:4:10", + "nodeType": "YulLiteral", + "src": "110201:4:10", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "call", + "nativeSrc": "110142:4:10", + "nodeType": "YulIdentifier", + "src": "110142:4:10" + }, + "nativeSrc": "110142:64:10", + "nodeType": "YulFunctionCall", + "src": "110142:64:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "110135:6:10", + "nodeType": "YulIdentifier", + "src": "110135:6:10" + }, + "nativeSrc": "110135:72:10", + "nodeType": "YulFunctionCall", + "src": "110135:72:10" + }, + "nativeSrc": "110132:205:10", + "nodeType": "YulIf", + "src": "110132:205:10" + }, + { + "nativeSrc": "110354:5:10", + "nodeType": "YulBreak", + "src": "110354:5:10" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "109688:1:10", + "nodeType": "YulLiteral", + "src": "109688:1:10", + "type": "", + "value": "1" + }, + "nativeSrc": "109681:692:10", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "109690:2:10", + "nodeType": "YulBlock", + "src": "109690:2:10", + "statements": [] + }, + "pre": { + "nativeSrc": "109685:2:10", + "nodeType": "YulBlock", + "src": "109685:2:10", + "statements": [] + }, + "src": "109681:692:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "110393:4:10", + "nodeType": "YulLiteral", + "src": "110393:4:10", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "110399:1:10", + "nodeType": "YulIdentifier", + "src": "110399:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "110386:6:10", + "nodeType": "YulIdentifier", + "src": "110386:6:10" + }, + "nativeSrc": "110386:15:10", + "nodeType": "YulFunctionCall", + "src": "110386:15:10" + }, + "nativeSrc": "110386:15:10", + "nodeType": "YulExpressionStatement", + "src": "110386:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "110457:4:10", + "nodeType": "YulLiteral", + "src": "110457:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "110463:1:10", + "nodeType": "YulLiteral", + "src": "110463:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "110450:6:10", + "nodeType": "YulIdentifier", + "src": "110450:6:10" + }, + "nativeSrc": "110450:15:10", + "nodeType": "YulFunctionCall", + "src": "110450:15:10" + }, + "nativeSrc": "110450:15:10", + "nodeType": "YulExpressionStatement", + "src": "110450:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4459, + "isOffset": false, + "isSlot": false, + "src": "110052:15:10", + "valueSize": 1 + }, + { + "declaration": 4454, + "isOffset": false, + "isSlot": false, + "src": "109376:6:10", + "valueSize": 1 + }, + { + "declaration": 4461, + "isOffset": false, + "isSlot": false, + "src": "109638:8:10", + "valueSize": 1 + }, + { + "declaration": 4461, + "isOffset": false, + "isSlot": false, + "src": "109733:8:10", + "valueSize": 1 + }, + { + "declaration": 4461, + "isOffset": false, + "isSlot": false, + "src": "109766:8:10", + "valueSize": 1 + }, + { + "declaration": 4461, + "isOffset": false, + "isSlot": false, + "src": "109841:8:10", + "valueSize": 1 + }, + { + "declaration": 4461, + "isOffset": false, + "isSlot": false, + "src": "110154:8:10", + "valueSize": 1 + }, + { + "declaration": 4456, + "isOffset": false, + "isSlot": false, + "src": "109620:4:10", + "valueSize": 1 + }, + { + "declaration": 4456, + "isOffset": false, + "isSlot": false, + "src": "109805:4:10", + "valueSize": 1 + }, + { + "declaration": 4452, + "isOffset": false, + "isSlot": false, + "src": "109786:5:10", + "valueSize": 1 + }, + { + "declaration": 4452, + "isOffset": false, + "isSlot": false, + "src": "110099:5:10", + "valueSize": 1 + }, + { + "declaration": 4452, + "isOffset": false, + "isSlot": false, + "src": "110164:5:10", + "valueSize": 1 + } + ], + "id": 4463, + "nodeType": "InlineAssembly", + "src": "108961:1540:10" + } + ] + }, + "documentation": { + "id": 4450, + "nodeType": "StructuredDocumentation", + "src": "108468:265:10", + "text": "@dev Creates a deterministic minimal ERC1967 beacon proxy with `salt`.\n Deposits `value` ETH during deployment.\n Note: This method is intended for use in ERC4337 factories,\n which are expected to NOT revert if the proxy is already deployed." + }, + "id": 4465, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createDeterministicERC1967BeaconProxy", + "nameLocation": "108747:37:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4457, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4452, + "mutability": "mutable", + "name": "value", + "nameLocation": "108793:5:10", + "nodeType": "VariableDeclaration", + "scope": 4465, + "src": "108785:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4451, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "108785:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4454, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "108808:6:10", + "nodeType": "VariableDeclaration", + "scope": 4465, + "src": "108800:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4453, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "108800:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4456, + "mutability": "mutable", + "name": "salt", + "nameLocation": "108824:4:10", + "nodeType": "VariableDeclaration", + "scope": 4465, + "src": "108816:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4455, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "108816:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "108784:45:10" + }, + "returnParameters": { + "id": 4462, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4459, + "mutability": "mutable", + "name": "alreadyDeployed", + "nameLocation": "108869:15:10", + "nodeType": "VariableDeclaration", + "scope": 4465, + "src": "108864:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4458, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "108864:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4461, + "mutability": "mutable", + "name": "instance", + "nameLocation": "108894:8:10", + "nodeType": "VariableDeclaration", + "scope": 4465, + "src": "108886:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4460, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "108886:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "108863:40:10" + }, + "scope": 5104, + "src": "108738:1769:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4474, + "nodeType": "Block", + "src": "110686:633:10", + "statements": [ + { + "AST": { + "nativeSrc": "110748:565:10", + "nodeType": "YulBlock", + "src": "110748:565:10", + "statements": [ + { + "nativeSrc": "110762:16:10", + "nodeType": "YulAssignment", + "src": "110762:16:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "110773:4:10", + "nodeType": "YulLiteral", + "src": "110773:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "110767:5:10", + "nodeType": "YulIdentifier", + "src": "110767:5:10" + }, + "nativeSrc": "110767:11:10", + "nodeType": "YulFunctionCall", + "src": "110767:11:10" + }, + "variableNames": [ + { + "name": "c", + "nativeSrc": "110762:1:10", + "nodeType": "YulIdentifier", + "src": "110762:1:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "110802:1:10", + "nodeType": "YulIdentifier", + "src": "110802:1:10" + }, + { + "kind": "number", + "nativeSrc": "110805:4:10", + "nodeType": "YulLiteral", + "src": "110805:4:10", + "type": "", + "value": "0x74" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "110798:3:10", + "nodeType": "YulIdentifier", + "src": "110798:3:10" + }, + "nativeSrc": "110798:12:10", + "nodeType": "YulFunctionCall", + "src": "110798:12:10" + }, + { + "kind": "number", + "nativeSrc": "110812:66:10", + "nodeType": "YulLiteral", + "src": "110812:66:10", + "type": "", + "value": "0xb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "110791:6:10", + "nodeType": "YulIdentifier", + "src": "110791:6:10" + }, + "nativeSrc": "110791:88:10", + "nodeType": "YulFunctionCall", + "src": "110791:88:10" + }, + "nativeSrc": "110791:88:10", + "nodeType": "YulExpressionStatement", + "src": "110791:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "110903:1:10", + "nodeType": "YulIdentifier", + "src": "110903:1:10" + }, + { + "kind": "number", + "nativeSrc": "110906:4:10", + "nodeType": "YulLiteral", + "src": "110906:4:10", + "type": "", + "value": "0x54" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "110899:3:10", + "nodeType": "YulIdentifier", + "src": "110899:3:10" + }, + "nativeSrc": "110899:12:10", + "nodeType": "YulFunctionCall", + "src": "110899:12:10" + }, + { + "kind": "number", + "nativeSrc": "110913:66:10", + "nodeType": "YulLiteral", + "src": "110913:66:10", + "type": "", + "value": "0x1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "110892:6:10", + "nodeType": "YulIdentifier", + "src": "110892:6:10" + }, + "nativeSrc": "110892:88:10", + "nodeType": "YulFunctionCall", + "src": "110892:88:10" + }, + "nativeSrc": "110892:88:10", + "nodeType": "YulExpressionStatement", + "src": "110892:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "111004:1:10", + "nodeType": "YulIdentifier", + "src": "111004:1:10" + }, + { + "kind": "number", + "nativeSrc": "111007:4:10", + "nodeType": "YulLiteral", + "src": "111007:4:10", + "type": "", + "value": "0x34" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "111000:3:10", + "nodeType": "YulIdentifier", + "src": "111000:3:10" + }, + "nativeSrc": "111000:12:10", + "nodeType": "YulFunctionCall", + "src": "111000:12:10" + }, + { + "kind": "number", + "nativeSrc": "111014:48:10", + "nodeType": "YulLiteral", + "src": "111014:48:10", + "type": "", + "value": "0x60195155f3363d3d373d3d363d602036600436635c60da" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "110993:6:10", + "nodeType": "YulIdentifier", + "src": "110993:6:10" + }, + "nativeSrc": "110993:70:10", + "nodeType": "YulFunctionCall", + "src": "110993:70:10" + }, + "nativeSrc": "110993:70:10", + "nodeType": "YulExpressionStatement", + "src": "110993:70:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "111087:1:10", + "nodeType": "YulIdentifier", + "src": "111087:1:10" + }, + { + "kind": "number", + "nativeSrc": "111090:4:10", + "nodeType": "YulLiteral", + "src": "111090:4:10", + "type": "", + "value": "0x1d" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "111083:3:10", + "nodeType": "YulIdentifier", + "src": "111083:3:10" + }, + "nativeSrc": "111083:12:10", + "nodeType": "YulFunctionCall", + "src": "111083:12:10" + }, + { + "name": "beacon", + "nativeSrc": "111097:6:10", + "nodeType": "YulIdentifier", + "src": "111097:6:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "111076:6:10", + "nodeType": "YulIdentifier", + "src": "111076:6:10" + }, + "nativeSrc": "111076:28:10", + "nodeType": "YulFunctionCall", + "src": "111076:28:10" + }, + "nativeSrc": "111076:28:10", + "nodeType": "YulExpressionStatement", + "src": "111076:28:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "111128:1:10", + "nodeType": "YulIdentifier", + "src": "111128:1:10" + }, + { + "kind": "number", + "nativeSrc": "111131:4:10", + "nodeType": "YulLiteral", + "src": "111131:4:10", + "type": "", + "value": "0x09" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "111124:3:10", + "nodeType": "YulIdentifier", + "src": "111124:3:10" + }, + "nativeSrc": "111124:12:10", + "nodeType": "YulFunctionCall", + "src": "111124:12:10" + }, + { + "kind": "number", + "nativeSrc": "111138:20:10", + "nodeType": "YulLiteral", + "src": "111138:20:10", + "type": "", + "value": "0x60523d8160223d3973" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "111117:6:10", + "nodeType": "YulIdentifier", + "src": "111117:6:10" + }, + "nativeSrc": "111117:42:10", + "nodeType": "YulFunctionCall", + "src": "111117:42:10" + }, + "nativeSrc": "111117:42:10", + "nodeType": "YulExpressionStatement", + "src": "111117:42:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "111183:1:10", + "nodeType": "YulIdentifier", + "src": "111183:1:10" + }, + { + "kind": "number", + "nativeSrc": "111186:4:10", + "nodeType": "YulLiteral", + "src": "111186:4:10", + "type": "", + "value": "0x94" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "111179:3:10", + "nodeType": "YulIdentifier", + "src": "111179:3:10" + }, + "nativeSrc": "111179:12:10", + "nodeType": "YulFunctionCall", + "src": "111179:12:10" + }, + { + "kind": "number", + "nativeSrc": "111193:1:10", + "nodeType": "YulLiteral", + "src": "111193:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "111172:6:10", + "nodeType": "YulIdentifier", + "src": "111172:6:10" + }, + "nativeSrc": "111172:23:10", + "nodeType": "YulFunctionCall", + "src": "111172:23:10" + }, + "nativeSrc": "111172:23:10", + "nodeType": "YulExpressionStatement", + "src": "111172:23:10" + }, + { + "expression": { + "arguments": [ + { + "name": "c", + "nativeSrc": "111215:1:10", + "nodeType": "YulIdentifier", + "src": "111215:1:10" + }, + { + "kind": "number", + "nativeSrc": "111218:4:10", + "nodeType": "YulLiteral", + "src": "111218:4:10", + "type": "", + "value": "0x74" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "111208:6:10", + "nodeType": "YulIdentifier", + "src": "111208:6:10" + }, + "nativeSrc": "111208:15:10", + "nodeType": "YulFunctionCall", + "src": "111208:15:10" + }, + "nativeSrc": "111208:15:10", + "nodeType": "YulExpressionStatement", + "src": "111208:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "111264:4:10", + "nodeType": "YulLiteral", + "src": "111264:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "c", + "nativeSrc": "111274:1:10", + "nodeType": "YulIdentifier", + "src": "111274:1:10" + }, + { + "kind": "number", + "nativeSrc": "111277:4:10", + "nodeType": "YulLiteral", + "src": "111277:4:10", + "type": "", + "value": "0xa0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "111270:3:10", + "nodeType": "YulIdentifier", + "src": "111270:3:10" + }, + "nativeSrc": "111270:12:10", + "nodeType": "YulFunctionCall", + "src": "111270:12:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "111257:6:10", + "nodeType": "YulIdentifier", + "src": "111257:6:10" + }, + "nativeSrc": "111257:26:10", + "nodeType": "YulFunctionCall", + "src": "111257:26:10" + }, + "nativeSrc": "111257:26:10", + "nodeType": "YulExpressionStatement", + "src": "111257:26:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4468, + "isOffset": false, + "isSlot": false, + "src": "111097:6:10", + "valueSize": 1 + }, + { + "declaration": 4471, + "isOffset": false, + "isSlot": false, + "src": "110762:1:10", + "valueSize": 1 + }, + { + "declaration": 4471, + "isOffset": false, + "isSlot": false, + "src": "110802:1:10", + "valueSize": 1 + }, + { + "declaration": 4471, + "isOffset": false, + "isSlot": false, + "src": "110903:1:10", + "valueSize": 1 + }, + { + "declaration": 4471, + "isOffset": false, + "isSlot": false, + "src": "111004:1:10", + "valueSize": 1 + }, + { + "declaration": 4471, + "isOffset": false, + "isSlot": false, + "src": "111087:1:10", + "valueSize": 1 + }, + { + "declaration": 4471, + "isOffset": false, + "isSlot": false, + "src": "111128:1:10", + "valueSize": 1 + }, + { + "declaration": 4471, + "isOffset": false, + "isSlot": false, + "src": "111183:1:10", + "valueSize": 1 + }, + { + "declaration": 4471, + "isOffset": false, + "isSlot": false, + "src": "111215:1:10", + "valueSize": 1 + }, + { + "declaration": 4471, + "isOffset": false, + "isSlot": false, + "src": "111274:1:10", + "valueSize": 1 + } + ], + "id": 4473, + "nodeType": "InlineAssembly", + "src": "110739:574:10" + } + ] + }, + "documentation": { + "id": 4466, + "nodeType": "StructuredDocumentation", + "src": "110513:77:10", + "text": "@dev Returns the initialization code of the minimal ERC1967 beacon proxy." + }, + "id": 4475, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeERC1967BeaconProxy", + "nameLocation": "110604:26:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4469, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4468, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "110639:6:10", + "nodeType": "VariableDeclaration", + "scope": 4475, + "src": "110631:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4467, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "110631:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "110630:16:10" + }, + "returnParameters": { + "id": 4472, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4471, + "mutability": "mutable", + "name": "c", + "nameLocation": "110683:1:10", + "nodeType": "VariableDeclaration", + "scope": 4475, + "src": "110670:14:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4470, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "110670:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "110669:16:10" + }, + "scope": 5104, + "src": "110595:724:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4484, + "nodeType": "Block", + "src": "111505:654:10", + "statements": [ + { + "AST": { + "nativeSrc": "111567:586:10", + "nodeType": "YulBlock", + "src": "111567:586:10", + "statements": [ + { + "nativeSrc": "111581:20:10", + "nodeType": "YulVariableDeclaration", + "src": "111581:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "111596:4:10", + "nodeType": "YulLiteral", + "src": "111596:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "111590:5:10", + "nodeType": "YulIdentifier", + "src": "111590:5:10" + }, + "nativeSrc": "111590:11:10", + "nodeType": "YulFunctionCall", + "src": "111590:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "111585:1:10", + "nodeType": "YulTypedName", + "src": "111585:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "111655:4:10", + "nodeType": "YulLiteral", + "src": "111655:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "111661:66:10", + "nodeType": "YulLiteral", + "src": "111661:66:10", + "type": "", + "value": "0xb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "111648:6:10", + "nodeType": "YulIdentifier", + "src": "111648:6:10" + }, + "nativeSrc": "111648:80:10", + "nodeType": "YulFunctionCall", + "src": "111648:80:10" + }, + "nativeSrc": "111648:80:10", + "nodeType": "YulExpressionStatement", + "src": "111648:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "111748:4:10", + "nodeType": "YulLiteral", + "src": "111748:4:10", + "type": "", + "value": "0x40" + }, + { + "kind": "number", + "nativeSrc": "111754:66:10", + "nodeType": "YulLiteral", + "src": "111754:66:10", + "type": "", + "value": "0x1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "111741:6:10", + "nodeType": "YulIdentifier", + "src": "111741:6:10" + }, + "nativeSrc": "111741:80:10", + "nodeType": "YulFunctionCall", + "src": "111741:80:10" + }, + "nativeSrc": "111741:80:10", + "nodeType": "YulExpressionStatement", + "src": "111741:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "111841:4:10", + "nodeType": "YulLiteral", + "src": "111841:4:10", + "type": "", + "value": "0x20" + }, + { + "kind": "number", + "nativeSrc": "111847:48:10", + "nodeType": "YulLiteral", + "src": "111847:48:10", + "type": "", + "value": "0x60195155f3363d3d373d3d363d602036600436635c60da" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "111834:6:10", + "nodeType": "YulIdentifier", + "src": "111834:6:10" + }, + "nativeSrc": "111834:62:10", + "nodeType": "YulFunctionCall", + "src": "111834:62:10" + }, + "nativeSrc": "111834:62:10", + "nodeType": "YulExpressionStatement", + "src": "111834:62:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "111916:4:10", + "nodeType": "YulLiteral", + "src": "111916:4:10", + "type": "", + "value": "0x09" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "111929:3:10", + "nodeType": "YulLiteral", + "src": "111929:3:10", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "111934:20:10", + "nodeType": "YulLiteral", + "src": "111934:20:10", + "type": "", + "value": "0x60523d8160223d3973" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "111925:3:10", + "nodeType": "YulIdentifier", + "src": "111925:3:10" + }, + "nativeSrc": "111925:30:10", + "nodeType": "YulFunctionCall", + "src": "111925:30:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "111961:2:10", + "nodeType": "YulLiteral", + "src": "111961:2:10", + "type": "", + "value": "96" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "111969:2:10", + "nodeType": "YulLiteral", + "src": "111969:2:10", + "type": "", + "value": "96" + }, + { + "name": "beacon", + "nativeSrc": "111973:6:10", + "nodeType": "YulIdentifier", + "src": "111973:6:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "111965:3:10", + "nodeType": "YulIdentifier", + "src": "111965:3:10" + }, + "nativeSrc": "111965:15:10", + "nodeType": "YulFunctionCall", + "src": "111965:15:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "111957:3:10", + "nodeType": "YulIdentifier", + "src": "111957:3:10" + }, + "nativeSrc": "111957:24:10", + "nodeType": "YulFunctionCall", + "src": "111957:24:10" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "111922:2:10", + "nodeType": "YulIdentifier", + "src": "111922:2:10" + }, + "nativeSrc": "111922:60:10", + "nodeType": "YulFunctionCall", + "src": "111922:60:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "111909:6:10", + "nodeType": "YulIdentifier", + "src": "111909:6:10" + }, + "nativeSrc": "111909:74:10", + "nodeType": "YulFunctionCall", + "src": "111909:74:10" + }, + "nativeSrc": "111909:74:10", + "nodeType": "YulExpressionStatement", + "src": "111909:74:10" + }, + { + "nativeSrc": "111996:29:10", + "nodeType": "YulAssignment", + "src": "111996:29:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "112014:4:10", + "nodeType": "YulLiteral", + "src": "112014:4:10", + "type": "", + "value": "0x0c" + }, + { + "kind": "number", + "nativeSrc": "112020:4:10", + "nodeType": "YulLiteral", + "src": "112020:4:10", + "type": "", + "value": "0x74" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "112004:9:10", + "nodeType": "YulIdentifier", + "src": "112004:9:10" + }, + "nativeSrc": "112004:21:10", + "nodeType": "YulFunctionCall", + "src": "112004:21:10" + }, + "variableNames": [ + { + "name": "hash", + "nativeSrc": "111996:4:10", + "nodeType": "YulIdentifier", + "src": "111996:4:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "112045:4:10", + "nodeType": "YulLiteral", + "src": "112045:4:10", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "112051:1:10", + "nodeType": "YulIdentifier", + "src": "112051:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "112038:6:10", + "nodeType": "YulIdentifier", + "src": "112038:6:10" + }, + "nativeSrc": "112038:15:10", + "nodeType": "YulFunctionCall", + "src": "112038:15:10" + }, + "nativeSrc": "112038:15:10", + "nodeType": "YulExpressionStatement", + "src": "112038:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "112109:4:10", + "nodeType": "YulLiteral", + "src": "112109:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "112115:1:10", + "nodeType": "YulLiteral", + "src": "112115:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "112102:6:10", + "nodeType": "YulIdentifier", + "src": "112102:6:10" + }, + "nativeSrc": "112102:15:10", + "nodeType": "YulFunctionCall", + "src": "112102:15:10" + }, + "nativeSrc": "112102:15:10", + "nodeType": "YulExpressionStatement", + "src": "112102:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4478, + "isOffset": false, + "isSlot": false, + "src": "111973:6:10", + "valueSize": 1 + }, + { + "declaration": 4481, + "isOffset": false, + "isSlot": false, + "src": "111996:4:10", + "valueSize": 1 + } + ], + "id": 4483, + "nodeType": "InlineAssembly", + "src": "111558:595:10" + } + ] + }, + "documentation": { + "id": 4476, + "nodeType": "StructuredDocumentation", + "src": "111325:82:10", + "text": "@dev Returns the initialization code hash of the minimal ERC1967 beacon proxy." + }, + "id": 4485, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeHashERC1967BeaconProxy", + "nameLocation": "111421:30:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4479, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4478, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "111460:6:10", + "nodeType": "VariableDeclaration", + "scope": 4485, + "src": "111452:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4477, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "111452:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "111451:16:10" + }, + "returnParameters": { + "id": 4482, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4481, + "mutability": "mutable", + "name": "hash", + "nameLocation": "111499:4:10", + "nodeType": "VariableDeclaration", + "scope": 4485, + "src": "111491:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4480, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "111491:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "111490:14:10" + }, + "scope": 5104, + "src": "111412:747:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4511, + "nodeType": "Block", + "src": "112522:141:10", + "statements": [ + { + "assignments": [ + 4498 + ], + "declarations": [ + { + "constant": false, + "id": 4498, + "mutability": "mutable", + "name": "hash", + "nameLocation": "112540:4:10", + "nodeType": "VariableDeclaration", + "scope": 4511, + "src": "112532:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4497, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "112532:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 4502, + "initialValue": { + "arguments": [ + { + "id": 4500, + "name": "beacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4488, + "src": "112578:6:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4499, + "name": "initCodeHashERC1967BeaconProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4485, + 4647 + ], + "referencedDeclaration": 4485, + "src": "112547:30:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_bytes32_$", + "typeString": "function (address) pure returns (bytes32)" + } + }, + "id": 4501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "112547:38:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "112532:53:10" + }, + { + "expression": { + "id": 4509, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4503, + "name": "predicted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4495, + "src": "112595:9:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 4505, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4498, + "src": "112635:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 4506, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4490, + "src": "112641:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 4507, + "name": "deployer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4492, + "src": "112647:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4504, + "name": "predictDeterministicAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3237, + 3510, + 5081 + ], + "referencedDeclaration": 5081, + "src": "112607:27:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_address_$", + "typeString": "function (bytes32,bytes32,address) pure returns (address)" + } + }, + "id": 4508, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "112607:49:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "112595:61:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4510, + "nodeType": "ExpressionStatement", + "src": "112595:61:10" + } + ] + }, + "documentation": { + "id": 4486, + "nodeType": "StructuredDocumentation", + "src": "112165:177:10", + "text": "@dev Returns the address of the ERC1967 beacon proxy, with `salt` by `deployer`.\n Note: The returned result has dirty upper 96 bits. Please clean if used in assembly." + }, + "id": 4512, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "predictDeterministicAddressERC1967BeaconProxy", + "nameLocation": "112356:45:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4493, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4488, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "112419:6:10", + "nodeType": "VariableDeclaration", + "scope": 4512, + "src": "112411:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4487, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "112411:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4490, + "mutability": "mutable", + "name": "salt", + "nameLocation": "112443:4:10", + "nodeType": "VariableDeclaration", + "scope": 4512, + "src": "112435:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4489, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "112435:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4492, + "mutability": "mutable", + "name": "deployer", + "nameLocation": "112465:8:10", + "nodeType": "VariableDeclaration", + "scope": 4512, + "src": "112457:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4491, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "112457:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "112401:78:10" + }, + "returnParameters": { + "id": 4496, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4495, + "mutability": "mutable", + "name": "predicted", + "nameLocation": "112511:9:10", + "nodeType": "VariableDeclaration", + "scope": 4512, + "src": "112503:17:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4494, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "112503:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "112502:19:10" + }, + "scope": 5104, + "src": "112347:316:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4530, + "nodeType": "Block", + "src": "113142:69:10", + "statements": [ + { + "expression": { + "id": 4528, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4522, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4520, + "src": "113152:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 4524, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "113188:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 4525, + "name": "beacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4515, + "src": "113191:6:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4526, + "name": "args", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4517, + "src": "113199:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 4523, + "name": "deployERC1967BeaconProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4385, + 4397, + 4531, + 4545 + ], + "referencedDeclaration": 4545, + "src": "113163:24:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$", + "typeString": "function (uint256,address,bytes memory) returns (address)" + } + }, + "id": 4527, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "113163:41:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "113152:52:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4529, + "nodeType": "ExpressionStatement", + "src": "113152:52:10" + } + ] + }, + "documentation": { + "id": 4513, + "nodeType": "StructuredDocumentation", + "src": "112952:60:10", + "text": "@dev Deploys a minimal ERC1967 beacon proxy with `args`." + }, + "id": 4531, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployERC1967BeaconProxy", + "nameLocation": "113026:24:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4518, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4515, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "113059:6:10", + "nodeType": "VariableDeclaration", + "scope": 4531, + "src": "113051:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4514, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "113051:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4517, + "mutability": "mutable", + "name": "args", + "nameLocation": "113080:4:10", + "nodeType": "VariableDeclaration", + "scope": 4531, + "src": "113067:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4516, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "113067:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "113050:35:10" + }, + "returnParameters": { + "id": 4521, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4520, + "mutability": "mutable", + "name": "instance", + "nameLocation": "113128:8:10", + "nodeType": "VariableDeclaration", + "scope": 4531, + "src": "113120:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4519, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "113120:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "113119:18:10" + }, + "scope": 5104, + "src": "113017:194:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4544, + "nodeType": "Block", + "src": "113470:933:10", + "statements": [ + { + "AST": { + "nativeSrc": "113532:865:10", + "nodeType": "YulBlock", + "src": "113532:865:10", + "statements": [ + { + "nativeSrc": "113546:20:10", + "nodeType": "YulVariableDeclaration", + "src": "113546:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "113561:4:10", + "nodeType": "YulLiteral", + "src": "113561:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "113555:5:10", + "nodeType": "YulIdentifier", + "src": "113555:5:10" + }, + "nativeSrc": "113555:11:10", + "nodeType": "YulFunctionCall", + "src": "113555:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "113550:1:10", + "nodeType": "YulTypedName", + "src": "113550:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "113579:20:10", + "nodeType": "YulVariableDeclaration", + "src": "113579:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "113594:4:10", + "nodeType": "YulIdentifier", + "src": "113594:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "113588:5:10", + "nodeType": "YulIdentifier", + "src": "113588:5:10" + }, + "nativeSrc": "113588:11:10", + "nodeType": "YulFunctionCall", + "src": "113588:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "113583:1:10", + "nodeType": "YulTypedName", + "src": "113583:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "113627:3:10", + "nodeType": "YulIdentifier", + "src": "113627:3:10" + }, + "nativeSrc": "113627:5:10", + "nodeType": "YulFunctionCall", + "src": "113627:5:10" + }, + { + "kind": "number", + "nativeSrc": "113634:1:10", + "nodeType": "YulLiteral", + "src": "113634:1:10", + "type": "", + "value": "4" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "113641:4:10", + "nodeType": "YulIdentifier", + "src": "113641:4:10" + }, + { + "kind": "number", + "nativeSrc": "113647:4:10", + "nodeType": "YulLiteral", + "src": "113647:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "113637:3:10", + "nodeType": "YulIdentifier", + "src": "113637:3:10" + }, + "nativeSrc": "113637:15:10", + "nodeType": "YulFunctionCall", + "src": "113637:15:10" + }, + { + "name": "n", + "nativeSrc": "113654:1:10", + "nodeType": "YulIdentifier", + "src": "113654:1:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "113661:1:10", + "nodeType": "YulIdentifier", + "src": "113661:1:10" + }, + { + "kind": "number", + "nativeSrc": "113664:4:10", + "nodeType": "YulLiteral", + "src": "113664:4:10", + "type": "", + "value": "0x8b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "113657:3:10", + "nodeType": "YulIdentifier", + "src": "113657:3:10" + }, + "nativeSrc": "113657:12:10", + "nodeType": "YulFunctionCall", + "src": "113657:12:10" + }, + { + "name": "n", + "nativeSrc": "113671:1:10", + "nodeType": "YulIdentifier", + "src": "113671:1:10" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "113616:10:10", + "nodeType": "YulIdentifier", + "src": "113616:10:10" + }, + "nativeSrc": "113616:57:10", + "nodeType": "YulFunctionCall", + "src": "113616:57:10" + } + ], + "functionName": { + "name": "pop", + "nativeSrc": "113612:3:10", + "nodeType": "YulIdentifier", + "src": "113612:3:10" + }, + "nativeSrc": "113612:62:10", + "nodeType": "YulFunctionCall", + "src": "113612:62:10" + }, + "nativeSrc": "113612:62:10", + "nodeType": "YulExpressionStatement", + "src": "113612:62:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "113698:1:10", + "nodeType": "YulIdentifier", + "src": "113698:1:10" + }, + { + "kind": "number", + "nativeSrc": "113701:4:10", + "nodeType": "YulLiteral", + "src": "113701:4:10", + "type": "", + "value": "0x6b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "113694:3:10", + "nodeType": "YulIdentifier", + "src": "113694:3:10" + }, + "nativeSrc": "113694:12:10", + "nodeType": "YulFunctionCall", + "src": "113694:12:10" + }, + { + "kind": "number", + "nativeSrc": "113708:66:10", + "nodeType": "YulLiteral", + "src": "113708:66:10", + "type": "", + "value": "0xb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "113687:6:10", + "nodeType": "YulIdentifier", + "src": "113687:6:10" + }, + "nativeSrc": "113687:88:10", + "nodeType": "YulFunctionCall", + "src": "113687:88:10" + }, + "nativeSrc": "113687:88:10", + "nodeType": "YulExpressionStatement", + "src": "113687:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "113799:1:10", + "nodeType": "YulIdentifier", + "src": "113799:1:10" + }, + { + "kind": "number", + "nativeSrc": "113802:4:10", + "nodeType": "YulLiteral", + "src": "113802:4:10", + "type": "", + "value": "0x4b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "113795:3:10", + "nodeType": "YulIdentifier", + "src": "113795:3:10" + }, + "nativeSrc": "113795:12:10", + "nodeType": "YulFunctionCall", + "src": "113795:12:10" + }, + { + "kind": "number", + "nativeSrc": "113809:66:10", + "nodeType": "YulLiteral", + "src": "113809:66:10", + "type": "", + "value": "0x1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "113788:6:10", + "nodeType": "YulIdentifier", + "src": "113788:6:10" + }, + "nativeSrc": "113788:88:10", + "nodeType": "YulFunctionCall", + "src": "113788:88:10" + }, + "nativeSrc": "113788:88:10", + "nodeType": "YulExpressionStatement", + "src": "113788:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "113900:1:10", + "nodeType": "YulIdentifier", + "src": "113900:1:10" + }, + { + "kind": "number", + "nativeSrc": "113903:4:10", + "nodeType": "YulLiteral", + "src": "113903:4:10", + "type": "", + "value": "0x2b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "113896:3:10", + "nodeType": "YulIdentifier", + "src": "113896:3:10" + }, + "nativeSrc": "113896:12:10", + "nodeType": "YulFunctionCall", + "src": "113896:12:10" + }, + { + "kind": "number", + "nativeSrc": "113910:48:10", + "nodeType": "YulLiteral", + "src": "113910:48:10", + "type": "", + "value": "0x60195155f3363d3d373d3d363d602036600436635c60da" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "113889:6:10", + "nodeType": "YulIdentifier", + "src": "113889:6:10" + }, + "nativeSrc": "113889:70:10", + "nodeType": "YulFunctionCall", + "src": "113889:70:10" + }, + "nativeSrc": "113889:70:10", + "nodeType": "YulExpressionStatement", + "src": "113889:70:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "113983:1:10", + "nodeType": "YulIdentifier", + "src": "113983:1:10" + }, + { + "kind": "number", + "nativeSrc": "113986:4:10", + "nodeType": "YulLiteral", + "src": "113986:4:10", + "type": "", + "value": "0x14" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "113979:3:10", + "nodeType": "YulIdentifier", + "src": "113979:3:10" + }, + "nativeSrc": "113979:12:10", + "nodeType": "YulFunctionCall", + "src": "113979:12:10" + }, + { + "name": "beacon", + "nativeSrc": "113993:6:10", + "nodeType": "YulIdentifier", + "src": "113993:6:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "113972:6:10", + "nodeType": "YulIdentifier", + "src": "113972:6:10" + }, + "nativeSrc": "113972:28:10", + "nodeType": "YulFunctionCall", + "src": "113972:28:10" + }, + "nativeSrc": "113972:28:10", + "nodeType": "YulExpressionStatement", + "src": "113972:28:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "114111:1:10", + "nodeType": "YulIdentifier", + "src": "114111:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "114117:1:10", + "nodeType": "YulIdentifier", + "src": "114117:1:10" + }, + { + "kind": "number", + "nativeSrc": "114120:6:10", + "nodeType": "YulLiteral", + "src": "114120:6:10", + "type": "", + "value": "0xffad" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "114114:2:10", + "nodeType": "YulIdentifier", + "src": "114114:2:10" + }, + "nativeSrc": "114114:13:10", + "nodeType": "YulFunctionCall", + "src": "114114:13:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "114107:3:10", + "nodeType": "YulIdentifier", + "src": "114107:3:10" + }, + "nativeSrc": "114107:21:10", + "nodeType": "YulFunctionCall", + "src": "114107:21:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "114134:24:10", + "nodeType": "YulLiteral", + "src": "114134:24:10", + "type": "", + "value": "0xfe6100523d8160233d3973" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "114164:2:10", + "nodeType": "YulLiteral", + "src": "114164:2:10", + "type": "", + "value": "56" + }, + { + "name": "n", + "nativeSrc": "114168:1:10", + "nodeType": "YulIdentifier", + "src": "114168:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "114160:3:10", + "nodeType": "YulIdentifier", + "src": "114160:3:10" + }, + "nativeSrc": "114160:10:10", + "nodeType": "YulFunctionCall", + "src": "114160:10:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "114130:3:10", + "nodeType": "YulIdentifier", + "src": "114130:3:10" + }, + "nativeSrc": "114130:41:10", + "nodeType": "YulFunctionCall", + "src": "114130:41:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "114100:6:10", + "nodeType": "YulIdentifier", + "src": "114100:6:10" + }, + "nativeSrc": "114100:72:10", + "nodeType": "YulFunctionCall", + "src": "114100:72:10" + }, + "nativeSrc": "114100:72:10", + "nodeType": "YulExpressionStatement", + "src": "114100:72:10" + }, + { + "nativeSrc": "114185:53:10", + "nodeType": "YulAssignment", + "src": "114185:53:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "114204:5:10", + "nodeType": "YulIdentifier", + "src": "114204:5:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "114215:1:10", + "nodeType": "YulIdentifier", + "src": "114215:1:10" + }, + { + "kind": "number", + "nativeSrc": "114218:4:10", + "nodeType": "YulLiteral", + "src": "114218:4:10", + "type": "", + "value": "0x16" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "114211:3:10", + "nodeType": "YulIdentifier", + "src": "114211:3:10" + }, + "nativeSrc": "114211:12:10", + "nodeType": "YulFunctionCall", + "src": "114211:12:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "114229:1:10", + "nodeType": "YulIdentifier", + "src": "114229:1:10" + }, + { + "kind": "number", + "nativeSrc": "114232:4:10", + "nodeType": "YulLiteral", + "src": "114232:4:10", + "type": "", + "value": "0x75" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "114225:3:10", + "nodeType": "YulIdentifier", + "src": "114225:3:10" + }, + "nativeSrc": "114225:12:10", + "nodeType": "YulFunctionCall", + "src": "114225:12:10" + } + ], + "functionName": { + "name": "create", + "nativeSrc": "114197:6:10", + "nodeType": "YulIdentifier", + "src": "114197:6:10" + }, + "nativeSrc": "114197:41:10", + "nodeType": "YulFunctionCall", + "src": "114197:41:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "114185:8:10", + "nodeType": "YulIdentifier", + "src": "114185:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "114271:116:10", + "nodeType": "YulBlock", + "src": "114271:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "114296:4:10", + "nodeType": "YulLiteral", + "src": "114296:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "114302:10:10", + "nodeType": "YulLiteral", + "src": "114302:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "114289:6:10", + "nodeType": "YulIdentifier", + "src": "114289:6:10" + }, + "nativeSrc": "114289:24:10", + "nodeType": "YulFunctionCall", + "src": "114289:24:10" + }, + "nativeSrc": "114289:24:10", + "nodeType": "YulExpressionStatement", + "src": "114289:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "114362:4:10", + "nodeType": "YulLiteral", + "src": "114362:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "114368:4:10", + "nodeType": "YulLiteral", + "src": "114368:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "114355:6:10", + "nodeType": "YulIdentifier", + "src": "114355:6:10" + }, + "nativeSrc": "114355:18:10", + "nodeType": "YulFunctionCall", + "src": "114355:18:10" + }, + "nativeSrc": "114355:18:10", + "nodeType": "YulExpressionStatement", + "src": "114355:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "114261:8:10", + "nodeType": "YulIdentifier", + "src": "114261:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "114254:6:10", + "nodeType": "YulIdentifier", + "src": "114254:6:10" + }, + "nativeSrc": "114254:16:10", + "nodeType": "YulFunctionCall", + "src": "114254:16:10" + }, + "nativeSrc": "114251:136:10", + "nodeType": "YulIf", + "src": "114251:136:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4538, + "isOffset": false, + "isSlot": false, + "src": "113594:4:10", + "valueSize": 1 + }, + { + "declaration": 4538, + "isOffset": false, + "isSlot": false, + "src": "113641:4:10", + "valueSize": 1 + }, + { + "declaration": 4536, + "isOffset": false, + "isSlot": false, + "src": "113993:6:10", + "valueSize": 1 + }, + { + "declaration": 4541, + "isOffset": false, + "isSlot": false, + "src": "114185:8:10", + "valueSize": 1 + }, + { + "declaration": 4541, + "isOffset": false, + "isSlot": false, + "src": "114261:8:10", + "valueSize": 1 + }, + { + "declaration": 4534, + "isOffset": false, + "isSlot": false, + "src": "114204:5:10", + "valueSize": 1 + } + ], + "id": 4543, + "nodeType": "InlineAssembly", + "src": "113523:874:10" + } + ] + }, + "documentation": { + "id": 4532, + "nodeType": "StructuredDocumentation", + "src": "113217:108:10", + "text": "@dev Deploys a minimal ERC1967 beacon proxy with `args`.\n Deposits `value` ETH during deployment." + }, + "id": 4545, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployERC1967BeaconProxy", + "nameLocation": "113339:24:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4539, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4534, + "mutability": "mutable", + "name": "value", + "nameLocation": "113372:5:10", + "nodeType": "VariableDeclaration", + "scope": 4545, + "src": "113364:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4533, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "113364:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4536, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "113387:6:10", + "nodeType": "VariableDeclaration", + "scope": 4545, + "src": "113379:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4535, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "113379:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4538, + "mutability": "mutable", + "name": "args", + "nameLocation": "113408:4:10", + "nodeType": "VariableDeclaration", + "scope": 4545, + "src": "113395:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4537, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "113395:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "113363:50:10" + }, + "returnParameters": { + "id": 4542, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4541, + "mutability": "mutable", + "name": "instance", + "nameLocation": "113456:8:10", + "nodeType": "VariableDeclaration", + "scope": 4545, + "src": "113448:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4540, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "113448:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "113447:18:10" + }, + "scope": 5104, + "src": "113330:1073:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4566, + "nodeType": "Block", + "src": "114651:88:10", + "statements": [ + { + "expression": { + "id": 4564, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4557, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4555, + "src": "114661:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 4559, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "114710:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 4560, + "name": "beacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4548, + "src": "114713:6:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4561, + "name": "args", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4550, + "src": "114721:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 4562, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4552, + "src": "114727:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4558, + "name": "deployDeterministicERC1967BeaconProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4416, + 4430, + 4567, + 4583 + ], + "referencedDeclaration": 4583, + "src": "114672:37:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (uint256,address,bytes memory,bytes32) returns (address)" + } + }, + "id": 4563, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "114672:60:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "114661:71:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4565, + "nodeType": "ExpressionStatement", + "src": "114661:71:10" + } + ] + }, + "documentation": { + "id": 4546, + "nodeType": "StructuredDocumentation", + "src": "114409:85:10", + "text": "@dev Deploys a deterministic minimal ERC1967 beacon proxy with `args` and `salt`." + }, + "id": 4567, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployDeterministicERC1967BeaconProxy", + "nameLocation": "114508:37:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4553, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4548, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "114554:6:10", + "nodeType": "VariableDeclaration", + "scope": 4567, + "src": "114546:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4547, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "114546:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4550, + "mutability": "mutable", + "name": "args", + "nameLocation": "114575:4:10", + "nodeType": "VariableDeclaration", + "scope": 4567, + "src": "114562:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4549, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "114562:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4552, + "mutability": "mutable", + "name": "salt", + "nameLocation": "114589:4:10", + "nodeType": "VariableDeclaration", + "scope": 4567, + "src": "114581:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4551, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "114581:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "114545:49:10" + }, + "returnParameters": { + "id": 4556, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4555, + "mutability": "mutable", + "name": "instance", + "nameLocation": "114637:8:10", + "nodeType": "VariableDeclaration", + "scope": 4567, + "src": "114629:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4554, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "114629:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "114628:18:10" + }, + "scope": 5104, + "src": "114499:240:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4582, + "nodeType": "Block", + "src": "115068:940:10", + "statements": [ + { + "AST": { + "nativeSrc": "115130:872:10", + "nodeType": "YulBlock", + "src": "115130:872:10", + "statements": [ + { + "nativeSrc": "115144:20:10", + "nodeType": "YulVariableDeclaration", + "src": "115144:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "115159:4:10", + "nodeType": "YulLiteral", + "src": "115159:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "115153:5:10", + "nodeType": "YulIdentifier", + "src": "115153:5:10" + }, + "nativeSrc": "115153:11:10", + "nodeType": "YulFunctionCall", + "src": "115153:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "115148:1:10", + "nodeType": "YulTypedName", + "src": "115148:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "115177:20:10", + "nodeType": "YulVariableDeclaration", + "src": "115177:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "115192:4:10", + "nodeType": "YulIdentifier", + "src": "115192:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "115186:5:10", + "nodeType": "YulIdentifier", + "src": "115186:5:10" + }, + "nativeSrc": "115186:11:10", + "nodeType": "YulFunctionCall", + "src": "115186:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "115181:1:10", + "nodeType": "YulTypedName", + "src": "115181:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "115225:3:10", + "nodeType": "YulIdentifier", + "src": "115225:3:10" + }, + "nativeSrc": "115225:5:10", + "nodeType": "YulFunctionCall", + "src": "115225:5:10" + }, + { + "kind": "number", + "nativeSrc": "115232:1:10", + "nodeType": "YulLiteral", + "src": "115232:1:10", + "type": "", + "value": "4" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "115239:4:10", + "nodeType": "YulIdentifier", + "src": "115239:4:10" + }, + { + "kind": "number", + "nativeSrc": "115245:4:10", + "nodeType": "YulLiteral", + "src": "115245:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "115235:3:10", + "nodeType": "YulIdentifier", + "src": "115235:3:10" + }, + "nativeSrc": "115235:15:10", + "nodeType": "YulFunctionCall", + "src": "115235:15:10" + }, + { + "name": "n", + "nativeSrc": "115252:1:10", + "nodeType": "YulIdentifier", + "src": "115252:1:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "115259:1:10", + "nodeType": "YulIdentifier", + "src": "115259:1:10" + }, + { + "kind": "number", + "nativeSrc": "115262:4:10", + "nodeType": "YulLiteral", + "src": "115262:4:10", + "type": "", + "value": "0x8b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "115255:3:10", + "nodeType": "YulIdentifier", + "src": "115255:3:10" + }, + "nativeSrc": "115255:12:10", + "nodeType": "YulFunctionCall", + "src": "115255:12:10" + }, + { + "name": "n", + "nativeSrc": "115269:1:10", + "nodeType": "YulIdentifier", + "src": "115269:1:10" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "115214:10:10", + "nodeType": "YulIdentifier", + "src": "115214:10:10" + }, + "nativeSrc": "115214:57:10", + "nodeType": "YulFunctionCall", + "src": "115214:57:10" + } + ], + "functionName": { + "name": "pop", + "nativeSrc": "115210:3:10", + "nodeType": "YulIdentifier", + "src": "115210:3:10" + }, + "nativeSrc": "115210:62:10", + "nodeType": "YulFunctionCall", + "src": "115210:62:10" + }, + "nativeSrc": "115210:62:10", + "nodeType": "YulExpressionStatement", + "src": "115210:62:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "115296:1:10", + "nodeType": "YulIdentifier", + "src": "115296:1:10" + }, + { + "kind": "number", + "nativeSrc": "115299:4:10", + "nodeType": "YulLiteral", + "src": "115299:4:10", + "type": "", + "value": "0x6b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "115292:3:10", + "nodeType": "YulIdentifier", + "src": "115292:3:10" + }, + "nativeSrc": "115292:12:10", + "nodeType": "YulFunctionCall", + "src": "115292:12:10" + }, + { + "kind": "number", + "nativeSrc": "115306:66:10", + "nodeType": "YulLiteral", + "src": "115306:66:10", + "type": "", + "value": "0xb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "115285:6:10", + "nodeType": "YulIdentifier", + "src": "115285:6:10" + }, + "nativeSrc": "115285:88:10", + "nodeType": "YulFunctionCall", + "src": "115285:88:10" + }, + "nativeSrc": "115285:88:10", + "nodeType": "YulExpressionStatement", + "src": "115285:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "115397:1:10", + "nodeType": "YulIdentifier", + "src": "115397:1:10" + }, + { + "kind": "number", + "nativeSrc": "115400:4:10", + "nodeType": "YulLiteral", + "src": "115400:4:10", + "type": "", + "value": "0x4b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "115393:3:10", + "nodeType": "YulIdentifier", + "src": "115393:3:10" + }, + "nativeSrc": "115393:12:10", + "nodeType": "YulFunctionCall", + "src": "115393:12:10" + }, + { + "kind": "number", + "nativeSrc": "115407:66:10", + "nodeType": "YulLiteral", + "src": "115407:66:10", + "type": "", + "value": "0x1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "115386:6:10", + "nodeType": "YulIdentifier", + "src": "115386:6:10" + }, + "nativeSrc": "115386:88:10", + "nodeType": "YulFunctionCall", + "src": "115386:88:10" + }, + "nativeSrc": "115386:88:10", + "nodeType": "YulExpressionStatement", + "src": "115386:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "115498:1:10", + "nodeType": "YulIdentifier", + "src": "115498:1:10" + }, + { + "kind": "number", + "nativeSrc": "115501:4:10", + "nodeType": "YulLiteral", + "src": "115501:4:10", + "type": "", + "value": "0x2b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "115494:3:10", + "nodeType": "YulIdentifier", + "src": "115494:3:10" + }, + "nativeSrc": "115494:12:10", + "nodeType": "YulFunctionCall", + "src": "115494:12:10" + }, + { + "kind": "number", + "nativeSrc": "115508:48:10", + "nodeType": "YulLiteral", + "src": "115508:48:10", + "type": "", + "value": "0x60195155f3363d3d373d3d363d602036600436635c60da" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "115487:6:10", + "nodeType": "YulIdentifier", + "src": "115487:6:10" + }, + "nativeSrc": "115487:70:10", + "nodeType": "YulFunctionCall", + "src": "115487:70:10" + }, + "nativeSrc": "115487:70:10", + "nodeType": "YulExpressionStatement", + "src": "115487:70:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "115581:1:10", + "nodeType": "YulIdentifier", + "src": "115581:1:10" + }, + { + "kind": "number", + "nativeSrc": "115584:4:10", + "nodeType": "YulLiteral", + "src": "115584:4:10", + "type": "", + "value": "0x14" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "115577:3:10", + "nodeType": "YulIdentifier", + "src": "115577:3:10" + }, + "nativeSrc": "115577:12:10", + "nodeType": "YulFunctionCall", + "src": "115577:12:10" + }, + { + "name": "beacon", + "nativeSrc": "115591:6:10", + "nodeType": "YulIdentifier", + "src": "115591:6:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "115570:6:10", + "nodeType": "YulIdentifier", + "src": "115570:6:10" + }, + "nativeSrc": "115570:28:10", + "nodeType": "YulFunctionCall", + "src": "115570:28:10" + }, + "nativeSrc": "115570:28:10", + "nodeType": "YulExpressionStatement", + "src": "115570:28:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "115709:1:10", + "nodeType": "YulIdentifier", + "src": "115709:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "115715:1:10", + "nodeType": "YulIdentifier", + "src": "115715:1:10" + }, + { + "kind": "number", + "nativeSrc": "115718:6:10", + "nodeType": "YulLiteral", + "src": "115718:6:10", + "type": "", + "value": "0xffad" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "115712:2:10", + "nodeType": "YulIdentifier", + "src": "115712:2:10" + }, + "nativeSrc": "115712:13:10", + "nodeType": "YulFunctionCall", + "src": "115712:13:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "115705:3:10", + "nodeType": "YulIdentifier", + "src": "115705:3:10" + }, + "nativeSrc": "115705:21:10", + "nodeType": "YulFunctionCall", + "src": "115705:21:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "115732:24:10", + "nodeType": "YulLiteral", + "src": "115732:24:10", + "type": "", + "value": "0xfe6100523d8160233d3973" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "115762:2:10", + "nodeType": "YulLiteral", + "src": "115762:2:10", + "type": "", + "value": "56" + }, + { + "name": "n", + "nativeSrc": "115766:1:10", + "nodeType": "YulIdentifier", + "src": "115766:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "115758:3:10", + "nodeType": "YulIdentifier", + "src": "115758:3:10" + }, + "nativeSrc": "115758:10:10", + "nodeType": "YulFunctionCall", + "src": "115758:10:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "115728:3:10", + "nodeType": "YulIdentifier", + "src": "115728:3:10" + }, + "nativeSrc": "115728:41:10", + "nodeType": "YulFunctionCall", + "src": "115728:41:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "115698:6:10", + "nodeType": "YulIdentifier", + "src": "115698:6:10" + }, + "nativeSrc": "115698:72:10", + "nodeType": "YulFunctionCall", + "src": "115698:72:10" + }, + "nativeSrc": "115698:72:10", + "nodeType": "YulExpressionStatement", + "src": "115698:72:10" + }, + { + "nativeSrc": "115783:60:10", + "nodeType": "YulAssignment", + "src": "115783:60:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "115803:5:10", + "nodeType": "YulIdentifier", + "src": "115803:5:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "115814:1:10", + "nodeType": "YulIdentifier", + "src": "115814:1:10" + }, + { + "kind": "number", + "nativeSrc": "115817:4:10", + "nodeType": "YulLiteral", + "src": "115817:4:10", + "type": "", + "value": "0x16" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "115810:3:10", + "nodeType": "YulIdentifier", + "src": "115810:3:10" + }, + "nativeSrc": "115810:12:10", + "nodeType": "YulFunctionCall", + "src": "115810:12:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "115828:1:10", + "nodeType": "YulIdentifier", + "src": "115828:1:10" + }, + { + "kind": "number", + "nativeSrc": "115831:4:10", + "nodeType": "YulLiteral", + "src": "115831:4:10", + "type": "", + "value": "0x75" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "115824:3:10", + "nodeType": "YulIdentifier", + "src": "115824:3:10" + }, + "nativeSrc": "115824:12:10", + "nodeType": "YulFunctionCall", + "src": "115824:12:10" + }, + { + "name": "salt", + "nativeSrc": "115838:4:10", + "nodeType": "YulIdentifier", + "src": "115838:4:10" + } + ], + "functionName": { + "name": "create2", + "nativeSrc": "115795:7:10", + "nodeType": "YulIdentifier", + "src": "115795:7:10" + }, + "nativeSrc": "115795:48:10", + "nodeType": "YulFunctionCall", + "src": "115795:48:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "115783:8:10", + "nodeType": "YulIdentifier", + "src": "115783:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "115876:116:10", + "nodeType": "YulBlock", + "src": "115876:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "115901:4:10", + "nodeType": "YulLiteral", + "src": "115901:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "115907:10:10", + "nodeType": "YulLiteral", + "src": "115907:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "115894:6:10", + "nodeType": "YulIdentifier", + "src": "115894:6:10" + }, + "nativeSrc": "115894:24:10", + "nodeType": "YulFunctionCall", + "src": "115894:24:10" + }, + "nativeSrc": "115894:24:10", + "nodeType": "YulExpressionStatement", + "src": "115894:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "115967:4:10", + "nodeType": "YulLiteral", + "src": "115967:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "115973:4:10", + "nodeType": "YulLiteral", + "src": "115973:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "115960:6:10", + "nodeType": "YulIdentifier", + "src": "115960:6:10" + }, + "nativeSrc": "115960:18:10", + "nodeType": "YulFunctionCall", + "src": "115960:18:10" + }, + "nativeSrc": "115960:18:10", + "nodeType": "YulExpressionStatement", + "src": "115960:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "115866:8:10", + "nodeType": "YulIdentifier", + "src": "115866:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "115859:6:10", + "nodeType": "YulIdentifier", + "src": "115859:6:10" + }, + "nativeSrc": "115859:16:10", + "nodeType": "YulFunctionCall", + "src": "115859:16:10" + }, + "nativeSrc": "115856:136:10", + "nodeType": "YulIf", + "src": "115856:136:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4574, + "isOffset": false, + "isSlot": false, + "src": "115192:4:10", + "valueSize": 1 + }, + { + "declaration": 4574, + "isOffset": false, + "isSlot": false, + "src": "115239:4:10", + "valueSize": 1 + }, + { + "declaration": 4572, + "isOffset": false, + "isSlot": false, + "src": "115591:6:10", + "valueSize": 1 + }, + { + "declaration": 4579, + "isOffset": false, + "isSlot": false, + "src": "115783:8:10", + "valueSize": 1 + }, + { + "declaration": 4579, + "isOffset": false, + "isSlot": false, + "src": "115866:8:10", + "valueSize": 1 + }, + { + "declaration": 4576, + "isOffset": false, + "isSlot": false, + "src": "115838:4:10", + "valueSize": 1 + }, + { + "declaration": 4570, + "isOffset": false, + "isSlot": false, + "src": "115803:5:10", + "valueSize": 1 + } + ], + "id": 4581, + "nodeType": "InlineAssembly", + "src": "115121:881:10" + } + ] + }, + "documentation": { + "id": 4568, + "nodeType": "StructuredDocumentation", + "src": "114745:133:10", + "text": "@dev Deploys a deterministic minimal ERC1967 beacon proxy with `args` and `salt`.\n Deposits `value` ETH during deployment." + }, + "id": 4583, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployDeterministicERC1967BeaconProxy", + "nameLocation": "114892:37:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4577, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4570, + "mutability": "mutable", + "name": "value", + "nameLocation": "114947:5:10", + "nodeType": "VariableDeclaration", + "scope": 4583, + "src": "114939:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4569, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "114939:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4572, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "114970:6:10", + "nodeType": "VariableDeclaration", + "scope": 4583, + "src": "114962:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4571, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "114962:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4574, + "mutability": "mutable", + "name": "args", + "nameLocation": "114999:4:10", + "nodeType": "VariableDeclaration", + "scope": 4583, + "src": "114986:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4573, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "114986:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4576, + "mutability": "mutable", + "name": "salt", + "nameLocation": "115021:4:10", + "nodeType": "VariableDeclaration", + "scope": 4583, + "src": "115013:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4575, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "115013:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "114929:102:10" + }, + "returnParameters": { + "id": 4580, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4579, + "mutability": "mutable", + "name": "instance", + "nameLocation": "115058:8:10", + "nodeType": "VariableDeclaration", + "scope": 4583, + "src": "115050:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4578, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "115050:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "115049:18:10" + }, + "scope": 5104, + "src": "114883:1125:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4604, + "nodeType": "Block", + "src": "116421:84:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "30", + "id": 4598, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "116476:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 4599, + "name": "beacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4586, + "src": "116479:6:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4600, + "name": "args", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4588, + "src": "116487:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 4601, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4590, + "src": "116493:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4597, + "name": "createDeterministicERC1967BeaconProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4449, + 4465, + 4605, + 4623 + ], + "referencedDeclaration": 4623, + "src": "116438:37:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$_t_bytes32_$returns$_t_bool_$_t_address_$", + "typeString": "function (uint256,address,bytes memory,bytes32) returns (bool,address)" + } + }, + "id": 4602, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "116438:60:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_address_$", + "typeString": "tuple(bool,address)" + } + }, + "functionReturnParameters": 4596, + "id": 4603, + "nodeType": "Return", + "src": "116431:67:10" + } + ] + }, + "documentation": { + "id": 4584, + "nodeType": "StructuredDocumentation", + "src": "116014:228:10", + "text": "@dev Creates a deterministic minimal ERC1967 beacon proxy with `args` and `salt`.\n Note: This method is intended for use in ERC4337 factories,\n which are expected to NOT revert if the proxy is already deployed." + }, + "id": 4605, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createDeterministicERC1967BeaconProxy", + "nameLocation": "116256:37:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4591, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4586, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "116302:6:10", + "nodeType": "VariableDeclaration", + "scope": 4605, + "src": "116294:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4585, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "116294:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4588, + "mutability": "mutable", + "name": "args", + "nameLocation": "116323:4:10", + "nodeType": "VariableDeclaration", + "scope": 4605, + "src": "116310:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4587, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "116310:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4590, + "mutability": "mutable", + "name": "salt", + "nameLocation": "116337:4:10", + "nodeType": "VariableDeclaration", + "scope": 4605, + "src": "116329:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4589, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "116329:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "116293:49:10" + }, + "returnParameters": { + "id": 4596, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4593, + "mutability": "mutable", + "name": "alreadyDeployed", + "nameLocation": "116382:15:10", + "nodeType": "VariableDeclaration", + "scope": 4605, + "src": "116377:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4592, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "116377:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4595, + "mutability": "mutable", + "name": "instance", + "nameLocation": "116407:8:10", + "nodeType": "VariableDeclaration", + "scope": 4605, + "src": "116399:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4594, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "116399:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "116376:40:10" + }, + "scope": 5104, + "src": "116247:258:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4622, + "nodeType": "Block", + "src": "116999:1818:10", + "statements": [ + { + "AST": { + "nativeSrc": "117061:1750:10", + "nodeType": "YulBlock", + "src": "117061:1750:10", + "statements": [ + { + "nativeSrc": "117075:20:10", + "nodeType": "YulVariableDeclaration", + "src": "117075:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "117090:4:10", + "nodeType": "YulLiteral", + "src": "117090:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "117084:5:10", + "nodeType": "YulIdentifier", + "src": "117084:5:10" + }, + "nativeSrc": "117084:11:10", + "nodeType": "YulFunctionCall", + "src": "117084:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "117079:1:10", + "nodeType": "YulTypedName", + "src": "117079:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "117108:20:10", + "nodeType": "YulVariableDeclaration", + "src": "117108:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "117123:4:10", + "nodeType": "YulIdentifier", + "src": "117123:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "117117:5:10", + "nodeType": "YulIdentifier", + "src": "117117:5:10" + }, + "nativeSrc": "117117:11:10", + "nodeType": "YulFunctionCall", + "src": "117117:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "117112:1:10", + "nodeType": "YulTypedName", + "src": "117112:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "117156:3:10", + "nodeType": "YulIdentifier", + "src": "117156:3:10" + }, + "nativeSrc": "117156:5:10", + "nodeType": "YulFunctionCall", + "src": "117156:5:10" + }, + { + "kind": "number", + "nativeSrc": "117163:1:10", + "nodeType": "YulLiteral", + "src": "117163:1:10", + "type": "", + "value": "4" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "117170:4:10", + "nodeType": "YulIdentifier", + "src": "117170:4:10" + }, + { + "kind": "number", + "nativeSrc": "117176:4:10", + "nodeType": "YulLiteral", + "src": "117176:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "117166:3:10", + "nodeType": "YulIdentifier", + "src": "117166:3:10" + }, + "nativeSrc": "117166:15:10", + "nodeType": "YulFunctionCall", + "src": "117166:15:10" + }, + { + "name": "n", + "nativeSrc": "117183:1:10", + "nodeType": "YulIdentifier", + "src": "117183:1:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "117190:1:10", + "nodeType": "YulIdentifier", + "src": "117190:1:10" + }, + { + "kind": "number", + "nativeSrc": "117193:4:10", + "nodeType": "YulLiteral", + "src": "117193:4:10", + "type": "", + "value": "0x8b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "117186:3:10", + "nodeType": "YulIdentifier", + "src": "117186:3:10" + }, + "nativeSrc": "117186:12:10", + "nodeType": "YulFunctionCall", + "src": "117186:12:10" + }, + { + "name": "n", + "nativeSrc": "117200:1:10", + "nodeType": "YulIdentifier", + "src": "117200:1:10" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "117145:10:10", + "nodeType": "YulIdentifier", + "src": "117145:10:10" + }, + "nativeSrc": "117145:57:10", + "nodeType": "YulFunctionCall", + "src": "117145:57:10" + } + ], + "functionName": { + "name": "pop", + "nativeSrc": "117141:3:10", + "nodeType": "YulIdentifier", + "src": "117141:3:10" + }, + "nativeSrc": "117141:62:10", + "nodeType": "YulFunctionCall", + "src": "117141:62:10" + }, + "nativeSrc": "117141:62:10", + "nodeType": "YulExpressionStatement", + "src": "117141:62:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "117227:1:10", + "nodeType": "YulIdentifier", + "src": "117227:1:10" + }, + { + "kind": "number", + "nativeSrc": "117230:4:10", + "nodeType": "YulLiteral", + "src": "117230:4:10", + "type": "", + "value": "0x6b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "117223:3:10", + "nodeType": "YulIdentifier", + "src": "117223:3:10" + }, + "nativeSrc": "117223:12:10", + "nodeType": "YulFunctionCall", + "src": "117223:12:10" + }, + { + "kind": "number", + "nativeSrc": "117237:66:10", + "nodeType": "YulLiteral", + "src": "117237:66:10", + "type": "", + "value": "0xb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "117216:6:10", + "nodeType": "YulIdentifier", + "src": "117216:6:10" + }, + "nativeSrc": "117216:88:10", + "nodeType": "YulFunctionCall", + "src": "117216:88:10" + }, + "nativeSrc": "117216:88:10", + "nodeType": "YulExpressionStatement", + "src": "117216:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "117328:1:10", + "nodeType": "YulIdentifier", + "src": "117328:1:10" + }, + { + "kind": "number", + "nativeSrc": "117331:4:10", + "nodeType": "YulLiteral", + "src": "117331:4:10", + "type": "", + "value": "0x4b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "117324:3:10", + "nodeType": "YulIdentifier", + "src": "117324:3:10" + }, + "nativeSrc": "117324:12:10", + "nodeType": "YulFunctionCall", + "src": "117324:12:10" + }, + { + "kind": "number", + "nativeSrc": "117338:66:10", + "nodeType": "YulLiteral", + "src": "117338:66:10", + "type": "", + "value": "0x1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "117317:6:10", + "nodeType": "YulIdentifier", + "src": "117317:6:10" + }, + "nativeSrc": "117317:88:10", + "nodeType": "YulFunctionCall", + "src": "117317:88:10" + }, + "nativeSrc": "117317:88:10", + "nodeType": "YulExpressionStatement", + "src": "117317:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "117429:1:10", + "nodeType": "YulIdentifier", + "src": "117429:1:10" + }, + { + "kind": "number", + "nativeSrc": "117432:4:10", + "nodeType": "YulLiteral", + "src": "117432:4:10", + "type": "", + "value": "0x2b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "117425:3:10", + "nodeType": "YulIdentifier", + "src": "117425:3:10" + }, + "nativeSrc": "117425:12:10", + "nodeType": "YulFunctionCall", + "src": "117425:12:10" + }, + { + "kind": "number", + "nativeSrc": "117439:48:10", + "nodeType": "YulLiteral", + "src": "117439:48:10", + "type": "", + "value": "0x60195155f3363d3d373d3d363d602036600436635c60da" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "117418:6:10", + "nodeType": "YulIdentifier", + "src": "117418:6:10" + }, + "nativeSrc": "117418:70:10", + "nodeType": "YulFunctionCall", + "src": "117418:70:10" + }, + "nativeSrc": "117418:70:10", + "nodeType": "YulExpressionStatement", + "src": "117418:70:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "117512:1:10", + "nodeType": "YulIdentifier", + "src": "117512:1:10" + }, + { + "kind": "number", + "nativeSrc": "117515:4:10", + "nodeType": "YulLiteral", + "src": "117515:4:10", + "type": "", + "value": "0x14" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "117508:3:10", + "nodeType": "YulIdentifier", + "src": "117508:3:10" + }, + "nativeSrc": "117508:12:10", + "nodeType": "YulFunctionCall", + "src": "117508:12:10" + }, + { + "name": "beacon", + "nativeSrc": "117522:6:10", + "nodeType": "YulIdentifier", + "src": "117522:6:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "117501:6:10", + "nodeType": "YulIdentifier", + "src": "117501:6:10" + }, + "nativeSrc": "117501:28:10", + "nodeType": "YulFunctionCall", + "src": "117501:28:10" + }, + "nativeSrc": "117501:28:10", + "nodeType": "YulExpressionStatement", + "src": "117501:28:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "117640:1:10", + "nodeType": "YulIdentifier", + "src": "117640:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "117646:1:10", + "nodeType": "YulIdentifier", + "src": "117646:1:10" + }, + { + "kind": "number", + "nativeSrc": "117649:6:10", + "nodeType": "YulLiteral", + "src": "117649:6:10", + "type": "", + "value": "0xffad" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "117643:2:10", + "nodeType": "YulIdentifier", + "src": "117643:2:10" + }, + "nativeSrc": "117643:13:10", + "nodeType": "YulFunctionCall", + "src": "117643:13:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "117636:3:10", + "nodeType": "YulIdentifier", + "src": "117636:3:10" + }, + "nativeSrc": "117636:21:10", + "nodeType": "YulFunctionCall", + "src": "117636:21:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "117663:24:10", + "nodeType": "YulLiteral", + "src": "117663:24:10", + "type": "", + "value": "0xfe6100523d8160233d3973" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "117693:2:10", + "nodeType": "YulLiteral", + "src": "117693:2:10", + "type": "", + "value": "56" + }, + { + "name": "n", + "nativeSrc": "117697:1:10", + "nodeType": "YulIdentifier", + "src": "117697:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "117689:3:10", + "nodeType": "YulIdentifier", + "src": "117689:3:10" + }, + "nativeSrc": "117689:10:10", + "nodeType": "YulFunctionCall", + "src": "117689:10:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "117659:3:10", + "nodeType": "YulIdentifier", + "src": "117659:3:10" + }, + "nativeSrc": "117659:41:10", + "nodeType": "YulFunctionCall", + "src": "117659:41:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "117629:6:10", + "nodeType": "YulIdentifier", + "src": "117629:6:10" + }, + "nativeSrc": "117629:72:10", + "nodeType": "YulFunctionCall", + "src": "117629:72:10" + }, + "nativeSrc": "117629:72:10", + "nodeType": "YulExpressionStatement", + "src": "117629:72:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "117774:4:10", + "nodeType": "YulLiteral", + "src": "117774:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "117780:4:10", + "nodeType": "YulLiteral", + "src": "117780:4:10", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "117766:7:10", + "nodeType": "YulIdentifier", + "src": "117766:7:10" + }, + "nativeSrc": "117766:19:10", + "nodeType": "YulFunctionCall", + "src": "117766:19:10" + }, + "nativeSrc": "117766:19:10", + "nodeType": "YulExpressionStatement", + "src": "117766:19:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "117826:4:10", + "nodeType": "YulLiteral", + "src": "117826:4:10", + "type": "", + "value": "0x35" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "117846:1:10", + "nodeType": "YulIdentifier", + "src": "117846:1:10" + }, + { + "kind": "number", + "nativeSrc": "117849:4:10", + "nodeType": "YulLiteral", + "src": "117849:4:10", + "type": "", + "value": "0x16" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "117842:3:10", + "nodeType": "YulIdentifier", + "src": "117842:3:10" + }, + "nativeSrc": "117842:12:10", + "nodeType": "YulFunctionCall", + "src": "117842:12:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "117860:1:10", + "nodeType": "YulIdentifier", + "src": "117860:1:10" + }, + { + "kind": "number", + "nativeSrc": "117863:4:10", + "nodeType": "YulLiteral", + "src": "117863:4:10", + "type": "", + "value": "0x75" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "117856:3:10", + "nodeType": "YulIdentifier", + "src": "117856:3:10" + }, + "nativeSrc": "117856:12:10", + "nodeType": "YulFunctionCall", + "src": "117856:12:10" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "117832:9:10", + "nodeType": "YulIdentifier", + "src": "117832:9:10" + }, + "nativeSrc": "117832:37:10", + "nodeType": "YulFunctionCall", + "src": "117832:37:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "117819:6:10", + "nodeType": "YulIdentifier", + "src": "117819:6:10" + }, + "nativeSrc": "117819:51:10", + "nodeType": "YulFunctionCall", + "src": "117819:51:10" + }, + "nativeSrc": "117819:51:10", + "nodeType": "YulExpressionStatement", + "src": "117819:51:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "117890:4:10", + "nodeType": "YulLiteral", + "src": "117890:4:10", + "type": "", + "value": "0x01" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "117900:2:10", + "nodeType": "YulLiteral", + "src": "117900:2:10", + "type": "", + "value": "96" + }, + { + "arguments": [], + "functionName": { + "name": "address", + "nativeSrc": "117904:7:10", + "nodeType": "YulIdentifier", + "src": "117904:7:10" + }, + "nativeSrc": "117904:9:10", + "nodeType": "YulFunctionCall", + "src": "117904:9:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "117896:3:10", + "nodeType": "YulIdentifier", + "src": "117896:3:10" + }, + "nativeSrc": "117896:18:10", + "nodeType": "YulFunctionCall", + "src": "117896:18:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "117883:6:10", + "nodeType": "YulIdentifier", + "src": "117883:6:10" + }, + "nativeSrc": "117883:32:10", + "nodeType": "YulFunctionCall", + "src": "117883:32:10" + }, + "nativeSrc": "117883:32:10", + "nodeType": "YulExpressionStatement", + "src": "117883:32:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "117935:4:10", + "nodeType": "YulLiteral", + "src": "117935:4:10", + "type": "", + "value": "0x15" + }, + { + "name": "salt", + "nativeSrc": "117941:4:10", + "nodeType": "YulIdentifier", + "src": "117941:4:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "117928:6:10", + "nodeType": "YulIdentifier", + "src": "117928:6:10" + }, + "nativeSrc": "117928:18:10", + "nodeType": "YulFunctionCall", + "src": "117928:18:10" + }, + "nativeSrc": "117928:18:10", + "nodeType": "YulExpressionStatement", + "src": "117928:18:10" + }, + { + "nativeSrc": "117959:33:10", + "nodeType": "YulAssignment", + "src": "117959:33:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "117981:4:10", + "nodeType": "YulLiteral", + "src": "117981:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "117987:4:10", + "nodeType": "YulLiteral", + "src": "117987:4:10", + "type": "", + "value": "0x55" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "117971:9:10", + "nodeType": "YulIdentifier", + "src": "117971:9:10" + }, + "nativeSrc": "117971:21:10", + "nodeType": "YulFunctionCall", + "src": "117971:21:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "117959:8:10", + "nodeType": "YulIdentifier", + "src": "117959:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "118017:696:10", + "nodeType": "YulBlock", + "src": "118017:696:10", + "statements": [ + { + "body": { + "nativeSrc": "118068:307:10", + "nodeType": "YulBlock", + "src": "118068:307:10", + "statements": [ + { + "nativeSrc": "118090:60:10", + "nodeType": "YulAssignment", + "src": "118090:60:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "118110:5:10", + "nodeType": "YulIdentifier", + "src": "118110:5:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "118121:1:10", + "nodeType": "YulIdentifier", + "src": "118121:1:10" + }, + { + "kind": "number", + "nativeSrc": "118124:4:10", + "nodeType": "YulLiteral", + "src": "118124:4:10", + "type": "", + "value": "0x16" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "118117:3:10", + "nodeType": "YulIdentifier", + "src": "118117:3:10" + }, + "nativeSrc": "118117:12:10", + "nodeType": "YulFunctionCall", + "src": "118117:12:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "118135:1:10", + "nodeType": "YulIdentifier", + "src": "118135:1:10" + }, + { + "kind": "number", + "nativeSrc": "118138:4:10", + "nodeType": "YulLiteral", + "src": "118138:4:10", + "type": "", + "value": "0x75" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "118131:3:10", + "nodeType": "YulIdentifier", + "src": "118131:3:10" + }, + "nativeSrc": "118131:12:10", + "nodeType": "YulFunctionCall", + "src": "118131:12:10" + }, + { + "name": "salt", + "nativeSrc": "118145:4:10", + "nodeType": "YulIdentifier", + "src": "118145:4:10" + } + ], + "functionName": { + "name": "create2", + "nativeSrc": "118102:7:10", + "nodeType": "YulIdentifier", + "src": "118102:7:10" + }, + "nativeSrc": "118102:48:10", + "nodeType": "YulFunctionCall", + "src": "118102:48:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "118090:8:10", + "nodeType": "YulIdentifier", + "src": "118090:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "118191:140:10", + "nodeType": "YulBlock", + "src": "118191:140:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "118224:4:10", + "nodeType": "YulLiteral", + "src": "118224:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "118230:10:10", + "nodeType": "YulLiteral", + "src": "118230:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "118217:6:10", + "nodeType": "YulIdentifier", + "src": "118217:6:10" + }, + "nativeSrc": "118217:24:10", + "nodeType": "YulFunctionCall", + "src": "118217:24:10" + }, + "nativeSrc": "118217:24:10", + "nodeType": "YulExpressionStatement", + "src": "118217:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "118298:4:10", + "nodeType": "YulLiteral", + "src": "118298:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "118304:4:10", + "nodeType": "YulLiteral", + "src": "118304:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "118291:6:10", + "nodeType": "YulIdentifier", + "src": "118291:6:10" + }, + "nativeSrc": "118291:18:10", + "nodeType": "YulFunctionCall", + "src": "118291:18:10" + }, + "nativeSrc": "118291:18:10", + "nodeType": "YulExpressionStatement", + "src": "118291:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "118181:8:10", + "nodeType": "YulIdentifier", + "src": "118181:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "118174:6:10", + "nodeType": "YulIdentifier", + "src": "118174:6:10" + }, + "nativeSrc": "118174:16:10", + "nodeType": "YulFunctionCall", + "src": "118174:16:10" + }, + "nativeSrc": "118171:160:10", + "nodeType": "YulIf", + "src": "118171:160:10" + }, + { + "nativeSrc": "118352:5:10", + "nodeType": "YulBreak", + "src": "118352:5:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "118057:8:10", + "nodeType": "YulIdentifier", + "src": "118057:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "118045:11:10", + "nodeType": "YulIdentifier", + "src": "118045:11:10" + }, + "nativeSrc": "118045:21:10", + "nodeType": "YulFunctionCall", + "src": "118045:21:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "118038:6:10", + "nodeType": "YulIdentifier", + "src": "118038:6:10" + }, + "nativeSrc": "118038:29:10", + "nodeType": "YulFunctionCall", + "src": "118038:29:10" + }, + "nativeSrc": "118035:340:10", + "nodeType": "YulIf", + "src": "118035:340:10" + }, + { + "nativeSrc": "118392:20:10", + "nodeType": "YulAssignment", + "src": "118392:20:10", + "value": { + "kind": "number", + "nativeSrc": "118411:1:10", + "nodeType": "YulLiteral", + "src": "118411:1:10", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "alreadyDeployed", + "nativeSrc": "118392:15:10", + "nodeType": "YulIdentifier", + "src": "118392:15:10" + } + ] + }, + { + "body": { + "nativeSrc": "118446:9:10", + "nodeType": "YulBlock", + "src": "118446:9:10", + "statements": [ + { + "nativeSrc": "118448:5:10", + "nodeType": "YulBreak", + "src": "118448:5:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nativeSrc": "118439:5:10", + "nodeType": "YulIdentifier", + "src": "118439:5:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "118432:6:10", + "nodeType": "YulIdentifier", + "src": "118432:6:10" + }, + "nativeSrc": "118432:13:10", + "nodeType": "YulFunctionCall", + "src": "118432:13:10" + }, + "nativeSrc": "118429:26:10", + "nodeType": "YulIf", + "src": "118429:26:10" + }, + { + "body": { + "nativeSrc": "118548:129:10", + "nodeType": "YulBlock", + "src": "118548:129:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "118577:4:10", + "nodeType": "YulLiteral", + "src": "118577:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "118583:10:10", + "nodeType": "YulLiteral", + "src": "118583:10:10", + "type": "", + "value": "0xb12d13eb" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "118570:6:10", + "nodeType": "YulIdentifier", + "src": "118570:6:10" + }, + "nativeSrc": "118570:24:10", + "nodeType": "YulFunctionCall", + "src": "118570:24:10" + }, + "nativeSrc": "118570:24:10", + "nodeType": "YulExpressionStatement", + "src": "118570:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "118648:4:10", + "nodeType": "YulLiteral", + "src": "118648:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "118654:4:10", + "nodeType": "YulLiteral", + "src": "118654:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "118641:6:10", + "nodeType": "YulIdentifier", + "src": "118641:6:10" + }, + "nativeSrc": "118641:18:10", + "nodeType": "YulFunctionCall", + "src": "118641:18:10" + }, + "nativeSrc": "118641:18:10", + "nodeType": "YulExpressionStatement", + "src": "118641:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "118487:3:10", + "nodeType": "YulIdentifier", + "src": "118487:3:10" + }, + "nativeSrc": "118487:5:10", + "nodeType": "YulFunctionCall", + "src": "118487:5:10" + }, + { + "name": "instance", + "nativeSrc": "118494:8:10", + "nodeType": "YulIdentifier", + "src": "118494:8:10" + }, + { + "name": "value", + "nativeSrc": "118504:5:10", + "nodeType": "YulIdentifier", + "src": "118504:5:10" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "118511:8:10", + "nodeType": "YulIdentifier", + "src": "118511:8:10" + }, + "nativeSrc": "118511:10:10", + "nodeType": "YulFunctionCall", + "src": "118511:10:10" + }, + { + "kind": "number", + "nativeSrc": "118523:4:10", + "nodeType": "YulLiteral", + "src": "118523:4:10", + "type": "", + "value": "0x00" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "118529:8:10", + "nodeType": "YulIdentifier", + "src": "118529:8:10" + }, + "nativeSrc": "118529:10:10", + "nodeType": "YulFunctionCall", + "src": "118529:10:10" + }, + { + "kind": "number", + "nativeSrc": "118541:4:10", + "nodeType": "YulLiteral", + "src": "118541:4:10", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "call", + "nativeSrc": "118482:4:10", + "nodeType": "YulIdentifier", + "src": "118482:4:10" + }, + "nativeSrc": "118482:64:10", + "nodeType": "YulFunctionCall", + "src": "118482:64:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "118475:6:10", + "nodeType": "YulIdentifier", + "src": "118475:6:10" + }, + "nativeSrc": "118475:72:10", + "nodeType": "YulFunctionCall", + "src": "118475:72:10" + }, + "nativeSrc": "118472:205:10", + "nodeType": "YulIf", + "src": "118472:205:10" + }, + { + "nativeSrc": "118694:5:10", + "nodeType": "YulBreak", + "src": "118694:5:10" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "118012:1:10", + "nodeType": "YulLiteral", + "src": "118012:1:10", + "type": "", + "value": "1" + }, + "nativeSrc": "118005:708:10", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "118014:2:10", + "nodeType": "YulBlock", + "src": "118014:2:10", + "statements": [] + }, + "pre": { + "nativeSrc": "118009:2:10", + "nodeType": "YulBlock", + "src": "118009:2:10", + "statements": [] + }, + "src": "118005:708:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "118733:4:10", + "nodeType": "YulLiteral", + "src": "118733:4:10", + "type": "", + "value": "0x35" + }, + { + "kind": "number", + "nativeSrc": "118739:1:10", + "nodeType": "YulLiteral", + "src": "118739:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "118726:6:10", + "nodeType": "YulIdentifier", + "src": "118726:6:10" + }, + "nativeSrc": "118726:15:10", + "nodeType": "YulFunctionCall", + "src": "118726:15:10" + }, + "nativeSrc": "118726:15:10", + "nodeType": "YulExpressionStatement", + "src": "118726:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4617, + "isOffset": false, + "isSlot": false, + "src": "118392:15:10", + "valueSize": 1 + }, + { + "declaration": 4612, + "isOffset": false, + "isSlot": false, + "src": "117123:4:10", + "valueSize": 1 + }, + { + "declaration": 4612, + "isOffset": false, + "isSlot": false, + "src": "117170:4:10", + "valueSize": 1 + }, + { + "declaration": 4610, + "isOffset": false, + "isSlot": false, + "src": "117522:6:10", + "valueSize": 1 + }, + { + "declaration": 4619, + "isOffset": false, + "isSlot": false, + "src": "117959:8:10", + "valueSize": 1 + }, + { + "declaration": 4619, + "isOffset": false, + "isSlot": false, + "src": "118057:8:10", + "valueSize": 1 + }, + { + "declaration": 4619, + "isOffset": false, + "isSlot": false, + "src": "118090:8:10", + "valueSize": 1 + }, + { + "declaration": 4619, + "isOffset": false, + "isSlot": false, + "src": "118181:8:10", + "valueSize": 1 + }, + { + "declaration": 4619, + "isOffset": false, + "isSlot": false, + "src": "118494:8:10", + "valueSize": 1 + }, + { + "declaration": 4614, + "isOffset": false, + "isSlot": false, + "src": "117941:4:10", + "valueSize": 1 + }, + { + "declaration": 4614, + "isOffset": false, + "isSlot": false, + "src": "118145:4:10", + "valueSize": 1 + }, + { + "declaration": 4608, + "isOffset": false, + "isSlot": false, + "src": "118110:5:10", + "valueSize": 1 + }, + { + "declaration": 4608, + "isOffset": false, + "isSlot": false, + "src": "118439:5:10", + "valueSize": 1 + }, + { + "declaration": 4608, + "isOffset": false, + "isSlot": false, + "src": "118504:5:10", + "valueSize": 1 + } + ], + "id": 4621, + "nodeType": "InlineAssembly", + "src": "117052:1759:10" + } + ] + }, + "documentation": { + "id": 4606, + "nodeType": "StructuredDocumentation", + "src": "116511:276:10", + "text": "@dev Creates a deterministic minimal ERC1967 beacon proxy with `args` and `salt`.\n Deposits `value` ETH during deployment.\n Note: This method is intended for use in ERC4337 factories,\n which are expected to NOT revert if the proxy is already deployed." + }, + "id": 4623, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createDeterministicERC1967BeaconProxy", + "nameLocation": "116801:37:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4615, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4608, + "mutability": "mutable", + "name": "value", + "nameLocation": "116856:5:10", + "nodeType": "VariableDeclaration", + "scope": 4623, + "src": "116848:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4607, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "116848:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4610, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "116879:6:10", + "nodeType": "VariableDeclaration", + "scope": 4623, + "src": "116871:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4609, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "116871:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4612, + "mutability": "mutable", + "name": "args", + "nameLocation": "116908:4:10", + "nodeType": "VariableDeclaration", + "scope": 4623, + "src": "116895:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4611, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "116895:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4614, + "mutability": "mutable", + "name": "salt", + "nameLocation": "116930:4:10", + "nodeType": "VariableDeclaration", + "scope": 4623, + "src": "116922:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4613, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "116922:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "116838:102:10" + }, + "returnParameters": { + "id": 4620, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4617, + "mutability": "mutable", + "name": "alreadyDeployed", + "nameLocation": "116964:15:10", + "nodeType": "VariableDeclaration", + "scope": 4623, + "src": "116959:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4616, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "116959:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4619, + "mutability": "mutable", + "name": "instance", + "nameLocation": "116989:8:10", + "nodeType": "VariableDeclaration", + "scope": 4623, + "src": "116981:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4618, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "116981:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "116958:40:10" + }, + "scope": 5104, + "src": "116792:2025:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4634, + "nodeType": "Block", + "src": "119043:1066:10", + "statements": [ + { + "AST": { + "nativeSrc": "119105:998:10", + "nodeType": "YulBlock", + "src": "119105:998:10", + "statements": [ + { + "nativeSrc": "119119:16:10", + "nodeType": "YulAssignment", + "src": "119119:16:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "119130:4:10", + "nodeType": "YulLiteral", + "src": "119130:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "119124:5:10", + "nodeType": "YulIdentifier", + "src": "119124:5:10" + }, + "nativeSrc": "119124:11:10", + "nodeType": "YulFunctionCall", + "src": "119124:11:10" + }, + "variableNames": [ + { + "name": "c", + "nativeSrc": "119119:1:10", + "nodeType": "YulIdentifier", + "src": "119119:1:10" + } + ] + }, + { + "nativeSrc": "119148:20:10", + "nodeType": "YulVariableDeclaration", + "src": "119148:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "119163:4:10", + "nodeType": "YulIdentifier", + "src": "119163:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "119157:5:10", + "nodeType": "YulIdentifier", + "src": "119157:5:10" + }, + "nativeSrc": "119157:11:10", + "nodeType": "YulFunctionCall", + "src": "119157:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "119152:1:10", + "nodeType": "YulTypedName", + "src": "119152:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "119283:14:10", + "nodeType": "YulIdentifier", + "src": "119283:14:10" + }, + "nativeSrc": "119283:16:10", + "nodeType": "YulFunctionCall", + "src": "119283:16:10" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "119301:14:10", + "nodeType": "YulIdentifier", + "src": "119301:14:10" + }, + "nativeSrc": "119301:16:10", + "nodeType": "YulFunctionCall", + "src": "119301:16:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "119322:1:10", + "nodeType": "YulIdentifier", + "src": "119322:1:10" + }, + { + "kind": "number", + "nativeSrc": "119325:6:10", + "nodeType": "YulLiteral", + "src": "119325:6:10", + "type": "", + "value": "0xffad" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "119319:2:10", + "nodeType": "YulIdentifier", + "src": "119319:2:10" + }, + "nativeSrc": "119319:13:10", + "nodeType": "YulFunctionCall", + "src": "119319:13:10" + } + ], + "functionName": { + "name": "returndatacopy", + "nativeSrc": "119268:14:10", + "nodeType": "YulIdentifier", + "src": "119268:14:10" + }, + "nativeSrc": "119268:65:10", + "nodeType": "YulFunctionCall", + "src": "119268:65:10" + }, + "nativeSrc": "119268:65:10", + "nodeType": "YulExpressionStatement", + "src": "119268:65:10" + }, + { + "body": { + "nativeSrc": "119396:92:10", + "nodeType": "YulBlock", + "src": "119396:92:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "119429:1:10", + "nodeType": "YulIdentifier", + "src": "119429:1:10" + }, + { + "kind": "number", + "nativeSrc": "119432:4:10", + "nodeType": "YulLiteral", + "src": "119432:4:10", + "type": "", + "value": "0x95" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "119425:3:10", + "nodeType": "YulIdentifier", + "src": "119425:3:10" + }, + "nativeSrc": "119425:12:10", + "nodeType": "YulFunctionCall", + "src": "119425:12:10" + }, + { + "name": "i", + "nativeSrc": "119439:1:10", + "nodeType": "YulIdentifier", + "src": "119439:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "119421:3:10", + "nodeType": "YulIdentifier", + "src": "119421:3:10" + }, + "nativeSrc": "119421:20:10", + "nodeType": "YulFunctionCall", + "src": "119421:20:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "119457:4:10", + "nodeType": "YulIdentifier", + "src": "119457:4:10" + }, + { + "kind": "number", + "nativeSrc": "119463:4:10", + "nodeType": "YulLiteral", + "src": "119463:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "119453:3:10", + "nodeType": "YulIdentifier", + "src": "119453:3:10" + }, + "nativeSrc": "119453:15:10", + "nodeType": "YulFunctionCall", + "src": "119453:15:10" + }, + { + "name": "i", + "nativeSrc": "119470:1:10", + "nodeType": "YulIdentifier", + "src": "119470:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "119449:3:10", + "nodeType": "YulIdentifier", + "src": "119449:3:10" + }, + "nativeSrc": "119449:23:10", + "nodeType": "YulFunctionCall", + "src": "119449:23:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "119443:5:10", + "nodeType": "YulIdentifier", + "src": "119443:5:10" + }, + "nativeSrc": "119443:30:10", + "nodeType": "YulFunctionCall", + "src": "119443:30:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "119414:6:10", + "nodeType": "YulIdentifier", + "src": "119414:6:10" + }, + "nativeSrc": "119414:60:10", + "nodeType": "YulFunctionCall", + "src": "119414:60:10" + }, + "nativeSrc": "119414:60:10", + "nodeType": "YulExpressionStatement", + "src": "119414:60:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "119368:1:10", + "nodeType": "YulIdentifier", + "src": "119368:1:10" + }, + { + "name": "n", + "nativeSrc": "119371:1:10", + "nodeType": "YulIdentifier", + "src": "119371:1:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "119365:2:10", + "nodeType": "YulIdentifier", + "src": "119365:2:10" + }, + "nativeSrc": "119365:8:10", + "nodeType": "YulFunctionCall", + "src": "119365:8:10" + }, + "nativeSrc": "119346:142:10", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "119374:21:10", + "nodeType": "YulBlock", + "src": "119374:21:10", + "statements": [ + { + "nativeSrc": "119376:17:10", + "nodeType": "YulAssignment", + "src": "119376:17:10", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "119385:1:10", + "nodeType": "YulIdentifier", + "src": "119385:1:10" + }, + { + "kind": "number", + "nativeSrc": "119388:4:10", + "nodeType": "YulLiteral", + "src": "119388:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "119381:3:10", + "nodeType": "YulIdentifier", + "src": "119381:3:10" + }, + "nativeSrc": "119381:12:10", + "nodeType": "YulFunctionCall", + "src": "119381:12:10" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "119376:1:10", + "nodeType": "YulIdentifier", + "src": "119376:1:10" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "119350:14:10", + "nodeType": "YulBlock", + "src": "119350:14:10", + "statements": [ + { + "nativeSrc": "119352:10:10", + "nodeType": "YulVariableDeclaration", + "src": "119352:10:10", + "value": { + "kind": "number", + "nativeSrc": "119361:1:10", + "nodeType": "YulLiteral", + "src": "119361:1:10", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "119356:1:10", + "nodeType": "YulTypedName", + "src": "119356:1:10", + "type": "" + } + ] + } + ] + }, + "src": "119346:142:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "119512:1:10", + "nodeType": "YulIdentifier", + "src": "119512:1:10" + }, + { + "kind": "number", + "nativeSrc": "119515:4:10", + "nodeType": "YulLiteral", + "src": "119515:4:10", + "type": "", + "value": "0x75" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "119508:3:10", + "nodeType": "YulIdentifier", + "src": "119508:3:10" + }, + "nativeSrc": "119508:12:10", + "nodeType": "YulFunctionCall", + "src": "119508:12:10" + }, + { + "kind": "number", + "nativeSrc": "119522:66:10", + "nodeType": "YulLiteral", + "src": "119522:66:10", + "type": "", + "value": "0xb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "119501:6:10", + "nodeType": "YulIdentifier", + "src": "119501:6:10" + }, + "nativeSrc": "119501:88:10", + "nodeType": "YulFunctionCall", + "src": "119501:88:10" + }, + "nativeSrc": "119501:88:10", + "nodeType": "YulExpressionStatement", + "src": "119501:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "119613:1:10", + "nodeType": "YulIdentifier", + "src": "119613:1:10" + }, + { + "kind": "number", + "nativeSrc": "119616:4:10", + "nodeType": "YulLiteral", + "src": "119616:4:10", + "type": "", + "value": "0x55" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "119609:3:10", + "nodeType": "YulIdentifier", + "src": "119609:3:10" + }, + "nativeSrc": "119609:12:10", + "nodeType": "YulFunctionCall", + "src": "119609:12:10" + }, + { + "kind": "number", + "nativeSrc": "119623:66:10", + "nodeType": "YulLiteral", + "src": "119623:66:10", + "type": "", + "value": "0x1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "119602:6:10", + "nodeType": "YulIdentifier", + "src": "119602:6:10" + }, + "nativeSrc": "119602:88:10", + "nodeType": "YulFunctionCall", + "src": "119602:88:10" + }, + "nativeSrc": "119602:88:10", + "nodeType": "YulExpressionStatement", + "src": "119602:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "119714:1:10", + "nodeType": "YulIdentifier", + "src": "119714:1:10" + }, + { + "kind": "number", + "nativeSrc": "119717:4:10", + "nodeType": "YulLiteral", + "src": "119717:4:10", + "type": "", + "value": "0x35" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "119710:3:10", + "nodeType": "YulIdentifier", + "src": "119710:3:10" + }, + "nativeSrc": "119710:12:10", + "nodeType": "YulFunctionCall", + "src": "119710:12:10" + }, + { + "kind": "number", + "nativeSrc": "119724:48:10", + "nodeType": "YulLiteral", + "src": "119724:48:10", + "type": "", + "value": "0x60195155f3363d3d373d3d363d602036600436635c60da" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "119703:6:10", + "nodeType": "YulIdentifier", + "src": "119703:6:10" + }, + "nativeSrc": "119703:70:10", + "nodeType": "YulFunctionCall", + "src": "119703:70:10" + }, + "nativeSrc": "119703:70:10", + "nodeType": "YulExpressionStatement", + "src": "119703:70:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "119797:1:10", + "nodeType": "YulIdentifier", + "src": "119797:1:10" + }, + { + "kind": "number", + "nativeSrc": "119800:4:10", + "nodeType": "YulLiteral", + "src": "119800:4:10", + "type": "", + "value": "0x1e" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "119793:3:10", + "nodeType": "YulIdentifier", + "src": "119793:3:10" + }, + "nativeSrc": "119793:12:10", + "nodeType": "YulFunctionCall", + "src": "119793:12:10" + }, + { + "name": "beacon", + "nativeSrc": "119807:6:10", + "nodeType": "YulIdentifier", + "src": "119807:6:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "119786:6:10", + "nodeType": "YulIdentifier", + "src": "119786:6:10" + }, + "nativeSrc": "119786:28:10", + "nodeType": "YulFunctionCall", + "src": "119786:28:10" + }, + "nativeSrc": "119786:28:10", + "nodeType": "YulExpressionStatement", + "src": "119786:28:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "119838:1:10", + "nodeType": "YulIdentifier", + "src": "119838:1:10" + }, + { + "kind": "number", + "nativeSrc": "119841:4:10", + "nodeType": "YulLiteral", + "src": "119841:4:10", + "type": "", + "value": "0x0a" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "119834:3:10", + "nodeType": "YulIdentifier", + "src": "119834:3:10" + }, + "nativeSrc": "119834:12:10", + "nodeType": "YulFunctionCall", + "src": "119834:12:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "119852:22:10", + "nodeType": "YulLiteral", + "src": "119852:22:10", + "type": "", + "value": "0x6100523d8160233d3973" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "119880:2:10", + "nodeType": "YulLiteral", + "src": "119880:2:10", + "type": "", + "value": "56" + }, + { + "name": "n", + "nativeSrc": "119884:1:10", + "nodeType": "YulIdentifier", + "src": "119884:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "119876:3:10", + "nodeType": "YulIdentifier", + "src": "119876:3:10" + }, + "nativeSrc": "119876:10:10", + "nodeType": "YulFunctionCall", + "src": "119876:10:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "119848:3:10", + "nodeType": "YulIdentifier", + "src": "119848:3:10" + }, + "nativeSrc": "119848:39:10", + "nodeType": "YulFunctionCall", + "src": "119848:39:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "119827:6:10", + "nodeType": "YulIdentifier", + "src": "119827:6:10" + }, + "nativeSrc": "119827:61:10", + "nodeType": "YulFunctionCall", + "src": "119827:61:10" + }, + "nativeSrc": "119827:61:10", + "nodeType": "YulExpressionStatement", + "src": "119827:61:10" + }, + { + "expression": { + "arguments": [ + { + "name": "c", + "nativeSrc": "119908:1:10", + "nodeType": "YulIdentifier", + "src": "119908:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "119915:1:10", + "nodeType": "YulIdentifier", + "src": "119915:1:10" + }, + { + "kind": "number", + "nativeSrc": "119918:4:10", + "nodeType": "YulLiteral", + "src": "119918:4:10", + "type": "", + "value": "0x75" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "119911:3:10", + "nodeType": "YulIdentifier", + "src": "119911:3:10" + }, + "nativeSrc": "119911:12:10", + "nodeType": "YulFunctionCall", + "src": "119911:12:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "119901:6:10", + "nodeType": "YulIdentifier", + "src": "119901:6:10" + }, + "nativeSrc": "119901:23:10", + "nodeType": "YulFunctionCall", + "src": "119901:23:10" + }, + "nativeSrc": "119901:23:10", + "nodeType": "YulExpressionStatement", + "src": "119901:23:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "119969:1:10", + "nodeType": "YulIdentifier", + "src": "119969:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "119976:1:10", + "nodeType": "YulIdentifier", + "src": "119976:1:10" + }, + { + "kind": "number", + "nativeSrc": "119979:4:10", + "nodeType": "YulLiteral", + "src": "119979:4:10", + "type": "", + "value": "0x95" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "119972:3:10", + "nodeType": "YulIdentifier", + "src": "119972:3:10" + }, + "nativeSrc": "119972:12:10", + "nodeType": "YulFunctionCall", + "src": "119972:12:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "119965:3:10", + "nodeType": "YulIdentifier", + "src": "119965:3:10" + }, + "nativeSrc": "119965:20:10", + "nodeType": "YulFunctionCall", + "src": "119965:20:10" + }, + { + "kind": "number", + "nativeSrc": "119987:1:10", + "nodeType": "YulLiteral", + "src": "119987:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "119958:6:10", + "nodeType": "YulIdentifier", + "src": "119958:6:10" + }, + "nativeSrc": "119958:31:10", + "nodeType": "YulFunctionCall", + "src": "119958:31:10" + }, + "nativeSrc": "119958:31:10", + "nodeType": "YulExpressionStatement", + "src": "119958:31:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "120046:4:10", + "nodeType": "YulLiteral", + "src": "120046:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "c", + "nativeSrc": "120056:1:10", + "nodeType": "YulIdentifier", + "src": "120056:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "120063:1:10", + "nodeType": "YulIdentifier", + "src": "120063:1:10" + }, + { + "kind": "number", + "nativeSrc": "120066:4:10", + "nodeType": "YulLiteral", + "src": "120066:4:10", + "type": "", + "value": "0xb5" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "120059:3:10", + "nodeType": "YulIdentifier", + "src": "120059:3:10" + }, + "nativeSrc": "120059:12:10", + "nodeType": "YulFunctionCall", + "src": "120059:12:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "120052:3:10", + "nodeType": "YulIdentifier", + "src": "120052:3:10" + }, + "nativeSrc": "120052:20:10", + "nodeType": "YulFunctionCall", + "src": "120052:20:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "120039:6:10", + "nodeType": "YulIdentifier", + "src": "120039:6:10" + }, + "nativeSrc": "120039:34:10", + "nodeType": "YulFunctionCall", + "src": "120039:34:10" + }, + "nativeSrc": "120039:34:10", + "nodeType": "YulExpressionStatement", + "src": "120039:34:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4628, + "isOffset": false, + "isSlot": false, + "src": "119163:4:10", + "valueSize": 1 + }, + { + "declaration": 4628, + "isOffset": false, + "isSlot": false, + "src": "119457:4:10", + "valueSize": 1 + }, + { + "declaration": 4626, + "isOffset": false, + "isSlot": false, + "src": "119807:6:10", + "valueSize": 1 + }, + { + "declaration": 4631, + "isOffset": false, + "isSlot": false, + "src": "119119:1:10", + "valueSize": 1 + }, + { + "declaration": 4631, + "isOffset": false, + "isSlot": false, + "src": "119429:1:10", + "valueSize": 1 + }, + { + "declaration": 4631, + "isOffset": false, + "isSlot": false, + "src": "119512:1:10", + "valueSize": 1 + }, + { + "declaration": 4631, + "isOffset": false, + "isSlot": false, + "src": "119613:1:10", + "valueSize": 1 + }, + { + "declaration": 4631, + "isOffset": false, + "isSlot": false, + "src": "119714:1:10", + "valueSize": 1 + }, + { + "declaration": 4631, + "isOffset": false, + "isSlot": false, + "src": "119797:1:10", + "valueSize": 1 + }, + { + "declaration": 4631, + "isOffset": false, + "isSlot": false, + "src": "119838:1:10", + "valueSize": 1 + }, + { + "declaration": 4631, + "isOffset": false, + "isSlot": false, + "src": "119908:1:10", + "valueSize": 1 + }, + { + "declaration": 4631, + "isOffset": false, + "isSlot": false, + "src": "119969:1:10", + "valueSize": 1 + }, + { + "declaration": 4631, + "isOffset": false, + "isSlot": false, + "src": "120056:1:10", + "valueSize": 1 + } + ], + "id": 4633, + "nodeType": "InlineAssembly", + "src": "119096:1007:10" + } + ] + }, + "documentation": { + "id": 4624, + "nodeType": "StructuredDocumentation", + "src": "118823:77:10", + "text": "@dev Returns the initialization code of the minimal ERC1967 beacon proxy." + }, + "id": 4635, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeERC1967BeaconProxy", + "nameLocation": "118914:26:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4629, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4626, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "118949:6:10", + "nodeType": "VariableDeclaration", + "scope": 4635, + "src": "118941:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4625, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "118941:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4628, + "mutability": "mutable", + "name": "args", + "nameLocation": "118970:4:10", + "nodeType": "VariableDeclaration", + "scope": 4635, + "src": "118957:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4627, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "118957:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "118940:35:10" + }, + "returnParameters": { + "id": 4632, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4631, + "mutability": "mutable", + "name": "c", + "nameLocation": "119036:1:10", + "nodeType": "VariableDeclaration", + "scope": 4635, + "src": "119023:14:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4630, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "119023:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "119022:16:10" + }, + "scope": 5104, + "src": "118905:1204:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4646, + "nodeType": "Block", + "src": "120354:912:10", + "statements": [ + { + "AST": { + "nativeSrc": "120416:844:10", + "nodeType": "YulBlock", + "src": "120416:844:10", + "statements": [ + { + "nativeSrc": "120430:20:10", + "nodeType": "YulVariableDeclaration", + "src": "120430:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "120445:4:10", + "nodeType": "YulLiteral", + "src": "120445:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "120439:5:10", + "nodeType": "YulIdentifier", + "src": "120439:5:10" + }, + "nativeSrc": "120439:11:10", + "nodeType": "YulFunctionCall", + "src": "120439:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "120434:1:10", + "nodeType": "YulTypedName", + "src": "120434:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "120463:20:10", + "nodeType": "YulVariableDeclaration", + "src": "120463:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "120478:4:10", + "nodeType": "YulIdentifier", + "src": "120478:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "120472:5:10", + "nodeType": "YulIdentifier", + "src": "120472:5:10" + }, + "nativeSrc": "120472:11:10", + "nodeType": "YulFunctionCall", + "src": "120472:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "120467:1:10", + "nodeType": "YulTypedName", + "src": "120467:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "120598:14:10", + "nodeType": "YulIdentifier", + "src": "120598:14:10" + }, + "nativeSrc": "120598:16:10", + "nodeType": "YulFunctionCall", + "src": "120598:16:10" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "120616:14:10", + "nodeType": "YulIdentifier", + "src": "120616:14:10" + }, + "nativeSrc": "120616:16:10", + "nodeType": "YulFunctionCall", + "src": "120616:16:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "120637:1:10", + "nodeType": "YulIdentifier", + "src": "120637:1:10" + }, + { + "kind": "number", + "nativeSrc": "120640:6:10", + "nodeType": "YulLiteral", + "src": "120640:6:10", + "type": "", + "value": "0xffad" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "120634:2:10", + "nodeType": "YulIdentifier", + "src": "120634:2:10" + }, + "nativeSrc": "120634:13:10", + "nodeType": "YulFunctionCall", + "src": "120634:13:10" + } + ], + "functionName": { + "name": "returndatacopy", + "nativeSrc": "120583:14:10", + "nodeType": "YulIdentifier", + "src": "120583:14:10" + }, + "nativeSrc": "120583:65:10", + "nodeType": "YulFunctionCall", + "src": "120583:65:10" + }, + "nativeSrc": "120583:65:10", + "nodeType": "YulExpressionStatement", + "src": "120583:65:10" + }, + { + "body": { + "nativeSrc": "120711:92:10", + "nodeType": "YulBlock", + "src": "120711:92:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "120744:1:10", + "nodeType": "YulIdentifier", + "src": "120744:1:10" + }, + { + "kind": "number", + "nativeSrc": "120747:4:10", + "nodeType": "YulLiteral", + "src": "120747:4:10", + "type": "", + "value": "0x8b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "120740:3:10", + "nodeType": "YulIdentifier", + "src": "120740:3:10" + }, + "nativeSrc": "120740:12:10", + "nodeType": "YulFunctionCall", + "src": "120740:12:10" + }, + { + "name": "i", + "nativeSrc": "120754:1:10", + "nodeType": "YulIdentifier", + "src": "120754:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "120736:3:10", + "nodeType": "YulIdentifier", + "src": "120736:3:10" + }, + "nativeSrc": "120736:20:10", + "nodeType": "YulFunctionCall", + "src": "120736:20:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "120772:4:10", + "nodeType": "YulIdentifier", + "src": "120772:4:10" + }, + { + "kind": "number", + "nativeSrc": "120778:4:10", + "nodeType": "YulLiteral", + "src": "120778:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "120768:3:10", + "nodeType": "YulIdentifier", + "src": "120768:3:10" + }, + "nativeSrc": "120768:15:10", + "nodeType": "YulFunctionCall", + "src": "120768:15:10" + }, + { + "name": "i", + "nativeSrc": "120785:1:10", + "nodeType": "YulIdentifier", + "src": "120785:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "120764:3:10", + "nodeType": "YulIdentifier", + "src": "120764:3:10" + }, + "nativeSrc": "120764:23:10", + "nodeType": "YulFunctionCall", + "src": "120764:23:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "120758:5:10", + "nodeType": "YulIdentifier", + "src": "120758:5:10" + }, + "nativeSrc": "120758:30:10", + "nodeType": "YulFunctionCall", + "src": "120758:30:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "120729:6:10", + "nodeType": "YulIdentifier", + "src": "120729:6:10" + }, + "nativeSrc": "120729:60:10", + "nodeType": "YulFunctionCall", + "src": "120729:60:10" + }, + "nativeSrc": "120729:60:10", + "nodeType": "YulExpressionStatement", + "src": "120729:60:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "120683:1:10", + "nodeType": "YulIdentifier", + "src": "120683:1:10" + }, + { + "name": "n", + "nativeSrc": "120686:1:10", + "nodeType": "YulIdentifier", + "src": "120686:1:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "120680:2:10", + "nodeType": "YulIdentifier", + "src": "120680:2:10" + }, + "nativeSrc": "120680:8:10", + "nodeType": "YulFunctionCall", + "src": "120680:8:10" + }, + "nativeSrc": "120661:142:10", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "120689:21:10", + "nodeType": "YulBlock", + "src": "120689:21:10", + "statements": [ + { + "nativeSrc": "120691:17:10", + "nodeType": "YulAssignment", + "src": "120691:17:10", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "120700:1:10", + "nodeType": "YulIdentifier", + "src": "120700:1:10" + }, + { + "kind": "number", + "nativeSrc": "120703:4:10", + "nodeType": "YulLiteral", + "src": "120703:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "120696:3:10", + "nodeType": "YulIdentifier", + "src": "120696:3:10" + }, + "nativeSrc": "120696:12:10", + "nodeType": "YulFunctionCall", + "src": "120696:12:10" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "120691:1:10", + "nodeType": "YulIdentifier", + "src": "120691:1:10" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "120665:14:10", + "nodeType": "YulBlock", + "src": "120665:14:10", + "statements": [ + { + "nativeSrc": "120667:10:10", + "nodeType": "YulVariableDeclaration", + "src": "120667:10:10", + "value": { + "kind": "number", + "nativeSrc": "120676:1:10", + "nodeType": "YulLiteral", + "src": "120676:1:10", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "120671:1:10", + "nodeType": "YulTypedName", + "src": "120671:1:10", + "type": "" + } + ] + } + ] + }, + "src": "120661:142:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "120827:1:10", + "nodeType": "YulIdentifier", + "src": "120827:1:10" + }, + { + "kind": "number", + "nativeSrc": "120830:4:10", + "nodeType": "YulLiteral", + "src": "120830:4:10", + "type": "", + "value": "0x6b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "120823:3:10", + "nodeType": "YulIdentifier", + "src": "120823:3:10" + }, + "nativeSrc": "120823:12:10", + "nodeType": "YulFunctionCall", + "src": "120823:12:10" + }, + { + "kind": "number", + "nativeSrc": "120837:66:10", + "nodeType": "YulLiteral", + "src": "120837:66:10", + "type": "", + "value": "0xb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "120816:6:10", + "nodeType": "YulIdentifier", + "src": "120816:6:10" + }, + "nativeSrc": "120816:88:10", + "nodeType": "YulFunctionCall", + "src": "120816:88:10" + }, + "nativeSrc": "120816:88:10", + "nodeType": "YulExpressionStatement", + "src": "120816:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "120928:1:10", + "nodeType": "YulIdentifier", + "src": "120928:1:10" + }, + { + "kind": "number", + "nativeSrc": "120931:4:10", + "nodeType": "YulLiteral", + "src": "120931:4:10", + "type": "", + "value": "0x4b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "120924:3:10", + "nodeType": "YulIdentifier", + "src": "120924:3:10" + }, + "nativeSrc": "120924:12:10", + "nodeType": "YulFunctionCall", + "src": "120924:12:10" + }, + { + "kind": "number", + "nativeSrc": "120938:66:10", + "nodeType": "YulLiteral", + "src": "120938:66:10", + "type": "", + "value": "0x1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "120917:6:10", + "nodeType": "YulIdentifier", + "src": "120917:6:10" + }, + "nativeSrc": "120917:88:10", + "nodeType": "YulFunctionCall", + "src": "120917:88:10" + }, + "nativeSrc": "120917:88:10", + "nodeType": "YulExpressionStatement", + "src": "120917:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "121029:1:10", + "nodeType": "YulIdentifier", + "src": "121029:1:10" + }, + { + "kind": "number", + "nativeSrc": "121032:4:10", + "nodeType": "YulLiteral", + "src": "121032:4:10", + "type": "", + "value": "0x2b" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "121025:3:10", + "nodeType": "YulIdentifier", + "src": "121025:3:10" + }, + "nativeSrc": "121025:12:10", + "nodeType": "YulFunctionCall", + "src": "121025:12:10" + }, + { + "kind": "number", + "nativeSrc": "121039:48:10", + "nodeType": "YulLiteral", + "src": "121039:48:10", + "type": "", + "value": "0x60195155f3363d3d373d3d363d602036600436635c60da" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "121018:6:10", + "nodeType": "YulIdentifier", + "src": "121018:6:10" + }, + "nativeSrc": "121018:70:10", + "nodeType": "YulFunctionCall", + "src": "121018:70:10" + }, + "nativeSrc": "121018:70:10", + "nodeType": "YulExpressionStatement", + "src": "121018:70:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "121112:1:10", + "nodeType": "YulIdentifier", + "src": "121112:1:10" + }, + { + "kind": "number", + "nativeSrc": "121115:4:10", + "nodeType": "YulLiteral", + "src": "121115:4:10", + "type": "", + "value": "0x14" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "121108:3:10", + "nodeType": "YulIdentifier", + "src": "121108:3:10" + }, + "nativeSrc": "121108:12:10", + "nodeType": "YulFunctionCall", + "src": "121108:12:10" + }, + { + "name": "beacon", + "nativeSrc": "121122:6:10", + "nodeType": "YulIdentifier", + "src": "121122:6:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "121101:6:10", + "nodeType": "YulIdentifier", + "src": "121101:6:10" + }, + "nativeSrc": "121101:28:10", + "nodeType": "YulFunctionCall", + "src": "121101:28:10" + }, + "nativeSrc": "121101:28:10", + "nodeType": "YulExpressionStatement", + "src": "121101:28:10" + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "121149:1:10", + "nodeType": "YulIdentifier", + "src": "121149:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "121156:22:10", + "nodeType": "YulLiteral", + "src": "121156:22:10", + "type": "", + "value": "0x6100523d8160233d3973" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "121184:2:10", + "nodeType": "YulLiteral", + "src": "121184:2:10", + "type": "", + "value": "56" + }, + { + "name": "n", + "nativeSrc": "121188:1:10", + "nodeType": "YulIdentifier", + "src": "121188:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "121180:3:10", + "nodeType": "YulIdentifier", + "src": "121180:3:10" + }, + "nativeSrc": "121180:10:10", + "nodeType": "YulFunctionCall", + "src": "121180:10:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "121152:3:10", + "nodeType": "YulIdentifier", + "src": "121152:3:10" + }, + "nativeSrc": "121152:39:10", + "nodeType": "YulFunctionCall", + "src": "121152:39:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "121142:6:10", + "nodeType": "YulIdentifier", + "src": "121142:6:10" + }, + "nativeSrc": "121142:50:10", + "nodeType": "YulFunctionCall", + "src": "121142:50:10" + }, + "nativeSrc": "121142:50:10", + "nodeType": "YulExpressionStatement", + "src": "121142:50:10" + }, + { + "nativeSrc": "121205:45:10", + "nodeType": "YulAssignment", + "src": "121205:45:10", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "121227:1:10", + "nodeType": "YulIdentifier", + "src": "121227:1:10" + }, + { + "kind": "number", + "nativeSrc": "121230:4:10", + "nodeType": "YulLiteral", + "src": "121230:4:10", + "type": "", + "value": "0x16" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "121223:3:10", + "nodeType": "YulIdentifier", + "src": "121223:3:10" + }, + "nativeSrc": "121223:12:10", + "nodeType": "YulFunctionCall", + "src": "121223:12:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "121241:1:10", + "nodeType": "YulIdentifier", + "src": "121241:1:10" + }, + { + "kind": "number", + "nativeSrc": "121244:4:10", + "nodeType": "YulLiteral", + "src": "121244:4:10", + "type": "", + "value": "0x75" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "121237:3:10", + "nodeType": "YulIdentifier", + "src": "121237:3:10" + }, + "nativeSrc": "121237:12:10", + "nodeType": "YulFunctionCall", + "src": "121237:12:10" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "121213:9:10", + "nodeType": "YulIdentifier", + "src": "121213:9:10" + }, + "nativeSrc": "121213:37:10", + "nodeType": "YulFunctionCall", + "src": "121213:37:10" + }, + "variableNames": [ + { + "name": "hash", + "nativeSrc": "121205:4:10", + "nodeType": "YulIdentifier", + "src": "121205:4:10" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4640, + "isOffset": false, + "isSlot": false, + "src": "120478:4:10", + "valueSize": 1 + }, + { + "declaration": 4640, + "isOffset": false, + "isSlot": false, + "src": "120772:4:10", + "valueSize": 1 + }, + { + "declaration": 4638, + "isOffset": false, + "isSlot": false, + "src": "121122:6:10", + "valueSize": 1 + }, + { + "declaration": 4643, + "isOffset": false, + "isSlot": false, + "src": "121205:4:10", + "valueSize": 1 + } + ], + "id": 4645, + "nodeType": "InlineAssembly", + "src": "120407:853:10" + } + ] + }, + "documentation": { + "id": 4636, + "nodeType": "StructuredDocumentation", + "src": "120115:94:10", + "text": "@dev Returns the initialization code hash of the minimal ERC1967 beacon proxy with `args`." + }, + "id": 4647, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeHashERC1967BeaconProxy", + "nameLocation": "120223:30:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4641, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4638, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "120262:6:10", + "nodeType": "VariableDeclaration", + "scope": 4647, + "src": "120254:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4637, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "120254:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4640, + "mutability": "mutable", + "name": "args", + "nameLocation": "120283:4:10", + "nodeType": "VariableDeclaration", + "scope": 4647, + "src": "120270:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4639, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "120270:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "120253:35:10" + }, + "returnParameters": { + "id": 4644, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4643, + "mutability": "mutable", + "name": "hash", + "nameLocation": "120344:4:10", + "nodeType": "VariableDeclaration", + "scope": 4647, + "src": "120336:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4642, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "120336:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "120335:14:10" + }, + "scope": 5104, + "src": "120214:1052:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4676, + "nodeType": "Block", + "src": "121668:147:10", + "statements": [ + { + "assignments": [ + 4662 + ], + "declarations": [ + { + "constant": false, + "id": 4662, + "mutability": "mutable", + "name": "hash", + "nameLocation": "121686:4:10", + "nodeType": "VariableDeclaration", + "scope": 4676, + "src": "121678:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4661, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "121678:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 4667, + "initialValue": { + "arguments": [ + { + "id": 4664, + "name": "beacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4650, + "src": "121724:6:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4665, + "name": "args", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4652, + "src": "121732:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 4663, + "name": "initCodeHashERC1967BeaconProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4485, + 4647 + ], + "referencedDeclaration": 4647, + "src": "121693:30:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (address,bytes memory) pure returns (bytes32)" + } + }, + "id": 4666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "121693:44:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "121678:59:10" + }, + { + "expression": { + "id": 4674, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4668, + "name": "predicted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4659, + "src": "121747:9:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 4670, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4662, + "src": "121787:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 4671, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4654, + "src": "121793:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 4672, + "name": "deployer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4656, + "src": "121799:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4669, + "name": "predictDeterministicAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3237, + 3510, + 5081 + ], + "referencedDeclaration": 5081, + "src": "121759:27:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_address_$", + "typeString": "function (bytes32,bytes32,address) pure returns (address)" + } + }, + "id": 4673, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "121759:49:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "121747:61:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4675, + "nodeType": "ExpressionStatement", + "src": "121747:61:10" + } + ] + }, + "documentation": { + "id": 4648, + "nodeType": "StructuredDocumentation", + "src": "121272:189:10", + "text": "@dev Returns the address of the ERC1967 beacon proxy with `args`, with `salt` by `deployer`.\n Note: The returned result has dirty upper 96 bits. Please clean if used in assembly." + }, + "id": 4677, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "predictDeterministicAddressERC1967BeaconProxy", + "nameLocation": "121475:45:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4657, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4650, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "121538:6:10", + "nodeType": "VariableDeclaration", + "scope": 4677, + "src": "121530:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4649, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "121530:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4652, + "mutability": "mutable", + "name": "args", + "nameLocation": "121567:4:10", + "nodeType": "VariableDeclaration", + "scope": 4677, + "src": "121554:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4651, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "121554:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4654, + "mutability": "mutable", + "name": "salt", + "nameLocation": "121589:4:10", + "nodeType": "VariableDeclaration", + "scope": 4677, + "src": "121581:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4653, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "121581:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4656, + "mutability": "mutable", + "name": "deployer", + "nameLocation": "121611:8:10", + "nodeType": "VariableDeclaration", + "scope": 4677, + "src": "121603:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4655, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "121603:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "121520:105:10" + }, + "returnParameters": { + "id": 4660, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4659, + "mutability": "mutable", + "name": "predicted", + "nameLocation": "121657:9:10", + "nodeType": "VariableDeclaration", + "scope": 4677, + "src": "121649:17:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4658, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "121649:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "121648:19:10" + }, + "scope": 5104, + "src": "121466:349:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4686, + "nodeType": "Block", + "src": "122001:371:10", + "statements": [ + { + "AST": { + "nativeSrc": "122063:303:10", + "nodeType": "YulBlock", + "src": "122063:303:10", + "statements": [ + { + "nativeSrc": "122077:19:10", + "nodeType": "YulAssignment", + "src": "122077:19:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "122091:4:10", + "nodeType": "YulLiteral", + "src": "122091:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "122085:5:10", + "nodeType": "YulIdentifier", + "src": "122085:5:10" + }, + "nativeSrc": "122085:11:10", + "nodeType": "YulFunctionCall", + "src": "122085:11:10" + }, + "variableNames": [ + { + "name": "args", + "nativeSrc": "122077:4:10", + "nodeType": "YulIdentifier", + "src": "122077:4:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "args", + "nativeSrc": "122116:4:10", + "nodeType": "YulIdentifier", + "src": "122116:4:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "122126:12:10", + "nodeType": "YulLiteral", + "src": "122126:12:10", + "type": "", + "value": "0xffffffffff" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "122156:8:10", + "nodeType": "YulIdentifier", + "src": "122156:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "122144:11:10", + "nodeType": "YulIdentifier", + "src": "122144:11:10" + }, + "nativeSrc": "122144:21:10", + "nodeType": "YulFunctionCall", + "src": "122144:21:10" + }, + { + "kind": "number", + "nativeSrc": "122167:4:10", + "nodeType": "YulLiteral", + "src": "122167:4:10", + "type": "", + "value": "0x52" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "122140:3:10", + "nodeType": "YulIdentifier", + "src": "122140:3:10" + }, + "nativeSrc": "122140:32:10", + "nodeType": "YulFunctionCall", + "src": "122140:32:10" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "122122:3:10", + "nodeType": "YulIdentifier", + "src": "122122:3:10" + }, + "nativeSrc": "122122:51:10", + "nodeType": "YulFunctionCall", + "src": "122122:51:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "122109:6:10", + "nodeType": "YulIdentifier", + "src": "122109:6:10" + }, + "nativeSrc": "122109:65:10", + "nodeType": "YulFunctionCall", + "src": "122109:65:10" + }, + "nativeSrc": "122109:65:10", + "nodeType": "YulExpressionStatement", + "src": "122109:65:10" + }, + { + "expression": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "122220:8:10", + "nodeType": "YulIdentifier", + "src": "122220:8:10" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "122234:4:10", + "nodeType": "YulIdentifier", + "src": "122234:4:10" + }, + { + "kind": "number", + "nativeSrc": "122240:4:10", + "nodeType": "YulLiteral", + "src": "122240:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "122230:3:10", + "nodeType": "YulIdentifier", + "src": "122230:3:10" + }, + "nativeSrc": "122230:15:10", + "nodeType": "YulFunctionCall", + "src": "122230:15:10" + }, + { + "kind": "number", + "nativeSrc": "122247:4:10", + "nodeType": "YulLiteral", + "src": "122247:4:10", + "type": "", + "value": "0x52" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "122263:4:10", + "nodeType": "YulIdentifier", + "src": "122263:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "122257:5:10", + "nodeType": "YulIdentifier", + "src": "122257:5:10" + }, + "nativeSrc": "122257:11:10", + "nodeType": "YulFunctionCall", + "src": "122257:11:10" + }, + { + "kind": "number", + "nativeSrc": "122270:4:10", + "nodeType": "YulLiteral", + "src": "122270:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "122253:3:10", + "nodeType": "YulIdentifier", + "src": "122253:3:10" + }, + "nativeSrc": "122253:22:10", + "nodeType": "YulFunctionCall", + "src": "122253:22:10" + } + ], + "functionName": { + "name": "extcodecopy", + "nativeSrc": "122208:11:10", + "nodeType": "YulIdentifier", + "src": "122208:11:10" + }, + "nativeSrc": "122208:68:10", + "nodeType": "YulFunctionCall", + "src": "122208:68:10" + }, + "nativeSrc": "122208:68:10", + "nodeType": "YulExpressionStatement", + "src": "122208:68:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "122296:4:10", + "nodeType": "YulLiteral", + "src": "122296:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "122312:4:10", + "nodeType": "YulIdentifier", + "src": "122312:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "122306:5:10", + "nodeType": "YulIdentifier", + "src": "122306:5:10" + }, + "nativeSrc": "122306:11:10", + "nodeType": "YulFunctionCall", + "src": "122306:11:10" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "122323:4:10", + "nodeType": "YulIdentifier", + "src": "122323:4:10" + }, + { + "kind": "number", + "nativeSrc": "122329:4:10", + "nodeType": "YulLiteral", + "src": "122329:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "122319:3:10", + "nodeType": "YulIdentifier", + "src": "122319:3:10" + }, + "nativeSrc": "122319:15:10", + "nodeType": "YulFunctionCall", + "src": "122319:15:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "122302:3:10", + "nodeType": "YulIdentifier", + "src": "122302:3:10" + }, + "nativeSrc": "122302:33:10", + "nodeType": "YulFunctionCall", + "src": "122302:33:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "122289:6:10", + "nodeType": "YulIdentifier", + "src": "122289:6:10" + }, + "nativeSrc": "122289:47:10", + "nodeType": "YulFunctionCall", + "src": "122289:47:10" + }, + "nativeSrc": "122289:47:10", + "nodeType": "YulExpressionStatement", + "src": "122289:47:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4683, + "isOffset": false, + "isSlot": false, + "src": "122077:4:10", + "valueSize": 1 + }, + { + "declaration": 4683, + "isOffset": false, + "isSlot": false, + "src": "122116:4:10", + "valueSize": 1 + }, + { + "declaration": 4683, + "isOffset": false, + "isSlot": false, + "src": "122234:4:10", + "valueSize": 1 + }, + { + "declaration": 4683, + "isOffset": false, + "isSlot": false, + "src": "122263:4:10", + "valueSize": 1 + }, + { + "declaration": 4683, + "isOffset": false, + "isSlot": false, + "src": "122312:4:10", + "valueSize": 1 + }, + { + "declaration": 4683, + "isOffset": false, + "isSlot": false, + "src": "122323:4:10", + "valueSize": 1 + }, + { + "declaration": 4680, + "isOffset": false, + "isSlot": false, + "src": "122156:8:10", + "valueSize": 1 + }, + { + "declaration": 4680, + "isOffset": false, + "isSlot": false, + "src": "122220:8:10", + "valueSize": 1 + } + ], + "id": 4685, + "nodeType": "InlineAssembly", + "src": "122054:312:10" + } + ] + }, + "documentation": { + "id": 4678, + "nodeType": "StructuredDocumentation", + "src": "121821:81:10", + "text": "@dev Equivalent to `argsOnERC1967BeaconProxy(instance, start, 2 ** 256 - 1)`." + }, + "id": 4687, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "argsOnERC1967BeaconProxy", + "nameLocation": "121916:24:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4681, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4680, + "mutability": "mutable", + "name": "instance", + "nameLocation": "121949:8:10", + "nodeType": "VariableDeclaration", + "scope": 4687, + "src": "121941:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4679, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "121941:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "121940:18:10" + }, + "returnParameters": { + "id": 4684, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4683, + "mutability": "mutable", + "name": "args", + "nameLocation": "121995:4:10", + "nodeType": "VariableDeclaration", + "scope": 4687, + "src": "121982:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4682, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "121982:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "121981:19:10" + }, + "scope": 5104, + "src": "121907:465:10", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4698, + "nodeType": "Block", + "src": "122601:485:10", + "statements": [ + { + "AST": { + "nativeSrc": "122663:417:10", + "nodeType": "YulBlock", + "src": "122663:417:10", + "statements": [ + { + "nativeSrc": "122677:19:10", + "nodeType": "YulAssignment", + "src": "122677:19:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "122691:4:10", + "nodeType": "YulLiteral", + "src": "122691:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "122685:5:10", + "nodeType": "YulIdentifier", + "src": "122685:5:10" + }, + "nativeSrc": "122685:11:10", + "nodeType": "YulFunctionCall", + "src": "122685:11:10" + }, + "variableNames": [ + { + "name": "args", + "nativeSrc": "122677:4:10", + "nodeType": "YulIdentifier", + "src": "122677:4:10" + } + ] + }, + { + "nativeSrc": "122709:60:10", + "nodeType": "YulVariableDeclaration", + "src": "122709:60:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "122722:12:10", + "nodeType": "YulLiteral", + "src": "122722:12:10", + "type": "", + "value": "0xffffffffff" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "122752:8:10", + "nodeType": "YulIdentifier", + "src": "122752:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "122740:11:10", + "nodeType": "YulIdentifier", + "src": "122740:11:10" + }, + "nativeSrc": "122740:21:10", + "nodeType": "YulFunctionCall", + "src": "122740:21:10" + }, + { + "kind": "number", + "nativeSrc": "122763:4:10", + "nodeType": "YulLiteral", + "src": "122763:4:10", + "type": "", + "value": "0x52" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "122736:3:10", + "nodeType": "YulIdentifier", + "src": "122736:3:10" + }, + "nativeSrc": "122736:32:10", + "nodeType": "YulFunctionCall", + "src": "122736:32:10" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "122718:3:10", + "nodeType": "YulIdentifier", + "src": "122718:3:10" + }, + "nativeSrc": "122718:51:10", + "nodeType": "YulFunctionCall", + "src": "122718:51:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "122713:1:10", + "nodeType": "YulTypedName", + "src": "122713:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "122782:56:10", + "nodeType": "YulVariableDeclaration", + "src": "122782:56:10", + "value": { + "arguments": [ + { + "name": "n", + "nativeSrc": "122795:1:10", + "nodeType": "YulIdentifier", + "src": "122795:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "122802:8:10", + "nodeType": "YulLiteral", + "src": "122802:8:10", + "type": "", + "value": "0xffffff" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "start", + "nativeSrc": "122819:5:10", + "nodeType": "YulIdentifier", + "src": "122819:5:10" + }, + { + "name": "n", + "nativeSrc": "122826:1:10", + "nodeType": "YulIdentifier", + "src": "122826:1:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "122816:2:10", + "nodeType": "YulIdentifier", + "src": "122816:2:10" + }, + "nativeSrc": "122816:12:10", + "nodeType": "YulFunctionCall", + "src": "122816:12:10" + }, + { + "name": "start", + "nativeSrc": "122830:5:10", + "nodeType": "YulIdentifier", + "src": "122830:5:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "122812:3:10", + "nodeType": "YulIdentifier", + "src": "122812:3:10" + }, + "nativeSrc": "122812:24:10", + "nodeType": "YulFunctionCall", + "src": "122812:24:10" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "122798:3:10", + "nodeType": "YulIdentifier", + "src": "122798:3:10" + }, + "nativeSrc": "122798:39:10", + "nodeType": "YulFunctionCall", + "src": "122798:39:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "122791:3:10", + "nodeType": "YulIdentifier", + "src": "122791:3:10" + }, + "nativeSrc": "122791:47:10", + "nodeType": "YulFunctionCall", + "src": "122791:47:10" + }, + "variables": [ + { + "name": "l", + "nativeSrc": "122786:1:10", + "nodeType": "YulTypedName", + "src": "122786:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "122863:8:10", + "nodeType": "YulIdentifier", + "src": "122863:8:10" + }, + { + "name": "args", + "nativeSrc": "122873:4:10", + "nodeType": "YulIdentifier", + "src": "122873:4:10" + }, + { + "arguments": [ + { + "name": "start", + "nativeSrc": "122883:5:10", + "nodeType": "YulIdentifier", + "src": "122883:5:10" + }, + { + "kind": "number", + "nativeSrc": "122890:4:10", + "nodeType": "YulLiteral", + "src": "122890:4:10", + "type": "", + "value": "0x32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "122879:3:10", + "nodeType": "YulIdentifier", + "src": "122879:3:10" + }, + "nativeSrc": "122879:16:10", + "nodeType": "YulFunctionCall", + "src": "122879:16:10" + }, + { + "arguments": [ + { + "name": "l", + "nativeSrc": "122901:1:10", + "nodeType": "YulIdentifier", + "src": "122901:1:10" + }, + { + "kind": "number", + "nativeSrc": "122904:4:10", + "nodeType": "YulLiteral", + "src": "122904:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "122897:3:10", + "nodeType": "YulIdentifier", + "src": "122897:3:10" + }, + "nativeSrc": "122897:12:10", + "nodeType": "YulFunctionCall", + "src": "122897:12:10" + } + ], + "functionName": { + "name": "extcodecopy", + "nativeSrc": "122851:11:10", + "nodeType": "YulIdentifier", + "src": "122851:11:10" + }, + "nativeSrc": "122851:59:10", + "nodeType": "YulFunctionCall", + "src": "122851:59:10" + }, + "nativeSrc": "122851:59:10", + "nodeType": "YulExpressionStatement", + "src": "122851:59:10" + }, + { + "expression": { + "arguments": [ + { + "name": "args", + "nativeSrc": "122930:4:10", + "nodeType": "YulIdentifier", + "src": "122930:4:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "n", + "nativeSrc": "122944:1:10", + "nodeType": "YulIdentifier", + "src": "122944:1:10" + }, + { + "name": "start", + "nativeSrc": "122947:5:10", + "nodeType": "YulIdentifier", + "src": "122947:5:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "122940:3:10", + "nodeType": "YulIdentifier", + "src": "122940:3:10" + }, + "nativeSrc": "122940:13:10", + "nodeType": "YulFunctionCall", + "src": "122940:13:10" + }, + { + "arguments": [ + { + "name": "start", + "nativeSrc": "122958:5:10", + "nodeType": "YulIdentifier", + "src": "122958:5:10" + }, + { + "name": "n", + "nativeSrc": "122965:1:10", + "nodeType": "YulIdentifier", + "src": "122965:1:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "122955:2:10", + "nodeType": "YulIdentifier", + "src": "122955:2:10" + }, + "nativeSrc": "122955:12:10", + "nodeType": "YulFunctionCall", + "src": "122955:12:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "122936:3:10", + "nodeType": "YulIdentifier", + "src": "122936:3:10" + }, + "nativeSrc": "122936:32:10", + "nodeType": "YulFunctionCall", + "src": "122936:32:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "122923:6:10", + "nodeType": "YulIdentifier", + "src": "122923:6:10" + }, + "nativeSrc": "122923:46:10", + "nodeType": "YulFunctionCall", + "src": "122923:46:10" + }, + "nativeSrc": "122923:46:10", + "nodeType": "YulExpressionStatement", + "src": "122923:46:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "123010:4:10", + "nodeType": "YulLiteral", + "src": "123010:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "123020:4:10", + "nodeType": "YulIdentifier", + "src": "123020:4:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "123030:4:10", + "nodeType": "YulLiteral", + "src": "123030:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "123042:4:10", + "nodeType": "YulIdentifier", + "src": "123042:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "123036:5:10", + "nodeType": "YulIdentifier", + "src": "123036:5:10" + }, + "nativeSrc": "123036:11:10", + "nodeType": "YulFunctionCall", + "src": "123036:11:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "123026:3:10", + "nodeType": "YulIdentifier", + "src": "123026:3:10" + }, + "nativeSrc": "123026:22:10", + "nodeType": "YulFunctionCall", + "src": "123026:22:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "123016:3:10", + "nodeType": "YulIdentifier", + "src": "123016:3:10" + }, + "nativeSrc": "123016:33:10", + "nodeType": "YulFunctionCall", + "src": "123016:33:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "123003:6:10", + "nodeType": "YulIdentifier", + "src": "123003:6:10" + }, + "nativeSrc": "123003:47:10", + "nodeType": "YulFunctionCall", + "src": "123003:47:10" + }, + "nativeSrc": "123003:47:10", + "nodeType": "YulExpressionStatement", + "src": "123003:47:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4695, + "isOffset": false, + "isSlot": false, + "src": "122677:4:10", + "valueSize": 1 + }, + { + "declaration": 4695, + "isOffset": false, + "isSlot": false, + "src": "122873:4:10", + "valueSize": 1 + }, + { + "declaration": 4695, + "isOffset": false, + "isSlot": false, + "src": "122930:4:10", + "valueSize": 1 + }, + { + "declaration": 4695, + "isOffset": false, + "isSlot": false, + "src": "123020:4:10", + "valueSize": 1 + }, + { + "declaration": 4695, + "isOffset": false, + "isSlot": false, + "src": "123042:4:10", + "valueSize": 1 + }, + { + "declaration": 4690, + "isOffset": false, + "isSlot": false, + "src": "122752:8:10", + "valueSize": 1 + }, + { + "declaration": 4690, + "isOffset": false, + "isSlot": false, + "src": "122863:8:10", + "valueSize": 1 + }, + { + "declaration": 4692, + "isOffset": false, + "isSlot": false, + "src": "122819:5:10", + "valueSize": 1 + }, + { + "declaration": 4692, + "isOffset": false, + "isSlot": false, + "src": "122830:5:10", + "valueSize": 1 + }, + { + "declaration": 4692, + "isOffset": false, + "isSlot": false, + "src": "122883:5:10", + "valueSize": 1 + }, + { + "declaration": 4692, + "isOffset": false, + "isSlot": false, + "src": "122947:5:10", + "valueSize": 1 + }, + { + "declaration": 4692, + "isOffset": false, + "isSlot": false, + "src": "122958:5:10", + "valueSize": 1 + } + ], + "id": 4697, + "nodeType": "InlineAssembly", + "src": "122654:426:10" + } + ] + }, + "documentation": { + "id": 4688, + "nodeType": "StructuredDocumentation", + "src": "122378:81:10", + "text": "@dev Equivalent to `argsOnERC1967BeaconProxy(instance, start, 2 ** 256 - 1)`." + }, + "id": 4699, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "argsOnERC1967BeaconProxy", + "nameLocation": "122473:24:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4693, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4690, + "mutability": "mutable", + "name": "instance", + "nameLocation": "122506:8:10", + "nodeType": "VariableDeclaration", + "scope": 4699, + "src": "122498:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4689, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "122498:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4692, + "mutability": "mutable", + "name": "start", + "nameLocation": "122524:5:10", + "nodeType": "VariableDeclaration", + "scope": 4699, + "src": "122516:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4691, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "122516:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "122497:33:10" + }, + "returnParameters": { + "id": 4696, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4695, + "mutability": "mutable", + "name": "args", + "nameLocation": "122591:4:10", + "nodeType": "VariableDeclaration", + "scope": 4699, + "src": "122578:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4694, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "122578:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "122577:19:10" + }, + "scope": 5104, + "src": "122464:622:10", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4712, + "nodeType": "Block", + "src": "123621:785:10", + "statements": [ + { + "AST": { + "nativeSrc": "123683:717:10", + "nodeType": "YulBlock", + "src": "123683:717:10", + "statements": [ + { + "nativeSrc": "123697:19:10", + "nodeType": "YulAssignment", + "src": "123697:19:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "123711:4:10", + "nodeType": "YulLiteral", + "src": "123711:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "123705:5:10", + "nodeType": "YulIdentifier", + "src": "123705:5:10" + }, + "nativeSrc": "123705:11:10", + "nodeType": "YulFunctionCall", + "src": "123705:11:10" + }, + "variableNames": [ + { + "name": "args", + "nativeSrc": "123697:4:10", + "nodeType": "YulIdentifier", + "src": "123697:4:10" + } + ] + }, + { + "body": { + "nativeSrc": "123756:17:10", + "nodeType": "YulBlock", + "src": "123756:17:10", + "statements": [ + { + "nativeSrc": "123758:13:10", + "nodeType": "YulAssignment", + "src": "123758:13:10", + "value": { + "kind": "number", + "nativeSrc": "123765:6:10", + "nodeType": "YulLiteral", + "src": "123765:6:10", + "type": "", + "value": "0xffff" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "123758:3:10", + "nodeType": "YulIdentifier", + "src": "123758:3:10" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "end", + "nativeSrc": "123742:3:10", + "nodeType": "YulIdentifier", + "src": "123742:3:10" + }, + { + "kind": "number", + "nativeSrc": "123747:6:10", + "nodeType": "YulLiteral", + "src": "123747:6:10", + "type": "", + "value": "0xffff" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "123739:2:10", + "nodeType": "YulIdentifier", + "src": "123739:2:10" + }, + "nativeSrc": "123739:15:10", + "nodeType": "YulFunctionCall", + "src": "123739:15:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "123732:6:10", + "nodeType": "YulIdentifier", + "src": "123732:6:10" + }, + "nativeSrc": "123732:23:10", + "nodeType": "YulFunctionCall", + "src": "123732:23:10" + }, + "nativeSrc": "123729:44:10", + "nodeType": "YulIf", + "src": "123729:44:10" + }, + { + "nativeSrc": "123786:45:10", + "nodeType": "YulVariableDeclaration", + "src": "123786:45:10", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "end", + "nativeSrc": "123803:3:10", + "nodeType": "YulIdentifier", + "src": "123803:3:10" + }, + { + "name": "start", + "nativeSrc": "123808:5:10", + "nodeType": "YulIdentifier", + "src": "123808:5:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "123799:3:10", + "nodeType": "YulIdentifier", + "src": "123799:3:10" + }, + "nativeSrc": "123799:15:10", + "nodeType": "YulFunctionCall", + "src": "123799:15:10" + }, + { + "arguments": [ + { + "name": "start", + "nativeSrc": "123819:5:10", + "nodeType": "YulIdentifier", + "src": "123819:5:10" + }, + { + "name": "end", + "nativeSrc": "123826:3:10", + "nodeType": "YulIdentifier", + "src": "123826:3:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "123816:2:10", + "nodeType": "YulIdentifier", + "src": "123816:2:10" + }, + "nativeSrc": "123816:14:10", + "nodeType": "YulFunctionCall", + "src": "123816:14:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "123795:3:10", + "nodeType": "YulIdentifier", + "src": "123795:3:10" + }, + "nativeSrc": "123795:36:10", + "nodeType": "YulFunctionCall", + "src": "123795:36:10" + }, + "variables": [ + { + "name": "d", + "nativeSrc": "123790:1:10", + "nodeType": "YulTypedName", + "src": "123790:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "123856:8:10", + "nodeType": "YulIdentifier", + "src": "123856:8:10" + }, + { + "name": "args", + "nativeSrc": "123866:4:10", + "nodeType": "YulIdentifier", + "src": "123866:4:10" + }, + { + "arguments": [ + { + "name": "start", + "nativeSrc": "123876:5:10", + "nodeType": "YulIdentifier", + "src": "123876:5:10" + }, + { + "kind": "number", + "nativeSrc": "123883:4:10", + "nodeType": "YulLiteral", + "src": "123883:4:10", + "type": "", + "value": "0x32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "123872:3:10", + "nodeType": "YulIdentifier", + "src": "123872:3:10" + }, + "nativeSrc": "123872:16:10", + "nodeType": "YulFunctionCall", + "src": "123872:16:10" + }, + { + "arguments": [ + { + "name": "d", + "nativeSrc": "123894:1:10", + "nodeType": "YulIdentifier", + "src": "123894:1:10" + }, + { + "kind": "number", + "nativeSrc": "123897:4:10", + "nodeType": "YulLiteral", + "src": "123897:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "123890:3:10", + "nodeType": "YulIdentifier", + "src": "123890:3:10" + }, + "nativeSrc": "123890:12:10", + "nodeType": "YulFunctionCall", + "src": "123890:12:10" + } + ], + "functionName": { + "name": "extcodecopy", + "nativeSrc": "123844:11:10", + "nodeType": "YulIdentifier", + "src": "123844:11:10" + }, + "nativeSrc": "123844:59:10", + "nodeType": "YulFunctionCall", + "src": "123844:59:10" + }, + "nativeSrc": "123844:59:10", + "nodeType": "YulExpressionStatement", + "src": "123844:59:10" + }, + { + "body": { + "nativeSrc": "123958:229:10", + "nodeType": "YulBlock", + "src": "123958:229:10", + "statements": [ + { + "nativeSrc": "123976:41:10", + "nodeType": "YulVariableDeclaration", + "src": "123976:41:10", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "124001:8:10", + "nodeType": "YulIdentifier", + "src": "124001:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "123989:11:10", + "nodeType": "YulIdentifier", + "src": "123989:11:10" + }, + "nativeSrc": "123989:21:10", + "nodeType": "YulFunctionCall", + "src": "123989:21:10" + }, + { + "kind": "number", + "nativeSrc": "124012:4:10", + "nodeType": "YulLiteral", + "src": "124012:4:10", + "type": "", + "value": "0x52" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "123985:3:10", + "nodeType": "YulIdentifier", + "src": "123985:3:10" + }, + "nativeSrc": "123985:32:10", + "nodeType": "YulFunctionCall", + "src": "123985:32:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "123980:1:10", + "nodeType": "YulTypedName", + "src": "123980:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "124049:14:10", + "nodeType": "YulIdentifier", + "src": "124049:14:10" + }, + "nativeSrc": "124049:16:10", + "nodeType": "YulFunctionCall", + "src": "124049:16:10" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "124067:14:10", + "nodeType": "YulIdentifier", + "src": "124067:14:10" + }, + "nativeSrc": "124067:16:10", + "nodeType": "YulFunctionCall", + "src": "124067:16:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "124089:2:10", + "nodeType": "YulLiteral", + "src": "124089:2:10", + "type": "", + "value": "40" + }, + { + "name": "n", + "nativeSrc": "124093:1:10", + "nodeType": "YulIdentifier", + "src": "124093:1:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "124085:3:10", + "nodeType": "YulIdentifier", + "src": "124085:3:10" + }, + "nativeSrc": "124085:10:10", + "nodeType": "YulFunctionCall", + "src": "124085:10:10" + } + ], + "functionName": { + "name": "returndatacopy", + "nativeSrc": "124034:14:10", + "nodeType": "YulIdentifier", + "src": "124034:14:10" + }, + "nativeSrc": "124034:62:10", + "nodeType": "YulFunctionCall", + "src": "124034:62:10" + }, + "nativeSrc": "124034:62:10", + "nodeType": "YulExpressionStatement", + "src": "124034:62:10" + }, + { + "nativeSrc": "124113:60:10", + "nodeType": "YulAssignment", + "src": "124113:60:10", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "n", + "nativeSrc": "124125:1:10", + "nodeType": "YulIdentifier", + "src": "124125:1:10" + }, + { + "name": "start", + "nativeSrc": "124128:5:10", + "nodeType": "YulIdentifier", + "src": "124128:5:10" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "124122:2:10", + "nodeType": "YulIdentifier", + "src": "124122:2:10" + }, + "nativeSrc": "124122:12:10", + "nodeType": "YulFunctionCall", + "src": "124122:12:10" + }, + { + "arguments": [ + { + "name": "d", + "nativeSrc": "124140:1:10", + "nodeType": "YulIdentifier", + "src": "124140:1:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "end", + "nativeSrc": "124150:3:10", + "nodeType": "YulIdentifier", + "src": "124150:3:10" + }, + { + "name": "n", + "nativeSrc": "124155:1:10", + "nodeType": "YulIdentifier", + "src": "124155:1:10" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "124147:2:10", + "nodeType": "YulIdentifier", + "src": "124147:2:10" + }, + "nativeSrc": "124147:10:10", + "nodeType": "YulFunctionCall", + "src": "124147:10:10" + }, + { + "arguments": [ + { + "name": "end", + "nativeSrc": "124163:3:10", + "nodeType": "YulIdentifier", + "src": "124163:3:10" + }, + { + "name": "n", + "nativeSrc": "124168:1:10", + "nodeType": "YulIdentifier", + "src": "124168:1:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "124159:3:10", + "nodeType": "YulIdentifier", + "src": "124159:3:10" + }, + "nativeSrc": "124159:11:10", + "nodeType": "YulFunctionCall", + "src": "124159:11:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "124143:3:10", + "nodeType": "YulIdentifier", + "src": "124143:3:10" + }, + "nativeSrc": "124143:28:10", + "nodeType": "YulFunctionCall", + "src": "124143:28:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "124136:3:10", + "nodeType": "YulIdentifier", + "src": "124136:3:10" + }, + "nativeSrc": "124136:36:10", + "nodeType": "YulFunctionCall", + "src": "124136:36:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "124118:3:10", + "nodeType": "YulIdentifier", + "src": "124118:3:10" + }, + "nativeSrc": "124118:55:10", + "nodeType": "YulFunctionCall", + "src": "124118:55:10" + }, + "variableNames": [ + { + "name": "d", + "nativeSrc": "124113:1:10", + "nodeType": "YulIdentifier", + "src": "124113:1:10" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "123930:4:10", + "nodeType": "YulLiteral", + "src": "123930:4:10", + "type": "", + "value": "0xff" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "123946:4:10", + "nodeType": "YulIdentifier", + "src": "123946:4:10" + }, + { + "name": "d", + "nativeSrc": "123952:1:10", + "nodeType": "YulIdentifier", + "src": "123952:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "123942:3:10", + "nodeType": "YulIdentifier", + "src": "123942:3:10" + }, + "nativeSrc": "123942:12:10", + "nodeType": "YulFunctionCall", + "src": "123942:12:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "123936:5:10", + "nodeType": "YulIdentifier", + "src": "123936:5:10" + }, + "nativeSrc": "123936:19:10", + "nodeType": "YulFunctionCall", + "src": "123936:19:10" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "123926:3:10", + "nodeType": "YulIdentifier", + "src": "123926:3:10" + }, + "nativeSrc": "123926:30:10", + "nodeType": "YulFunctionCall", + "src": "123926:30:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "123919:6:10", + "nodeType": "YulIdentifier", + "src": "123919:6:10" + }, + "nativeSrc": "123919:38:10", + "nodeType": "YulFunctionCall", + "src": "123919:38:10" + }, + "nativeSrc": "123916:271:10", + "nodeType": "YulIf", + "src": "123916:271:10" + }, + { + "expression": { + "arguments": [ + { + "name": "args", + "nativeSrc": "124207:4:10", + "nodeType": "YulIdentifier", + "src": "124207:4:10" + }, + { + "name": "d", + "nativeSrc": "124213:1:10", + "nodeType": "YulIdentifier", + "src": "124213:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "124200:6:10", + "nodeType": "YulIdentifier", + "src": "124200:6:10" + }, + "nativeSrc": "124200:15:10", + "nodeType": "YulFunctionCall", + "src": "124200:15:10" + }, + "nativeSrc": "124200:15:10", + "nodeType": "YulExpressionStatement", + "src": "124200:15:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "124264:4:10", + "nodeType": "YulIdentifier", + "src": "124264:4:10" + }, + { + "kind": "number", + "nativeSrc": "124270:4:10", + "nodeType": "YulLiteral", + "src": "124270:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "124260:3:10", + "nodeType": "YulIdentifier", + "src": "124260:3:10" + }, + "nativeSrc": "124260:15:10", + "nodeType": "YulFunctionCall", + "src": "124260:15:10" + }, + { + "name": "d", + "nativeSrc": "124277:1:10", + "nodeType": "YulIdentifier", + "src": "124277:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "124256:3:10", + "nodeType": "YulIdentifier", + "src": "124256:3:10" + }, + "nativeSrc": "124256:23:10", + "nodeType": "YulFunctionCall", + "src": "124256:23:10" + }, + { + "kind": "number", + "nativeSrc": "124281:1:10", + "nodeType": "YulLiteral", + "src": "124281:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "124249:6:10", + "nodeType": "YulIdentifier", + "src": "124249:6:10" + }, + "nativeSrc": "124249:34:10", + "nodeType": "YulFunctionCall", + "src": "124249:34:10" + }, + "nativeSrc": "124249:34:10", + "nodeType": "YulExpressionStatement", + "src": "124249:34:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "124340:4:10", + "nodeType": "YulLiteral", + "src": "124340:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "124354:4:10", + "nodeType": "YulIdentifier", + "src": "124354:4:10" + }, + { + "kind": "number", + "nativeSrc": "124360:4:10", + "nodeType": "YulLiteral", + "src": "124360:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "124350:3:10", + "nodeType": "YulIdentifier", + "src": "124350:3:10" + }, + "nativeSrc": "124350:15:10", + "nodeType": "YulFunctionCall", + "src": "124350:15:10" + }, + { + "name": "d", + "nativeSrc": "124367:1:10", + "nodeType": "YulIdentifier", + "src": "124367:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "124346:3:10", + "nodeType": "YulIdentifier", + "src": "124346:3:10" + }, + "nativeSrc": "124346:23:10", + "nodeType": "YulFunctionCall", + "src": "124346:23:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "124333:6:10", + "nodeType": "YulIdentifier", + "src": "124333:6:10" + }, + "nativeSrc": "124333:37:10", + "nodeType": "YulFunctionCall", + "src": "124333:37:10" + }, + "nativeSrc": "124333:37:10", + "nodeType": "YulExpressionStatement", + "src": "124333:37:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4709, + "isOffset": false, + "isSlot": false, + "src": "123697:4:10", + "valueSize": 1 + }, + { + "declaration": 4709, + "isOffset": false, + "isSlot": false, + "src": "123866:4:10", + "valueSize": 1 + }, + { + "declaration": 4709, + "isOffset": false, + "isSlot": false, + "src": "123946:4:10", + "valueSize": 1 + }, + { + "declaration": 4709, + "isOffset": false, + "isSlot": false, + "src": "124207:4:10", + "valueSize": 1 + }, + { + "declaration": 4709, + "isOffset": false, + "isSlot": false, + "src": "124264:4:10", + "valueSize": 1 + }, + { + "declaration": 4709, + "isOffset": false, + "isSlot": false, + "src": "124354:4:10", + "valueSize": 1 + }, + { + "declaration": 4706, + "isOffset": false, + "isSlot": false, + "src": "123742:3:10", + "valueSize": 1 + }, + { + "declaration": 4706, + "isOffset": false, + "isSlot": false, + "src": "123758:3:10", + "valueSize": 1 + }, + { + "declaration": 4706, + "isOffset": false, + "isSlot": false, + "src": "123803:3:10", + "valueSize": 1 + }, + { + "declaration": 4706, + "isOffset": false, + "isSlot": false, + "src": "123826:3:10", + "valueSize": 1 + }, + { + "declaration": 4706, + "isOffset": false, + "isSlot": false, + "src": "124150:3:10", + "valueSize": 1 + }, + { + "declaration": 4706, + "isOffset": false, + "isSlot": false, + "src": "124163:3:10", + "valueSize": 1 + }, + { + "declaration": 4702, + "isOffset": false, + "isSlot": false, + "src": "123856:8:10", + "valueSize": 1 + }, + { + "declaration": 4702, + "isOffset": false, + "isSlot": false, + "src": "124001:8:10", + "valueSize": 1 + }, + { + "declaration": 4704, + "isOffset": false, + "isSlot": false, + "src": "123808:5:10", + "valueSize": 1 + }, + { + "declaration": 4704, + "isOffset": false, + "isSlot": false, + "src": "123819:5:10", + "valueSize": 1 + }, + { + "declaration": 4704, + "isOffset": false, + "isSlot": false, + "src": "123876:5:10", + "valueSize": 1 + }, + { + "declaration": 4704, + "isOffset": false, + "isSlot": false, + "src": "124128:5:10", + "valueSize": 1 + } + ], + "id": 4711, + "nodeType": "InlineAssembly", + "src": "123674:726:10" + } + ] + }, + "documentation": { + "id": 4700, + "nodeType": "StructuredDocumentation", + "src": "123092:374:10", + "text": "@dev Returns a slice of the immutable arguments on `instance` from `start` to `end`.\n `start` and `end` will be clamped to the range `[0, args.length]`.\n The `instance` MUST be deployed via the ERC1967 beacon proxy with immutable args functions.\n Otherwise, the behavior is undefined.\n Out-of-gas reverts if `instance` does not have any code." + }, + "id": 4713, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "argsOnERC1967BeaconProxy", + "nameLocation": "123480:24:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4707, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4702, + "mutability": "mutable", + "name": "instance", + "nameLocation": "123513:8:10", + "nodeType": "VariableDeclaration", + "scope": 4713, + "src": "123505:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4701, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "123505:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4704, + "mutability": "mutable", + "name": "start", + "nameLocation": "123531:5:10", + "nodeType": "VariableDeclaration", + "scope": 4713, + "src": "123523:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4703, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "123523:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4706, + "mutability": "mutable", + "name": "end", + "nameLocation": "123546:3:10", + "nodeType": "VariableDeclaration", + "scope": 4713, + "src": "123538:11:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4705, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "123538:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "123504:46:10" + }, + "returnParameters": { + "id": 4710, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4709, + "mutability": "mutable", + "name": "args", + "nameLocation": "123611:4:10", + "nodeType": "VariableDeclaration", + "scope": 4713, + "src": "123598:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4708, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "123598:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "123597:19:10" + }, + "scope": 5104, + "src": "123471:935:10", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4728, + "nodeType": "Block", + "src": "125540:64:10", + "statements": [ + { + "expression": { + "id": 4726, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4721, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4719, + "src": "125550:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 4723, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "125587:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 4724, + "name": "beacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4716, + "src": "125590:6:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4722, + "name": "deployERC1967IBeaconProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4729, + 4741, + 4875, + 4889 + ], + "referencedDeclaration": 4741, + "src": "125561:25:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$_t_address_$", + "typeString": "function (uint256,address) returns (address)" + } + }, + "id": 4725, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "125561:36:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "125550:47:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4727, + "nodeType": "ExpressionStatement", + "src": "125550:47:10" + } + ] + }, + "documentation": { + "id": 4714, + "nodeType": "StructuredDocumentation", + "src": "125407:41:10", + "text": "@dev Deploys a ERC1967I beacon proxy." + }, + "id": 4729, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployERC1967IBeaconProxy", + "nameLocation": "125462:25:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4717, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4716, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "125496:6:10", + "nodeType": "VariableDeclaration", + "scope": 4729, + "src": "125488:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4715, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "125488:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "125487:16:10" + }, + "returnParameters": { + "id": 4720, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4719, + "mutability": "mutable", + "name": "instance", + "nameLocation": "125530:8:10", + "nodeType": "VariableDeclaration", + "scope": 4729, + "src": "125522:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4718, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "125522:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "125521:18:10" + }, + "scope": 5104, + "src": "125453:151:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4740, + "nodeType": "Block", + "src": "125826:8791:10", + "statements": [ + { + "AST": { + "nativeSrc": "125888:8723:10", + "nodeType": "YulBlock", + "src": "125888:8723:10", + "statements": [ + { + "nativeSrc": "133872:20:10", + "nodeType": "YulVariableDeclaration", + "src": "133872:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "133887:4:10", + "nodeType": "YulLiteral", + "src": "133887:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "133881:5:10", + "nodeType": "YulIdentifier", + "src": "133881:5:10" + }, + "nativeSrc": "133881:11:10", + "nodeType": "YulFunctionCall", + "src": "133881:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "133876:1:10", + "nodeType": "YulTypedName", + "src": "133876:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "133946:4:10", + "nodeType": "YulLiteral", + "src": "133946:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "133952:66:10", + "nodeType": "YulLiteral", + "src": "133952:66:10", + "type": "", + "value": "0x3d50545afa361460525736515af43d600060013e6052573d6001fd5b3d6001f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "133939:6:10", + "nodeType": "YulIdentifier", + "src": "133939:6:10" + }, + "nativeSrc": "133939:80:10", + "nodeType": "YulFunctionCall", + "src": "133939:80:10" + }, + "nativeSrc": "133939:80:10", + "nodeType": "YulExpressionStatement", + "src": "133939:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "134039:4:10", + "nodeType": "YulLiteral", + "src": "134039:4:10", + "type": "", + "value": "0x40" + }, + { + "kind": "number", + "nativeSrc": "134045:66:10", + "nodeType": "YulLiteral", + "src": "134045:66:10", + "type": "", + "value": "0x527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b3513" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "134032:6:10", + "nodeType": "YulIdentifier", + "src": "134032:6:10" + }, + "nativeSrc": "134032:80:10", + "nodeType": "YulFunctionCall", + "src": "134032:80:10" + }, + "nativeSrc": "134032:80:10", + "nodeType": "YulExpressionStatement", + "src": "134032:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "134132:4:10", + "nodeType": "YulLiteral", + "src": "134132:4:10", + "type": "", + "value": "0x20" + }, + { + "kind": "number", + "nativeSrc": "134138:58:10", + "nodeType": "YulLiteral", + "src": "134138:58:10", + "type": "", + "value": "0x60195155f3363d3d373d3d363d602036600436635c60da1b60e01b36" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "134125:6:10", + "nodeType": "YulIdentifier", + "src": "134125:6:10" + }, + "nativeSrc": "134125:72:10", + "nodeType": "YulFunctionCall", + "src": "134125:72:10" + }, + "nativeSrc": "134125:72:10", + "nodeType": "YulExpressionStatement", + "src": "134125:72:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "134217:4:10", + "nodeType": "YulLiteral", + "src": "134217:4:10", + "type": "", + "value": "0x04" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "134230:3:10", + "nodeType": "YulLiteral", + "src": "134230:3:10", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "134235:20:10", + "nodeType": "YulLiteral", + "src": "134235:20:10", + "type": "", + "value": "0x60573d8160223d3973" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "134226:3:10", + "nodeType": "YulIdentifier", + "src": "134226:3:10" + }, + "nativeSrc": "134226:30:10", + "nodeType": "YulFunctionCall", + "src": "134226:30:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "134262:2:10", + "nodeType": "YulLiteral", + "src": "134262:2:10", + "type": "", + "value": "96" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "134270:2:10", + "nodeType": "YulLiteral", + "src": "134270:2:10", + "type": "", + "value": "96" + }, + { + "name": "beacon", + "nativeSrc": "134274:6:10", + "nodeType": "YulIdentifier", + "src": "134274:6:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "134266:3:10", + "nodeType": "YulIdentifier", + "src": "134266:3:10" + }, + "nativeSrc": "134266:15:10", + "nodeType": "YulFunctionCall", + "src": "134266:15:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "134258:3:10", + "nodeType": "YulIdentifier", + "src": "134258:3:10" + }, + "nativeSrc": "134258:24:10", + "nodeType": "YulFunctionCall", + "src": "134258:24:10" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "134223:2:10", + "nodeType": "YulIdentifier", + "src": "134223:2:10" + }, + "nativeSrc": "134223:60:10", + "nodeType": "YulFunctionCall", + "src": "134223:60:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "134210:6:10", + "nodeType": "YulIdentifier", + "src": "134210:6:10" + }, + "nativeSrc": "134210:74:10", + "nodeType": "YulFunctionCall", + "src": "134210:74:10" + }, + "nativeSrc": "134210:74:10", + "nodeType": "YulExpressionStatement", + "src": "134210:74:10" + }, + { + "nativeSrc": "134297:37:10", + "nodeType": "YulAssignment", + "src": "134297:37:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "134316:5:10", + "nodeType": "YulIdentifier", + "src": "134316:5:10" + }, + { + "kind": "number", + "nativeSrc": "134323:4:10", + "nodeType": "YulLiteral", + "src": "134323:4:10", + "type": "", + "value": "0x07" + }, + { + "kind": "number", + "nativeSrc": "134329:4:10", + "nodeType": "YulLiteral", + "src": "134329:4:10", + "type": "", + "value": "0x79" + } + ], + "functionName": { + "name": "create", + "nativeSrc": "134309:6:10", + "nodeType": "YulIdentifier", + "src": "134309:6:10" + }, + "nativeSrc": "134309:25:10", + "nodeType": "YulFunctionCall", + "src": "134309:25:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "134297:8:10", + "nodeType": "YulIdentifier", + "src": "134297:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "134367:116:10", + "nodeType": "YulBlock", + "src": "134367:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "134392:4:10", + "nodeType": "YulLiteral", + "src": "134392:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "134398:10:10", + "nodeType": "YulLiteral", + "src": "134398:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "134385:6:10", + "nodeType": "YulIdentifier", + "src": "134385:6:10" + }, + "nativeSrc": "134385:24:10", + "nodeType": "YulFunctionCall", + "src": "134385:24:10" + }, + "nativeSrc": "134385:24:10", + "nodeType": "YulExpressionStatement", + "src": "134385:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "134458:4:10", + "nodeType": "YulLiteral", + "src": "134458:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "134464:4:10", + "nodeType": "YulLiteral", + "src": "134464:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "134451:6:10", + "nodeType": "YulIdentifier", + "src": "134451:6:10" + }, + "nativeSrc": "134451:18:10", + "nodeType": "YulFunctionCall", + "src": "134451:18:10" + }, + "nativeSrc": "134451:18:10", + "nodeType": "YulExpressionStatement", + "src": "134451:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "134357:8:10", + "nodeType": "YulIdentifier", + "src": "134357:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "134350:6:10", + "nodeType": "YulIdentifier", + "src": "134350:6:10" + }, + "nativeSrc": "134350:16:10", + "nodeType": "YulFunctionCall", + "src": "134350:16:10" + }, + "nativeSrc": "134347:136:10", + "nodeType": "YulIf", + "src": "134347:136:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "134503:4:10", + "nodeType": "YulLiteral", + "src": "134503:4:10", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "134509:1:10", + "nodeType": "YulIdentifier", + "src": "134509:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "134496:6:10", + "nodeType": "YulIdentifier", + "src": "134496:6:10" + }, + "nativeSrc": "134496:15:10", + "nodeType": "YulFunctionCall", + "src": "134496:15:10" + }, + "nativeSrc": "134496:15:10", + "nodeType": "YulExpressionStatement", + "src": "134496:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "134567:4:10", + "nodeType": "YulLiteral", + "src": "134567:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "134573:1:10", + "nodeType": "YulLiteral", + "src": "134573:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "134560:6:10", + "nodeType": "YulIdentifier", + "src": "134560:6:10" + }, + "nativeSrc": "134560:15:10", + "nodeType": "YulFunctionCall", + "src": "134560:15:10" + }, + "nativeSrc": "134560:15:10", + "nodeType": "YulExpressionStatement", + "src": "134560:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4734, + "isOffset": false, + "isSlot": false, + "src": "134274:6:10", + "valueSize": 1 + }, + { + "declaration": 4737, + "isOffset": false, + "isSlot": false, + "src": "134297:8:10", + "valueSize": 1 + }, + { + "declaration": 4737, + "isOffset": false, + "isSlot": false, + "src": "134357:8:10", + "valueSize": 1 + }, + { + "declaration": 4732, + "isOffset": false, + "isSlot": false, + "src": "134316:5:10", + "valueSize": 1 + } + ], + "id": 4739, + "nodeType": "InlineAssembly", + "src": "125879:8732:10" + } + ] + }, + "documentation": { + "id": 4730, + "nodeType": "StructuredDocumentation", + "src": "125610:89:10", + "text": "@dev Deploys a ERC1967I beacon proxy.\n Deposits `value` ETH during deployment." + }, + "id": 4741, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployERC1967IBeaconProxy", + "nameLocation": "125713:25:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4735, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4732, + "mutability": "mutable", + "name": "value", + "nameLocation": "125747:5:10", + "nodeType": "VariableDeclaration", + "scope": 4741, + "src": "125739:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4731, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "125739:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4734, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "125762:6:10", + "nodeType": "VariableDeclaration", + "scope": 4741, + "src": "125754:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4733, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "125754:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "125738:31:10" + }, + "returnParameters": { + "id": 4738, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4737, + "mutability": "mutable", + "name": "instance", + "nameLocation": "125812:8:10", + "nodeType": "VariableDeclaration", + "scope": 4741, + "src": "125804:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4736, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "125804:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "125803:18:10" + }, + "scope": 5104, + "src": "125704:8913:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4759, + "nodeType": "Block", + "src": "134829:83:10", + "statements": [ + { + "expression": { + "id": 4757, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4751, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4749, + "src": "134839:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 4753, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "134889:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 4754, + "name": "beacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4744, + "src": "134892:6:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4755, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4746, + "src": "134900:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4752, + "name": "deployDeterministicERC1967IBeaconProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4760, + 4774, + 4911, + 4927 + ], + "referencedDeclaration": 4774, + "src": "134850:38:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (uint256,address,bytes32) returns (address)" + } + }, + "id": 4756, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "134850:55:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "134839:66:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4758, + "nodeType": "ExpressionStatement", + "src": "134839:66:10" + } + ] + }, + "documentation": { + "id": 4742, + "nodeType": "StructuredDocumentation", + "src": "134623:67:10", + "text": "@dev Deploys a deterministic ERC1967I beacon proxy with `salt`." + }, + "id": 4760, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployDeterministicERC1967IBeaconProxy", + "nameLocation": "134704:38:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4747, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4744, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "134751:6:10", + "nodeType": "VariableDeclaration", + "scope": 4760, + "src": "134743:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4743, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "134743:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4746, + "mutability": "mutable", + "name": "salt", + "nameLocation": "134767:4:10", + "nodeType": "VariableDeclaration", + "scope": 4760, + "src": "134759:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4745, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "134759:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "134742:30:10" + }, + "returnParameters": { + "id": 4750, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4749, + "mutability": "mutable", + "name": "instance", + "nameLocation": "134815:8:10", + "nodeType": "VariableDeclaration", + "scope": 4760, + "src": "134807:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4748, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "134807:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "134806:18:10" + }, + "scope": 5104, + "src": "134695:217:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4773, + "nodeType": "Block", + "src": "135187:828:10", + "statements": [ + { + "AST": { + "nativeSrc": "135249:760:10", + "nodeType": "YulBlock", + "src": "135249:760:10", + "statements": [ + { + "nativeSrc": "135263:20:10", + "nodeType": "YulVariableDeclaration", + "src": "135263:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "135278:4:10", + "nodeType": "YulLiteral", + "src": "135278:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "135272:5:10", + "nodeType": "YulIdentifier", + "src": "135272:5:10" + }, + "nativeSrc": "135272:11:10", + "nodeType": "YulFunctionCall", + "src": "135272:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "135267:1:10", + "nodeType": "YulTypedName", + "src": "135267:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "135337:4:10", + "nodeType": "YulLiteral", + "src": "135337:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "135343:66:10", + "nodeType": "YulLiteral", + "src": "135343:66:10", + "type": "", + "value": "0x3d50545afa361460525736515af43d600060013e6052573d6001fd5b3d6001f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "135330:6:10", + "nodeType": "YulIdentifier", + "src": "135330:6:10" + }, + "nativeSrc": "135330:80:10", + "nodeType": "YulFunctionCall", + "src": "135330:80:10" + }, + "nativeSrc": "135330:80:10", + "nodeType": "YulExpressionStatement", + "src": "135330:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "135430:4:10", + "nodeType": "YulLiteral", + "src": "135430:4:10", + "type": "", + "value": "0x40" + }, + { + "kind": "number", + "nativeSrc": "135436:66:10", + "nodeType": "YulLiteral", + "src": "135436:66:10", + "type": "", + "value": "0x527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b3513" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "135423:6:10", + "nodeType": "YulIdentifier", + "src": "135423:6:10" + }, + "nativeSrc": "135423:80:10", + "nodeType": "YulFunctionCall", + "src": "135423:80:10" + }, + "nativeSrc": "135423:80:10", + "nodeType": "YulExpressionStatement", + "src": "135423:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "135523:4:10", + "nodeType": "YulLiteral", + "src": "135523:4:10", + "type": "", + "value": "0x20" + }, + { + "kind": "number", + "nativeSrc": "135529:58:10", + "nodeType": "YulLiteral", + "src": "135529:58:10", + "type": "", + "value": "0x60195155f3363d3d373d3d363d602036600436635c60da1b60e01b36" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "135516:6:10", + "nodeType": "YulIdentifier", + "src": "135516:6:10" + }, + "nativeSrc": "135516:72:10", + "nodeType": "YulFunctionCall", + "src": "135516:72:10" + }, + "nativeSrc": "135516:72:10", + "nodeType": "YulExpressionStatement", + "src": "135516:72:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "135608:4:10", + "nodeType": "YulLiteral", + "src": "135608:4:10", + "type": "", + "value": "0x04" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "135621:3:10", + "nodeType": "YulLiteral", + "src": "135621:3:10", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "135626:20:10", + "nodeType": "YulLiteral", + "src": "135626:20:10", + "type": "", + "value": "0x60573d8160223d3973" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "135617:3:10", + "nodeType": "YulIdentifier", + "src": "135617:3:10" + }, + "nativeSrc": "135617:30:10", + "nodeType": "YulFunctionCall", + "src": "135617:30:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "135653:2:10", + "nodeType": "YulLiteral", + "src": "135653:2:10", + "type": "", + "value": "96" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "135661:2:10", + "nodeType": "YulLiteral", + "src": "135661:2:10", + "type": "", + "value": "96" + }, + { + "name": "beacon", + "nativeSrc": "135665:6:10", + "nodeType": "YulIdentifier", + "src": "135665:6:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "135657:3:10", + "nodeType": "YulIdentifier", + "src": "135657:3:10" + }, + "nativeSrc": "135657:15:10", + "nodeType": "YulFunctionCall", + "src": "135657:15:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "135649:3:10", + "nodeType": "YulIdentifier", + "src": "135649:3:10" + }, + "nativeSrc": "135649:24:10", + "nodeType": "YulFunctionCall", + "src": "135649:24:10" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "135614:2:10", + "nodeType": "YulIdentifier", + "src": "135614:2:10" + }, + "nativeSrc": "135614:60:10", + "nodeType": "YulFunctionCall", + "src": "135614:60:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "135601:6:10", + "nodeType": "YulIdentifier", + "src": "135601:6:10" + }, + "nativeSrc": "135601:74:10", + "nodeType": "YulFunctionCall", + "src": "135601:74:10" + }, + "nativeSrc": "135601:74:10", + "nodeType": "YulExpressionStatement", + "src": "135601:74:10" + }, + { + "nativeSrc": "135688:44:10", + "nodeType": "YulAssignment", + "src": "135688:44:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "135708:5:10", + "nodeType": "YulIdentifier", + "src": "135708:5:10" + }, + { + "kind": "number", + "nativeSrc": "135715:4:10", + "nodeType": "YulLiteral", + "src": "135715:4:10", + "type": "", + "value": "0x07" + }, + { + "kind": "number", + "nativeSrc": "135721:4:10", + "nodeType": "YulLiteral", + "src": "135721:4:10", + "type": "", + "value": "0x79" + }, + { + "name": "salt", + "nativeSrc": "135727:4:10", + "nodeType": "YulIdentifier", + "src": "135727:4:10" + } + ], + "functionName": { + "name": "create2", + "nativeSrc": "135700:7:10", + "nodeType": "YulIdentifier", + "src": "135700:7:10" + }, + "nativeSrc": "135700:32:10", + "nodeType": "YulFunctionCall", + "src": "135700:32:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "135688:8:10", + "nodeType": "YulIdentifier", + "src": "135688:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "135765:116:10", + "nodeType": "YulBlock", + "src": "135765:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "135790:4:10", + "nodeType": "YulLiteral", + "src": "135790:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "135796:10:10", + "nodeType": "YulLiteral", + "src": "135796:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "135783:6:10", + "nodeType": "YulIdentifier", + "src": "135783:6:10" + }, + "nativeSrc": "135783:24:10", + "nodeType": "YulFunctionCall", + "src": "135783:24:10" + }, + "nativeSrc": "135783:24:10", + "nodeType": "YulExpressionStatement", + "src": "135783:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "135856:4:10", + "nodeType": "YulLiteral", + "src": "135856:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "135862:4:10", + "nodeType": "YulLiteral", + "src": "135862:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "135849:6:10", + "nodeType": "YulIdentifier", + "src": "135849:6:10" + }, + "nativeSrc": "135849:18:10", + "nodeType": "YulFunctionCall", + "src": "135849:18:10" + }, + "nativeSrc": "135849:18:10", + "nodeType": "YulExpressionStatement", + "src": "135849:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "135755:8:10", + "nodeType": "YulIdentifier", + "src": "135755:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "135748:6:10", + "nodeType": "YulIdentifier", + "src": "135748:6:10" + }, + "nativeSrc": "135748:16:10", + "nodeType": "YulFunctionCall", + "src": "135748:16:10" + }, + "nativeSrc": "135745:136:10", + "nodeType": "YulIf", + "src": "135745:136:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "135901:4:10", + "nodeType": "YulLiteral", + "src": "135901:4:10", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "135907:1:10", + "nodeType": "YulIdentifier", + "src": "135907:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "135894:6:10", + "nodeType": "YulIdentifier", + "src": "135894:6:10" + }, + "nativeSrc": "135894:15:10", + "nodeType": "YulFunctionCall", + "src": "135894:15:10" + }, + "nativeSrc": "135894:15:10", + "nodeType": "YulExpressionStatement", + "src": "135894:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "135965:4:10", + "nodeType": "YulLiteral", + "src": "135965:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "135971:1:10", + "nodeType": "YulLiteral", + "src": "135971:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "135958:6:10", + "nodeType": "YulIdentifier", + "src": "135958:6:10" + }, + "nativeSrc": "135958:15:10", + "nodeType": "YulFunctionCall", + "src": "135958:15:10" + }, + "nativeSrc": "135958:15:10", + "nodeType": "YulExpressionStatement", + "src": "135958:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4765, + "isOffset": false, + "isSlot": false, + "src": "135665:6:10", + "valueSize": 1 + }, + { + "declaration": 4770, + "isOffset": false, + "isSlot": false, + "src": "135688:8:10", + "valueSize": 1 + }, + { + "declaration": 4770, + "isOffset": false, + "isSlot": false, + "src": "135755:8:10", + "valueSize": 1 + }, + { + "declaration": 4767, + "isOffset": false, + "isSlot": false, + "src": "135727:4:10", + "valueSize": 1 + }, + { + "declaration": 4763, + "isOffset": false, + "isSlot": false, + "src": "135708:5:10", + "valueSize": 1 + } + ], + "id": 4772, + "nodeType": "InlineAssembly", + "src": "135240:769:10" + } + ] + }, + "documentation": { + "id": 4761, + "nodeType": "StructuredDocumentation", + "src": "134918:115:10", + "text": "@dev Deploys a deterministic ERC1967I beacon proxy with `salt`.\n Deposits `value` ETH during deployment." + }, + "id": 4774, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployDeterministicERC1967IBeaconProxy", + "nameLocation": "135047:38:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4768, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4763, + "mutability": "mutable", + "name": "value", + "nameLocation": "135094:5:10", + "nodeType": "VariableDeclaration", + "scope": 4774, + "src": "135086:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4762, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "135086:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4765, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "135109:6:10", + "nodeType": "VariableDeclaration", + "scope": 4774, + "src": "135101:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4764, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "135101:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4767, + "mutability": "mutable", + "name": "salt", + "nameLocation": "135125:4:10", + "nodeType": "VariableDeclaration", + "scope": 4774, + "src": "135117:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4766, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "135117:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "135085:45:10" + }, + "returnParameters": { + "id": 4771, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4770, + "mutability": "mutable", + "name": "instance", + "nameLocation": "135173:8:10", + "nodeType": "VariableDeclaration", + "scope": 4774, + "src": "135165:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4769, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "135165:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "135164:18:10" + }, + "scope": 5104, + "src": "135038:977:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4792, + "nodeType": "Block", + "src": "136392:79:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "30", + "id": 4787, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "136448:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 4788, + "name": "beacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4777, + "src": "136451:6:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4789, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4779, + "src": "136459:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4786, + "name": "createDeterministicERC1967IBeaconProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4793, + 4809, + 4949, + 4967 + ], + "referencedDeclaration": 4809, + "src": "136409:38:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$_t_bool_$_t_address_$", + "typeString": "function (uint256,address,bytes32) returns (bool,address)" + } + }, + "id": 4790, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "136409:55:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_address_$", + "typeString": "tuple(bool,address)" + } + }, + "functionReturnParameters": 4785, + "id": 4791, + "nodeType": "Return", + "src": "136402:62:10" + } + ] + }, + "documentation": { + "id": 4775, + "nodeType": "StructuredDocumentation", + "src": "136021:210:10", + "text": "@dev Creates a deterministic ERC1967I beacon proxy with `salt`.\n Note: This method is intended for use in ERC4337 factories,\n which are expected to NOT revert if the proxy is already deployed." + }, + "id": 4793, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createDeterministicERC1967IBeaconProxy", + "nameLocation": "136245:38:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4780, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4777, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "136292:6:10", + "nodeType": "VariableDeclaration", + "scope": 4793, + "src": "136284:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4776, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "136284:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4779, + "mutability": "mutable", + "name": "salt", + "nameLocation": "136308:4:10", + "nodeType": "VariableDeclaration", + "scope": 4793, + "src": "136300:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4778, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "136300:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "136283:30:10" + }, + "returnParameters": { + "id": 4785, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4782, + "mutability": "mutable", + "name": "alreadyDeployed", + "nameLocation": "136353:15:10", + "nodeType": "VariableDeclaration", + "scope": 4793, + "src": "136348:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4781, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "136348:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4784, + "mutability": "mutable", + "name": "instance", + "nameLocation": "136378:8:10", + "nodeType": "VariableDeclaration", + "scope": 4793, + "src": "136370:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4783, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "136370:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "136347:40:10" + }, + "scope": 5104, + "src": "136236:235:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4808, + "nodeType": "Block", + "src": "136911:1609:10", + "statements": [ + { + "AST": { + "nativeSrc": "136973:1541:10", + "nodeType": "YulBlock", + "src": "136973:1541:10", + "statements": [ + { + "nativeSrc": "136987:20:10", + "nodeType": "YulVariableDeclaration", + "src": "136987:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "137002:4:10", + "nodeType": "YulLiteral", + "src": "137002:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "136996:5:10", + "nodeType": "YulIdentifier", + "src": "136996:5:10" + }, + "nativeSrc": "136996:11:10", + "nodeType": "YulFunctionCall", + "src": "136996:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "136991:1:10", + "nodeType": "YulTypedName", + "src": "136991:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "137061:4:10", + "nodeType": "YulLiteral", + "src": "137061:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "137067:66:10", + "nodeType": "YulLiteral", + "src": "137067:66:10", + "type": "", + "value": "0x3d50545afa361460525736515af43d600060013e6052573d6001fd5b3d6001f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "137054:6:10", + "nodeType": "YulIdentifier", + "src": "137054:6:10" + }, + "nativeSrc": "137054:80:10", + "nodeType": "YulFunctionCall", + "src": "137054:80:10" + }, + "nativeSrc": "137054:80:10", + "nodeType": "YulExpressionStatement", + "src": "137054:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "137154:4:10", + "nodeType": "YulLiteral", + "src": "137154:4:10", + "type": "", + "value": "0x40" + }, + { + "kind": "number", + "nativeSrc": "137160:66:10", + "nodeType": "YulLiteral", + "src": "137160:66:10", + "type": "", + "value": "0x527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b3513" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "137147:6:10", + "nodeType": "YulIdentifier", + "src": "137147:6:10" + }, + "nativeSrc": "137147:80:10", + "nodeType": "YulFunctionCall", + "src": "137147:80:10" + }, + "nativeSrc": "137147:80:10", + "nodeType": "YulExpressionStatement", + "src": "137147:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "137247:4:10", + "nodeType": "YulLiteral", + "src": "137247:4:10", + "type": "", + "value": "0x20" + }, + { + "kind": "number", + "nativeSrc": "137253:58:10", + "nodeType": "YulLiteral", + "src": "137253:58:10", + "type": "", + "value": "0x60195155f3363d3d373d3d363d602036600436635c60da1b60e01b36" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "137240:6:10", + "nodeType": "YulIdentifier", + "src": "137240:6:10" + }, + "nativeSrc": "137240:72:10", + "nodeType": "YulFunctionCall", + "src": "137240:72:10" + }, + "nativeSrc": "137240:72:10", + "nodeType": "YulExpressionStatement", + "src": "137240:72:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "137332:4:10", + "nodeType": "YulLiteral", + "src": "137332:4:10", + "type": "", + "value": "0x04" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "137345:3:10", + "nodeType": "YulLiteral", + "src": "137345:3:10", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "137350:20:10", + "nodeType": "YulLiteral", + "src": "137350:20:10", + "type": "", + "value": "0x60573d8160223d3973" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "137341:3:10", + "nodeType": "YulIdentifier", + "src": "137341:3:10" + }, + "nativeSrc": "137341:30:10", + "nodeType": "YulFunctionCall", + "src": "137341:30:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "137377:2:10", + "nodeType": "YulLiteral", + "src": "137377:2:10", + "type": "", + "value": "96" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "137385:2:10", + "nodeType": "YulLiteral", + "src": "137385:2:10", + "type": "", + "value": "96" + }, + { + "name": "beacon", + "nativeSrc": "137389:6:10", + "nodeType": "YulIdentifier", + "src": "137389:6:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "137381:3:10", + "nodeType": "YulIdentifier", + "src": "137381:3:10" + }, + "nativeSrc": "137381:15:10", + "nodeType": "YulFunctionCall", + "src": "137381:15:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "137373:3:10", + "nodeType": "YulIdentifier", + "src": "137373:3:10" + }, + "nativeSrc": "137373:24:10", + "nodeType": "YulFunctionCall", + "src": "137373:24:10" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "137338:2:10", + "nodeType": "YulIdentifier", + "src": "137338:2:10" + }, + "nativeSrc": "137338:60:10", + "nodeType": "YulFunctionCall", + "src": "137338:60:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "137325:6:10", + "nodeType": "YulIdentifier", + "src": "137325:6:10" + }, + "nativeSrc": "137325:74:10", + "nodeType": "YulFunctionCall", + "src": "137325:74:10" + }, + "nativeSrc": "137325:74:10", + "nodeType": "YulExpressionStatement", + "src": "137325:74:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "137475:1:10", + "nodeType": "YulIdentifier", + "src": "137475:1:10" + }, + { + "kind": "number", + "nativeSrc": "137478:4:10", + "nodeType": "YulLiteral", + "src": "137478:4:10", + "type": "", + "value": "0x35" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "137471:3:10", + "nodeType": "YulIdentifier", + "src": "137471:3:10" + }, + "nativeSrc": "137471:12:10", + "nodeType": "YulFunctionCall", + "src": "137471:12:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "137495:4:10", + "nodeType": "YulLiteral", + "src": "137495:4:10", + "type": "", + "value": "0x07" + }, + { + "kind": "number", + "nativeSrc": "137501:4:10", + "nodeType": "YulLiteral", + "src": "137501:4:10", + "type": "", + "value": "0x79" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "137485:9:10", + "nodeType": "YulIdentifier", + "src": "137485:9:10" + }, + "nativeSrc": "137485:21:10", + "nodeType": "YulFunctionCall", + "src": "137485:21:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "137464:6:10", + "nodeType": "YulIdentifier", + "src": "137464:6:10" + }, + "nativeSrc": "137464:43:10", + "nodeType": "YulFunctionCall", + "src": "137464:43:10" + }, + "nativeSrc": "137464:43:10", + "nodeType": "YulExpressionStatement", + "src": "137464:43:10" + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "137527:1:10", + "nodeType": "YulIdentifier", + "src": "137527:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "137534:2:10", + "nodeType": "YulLiteral", + "src": "137534:2:10", + "type": "", + "value": "88" + }, + { + "arguments": [], + "functionName": { + "name": "address", + "nativeSrc": "137538:7:10", + "nodeType": "YulIdentifier", + "src": "137538:7:10" + }, + "nativeSrc": "137538:9:10", + "nodeType": "YulFunctionCall", + "src": "137538:9:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "137530:3:10", + "nodeType": "YulIdentifier", + "src": "137530:3:10" + }, + "nativeSrc": "137530:18:10", + "nodeType": "YulFunctionCall", + "src": "137530:18:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "137520:6:10", + "nodeType": "YulIdentifier", + "src": "137520:6:10" + }, + "nativeSrc": "137520:29:10", + "nodeType": "YulFunctionCall", + "src": "137520:29:10" + }, + "nativeSrc": "137520:29:10", + "nodeType": "YulExpressionStatement", + "src": "137520:29:10" + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "137570:1:10", + "nodeType": "YulIdentifier", + "src": "137570:1:10" + }, + { + "kind": "number", + "nativeSrc": "137573:4:10", + "nodeType": "YulLiteral", + "src": "137573:4:10", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "137562:7:10", + "nodeType": "YulIdentifier", + "src": "137562:7:10" + }, + "nativeSrc": "137562:16:10", + "nodeType": "YulFunctionCall", + "src": "137562:16:10" + }, + "nativeSrc": "137562:16:10", + "nodeType": "YulExpressionStatement", + "src": "137562:16:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "137623:1:10", + "nodeType": "YulIdentifier", + "src": "137623:1:10" + }, + { + "kind": "number", + "nativeSrc": "137626:4:10", + "nodeType": "YulLiteral", + "src": "137626:4:10", + "type": "", + "value": "0x15" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "137619:3:10", + "nodeType": "YulIdentifier", + "src": "137619:3:10" + }, + "nativeSrc": "137619:12:10", + "nodeType": "YulFunctionCall", + "src": "137619:12:10" + }, + { + "name": "salt", + "nativeSrc": "137633:4:10", + "nodeType": "YulIdentifier", + "src": "137633:4:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "137612:6:10", + "nodeType": "YulIdentifier", + "src": "137612:6:10" + }, + "nativeSrc": "137612:26:10", + "nodeType": "YulFunctionCall", + "src": "137612:26:10" + }, + "nativeSrc": "137612:26:10", + "nodeType": "YulExpressionStatement", + "src": "137612:26:10" + }, + { + "nativeSrc": "137651:30:10", + "nodeType": "YulAssignment", + "src": "137651:30:10", + "value": { + "arguments": [ + { + "name": "m", + "nativeSrc": "137673:1:10", + "nodeType": "YulIdentifier", + "src": "137673:1:10" + }, + { + "kind": "number", + "nativeSrc": "137676:4:10", + "nodeType": "YulLiteral", + "src": "137676:4:10", + "type": "", + "value": "0x55" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "137663:9:10", + "nodeType": "YulIdentifier", + "src": "137663:9:10" + }, + "nativeSrc": "137663:18:10", + "nodeType": "YulFunctionCall", + "src": "137663:18:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "137651:8:10", + "nodeType": "YulIdentifier", + "src": "137651:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "137706:680:10", + "nodeType": "YulBlock", + "src": "137706:680:10", + "statements": [ + { + "body": { + "nativeSrc": "137757:291:10", + "nodeType": "YulBlock", + "src": "137757:291:10", + "statements": [ + { + "nativeSrc": "137779:44:10", + "nodeType": "YulAssignment", + "src": "137779:44:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "137799:5:10", + "nodeType": "YulIdentifier", + "src": "137799:5:10" + }, + { + "kind": "number", + "nativeSrc": "137806:4:10", + "nodeType": "YulLiteral", + "src": "137806:4:10", + "type": "", + "value": "0x07" + }, + { + "kind": "number", + "nativeSrc": "137812:4:10", + "nodeType": "YulLiteral", + "src": "137812:4:10", + "type": "", + "value": "0x79" + }, + { + "name": "salt", + "nativeSrc": "137818:4:10", + "nodeType": "YulIdentifier", + "src": "137818:4:10" + } + ], + "functionName": { + "name": "create2", + "nativeSrc": "137791:7:10", + "nodeType": "YulIdentifier", + "src": "137791:7:10" + }, + "nativeSrc": "137791:32:10", + "nodeType": "YulFunctionCall", + "src": "137791:32:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "137779:8:10", + "nodeType": "YulIdentifier", + "src": "137779:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "137864:140:10", + "nodeType": "YulBlock", + "src": "137864:140:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "137897:4:10", + "nodeType": "YulLiteral", + "src": "137897:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "137903:10:10", + "nodeType": "YulLiteral", + "src": "137903:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "137890:6:10", + "nodeType": "YulIdentifier", + "src": "137890:6:10" + }, + "nativeSrc": "137890:24:10", + "nodeType": "YulFunctionCall", + "src": "137890:24:10" + }, + "nativeSrc": "137890:24:10", + "nodeType": "YulExpressionStatement", + "src": "137890:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "137971:4:10", + "nodeType": "YulLiteral", + "src": "137971:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "137977:4:10", + "nodeType": "YulLiteral", + "src": "137977:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "137964:6:10", + "nodeType": "YulIdentifier", + "src": "137964:6:10" + }, + "nativeSrc": "137964:18:10", + "nodeType": "YulFunctionCall", + "src": "137964:18:10" + }, + "nativeSrc": "137964:18:10", + "nodeType": "YulExpressionStatement", + "src": "137964:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "137854:8:10", + "nodeType": "YulIdentifier", + "src": "137854:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "137847:6:10", + "nodeType": "YulIdentifier", + "src": "137847:6:10" + }, + "nativeSrc": "137847:16:10", + "nodeType": "YulFunctionCall", + "src": "137847:16:10" + }, + "nativeSrc": "137844:160:10", + "nodeType": "YulIf", + "src": "137844:160:10" + }, + { + "nativeSrc": "138025:5:10", + "nodeType": "YulBreak", + "src": "138025:5:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "137746:8:10", + "nodeType": "YulIdentifier", + "src": "137746:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "137734:11:10", + "nodeType": "YulIdentifier", + "src": "137734:11:10" + }, + "nativeSrc": "137734:21:10", + "nodeType": "YulFunctionCall", + "src": "137734:21:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "137727:6:10", + "nodeType": "YulIdentifier", + "src": "137727:6:10" + }, + "nativeSrc": "137727:29:10", + "nodeType": "YulFunctionCall", + "src": "137727:29:10" + }, + "nativeSrc": "137724:324:10", + "nodeType": "YulIf", + "src": "137724:324:10" + }, + { + "nativeSrc": "138065:20:10", + "nodeType": "YulAssignment", + "src": "138065:20:10", + "value": { + "kind": "number", + "nativeSrc": "138084:1:10", + "nodeType": "YulLiteral", + "src": "138084:1:10", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "alreadyDeployed", + "nativeSrc": "138065:15:10", + "nodeType": "YulIdentifier", + "src": "138065:15:10" + } + ] + }, + { + "body": { + "nativeSrc": "138119:9:10", + "nodeType": "YulBlock", + "src": "138119:9:10", + "statements": [ + { + "nativeSrc": "138121:5:10", + "nodeType": "YulBreak", + "src": "138121:5:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nativeSrc": "138112:5:10", + "nodeType": "YulIdentifier", + "src": "138112:5:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "138105:6:10", + "nodeType": "YulIdentifier", + "src": "138105:6:10" + }, + "nativeSrc": "138105:13:10", + "nodeType": "YulFunctionCall", + "src": "138105:13:10" + }, + "nativeSrc": "138102:26:10", + "nodeType": "YulIf", + "src": "138102:26:10" + }, + { + "body": { + "nativeSrc": "138221:129:10", + "nodeType": "YulBlock", + "src": "138221:129:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "138250:4:10", + "nodeType": "YulLiteral", + "src": "138250:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "138256:10:10", + "nodeType": "YulLiteral", + "src": "138256:10:10", + "type": "", + "value": "0xb12d13eb" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "138243:6:10", + "nodeType": "YulIdentifier", + "src": "138243:6:10" + }, + "nativeSrc": "138243:24:10", + "nodeType": "YulFunctionCall", + "src": "138243:24:10" + }, + "nativeSrc": "138243:24:10", + "nodeType": "YulExpressionStatement", + "src": "138243:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "138321:4:10", + "nodeType": "YulLiteral", + "src": "138321:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "138327:4:10", + "nodeType": "YulLiteral", + "src": "138327:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "138314:6:10", + "nodeType": "YulIdentifier", + "src": "138314:6:10" + }, + "nativeSrc": "138314:18:10", + "nodeType": "YulFunctionCall", + "src": "138314:18:10" + }, + "nativeSrc": "138314:18:10", + "nodeType": "YulExpressionStatement", + "src": "138314:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "138160:3:10", + "nodeType": "YulIdentifier", + "src": "138160:3:10" + }, + "nativeSrc": "138160:5:10", + "nodeType": "YulFunctionCall", + "src": "138160:5:10" + }, + { + "name": "instance", + "nativeSrc": "138167:8:10", + "nodeType": "YulIdentifier", + "src": "138167:8:10" + }, + { + "name": "value", + "nativeSrc": "138177:5:10", + "nodeType": "YulIdentifier", + "src": "138177:5:10" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "138184:8:10", + "nodeType": "YulIdentifier", + "src": "138184:8:10" + }, + "nativeSrc": "138184:10:10", + "nodeType": "YulFunctionCall", + "src": "138184:10:10" + }, + { + "kind": "number", + "nativeSrc": "138196:4:10", + "nodeType": "YulLiteral", + "src": "138196:4:10", + "type": "", + "value": "0x00" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "138202:8:10", + "nodeType": "YulIdentifier", + "src": "138202:8:10" + }, + "nativeSrc": "138202:10:10", + "nodeType": "YulFunctionCall", + "src": "138202:10:10" + }, + { + "kind": "number", + "nativeSrc": "138214:4:10", + "nodeType": "YulLiteral", + "src": "138214:4:10", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "call", + "nativeSrc": "138155:4:10", + "nodeType": "YulIdentifier", + "src": "138155:4:10" + }, + "nativeSrc": "138155:64:10", + "nodeType": "YulFunctionCall", + "src": "138155:64:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "138148:6:10", + "nodeType": "YulIdentifier", + "src": "138148:6:10" + }, + "nativeSrc": "138148:72:10", + "nodeType": "YulFunctionCall", + "src": "138148:72:10" + }, + "nativeSrc": "138145:205:10", + "nodeType": "YulIf", + "src": "138145:205:10" + }, + { + "nativeSrc": "138367:5:10", + "nodeType": "YulBreak", + "src": "138367:5:10" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "137701:1:10", + "nodeType": "YulLiteral", + "src": "137701:1:10", + "type": "", + "value": "1" + }, + "nativeSrc": "137694:692:10", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "137703:2:10", + "nodeType": "YulBlock", + "src": "137703:2:10", + "statements": [] + }, + "pre": { + "nativeSrc": "137698:2:10", + "nodeType": "YulBlock", + "src": "137698:2:10", + "statements": [] + }, + "src": "137694:692:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "138406:4:10", + "nodeType": "YulLiteral", + "src": "138406:4:10", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "138412:1:10", + "nodeType": "YulIdentifier", + "src": "138412:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "138399:6:10", + "nodeType": "YulIdentifier", + "src": "138399:6:10" + }, + "nativeSrc": "138399:15:10", + "nodeType": "YulFunctionCall", + "src": "138399:15:10" + }, + "nativeSrc": "138399:15:10", + "nodeType": "YulExpressionStatement", + "src": "138399:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "138470:4:10", + "nodeType": "YulLiteral", + "src": "138470:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "138476:1:10", + "nodeType": "YulLiteral", + "src": "138476:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "138463:6:10", + "nodeType": "YulIdentifier", + "src": "138463:6:10" + }, + "nativeSrc": "138463:15:10", + "nodeType": "YulFunctionCall", + "src": "138463:15:10" + }, + "nativeSrc": "138463:15:10", + "nodeType": "YulExpressionStatement", + "src": "138463:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4803, + "isOffset": false, + "isSlot": false, + "src": "138065:15:10", + "valueSize": 1 + }, + { + "declaration": 4798, + "isOffset": false, + "isSlot": false, + "src": "137389:6:10", + "valueSize": 1 + }, + { + "declaration": 4805, + "isOffset": false, + "isSlot": false, + "src": "137651:8:10", + "valueSize": 1 + }, + { + "declaration": 4805, + "isOffset": false, + "isSlot": false, + "src": "137746:8:10", + "valueSize": 1 + }, + { + "declaration": 4805, + "isOffset": false, + "isSlot": false, + "src": "137779:8:10", + "valueSize": 1 + }, + { + "declaration": 4805, + "isOffset": false, + "isSlot": false, + "src": "137854:8:10", + "valueSize": 1 + }, + { + "declaration": 4805, + "isOffset": false, + "isSlot": false, + "src": "138167:8:10", + "valueSize": 1 + }, + { + "declaration": 4800, + "isOffset": false, + "isSlot": false, + "src": "137633:4:10", + "valueSize": 1 + }, + { + "declaration": 4800, + "isOffset": false, + "isSlot": false, + "src": "137818:4:10", + "valueSize": 1 + }, + { + "declaration": 4796, + "isOffset": false, + "isSlot": false, + "src": "137799:5:10", + "valueSize": 1 + }, + { + "declaration": 4796, + "isOffset": false, + "isSlot": false, + "src": "138112:5:10", + "valueSize": 1 + }, + { + "declaration": 4796, + "isOffset": false, + "isSlot": false, + "src": "138177:5:10", + "valueSize": 1 + } + ], + "id": 4807, + "nodeType": "InlineAssembly", + "src": "136964:1550:10" + } + ] + }, + "documentation": { + "id": 4794, + "nodeType": "StructuredDocumentation", + "src": "136477:258:10", + "text": "@dev Creates a deterministic ERC1967I beacon proxy with `salt`.\n Deposits `value` ETH during deployment.\n Note: This method is intended for use in ERC4337 factories,\n which are expected to NOT revert if the proxy is already deployed." + }, + "id": 4809, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createDeterministicERC1967IBeaconProxy", + "nameLocation": "136749:38:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4801, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4796, + "mutability": "mutable", + "name": "value", + "nameLocation": "136796:5:10", + "nodeType": "VariableDeclaration", + "scope": 4809, + "src": "136788:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4795, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "136788:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4798, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "136811:6:10", + "nodeType": "VariableDeclaration", + "scope": 4809, + "src": "136803:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4797, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "136803:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4800, + "mutability": "mutable", + "name": "salt", + "nameLocation": "136827:4:10", + "nodeType": "VariableDeclaration", + "scope": 4809, + "src": "136819:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4799, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "136819:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "136787:45:10" + }, + "returnParameters": { + "id": 4806, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4803, + "mutability": "mutable", + "name": "alreadyDeployed", + "nameLocation": "136872:15:10", + "nodeType": "VariableDeclaration", + "scope": 4809, + "src": "136867:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4802, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "136867:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4805, + "mutability": "mutable", + "name": "instance", + "nameLocation": "136897:8:10", + "nodeType": "VariableDeclaration", + "scope": 4809, + "src": "136889:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4804, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "136889:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "136866:40:10" + }, + "scope": 5104, + "src": "136740:1780:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4818, + "nodeType": "Block", + "src": "138693:643:10", + "statements": [ + { + "AST": { + "nativeSrc": "138755:575:10", + "nodeType": "YulBlock", + "src": "138755:575:10", + "statements": [ + { + "nativeSrc": "138769:16:10", + "nodeType": "YulAssignment", + "src": "138769:16:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "138780:4:10", + "nodeType": "YulLiteral", + "src": "138780:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "138774:5:10", + "nodeType": "YulIdentifier", + "src": "138774:5:10" + }, + "nativeSrc": "138774:11:10", + "nodeType": "YulFunctionCall", + "src": "138774:11:10" + }, + "variableNames": [ + { + "name": "c", + "nativeSrc": "138769:1:10", + "nodeType": "YulIdentifier", + "src": "138769:1:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "138809:1:10", + "nodeType": "YulIdentifier", + "src": "138809:1:10" + }, + { + "kind": "number", + "nativeSrc": "138812:4:10", + "nodeType": "YulLiteral", + "src": "138812:4:10", + "type": "", + "value": "0x79" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "138805:3:10", + "nodeType": "YulIdentifier", + "src": "138805:3:10" + }, + "nativeSrc": "138805:12:10", + "nodeType": "YulFunctionCall", + "src": "138805:12:10" + }, + { + "kind": "number", + "nativeSrc": "138819:66:10", + "nodeType": "YulLiteral", + "src": "138819:66:10", + "type": "", + "value": "0x3d50545afa361460525736515af43d600060013e6052573d6001fd5b3d6001f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "138798:6:10", + "nodeType": "YulIdentifier", + "src": "138798:6:10" + }, + "nativeSrc": "138798:88:10", + "nodeType": "YulFunctionCall", + "src": "138798:88:10" + }, + "nativeSrc": "138798:88:10", + "nodeType": "YulExpressionStatement", + "src": "138798:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "138910:1:10", + "nodeType": "YulIdentifier", + "src": "138910:1:10" + }, + { + "kind": "number", + "nativeSrc": "138913:4:10", + "nodeType": "YulLiteral", + "src": "138913:4:10", + "type": "", + "value": "0x59" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "138906:3:10", + "nodeType": "YulIdentifier", + "src": "138906:3:10" + }, + "nativeSrc": "138906:12:10", + "nodeType": "YulFunctionCall", + "src": "138906:12:10" + }, + { + "kind": "number", + "nativeSrc": "138920:66:10", + "nodeType": "YulLiteral", + "src": "138920:66:10", + "type": "", + "value": "0x527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b3513" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "138899:6:10", + "nodeType": "YulIdentifier", + "src": "138899:6:10" + }, + "nativeSrc": "138899:88:10", + "nodeType": "YulFunctionCall", + "src": "138899:88:10" + }, + "nativeSrc": "138899:88:10", + "nodeType": "YulExpressionStatement", + "src": "138899:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "139011:1:10", + "nodeType": "YulIdentifier", + "src": "139011:1:10" + }, + { + "kind": "number", + "nativeSrc": "139014:4:10", + "nodeType": "YulLiteral", + "src": "139014:4:10", + "type": "", + "value": "0x39" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "139007:3:10", + "nodeType": "YulIdentifier", + "src": "139007:3:10" + }, + "nativeSrc": "139007:12:10", + "nodeType": "YulFunctionCall", + "src": "139007:12:10" + }, + { + "kind": "number", + "nativeSrc": "139021:58:10", + "nodeType": "YulLiteral", + "src": "139021:58:10", + "type": "", + "value": "0x60195155f3363d3d373d3d363d602036600436635c60da1b60e01b36" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "139000:6:10", + "nodeType": "YulIdentifier", + "src": "139000:6:10" + }, + "nativeSrc": "139000:80:10", + "nodeType": "YulFunctionCall", + "src": "139000:80:10" + }, + "nativeSrc": "139000:80:10", + "nodeType": "YulExpressionStatement", + "src": "139000:80:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "139104:1:10", + "nodeType": "YulIdentifier", + "src": "139104:1:10" + }, + { + "kind": "number", + "nativeSrc": "139107:4:10", + "nodeType": "YulLiteral", + "src": "139107:4:10", + "type": "", + "value": "0x1d" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "139100:3:10", + "nodeType": "YulIdentifier", + "src": "139100:3:10" + }, + "nativeSrc": "139100:12:10", + "nodeType": "YulFunctionCall", + "src": "139100:12:10" + }, + { + "name": "beacon", + "nativeSrc": "139114:6:10", + "nodeType": "YulIdentifier", + "src": "139114:6:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "139093:6:10", + "nodeType": "YulIdentifier", + "src": "139093:6:10" + }, + "nativeSrc": "139093:28:10", + "nodeType": "YulFunctionCall", + "src": "139093:28:10" + }, + "nativeSrc": "139093:28:10", + "nodeType": "YulExpressionStatement", + "src": "139093:28:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "139145:1:10", + "nodeType": "YulIdentifier", + "src": "139145:1:10" + }, + { + "kind": "number", + "nativeSrc": "139148:4:10", + "nodeType": "YulLiteral", + "src": "139148:4:10", + "type": "", + "value": "0x09" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "139141:3:10", + "nodeType": "YulIdentifier", + "src": "139141:3:10" + }, + "nativeSrc": "139141:12:10", + "nodeType": "YulFunctionCall", + "src": "139141:12:10" + }, + { + "kind": "number", + "nativeSrc": "139155:20:10", + "nodeType": "YulLiteral", + "src": "139155:20:10", + "type": "", + "value": "0x60573d8160223d3973" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "139134:6:10", + "nodeType": "YulIdentifier", + "src": "139134:6:10" + }, + "nativeSrc": "139134:42:10", + "nodeType": "YulFunctionCall", + "src": "139134:42:10" + }, + "nativeSrc": "139134:42:10", + "nodeType": "YulExpressionStatement", + "src": "139134:42:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "139200:1:10", + "nodeType": "YulIdentifier", + "src": "139200:1:10" + }, + { + "kind": "number", + "nativeSrc": "139203:4:10", + "nodeType": "YulLiteral", + "src": "139203:4:10", + "type": "", + "value": "0x99" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "139196:3:10", + "nodeType": "YulIdentifier", + "src": "139196:3:10" + }, + "nativeSrc": "139196:12:10", + "nodeType": "YulFunctionCall", + "src": "139196:12:10" + }, + { + "kind": "number", + "nativeSrc": "139210:1:10", + "nodeType": "YulLiteral", + "src": "139210:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "139189:6:10", + "nodeType": "YulIdentifier", + "src": "139189:6:10" + }, + "nativeSrc": "139189:23:10", + "nodeType": "YulFunctionCall", + "src": "139189:23:10" + }, + "nativeSrc": "139189:23:10", + "nodeType": "YulExpressionStatement", + "src": "139189:23:10" + }, + { + "expression": { + "arguments": [ + { + "name": "c", + "nativeSrc": "139232:1:10", + "nodeType": "YulIdentifier", + "src": "139232:1:10" + }, + { + "kind": "number", + "nativeSrc": "139235:4:10", + "nodeType": "YulLiteral", + "src": "139235:4:10", + "type": "", + "value": "0x79" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "139225:6:10", + "nodeType": "YulIdentifier", + "src": "139225:6:10" + }, + "nativeSrc": "139225:15:10", + "nodeType": "YulFunctionCall", + "src": "139225:15:10" + }, + "nativeSrc": "139225:15:10", + "nodeType": "YulExpressionStatement", + "src": "139225:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "139281:4:10", + "nodeType": "YulLiteral", + "src": "139281:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "c", + "nativeSrc": "139291:1:10", + "nodeType": "YulIdentifier", + "src": "139291:1:10" + }, + { + "kind": "number", + "nativeSrc": "139294:4:10", + "nodeType": "YulLiteral", + "src": "139294:4:10", + "type": "", + "value": "0xa0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "139287:3:10", + "nodeType": "YulIdentifier", + "src": "139287:3:10" + }, + "nativeSrc": "139287:12:10", + "nodeType": "YulFunctionCall", + "src": "139287:12:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "139274:6:10", + "nodeType": "YulIdentifier", + "src": "139274:6:10" + }, + "nativeSrc": "139274:26:10", + "nodeType": "YulFunctionCall", + "src": "139274:26:10" + }, + "nativeSrc": "139274:26:10", + "nodeType": "YulExpressionStatement", + "src": "139274:26:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4812, + "isOffset": false, + "isSlot": false, + "src": "139114:6:10", + "valueSize": 1 + }, + { + "declaration": 4815, + "isOffset": false, + "isSlot": false, + "src": "138769:1:10", + "valueSize": 1 + }, + { + "declaration": 4815, + "isOffset": false, + "isSlot": false, + "src": "138809:1:10", + "valueSize": 1 + }, + { + "declaration": 4815, + "isOffset": false, + "isSlot": false, + "src": "138910:1:10", + "valueSize": 1 + }, + { + "declaration": 4815, + "isOffset": false, + "isSlot": false, + "src": "139011:1:10", + "valueSize": 1 + }, + { + "declaration": 4815, + "isOffset": false, + "isSlot": false, + "src": "139104:1:10", + "valueSize": 1 + }, + { + "declaration": 4815, + "isOffset": false, + "isSlot": false, + "src": "139145:1:10", + "valueSize": 1 + }, + { + "declaration": 4815, + "isOffset": false, + "isSlot": false, + "src": "139200:1:10", + "valueSize": 1 + }, + { + "declaration": 4815, + "isOffset": false, + "isSlot": false, + "src": "139232:1:10", + "valueSize": 1 + }, + { + "declaration": 4815, + "isOffset": false, + "isSlot": false, + "src": "139291:1:10", + "valueSize": 1 + } + ], + "id": 4817, + "nodeType": "InlineAssembly", + "src": "138746:584:10" + } + ] + }, + "documentation": { + "id": 4810, + "nodeType": "StructuredDocumentation", + "src": "138526:70:10", + "text": "@dev Returns the initialization code of the ERC1967I beacon proxy." + }, + "id": 4819, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeERC1967IBeaconProxy", + "nameLocation": "138610:27:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4813, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4812, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "138646:6:10", + "nodeType": "VariableDeclaration", + "scope": 4819, + "src": "138638:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4811, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "138638:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "138637:16:10" + }, + "returnParameters": { + "id": 4816, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4815, + "mutability": "mutable", + "name": "c", + "nameLocation": "138690:1:10", + "nodeType": "VariableDeclaration", + "scope": 4819, + "src": "138677:14:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4814, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "138677:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "138676:16:10" + }, + "scope": 5104, + "src": "138601:735:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4828, + "nodeType": "Block", + "src": "139516:664:10", + "statements": [ + { + "AST": { + "nativeSrc": "139578:596:10", + "nodeType": "YulBlock", + "src": "139578:596:10", + "statements": [ + { + "nativeSrc": "139592:20:10", + "nodeType": "YulVariableDeclaration", + "src": "139592:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "139607:4:10", + "nodeType": "YulLiteral", + "src": "139607:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "139601:5:10", + "nodeType": "YulIdentifier", + "src": "139601:5:10" + }, + "nativeSrc": "139601:11:10", + "nodeType": "YulFunctionCall", + "src": "139601:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "139596:1:10", + "nodeType": "YulTypedName", + "src": "139596:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "139666:4:10", + "nodeType": "YulLiteral", + "src": "139666:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "139672:66:10", + "nodeType": "YulLiteral", + "src": "139672:66:10", + "type": "", + "value": "0x3d50545afa361460525736515af43d600060013e6052573d6001fd5b3d6001f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "139659:6:10", + "nodeType": "YulIdentifier", + "src": "139659:6:10" + }, + "nativeSrc": "139659:80:10", + "nodeType": "YulFunctionCall", + "src": "139659:80:10" + }, + "nativeSrc": "139659:80:10", + "nodeType": "YulExpressionStatement", + "src": "139659:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "139759:4:10", + "nodeType": "YulLiteral", + "src": "139759:4:10", + "type": "", + "value": "0x40" + }, + { + "kind": "number", + "nativeSrc": "139765:66:10", + "nodeType": "YulLiteral", + "src": "139765:66:10", + "type": "", + "value": "0x527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b3513" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "139752:6:10", + "nodeType": "YulIdentifier", + "src": "139752:6:10" + }, + "nativeSrc": "139752:80:10", + "nodeType": "YulFunctionCall", + "src": "139752:80:10" + }, + "nativeSrc": "139752:80:10", + "nodeType": "YulExpressionStatement", + "src": "139752:80:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "139852:4:10", + "nodeType": "YulLiteral", + "src": "139852:4:10", + "type": "", + "value": "0x20" + }, + { + "kind": "number", + "nativeSrc": "139858:58:10", + "nodeType": "YulLiteral", + "src": "139858:58:10", + "type": "", + "value": "0x60195155f3363d3d373d3d363d602036600436635c60da1b60e01b36" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "139845:6:10", + "nodeType": "YulIdentifier", + "src": "139845:6:10" + }, + "nativeSrc": "139845:72:10", + "nodeType": "YulFunctionCall", + "src": "139845:72:10" + }, + "nativeSrc": "139845:72:10", + "nodeType": "YulExpressionStatement", + "src": "139845:72:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "139937:4:10", + "nodeType": "YulLiteral", + "src": "139937:4:10", + "type": "", + "value": "0x04" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "139950:3:10", + "nodeType": "YulLiteral", + "src": "139950:3:10", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "139955:20:10", + "nodeType": "YulLiteral", + "src": "139955:20:10", + "type": "", + "value": "0x60573d8160223d3973" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "139946:3:10", + "nodeType": "YulIdentifier", + "src": "139946:3:10" + }, + "nativeSrc": "139946:30:10", + "nodeType": "YulFunctionCall", + "src": "139946:30:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "139982:2:10", + "nodeType": "YulLiteral", + "src": "139982:2:10", + "type": "", + "value": "96" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "139990:2:10", + "nodeType": "YulLiteral", + "src": "139990:2:10", + "type": "", + "value": "96" + }, + { + "name": "beacon", + "nativeSrc": "139994:6:10", + "nodeType": "YulIdentifier", + "src": "139994:6:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "139986:3:10", + "nodeType": "YulIdentifier", + "src": "139986:3:10" + }, + "nativeSrc": "139986:15:10", + "nodeType": "YulFunctionCall", + "src": "139986:15:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "139978:3:10", + "nodeType": "YulIdentifier", + "src": "139978:3:10" + }, + "nativeSrc": "139978:24:10", + "nodeType": "YulFunctionCall", + "src": "139978:24:10" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "139943:2:10", + "nodeType": "YulIdentifier", + "src": "139943:2:10" + }, + "nativeSrc": "139943:60:10", + "nodeType": "YulFunctionCall", + "src": "139943:60:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "139930:6:10", + "nodeType": "YulIdentifier", + "src": "139930:6:10" + }, + "nativeSrc": "139930:74:10", + "nodeType": "YulFunctionCall", + "src": "139930:74:10" + }, + "nativeSrc": "139930:74:10", + "nodeType": "YulExpressionStatement", + "src": "139930:74:10" + }, + { + "nativeSrc": "140017:29:10", + "nodeType": "YulAssignment", + "src": "140017:29:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "140035:4:10", + "nodeType": "YulLiteral", + "src": "140035:4:10", + "type": "", + "value": "0x07" + }, + { + "kind": "number", + "nativeSrc": "140041:4:10", + "nodeType": "YulLiteral", + "src": "140041:4:10", + "type": "", + "value": "0x79" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "140025:9:10", + "nodeType": "YulIdentifier", + "src": "140025:9:10" + }, + "nativeSrc": "140025:21:10", + "nodeType": "YulFunctionCall", + "src": "140025:21:10" + }, + "variableNames": [ + { + "name": "hash", + "nativeSrc": "140017:4:10", + "nodeType": "YulIdentifier", + "src": "140017:4:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "140066:4:10", + "nodeType": "YulLiteral", + "src": "140066:4:10", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "140072:1:10", + "nodeType": "YulIdentifier", + "src": "140072:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "140059:6:10", + "nodeType": "YulIdentifier", + "src": "140059:6:10" + }, + "nativeSrc": "140059:15:10", + "nodeType": "YulFunctionCall", + "src": "140059:15:10" + }, + "nativeSrc": "140059:15:10", + "nodeType": "YulExpressionStatement", + "src": "140059:15:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "140130:4:10", + "nodeType": "YulLiteral", + "src": "140130:4:10", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "140136:1:10", + "nodeType": "YulLiteral", + "src": "140136:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "140123:6:10", + "nodeType": "YulIdentifier", + "src": "140123:6:10" + }, + "nativeSrc": "140123:15:10", + "nodeType": "YulFunctionCall", + "src": "140123:15:10" + }, + "nativeSrc": "140123:15:10", + "nodeType": "YulExpressionStatement", + "src": "140123:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4822, + "isOffset": false, + "isSlot": false, + "src": "139994:6:10", + "valueSize": 1 + }, + { + "declaration": 4825, + "isOffset": false, + "isSlot": false, + "src": "140017:4:10", + "valueSize": 1 + } + ], + "id": 4827, + "nodeType": "InlineAssembly", + "src": "139569:605:10" + } + ] + }, + "documentation": { + "id": 4820, + "nodeType": "StructuredDocumentation", + "src": "139342:75:10", + "text": "@dev Returns the initialization code hash of the ERC1967I beacon proxy." + }, + "id": 4829, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeHashERC1967IBeaconProxy", + "nameLocation": "139431:31:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4823, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4822, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "139471:6:10", + "nodeType": "VariableDeclaration", + "scope": 4829, + "src": "139463:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4821, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "139463:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "139462:16:10" + }, + "returnParameters": { + "id": 4826, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4825, + "mutability": "mutable", + "name": "hash", + "nameLocation": "139510:4:10", + "nodeType": "VariableDeclaration", + "scope": 4829, + "src": "139502:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4824, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "139502:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "139501:14:10" + }, + "scope": 5104, + "src": "139422:758:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4855, + "nodeType": "Block", + "src": "140545:142:10", + "statements": [ + { + "assignments": [ + 4842 + ], + "declarations": [ + { + "constant": false, + "id": 4842, + "mutability": "mutable", + "name": "hash", + "nameLocation": "140563:4:10", + "nodeType": "VariableDeclaration", + "scope": 4855, + "src": "140555:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4841, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "140555:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 4846, + "initialValue": { + "arguments": [ + { + "id": 4844, + "name": "beacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4832, + "src": "140602:6:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4843, + "name": "initCodeHashERC1967IBeaconProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4829, + 4991 + ], + "referencedDeclaration": 4829, + "src": "140570:31:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_bytes32_$", + "typeString": "function (address) pure returns (bytes32)" + } + }, + "id": 4845, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "140570:39:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "140555:54:10" + }, + { + "expression": { + "id": 4853, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4847, + "name": "predicted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4839, + "src": "140619:9:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 4849, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4842, + "src": "140659:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 4850, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4834, + "src": "140665:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 4851, + "name": "deployer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4836, + "src": "140671:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4848, + "name": "predictDeterministicAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3237, + 3510, + 5081 + ], + "referencedDeclaration": 5081, + "src": "140631:27:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_address_$", + "typeString": "function (bytes32,bytes32,address) pure returns (address)" + } + }, + "id": 4852, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "140631:49:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "140619:61:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4854, + "nodeType": "ExpressionStatement", + "src": "140619:61:10" + } + ] + }, + "documentation": { + "id": 4830, + "nodeType": "StructuredDocumentation", + "src": "140186:178:10", + "text": "@dev Returns the address of the ERC1967I beacon proxy, with `salt` by `deployer`.\n Note: The returned result has dirty upper 96 bits. Please clean if used in assembly." + }, + "id": 4856, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "predictDeterministicAddressERC1967IBeaconProxy", + "nameLocation": "140378:46:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4837, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4832, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "140442:6:10", + "nodeType": "VariableDeclaration", + "scope": 4856, + "src": "140434:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4831, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "140434:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4834, + "mutability": "mutable", + "name": "salt", + "nameLocation": "140466:4:10", + "nodeType": "VariableDeclaration", + "scope": 4856, + "src": "140458:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4833, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "140458:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4836, + "mutability": "mutable", + "name": "deployer", + "nameLocation": "140488:8:10", + "nodeType": "VariableDeclaration", + "scope": 4856, + "src": "140480:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4835, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "140480:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "140424:78:10" + }, + "returnParameters": { + "id": 4840, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4839, + "mutability": "mutable", + "name": "predicted", + "nameLocation": "140534:9:10", + "nodeType": "VariableDeclaration", + "scope": 4856, + "src": "140526:17:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4838, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "140526:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "140525:19:10" + }, + "scope": 5104, + "src": "140369:318:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4874, + "nodeType": "Block", + "src": "141159:70:10", + "statements": [ + { + "expression": { + "id": 4872, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4866, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4864, + "src": "141169:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 4868, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "141206:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 4869, + "name": "beacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4859, + "src": "141209:6:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4870, + "name": "args", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4861, + "src": "141217:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 4867, + "name": "deployERC1967IBeaconProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4729, + 4741, + 4875, + 4889 + ], + "referencedDeclaration": 4889, + "src": "141180:25:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$", + "typeString": "function (uint256,address,bytes memory) returns (address)" + } + }, + "id": 4871, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "141180:42:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "141169:53:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4873, + "nodeType": "ExpressionStatement", + "src": "141169:53:10" + } + ] + }, + "documentation": { + "id": 4857, + "nodeType": "StructuredDocumentation", + "src": "140976:52:10", + "text": "@dev Deploys a ERC1967I beacon proxy with `args." + }, + "id": 4875, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployERC1967IBeaconProxy", + "nameLocation": "141042:25:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4862, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4859, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "141076:6:10", + "nodeType": "VariableDeclaration", + "scope": 4875, + "src": "141068:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4858, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "141068:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4861, + "mutability": "mutable", + "name": "args", + "nameLocation": "141097:4:10", + "nodeType": "VariableDeclaration", + "scope": 4875, + "src": "141084:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4860, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "141084:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "141067:35:10" + }, + "returnParameters": { + "id": 4865, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4864, + "mutability": "mutable", + "name": "instance", + "nameLocation": "141145:8:10", + "nodeType": "VariableDeclaration", + "scope": 4875, + "src": "141137:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4863, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "141137:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "141136:18:10" + }, + "scope": 5104, + "src": "141033:196:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4888, + "nodeType": "Block", + "src": "141481:977:10", + "statements": [ + { + "AST": { + "nativeSrc": "141543:909:10", + "nodeType": "YulBlock", + "src": "141543:909:10", + "statements": [ + { + "nativeSrc": "141557:20:10", + "nodeType": "YulVariableDeclaration", + "src": "141557:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "141572:4:10", + "nodeType": "YulLiteral", + "src": "141572:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "141566:5:10", + "nodeType": "YulIdentifier", + "src": "141566:5:10" + }, + "nativeSrc": "141566:11:10", + "nodeType": "YulFunctionCall", + "src": "141566:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "141561:1:10", + "nodeType": "YulTypedName", + "src": "141561:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "141624:20:10", + "nodeType": "YulVariableDeclaration", + "src": "141624:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "141639:4:10", + "nodeType": "YulIdentifier", + "src": "141639:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "141633:5:10", + "nodeType": "YulIdentifier", + "src": "141633:5:10" + }, + "nativeSrc": "141633:11:10", + "nodeType": "YulFunctionCall", + "src": "141633:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "141628:1:10", + "nodeType": "YulTypedName", + "src": "141628:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "141672:3:10", + "nodeType": "YulIdentifier", + "src": "141672:3:10" + }, + "nativeSrc": "141672:5:10", + "nodeType": "YulFunctionCall", + "src": "141672:5:10" + }, + { + "kind": "number", + "nativeSrc": "141679:1:10", + "nodeType": "YulLiteral", + "src": "141679:1:10", + "type": "", + "value": "4" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "141686:4:10", + "nodeType": "YulIdentifier", + "src": "141686:4:10" + }, + { + "kind": "number", + "nativeSrc": "141692:4:10", + "nodeType": "YulLiteral", + "src": "141692:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "141682:3:10", + "nodeType": "YulIdentifier", + "src": "141682:3:10" + }, + "nativeSrc": "141682:15:10", + "nodeType": "YulFunctionCall", + "src": "141682:15:10" + }, + { + "name": "n", + "nativeSrc": "141699:1:10", + "nodeType": "YulIdentifier", + "src": "141699:1:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "141706:1:10", + "nodeType": "YulIdentifier", + "src": "141706:1:10" + }, + { + "kind": "number", + "nativeSrc": "141709:4:10", + "nodeType": "YulLiteral", + "src": "141709:4:10", + "type": "", + "value": "0x90" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "141702:3:10", + "nodeType": "YulIdentifier", + "src": "141702:3:10" + }, + "nativeSrc": "141702:12:10", + "nodeType": "YulFunctionCall", + "src": "141702:12:10" + }, + { + "name": "n", + "nativeSrc": "141716:1:10", + "nodeType": "YulIdentifier", + "src": "141716:1:10" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "141661:10:10", + "nodeType": "YulIdentifier", + "src": "141661:10:10" + }, + "nativeSrc": "141661:57:10", + "nodeType": "YulFunctionCall", + "src": "141661:57:10" + } + ], + "functionName": { + "name": "pop", + "nativeSrc": "141657:3:10", + "nodeType": "YulIdentifier", + "src": "141657:3:10" + }, + "nativeSrc": "141657:62:10", + "nodeType": "YulFunctionCall", + "src": "141657:62:10" + }, + "nativeSrc": "141657:62:10", + "nodeType": "YulExpressionStatement", + "src": "141657:62:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "141743:1:10", + "nodeType": "YulIdentifier", + "src": "141743:1:10" + }, + { + "kind": "number", + "nativeSrc": "141746:4:10", + "nodeType": "YulLiteral", + "src": "141746:4:10", + "type": "", + "value": "0x70" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "141739:3:10", + "nodeType": "YulIdentifier", + "src": "141739:3:10" + }, + "nativeSrc": "141739:12:10", + "nodeType": "YulFunctionCall", + "src": "141739:12:10" + }, + { + "kind": "number", + "nativeSrc": "141753:66:10", + "nodeType": "YulLiteral", + "src": "141753:66:10", + "type": "", + "value": "0x3d50545afa361460525736515af43d600060013e6052573d6001fd5b3d6001f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "141732:6:10", + "nodeType": "YulIdentifier", + "src": "141732:6:10" + }, + "nativeSrc": "141732:88:10", + "nodeType": "YulFunctionCall", + "src": "141732:88:10" + }, + "nativeSrc": "141732:88:10", + "nodeType": "YulExpressionStatement", + "src": "141732:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "141844:1:10", + "nodeType": "YulIdentifier", + "src": "141844:1:10" + }, + { + "kind": "number", + "nativeSrc": "141847:4:10", + "nodeType": "YulLiteral", + "src": "141847:4:10", + "type": "", + "value": "0x50" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "141840:3:10", + "nodeType": "YulIdentifier", + "src": "141840:3:10" + }, + "nativeSrc": "141840:12:10", + "nodeType": "YulFunctionCall", + "src": "141840:12:10" + }, + { + "kind": "number", + "nativeSrc": "141854:66:10", + "nodeType": "YulLiteral", + "src": "141854:66:10", + "type": "", + "value": "0x527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b3513" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "141833:6:10", + "nodeType": "YulIdentifier", + "src": "141833:6:10" + }, + "nativeSrc": "141833:88:10", + "nodeType": "YulFunctionCall", + "src": "141833:88:10" + }, + "nativeSrc": "141833:88:10", + "nodeType": "YulExpressionStatement", + "src": "141833:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "141945:1:10", + "nodeType": "YulIdentifier", + "src": "141945:1:10" + }, + { + "kind": "number", + "nativeSrc": "141948:4:10", + "nodeType": "YulLiteral", + "src": "141948:4:10", + "type": "", + "value": "0x30" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "141941:3:10", + "nodeType": "YulIdentifier", + "src": "141941:3:10" + }, + "nativeSrc": "141941:12:10", + "nodeType": "YulFunctionCall", + "src": "141941:12:10" + }, + { + "kind": "number", + "nativeSrc": "141955:58:10", + "nodeType": "YulLiteral", + "src": "141955:58:10", + "type": "", + "value": "0x60195155f3363d3d373d3d363d602036600436635c60da1b60e01b36" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "141934:6:10", + "nodeType": "YulIdentifier", + "src": "141934:6:10" + }, + "nativeSrc": "141934:80:10", + "nodeType": "YulFunctionCall", + "src": "141934:80:10" + }, + "nativeSrc": "141934:80:10", + "nodeType": "YulExpressionStatement", + "src": "141934:80:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "142038:1:10", + "nodeType": "YulIdentifier", + "src": "142038:1:10" + }, + { + "kind": "number", + "nativeSrc": "142041:4:10", + "nodeType": "YulLiteral", + "src": "142041:4:10", + "type": "", + "value": "0x14" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "142034:3:10", + "nodeType": "YulIdentifier", + "src": "142034:3:10" + }, + "nativeSrc": "142034:12:10", + "nodeType": "YulFunctionCall", + "src": "142034:12:10" + }, + { + "name": "beacon", + "nativeSrc": "142048:6:10", + "nodeType": "YulIdentifier", + "src": "142048:6:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "142027:6:10", + "nodeType": "YulIdentifier", + "src": "142027:6:10" + }, + "nativeSrc": "142027:28:10", + "nodeType": "YulFunctionCall", + "src": "142027:28:10" + }, + "nativeSrc": "142027:28:10", + "nodeType": "YulExpressionStatement", + "src": "142027:28:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "142166:1:10", + "nodeType": "YulIdentifier", + "src": "142166:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "142172:1:10", + "nodeType": "YulIdentifier", + "src": "142172:1:10" + }, + { + "kind": "number", + "nativeSrc": "142175:6:10", + "nodeType": "YulLiteral", + "src": "142175:6:10", + "type": "", + "value": "0xffa8" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "142169:2:10", + "nodeType": "YulIdentifier", + "src": "142169:2:10" + }, + "nativeSrc": "142169:13:10", + "nodeType": "YulFunctionCall", + "src": "142169:13:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "142162:3:10", + "nodeType": "YulIdentifier", + "src": "142162:3:10" + }, + "nativeSrc": "142162:21:10", + "nodeType": "YulFunctionCall", + "src": "142162:21:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "142189:24:10", + "nodeType": "YulLiteral", + "src": "142189:24:10", + "type": "", + "value": "0xfe6100573d8160233d3973" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "142219:2:10", + "nodeType": "YulLiteral", + "src": "142219:2:10", + "type": "", + "value": "56" + }, + { + "name": "n", + "nativeSrc": "142223:1:10", + "nodeType": "YulIdentifier", + "src": "142223:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "142215:3:10", + "nodeType": "YulIdentifier", + "src": "142215:3:10" + }, + "nativeSrc": "142215:10:10", + "nodeType": "YulFunctionCall", + "src": "142215:10:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "142185:3:10", + "nodeType": "YulIdentifier", + "src": "142185:3:10" + }, + "nativeSrc": "142185:41:10", + "nodeType": "YulFunctionCall", + "src": "142185:41:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "142155:6:10", + "nodeType": "YulIdentifier", + "src": "142155:6:10" + }, + "nativeSrc": "142155:72:10", + "nodeType": "YulFunctionCall", + "src": "142155:72:10" + }, + "nativeSrc": "142155:72:10", + "nodeType": "YulExpressionStatement", + "src": "142155:72:10" + }, + { + "nativeSrc": "142240:53:10", + "nodeType": "YulAssignment", + "src": "142240:53:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "142259:5:10", + "nodeType": "YulIdentifier", + "src": "142259:5:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "142270:1:10", + "nodeType": "YulIdentifier", + "src": "142270:1:10" + }, + { + "kind": "number", + "nativeSrc": "142273:4:10", + "nodeType": "YulLiteral", + "src": "142273:4:10", + "type": "", + "value": "0x16" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "142266:3:10", + "nodeType": "YulIdentifier", + "src": "142266:3:10" + }, + "nativeSrc": "142266:12:10", + "nodeType": "YulFunctionCall", + "src": "142266:12:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "142284:1:10", + "nodeType": "YulIdentifier", + "src": "142284:1:10" + }, + { + "kind": "number", + "nativeSrc": "142287:4:10", + "nodeType": "YulLiteral", + "src": "142287:4:10", + "type": "", + "value": "0x7a" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "142280:3:10", + "nodeType": "YulIdentifier", + "src": "142280:3:10" + }, + "nativeSrc": "142280:12:10", + "nodeType": "YulFunctionCall", + "src": "142280:12:10" + } + ], + "functionName": { + "name": "create", + "nativeSrc": "142252:6:10", + "nodeType": "YulIdentifier", + "src": "142252:6:10" + }, + "nativeSrc": "142252:41:10", + "nodeType": "YulFunctionCall", + "src": "142252:41:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "142240:8:10", + "nodeType": "YulIdentifier", + "src": "142240:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "142326:116:10", + "nodeType": "YulBlock", + "src": "142326:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "142351:4:10", + "nodeType": "YulLiteral", + "src": "142351:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "142357:10:10", + "nodeType": "YulLiteral", + "src": "142357:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "142344:6:10", + "nodeType": "YulIdentifier", + "src": "142344:6:10" + }, + "nativeSrc": "142344:24:10", + "nodeType": "YulFunctionCall", + "src": "142344:24:10" + }, + "nativeSrc": "142344:24:10", + "nodeType": "YulExpressionStatement", + "src": "142344:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "142417:4:10", + "nodeType": "YulLiteral", + "src": "142417:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "142423:4:10", + "nodeType": "YulLiteral", + "src": "142423:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "142410:6:10", + "nodeType": "YulIdentifier", + "src": "142410:6:10" + }, + "nativeSrc": "142410:18:10", + "nodeType": "YulFunctionCall", + "src": "142410:18:10" + }, + "nativeSrc": "142410:18:10", + "nodeType": "YulExpressionStatement", + "src": "142410:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "142316:8:10", + "nodeType": "YulIdentifier", + "src": "142316:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "142309:6:10", + "nodeType": "YulIdentifier", + "src": "142309:6:10" + }, + "nativeSrc": "142309:16:10", + "nodeType": "YulFunctionCall", + "src": "142309:16:10" + }, + "nativeSrc": "142306:136:10", + "nodeType": "YulIf", + "src": "142306:136:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4882, + "isOffset": false, + "isSlot": false, + "src": "141639:4:10", + "valueSize": 1 + }, + { + "declaration": 4882, + "isOffset": false, + "isSlot": false, + "src": "141686:4:10", + "valueSize": 1 + }, + { + "declaration": 4880, + "isOffset": false, + "isSlot": false, + "src": "142048:6:10", + "valueSize": 1 + }, + { + "declaration": 4885, + "isOffset": false, + "isSlot": false, + "src": "142240:8:10", + "valueSize": 1 + }, + { + "declaration": 4885, + "isOffset": false, + "isSlot": false, + "src": "142316:8:10", + "valueSize": 1 + }, + { + "declaration": 4878, + "isOffset": false, + "isSlot": false, + "src": "142259:5:10", + "valueSize": 1 + } + ], + "id": 4887, + "nodeType": "InlineAssembly", + "src": "141534:918:10" + } + ] + }, + "documentation": { + "id": 4876, + "nodeType": "StructuredDocumentation", + "src": "141235:100:10", + "text": "@dev Deploys a ERC1967I beacon proxy with `args.\n Deposits `value` ETH during deployment." + }, + "id": 4889, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployERC1967IBeaconProxy", + "nameLocation": "141349:25:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4883, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4878, + "mutability": "mutable", + "name": "value", + "nameLocation": "141383:5:10", + "nodeType": "VariableDeclaration", + "scope": 4889, + "src": "141375:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4877, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "141375:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4880, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "141398:6:10", + "nodeType": "VariableDeclaration", + "scope": 4889, + "src": "141390:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4879, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "141390:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4882, + "mutability": "mutable", + "name": "args", + "nameLocation": "141419:4:10", + "nodeType": "VariableDeclaration", + "scope": 4889, + "src": "141406:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4881, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "141406:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "141374:50:10" + }, + "returnParameters": { + "id": 4886, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4885, + "mutability": "mutable", + "name": "instance", + "nameLocation": "141467:8:10", + "nodeType": "VariableDeclaration", + "scope": 4889, + "src": "141459:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4884, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "141459:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "141458:18:10" + }, + "scope": 5104, + "src": "141340:1118:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4910, + "nodeType": "Block", + "src": "142700:89:10", + "statements": [ + { + "expression": { + "id": 4908, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4901, + "name": "instance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4899, + "src": "142710:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "hexValue": "30", + "id": 4903, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "142760:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 4904, + "name": "beacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4892, + "src": "142763:6:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4905, + "name": "args", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4894, + "src": "142771:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 4906, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4896, + "src": "142777:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4902, + "name": "deployDeterministicERC1967IBeaconProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4760, + 4774, + 4911, + 4927 + ], + "referencedDeclaration": 4927, + "src": "142721:38:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (uint256,address,bytes memory,bytes32) returns (address)" + } + }, + "id": 4907, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "142721:61:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "142710:72:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4909, + "nodeType": "ExpressionStatement", + "src": "142710:72:10" + } + ] + }, + "documentation": { + "id": 4890, + "nodeType": "StructuredDocumentation", + "src": "142464:78:10", + "text": "@dev Deploys a deterministic ERC1967I beacon proxy with `args` and `salt`." + }, + "id": 4911, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployDeterministicERC1967IBeaconProxy", + "nameLocation": "142556:38:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4897, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4892, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "142603:6:10", + "nodeType": "VariableDeclaration", + "scope": 4911, + "src": "142595:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4891, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "142595:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4894, + "mutability": "mutable", + "name": "args", + "nameLocation": "142624:4:10", + "nodeType": "VariableDeclaration", + "scope": 4911, + "src": "142611:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4893, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "142611:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4896, + "mutability": "mutable", + "name": "salt", + "nameLocation": "142638:4:10", + "nodeType": "VariableDeclaration", + "scope": 4911, + "src": "142630:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4895, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "142630:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "142594:49:10" + }, + "returnParameters": { + "id": 4900, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4899, + "mutability": "mutable", + "name": "instance", + "nameLocation": "142686:8:10", + "nodeType": "VariableDeclaration", + "scope": 4911, + "src": "142678:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4898, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "142678:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "142677:18:10" + }, + "scope": 5104, + "src": "142547:242:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4926, + "nodeType": "Block", + "src": "143112:984:10", + "statements": [ + { + "AST": { + "nativeSrc": "143174:916:10", + "nodeType": "YulBlock", + "src": "143174:916:10", + "statements": [ + { + "nativeSrc": "143188:20:10", + "nodeType": "YulVariableDeclaration", + "src": "143188:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "143203:4:10", + "nodeType": "YulLiteral", + "src": "143203:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "143197:5:10", + "nodeType": "YulIdentifier", + "src": "143197:5:10" + }, + "nativeSrc": "143197:11:10", + "nodeType": "YulFunctionCall", + "src": "143197:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "143192:1:10", + "nodeType": "YulTypedName", + "src": "143192:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "143255:20:10", + "nodeType": "YulVariableDeclaration", + "src": "143255:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "143270:4:10", + "nodeType": "YulIdentifier", + "src": "143270:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "143264:5:10", + "nodeType": "YulIdentifier", + "src": "143264:5:10" + }, + "nativeSrc": "143264:11:10", + "nodeType": "YulFunctionCall", + "src": "143264:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "143259:1:10", + "nodeType": "YulTypedName", + "src": "143259:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "143303:3:10", + "nodeType": "YulIdentifier", + "src": "143303:3:10" + }, + "nativeSrc": "143303:5:10", + "nodeType": "YulFunctionCall", + "src": "143303:5:10" + }, + { + "kind": "number", + "nativeSrc": "143310:1:10", + "nodeType": "YulLiteral", + "src": "143310:1:10", + "type": "", + "value": "4" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "143317:4:10", + "nodeType": "YulIdentifier", + "src": "143317:4:10" + }, + { + "kind": "number", + "nativeSrc": "143323:4:10", + "nodeType": "YulLiteral", + "src": "143323:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "143313:3:10", + "nodeType": "YulIdentifier", + "src": "143313:3:10" + }, + "nativeSrc": "143313:15:10", + "nodeType": "YulFunctionCall", + "src": "143313:15:10" + }, + { + "name": "n", + "nativeSrc": "143330:1:10", + "nodeType": "YulIdentifier", + "src": "143330:1:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "143337:1:10", + "nodeType": "YulIdentifier", + "src": "143337:1:10" + }, + { + "kind": "number", + "nativeSrc": "143340:4:10", + "nodeType": "YulLiteral", + "src": "143340:4:10", + "type": "", + "value": "0x90" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "143333:3:10", + "nodeType": "YulIdentifier", + "src": "143333:3:10" + }, + "nativeSrc": "143333:12:10", + "nodeType": "YulFunctionCall", + "src": "143333:12:10" + }, + { + "name": "n", + "nativeSrc": "143347:1:10", + "nodeType": "YulIdentifier", + "src": "143347:1:10" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "143292:10:10", + "nodeType": "YulIdentifier", + "src": "143292:10:10" + }, + "nativeSrc": "143292:57:10", + "nodeType": "YulFunctionCall", + "src": "143292:57:10" + } + ], + "functionName": { + "name": "pop", + "nativeSrc": "143288:3:10", + "nodeType": "YulIdentifier", + "src": "143288:3:10" + }, + "nativeSrc": "143288:62:10", + "nodeType": "YulFunctionCall", + "src": "143288:62:10" + }, + "nativeSrc": "143288:62:10", + "nodeType": "YulExpressionStatement", + "src": "143288:62:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "143374:1:10", + "nodeType": "YulIdentifier", + "src": "143374:1:10" + }, + { + "kind": "number", + "nativeSrc": "143377:4:10", + "nodeType": "YulLiteral", + "src": "143377:4:10", + "type": "", + "value": "0x70" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "143370:3:10", + "nodeType": "YulIdentifier", + "src": "143370:3:10" + }, + "nativeSrc": "143370:12:10", + "nodeType": "YulFunctionCall", + "src": "143370:12:10" + }, + { + "kind": "number", + "nativeSrc": "143384:66:10", + "nodeType": "YulLiteral", + "src": "143384:66:10", + "type": "", + "value": "0x3d50545afa361460525736515af43d600060013e6052573d6001fd5b3d6001f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "143363:6:10", + "nodeType": "YulIdentifier", + "src": "143363:6:10" + }, + "nativeSrc": "143363:88:10", + "nodeType": "YulFunctionCall", + "src": "143363:88:10" + }, + "nativeSrc": "143363:88:10", + "nodeType": "YulExpressionStatement", + "src": "143363:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "143475:1:10", + "nodeType": "YulIdentifier", + "src": "143475:1:10" + }, + { + "kind": "number", + "nativeSrc": "143478:4:10", + "nodeType": "YulLiteral", + "src": "143478:4:10", + "type": "", + "value": "0x50" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "143471:3:10", + "nodeType": "YulIdentifier", + "src": "143471:3:10" + }, + "nativeSrc": "143471:12:10", + "nodeType": "YulFunctionCall", + "src": "143471:12:10" + }, + { + "kind": "number", + "nativeSrc": "143485:66:10", + "nodeType": "YulLiteral", + "src": "143485:66:10", + "type": "", + "value": "0x527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b3513" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "143464:6:10", + "nodeType": "YulIdentifier", + "src": "143464:6:10" + }, + "nativeSrc": "143464:88:10", + "nodeType": "YulFunctionCall", + "src": "143464:88:10" + }, + "nativeSrc": "143464:88:10", + "nodeType": "YulExpressionStatement", + "src": "143464:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "143576:1:10", + "nodeType": "YulIdentifier", + "src": "143576:1:10" + }, + { + "kind": "number", + "nativeSrc": "143579:4:10", + "nodeType": "YulLiteral", + "src": "143579:4:10", + "type": "", + "value": "0x30" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "143572:3:10", + "nodeType": "YulIdentifier", + "src": "143572:3:10" + }, + "nativeSrc": "143572:12:10", + "nodeType": "YulFunctionCall", + "src": "143572:12:10" + }, + { + "kind": "number", + "nativeSrc": "143586:58:10", + "nodeType": "YulLiteral", + "src": "143586:58:10", + "type": "", + "value": "0x60195155f3363d3d373d3d363d602036600436635c60da1b60e01b36" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "143565:6:10", + "nodeType": "YulIdentifier", + "src": "143565:6:10" + }, + "nativeSrc": "143565:80:10", + "nodeType": "YulFunctionCall", + "src": "143565:80:10" + }, + "nativeSrc": "143565:80:10", + "nodeType": "YulExpressionStatement", + "src": "143565:80:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "143669:1:10", + "nodeType": "YulIdentifier", + "src": "143669:1:10" + }, + { + "kind": "number", + "nativeSrc": "143672:4:10", + "nodeType": "YulLiteral", + "src": "143672:4:10", + "type": "", + "value": "0x14" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "143665:3:10", + "nodeType": "YulIdentifier", + "src": "143665:3:10" + }, + "nativeSrc": "143665:12:10", + "nodeType": "YulFunctionCall", + "src": "143665:12:10" + }, + { + "name": "beacon", + "nativeSrc": "143679:6:10", + "nodeType": "YulIdentifier", + "src": "143679:6:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "143658:6:10", + "nodeType": "YulIdentifier", + "src": "143658:6:10" + }, + "nativeSrc": "143658:28:10", + "nodeType": "YulFunctionCall", + "src": "143658:28:10" + }, + "nativeSrc": "143658:28:10", + "nodeType": "YulExpressionStatement", + "src": "143658:28:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "143797:1:10", + "nodeType": "YulIdentifier", + "src": "143797:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "143803:1:10", + "nodeType": "YulIdentifier", + "src": "143803:1:10" + }, + { + "kind": "number", + "nativeSrc": "143806:6:10", + "nodeType": "YulLiteral", + "src": "143806:6:10", + "type": "", + "value": "0xffa8" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "143800:2:10", + "nodeType": "YulIdentifier", + "src": "143800:2:10" + }, + "nativeSrc": "143800:13:10", + "nodeType": "YulFunctionCall", + "src": "143800:13:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "143793:3:10", + "nodeType": "YulIdentifier", + "src": "143793:3:10" + }, + "nativeSrc": "143793:21:10", + "nodeType": "YulFunctionCall", + "src": "143793:21:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "143820:24:10", + "nodeType": "YulLiteral", + "src": "143820:24:10", + "type": "", + "value": "0xfe6100573d8160233d3973" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "143850:2:10", + "nodeType": "YulLiteral", + "src": "143850:2:10", + "type": "", + "value": "56" + }, + { + "name": "n", + "nativeSrc": "143854:1:10", + "nodeType": "YulIdentifier", + "src": "143854:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "143846:3:10", + "nodeType": "YulIdentifier", + "src": "143846:3:10" + }, + "nativeSrc": "143846:10:10", + "nodeType": "YulFunctionCall", + "src": "143846:10:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "143816:3:10", + "nodeType": "YulIdentifier", + "src": "143816:3:10" + }, + "nativeSrc": "143816:41:10", + "nodeType": "YulFunctionCall", + "src": "143816:41:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "143786:6:10", + "nodeType": "YulIdentifier", + "src": "143786:6:10" + }, + "nativeSrc": "143786:72:10", + "nodeType": "YulFunctionCall", + "src": "143786:72:10" + }, + "nativeSrc": "143786:72:10", + "nodeType": "YulExpressionStatement", + "src": "143786:72:10" + }, + { + "nativeSrc": "143871:60:10", + "nodeType": "YulAssignment", + "src": "143871:60:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "143891:5:10", + "nodeType": "YulIdentifier", + "src": "143891:5:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "143902:1:10", + "nodeType": "YulIdentifier", + "src": "143902:1:10" + }, + { + "kind": "number", + "nativeSrc": "143905:4:10", + "nodeType": "YulLiteral", + "src": "143905:4:10", + "type": "", + "value": "0x16" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "143898:3:10", + "nodeType": "YulIdentifier", + "src": "143898:3:10" + }, + "nativeSrc": "143898:12:10", + "nodeType": "YulFunctionCall", + "src": "143898:12:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "143916:1:10", + "nodeType": "YulIdentifier", + "src": "143916:1:10" + }, + { + "kind": "number", + "nativeSrc": "143919:4:10", + "nodeType": "YulLiteral", + "src": "143919:4:10", + "type": "", + "value": "0x7a" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "143912:3:10", + "nodeType": "YulIdentifier", + "src": "143912:3:10" + }, + "nativeSrc": "143912:12:10", + "nodeType": "YulFunctionCall", + "src": "143912:12:10" + }, + { + "name": "salt", + "nativeSrc": "143926:4:10", + "nodeType": "YulIdentifier", + "src": "143926:4:10" + } + ], + "functionName": { + "name": "create2", + "nativeSrc": "143883:7:10", + "nodeType": "YulIdentifier", + "src": "143883:7:10" + }, + "nativeSrc": "143883:48:10", + "nodeType": "YulFunctionCall", + "src": "143883:48:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "143871:8:10", + "nodeType": "YulIdentifier", + "src": "143871:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "143964:116:10", + "nodeType": "YulBlock", + "src": "143964:116:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "143989:4:10", + "nodeType": "YulLiteral", + "src": "143989:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "143995:10:10", + "nodeType": "YulLiteral", + "src": "143995:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "143982:6:10", + "nodeType": "YulIdentifier", + "src": "143982:6:10" + }, + "nativeSrc": "143982:24:10", + "nodeType": "YulFunctionCall", + "src": "143982:24:10" + }, + "nativeSrc": "143982:24:10", + "nodeType": "YulExpressionStatement", + "src": "143982:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "144055:4:10", + "nodeType": "YulLiteral", + "src": "144055:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "144061:4:10", + "nodeType": "YulLiteral", + "src": "144061:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "144048:6:10", + "nodeType": "YulIdentifier", + "src": "144048:6:10" + }, + "nativeSrc": "144048:18:10", + "nodeType": "YulFunctionCall", + "src": "144048:18:10" + }, + "nativeSrc": "144048:18:10", + "nodeType": "YulExpressionStatement", + "src": "144048:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "143954:8:10", + "nodeType": "YulIdentifier", + "src": "143954:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "143947:6:10", + "nodeType": "YulIdentifier", + "src": "143947:6:10" + }, + "nativeSrc": "143947:16:10", + "nodeType": "YulFunctionCall", + "src": "143947:16:10" + }, + "nativeSrc": "143944:136:10", + "nodeType": "YulIf", + "src": "143944:136:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4918, + "isOffset": false, + "isSlot": false, + "src": "143270:4:10", + "valueSize": 1 + }, + { + "declaration": 4918, + "isOffset": false, + "isSlot": false, + "src": "143317:4:10", + "valueSize": 1 + }, + { + "declaration": 4916, + "isOffset": false, + "isSlot": false, + "src": "143679:6:10", + "valueSize": 1 + }, + { + "declaration": 4923, + "isOffset": false, + "isSlot": false, + "src": "143871:8:10", + "valueSize": 1 + }, + { + "declaration": 4923, + "isOffset": false, + "isSlot": false, + "src": "143954:8:10", + "valueSize": 1 + }, + { + "declaration": 4920, + "isOffset": false, + "isSlot": false, + "src": "143926:4:10", + "valueSize": 1 + }, + { + "declaration": 4914, + "isOffset": false, + "isSlot": false, + "src": "143891:5:10", + "valueSize": 1 + } + ], + "id": 4925, + "nodeType": "InlineAssembly", + "src": "143165:925:10" + } + ] + }, + "documentation": { + "id": 4912, + "nodeType": "StructuredDocumentation", + "src": "142795:126:10", + "text": "@dev Deploys a deterministic ERC1967I beacon proxy with `args` and `salt`.\n Deposits `value` ETH during deployment." + }, + "id": 4927, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployDeterministicERC1967IBeaconProxy", + "nameLocation": "142935:38:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4921, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4914, + "mutability": "mutable", + "name": "value", + "nameLocation": "142991:5:10", + "nodeType": "VariableDeclaration", + "scope": 4927, + "src": "142983:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4913, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "142983:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4916, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "143014:6:10", + "nodeType": "VariableDeclaration", + "scope": 4927, + "src": "143006:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4915, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "143006:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4918, + "mutability": "mutable", + "name": "args", + "nameLocation": "143043:4:10", + "nodeType": "VariableDeclaration", + "scope": 4927, + "src": "143030:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4917, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "143030:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4920, + "mutability": "mutable", + "name": "salt", + "nameLocation": "143065:4:10", + "nodeType": "VariableDeclaration", + "scope": 4927, + "src": "143057:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4919, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "143057:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "142973:102:10" + }, + "returnParameters": { + "id": 4924, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4923, + "mutability": "mutable", + "name": "instance", + "nameLocation": "143102:8:10", + "nodeType": "VariableDeclaration", + "scope": 4927, + "src": "143094:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4922, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "143094:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "143093:18:10" + }, + "scope": 5104, + "src": "142926:1170:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4948, + "nodeType": "Block", + "src": "144503:85:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "30", + "id": 4942, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "144559:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 4943, + "name": "beacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4930, + "src": "144562:6:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4944, + "name": "args", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4932, + "src": "144570:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 4945, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4934, + "src": "144576:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4941, + "name": "createDeterministicERC1967IBeaconProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4793, + 4809, + 4949, + 4967 + ], + "referencedDeclaration": 4967, + "src": "144520:38:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$_t_bytes32_$returns$_t_bool_$_t_address_$", + "typeString": "function (uint256,address,bytes memory,bytes32) returns (bool,address)" + } + }, + "id": 4946, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "144520:61:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_address_$", + "typeString": "tuple(bool,address)" + } + }, + "functionReturnParameters": 4940, + "id": 4947, + "nodeType": "Return", + "src": "144513:68:10" + } + ] + }, + "documentation": { + "id": 4928, + "nodeType": "StructuredDocumentation", + "src": "144102:221:10", + "text": "@dev Creates a deterministic ERC1967I beacon proxy with `args` and `salt`.\n Note: This method is intended for use in ERC4337 factories,\n which are expected to NOT revert if the proxy is already deployed." + }, + "id": 4949, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createDeterministicERC1967IBeaconProxy", + "nameLocation": "144337:38:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4935, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4930, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "144384:6:10", + "nodeType": "VariableDeclaration", + "scope": 4949, + "src": "144376:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4929, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "144376:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4932, + "mutability": "mutable", + "name": "args", + "nameLocation": "144405:4:10", + "nodeType": "VariableDeclaration", + "scope": 4949, + "src": "144392:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4931, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "144392:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4934, + "mutability": "mutable", + "name": "salt", + "nameLocation": "144419:4:10", + "nodeType": "VariableDeclaration", + "scope": 4949, + "src": "144411:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4933, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "144411:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "144375:49:10" + }, + "returnParameters": { + "id": 4940, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4937, + "mutability": "mutable", + "name": "alreadyDeployed", + "nameLocation": "144464:15:10", + "nodeType": "VariableDeclaration", + "scope": 4949, + "src": "144459:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4936, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "144459:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4939, + "mutability": "mutable", + "name": "instance", + "nameLocation": "144489:8:10", + "nodeType": "VariableDeclaration", + "scope": 4949, + "src": "144481:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4938, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "144481:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "144458:40:10" + }, + "scope": 5104, + "src": "144328:260:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4966, + "nodeType": "Block", + "src": "145076:1828:10", + "statements": [ + { + "AST": { + "nativeSrc": "145138:1760:10", + "nodeType": "YulBlock", + "src": "145138:1760:10", + "statements": [ + { + "nativeSrc": "145152:20:10", + "nodeType": "YulVariableDeclaration", + "src": "145152:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "145167:4:10", + "nodeType": "YulLiteral", + "src": "145167:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "145161:5:10", + "nodeType": "YulIdentifier", + "src": "145161:5:10" + }, + "nativeSrc": "145161:11:10", + "nodeType": "YulFunctionCall", + "src": "145161:11:10" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "145156:1:10", + "nodeType": "YulTypedName", + "src": "145156:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "145185:20:10", + "nodeType": "YulVariableDeclaration", + "src": "145185:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "145200:4:10", + "nodeType": "YulIdentifier", + "src": "145200:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "145194:5:10", + "nodeType": "YulIdentifier", + "src": "145194:5:10" + }, + "nativeSrc": "145194:11:10", + "nodeType": "YulFunctionCall", + "src": "145194:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "145189:1:10", + "nodeType": "YulTypedName", + "src": "145189:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "145233:3:10", + "nodeType": "YulIdentifier", + "src": "145233:3:10" + }, + "nativeSrc": "145233:5:10", + "nodeType": "YulFunctionCall", + "src": "145233:5:10" + }, + { + "kind": "number", + "nativeSrc": "145240:1:10", + "nodeType": "YulLiteral", + "src": "145240:1:10", + "type": "", + "value": "4" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "145247:4:10", + "nodeType": "YulIdentifier", + "src": "145247:4:10" + }, + { + "kind": "number", + "nativeSrc": "145253:4:10", + "nodeType": "YulLiteral", + "src": "145253:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "145243:3:10", + "nodeType": "YulIdentifier", + "src": "145243:3:10" + }, + "nativeSrc": "145243:15:10", + "nodeType": "YulFunctionCall", + "src": "145243:15:10" + }, + { + "name": "n", + "nativeSrc": "145260:1:10", + "nodeType": "YulIdentifier", + "src": "145260:1:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "145267:1:10", + "nodeType": "YulIdentifier", + "src": "145267:1:10" + }, + { + "kind": "number", + "nativeSrc": "145270:4:10", + "nodeType": "YulLiteral", + "src": "145270:4:10", + "type": "", + "value": "0x90" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "145263:3:10", + "nodeType": "YulIdentifier", + "src": "145263:3:10" + }, + "nativeSrc": "145263:12:10", + "nodeType": "YulFunctionCall", + "src": "145263:12:10" + }, + { + "name": "n", + "nativeSrc": "145277:1:10", + "nodeType": "YulIdentifier", + "src": "145277:1:10" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "145222:10:10", + "nodeType": "YulIdentifier", + "src": "145222:10:10" + }, + "nativeSrc": "145222:57:10", + "nodeType": "YulFunctionCall", + "src": "145222:57:10" + } + ], + "functionName": { + "name": "pop", + "nativeSrc": "145218:3:10", + "nodeType": "YulIdentifier", + "src": "145218:3:10" + }, + "nativeSrc": "145218:62:10", + "nodeType": "YulFunctionCall", + "src": "145218:62:10" + }, + "nativeSrc": "145218:62:10", + "nodeType": "YulExpressionStatement", + "src": "145218:62:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "145304:1:10", + "nodeType": "YulIdentifier", + "src": "145304:1:10" + }, + { + "kind": "number", + "nativeSrc": "145307:4:10", + "nodeType": "YulLiteral", + "src": "145307:4:10", + "type": "", + "value": "0x70" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "145300:3:10", + "nodeType": "YulIdentifier", + "src": "145300:3:10" + }, + "nativeSrc": "145300:12:10", + "nodeType": "YulFunctionCall", + "src": "145300:12:10" + }, + { + "kind": "number", + "nativeSrc": "145314:66:10", + "nodeType": "YulLiteral", + "src": "145314:66:10", + "type": "", + "value": "0x3d50545afa361460525736515af43d600060013e6052573d6001fd5b3d6001f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "145293:6:10", + "nodeType": "YulIdentifier", + "src": "145293:6:10" + }, + "nativeSrc": "145293:88:10", + "nodeType": "YulFunctionCall", + "src": "145293:88:10" + }, + "nativeSrc": "145293:88:10", + "nodeType": "YulExpressionStatement", + "src": "145293:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "145405:1:10", + "nodeType": "YulIdentifier", + "src": "145405:1:10" + }, + { + "kind": "number", + "nativeSrc": "145408:4:10", + "nodeType": "YulLiteral", + "src": "145408:4:10", + "type": "", + "value": "0x50" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "145401:3:10", + "nodeType": "YulIdentifier", + "src": "145401:3:10" + }, + "nativeSrc": "145401:12:10", + "nodeType": "YulFunctionCall", + "src": "145401:12:10" + }, + { + "kind": "number", + "nativeSrc": "145415:66:10", + "nodeType": "YulLiteral", + "src": "145415:66:10", + "type": "", + "value": "0x527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b3513" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "145394:6:10", + "nodeType": "YulIdentifier", + "src": "145394:6:10" + }, + "nativeSrc": "145394:88:10", + "nodeType": "YulFunctionCall", + "src": "145394:88:10" + }, + "nativeSrc": "145394:88:10", + "nodeType": "YulExpressionStatement", + "src": "145394:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "145506:1:10", + "nodeType": "YulIdentifier", + "src": "145506:1:10" + }, + { + "kind": "number", + "nativeSrc": "145509:4:10", + "nodeType": "YulLiteral", + "src": "145509:4:10", + "type": "", + "value": "0x30" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "145502:3:10", + "nodeType": "YulIdentifier", + "src": "145502:3:10" + }, + "nativeSrc": "145502:12:10", + "nodeType": "YulFunctionCall", + "src": "145502:12:10" + }, + { + "kind": "number", + "nativeSrc": "145516:58:10", + "nodeType": "YulLiteral", + "src": "145516:58:10", + "type": "", + "value": "0x60195155f3363d3d373d3d363d602036600436635c60da1b60e01b36" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "145495:6:10", + "nodeType": "YulIdentifier", + "src": "145495:6:10" + }, + "nativeSrc": "145495:80:10", + "nodeType": "YulFunctionCall", + "src": "145495:80:10" + }, + "nativeSrc": "145495:80:10", + "nodeType": "YulExpressionStatement", + "src": "145495:80:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "145599:1:10", + "nodeType": "YulIdentifier", + "src": "145599:1:10" + }, + { + "kind": "number", + "nativeSrc": "145602:4:10", + "nodeType": "YulLiteral", + "src": "145602:4:10", + "type": "", + "value": "0x14" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "145595:3:10", + "nodeType": "YulIdentifier", + "src": "145595:3:10" + }, + "nativeSrc": "145595:12:10", + "nodeType": "YulFunctionCall", + "src": "145595:12:10" + }, + { + "name": "beacon", + "nativeSrc": "145609:6:10", + "nodeType": "YulIdentifier", + "src": "145609:6:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "145588:6:10", + "nodeType": "YulIdentifier", + "src": "145588:6:10" + }, + "nativeSrc": "145588:28:10", + "nodeType": "YulFunctionCall", + "src": "145588:28:10" + }, + "nativeSrc": "145588:28:10", + "nodeType": "YulExpressionStatement", + "src": "145588:28:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "145727:1:10", + "nodeType": "YulIdentifier", + "src": "145727:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "145733:1:10", + "nodeType": "YulIdentifier", + "src": "145733:1:10" + }, + { + "kind": "number", + "nativeSrc": "145736:6:10", + "nodeType": "YulLiteral", + "src": "145736:6:10", + "type": "", + "value": "0xffa8" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "145730:2:10", + "nodeType": "YulIdentifier", + "src": "145730:2:10" + }, + "nativeSrc": "145730:13:10", + "nodeType": "YulFunctionCall", + "src": "145730:13:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "145723:3:10", + "nodeType": "YulIdentifier", + "src": "145723:3:10" + }, + "nativeSrc": "145723:21:10", + "nodeType": "YulFunctionCall", + "src": "145723:21:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "145750:24:10", + "nodeType": "YulLiteral", + "src": "145750:24:10", + "type": "", + "value": "0xfe6100573d8160233d3973" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "145780:2:10", + "nodeType": "YulLiteral", + "src": "145780:2:10", + "type": "", + "value": "56" + }, + { + "name": "n", + "nativeSrc": "145784:1:10", + "nodeType": "YulIdentifier", + "src": "145784:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "145776:3:10", + "nodeType": "YulIdentifier", + "src": "145776:3:10" + }, + "nativeSrc": "145776:10:10", + "nodeType": "YulFunctionCall", + "src": "145776:10:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "145746:3:10", + "nodeType": "YulIdentifier", + "src": "145746:3:10" + }, + "nativeSrc": "145746:41:10", + "nodeType": "YulFunctionCall", + "src": "145746:41:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "145716:6:10", + "nodeType": "YulIdentifier", + "src": "145716:6:10" + }, + "nativeSrc": "145716:72:10", + "nodeType": "YulFunctionCall", + "src": "145716:72:10" + }, + "nativeSrc": "145716:72:10", + "nodeType": "YulExpressionStatement", + "src": "145716:72:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "145861:4:10", + "nodeType": "YulLiteral", + "src": "145861:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "145867:4:10", + "nodeType": "YulLiteral", + "src": "145867:4:10", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "145853:7:10", + "nodeType": "YulIdentifier", + "src": "145853:7:10" + }, + "nativeSrc": "145853:19:10", + "nodeType": "YulFunctionCall", + "src": "145853:19:10" + }, + "nativeSrc": "145853:19:10", + "nodeType": "YulExpressionStatement", + "src": "145853:19:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "145913:4:10", + "nodeType": "YulLiteral", + "src": "145913:4:10", + "type": "", + "value": "0x35" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "145933:1:10", + "nodeType": "YulIdentifier", + "src": "145933:1:10" + }, + { + "kind": "number", + "nativeSrc": "145936:4:10", + "nodeType": "YulLiteral", + "src": "145936:4:10", + "type": "", + "value": "0x16" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "145929:3:10", + "nodeType": "YulIdentifier", + "src": "145929:3:10" + }, + "nativeSrc": "145929:12:10", + "nodeType": "YulFunctionCall", + "src": "145929:12:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "145947:1:10", + "nodeType": "YulIdentifier", + "src": "145947:1:10" + }, + { + "kind": "number", + "nativeSrc": "145950:4:10", + "nodeType": "YulLiteral", + "src": "145950:4:10", + "type": "", + "value": "0x7a" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "145943:3:10", + "nodeType": "YulIdentifier", + "src": "145943:3:10" + }, + "nativeSrc": "145943:12:10", + "nodeType": "YulFunctionCall", + "src": "145943:12:10" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "145919:9:10", + "nodeType": "YulIdentifier", + "src": "145919:9:10" + }, + "nativeSrc": "145919:37:10", + "nodeType": "YulFunctionCall", + "src": "145919:37:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "145906:6:10", + "nodeType": "YulIdentifier", + "src": "145906:6:10" + }, + "nativeSrc": "145906:51:10", + "nodeType": "YulFunctionCall", + "src": "145906:51:10" + }, + "nativeSrc": "145906:51:10", + "nodeType": "YulExpressionStatement", + "src": "145906:51:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "145977:4:10", + "nodeType": "YulLiteral", + "src": "145977:4:10", + "type": "", + "value": "0x01" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "145987:2:10", + "nodeType": "YulLiteral", + "src": "145987:2:10", + "type": "", + "value": "96" + }, + { + "arguments": [], + "functionName": { + "name": "address", + "nativeSrc": "145991:7:10", + "nodeType": "YulIdentifier", + "src": "145991:7:10" + }, + "nativeSrc": "145991:9:10", + "nodeType": "YulFunctionCall", + "src": "145991:9:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "145983:3:10", + "nodeType": "YulIdentifier", + "src": "145983:3:10" + }, + "nativeSrc": "145983:18:10", + "nodeType": "YulFunctionCall", + "src": "145983:18:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "145970:6:10", + "nodeType": "YulIdentifier", + "src": "145970:6:10" + }, + "nativeSrc": "145970:32:10", + "nodeType": "YulFunctionCall", + "src": "145970:32:10" + }, + "nativeSrc": "145970:32:10", + "nodeType": "YulExpressionStatement", + "src": "145970:32:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "146022:4:10", + "nodeType": "YulLiteral", + "src": "146022:4:10", + "type": "", + "value": "0x15" + }, + { + "name": "salt", + "nativeSrc": "146028:4:10", + "nodeType": "YulIdentifier", + "src": "146028:4:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "146015:6:10", + "nodeType": "YulIdentifier", + "src": "146015:6:10" + }, + "nativeSrc": "146015:18:10", + "nodeType": "YulFunctionCall", + "src": "146015:18:10" + }, + "nativeSrc": "146015:18:10", + "nodeType": "YulExpressionStatement", + "src": "146015:18:10" + }, + { + "nativeSrc": "146046:33:10", + "nodeType": "YulAssignment", + "src": "146046:33:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "146068:4:10", + "nodeType": "YulLiteral", + "src": "146068:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "146074:4:10", + "nodeType": "YulLiteral", + "src": "146074:4:10", + "type": "", + "value": "0x55" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "146058:9:10", + "nodeType": "YulIdentifier", + "src": "146058:9:10" + }, + "nativeSrc": "146058:21:10", + "nodeType": "YulFunctionCall", + "src": "146058:21:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "146046:8:10", + "nodeType": "YulIdentifier", + "src": "146046:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "146104:696:10", + "nodeType": "YulBlock", + "src": "146104:696:10", + "statements": [ + { + "body": { + "nativeSrc": "146155:307:10", + "nodeType": "YulBlock", + "src": "146155:307:10", + "statements": [ + { + "nativeSrc": "146177:60:10", + "nodeType": "YulAssignment", + "src": "146177:60:10", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "146197:5:10", + "nodeType": "YulIdentifier", + "src": "146197:5:10" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "146208:1:10", + "nodeType": "YulIdentifier", + "src": "146208:1:10" + }, + { + "kind": "number", + "nativeSrc": "146211:4:10", + "nodeType": "YulLiteral", + "src": "146211:4:10", + "type": "", + "value": "0x16" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "146204:3:10", + "nodeType": "YulIdentifier", + "src": "146204:3:10" + }, + "nativeSrc": "146204:12:10", + "nodeType": "YulFunctionCall", + "src": "146204:12:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "146222:1:10", + "nodeType": "YulIdentifier", + "src": "146222:1:10" + }, + { + "kind": "number", + "nativeSrc": "146225:4:10", + "nodeType": "YulLiteral", + "src": "146225:4:10", + "type": "", + "value": "0x7a" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "146218:3:10", + "nodeType": "YulIdentifier", + "src": "146218:3:10" + }, + "nativeSrc": "146218:12:10", + "nodeType": "YulFunctionCall", + "src": "146218:12:10" + }, + { + "name": "salt", + "nativeSrc": "146232:4:10", + "nodeType": "YulIdentifier", + "src": "146232:4:10" + } + ], + "functionName": { + "name": "create2", + "nativeSrc": "146189:7:10", + "nodeType": "YulIdentifier", + "src": "146189:7:10" + }, + "nativeSrc": "146189:48:10", + "nodeType": "YulFunctionCall", + "src": "146189:48:10" + }, + "variableNames": [ + { + "name": "instance", + "nativeSrc": "146177:8:10", + "nodeType": "YulIdentifier", + "src": "146177:8:10" + } + ] + }, + { + "body": { + "nativeSrc": "146278:140:10", + "nodeType": "YulBlock", + "src": "146278:140:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "146311:4:10", + "nodeType": "YulLiteral", + "src": "146311:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "146317:10:10", + "nodeType": "YulLiteral", + "src": "146317:10:10", + "type": "", + "value": "0x30116425" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "146304:6:10", + "nodeType": "YulIdentifier", + "src": "146304:6:10" + }, + "nativeSrc": "146304:24:10", + "nodeType": "YulFunctionCall", + "src": "146304:24:10" + }, + "nativeSrc": "146304:24:10", + "nodeType": "YulExpressionStatement", + "src": "146304:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "146385:4:10", + "nodeType": "YulLiteral", + "src": "146385:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "146391:4:10", + "nodeType": "YulLiteral", + "src": "146391:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "146378:6:10", + "nodeType": "YulIdentifier", + "src": "146378:6:10" + }, + "nativeSrc": "146378:18:10", + "nodeType": "YulFunctionCall", + "src": "146378:18:10" + }, + "nativeSrc": "146378:18:10", + "nodeType": "YulExpressionStatement", + "src": "146378:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "146268:8:10", + "nodeType": "YulIdentifier", + "src": "146268:8:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "146261:6:10", + "nodeType": "YulIdentifier", + "src": "146261:6:10" + }, + "nativeSrc": "146261:16:10", + "nodeType": "YulFunctionCall", + "src": "146261:16:10" + }, + "nativeSrc": "146258:160:10", + "nodeType": "YulIf", + "src": "146258:160:10" + }, + { + "nativeSrc": "146439:5:10", + "nodeType": "YulBreak", + "src": "146439:5:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "146144:8:10", + "nodeType": "YulIdentifier", + "src": "146144:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "146132:11:10", + "nodeType": "YulIdentifier", + "src": "146132:11:10" + }, + "nativeSrc": "146132:21:10", + "nodeType": "YulFunctionCall", + "src": "146132:21:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "146125:6:10", + "nodeType": "YulIdentifier", + "src": "146125:6:10" + }, + "nativeSrc": "146125:29:10", + "nodeType": "YulFunctionCall", + "src": "146125:29:10" + }, + "nativeSrc": "146122:340:10", + "nodeType": "YulIf", + "src": "146122:340:10" + }, + { + "nativeSrc": "146479:20:10", + "nodeType": "YulAssignment", + "src": "146479:20:10", + "value": { + "kind": "number", + "nativeSrc": "146498:1:10", + "nodeType": "YulLiteral", + "src": "146498:1:10", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "alreadyDeployed", + "nativeSrc": "146479:15:10", + "nodeType": "YulIdentifier", + "src": "146479:15:10" + } + ] + }, + { + "body": { + "nativeSrc": "146533:9:10", + "nodeType": "YulBlock", + "src": "146533:9:10", + "statements": [ + { + "nativeSrc": "146535:5:10", + "nodeType": "YulBreak", + "src": "146535:5:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nativeSrc": "146526:5:10", + "nodeType": "YulIdentifier", + "src": "146526:5:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "146519:6:10", + "nodeType": "YulIdentifier", + "src": "146519:6:10" + }, + "nativeSrc": "146519:13:10", + "nodeType": "YulFunctionCall", + "src": "146519:13:10" + }, + "nativeSrc": "146516:26:10", + "nodeType": "YulIf", + "src": "146516:26:10" + }, + { + "body": { + "nativeSrc": "146635:129:10", + "nodeType": "YulBlock", + "src": "146635:129:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "146664:4:10", + "nodeType": "YulLiteral", + "src": "146664:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "146670:10:10", + "nodeType": "YulLiteral", + "src": "146670:10:10", + "type": "", + "value": "0xb12d13eb" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "146657:6:10", + "nodeType": "YulIdentifier", + "src": "146657:6:10" + }, + "nativeSrc": "146657:24:10", + "nodeType": "YulFunctionCall", + "src": "146657:24:10" + }, + "nativeSrc": "146657:24:10", + "nodeType": "YulExpressionStatement", + "src": "146657:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "146735:4:10", + "nodeType": "YulLiteral", + "src": "146735:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "146741:4:10", + "nodeType": "YulLiteral", + "src": "146741:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "146728:6:10", + "nodeType": "YulIdentifier", + "src": "146728:6:10" + }, + "nativeSrc": "146728:18:10", + "nodeType": "YulFunctionCall", + "src": "146728:18:10" + }, + "nativeSrc": "146728:18:10", + "nodeType": "YulExpressionStatement", + "src": "146728:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "146574:3:10", + "nodeType": "YulIdentifier", + "src": "146574:3:10" + }, + "nativeSrc": "146574:5:10", + "nodeType": "YulFunctionCall", + "src": "146574:5:10" + }, + { + "name": "instance", + "nativeSrc": "146581:8:10", + "nodeType": "YulIdentifier", + "src": "146581:8:10" + }, + { + "name": "value", + "nativeSrc": "146591:5:10", + "nodeType": "YulIdentifier", + "src": "146591:5:10" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "146598:8:10", + "nodeType": "YulIdentifier", + "src": "146598:8:10" + }, + "nativeSrc": "146598:10:10", + "nodeType": "YulFunctionCall", + "src": "146598:10:10" + }, + { + "kind": "number", + "nativeSrc": "146610:4:10", + "nodeType": "YulLiteral", + "src": "146610:4:10", + "type": "", + "value": "0x00" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "146616:8:10", + "nodeType": "YulIdentifier", + "src": "146616:8:10" + }, + "nativeSrc": "146616:10:10", + "nodeType": "YulFunctionCall", + "src": "146616:10:10" + }, + { + "kind": "number", + "nativeSrc": "146628:4:10", + "nodeType": "YulLiteral", + "src": "146628:4:10", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "call", + "nativeSrc": "146569:4:10", + "nodeType": "YulIdentifier", + "src": "146569:4:10" + }, + "nativeSrc": "146569:64:10", + "nodeType": "YulFunctionCall", + "src": "146569:64:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "146562:6:10", + "nodeType": "YulIdentifier", + "src": "146562:6:10" + }, + "nativeSrc": "146562:72:10", + "nodeType": "YulFunctionCall", + "src": "146562:72:10" + }, + "nativeSrc": "146559:205:10", + "nodeType": "YulIf", + "src": "146559:205:10" + }, + { + "nativeSrc": "146781:5:10", + "nodeType": "YulBreak", + "src": "146781:5:10" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "146099:1:10", + "nodeType": "YulLiteral", + "src": "146099:1:10", + "type": "", + "value": "1" + }, + "nativeSrc": "146092:708:10", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "146101:2:10", + "nodeType": "YulBlock", + "src": "146101:2:10", + "statements": [] + }, + "pre": { + "nativeSrc": "146096:2:10", + "nodeType": "YulBlock", + "src": "146096:2:10", + "statements": [] + }, + "src": "146092:708:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "146820:4:10", + "nodeType": "YulLiteral", + "src": "146820:4:10", + "type": "", + "value": "0x35" + }, + { + "kind": "number", + "nativeSrc": "146826:1:10", + "nodeType": "YulLiteral", + "src": "146826:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "146813:6:10", + "nodeType": "YulIdentifier", + "src": "146813:6:10" + }, + "nativeSrc": "146813:15:10", + "nodeType": "YulFunctionCall", + "src": "146813:15:10" + }, + "nativeSrc": "146813:15:10", + "nodeType": "YulExpressionStatement", + "src": "146813:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4961, + "isOffset": false, + "isSlot": false, + "src": "146479:15:10", + "valueSize": 1 + }, + { + "declaration": 4956, + "isOffset": false, + "isSlot": false, + "src": "145200:4:10", + "valueSize": 1 + }, + { + "declaration": 4956, + "isOffset": false, + "isSlot": false, + "src": "145247:4:10", + "valueSize": 1 + }, + { + "declaration": 4954, + "isOffset": false, + "isSlot": false, + "src": "145609:6:10", + "valueSize": 1 + }, + { + "declaration": 4963, + "isOffset": false, + "isSlot": false, + "src": "146046:8:10", + "valueSize": 1 + }, + { + "declaration": 4963, + "isOffset": false, + "isSlot": false, + "src": "146144:8:10", + "valueSize": 1 + }, + { + "declaration": 4963, + "isOffset": false, + "isSlot": false, + "src": "146177:8:10", + "valueSize": 1 + }, + { + "declaration": 4963, + "isOffset": false, + "isSlot": false, + "src": "146268:8:10", + "valueSize": 1 + }, + { + "declaration": 4963, + "isOffset": false, + "isSlot": false, + "src": "146581:8:10", + "valueSize": 1 + }, + { + "declaration": 4958, + "isOffset": false, + "isSlot": false, + "src": "146028:4:10", + "valueSize": 1 + }, + { + "declaration": 4958, + "isOffset": false, + "isSlot": false, + "src": "146232:4:10", + "valueSize": 1 + }, + { + "declaration": 4952, + "isOffset": false, + "isSlot": false, + "src": "146197:5:10", + "valueSize": 1 + }, + { + "declaration": 4952, + "isOffset": false, + "isSlot": false, + "src": "146526:5:10", + "valueSize": 1 + }, + { + "declaration": 4952, + "isOffset": false, + "isSlot": false, + "src": "146591:5:10", + "valueSize": 1 + } + ], + "id": 4965, + "nodeType": "InlineAssembly", + "src": "145129:1769:10" + } + ] + }, + "documentation": { + "id": 4950, + "nodeType": "StructuredDocumentation", + "src": "144594:269:10", + "text": "@dev Creates a deterministic ERC1967I beacon proxy with `args` and `salt`.\n Deposits `value` ETH during deployment.\n Note: This method is intended for use in ERC4337 factories,\n which are expected to NOT revert if the proxy is already deployed." + }, + "id": 4967, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createDeterministicERC1967IBeaconProxy", + "nameLocation": "144877:38:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4959, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4952, + "mutability": "mutable", + "name": "value", + "nameLocation": "144933:5:10", + "nodeType": "VariableDeclaration", + "scope": 4967, + "src": "144925:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4951, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "144925:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4954, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "144956:6:10", + "nodeType": "VariableDeclaration", + "scope": 4967, + "src": "144948:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4953, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "144948:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4956, + "mutability": "mutable", + "name": "args", + "nameLocation": "144985:4:10", + "nodeType": "VariableDeclaration", + "scope": 4967, + "src": "144972:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4955, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "144972:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4958, + "mutability": "mutable", + "name": "salt", + "nameLocation": "145007:4:10", + "nodeType": "VariableDeclaration", + "scope": 4967, + "src": "144999:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4957, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "144999:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "144915:102:10" + }, + "returnParameters": { + "id": 4964, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4961, + "mutability": "mutable", + "name": "alreadyDeployed", + "nameLocation": "145041:15:10", + "nodeType": "VariableDeclaration", + "scope": 4967, + "src": "145036:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4960, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "145036:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4963, + "mutability": "mutable", + "name": "instance", + "nameLocation": "145066:8:10", + "nodeType": "VariableDeclaration", + "scope": 4967, + "src": "145058:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4962, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "145058:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "145035:40:10" + }, + "scope": 5104, + "src": "144868:2036:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4978, + "nodeType": "Block", + "src": "147136:1039:10", + "statements": [ + { + "AST": { + "nativeSrc": "147198:971:10", + "nodeType": "YulBlock", + "src": "147198:971:10", + "statements": [ + { + "nativeSrc": "147212:16:10", + "nodeType": "YulAssignment", + "src": "147212:16:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "147223:4:10", + "nodeType": "YulLiteral", + "src": "147223:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "147217:5:10", + "nodeType": "YulIdentifier", + "src": "147217:5:10" + }, + "nativeSrc": "147217:11:10", + "nodeType": "YulFunctionCall", + "src": "147217:11:10" + }, + "variableNames": [ + { + "name": "c", + "nativeSrc": "147212:1:10", + "nodeType": "YulIdentifier", + "src": "147212:1:10" + } + ] + }, + { + "nativeSrc": "147241:20:10", + "nodeType": "YulVariableDeclaration", + "src": "147241:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "147256:4:10", + "nodeType": "YulIdentifier", + "src": "147256:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "147250:5:10", + "nodeType": "YulIdentifier", + "src": "147250:5:10" + }, + "nativeSrc": "147250:11:10", + "nodeType": "YulFunctionCall", + "src": "147250:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "147245:1:10", + "nodeType": "YulTypedName", + "src": "147245:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "147376:14:10", + "nodeType": "YulIdentifier", + "src": "147376:14:10" + }, + "nativeSrc": "147376:16:10", + "nodeType": "YulFunctionCall", + "src": "147376:16:10" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "147394:14:10", + "nodeType": "YulIdentifier", + "src": "147394:14:10" + }, + "nativeSrc": "147394:16:10", + "nodeType": "YulFunctionCall", + "src": "147394:16:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "147415:1:10", + "nodeType": "YulIdentifier", + "src": "147415:1:10" + }, + { + "kind": "number", + "nativeSrc": "147418:6:10", + "nodeType": "YulLiteral", + "src": "147418:6:10", + "type": "", + "value": "0xffa8" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "147412:2:10", + "nodeType": "YulIdentifier", + "src": "147412:2:10" + }, + "nativeSrc": "147412:13:10", + "nodeType": "YulFunctionCall", + "src": "147412:13:10" + } + ], + "functionName": { + "name": "returndatacopy", + "nativeSrc": "147361:14:10", + "nodeType": "YulIdentifier", + "src": "147361:14:10" + }, + "nativeSrc": "147361:65:10", + "nodeType": "YulFunctionCall", + "src": "147361:65:10" + }, + "nativeSrc": "147361:65:10", + "nodeType": "YulExpressionStatement", + "src": "147361:65:10" + }, + { + "body": { + "nativeSrc": "147489:92:10", + "nodeType": "YulBlock", + "src": "147489:92:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "147522:1:10", + "nodeType": "YulIdentifier", + "src": "147522:1:10" + }, + { + "kind": "number", + "nativeSrc": "147525:4:10", + "nodeType": "YulLiteral", + "src": "147525:4:10", + "type": "", + "value": "0x9a" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "147518:3:10", + "nodeType": "YulIdentifier", + "src": "147518:3:10" + }, + "nativeSrc": "147518:12:10", + "nodeType": "YulFunctionCall", + "src": "147518:12:10" + }, + { + "name": "i", + "nativeSrc": "147532:1:10", + "nodeType": "YulIdentifier", + "src": "147532:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "147514:3:10", + "nodeType": "YulIdentifier", + "src": "147514:3:10" + }, + "nativeSrc": "147514:20:10", + "nodeType": "YulFunctionCall", + "src": "147514:20:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "147550:4:10", + "nodeType": "YulIdentifier", + "src": "147550:4:10" + }, + { + "kind": "number", + "nativeSrc": "147556:4:10", + "nodeType": "YulLiteral", + "src": "147556:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "147546:3:10", + "nodeType": "YulIdentifier", + "src": "147546:3:10" + }, + "nativeSrc": "147546:15:10", + "nodeType": "YulFunctionCall", + "src": "147546:15:10" + }, + { + "name": "i", + "nativeSrc": "147563:1:10", + "nodeType": "YulIdentifier", + "src": "147563:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "147542:3:10", + "nodeType": "YulIdentifier", + "src": "147542:3:10" + }, + "nativeSrc": "147542:23:10", + "nodeType": "YulFunctionCall", + "src": "147542:23:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "147536:5:10", + "nodeType": "YulIdentifier", + "src": "147536:5:10" + }, + "nativeSrc": "147536:30:10", + "nodeType": "YulFunctionCall", + "src": "147536:30:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "147507:6:10", + "nodeType": "YulIdentifier", + "src": "147507:6:10" + }, + "nativeSrc": "147507:60:10", + "nodeType": "YulFunctionCall", + "src": "147507:60:10" + }, + "nativeSrc": "147507:60:10", + "nodeType": "YulExpressionStatement", + "src": "147507:60:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "147461:1:10", + "nodeType": "YulIdentifier", + "src": "147461:1:10" + }, + { + "name": "n", + "nativeSrc": "147464:1:10", + "nodeType": "YulIdentifier", + "src": "147464:1:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "147458:2:10", + "nodeType": "YulIdentifier", + "src": "147458:2:10" + }, + "nativeSrc": "147458:8:10", + "nodeType": "YulFunctionCall", + "src": "147458:8:10" + }, + "nativeSrc": "147439:142:10", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "147467:21:10", + "nodeType": "YulBlock", + "src": "147467:21:10", + "statements": [ + { + "nativeSrc": "147469:17:10", + "nodeType": "YulAssignment", + "src": "147469:17:10", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "147478:1:10", + "nodeType": "YulIdentifier", + "src": "147478:1:10" + }, + { + "kind": "number", + "nativeSrc": "147481:4:10", + "nodeType": "YulLiteral", + "src": "147481:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "147474:3:10", + "nodeType": "YulIdentifier", + "src": "147474:3:10" + }, + "nativeSrc": "147474:12:10", + "nodeType": "YulFunctionCall", + "src": "147474:12:10" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "147469:1:10", + "nodeType": "YulIdentifier", + "src": "147469:1:10" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "147443:14:10", + "nodeType": "YulBlock", + "src": "147443:14:10", + "statements": [ + { + "nativeSrc": "147445:10:10", + "nodeType": "YulVariableDeclaration", + "src": "147445:10:10", + "value": { + "kind": "number", + "nativeSrc": "147454:1:10", + "nodeType": "YulLiteral", + "src": "147454:1:10", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "147449:1:10", + "nodeType": "YulTypedName", + "src": "147449:1:10", + "type": "" + } + ] + } + ] + }, + "src": "147439:142:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "147605:1:10", + "nodeType": "YulIdentifier", + "src": "147605:1:10" + }, + { + "kind": "number", + "nativeSrc": "147608:4:10", + "nodeType": "YulLiteral", + "src": "147608:4:10", + "type": "", + "value": "0x7a" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "147601:3:10", + "nodeType": "YulIdentifier", + "src": "147601:3:10" + }, + "nativeSrc": "147601:12:10", + "nodeType": "YulFunctionCall", + "src": "147601:12:10" + }, + { + "kind": "number", + "nativeSrc": "147615:66:10", + "nodeType": "YulLiteral", + "src": "147615:66:10", + "type": "", + "value": "0x3d50545afa361460525736515af43d600060013e6052573d6001fd5b3d6001f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "147594:6:10", + "nodeType": "YulIdentifier", + "src": "147594:6:10" + }, + "nativeSrc": "147594:88:10", + "nodeType": "YulFunctionCall", + "src": "147594:88:10" + }, + "nativeSrc": "147594:88:10", + "nodeType": "YulExpressionStatement", + "src": "147594:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "147706:1:10", + "nodeType": "YulIdentifier", + "src": "147706:1:10" + }, + { + "kind": "number", + "nativeSrc": "147709:4:10", + "nodeType": "YulLiteral", + "src": "147709:4:10", + "type": "", + "value": "0x5a" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "147702:3:10", + "nodeType": "YulIdentifier", + "src": "147702:3:10" + }, + "nativeSrc": "147702:12:10", + "nodeType": "YulFunctionCall", + "src": "147702:12:10" + }, + { + "kind": "number", + "nativeSrc": "147716:66:10", + "nodeType": "YulLiteral", + "src": "147716:66:10", + "type": "", + "value": "0x527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b3513" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "147695:6:10", + "nodeType": "YulIdentifier", + "src": "147695:6:10" + }, + "nativeSrc": "147695:88:10", + "nodeType": "YulFunctionCall", + "src": "147695:88:10" + }, + "nativeSrc": "147695:88:10", + "nodeType": "YulExpressionStatement", + "src": "147695:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "147807:1:10", + "nodeType": "YulIdentifier", + "src": "147807:1:10" + }, + { + "kind": "number", + "nativeSrc": "147810:4:10", + "nodeType": "YulLiteral", + "src": "147810:4:10", + "type": "", + "value": "0x3a" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "147803:3:10", + "nodeType": "YulIdentifier", + "src": "147803:3:10" + }, + "nativeSrc": "147803:12:10", + "nodeType": "YulFunctionCall", + "src": "147803:12:10" + }, + { + "kind": "number", + "nativeSrc": "147817:58:10", + "nodeType": "YulLiteral", + "src": "147817:58:10", + "type": "", + "value": "0x60195155f3363d3d373d3d363d602036600436635c60da1b60e01b36" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "147796:6:10", + "nodeType": "YulIdentifier", + "src": "147796:6:10" + }, + "nativeSrc": "147796:80:10", + "nodeType": "YulFunctionCall", + "src": "147796:80:10" + }, + "nativeSrc": "147796:80:10", + "nodeType": "YulExpressionStatement", + "src": "147796:80:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "147900:1:10", + "nodeType": "YulIdentifier", + "src": "147900:1:10" + }, + { + "kind": "number", + "nativeSrc": "147903:4:10", + "nodeType": "YulLiteral", + "src": "147903:4:10", + "type": "", + "value": "0x1e" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "147896:3:10", + "nodeType": "YulIdentifier", + "src": "147896:3:10" + }, + "nativeSrc": "147896:12:10", + "nodeType": "YulFunctionCall", + "src": "147896:12:10" + }, + { + "name": "beacon", + "nativeSrc": "147910:6:10", + "nodeType": "YulIdentifier", + "src": "147910:6:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "147889:6:10", + "nodeType": "YulIdentifier", + "src": "147889:6:10" + }, + "nativeSrc": "147889:28:10", + "nodeType": "YulFunctionCall", + "src": "147889:28:10" + }, + "nativeSrc": "147889:28:10", + "nodeType": "YulExpressionStatement", + "src": "147889:28:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "147941:1:10", + "nodeType": "YulIdentifier", + "src": "147941:1:10" + }, + { + "kind": "number", + "nativeSrc": "147944:4:10", + "nodeType": "YulLiteral", + "src": "147944:4:10", + "type": "", + "value": "0x0a" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "147937:3:10", + "nodeType": "YulIdentifier", + "src": "147937:3:10" + }, + "nativeSrc": "147937:12:10", + "nodeType": "YulFunctionCall", + "src": "147937:12:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "147955:22:10", + "nodeType": "YulLiteral", + "src": "147955:22:10", + "type": "", + "value": "0x6100573d8160233d3973" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "147983:2:10", + "nodeType": "YulLiteral", + "src": "147983:2:10", + "type": "", + "value": "56" + }, + { + "name": "n", + "nativeSrc": "147987:1:10", + "nodeType": "YulIdentifier", + "src": "147987:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "147979:3:10", + "nodeType": "YulIdentifier", + "src": "147979:3:10" + }, + "nativeSrc": "147979:10:10", + "nodeType": "YulFunctionCall", + "src": "147979:10:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "147951:3:10", + "nodeType": "YulIdentifier", + "src": "147951:3:10" + }, + "nativeSrc": "147951:39:10", + "nodeType": "YulFunctionCall", + "src": "147951:39:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "147930:6:10", + "nodeType": "YulIdentifier", + "src": "147930:6:10" + }, + "nativeSrc": "147930:61:10", + "nodeType": "YulFunctionCall", + "src": "147930:61:10" + }, + "nativeSrc": "147930:61:10", + "nodeType": "YulExpressionStatement", + "src": "147930:61:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "148015:1:10", + "nodeType": "YulIdentifier", + "src": "148015:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "148022:1:10", + "nodeType": "YulIdentifier", + "src": "148022:1:10" + }, + { + "kind": "number", + "nativeSrc": "148025:4:10", + "nodeType": "YulLiteral", + "src": "148025:4:10", + "type": "", + "value": "0x9a" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "148018:3:10", + "nodeType": "YulIdentifier", + "src": "148018:3:10" + }, + "nativeSrc": "148018:12:10", + "nodeType": "YulFunctionCall", + "src": "148018:12:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "148011:3:10", + "nodeType": "YulIdentifier", + "src": "148011:3:10" + }, + "nativeSrc": "148011:20:10", + "nodeType": "YulFunctionCall", + "src": "148011:20:10" + }, + { + "kind": "number", + "nativeSrc": "148033:1:10", + "nodeType": "YulLiteral", + "src": "148033:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "148004:6:10", + "nodeType": "YulIdentifier", + "src": "148004:6:10" + }, + "nativeSrc": "148004:31:10", + "nodeType": "YulFunctionCall", + "src": "148004:31:10" + }, + "nativeSrc": "148004:31:10", + "nodeType": "YulExpressionStatement", + "src": "148004:31:10" + }, + { + "expression": { + "arguments": [ + { + "name": "c", + "nativeSrc": "148055:1:10", + "nodeType": "YulIdentifier", + "src": "148055:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "148062:1:10", + "nodeType": "YulIdentifier", + "src": "148062:1:10" + }, + { + "kind": "number", + "nativeSrc": "148065:4:10", + "nodeType": "YulLiteral", + "src": "148065:4:10", + "type": "", + "value": "0x7a" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "148058:3:10", + "nodeType": "YulIdentifier", + "src": "148058:3:10" + }, + "nativeSrc": "148058:12:10", + "nodeType": "YulFunctionCall", + "src": "148058:12:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "148048:6:10", + "nodeType": "YulIdentifier", + "src": "148048:6:10" + }, + "nativeSrc": "148048:23:10", + "nodeType": "YulFunctionCall", + "src": "148048:23:10" + }, + "nativeSrc": "148048:23:10", + "nodeType": "YulExpressionStatement", + "src": "148048:23:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "148112:4:10", + "nodeType": "YulLiteral", + "src": "148112:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "c", + "nativeSrc": "148122:1:10", + "nodeType": "YulIdentifier", + "src": "148122:1:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "148129:1:10", + "nodeType": "YulIdentifier", + "src": "148129:1:10" + }, + { + "kind": "number", + "nativeSrc": "148132:4:10", + "nodeType": "YulLiteral", + "src": "148132:4:10", + "type": "", + "value": "0xba" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "148125:3:10", + "nodeType": "YulIdentifier", + "src": "148125:3:10" + }, + "nativeSrc": "148125:12:10", + "nodeType": "YulFunctionCall", + "src": "148125:12:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "148118:3:10", + "nodeType": "YulIdentifier", + "src": "148118:3:10" + }, + "nativeSrc": "148118:20:10", + "nodeType": "YulFunctionCall", + "src": "148118:20:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "148105:6:10", + "nodeType": "YulIdentifier", + "src": "148105:6:10" + }, + "nativeSrc": "148105:34:10", + "nodeType": "YulFunctionCall", + "src": "148105:34:10" + }, + "nativeSrc": "148105:34:10", + "nodeType": "YulExpressionStatement", + "src": "148105:34:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4972, + "isOffset": false, + "isSlot": false, + "src": "147256:4:10", + "valueSize": 1 + }, + { + "declaration": 4972, + "isOffset": false, + "isSlot": false, + "src": "147550:4:10", + "valueSize": 1 + }, + { + "declaration": 4970, + "isOffset": false, + "isSlot": false, + "src": "147910:6:10", + "valueSize": 1 + }, + { + "declaration": 4975, + "isOffset": false, + "isSlot": false, + "src": "147212:1:10", + "valueSize": 1 + }, + { + "declaration": 4975, + "isOffset": false, + "isSlot": false, + "src": "147522:1:10", + "valueSize": 1 + }, + { + "declaration": 4975, + "isOffset": false, + "isSlot": false, + "src": "147605:1:10", + "valueSize": 1 + }, + { + "declaration": 4975, + "isOffset": false, + "isSlot": false, + "src": "147706:1:10", + "valueSize": 1 + }, + { + "declaration": 4975, + "isOffset": false, + "isSlot": false, + "src": "147807:1:10", + "valueSize": 1 + }, + { + "declaration": 4975, + "isOffset": false, + "isSlot": false, + "src": "147900:1:10", + "valueSize": 1 + }, + { + "declaration": 4975, + "isOffset": false, + "isSlot": false, + "src": "147941:1:10", + "valueSize": 1 + }, + { + "declaration": 4975, + "isOffset": false, + "isSlot": false, + "src": "148015:1:10", + "valueSize": 1 + }, + { + "declaration": 4975, + "isOffset": false, + "isSlot": false, + "src": "148055:1:10", + "valueSize": 1 + }, + { + "declaration": 4975, + "isOffset": false, + "isSlot": false, + "src": "148122:1:10", + "valueSize": 1 + } + ], + "id": 4977, + "nodeType": "InlineAssembly", + "src": "147189:980:10" + } + ] + }, + "documentation": { + "id": 4968, + "nodeType": "StructuredDocumentation", + "src": "146910:82:10", + "text": "@dev Returns the initialization code of the ERC1967I beacon proxy with `args`." + }, + "id": 4979, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeERC1967IBeaconProxy", + "nameLocation": "147006:27:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4973, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4970, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "147042:6:10", + "nodeType": "VariableDeclaration", + "scope": 4979, + "src": "147034:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4969, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "147034:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4972, + "mutability": "mutable", + "name": "args", + "nameLocation": "147063:4:10", + "nodeType": "VariableDeclaration", + "scope": 4979, + "src": "147050:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4971, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "147050:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "147033:35:10" + }, + "returnParameters": { + "id": 4976, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4975, + "mutability": "mutable", + "name": "c", + "nameLocation": "147129:1:10", + "nodeType": "VariableDeclaration", + "scope": 4979, + "src": "147116:14:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4974, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "147116:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "147115:16:10" + }, + "scope": 5104, + "src": "146997:1178:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4990, + "nodeType": "Block", + "src": "148414:956:10", + "statements": [ + { + "AST": { + "nativeSrc": "148476:888:10", + "nodeType": "YulBlock", + "src": "148476:888:10", + "statements": [ + { + "nativeSrc": "148490:20:10", + "nodeType": "YulVariableDeclaration", + "src": "148490:20:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "148505:4:10", + "nodeType": "YulLiteral", + "src": "148505:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "148499:5:10", + "nodeType": "YulIdentifier", + "src": "148499:5:10" + }, + "nativeSrc": "148499:11:10", + "nodeType": "YulFunctionCall", + "src": "148499:11:10" + }, + "variables": [ + { + "name": "c", + "nativeSrc": "148494:1:10", + "nodeType": "YulTypedName", + "src": "148494:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "148557:20:10", + "nodeType": "YulVariableDeclaration", + "src": "148557:20:10", + "value": { + "arguments": [ + { + "name": "args", + "nativeSrc": "148572:4:10", + "nodeType": "YulIdentifier", + "src": "148572:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "148566:5:10", + "nodeType": "YulIdentifier", + "src": "148566:5:10" + }, + "nativeSrc": "148566:11:10", + "nodeType": "YulFunctionCall", + "src": "148566:11:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "148561:1:10", + "nodeType": "YulTypedName", + "src": "148561:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "148692:14:10", + "nodeType": "YulIdentifier", + "src": "148692:14:10" + }, + "nativeSrc": "148692:16:10", + "nodeType": "YulFunctionCall", + "src": "148692:16:10" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "148710:14:10", + "nodeType": "YulIdentifier", + "src": "148710:14:10" + }, + "nativeSrc": "148710:16:10", + "nodeType": "YulFunctionCall", + "src": "148710:16:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "148731:1:10", + "nodeType": "YulIdentifier", + "src": "148731:1:10" + }, + { + "kind": "number", + "nativeSrc": "148734:6:10", + "nodeType": "YulLiteral", + "src": "148734:6:10", + "type": "", + "value": "0xffa8" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "148728:2:10", + "nodeType": "YulIdentifier", + "src": "148728:2:10" + }, + "nativeSrc": "148728:13:10", + "nodeType": "YulFunctionCall", + "src": "148728:13:10" + } + ], + "functionName": { + "name": "returndatacopy", + "nativeSrc": "148677:14:10", + "nodeType": "YulIdentifier", + "src": "148677:14:10" + }, + "nativeSrc": "148677:65:10", + "nodeType": "YulFunctionCall", + "src": "148677:65:10" + }, + "nativeSrc": "148677:65:10", + "nodeType": "YulExpressionStatement", + "src": "148677:65:10" + }, + { + "body": { + "nativeSrc": "148805:92:10", + "nodeType": "YulBlock", + "src": "148805:92:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "148838:1:10", + "nodeType": "YulIdentifier", + "src": "148838:1:10" + }, + { + "kind": "number", + "nativeSrc": "148841:4:10", + "nodeType": "YulLiteral", + "src": "148841:4:10", + "type": "", + "value": "0x90" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "148834:3:10", + "nodeType": "YulIdentifier", + "src": "148834:3:10" + }, + "nativeSrc": "148834:12:10", + "nodeType": "YulFunctionCall", + "src": "148834:12:10" + }, + { + "name": "i", + "nativeSrc": "148848:1:10", + "nodeType": "YulIdentifier", + "src": "148848:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "148830:3:10", + "nodeType": "YulIdentifier", + "src": "148830:3:10" + }, + "nativeSrc": "148830:20:10", + "nodeType": "YulFunctionCall", + "src": "148830:20:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "148866:4:10", + "nodeType": "YulIdentifier", + "src": "148866:4:10" + }, + { + "kind": "number", + "nativeSrc": "148872:4:10", + "nodeType": "YulLiteral", + "src": "148872:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "148862:3:10", + "nodeType": "YulIdentifier", + "src": "148862:3:10" + }, + "nativeSrc": "148862:15:10", + "nodeType": "YulFunctionCall", + "src": "148862:15:10" + }, + { + "name": "i", + "nativeSrc": "148879:1:10", + "nodeType": "YulIdentifier", + "src": "148879:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "148858:3:10", + "nodeType": "YulIdentifier", + "src": "148858:3:10" + }, + "nativeSrc": "148858:23:10", + "nodeType": "YulFunctionCall", + "src": "148858:23:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "148852:5:10", + "nodeType": "YulIdentifier", + "src": "148852:5:10" + }, + "nativeSrc": "148852:30:10", + "nodeType": "YulFunctionCall", + "src": "148852:30:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "148823:6:10", + "nodeType": "YulIdentifier", + "src": "148823:6:10" + }, + "nativeSrc": "148823:60:10", + "nodeType": "YulFunctionCall", + "src": "148823:60:10" + }, + "nativeSrc": "148823:60:10", + "nodeType": "YulExpressionStatement", + "src": "148823:60:10" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "148777:1:10", + "nodeType": "YulIdentifier", + "src": "148777:1:10" + }, + { + "name": "n", + "nativeSrc": "148780:1:10", + "nodeType": "YulIdentifier", + "src": "148780:1:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "148774:2:10", + "nodeType": "YulIdentifier", + "src": "148774:2:10" + }, + "nativeSrc": "148774:8:10", + "nodeType": "YulFunctionCall", + "src": "148774:8:10" + }, + "nativeSrc": "148755:142:10", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "148783:21:10", + "nodeType": "YulBlock", + "src": "148783:21:10", + "statements": [ + { + "nativeSrc": "148785:17:10", + "nodeType": "YulAssignment", + "src": "148785:17:10", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "148794:1:10", + "nodeType": "YulIdentifier", + "src": "148794:1:10" + }, + { + "kind": "number", + "nativeSrc": "148797:4:10", + "nodeType": "YulLiteral", + "src": "148797:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "148790:3:10", + "nodeType": "YulIdentifier", + "src": "148790:3:10" + }, + "nativeSrc": "148790:12:10", + "nodeType": "YulFunctionCall", + "src": "148790:12:10" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "148785:1:10", + "nodeType": "YulIdentifier", + "src": "148785:1:10" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "148759:14:10", + "nodeType": "YulBlock", + "src": "148759:14:10", + "statements": [ + { + "nativeSrc": "148761:10:10", + "nodeType": "YulVariableDeclaration", + "src": "148761:10:10", + "value": { + "kind": "number", + "nativeSrc": "148770:1:10", + "nodeType": "YulLiteral", + "src": "148770:1:10", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "148765:1:10", + "nodeType": "YulTypedName", + "src": "148765:1:10", + "type": "" + } + ] + } + ] + }, + "src": "148755:142:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "148921:1:10", + "nodeType": "YulIdentifier", + "src": "148921:1:10" + }, + { + "kind": "number", + "nativeSrc": "148924:4:10", + "nodeType": "YulLiteral", + "src": "148924:4:10", + "type": "", + "value": "0x70" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "148917:3:10", + "nodeType": "YulIdentifier", + "src": "148917:3:10" + }, + "nativeSrc": "148917:12:10", + "nodeType": "YulFunctionCall", + "src": "148917:12:10" + }, + { + "kind": "number", + "nativeSrc": "148931:66:10", + "nodeType": "YulLiteral", + "src": "148931:66:10", + "type": "", + "value": "0x3d50545afa361460525736515af43d600060013e6052573d6001fd5b3d6001f3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "148910:6:10", + "nodeType": "YulIdentifier", + "src": "148910:6:10" + }, + "nativeSrc": "148910:88:10", + "nodeType": "YulFunctionCall", + "src": "148910:88:10" + }, + "nativeSrc": "148910:88:10", + "nodeType": "YulExpressionStatement", + "src": "148910:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "149022:1:10", + "nodeType": "YulIdentifier", + "src": "149022:1:10" + }, + { + "kind": "number", + "nativeSrc": "149025:4:10", + "nodeType": "YulLiteral", + "src": "149025:4:10", + "type": "", + "value": "0x50" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "149018:3:10", + "nodeType": "YulIdentifier", + "src": "149018:3:10" + }, + "nativeSrc": "149018:12:10", + "nodeType": "YulFunctionCall", + "src": "149018:12:10" + }, + { + "kind": "number", + "nativeSrc": "149032:66:10", + "nodeType": "YulLiteral", + "src": "149032:66:10", + "type": "", + "value": "0x527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b3513" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "149011:6:10", + "nodeType": "YulIdentifier", + "src": "149011:6:10" + }, + "nativeSrc": "149011:88:10", + "nodeType": "YulFunctionCall", + "src": "149011:88:10" + }, + "nativeSrc": "149011:88:10", + "nodeType": "YulExpressionStatement", + "src": "149011:88:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "149123:1:10", + "nodeType": "YulIdentifier", + "src": "149123:1:10" + }, + { + "kind": "number", + "nativeSrc": "149126:4:10", + "nodeType": "YulLiteral", + "src": "149126:4:10", + "type": "", + "value": "0x30" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "149119:3:10", + "nodeType": "YulIdentifier", + "src": "149119:3:10" + }, + "nativeSrc": "149119:12:10", + "nodeType": "YulFunctionCall", + "src": "149119:12:10" + }, + { + "kind": "number", + "nativeSrc": "149133:58:10", + "nodeType": "YulLiteral", + "src": "149133:58:10", + "type": "", + "value": "0x60195155f3363d3d373d3d363d602036600436635c60da1b60e01b36" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "149112:6:10", + "nodeType": "YulIdentifier", + "src": "149112:6:10" + }, + "nativeSrc": "149112:80:10", + "nodeType": "YulFunctionCall", + "src": "149112:80:10" + }, + "nativeSrc": "149112:80:10", + "nodeType": "YulExpressionStatement", + "src": "149112:80:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "149216:1:10", + "nodeType": "YulIdentifier", + "src": "149216:1:10" + }, + { + "kind": "number", + "nativeSrc": "149219:4:10", + "nodeType": "YulLiteral", + "src": "149219:4:10", + "type": "", + "value": "0x14" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "149212:3:10", + "nodeType": "YulIdentifier", + "src": "149212:3:10" + }, + "nativeSrc": "149212:12:10", + "nodeType": "YulFunctionCall", + "src": "149212:12:10" + }, + { + "name": "beacon", + "nativeSrc": "149226:6:10", + "nodeType": "YulIdentifier", + "src": "149226:6:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "149205:6:10", + "nodeType": "YulIdentifier", + "src": "149205:6:10" + }, + "nativeSrc": "149205:28:10", + "nodeType": "YulFunctionCall", + "src": "149205:28:10" + }, + "nativeSrc": "149205:28:10", + "nodeType": "YulExpressionStatement", + "src": "149205:28:10" + }, + { + "expression": { + "arguments": [ + { + "name": "c", + "nativeSrc": "149253:1:10", + "nodeType": "YulIdentifier", + "src": "149253:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "149260:22:10", + "nodeType": "YulLiteral", + "src": "149260:22:10", + "type": "", + "value": "0x6100573d8160233d3973" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "149288:2:10", + "nodeType": "YulLiteral", + "src": "149288:2:10", + "type": "", + "value": "56" + }, + { + "name": "n", + "nativeSrc": "149292:1:10", + "nodeType": "YulIdentifier", + "src": "149292:1:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "149284:3:10", + "nodeType": "YulIdentifier", + "src": "149284:3:10" + }, + "nativeSrc": "149284:10:10", + "nodeType": "YulFunctionCall", + "src": "149284:10:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "149256:3:10", + "nodeType": "YulIdentifier", + "src": "149256:3:10" + }, + "nativeSrc": "149256:39:10", + "nodeType": "YulFunctionCall", + "src": "149256:39:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "149246:6:10", + "nodeType": "YulIdentifier", + "src": "149246:6:10" + }, + "nativeSrc": "149246:50:10", + "nodeType": "YulFunctionCall", + "src": "149246:50:10" + }, + "nativeSrc": "149246:50:10", + "nodeType": "YulExpressionStatement", + "src": "149246:50:10" + }, + { + "nativeSrc": "149309:45:10", + "nodeType": "YulAssignment", + "src": "149309:45:10", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "149331:1:10", + "nodeType": "YulIdentifier", + "src": "149331:1:10" + }, + { + "kind": "number", + "nativeSrc": "149334:4:10", + "nodeType": "YulLiteral", + "src": "149334:4:10", + "type": "", + "value": "0x16" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "149327:3:10", + "nodeType": "YulIdentifier", + "src": "149327:3:10" + }, + "nativeSrc": "149327:12:10", + "nodeType": "YulFunctionCall", + "src": "149327:12:10" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "149345:1:10", + "nodeType": "YulIdentifier", + "src": "149345:1:10" + }, + { + "kind": "number", + "nativeSrc": "149348:4:10", + "nodeType": "YulLiteral", + "src": "149348:4:10", + "type": "", + "value": "0x7a" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "149341:3:10", + "nodeType": "YulIdentifier", + "src": "149341:3:10" + }, + "nativeSrc": "149341:12:10", + "nodeType": "YulFunctionCall", + "src": "149341:12:10" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "149317:9:10", + "nodeType": "YulIdentifier", + "src": "149317:9:10" + }, + "nativeSrc": "149317:37:10", + "nodeType": "YulFunctionCall", + "src": "149317:37:10" + }, + "variableNames": [ + { + "name": "hash", + "nativeSrc": "149309:4:10", + "nodeType": "YulIdentifier", + "src": "149309:4:10" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4984, + "isOffset": false, + "isSlot": false, + "src": "148572:4:10", + "valueSize": 1 + }, + { + "declaration": 4984, + "isOffset": false, + "isSlot": false, + "src": "148866:4:10", + "valueSize": 1 + }, + { + "declaration": 4982, + "isOffset": false, + "isSlot": false, + "src": "149226:6:10", + "valueSize": 1 + }, + { + "declaration": 4987, + "isOffset": false, + "isSlot": false, + "src": "149309:4:10", + "valueSize": 1 + } + ], + "id": 4989, + "nodeType": "InlineAssembly", + "src": "148467:897:10" + } + ] + }, + "documentation": { + "id": 4980, + "nodeType": "StructuredDocumentation", + "src": "148181:87:10", + "text": "@dev Returns the initialization code hash of the ERC1967I beacon proxy with `args`." + }, + "id": 4991, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeHashERC1967IBeaconProxy", + "nameLocation": "148282:31:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4985, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4982, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "148322:6:10", + "nodeType": "VariableDeclaration", + "scope": 4991, + "src": "148314:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4981, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "148314:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4984, + "mutability": "mutable", + "name": "args", + "nameLocation": "148343:4:10", + "nodeType": "VariableDeclaration", + "scope": 4991, + "src": "148330:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4983, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "148330:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "148313:35:10" + }, + "returnParameters": { + "id": 4988, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4987, + "mutability": "mutable", + "name": "hash", + "nameLocation": "148404:4:10", + "nodeType": "VariableDeclaration", + "scope": 4991, + "src": "148396:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4986, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "148396:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "148395:14:10" + }, + "scope": 5104, + "src": "148273:1097:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5020, + "nodeType": "Block", + "src": "149773:148:10", + "statements": [ + { + "assignments": [ + 5006 + ], + "declarations": [ + { + "constant": false, + "id": 5006, + "mutability": "mutable", + "name": "hash", + "nameLocation": "149791:4:10", + "nodeType": "VariableDeclaration", + "scope": 5020, + "src": "149783:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5005, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "149783:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 5011, + "initialValue": { + "arguments": [ + { + "id": 5008, + "name": "beacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4994, + "src": "149830:6:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5009, + "name": "args", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4996, + "src": "149838:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5007, + "name": "initCodeHashERC1967IBeaconProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4829, + 4991 + ], + "referencedDeclaration": 4991, + "src": "149798:31:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (address,bytes memory) pure returns (bytes32)" + } + }, + "id": 5010, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "149798:45:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "149783:60:10" + }, + { + "expression": { + "id": 5018, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5012, + "name": "predicted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5003, + "src": "149853:9:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 5014, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5006, + "src": "149893:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 5015, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4998, + "src": "149899:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 5016, + "name": "deployer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5000, + "src": "149905:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5013, + "name": "predictDeterministicAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3237, + 3510, + 5081 + ], + "referencedDeclaration": 5081, + "src": "149865:27:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_address_$", + "typeString": "function (bytes32,bytes32,address) pure returns (address)" + } + }, + "id": 5017, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "149865:49:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "149853:61:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5019, + "nodeType": "ExpressionStatement", + "src": "149853:61:10" + } + ] + }, + "documentation": { + "id": 4992, + "nodeType": "StructuredDocumentation", + "src": "149376:189:10", + "text": "@dev Returns the address of the ERC1967I beacon proxy, with `args` and salt` by `deployer`.\n Note: The returned result has dirty upper 96 bits. Please clean if used in assembly." + }, + "id": 5021, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "predictDeterministicAddressERC1967IBeaconProxy", + "nameLocation": "149579:46:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5001, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4994, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "149643:6:10", + "nodeType": "VariableDeclaration", + "scope": 5021, + "src": "149635:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4993, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "149635:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4996, + "mutability": "mutable", + "name": "args", + "nameLocation": "149672:4:10", + "nodeType": "VariableDeclaration", + "scope": 5021, + "src": "149659:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4995, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "149659:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4998, + "mutability": "mutable", + "name": "salt", + "nameLocation": "149694:4:10", + "nodeType": "VariableDeclaration", + "scope": 5021, + "src": "149686:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4997, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "149686:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5000, + "mutability": "mutable", + "name": "deployer", + "nameLocation": "149716:8:10", + "nodeType": "VariableDeclaration", + "scope": 5021, + "src": "149708:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4999, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "149708:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "149625:105:10" + }, + "returnParameters": { + "id": 5004, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5003, + "mutability": "mutable", + "name": "predicted", + "nameLocation": "149762:9:10", + "nodeType": "VariableDeclaration", + "scope": 5021, + "src": "149754:17:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5002, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "149754:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "149753:19:10" + }, + "scope": 5104, + "src": "149570:351:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5030, + "nodeType": "Block", + "src": "150137:371:10", + "statements": [ + { + "AST": { + "nativeSrc": "150199:303:10", + "nodeType": "YulBlock", + "src": "150199:303:10", + "statements": [ + { + "nativeSrc": "150213:19:10", + "nodeType": "YulAssignment", + "src": "150213:19:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "150227:4:10", + "nodeType": "YulLiteral", + "src": "150227:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "150221:5:10", + "nodeType": "YulIdentifier", + "src": "150221:5:10" + }, + "nativeSrc": "150221:11:10", + "nodeType": "YulFunctionCall", + "src": "150221:11:10" + }, + "variableNames": [ + { + "name": "args", + "nativeSrc": "150213:4:10", + "nodeType": "YulIdentifier", + "src": "150213:4:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "args", + "nativeSrc": "150252:4:10", + "nodeType": "YulIdentifier", + "src": "150252:4:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "150262:12:10", + "nodeType": "YulLiteral", + "src": "150262:12:10", + "type": "", + "value": "0xffffffffff" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "150292:8:10", + "nodeType": "YulIdentifier", + "src": "150292:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "150280:11:10", + "nodeType": "YulIdentifier", + "src": "150280:11:10" + }, + "nativeSrc": "150280:21:10", + "nodeType": "YulFunctionCall", + "src": "150280:21:10" + }, + { + "kind": "number", + "nativeSrc": "150303:4:10", + "nodeType": "YulLiteral", + "src": "150303:4:10", + "type": "", + "value": "0x57" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "150276:3:10", + "nodeType": "YulIdentifier", + "src": "150276:3:10" + }, + "nativeSrc": "150276:32:10", + "nodeType": "YulFunctionCall", + "src": "150276:32:10" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "150258:3:10", + "nodeType": "YulIdentifier", + "src": "150258:3:10" + }, + "nativeSrc": "150258:51:10", + "nodeType": "YulFunctionCall", + "src": "150258:51:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "150245:6:10", + "nodeType": "YulIdentifier", + "src": "150245:6:10" + }, + "nativeSrc": "150245:65:10", + "nodeType": "YulFunctionCall", + "src": "150245:65:10" + }, + "nativeSrc": "150245:65:10", + "nodeType": "YulExpressionStatement", + "src": "150245:65:10" + }, + { + "expression": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "150356:8:10", + "nodeType": "YulIdentifier", + "src": "150356:8:10" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "150370:4:10", + "nodeType": "YulIdentifier", + "src": "150370:4:10" + }, + { + "kind": "number", + "nativeSrc": "150376:4:10", + "nodeType": "YulLiteral", + "src": "150376:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "150366:3:10", + "nodeType": "YulIdentifier", + "src": "150366:3:10" + }, + "nativeSrc": "150366:15:10", + "nodeType": "YulFunctionCall", + "src": "150366:15:10" + }, + { + "kind": "number", + "nativeSrc": "150383:4:10", + "nodeType": "YulLiteral", + "src": "150383:4:10", + "type": "", + "value": "0x57" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "150399:4:10", + "nodeType": "YulIdentifier", + "src": "150399:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "150393:5:10", + "nodeType": "YulIdentifier", + "src": "150393:5:10" + }, + "nativeSrc": "150393:11:10", + "nodeType": "YulFunctionCall", + "src": "150393:11:10" + }, + { + "kind": "number", + "nativeSrc": "150406:4:10", + "nodeType": "YulLiteral", + "src": "150406:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "150389:3:10", + "nodeType": "YulIdentifier", + "src": "150389:3:10" + }, + "nativeSrc": "150389:22:10", + "nodeType": "YulFunctionCall", + "src": "150389:22:10" + } + ], + "functionName": { + "name": "extcodecopy", + "nativeSrc": "150344:11:10", + "nodeType": "YulIdentifier", + "src": "150344:11:10" + }, + "nativeSrc": "150344:68:10", + "nodeType": "YulFunctionCall", + "src": "150344:68:10" + }, + "nativeSrc": "150344:68:10", + "nodeType": "YulExpressionStatement", + "src": "150344:68:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "150432:4:10", + "nodeType": "YulLiteral", + "src": "150432:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "150448:4:10", + "nodeType": "YulIdentifier", + "src": "150448:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "150442:5:10", + "nodeType": "YulIdentifier", + "src": "150442:5:10" + }, + "nativeSrc": "150442:11:10", + "nodeType": "YulFunctionCall", + "src": "150442:11:10" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "150459:4:10", + "nodeType": "YulIdentifier", + "src": "150459:4:10" + }, + { + "kind": "number", + "nativeSrc": "150465:4:10", + "nodeType": "YulLiteral", + "src": "150465:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "150455:3:10", + "nodeType": "YulIdentifier", + "src": "150455:3:10" + }, + "nativeSrc": "150455:15:10", + "nodeType": "YulFunctionCall", + "src": "150455:15:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "150438:3:10", + "nodeType": "YulIdentifier", + "src": "150438:3:10" + }, + "nativeSrc": "150438:33:10", + "nodeType": "YulFunctionCall", + "src": "150438:33:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "150425:6:10", + "nodeType": "YulIdentifier", + "src": "150425:6:10" + }, + "nativeSrc": "150425:47:10", + "nodeType": "YulFunctionCall", + "src": "150425:47:10" + }, + "nativeSrc": "150425:47:10", + "nodeType": "YulExpressionStatement", + "src": "150425:47:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5027, + "isOffset": false, + "isSlot": false, + "src": "150213:4:10", + "valueSize": 1 + }, + { + "declaration": 5027, + "isOffset": false, + "isSlot": false, + "src": "150252:4:10", + "valueSize": 1 + }, + { + "declaration": 5027, + "isOffset": false, + "isSlot": false, + "src": "150370:4:10", + "valueSize": 1 + }, + { + "declaration": 5027, + "isOffset": false, + "isSlot": false, + "src": "150399:4:10", + "valueSize": 1 + }, + { + "declaration": 5027, + "isOffset": false, + "isSlot": false, + "src": "150448:4:10", + "valueSize": 1 + }, + { + "declaration": 5027, + "isOffset": false, + "isSlot": false, + "src": "150459:4:10", + "valueSize": 1 + }, + { + "declaration": 5024, + "isOffset": false, + "isSlot": false, + "src": "150292:8:10", + "valueSize": 1 + }, + { + "declaration": 5024, + "isOffset": false, + "isSlot": false, + "src": "150356:8:10", + "valueSize": 1 + } + ], + "id": 5029, + "nodeType": "InlineAssembly", + "src": "150190:312:10" + } + ] + }, + "documentation": { + "id": 5022, + "nodeType": "StructuredDocumentation", + "src": "149927:82:10", + "text": "@dev Equivalent to `argsOnERC1967IBeaconProxy(instance, start, 2 ** 256 - 1)`." + }, + "id": 5031, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "argsOnERC1967IBeaconProxy", + "nameLocation": "150023:25:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5025, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5024, + "mutability": "mutable", + "name": "instance", + "nameLocation": "150057:8:10", + "nodeType": "VariableDeclaration", + "scope": 5031, + "src": "150049:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5023, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "150049:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "150048:18:10" + }, + "returnParameters": { + "id": 5028, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5027, + "mutability": "mutable", + "name": "args", + "nameLocation": "150127:4:10", + "nodeType": "VariableDeclaration", + "scope": 5031, + "src": "150114:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5026, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "150114:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "150113:19:10" + }, + "scope": 5104, + "src": "150014:494:10", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5042, + "nodeType": "Block", + "src": "150739:485:10", + "statements": [ + { + "AST": { + "nativeSrc": "150801:417:10", + "nodeType": "YulBlock", + "src": "150801:417:10", + "statements": [ + { + "nativeSrc": "150815:19:10", + "nodeType": "YulAssignment", + "src": "150815:19:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "150829:4:10", + "nodeType": "YulLiteral", + "src": "150829:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "150823:5:10", + "nodeType": "YulIdentifier", + "src": "150823:5:10" + }, + "nativeSrc": "150823:11:10", + "nodeType": "YulFunctionCall", + "src": "150823:11:10" + }, + "variableNames": [ + { + "name": "args", + "nativeSrc": "150815:4:10", + "nodeType": "YulIdentifier", + "src": "150815:4:10" + } + ] + }, + { + "nativeSrc": "150847:60:10", + "nodeType": "YulVariableDeclaration", + "src": "150847:60:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "150860:12:10", + "nodeType": "YulLiteral", + "src": "150860:12:10", + "type": "", + "value": "0xffffffffff" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "150890:8:10", + "nodeType": "YulIdentifier", + "src": "150890:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "150878:11:10", + "nodeType": "YulIdentifier", + "src": "150878:11:10" + }, + "nativeSrc": "150878:21:10", + "nodeType": "YulFunctionCall", + "src": "150878:21:10" + }, + { + "kind": "number", + "nativeSrc": "150901:4:10", + "nodeType": "YulLiteral", + "src": "150901:4:10", + "type": "", + "value": "0x57" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "150874:3:10", + "nodeType": "YulIdentifier", + "src": "150874:3:10" + }, + "nativeSrc": "150874:32:10", + "nodeType": "YulFunctionCall", + "src": "150874:32:10" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "150856:3:10", + "nodeType": "YulIdentifier", + "src": "150856:3:10" + }, + "nativeSrc": "150856:51:10", + "nodeType": "YulFunctionCall", + "src": "150856:51:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "150851:1:10", + "nodeType": "YulTypedName", + "src": "150851:1:10", + "type": "" + } + ] + }, + { + "nativeSrc": "150920:56:10", + "nodeType": "YulVariableDeclaration", + "src": "150920:56:10", + "value": { + "arguments": [ + { + "name": "n", + "nativeSrc": "150933:1:10", + "nodeType": "YulIdentifier", + "src": "150933:1:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "150940:8:10", + "nodeType": "YulLiteral", + "src": "150940:8:10", + "type": "", + "value": "0xffffff" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "start", + "nativeSrc": "150957:5:10", + "nodeType": "YulIdentifier", + "src": "150957:5:10" + }, + { + "name": "n", + "nativeSrc": "150964:1:10", + "nodeType": "YulIdentifier", + "src": "150964:1:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "150954:2:10", + "nodeType": "YulIdentifier", + "src": "150954:2:10" + }, + "nativeSrc": "150954:12:10", + "nodeType": "YulFunctionCall", + "src": "150954:12:10" + }, + { + "name": "start", + "nativeSrc": "150968:5:10", + "nodeType": "YulIdentifier", + "src": "150968:5:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "150950:3:10", + "nodeType": "YulIdentifier", + "src": "150950:3:10" + }, + "nativeSrc": "150950:24:10", + "nodeType": "YulFunctionCall", + "src": "150950:24:10" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "150936:3:10", + "nodeType": "YulIdentifier", + "src": "150936:3:10" + }, + "nativeSrc": "150936:39:10", + "nodeType": "YulFunctionCall", + "src": "150936:39:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "150929:3:10", + "nodeType": "YulIdentifier", + "src": "150929:3:10" + }, + "nativeSrc": "150929:47:10", + "nodeType": "YulFunctionCall", + "src": "150929:47:10" + }, + "variables": [ + { + "name": "l", + "nativeSrc": "150924:1:10", + "nodeType": "YulTypedName", + "src": "150924:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "151001:8:10", + "nodeType": "YulIdentifier", + "src": "151001:8:10" + }, + { + "name": "args", + "nativeSrc": "151011:4:10", + "nodeType": "YulIdentifier", + "src": "151011:4:10" + }, + { + "arguments": [ + { + "name": "start", + "nativeSrc": "151021:5:10", + "nodeType": "YulIdentifier", + "src": "151021:5:10" + }, + { + "kind": "number", + "nativeSrc": "151028:4:10", + "nodeType": "YulLiteral", + "src": "151028:4:10", + "type": "", + "value": "0x37" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "151017:3:10", + "nodeType": "YulIdentifier", + "src": "151017:3:10" + }, + "nativeSrc": "151017:16:10", + "nodeType": "YulFunctionCall", + "src": "151017:16:10" + }, + { + "arguments": [ + { + "name": "l", + "nativeSrc": "151039:1:10", + "nodeType": "YulIdentifier", + "src": "151039:1:10" + }, + { + "kind": "number", + "nativeSrc": "151042:4:10", + "nodeType": "YulLiteral", + "src": "151042:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "151035:3:10", + "nodeType": "YulIdentifier", + "src": "151035:3:10" + }, + "nativeSrc": "151035:12:10", + "nodeType": "YulFunctionCall", + "src": "151035:12:10" + } + ], + "functionName": { + "name": "extcodecopy", + "nativeSrc": "150989:11:10", + "nodeType": "YulIdentifier", + "src": "150989:11:10" + }, + "nativeSrc": "150989:59:10", + "nodeType": "YulFunctionCall", + "src": "150989:59:10" + }, + "nativeSrc": "150989:59:10", + "nodeType": "YulExpressionStatement", + "src": "150989:59:10" + }, + { + "expression": { + "arguments": [ + { + "name": "args", + "nativeSrc": "151068:4:10", + "nodeType": "YulIdentifier", + "src": "151068:4:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "n", + "nativeSrc": "151082:1:10", + "nodeType": "YulIdentifier", + "src": "151082:1:10" + }, + { + "name": "start", + "nativeSrc": "151085:5:10", + "nodeType": "YulIdentifier", + "src": "151085:5:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "151078:3:10", + "nodeType": "YulIdentifier", + "src": "151078:3:10" + }, + "nativeSrc": "151078:13:10", + "nodeType": "YulFunctionCall", + "src": "151078:13:10" + }, + { + "arguments": [ + { + "name": "start", + "nativeSrc": "151096:5:10", + "nodeType": "YulIdentifier", + "src": "151096:5:10" + }, + { + "name": "n", + "nativeSrc": "151103:1:10", + "nodeType": "YulIdentifier", + "src": "151103:1:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "151093:2:10", + "nodeType": "YulIdentifier", + "src": "151093:2:10" + }, + "nativeSrc": "151093:12:10", + "nodeType": "YulFunctionCall", + "src": "151093:12:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "151074:3:10", + "nodeType": "YulIdentifier", + "src": "151074:3:10" + }, + "nativeSrc": "151074:32:10", + "nodeType": "YulFunctionCall", + "src": "151074:32:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "151061:6:10", + "nodeType": "YulIdentifier", + "src": "151061:6:10" + }, + "nativeSrc": "151061:46:10", + "nodeType": "YulFunctionCall", + "src": "151061:46:10" + }, + "nativeSrc": "151061:46:10", + "nodeType": "YulExpressionStatement", + "src": "151061:46:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "151148:4:10", + "nodeType": "YulLiteral", + "src": "151148:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "151158:4:10", + "nodeType": "YulIdentifier", + "src": "151158:4:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "151168:4:10", + "nodeType": "YulLiteral", + "src": "151168:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "args", + "nativeSrc": "151180:4:10", + "nodeType": "YulIdentifier", + "src": "151180:4:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "151174:5:10", + "nodeType": "YulIdentifier", + "src": "151174:5:10" + }, + "nativeSrc": "151174:11:10", + "nodeType": "YulFunctionCall", + "src": "151174:11:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "151164:3:10", + "nodeType": "YulIdentifier", + "src": "151164:3:10" + }, + "nativeSrc": "151164:22:10", + "nodeType": "YulFunctionCall", + "src": "151164:22:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "151154:3:10", + "nodeType": "YulIdentifier", + "src": "151154:3:10" + }, + "nativeSrc": "151154:33:10", + "nodeType": "YulFunctionCall", + "src": "151154:33:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "151141:6:10", + "nodeType": "YulIdentifier", + "src": "151141:6:10" + }, + "nativeSrc": "151141:47:10", + "nodeType": "YulFunctionCall", + "src": "151141:47:10" + }, + "nativeSrc": "151141:47:10", + "nodeType": "YulExpressionStatement", + "src": "151141:47:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5039, + "isOffset": false, + "isSlot": false, + "src": "150815:4:10", + "valueSize": 1 + }, + { + "declaration": 5039, + "isOffset": false, + "isSlot": false, + "src": "151011:4:10", + "valueSize": 1 + }, + { + "declaration": 5039, + "isOffset": false, + "isSlot": false, + "src": "151068:4:10", + "valueSize": 1 + }, + { + "declaration": 5039, + "isOffset": false, + "isSlot": false, + "src": "151158:4:10", + "valueSize": 1 + }, + { + "declaration": 5039, + "isOffset": false, + "isSlot": false, + "src": "151180:4:10", + "valueSize": 1 + }, + { + "declaration": 5034, + "isOffset": false, + "isSlot": false, + "src": "150890:8:10", + "valueSize": 1 + }, + { + "declaration": 5034, + "isOffset": false, + "isSlot": false, + "src": "151001:8:10", + "valueSize": 1 + }, + { + "declaration": 5036, + "isOffset": false, + "isSlot": false, + "src": "150957:5:10", + "valueSize": 1 + }, + { + "declaration": 5036, + "isOffset": false, + "isSlot": false, + "src": "150968:5:10", + "valueSize": 1 + }, + { + "declaration": 5036, + "isOffset": false, + "isSlot": false, + "src": "151021:5:10", + "valueSize": 1 + }, + { + "declaration": 5036, + "isOffset": false, + "isSlot": false, + "src": "151085:5:10", + "valueSize": 1 + }, + { + "declaration": 5036, + "isOffset": false, + "isSlot": false, + "src": "151096:5:10", + "valueSize": 1 + } + ], + "id": 5041, + "nodeType": "InlineAssembly", + "src": "150792:426:10" + } + ] + }, + "documentation": { + "id": 5032, + "nodeType": "StructuredDocumentation", + "src": "150514:82:10", + "text": "@dev Equivalent to `argsOnERC1967IBeaconProxy(instance, start, 2 ** 256 - 1)`." + }, + "id": 5043, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "argsOnERC1967IBeaconProxy", + "nameLocation": "150610:25:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5037, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5034, + "mutability": "mutable", + "name": "instance", + "nameLocation": "150644:8:10", + "nodeType": "VariableDeclaration", + "scope": 5043, + "src": "150636:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5033, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "150636:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5036, + "mutability": "mutable", + "name": "start", + "nameLocation": "150662:5:10", + "nodeType": "VariableDeclaration", + "scope": 5043, + "src": "150654:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5035, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "150654:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "150635:33:10" + }, + "returnParameters": { + "id": 5040, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5039, + "mutability": "mutable", + "name": "args", + "nameLocation": "150729:4:10", + "nodeType": "VariableDeclaration", + "scope": 5043, + "src": "150716:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5038, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "150716:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "150715:19:10" + }, + "scope": 5104, + "src": "150601:623:10", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5056, + "nodeType": "Block", + "src": "151761:785:10", + "statements": [ + { + "AST": { + "nativeSrc": "151823:717:10", + "nodeType": "YulBlock", + "src": "151823:717:10", + "statements": [ + { + "nativeSrc": "151837:19:10", + "nodeType": "YulAssignment", + "src": "151837:19:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "151851:4:10", + "nodeType": "YulLiteral", + "src": "151851:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "151845:5:10", + "nodeType": "YulIdentifier", + "src": "151845:5:10" + }, + "nativeSrc": "151845:11:10", + "nodeType": "YulFunctionCall", + "src": "151845:11:10" + }, + "variableNames": [ + { + "name": "args", + "nativeSrc": "151837:4:10", + "nodeType": "YulIdentifier", + "src": "151837:4:10" + } + ] + }, + { + "body": { + "nativeSrc": "151896:17:10", + "nodeType": "YulBlock", + "src": "151896:17:10", + "statements": [ + { + "nativeSrc": "151898:13:10", + "nodeType": "YulAssignment", + "src": "151898:13:10", + "value": { + "kind": "number", + "nativeSrc": "151905:6:10", + "nodeType": "YulLiteral", + "src": "151905:6:10", + "type": "", + "value": "0xffff" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "151898:3:10", + "nodeType": "YulIdentifier", + "src": "151898:3:10" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "end", + "nativeSrc": "151882:3:10", + "nodeType": "YulIdentifier", + "src": "151882:3:10" + }, + { + "kind": "number", + "nativeSrc": "151887:6:10", + "nodeType": "YulLiteral", + "src": "151887:6:10", + "type": "", + "value": "0xffff" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "151879:2:10", + "nodeType": "YulIdentifier", + "src": "151879:2:10" + }, + "nativeSrc": "151879:15:10", + "nodeType": "YulFunctionCall", + "src": "151879:15:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "151872:6:10", + "nodeType": "YulIdentifier", + "src": "151872:6:10" + }, + "nativeSrc": "151872:23:10", + "nodeType": "YulFunctionCall", + "src": "151872:23:10" + }, + "nativeSrc": "151869:44:10", + "nodeType": "YulIf", + "src": "151869:44:10" + }, + { + "nativeSrc": "151926:45:10", + "nodeType": "YulVariableDeclaration", + "src": "151926:45:10", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "end", + "nativeSrc": "151943:3:10", + "nodeType": "YulIdentifier", + "src": "151943:3:10" + }, + { + "name": "start", + "nativeSrc": "151948:5:10", + "nodeType": "YulIdentifier", + "src": "151948:5:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "151939:3:10", + "nodeType": "YulIdentifier", + "src": "151939:3:10" + }, + "nativeSrc": "151939:15:10", + "nodeType": "YulFunctionCall", + "src": "151939:15:10" + }, + { + "arguments": [ + { + "name": "start", + "nativeSrc": "151959:5:10", + "nodeType": "YulIdentifier", + "src": "151959:5:10" + }, + { + "name": "end", + "nativeSrc": "151966:3:10", + "nodeType": "YulIdentifier", + "src": "151966:3:10" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "151956:2:10", + "nodeType": "YulIdentifier", + "src": "151956:2:10" + }, + "nativeSrc": "151956:14:10", + "nodeType": "YulFunctionCall", + "src": "151956:14:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "151935:3:10", + "nodeType": "YulIdentifier", + "src": "151935:3:10" + }, + "nativeSrc": "151935:36:10", + "nodeType": "YulFunctionCall", + "src": "151935:36:10" + }, + "variables": [ + { + "name": "d", + "nativeSrc": "151930:1:10", + "nodeType": "YulTypedName", + "src": "151930:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "151996:8:10", + "nodeType": "YulIdentifier", + "src": "151996:8:10" + }, + { + "name": "args", + "nativeSrc": "152006:4:10", + "nodeType": "YulIdentifier", + "src": "152006:4:10" + }, + { + "arguments": [ + { + "name": "start", + "nativeSrc": "152016:5:10", + "nodeType": "YulIdentifier", + "src": "152016:5:10" + }, + { + "kind": "number", + "nativeSrc": "152023:4:10", + "nodeType": "YulLiteral", + "src": "152023:4:10", + "type": "", + "value": "0x37" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "152012:3:10", + "nodeType": "YulIdentifier", + "src": "152012:3:10" + }, + "nativeSrc": "152012:16:10", + "nodeType": "YulFunctionCall", + "src": "152012:16:10" + }, + { + "arguments": [ + { + "name": "d", + "nativeSrc": "152034:1:10", + "nodeType": "YulIdentifier", + "src": "152034:1:10" + }, + { + "kind": "number", + "nativeSrc": "152037:4:10", + "nodeType": "YulLiteral", + "src": "152037:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "152030:3:10", + "nodeType": "YulIdentifier", + "src": "152030:3:10" + }, + "nativeSrc": "152030:12:10", + "nodeType": "YulFunctionCall", + "src": "152030:12:10" + } + ], + "functionName": { + "name": "extcodecopy", + "nativeSrc": "151984:11:10", + "nodeType": "YulIdentifier", + "src": "151984:11:10" + }, + "nativeSrc": "151984:59:10", + "nodeType": "YulFunctionCall", + "src": "151984:59:10" + }, + "nativeSrc": "151984:59:10", + "nodeType": "YulExpressionStatement", + "src": "151984:59:10" + }, + { + "body": { + "nativeSrc": "152098:229:10", + "nodeType": "YulBlock", + "src": "152098:229:10", + "statements": [ + { + "nativeSrc": "152116:41:10", + "nodeType": "YulVariableDeclaration", + "src": "152116:41:10", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "instance", + "nativeSrc": "152141:8:10", + "nodeType": "YulIdentifier", + "src": "152141:8:10" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "152129:11:10", + "nodeType": "YulIdentifier", + "src": "152129:11:10" + }, + "nativeSrc": "152129:21:10", + "nodeType": "YulFunctionCall", + "src": "152129:21:10" + }, + { + "kind": "number", + "nativeSrc": "152152:4:10", + "nodeType": "YulLiteral", + "src": "152152:4:10", + "type": "", + "value": "0x57" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "152125:3:10", + "nodeType": "YulIdentifier", + "src": "152125:3:10" + }, + "nativeSrc": "152125:32:10", + "nodeType": "YulFunctionCall", + "src": "152125:32:10" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "152120:1:10", + "nodeType": "YulTypedName", + "src": "152120:1:10", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "152189:14:10", + "nodeType": "YulIdentifier", + "src": "152189:14:10" + }, + "nativeSrc": "152189:16:10", + "nodeType": "YulFunctionCall", + "src": "152189:16:10" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "152207:14:10", + "nodeType": "YulIdentifier", + "src": "152207:14:10" + }, + "nativeSrc": "152207:16:10", + "nodeType": "YulFunctionCall", + "src": "152207:16:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "152229:2:10", + "nodeType": "YulLiteral", + "src": "152229:2:10", + "type": "", + "value": "40" + }, + { + "name": "n", + "nativeSrc": "152233:1:10", + "nodeType": "YulIdentifier", + "src": "152233:1:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "152225:3:10", + "nodeType": "YulIdentifier", + "src": "152225:3:10" + }, + "nativeSrc": "152225:10:10", + "nodeType": "YulFunctionCall", + "src": "152225:10:10" + } + ], + "functionName": { + "name": "returndatacopy", + "nativeSrc": "152174:14:10", + "nodeType": "YulIdentifier", + "src": "152174:14:10" + }, + "nativeSrc": "152174:62:10", + "nodeType": "YulFunctionCall", + "src": "152174:62:10" + }, + "nativeSrc": "152174:62:10", + "nodeType": "YulExpressionStatement", + "src": "152174:62:10" + }, + { + "nativeSrc": "152253:60:10", + "nodeType": "YulAssignment", + "src": "152253:60:10", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "n", + "nativeSrc": "152265:1:10", + "nodeType": "YulIdentifier", + "src": "152265:1:10" + }, + { + "name": "start", + "nativeSrc": "152268:5:10", + "nodeType": "YulIdentifier", + "src": "152268:5:10" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "152262:2:10", + "nodeType": "YulIdentifier", + "src": "152262:2:10" + }, + "nativeSrc": "152262:12:10", + "nodeType": "YulFunctionCall", + "src": "152262:12:10" + }, + { + "arguments": [ + { + "name": "d", + "nativeSrc": "152280:1:10", + "nodeType": "YulIdentifier", + "src": "152280:1:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "end", + "nativeSrc": "152290:3:10", + "nodeType": "YulIdentifier", + "src": "152290:3:10" + }, + { + "name": "n", + "nativeSrc": "152295:1:10", + "nodeType": "YulIdentifier", + "src": "152295:1:10" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "152287:2:10", + "nodeType": "YulIdentifier", + "src": "152287:2:10" + }, + "nativeSrc": "152287:10:10", + "nodeType": "YulFunctionCall", + "src": "152287:10:10" + }, + { + "arguments": [ + { + "name": "end", + "nativeSrc": "152303:3:10", + "nodeType": "YulIdentifier", + "src": "152303:3:10" + }, + { + "name": "n", + "nativeSrc": "152308:1:10", + "nodeType": "YulIdentifier", + "src": "152308:1:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "152299:3:10", + "nodeType": "YulIdentifier", + "src": "152299:3:10" + }, + "nativeSrc": "152299:11:10", + "nodeType": "YulFunctionCall", + "src": "152299:11:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "152283:3:10", + "nodeType": "YulIdentifier", + "src": "152283:3:10" + }, + "nativeSrc": "152283:28:10", + "nodeType": "YulFunctionCall", + "src": "152283:28:10" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "152276:3:10", + "nodeType": "YulIdentifier", + "src": "152276:3:10" + }, + "nativeSrc": "152276:36:10", + "nodeType": "YulFunctionCall", + "src": "152276:36:10" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "152258:3:10", + "nodeType": "YulIdentifier", + "src": "152258:3:10" + }, + "nativeSrc": "152258:55:10", + "nodeType": "YulFunctionCall", + "src": "152258:55:10" + }, + "variableNames": [ + { + "name": "d", + "nativeSrc": "152253:1:10", + "nodeType": "YulIdentifier", + "src": "152253:1:10" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "152070:4:10", + "nodeType": "YulLiteral", + "src": "152070:4:10", + "type": "", + "value": "0xff" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "152086:4:10", + "nodeType": "YulIdentifier", + "src": "152086:4:10" + }, + { + "name": "d", + "nativeSrc": "152092:1:10", + "nodeType": "YulIdentifier", + "src": "152092:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "152082:3:10", + "nodeType": "YulIdentifier", + "src": "152082:3:10" + }, + "nativeSrc": "152082:12:10", + "nodeType": "YulFunctionCall", + "src": "152082:12:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "152076:5:10", + "nodeType": "YulIdentifier", + "src": "152076:5:10" + }, + "nativeSrc": "152076:19:10", + "nodeType": "YulFunctionCall", + "src": "152076:19:10" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "152066:3:10", + "nodeType": "YulIdentifier", + "src": "152066:3:10" + }, + "nativeSrc": "152066:30:10", + "nodeType": "YulFunctionCall", + "src": "152066:30:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "152059:6:10", + "nodeType": "YulIdentifier", + "src": "152059:6:10" + }, + "nativeSrc": "152059:38:10", + "nodeType": "YulFunctionCall", + "src": "152059:38:10" + }, + "nativeSrc": "152056:271:10", + "nodeType": "YulIf", + "src": "152056:271:10" + }, + { + "expression": { + "arguments": [ + { + "name": "args", + "nativeSrc": "152347:4:10", + "nodeType": "YulIdentifier", + "src": "152347:4:10" + }, + { + "name": "d", + "nativeSrc": "152353:1:10", + "nodeType": "YulIdentifier", + "src": "152353:1:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "152340:6:10", + "nodeType": "YulIdentifier", + "src": "152340:6:10" + }, + "nativeSrc": "152340:15:10", + "nodeType": "YulFunctionCall", + "src": "152340:15:10" + }, + "nativeSrc": "152340:15:10", + "nodeType": "YulExpressionStatement", + "src": "152340:15:10" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "152404:4:10", + "nodeType": "YulIdentifier", + "src": "152404:4:10" + }, + { + "kind": "number", + "nativeSrc": "152410:4:10", + "nodeType": "YulLiteral", + "src": "152410:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "152400:3:10", + "nodeType": "YulIdentifier", + "src": "152400:3:10" + }, + "nativeSrc": "152400:15:10", + "nodeType": "YulFunctionCall", + "src": "152400:15:10" + }, + { + "name": "d", + "nativeSrc": "152417:1:10", + "nodeType": "YulIdentifier", + "src": "152417:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "152396:3:10", + "nodeType": "YulIdentifier", + "src": "152396:3:10" + }, + "nativeSrc": "152396:23:10", + "nodeType": "YulFunctionCall", + "src": "152396:23:10" + }, + { + "kind": "number", + "nativeSrc": "152421:1:10", + "nodeType": "YulLiteral", + "src": "152421:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "152389:6:10", + "nodeType": "YulIdentifier", + "src": "152389:6:10" + }, + "nativeSrc": "152389:34:10", + "nodeType": "YulFunctionCall", + "src": "152389:34:10" + }, + "nativeSrc": "152389:34:10", + "nodeType": "YulExpressionStatement", + "src": "152389:34:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "152480:4:10", + "nodeType": "YulLiteral", + "src": "152480:4:10", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "152494:4:10", + "nodeType": "YulIdentifier", + "src": "152494:4:10" + }, + { + "kind": "number", + "nativeSrc": "152500:4:10", + "nodeType": "YulLiteral", + "src": "152500:4:10", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "152490:3:10", + "nodeType": "YulIdentifier", + "src": "152490:3:10" + }, + "nativeSrc": "152490:15:10", + "nodeType": "YulFunctionCall", + "src": "152490:15:10" + }, + { + "name": "d", + "nativeSrc": "152507:1:10", + "nodeType": "YulIdentifier", + "src": "152507:1:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "152486:3:10", + "nodeType": "YulIdentifier", + "src": "152486:3:10" + }, + "nativeSrc": "152486:23:10", + "nodeType": "YulFunctionCall", + "src": "152486:23:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "152473:6:10", + "nodeType": "YulIdentifier", + "src": "152473:6:10" + }, + "nativeSrc": "152473:37:10", + "nodeType": "YulFunctionCall", + "src": "152473:37:10" + }, + "nativeSrc": "152473:37:10", + "nodeType": "YulExpressionStatement", + "src": "152473:37:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5053, + "isOffset": false, + "isSlot": false, + "src": "151837:4:10", + "valueSize": 1 + }, + { + "declaration": 5053, + "isOffset": false, + "isSlot": false, + "src": "152006:4:10", + "valueSize": 1 + }, + { + "declaration": 5053, + "isOffset": false, + "isSlot": false, + "src": "152086:4:10", + "valueSize": 1 + }, + { + "declaration": 5053, + "isOffset": false, + "isSlot": false, + "src": "152347:4:10", + "valueSize": 1 + }, + { + "declaration": 5053, + "isOffset": false, + "isSlot": false, + "src": "152404:4:10", + "valueSize": 1 + }, + { + "declaration": 5053, + "isOffset": false, + "isSlot": false, + "src": "152494:4:10", + "valueSize": 1 + }, + { + "declaration": 5050, + "isOffset": false, + "isSlot": false, + "src": "151882:3:10", + "valueSize": 1 + }, + { + "declaration": 5050, + "isOffset": false, + "isSlot": false, + "src": "151898:3:10", + "valueSize": 1 + }, + { + "declaration": 5050, + "isOffset": false, + "isSlot": false, + "src": "151943:3:10", + "valueSize": 1 + }, + { + "declaration": 5050, + "isOffset": false, + "isSlot": false, + "src": "151966:3:10", + "valueSize": 1 + }, + { + "declaration": 5050, + "isOffset": false, + "isSlot": false, + "src": "152290:3:10", + "valueSize": 1 + }, + { + "declaration": 5050, + "isOffset": false, + "isSlot": false, + "src": "152303:3:10", + "valueSize": 1 + }, + { + "declaration": 5046, + "isOffset": false, + "isSlot": false, + "src": "151996:8:10", + "valueSize": 1 + }, + { + "declaration": 5046, + "isOffset": false, + "isSlot": false, + "src": "152141:8:10", + "valueSize": 1 + }, + { + "declaration": 5048, + "isOffset": false, + "isSlot": false, + "src": "151948:5:10", + "valueSize": 1 + }, + { + "declaration": 5048, + "isOffset": false, + "isSlot": false, + "src": "151959:5:10", + "valueSize": 1 + }, + { + "declaration": 5048, + "isOffset": false, + "isSlot": false, + "src": "152016:5:10", + "valueSize": 1 + }, + { + "declaration": 5048, + "isOffset": false, + "isSlot": false, + "src": "152268:5:10", + "valueSize": 1 + } + ], + "id": 5055, + "nodeType": "InlineAssembly", + "src": "151814:726:10" + } + ] + }, + "documentation": { + "id": 5044, + "nodeType": "StructuredDocumentation", + "src": "151230:375:10", + "text": "@dev Returns a slice of the immutable arguments on `instance` from `start` to `end`.\n `start` and `end` will be clamped to the range `[0, args.length]`.\n The `instance` MUST be deployed via the ERC1967I beacon proxy with immutable args functions.\n Otherwise, the behavior is undefined.\n Out-of-gas reverts if `instance` does not have any code." + }, + "id": 5057, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "argsOnERC1967IBeaconProxy", + "nameLocation": "151619:25:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5051, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5046, + "mutability": "mutable", + "name": "instance", + "nameLocation": "151653:8:10", + "nodeType": "VariableDeclaration", + "scope": 5057, + "src": "151645:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5045, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "151645:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5048, + "mutability": "mutable", + "name": "start", + "nameLocation": "151671:5:10", + "nodeType": "VariableDeclaration", + "scope": 5057, + "src": "151663:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5047, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "151663:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5050, + "mutability": "mutable", + "name": "end", + "nameLocation": "151686:3:10", + "nodeType": "VariableDeclaration", + "scope": 5057, + "src": "151678:11:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5049, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "151678:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "151644:46:10" + }, + "returnParameters": { + "id": 5054, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5053, + "mutability": "mutable", + "name": "args", + "nameLocation": "151751:4:10", + "nodeType": "VariableDeclaration", + "scope": 5057, + "src": "151738:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5052, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "151738:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "151737:19:10" + }, + "scope": 5104, + "src": "151610:936:10", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5066, + "nodeType": "Block", + "src": "153004:1700:10", + "statements": [ + { + "AST": { + "nativeSrc": "153066:1632:10", + "nodeType": "YulBlock", + "src": "153066:1632:10", + "statements": [ + { + "body": { + "nativeSrc": "153133:1429:10", + "nodeType": "YulBlock", + "src": "153133:1429:10", + "statements": [ + { + "body": { + "nativeSrc": "153166:470:10", + "nodeType": "YulBlock", + "src": "153166:470:10", + "statements": [ + { + "body": { + "nativeSrc": "153438:180:10", + "nodeType": "YulBlock", + "src": "153438:180:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "153479:3:10", + "nodeType": "YulIdentifier", + "src": "153479:3:10" + }, + "nativeSrc": "153479:5:10", + "nodeType": "YulFunctionCall", + "src": "153479:5:10" + }, + { + "name": "instance", + "nativeSrc": "153486:8:10", + "nodeType": "YulIdentifier", + "src": "153486:8:10" + }, + { + "kind": "number", + "nativeSrc": "153496:4:10", + "nodeType": "YulLiteral", + "src": "153496:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "153502:4:10", + "nodeType": "YulLiteral", + "src": "153502:4:10", + "type": "", + "value": "0x01" + }, + { + "kind": "number", + "nativeSrc": "153508:4:10", + "nodeType": "YulLiteral", + "src": "153508:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "153514:4:10", + "nodeType": "YulLiteral", + "src": "153514:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "153468:10:10", + "nodeType": "YulIdentifier", + "src": "153468:10:10" + }, + "nativeSrc": "153468:51:10", + "nodeType": "YulFunctionCall", + "src": "153468:51:10" + } + ], + "functionName": { + "name": "pop", + "nativeSrc": "153464:3:10", + "nodeType": "YulIdentifier", + "src": "153464:3:10" + }, + "nativeSrc": "153464:56:10", + "nodeType": "YulFunctionCall", + "src": "153464:56:10" + }, + "nativeSrc": "153464:56:10", + "nodeType": "YulExpressionStatement", + "src": "153464:56:10" + }, + { + "nativeSrc": "153545:21:10", + "nodeType": "YulAssignment", + "src": "153545:21:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "153561:4:10", + "nodeType": "YulLiteral", + "src": "153561:4:10", + "type": "", + "value": "0x0c" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "153555:5:10", + "nodeType": "YulIdentifier", + "src": "153555:5:10" + }, + "nativeSrc": "153555:11:10", + "nodeType": "YulFunctionCall", + "src": "153555:11:10" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "153545:6:10", + "nodeType": "YulIdentifier", + "src": "153545:6:10" + } + ] + }, + { + "nativeSrc": "153591:5:10", + "nodeType": "YulBreak", + "src": "153591:5:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "153299:4:10", + "nodeType": "YulLiteral", + "src": "153299:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "153305:4:10", + "nodeType": "YulLiteral", + "src": "153305:4:10", + "type": "", + "value": "0x52" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "153289:9:10", + "nodeType": "YulIdentifier", + "src": "153289:9:10" + }, + "nativeSrc": "153289:21:10", + "nodeType": "YulFunctionCall", + "src": "153289:21:10" + }, + { + "name": "ERC1967I_CODE_HASH", + "nativeSrc": "153312:18:10", + "nodeType": "YulIdentifier", + "src": "153312:18:10" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "153286:2:10", + "nodeType": "YulIdentifier", + "src": "153286:2:10" + }, + "nativeSrc": "153286:45:10", + "nodeType": "YulFunctionCall", + "src": "153286:45:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "153370:4:10", + "nodeType": "YulLiteral", + "src": "153370:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "153376:4:10", + "nodeType": "YulLiteral", + "src": "153376:4:10", + "type": "", + "value": "0x57" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "153360:9:10", + "nodeType": "YulIdentifier", + "src": "153360:9:10" + }, + "nativeSrc": "153360:21:10", + "nodeType": "YulFunctionCall", + "src": "153360:21:10" + }, + { + "name": "ERC1967I_BEACON_PROXY_CODE_HASH", + "nativeSrc": "153383:31:10", + "nodeType": "YulIdentifier", + "src": "153383:31:10" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "153357:2:10", + "nodeType": "YulIdentifier", + "src": "153357:2:10" + }, + "nativeSrc": "153357:58:10", + "nodeType": "YulFunctionCall", + "src": "153357:58:10" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "153258:2:10", + "nodeType": "YulIdentifier", + "src": "153258:2:10" + }, + "nativeSrc": "153258:179:10", + "nodeType": "YulFunctionCall", + "src": "153258:179:10" + }, + "nativeSrc": "153255:363:10", + "nodeType": "YulIf", + "src": "153255:363:10" + } + ] + }, + "condition": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "153160:4:10", + "nodeType": "YulLiteral", + "src": "153160:4:10", + "type": "", + "value": "0x2d" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "153154:5:10", + "nodeType": "YulIdentifier", + "src": "153154:5:10" + }, + "nativeSrc": "153154:11:10", + "nodeType": "YulFunctionCall", + "src": "153154:11:10" + }, + "nativeSrc": "153151:485:10", + "nodeType": "YulIf", + "src": "153151:485:10" + }, + { + "nativeSrc": "153694:21:10", + "nodeType": "YulAssignment", + "src": "153694:21:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "153710:4:10", + "nodeType": "YulLiteral", + "src": "153710:4:10", + "type": "", + "value": "0x0b" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "153704:5:10", + "nodeType": "YulIdentifier", + "src": "153704:5:10" + }, + "nativeSrc": "153704:11:10", + "nodeType": "YulFunctionCall", + "src": "153704:11:10" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "153694:6:10", + "nodeType": "YulIdentifier", + "src": "153694:6:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "153741:4:10", + "nodeType": "YulLiteral", + "src": "153741:4:10", + "type": "", + "value": "0x0b" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "153747:8:10", + "nodeType": "YulIdentifier", + "src": "153747:8:10" + }, + "nativeSrc": "153747:10:10", + "nodeType": "YulFunctionCall", + "src": "153747:10:10" + }, + { + "kind": "number", + "nativeSrc": "153759:4:10", + "nodeType": "YulLiteral", + "src": "153759:4:10", + "type": "", + "value": "0x14" + } + ], + "functionName": { + "name": "codecopy", + "nativeSrc": "153732:8:10", + "nodeType": "YulIdentifier", + "src": "153732:8:10" + }, + "nativeSrc": "153732:32:10", + "nodeType": "YulFunctionCall", + "src": "153732:32:10" + }, + "nativeSrc": "153732:32:10", + "nodeType": "YulExpressionStatement", + "src": "153732:32:10" + }, + { + "body": { + "nativeSrc": "153877:9:10", + "nodeType": "YulBlock", + "src": "153877:9:10", + "statements": [ + { + "nativeSrc": "153879:5:10", + "nodeType": "YulBreak", + "src": "153879:5:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "153846:4:10", + "nodeType": "YulLiteral", + "src": "153846:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "153852:4:10", + "nodeType": "YulLiteral", + "src": "153852:4:10", + "type": "", + "value": "0x2c" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "153836:9:10", + "nodeType": "YulIdentifier", + "src": "153836:9:10" + }, + "nativeSrc": "153836:21:10", + "nodeType": "YulFunctionCall", + "src": "153836:21:10" + }, + { + "name": "CLONE_CODE_HASH", + "nativeSrc": "153859:15:10", + "nodeType": "YulIdentifier", + "src": "153859:15:10" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "153832:3:10", + "nodeType": "YulIdentifier", + "src": "153832:3:10" + }, + "nativeSrc": "153832:43:10", + "nodeType": "YulFunctionCall", + "src": "153832:43:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "153825:6:10", + "nodeType": "YulIdentifier", + "src": "153825:6:10" + }, + "nativeSrc": "153825:51:10", + "nodeType": "YulFunctionCall", + "src": "153825:51:10" + }, + "nativeSrc": "153822:64:10", + "nodeType": "YulIf", + "src": "153822:64:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "153910:4:10", + "nodeType": "YulLiteral", + "src": "153910:4:10", + "type": "", + "value": "0x0b" + }, + { + "name": "result", + "nativeSrc": "153916:6:10", + "nodeType": "YulIdentifier", + "src": "153916:6:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "153903:6:10", + "nodeType": "YulIdentifier", + "src": "153903:6:10" + }, + "nativeSrc": "153903:20:10", + "nodeType": "YulFunctionCall", + "src": "153903:20:10" + }, + "nativeSrc": "153903:20:10", + "nodeType": "YulExpressionStatement", + "src": "153903:20:10" + }, + { + "nativeSrc": "154007:21:10", + "nodeType": "YulAssignment", + "src": "154007:21:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "154023:4:10", + "nodeType": "YulLiteral", + "src": "154023:4:10", + "type": "", + "value": "0x0a" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "154017:5:10", + "nodeType": "YulIdentifier", + "src": "154017:5:10" + }, + "nativeSrc": "154017:11:10", + "nodeType": "YulFunctionCall", + "src": "154017:11:10" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "154007:6:10", + "nodeType": "YulIdentifier", + "src": "154007:6:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "154054:4:10", + "nodeType": "YulLiteral", + "src": "154054:4:10", + "type": "", + "value": "0x0a" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "154060:8:10", + "nodeType": "YulIdentifier", + "src": "154060:8:10" + }, + "nativeSrc": "154060:10:10", + "nodeType": "YulFunctionCall", + "src": "154060:10:10" + }, + { + "kind": "number", + "nativeSrc": "154072:4:10", + "nodeType": "YulLiteral", + "src": "154072:4:10", + "type": "", + "value": "0x14" + } + ], + "functionName": { + "name": "codecopy", + "nativeSrc": "154045:8:10", + "nodeType": "YulIdentifier", + "src": "154045:8:10" + }, + "nativeSrc": "154045:32:10", + "nodeType": "YulFunctionCall", + "src": "154045:32:10" + }, + "nativeSrc": "154045:32:10", + "nodeType": "YulExpressionStatement", + "src": "154045:32:10" + }, + { + "body": { + "nativeSrc": "154189:9:10", + "nodeType": "YulBlock", + "src": "154189:9:10", + "statements": [ + { + "nativeSrc": "154191:5:10", + "nodeType": "YulBreak", + "src": "154191:5:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "154159:4:10", + "nodeType": "YulLiteral", + "src": "154159:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "154165:4:10", + "nodeType": "YulLiteral", + "src": "154165:4:10", + "type": "", + "value": "0x2d" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "154149:9:10", + "nodeType": "YulIdentifier", + "src": "154149:9:10" + }, + "nativeSrc": "154149:21:10", + "nodeType": "YulFunctionCall", + "src": "154149:21:10" + }, + { + "name": "CWIA_CODE_HASH", + "nativeSrc": "154172:14:10", + "nodeType": "YulIdentifier", + "src": "154172:14:10" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "154145:3:10", + "nodeType": "YulIdentifier", + "src": "154145:3:10" + }, + "nativeSrc": "154145:42:10", + "nodeType": "YulFunctionCall", + "src": "154145:42:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "154138:6:10", + "nodeType": "YulIdentifier", + "src": "154138:6:10" + }, + "nativeSrc": "154138:50:10", + "nodeType": "YulFunctionCall", + "src": "154138:50:10" + }, + "nativeSrc": "154135:63:10", + "nodeType": "YulIf", + "src": "154135:63:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "154222:4:10", + "nodeType": "YulLiteral", + "src": "154222:4:10", + "type": "", + "value": "0x0a" + }, + { + "name": "result", + "nativeSrc": "154228:6:10", + "nodeType": "YulIdentifier", + "src": "154228:6:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "154215:6:10", + "nodeType": "YulIdentifier", + "src": "154215:6:10" + }, + "nativeSrc": "154215:20:10", + "nodeType": "YulFunctionCall", + "src": "154215:20:10" + }, + "nativeSrc": "154215:20:10", + "nodeType": "YulExpressionStatement", + "src": "154215:20:10" + }, + { + "nativeSrc": "154326:21:10", + "nodeType": "YulAssignment", + "src": "154326:21:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "154342:4:10", + "nodeType": "YulLiteral", + "src": "154342:4:10", + "type": "", + "value": "0x09" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "154336:5:10", + "nodeType": "YulIdentifier", + "src": "154336:5:10" + }, + "nativeSrc": "154336:11:10", + "nodeType": "YulFunctionCall", + "src": "154336:11:10" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "154326:6:10", + "nodeType": "YulIdentifier", + "src": "154326:6:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "154373:4:10", + "nodeType": "YulLiteral", + "src": "154373:4:10", + "type": "", + "value": "0x09" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "154379:8:10", + "nodeType": "YulIdentifier", + "src": "154379:8:10" + }, + "nativeSrc": "154379:10:10", + "nodeType": "YulFunctionCall", + "src": "154379:10:10" + }, + { + "kind": "number", + "nativeSrc": "154391:4:10", + "nodeType": "YulLiteral", + "src": "154391:4:10", + "type": "", + "value": "0x14" + } + ], + "functionName": { + "name": "codecopy", + "nativeSrc": "154364:8:10", + "nodeType": "YulIdentifier", + "src": "154364:8:10" + }, + "nativeSrc": "154364:32:10", + "nodeType": "YulFunctionCall", + "src": "154364:32:10" + }, + "nativeSrc": "154364:32:10", + "nodeType": "YulExpressionStatement", + "src": "154364:32:10" + }, + { + "nativeSrc": "154454:72:10", + "nodeType": "YulAssignment", + "src": "154454:72:10", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "154482:4:10", + "nodeType": "YulLiteral", + "src": "154482:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "154488:4:10", + "nodeType": "YulLiteral", + "src": "154488:4:10", + "type": "", + "value": "0x2d" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "154472:9:10", + "nodeType": "YulIdentifier", + "src": "154472:9:10" + }, + "nativeSrc": "154472:21:10", + "nodeType": "YulFunctionCall", + "src": "154472:21:10" + }, + { + "name": "PUSH0_CLONE_CODE_HASH", + "nativeSrc": "154495:21:10", + "nodeType": "YulIdentifier", + "src": "154495:21:10" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "154468:3:10", + "nodeType": "YulIdentifier", + "src": "154468:3:10" + }, + "nativeSrc": "154468:49:10", + "nodeType": "YulFunctionCall", + "src": "154468:49:10" + }, + { + "name": "result", + "nativeSrc": "154519:6:10", + "nodeType": "YulIdentifier", + "src": "154519:6:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "154464:3:10", + "nodeType": "YulIdentifier", + "src": "154464:3:10" + }, + "nativeSrc": "154464:62:10", + "nodeType": "YulFunctionCall", + "src": "154464:62:10" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "154454:6:10", + "nodeType": "YulIdentifier", + "src": "154454:6:10" + } + ] + }, + { + "nativeSrc": "154543:5:10", + "nodeType": "YulBreak", + "src": "154543:5:10" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "153128:1:10", + "nodeType": "YulLiteral", + "src": "153128:1:10", + "type": "", + "value": "1" + }, + "nativeSrc": "153080:1482:10", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "153130:2:10", + "nodeType": "YulBlock", + "src": "153130:2:10", + "statements": [] + }, + "pre": { + "nativeSrc": "153084:43:10", + "nodeType": "YulBlock", + "src": "153084:43:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "instance", + "nativeSrc": "153098:8:10", + "nodeType": "YulIdentifier", + "src": "153098:8:10" + }, + { + "kind": "number", + "nativeSrc": "153108:4:10", + "nodeType": "YulLiteral", + "src": "153108:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "153114:4:10", + "nodeType": "YulLiteral", + "src": "153114:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "153120:4:10", + "nodeType": "YulLiteral", + "src": "153120:4:10", + "type": "", + "value": "0x57" + } + ], + "functionName": { + "name": "extcodecopy", + "nativeSrc": "153086:11:10", + "nodeType": "YulIdentifier", + "src": "153086:11:10" + }, + "nativeSrc": "153086:39:10", + "nodeType": "YulFunctionCall", + "src": "153086:39:10" + }, + "nativeSrc": "153086:39:10", + "nodeType": "YulExpressionStatement", + "src": "153086:39:10" + } + ] + }, + "src": "153080:1482:10" + }, + { + "nativeSrc": "154575:25:10", + "nodeType": "YulAssignment", + "src": "154575:25:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "154589:2:10", + "nodeType": "YulLiteral", + "src": "154589:2:10", + "type": "", + "value": "96" + }, + { + "name": "result", + "nativeSrc": "154593:6:10", + "nodeType": "YulIdentifier", + "src": "154593:6:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "154585:3:10", + "nodeType": "YulIdentifier", + "src": "154585:3:10" + }, + "nativeSrc": "154585:15:10", + "nodeType": "YulFunctionCall", + "src": "154585:15:10" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "154575:6:10", + "nodeType": "YulIdentifier", + "src": "154575:6:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "154620:4:10", + "nodeType": "YulLiteral", + "src": "154620:4:10", + "type": "", + "value": "0x37" + }, + { + "kind": "number", + "nativeSrc": "154626:1:10", + "nodeType": "YulLiteral", + "src": "154626:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "154613:6:10", + "nodeType": "YulIdentifier", + "src": "154613:6:10" + }, + "nativeSrc": "154613:15:10", + "nodeType": "YulFunctionCall", + "src": "154613:15:10" + }, + "nativeSrc": "154613:15:10", + "nodeType": "YulExpressionStatement", + "src": "154613:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3096, + "isOffset": false, + "isSlot": false, + "src": "153859:15:10", + "valueSize": 1 + }, + { + "declaration": 3104, + "isOffset": false, + "isSlot": false, + "src": "154172:14:10", + "valueSize": 1 + }, + { + "declaration": 3120, + "isOffset": false, + "isSlot": false, + "src": "153383:31:10", + "valueSize": 1 + }, + { + "declaration": 3112, + "isOffset": false, + "isSlot": false, + "src": "153312:18:10", + "valueSize": 1 + }, + { + "declaration": 3100, + "isOffset": false, + "isSlot": false, + "src": "154495:21:10", + "valueSize": 1 + }, + { + "declaration": 5060, + "isOffset": false, + "isSlot": false, + "src": "153098:8:10", + "valueSize": 1 + }, + { + "declaration": 5060, + "isOffset": false, + "isSlot": false, + "src": "153486:8:10", + "valueSize": 1 + }, + { + "declaration": 5063, + "isOffset": false, + "isSlot": false, + "src": "153545:6:10", + "valueSize": 1 + }, + { + "declaration": 5063, + "isOffset": false, + "isSlot": false, + "src": "153694:6:10", + "valueSize": 1 + }, + { + "declaration": 5063, + "isOffset": false, + "isSlot": false, + "src": "153916:6:10", + "valueSize": 1 + }, + { + "declaration": 5063, + "isOffset": false, + "isSlot": false, + "src": "154007:6:10", + "valueSize": 1 + }, + { + "declaration": 5063, + "isOffset": false, + "isSlot": false, + "src": "154228:6:10", + "valueSize": 1 + }, + { + "declaration": 5063, + "isOffset": false, + "isSlot": false, + "src": "154326:6:10", + "valueSize": 1 + }, + { + "declaration": 5063, + "isOffset": false, + "isSlot": false, + "src": "154454:6:10", + "valueSize": 1 + }, + { + "declaration": 5063, + "isOffset": false, + "isSlot": false, + "src": "154519:6:10", + "valueSize": 1 + }, + { + "declaration": 5063, + "isOffset": false, + "isSlot": false, + "src": "154575:6:10", + "valueSize": 1 + }, + { + "declaration": 5063, + "isOffset": false, + "isSlot": false, + "src": "154593:6:10", + "valueSize": 1 + } + ], + "id": 5065, + "nodeType": "InlineAssembly", + "src": "153057:1641:10" + } + ] + }, + "documentation": { + "id": 5058, + "nodeType": "StructuredDocumentation", + "src": "152835:81:10", + "text": "@dev Returns `address(0)` if the implementation address cannot be determined." + }, + "id": 5067, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "implementationOf", + "nameLocation": "152930:16:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5061, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5060, + "mutability": "mutable", + "name": "instance", + "nameLocation": "152955:8:10", + "nodeType": "VariableDeclaration", + "scope": 5067, + "src": "152947:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5059, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "152947:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "152946:18:10" + }, + "returnParameters": { + "id": 5064, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5063, + "mutability": "mutable", + "name": "result", + "nameLocation": "152996:6:10", + "nodeType": "VariableDeclaration", + "scope": 5067, + "src": "152988:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5062, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "152988:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "152987:16:10" + }, + "scope": 5104, + "src": "152921:1783:10", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5080, + "nodeType": "Block", + "src": "155092:425:10", + "statements": [ + { + "AST": { + "nativeSrc": "155154:357:10", + "nodeType": "YulBlock", + "src": "155154:357:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "155228:4:10", + "nodeType": "YulLiteral", + "src": "155228:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "155234:4:10", + "nodeType": "YulLiteral", + "src": "155234:4:10", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "155220:7:10", + "nodeType": "YulIdentifier", + "src": "155220:7:10" + }, + "nativeSrc": "155220:19:10", + "nodeType": "YulFunctionCall", + "src": "155220:19:10" + }, + "nativeSrc": "155220:19:10", + "nodeType": "YulExpressionStatement", + "src": "155220:19:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "155280:4:10", + "nodeType": "YulLiteral", + "src": "155280:4:10", + "type": "", + "value": "0x35" + }, + { + "name": "hash", + "nativeSrc": "155286:4:10", + "nodeType": "YulIdentifier", + "src": "155286:4:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "155273:6:10", + "nodeType": "YulIdentifier", + "src": "155273:6:10" + }, + "nativeSrc": "155273:18:10", + "nodeType": "YulFunctionCall", + "src": "155273:18:10" + }, + "nativeSrc": "155273:18:10", + "nodeType": "YulExpressionStatement", + "src": "155273:18:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "155311:4:10", + "nodeType": "YulLiteral", + "src": "155311:4:10", + "type": "", + "value": "0x01" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "155321:2:10", + "nodeType": "YulLiteral", + "src": "155321:2:10", + "type": "", + "value": "96" + }, + { + "name": "deployer", + "nativeSrc": "155325:8:10", + "nodeType": "YulIdentifier", + "src": "155325:8:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "155317:3:10", + "nodeType": "YulIdentifier", + "src": "155317:3:10" + }, + "nativeSrc": "155317:17:10", + "nodeType": "YulFunctionCall", + "src": "155317:17:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "155304:6:10", + "nodeType": "YulIdentifier", + "src": "155304:6:10" + }, + "nativeSrc": "155304:31:10", + "nodeType": "YulFunctionCall", + "src": "155304:31:10" + }, + "nativeSrc": "155304:31:10", + "nodeType": "YulExpressionStatement", + "src": "155304:31:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "155355:4:10", + "nodeType": "YulLiteral", + "src": "155355:4:10", + "type": "", + "value": "0x15" + }, + { + "name": "salt", + "nativeSrc": "155361:4:10", + "nodeType": "YulIdentifier", + "src": "155361:4:10" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "155348:6:10", + "nodeType": "YulIdentifier", + "src": "155348:6:10" + }, + "nativeSrc": "155348:18:10", + "nodeType": "YulFunctionCall", + "src": "155348:18:10" + }, + "nativeSrc": "155348:18:10", + "nodeType": "YulExpressionStatement", + "src": "155348:18:10" + }, + { + "nativeSrc": "155379:34:10", + "nodeType": "YulAssignment", + "src": "155379:34:10", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "155402:4:10", + "nodeType": "YulLiteral", + "src": "155402:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "155408:4:10", + "nodeType": "YulLiteral", + "src": "155408:4:10", + "type": "", + "value": "0x55" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "155392:9:10", + "nodeType": "YulIdentifier", + "src": "155392:9:10" + }, + "nativeSrc": "155392:21:10", + "nodeType": "YulFunctionCall", + "src": "155392:21:10" + }, + "variableNames": [ + { + "name": "predicted", + "nativeSrc": "155379:9:10", + "nodeType": "YulIdentifier", + "src": "155379:9:10" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "155433:4:10", + "nodeType": "YulLiteral", + "src": "155433:4:10", + "type": "", + "value": "0x35" + }, + { + "kind": "number", + "nativeSrc": "155439:1:10", + "nodeType": "YulLiteral", + "src": "155439:1:10", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "155426:6:10", + "nodeType": "YulIdentifier", + "src": "155426:6:10" + }, + "nativeSrc": "155426:15:10", + "nodeType": "YulFunctionCall", + "src": "155426:15:10" + }, + "nativeSrc": "155426:15:10", + "nodeType": "YulExpressionStatement", + "src": "155426:15:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5074, + "isOffset": false, + "isSlot": false, + "src": "155325:8:10", + "valueSize": 1 + }, + { + "declaration": 5070, + "isOffset": false, + "isSlot": false, + "src": "155286:4:10", + "valueSize": 1 + }, + { + "declaration": 5077, + "isOffset": false, + "isSlot": false, + "src": "155379:9:10", + "valueSize": 1 + }, + { + "declaration": 5072, + "isOffset": false, + "isSlot": false, + "src": "155361:4:10", + "valueSize": 1 + } + ], + "id": 5079, + "nodeType": "InlineAssembly", + "src": "155145:366:10" + } + ] + }, + "documentation": { + "id": 5068, + "nodeType": "StructuredDocumentation", + "src": "154710:224:10", + "text": "@dev Returns the address when a contract with initialization code hash,\n `hash`, is deployed with `salt`, by `deployer`.\n Note: The returned result has dirty upper 96 bits. Please clean if used in assembly." + }, + "id": 5081, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "predictDeterministicAddress", + "nameLocation": "154948:27:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5075, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5070, + "mutability": "mutable", + "name": "hash", + "nameLocation": "154984:4:10", + "nodeType": "VariableDeclaration", + "scope": 5081, + "src": "154976:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5069, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "154976:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5072, + "mutability": "mutable", + "name": "salt", + "nameLocation": "154998:4:10", + "nodeType": "VariableDeclaration", + "scope": 5081, + "src": "154990:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5071, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "154990:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5074, + "mutability": "mutable", + "name": "deployer", + "nameLocation": "155012:8:10", + "nodeType": "VariableDeclaration", + "scope": 5081, + "src": "155004:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5073, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "155004:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "154975:46:10" + }, + "returnParameters": { + "id": 5078, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5077, + "mutability": "mutable", + "name": "predicted", + "nameLocation": "155077:9:10", + "nodeType": "VariableDeclaration", + "scope": 5081, + "src": "155069:17:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5076, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "155069:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "155068:19:10" + }, + "scope": 5104, + "src": "154939:578:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5090, + "nodeType": "Block", + "src": "155667:363:10", + "statements": [ + { + "AST": { + "nativeSrc": "155729:295:10", + "nodeType": "YulBlock", + "src": "155729:295:10", + "statements": [ + { + "body": { + "nativeSrc": "155894:120:10", + "nodeType": "YulBlock", + "src": "155894:120:10", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "155919:4:10", + "nodeType": "YulLiteral", + "src": "155919:4:10", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "155925:10:10", + "nodeType": "YulLiteral", + "src": "155925:10:10", + "type": "", + "value": "0x0c4549ef" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "155912:6:10", + "nodeType": "YulIdentifier", + "src": "155912:6:10" + }, + "nativeSrc": "155912:24:10", + "nodeType": "YulFunctionCall", + "src": "155912:24:10" + }, + "nativeSrc": "155912:24:10", + "nodeType": "YulExpressionStatement", + "src": "155912:24:10" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "155989:4:10", + "nodeType": "YulLiteral", + "src": "155989:4:10", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "155995:4:10", + "nodeType": "YulLiteral", + "src": "155995:4:10", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "155982:6:10", + "nodeType": "YulIdentifier", + "src": "155982:6:10" + }, + "nativeSrc": "155982:18:10", + "nodeType": "YulFunctionCall", + "src": "155982:18:10" + }, + "nativeSrc": "155982:18:10", + "nodeType": "YulExpressionStatement", + "src": "155982:18:10" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "155840:2:10", + "nodeType": "YulLiteral", + "src": "155840:2:10", + "type": "", + "value": "96" + }, + { + "name": "salt", + "nativeSrc": "155844:4:10", + "nodeType": "YulIdentifier", + "src": "155844:4:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "155836:3:10", + "nodeType": "YulIdentifier", + "src": "155836:3:10" + }, + "nativeSrc": "155836:13:10", + "nodeType": "YulFunctionCall", + "src": "155836:13:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "155829:6:10", + "nodeType": "YulIdentifier", + "src": "155829:6:10" + }, + "nativeSrc": "155829:21:10", + "nodeType": "YulFunctionCall", + "src": "155829:21:10" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "155859:2:10", + "nodeType": "YulLiteral", + "src": "155859:2:10", + "type": "", + "value": "96" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "155867:2:10", + "nodeType": "YulLiteral", + "src": "155867:2:10", + "type": "", + "value": "96" + }, + { + "name": "by", + "nativeSrc": "155871:2:10", + "nodeType": "YulIdentifier", + "src": "155871:2:10" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "155863:3:10", + "nodeType": "YulIdentifier", + "src": "155863:3:10" + }, + "nativeSrc": "155863:11:10", + "nodeType": "YulFunctionCall", + "src": "155863:11:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "155855:3:10", + "nodeType": "YulIdentifier", + "src": "155855:3:10" + }, + "nativeSrc": "155855:20:10", + "nodeType": "YulFunctionCall", + "src": "155855:20:10" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "155881:2:10", + "nodeType": "YulLiteral", + "src": "155881:2:10", + "type": "", + "value": "96" + }, + { + "name": "salt", + "nativeSrc": "155885:4:10", + "nodeType": "YulIdentifier", + "src": "155885:4:10" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "155877:3:10", + "nodeType": "YulIdentifier", + "src": "155877:3:10" + }, + "nativeSrc": "155877:13:10", + "nodeType": "YulFunctionCall", + "src": "155877:13:10" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "155852:2:10", + "nodeType": "YulIdentifier", + "src": "155852:2:10" + }, + "nativeSrc": "155852:39:10", + "nodeType": "YulFunctionCall", + "src": "155852:39:10" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "155826:2:10", + "nodeType": "YulIdentifier", + "src": "155826:2:10" + }, + "nativeSrc": "155826:66:10", + "nodeType": "YulFunctionCall", + "src": "155826:66:10" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "155819:6:10", + "nodeType": "YulIdentifier", + "src": "155819:6:10" + }, + "nativeSrc": "155819:74:10", + "nodeType": "YulFunctionCall", + "src": "155819:74:10" + }, + "nativeSrc": "155816:198:10", + "nodeType": "YulIf", + "src": "155816:198:10" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5086, + "isOffset": false, + "isSlot": false, + "src": "155871:2:10", + "valueSize": 1 + }, + { + "declaration": 5084, + "isOffset": false, + "isSlot": false, + "src": "155844:4:10", + "valueSize": 1 + }, + { + "declaration": 5084, + "isOffset": false, + "isSlot": false, + "src": "155885:4:10", + "valueSize": 1 + } + ], + "id": 5089, + "nodeType": "InlineAssembly", + "src": "155720:304:10" + } + ] + }, + "documentation": { + "id": 5082, + "nodeType": "StructuredDocumentation", + "src": "155523:74:10", + "text": "@dev Requires that `salt` starts with either the zero address or `by`." + }, + "id": 5091, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "checkStartsWith", + "nameLocation": "155611:15:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5087, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5084, + "mutability": "mutable", + "name": "salt", + "nameLocation": "155635:4:10", + "nodeType": "VariableDeclaration", + "scope": 5091, + "src": "155627:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5083, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "155627:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5086, + "mutability": "mutable", + "name": "by", + "nameLocation": "155649:2:10", + "nodeType": "VariableDeclaration", + "scope": 5091, + "src": "155641:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5085, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "155641:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "155626:26:10" + }, + "returnParameters": { + "id": 5088, + "nodeType": "ParameterList", + "parameters": [], + "src": "155667:0:10" + }, + "scope": 5104, + "src": "155602:428:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5102, + "nodeType": "Block", + "src": "156295:137:10", + "statements": [ + { + "AST": { + "nativeSrc": "156357:69:10", + "nodeType": "YulBlock", + "src": "156357:69:10", + "statements": [ + { + "nativeSrc": "156371:45:10", + "nodeType": "YulAssignment", + "src": "156371:45:10", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "args", + "nativeSrc": "156395:4:10", + "nodeType": "YulIdentifier", + "src": "156395:4:10" + }, + { + "kind": "number", + "nativeSrc": "156401:4:10", + "nodeType": "YulLiteral", + "src": "156401:4:10", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "156391:3:10", + "nodeType": "YulIdentifier", + "src": "156391:3:10" + }, + "nativeSrc": "156391:15:10", + "nodeType": "YulFunctionCall", + "src": "156391:15:10" + }, + { + "name": "offset", + "nativeSrc": "156408:6:10", + "nodeType": "YulIdentifier", + "src": "156408:6:10" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "156387:3:10", + "nodeType": "YulIdentifier", + "src": "156387:3:10" + }, + "nativeSrc": "156387:28:10", + "nodeType": "YulFunctionCall", + "src": "156387:28:10" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "156381:5:10", + "nodeType": "YulIdentifier", + "src": "156381:5:10" + }, + "nativeSrc": "156381:35:10", + "nodeType": "YulFunctionCall", + "src": "156381:35:10" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "156371:6:10", + "nodeType": "YulIdentifier", + "src": "156371:6:10" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5094, + "isOffset": false, + "isSlot": false, + "src": "156395:4:10", + "valueSize": 1 + }, + { + "declaration": 5096, + "isOffset": false, + "isSlot": false, + "src": "156408:6:10", + "valueSize": 1 + }, + { + "declaration": 5099, + "isOffset": false, + "isSlot": false, + "src": "156371:6:10", + "valueSize": 1 + } + ], + "id": 5101, + "nodeType": "InlineAssembly", + "src": "156348:78:10" + } + ] + }, + "documentation": { + "id": 5092, + "nodeType": "StructuredDocumentation", + "src": "156036:163:10", + "text": "@dev Returns the `bytes32` at `offset` in `args`, without any bounds checks.\n To load an address, you can use `address(bytes20(argLoad(args, offset)))`." + }, + "id": 5103, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "argLoad", + "nameLocation": "156213:7:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5097, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5094, + "mutability": "mutable", + "name": "args", + "nameLocation": "156234:4:10", + "nodeType": "VariableDeclaration", + "scope": 5103, + "src": "156221:17:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5093, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "156221:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5096, + "mutability": "mutable", + "name": "offset", + "nameLocation": "156248:6:10", + "nodeType": "VariableDeclaration", + "scope": 5103, + "src": "156240:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5095, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "156240:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "156220:35:10" + }, + "returnParameters": { + "id": 5100, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5099, + "mutability": "mutable", + "name": "result", + "nameLocation": "156287:6:10", + "nodeType": "VariableDeclaration", + "scope": 5103, + "src": "156279:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5098, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "156279:7:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "156278:16:10" + }, + "scope": 5104, + "src": "156204:228:10", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 5105, + "src": "3756:152678:10", + "usedErrors": [ + 3123, + 3126, + 3129 + ], + "usedEvents": [] + } + ], + "src": "32:156403:10" + }, + "id": 10 + }, + "solady/utils/LibString.sol": { + "ast": { + "absolutePath": "solady/utils/LibString.sol", + "exportedSymbols": { + "LibBytes": [ + 3089 + ], + "LibString": [ + 6145 + ] + }, + "id": 6146, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5106, + "literals": [ + "solidity", + "^", + "0.8", + ".4" + ], + "nodeType": "PragmaDirective", + "src": "32:23:11" + }, + { + "absolutePath": "solady/utils/LibBytes.sol", + "file": "./LibBytes.sol", + "id": 5108, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6146, + "sourceUnit": 3090, + "src": "57:40:11", + "symbolAliases": [ + { + "foreign": { + "id": 5107, + "name": "LibBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "65:8:11", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "LibString", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 5109, + "nodeType": "StructuredDocumentation", + "src": "99:591:11", + "text": "@notice Library for converting numbers into strings and other string operations.\n @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/LibString.sol)\n @author Modified from Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/LibString.sol)\n @dev Note:\n For performance and bytecode compactness, most of the string operations are restricted to\n byte strings (7-bit ASCII), except where otherwise specified.\n Usage of byte string operations on charsets with runes spanning two or more bytes\n can lead to undefined behavior." + }, + "fullyImplemented": true, + "id": 6145, + "linearizedBaseContracts": [ + 6145 + ], + "name": "LibString", + "nameLocation": "698:9:11", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "LibString.StringStorage", + "documentation": { + "id": 5110, + "nodeType": "StructuredDocumentation", + "src": "997:237:11", + "text": "@dev Goated string storage struct that totally MOGs, no cap, fr.\n Uses less gas and bytecode than Solidity's native string storage. It's meta af.\n Packs length with the first 31 bytes if <255 bytes, so it’s mad tight." + }, + "id": 5113, + "members": [ + { + "constant": false, + "id": 5112, + "mutability": "mutable", + "name": "_spacer", + "nameLocation": "1278:7:11", + "nodeType": "VariableDeclaration", + "scope": 5113, + "src": "1270:15:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5111, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1270:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "name": "StringStorage", + "nameLocation": "1246:13:11", + "nodeType": "StructDefinition", + "scope": 6145, + "src": "1239:53:11", + "visibility": "public" + }, + { + "documentation": { + "id": 5114, + "nodeType": "StructuredDocumentation", + "src": "1581:77:11", + "text": "@dev The length of the output is too small to contain all the hex digits." + }, + "errorSelector": "2194895a", + "id": 5116, + "name": "HexLengthInsufficient", + "nameLocation": "1669:21:11", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 5115, + "nodeType": "ParameterList", + "parameters": [], + "src": "1690:2:11" + }, + "src": "1663:30:11" + }, + { + "documentation": { + "id": 5117, + "nodeType": "StructuredDocumentation", + "src": "1699:56:11", + "text": "@dev The length of the string is more than 32 bytes." + }, + "errorSelector": "ec92f9a3", + "id": 5119, + "name": "TooBigForSmallString", + "nameLocation": "1766:20:11", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 5118, + "nodeType": "ParameterList", + "parameters": [], + "src": "1786:2:11" + }, + "src": "1760:29:11" + }, + { + "documentation": { + "id": 5120, + "nodeType": "StructuredDocumentation", + "src": "1795:48:11", + "text": "@dev The input string must be a 7-bit ASCII." + }, + "errorSelector": "c9807e0d", + "id": 5122, + "name": "StringNot7BitASCII", + "nameLocation": "1854:18:11", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 5121, + "nodeType": "ParameterList", + "parameters": [], + "src": "1872:2:11" + }, + "src": "1848:27:11" + }, + { + "constant": true, + "documentation": { + "id": 5123, + "nodeType": "StructuredDocumentation", + "src": "2164:76:11", + "text": "@dev The constant returned when the `search` is not found in the string." + }, + "id": 5130, + "mutability": "constant", + "name": "NOT_FOUND", + "nameLocation": "2271:9:11", + "nodeType": "VariableDeclaration", + "scope": 6145, + "src": "2245:55:11", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5124, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2245:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "expression": { + "arguments": [ + { + "id": 5127, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2288:7:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 5126, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2288:7:11", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 5125, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "2283:4:11", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 5128, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2283:13:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 5129, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2297:3:11", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "2283:17:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 5131, + "nodeType": "StructuredDocumentation", + "src": "2307:85:11", + "text": "@dev Lookup for '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'." + }, + "id": 5134, + "mutability": "constant", + "name": "ALPHANUMERIC_7_BIT_ASCII", + "nameLocation": "2423:24:11", + "nodeType": "VariableDeclaration", + "scope": 6145, + "src": "2397:86:11", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 5132, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "2397:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "value": { + "hexValue": "307837666666666665303766666666666530336666303030303030303030303030", + "id": 5133, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2450:33:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_10633823810298881996667002598709002240_by_1", + "typeString": "int_const 1063...(30 digits omitted)...2240" + }, + "value": "0x7fffffe07fffffe03ff000000000000" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 5135, + "nodeType": "StructuredDocumentation", + "src": "2490:75:11", + "text": "@dev Lookup for 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'." + }, + "id": 5138, + "mutability": "constant", + "name": "LETTERS_7_BIT_ASCII", + "nameLocation": "2596:19:11", + "nodeType": "VariableDeclaration", + "scope": 6145, + "src": "2570:81:11", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 5136, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "2570:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "value": { + "hexValue": "307837666666666665303766666666666530303030303030303030303030303030", + "id": 5137, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2618:33:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_10633823810298881996379053697534001152_by_1", + "typeString": "int_const 1063...(30 digits omitted)...1152" + }, + "value": "0x7fffffe07fffffe0000000000000000" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 5139, + "nodeType": "StructuredDocumentation", + "src": "2658:49:11", + "text": "@dev Lookup for 'abcdefghijklmnopqrstuvwxyz'." + }, + "id": 5142, + "mutability": "constant", + "name": "LOWERCASE_7_BIT_ASCII", + "nameLocation": "2738:21:11", + "nodeType": "VariableDeclaration", + "scope": 6145, + "src": "2712:83:11", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 5140, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "2712:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "value": { + "hexValue": "307837666666666665303030303030303030303030303030303030303030303030", + "id": 5141, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2762:33:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_10633823807823001954701781295154855936_by_1", + "typeString": "int_const 1063...(30 digits omitted)...5936" + }, + "value": "0x7fffffe000000000000000000000000" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 5143, + "nodeType": "StructuredDocumentation", + "src": "2802:49:11", + "text": "@dev Lookup for 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'." + }, + "id": 5146, + "mutability": "constant", + "name": "UPPERCASE_7_BIT_ASCII", + "nameLocation": "2882:21:11", + "nodeType": "VariableDeclaration", + "scope": 6145, + "src": "2856:75:11", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 5144, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "2856:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "value": { + "hexValue": "30783766666666666530303030303030303030303030303030", + "id": 5145, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2906:25:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_2475880041677272402379145216_by_1", + "typeString": "int_const 2475880041677272402379145216" + }, + "value": "0x7fffffe0000000000000000" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 5147, + "nodeType": "StructuredDocumentation", + "src": "2938:33:11", + "text": "@dev Lookup for '0123456789'." + }, + "id": 5150, + "mutability": "constant", + "name": "DIGITS_7_BIT_ASCII", + "nameLocation": "3002:18:11", + "nodeType": "VariableDeclaration", + "scope": 6145, + "src": "2976:64:11", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 5148, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "2976:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "value": { + "hexValue": "3078336666303030303030303030303030", + "id": 5149, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3023:17:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_287948901175001088_by_1", + "typeString": "int_const 287948901175001088" + }, + "value": "0x3ff000000000000" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 5151, + "nodeType": "StructuredDocumentation", + "src": "3047:45:11", + "text": "@dev Lookup for '0123456789abcdefABCDEF'." + }, + "id": 5154, + "mutability": "constant", + "name": "HEXDIGITS_7_BIT_ASCII", + "nameLocation": "3123:21:11", + "nodeType": "VariableDeclaration", + "scope": 6145, + "src": "3097:78:11", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 5152, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "3097:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "value": { + "hexValue": "30783765303030303030376530336666303030303030303030303030", + "id": 5153, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3147:28:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_9982748479121884238975116247040_by_1", + "typeString": "int_const 9982748479121884238975116247040" + }, + "value": "0x7e0000007e03ff000000000000" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 5155, + "nodeType": "StructuredDocumentation", + "src": "3182:31:11", + "text": "@dev Lookup for '01234567'." + }, + "id": 5158, + "mutability": "constant", + "name": "OCTDIGITS_7_BIT_ASCII", + "nameLocation": "3244:21:11", + "nodeType": "VariableDeclaration", + "scope": 6145, + "src": "3218:66:11", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 5156, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "3218:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "value": { + "hexValue": "30786666303030303030303030303030", + "id": 5157, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3268:16:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_71776119061217280_by_1", + "typeString": "int_const 71776119061217280" + }, + "value": "0xff000000000000" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 5159, + "nodeType": "StructuredDocumentation", + "src": "3291:134:11", + "text": "@dev Lookup for '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!\"#$%&\\'()*+,-./:;<=>?@[\\\\]^_`{|}~ \\t\\n\\r\\x0b\\x0c'." + }, + "id": 5162, + "mutability": "constant", + "name": "PRINTABLE_7_BIT_ASCII", + "nameLocation": "3456:21:11", + "nodeType": "VariableDeclaration", + "scope": 6145, + "src": "3430:84:11", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 5160, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "3430:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "value": { + "hexValue": "30783766666666666666666666666666666666666666666666663030303033653030", + "id": 5161, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3480:34:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_170141183460469231731687303711589154304_by_1", + "typeString": "int_const 1701...(31 digits omitted)...4304" + }, + "value": "0x7fffffffffffffffffffffff00003e00" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 5163, + "nodeType": "StructuredDocumentation", + "src": "3521:57:11", + "text": "@dev Lookup for '!\"#$%&\\'()*+,-./:;<=>?@[\\\\]^_`{|}~'." + }, + "id": 5166, + "mutability": "constant", + "name": "PUNCTUATION_7_BIT_ASCII", + "nameLocation": "3609:23:11", + "nodeType": "VariableDeclaration", + "scope": 6145, + "src": "3583:86:11", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 5164, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "3583:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "value": { + "hexValue": "30783738303030303031663830303030303166633030666666653030303030303030", + "id": 5165, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3635:34:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_159507359650170349735020301108585168896_by_1", + "typeString": "int_const 1595...(31 digits omitted)...8896" + }, + "value": "0x78000001f8000001fc00fffe00000000" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 5167, + "nodeType": "StructuredDocumentation", + "src": "3676:38:11", + "text": "@dev Lookup for ' \\t\\n\\r\\x0b\\x0c'." + }, + "id": 5170, + "mutability": "constant", + "name": "WHITESPACE_7_BIT_ASCII", + "nameLocation": "3745:22:11", + "nodeType": "VariableDeclaration", + "scope": 6145, + "src": "3719:62:11", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 5168, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "3719:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "value": { + "hexValue": "3078313030303033653030", + "id": 5169, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3770:11:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_4294983168_by_1", + "typeString": "int_const 4294983168" + }, + "value": "0x100003e00" + }, + "visibility": "internal" + }, + { + "body": { + "id": 5191, + "nodeType": "Block", + "src": "4197:56:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 5183, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5174, + "src": "4233:1:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage storage pointer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage storage pointer" + } + ], + "id": 5182, + "name": "bytesStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5318, + "src": "4220:12:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_StringStorage_$5113_storage_ptr_$returns$_t_struct$_BytesStorage_$2590_storage_ptr_$", + "typeString": "function (struct LibString.StringStorage storage pointer) pure returns (struct LibBytes.BytesStorage storage pointer)" + } + }, + "id": 5184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4220:15:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage storage pointer" + } + }, + { + "arguments": [ + { + "id": 5187, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5176, + "src": "4243:1:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5186, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4237:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5185, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4237:5:11", + "typeDescriptions": {} + } + }, + "id": 5188, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4237:8:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage storage pointer" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 5179, + "name": "LibBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "4207:8:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibBytes_$3089_$", + "typeString": "type(library LibBytes)" + } + }, + "id": 5181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4216:3:11", + "memberName": "set", + "nodeType": "MemberAccess", + "referencedDeclaration": 2609, + "src": "4207:12:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_BytesStorage_$2590_storage_ptr_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (struct LibBytes.BytesStorage storage pointer,bytes memory)" + } + }, + "id": 5189, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4207:39:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5190, + "nodeType": "ExpressionStatement", + "src": "4207:39:11" + } + ] + }, + "documentation": { + "id": 5171, + "nodeType": "StructuredDocumentation", + "src": "4071:57:11", + "text": "@dev Sets the value of the string storage `$` to `s`." + }, + "id": 5192, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "set", + "nameLocation": "4142:3:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5177, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5174, + "mutability": "mutable", + "name": "$", + "nameLocation": "4168:1:11", + "nodeType": "VariableDeclaration", + "scope": 5192, + "src": "4146:23:11", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage" + }, + "typeName": { + "id": 5173, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5172, + "name": "StringStorage", + "nameLocations": [ + "4146:13:11" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5113, + "src": "4146:13:11" + }, + "referencedDeclaration": 5113, + "src": "4146:13:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5176, + "mutability": "mutable", + "name": "s", + "nameLocation": "4185:1:11", + "nodeType": "VariableDeclaration", + "scope": 5192, + "src": "4171:15:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5175, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4171:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "4145:42:11" + }, + "returnParameters": { + "id": 5178, + "nodeType": "ParameterList", + "parameters": [], + "src": "4197:0:11" + }, + "scope": 6145, + "src": "4133:120:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5213, + "nodeType": "Block", + "src": "4395:64:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 5205, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5196, + "src": "4439:1:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage storage pointer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage storage pointer" + } + ], + "id": 5204, + "name": "bytesStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5318, + "src": "4426:12:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_StringStorage_$5113_storage_ptr_$returns$_t_struct$_BytesStorage_$2590_storage_ptr_$", + "typeString": "function (struct LibString.StringStorage storage pointer) pure returns (struct LibBytes.BytesStorage storage pointer)" + } + }, + "id": 5206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4426:15:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage storage pointer" + } + }, + { + "arguments": [ + { + "id": 5209, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5198, + "src": "4449:1:11", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + ], + "id": 5208, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4443:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5207, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4443:5:11", + "typeDescriptions": {} + } + }, + "id": 5210, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4443:8:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage storage pointer" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "expression": { + "id": 5201, + "name": "LibBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "4405:8:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibBytes_$3089_$", + "typeString": "type(library LibBytes)" + } + }, + "id": 5203, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4414:11:11", + "memberName": "setCalldata", + "nodeType": "MemberAccess", + "referencedDeclaration": 2620, + "src": "4405:20:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_BytesStorage_$2590_storage_ptr_$_t_bytes_calldata_ptr_$returns$__$", + "typeString": "function (struct LibBytes.BytesStorage storage pointer,bytes calldata)" + } + }, + "id": 5211, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4405:47:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5212, + "nodeType": "ExpressionStatement", + "src": "4405:47:11" + } + ] + }, + "documentation": { + "id": 5193, + "nodeType": "StructuredDocumentation", + "src": "4259:57:11", + "text": "@dev Sets the value of the string storage `$` to `s`." + }, + "id": 5214, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setCalldata", + "nameLocation": "4330:11:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5199, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5196, + "mutability": "mutable", + "name": "$", + "nameLocation": "4364:1:11", + "nodeType": "VariableDeclaration", + "scope": 5214, + "src": "4342:23:11", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage" + }, + "typeName": { + "id": 5195, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5194, + "name": "StringStorage", + "nameLocations": [ + "4342:13:11" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5113, + "src": "4342:13:11" + }, + "referencedDeclaration": 5113, + "src": "4342:13:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5198, + "mutability": "mutable", + "name": "s", + "nameLocation": "4383:1:11", + "nodeType": "VariableDeclaration", + "scope": 5214, + "src": "4367:17:11", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5197, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4367:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "4341:44:11" + }, + "returnParameters": { + "id": 5200, + "nodeType": "ParameterList", + "parameters": [], + "src": "4395:0:11" + }, + "scope": 6145, + "src": "4321:138:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5225, + "nodeType": "Block", + "src": "4589:33:11", + "statements": [ + { + "expression": { + "id": 5223, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "4599:16:11", + "subExpression": { + "expression": { + "id": 5221, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5218, + "src": "4606:1:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage storage pointer" + } + }, + "id": 5222, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "4608:7:11", + "memberName": "_spacer", + "nodeType": "MemberAccess", + "referencedDeclaration": 5112, + "src": "4606:9:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5224, + "nodeType": "ExpressionStatement", + "src": "4599:16:11" + } + ] + }, + "documentation": { + "id": 5215, + "nodeType": "StructuredDocumentation", + "src": "4465:70:11", + "text": "@dev Sets the value of the string storage `$` to the empty string." + }, + "id": 5226, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "clear", + "nameLocation": "4549:5:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5219, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5218, + "mutability": "mutable", + "name": "$", + "nameLocation": "4577:1:11", + "nodeType": "VariableDeclaration", + "scope": 5226, + "src": "4555:23:11", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage" + }, + "typeName": { + "id": 5217, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5216, + "name": "StringStorage", + "nameLocations": [ + "4555:13:11" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5113, + "src": "4555:13:11" + }, + "referencedDeclaration": 5113, + "src": "4555:13:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage" + } + }, + "visibility": "internal" + } + ], + "src": "4554:25:11" + }, + "returnParameters": { + "id": 5220, + "nodeType": "ParameterList", + "parameters": [], + "src": "4589:0:11" + }, + "scope": 6145, + "src": "4540:82:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5248, + "nodeType": "Block", + "src": "4776:63:11", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5246, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5241, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "expression": { + "id": 5237, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5230, + "src": "4801:1:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage storage pointer" + } + }, + "id": 5238, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4803:7:11", + "memberName": "_spacer", + "nodeType": "MemberAccess", + "referencedDeclaration": 5112, + "src": "4801:9:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 5236, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4793:7:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 5235, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4793:7:11", + "typeDescriptions": {} + } + }, + "id": 5239, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4793:18:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "30786666", + "id": 5240, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4814:4:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_255_by_1", + "typeString": "int_const 255" + }, + "value": "0xff" + }, + "src": "4793:25:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 5244, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4830:1:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5243, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4822:7:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 5242, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4822:7:11", + "typeDescriptions": {} + } + }, + "id": 5245, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4822:10:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4793:39:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 5234, + "id": 5247, + "nodeType": "Return", + "src": "4786:46:11" + } + ] + }, + "documentation": { + "id": 5227, + "nodeType": "StructuredDocumentation", + "src": "4628:72:11", + "text": "@dev Returns whether the value stored is `$` is the empty string \"\"." + }, + "id": 5249, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isEmpty", + "nameLocation": "4714:7:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5231, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5230, + "mutability": "mutable", + "name": "$", + "nameLocation": "4744:1:11", + "nodeType": "VariableDeclaration", + "scope": 5249, + "src": "4722:23:11", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage" + }, + "typeName": { + "id": 5229, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5228, + "name": "StringStorage", + "nameLocations": [ + "4722:13:11" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5113, + "src": "4722:13:11" + }, + "referencedDeclaration": 5113, + "src": "4722:13:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage" + } + }, + "visibility": "internal" + } + ], + "src": "4721:25:11" + }, + "returnParameters": { + "id": 5234, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5233, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5249, + "src": "4770:4:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5232, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4770:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4769:6:11" + }, + "scope": 6145, + "src": "4705:134:11", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5265, + "nodeType": "Block", + "src": "4978:56:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 5261, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5253, + "src": "5024:1:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage storage pointer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage storage pointer" + } + ], + "id": 5260, + "name": "bytesStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5318, + "src": "5011:12:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_StringStorage_$5113_storage_ptr_$returns$_t_struct$_BytesStorage_$2590_storage_ptr_$", + "typeString": "function (struct LibString.StringStorage storage pointer) pure returns (struct LibBytes.BytesStorage storage pointer)" + } + }, + "id": 5262, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5011:15:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage storage pointer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage storage pointer" + } + ], + "expression": { + "id": 5258, + "name": "LibBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "4995:8:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibBytes_$3089_$", + "typeString": "type(library LibBytes)" + } + }, + "id": 5259, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5004:6:11", + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": 2674, + "src": "4995:15:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_BytesStorage_$2590_storage_ptr_$returns$_t_uint256_$", + "typeString": "function (struct LibBytes.BytesStorage storage pointer) view returns (uint256)" + } + }, + "id": 5263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4995:32:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5257, + "id": 5264, + "nodeType": "Return", + "src": "4988:39:11" + } + ] + }, + "documentation": { + "id": 5250, + "nodeType": "StructuredDocumentation", + "src": "4845:55:11", + "text": "@dev Returns the length of the value stored in `$`." + }, + "id": 5266, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "length", + "nameLocation": "4914:6:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5254, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5253, + "mutability": "mutable", + "name": "$", + "nameLocation": "4943:1:11", + "nodeType": "VariableDeclaration", + "scope": 5266, + "src": "4921:23:11", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage" + }, + "typeName": { + "id": 5252, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5251, + "name": "StringStorage", + "nameLocations": [ + "4921:13:11" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5113, + "src": "4921:13:11" + }, + "referencedDeclaration": 5113, + "src": "4921:13:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage" + } + }, + "visibility": "internal" + } + ], + "src": "4920:25:11" + }, + "returnParameters": { + "id": 5257, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5256, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5266, + "src": "4969:7:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5255, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4969:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4968:9:11" + }, + "scope": 6145, + "src": "4905:129:11", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5285, + "nodeType": "Block", + "src": "5162:61:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 5280, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5270, + "src": "5212:1:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage storage pointer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage storage pointer" + } + ], + "id": 5279, + "name": "bytesStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5318, + "src": "5199:12:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_StringStorage_$5113_storage_ptr_$returns$_t_struct$_BytesStorage_$2590_storage_ptr_$", + "typeString": "function (struct LibString.StringStorage storage pointer) pure returns (struct LibBytes.BytesStorage storage pointer)" + } + }, + "id": 5281, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5199:15:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage storage pointer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage storage pointer" + } + ], + "expression": { + "id": 5277, + "name": "LibBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "5186:8:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibBytes_$3089_$", + "typeString": "type(library LibBytes)" + } + }, + "id": 5278, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5195:3:11", + "memberName": "get", + "nodeType": "MemberAccess", + "referencedDeclaration": 2685, + "src": "5186:12:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_BytesStorage_$2590_storage_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (struct LibBytes.BytesStorage storage pointer) view returns (bytes memory)" + } + }, + "id": 5282, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5186:29:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5276, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5179:6:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 5275, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "5179:6:11", + "typeDescriptions": {} + } + }, + "id": 5283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5179:37:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 5274, + "id": 5284, + "nodeType": "Return", + "src": "5172:44:11" + } + ] + }, + "documentation": { + "id": 5267, + "nodeType": "StructuredDocumentation", + "src": "5040:41:11", + "text": "@dev Returns the value stored in `$`." + }, + "id": 5286, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "get", + "nameLocation": "5095:3:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5271, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5270, + "mutability": "mutable", + "name": "$", + "nameLocation": "5121:1:11", + "nodeType": "VariableDeclaration", + "scope": 5286, + "src": "5099:23:11", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage" + }, + "typeName": { + "id": 5269, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5268, + "name": "StringStorage", + "nameLocations": [ + "5099:13:11" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5113, + "src": "5099:13:11" + }, + "referencedDeclaration": 5113, + "src": "5099:13:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage" + } + }, + "visibility": "internal" + } + ], + "src": "5098:25:11" + }, + "returnParameters": { + "id": 5274, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5273, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5286, + "src": "5147:13:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5272, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "5147:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "5146:15:11" + }, + "scope": 6145, + "src": "5086:137:11", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5305, + "nodeType": "Block", + "src": "5386:60:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 5300, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5290, + "src": "5433:1:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage storage pointer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage storage pointer" + } + ], + "id": 5299, + "name": "bytesStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5318, + "src": "5420:12:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_StringStorage_$5113_storage_ptr_$returns$_t_struct$_BytesStorage_$2590_storage_ptr_$", + "typeString": "function (struct LibString.StringStorage storage pointer) pure returns (struct LibBytes.BytesStorage storage pointer)" + } + }, + "id": 5301, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5420:15:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage storage pointer" + } + }, + { + "id": 5302, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5292, + "src": "5437:1:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage storage pointer" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 5297, + "name": "LibBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "5403:8:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibBytes_$3089_$", + "typeString": "type(library LibBytes)" + } + }, + "id": 5298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5412:7:11", + "memberName": "uint8At", + "nodeType": "MemberAccess", + "referencedDeclaration": 2698, + "src": "5403:16:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_BytesStorage_$2590_storage_ptr_$_t_uint256_$returns$_t_uint8_$", + "typeString": "function (struct LibBytes.BytesStorage storage pointer,uint256) view returns (uint8)" + } + }, + "id": 5303, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5403:36:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "functionReturnParameters": 5296, + "id": 5304, + "nodeType": "Return", + "src": "5396:43:11" + } + ] + }, + "documentation": { + "id": 5287, + "nodeType": "StructuredDocumentation", + "src": "5229:69:11", + "text": "@dev Returns the uint8 at index `i`. If out-of-bounds, returns 0." + }, + "id": 5306, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "uint8At", + "nameLocation": "5312:7:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5293, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5290, + "mutability": "mutable", + "name": "$", + "nameLocation": "5342:1:11", + "nodeType": "VariableDeclaration", + "scope": 5306, + "src": "5320:23:11", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage" + }, + "typeName": { + "id": 5289, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5288, + "name": "StringStorage", + "nameLocations": [ + "5320:13:11" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5113, + "src": "5320:13:11" + }, + "referencedDeclaration": 5113, + "src": "5320:13:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5292, + "mutability": "mutable", + "name": "i", + "nameLocation": "5353:1:11", + "nodeType": "VariableDeclaration", + "scope": 5306, + "src": "5345:9:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5291, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5345:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5319:36:11" + }, + "returnParameters": { + "id": 5296, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5295, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5306, + "src": "5379:5:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 5294, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "5379:5:11", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "5378:7:11" + }, + "scope": 6145, + "src": "5303:143:11", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5317, + "nodeType": "Block", + "src": "5641:113:11", + "statements": [ + { + "AST": { + "nativeSrc": "5703:45:11", + "nodeType": "YulBlock", + "src": "5703:45:11", + "statements": [ + { + "nativeSrc": "5717:21:11", + "nodeType": "YulAssignment", + "src": "5717:21:11", + "value": { + "name": "$.slot", + "nativeSrc": "5732:6:11", + "nodeType": "YulIdentifier", + "src": "5732:6:11" + }, + "variableNames": [ + { + "name": "casted.slot", + "nativeSrc": "5717:11:11", + "nodeType": "YulIdentifier", + "src": "5717:11:11" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5310, + "isOffset": false, + "isSlot": true, + "src": "5732:6:11", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 5314, + "isOffset": false, + "isSlot": true, + "src": "5717:11:11", + "suffix": "slot", + "valueSize": 1 + } + ], + "id": 5316, + "nodeType": "InlineAssembly", + "src": "5694:54:11" + } + ] + }, + "documentation": { + "id": 5307, + "nodeType": "StructuredDocumentation", + "src": "5452:48:11", + "text": "@dev Helper to cast `$` to a `BytesStorage`." + }, + "id": 5318, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "bytesStorage", + "nameLocation": "5514:12:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5311, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5310, + "mutability": "mutable", + "name": "$", + "nameLocation": "5549:1:11", + "nodeType": "VariableDeclaration", + "scope": 5318, + "src": "5527:23:11", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage" + }, + "typeName": { + "id": 5309, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5308, + "name": "StringStorage", + "nameLocations": [ + "5527:13:11" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5113, + "src": "5527:13:11" + }, + "referencedDeclaration": 5113, + "src": "5527:13:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringStorage_$5113_storage_ptr", + "typeString": "struct LibString.StringStorage" + } + }, + "visibility": "internal" + } + ], + "src": "5526:25:11" + }, + "returnParameters": { + "id": 5315, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5314, + "mutability": "mutable", + "name": "casted", + "nameLocation": "5629:6:11", + "nodeType": "VariableDeclaration", + "scope": 5318, + "src": "5599:36:11", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage" + }, + "typeName": { + "id": 5313, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5312, + "name": "LibBytes.BytesStorage", + "nameLocations": [ + "5599:8:11", + "5608:12:11" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2590, + "src": "5599:21:11" + }, + "referencedDeclaration": 2590, + "src": "5599:21:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesStorage_$2590_storage_ptr", + "typeString": "struct LibBytes.BytesStorage" + } + }, + "visibility": "internal" + } + ], + "src": "5598:38:11" + }, + "scope": 6145, + "src": "5505:249:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5327, + "nodeType": "Block", + "src": "6189:1482:11", + "statements": [ + { + "AST": { + "nativeSrc": "6251:1414:11", + "nodeType": "YulBlock", + "src": "6251:1414:11", + "statements": [ + { + "nativeSrc": "6591:32:11", + "nodeType": "YulAssignment", + "src": "6591:32:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6611:4:11", + "nodeType": "YulLiteral", + "src": "6611:4:11", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "6605:5:11", + "nodeType": "YulIdentifier", + "src": "6605:5:11" + }, + "nativeSrc": "6605:11:11", + "nodeType": "YulFunctionCall", + "src": "6605:11:11" + }, + { + "kind": "number", + "nativeSrc": "6618:4:11", + "nodeType": "YulLiteral", + "src": "6618:4:11", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6601:3:11", + "nodeType": "YulIdentifier", + "src": "6601:3:11" + }, + "nativeSrc": "6601:22:11", + "nodeType": "YulFunctionCall", + "src": "6601:22:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "6591:6:11", + "nodeType": "YulIdentifier", + "src": "6591:6:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6643:4:11", + "nodeType": "YulLiteral", + "src": "6643:4:11", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "result", + "nativeSrc": "6653:6:11", + "nodeType": "YulIdentifier", + "src": "6653:6:11" + }, + { + "kind": "number", + "nativeSrc": "6661:4:11", + "nodeType": "YulLiteral", + "src": "6661:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6649:3:11", + "nodeType": "YulIdentifier", + "src": "6649:3:11" + }, + "nativeSrc": "6649:17:11", + "nodeType": "YulFunctionCall", + "src": "6649:17:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6636:6:11", + "nodeType": "YulIdentifier", + "src": "6636:6:11" + }, + "nativeSrc": "6636:31:11", + "nodeType": "YulFunctionCall", + "src": "6636:31:11" + }, + "nativeSrc": "6636:31:11", + "nodeType": "YulExpressionStatement", + "src": "6636:31:11" + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "6707:6:11", + "nodeType": "YulIdentifier", + "src": "6707:6:11" + }, + { + "kind": "number", + "nativeSrc": "6715:1:11", + "nodeType": "YulLiteral", + "src": "6715:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6700:6:11", + "nodeType": "YulIdentifier", + "src": "6700:6:11" + }, + "nativeSrc": "6700:17:11", + "nodeType": "YulFunctionCall", + "src": "6700:17:11" + }, + "nativeSrc": "6700:17:11", + "nodeType": "YulExpressionStatement", + "src": "6700:17:11" + }, + { + "nativeSrc": "6769:17:11", + "nodeType": "YulVariableDeclaration", + "src": "6769:17:11", + "value": { + "name": "result", + "nativeSrc": "6780:6:11", + "nodeType": "YulIdentifier", + "src": "6780:6:11" + }, + "variables": [ + { + "name": "end", + "nativeSrc": "6773:3:11", + "nodeType": "YulTypedName", + "src": "6773:3:11", + "type": "" + } + ] + }, + { + "nativeSrc": "6861:15:11", + "nodeType": "YulVariableDeclaration", + "src": "6861:15:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6874:1:11", + "nodeType": "YulLiteral", + "src": "6874:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "6870:3:11", + "nodeType": "YulIdentifier", + "src": "6870:3:11" + }, + "nativeSrc": "6870:6:11", + "nodeType": "YulFunctionCall", + "src": "6870:6:11" + }, + "variables": [ + { + "name": "w", + "nativeSrc": "6865:1:11", + "nodeType": "YulTypedName", + "src": "6865:1:11", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "7096:367:11", + "nodeType": "YulBlock", + "src": "7096:367:11", + "statements": [ + { + "nativeSrc": "7114:24:11", + "nodeType": "YulAssignment", + "src": "7114:24:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "7128:6:11", + "nodeType": "YulIdentifier", + "src": "7128:6:11" + }, + { + "name": "w", + "nativeSrc": "7136:1:11", + "nodeType": "YulIdentifier", + "src": "7136:1:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7124:3:11", + "nodeType": "YulIdentifier", + "src": "7124:3:11" + }, + "nativeSrc": "7124:14:11", + "nodeType": "YulFunctionCall", + "src": "7124:14:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "7114:6:11", + "nodeType": "YulIdentifier", + "src": "7114:6:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "7302:6:11", + "nodeType": "YulIdentifier", + "src": "7302:6:11" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7314:2:11", + "nodeType": "YulLiteral", + "src": "7314:2:11", + "type": "", + "value": "48" + }, + { + "arguments": [ + { + "name": "temp", + "nativeSrc": "7322:4:11", + "nodeType": "YulIdentifier", + "src": "7322:4:11" + }, + { + "kind": "number", + "nativeSrc": "7328:2:11", + "nodeType": "YulLiteral", + "src": "7328:2:11", + "type": "", + "value": "10" + } + ], + "functionName": { + "name": "mod", + "nativeSrc": "7318:3:11", + "nodeType": "YulIdentifier", + "src": "7318:3:11" + }, + "nativeSrc": "7318:13:11", + "nodeType": "YulFunctionCall", + "src": "7318:13:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7310:3:11", + "nodeType": "YulIdentifier", + "src": "7310:3:11" + }, + "nativeSrc": "7310:22:11", + "nodeType": "YulFunctionCall", + "src": "7310:22:11" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "7294:7:11", + "nodeType": "YulIdentifier", + "src": "7294:7:11" + }, + "nativeSrc": "7294:39:11", + "nodeType": "YulFunctionCall", + "src": "7294:39:11" + }, + "nativeSrc": "7294:39:11", + "nodeType": "YulExpressionStatement", + "src": "7294:39:11" + }, + { + "nativeSrc": "7350:21:11", + "nodeType": "YulAssignment", + "src": "7350:21:11", + "value": { + "arguments": [ + { + "name": "temp", + "nativeSrc": "7362:4:11", + "nodeType": "YulIdentifier", + "src": "7362:4:11" + }, + { + "kind": "number", + "nativeSrc": "7368:2:11", + "nodeType": "YulLiteral", + "src": "7368:2:11", + "type": "", + "value": "10" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "7358:3:11", + "nodeType": "YulIdentifier", + "src": "7358:3:11" + }, + "nativeSrc": "7358:13:11", + "nodeType": "YulFunctionCall", + "src": "7358:13:11" + }, + "variableNames": [ + { + "name": "temp", + "nativeSrc": "7350:4:11", + "nodeType": "YulIdentifier", + "src": "7350:4:11" + } + ] + }, + { + "body": { + "nativeSrc": "7440:9:11", + "nodeType": "YulBlock", + "src": "7440:9:11", + "statements": [ + { + "nativeSrc": "7442:5:11", + "nodeType": "YulBreak", + "src": "7442:5:11" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "temp", + "nativeSrc": "7434:4:11", + "nodeType": "YulIdentifier", + "src": "7434:4:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "7427:6:11", + "nodeType": "YulIdentifier", + "src": "7427:6:11" + }, + "nativeSrc": "7427:12:11", + "nodeType": "YulFunctionCall", + "src": "7427:12:11" + }, + "nativeSrc": "7424:25:11", + "nodeType": "YulIf", + "src": "7424:25:11" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "7091:1:11", + "nodeType": "YulLiteral", + "src": "7091:1:11", + "type": "", + "value": "1" + }, + "nativeSrc": "7065:398:11", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "7093:2:11", + "nodeType": "YulBlock", + "src": "7093:2:11", + "statements": [] + }, + "pre": { + "nativeSrc": "7069:21:11", + "nodeType": "YulBlock", + "src": "7069:21:11", + "statements": [ + { + "nativeSrc": "7071:17:11", + "nodeType": "YulVariableDeclaration", + "src": "7071:17:11", + "value": { + "name": "value", + "nativeSrc": "7083:5:11", + "nodeType": "YulIdentifier", + "src": "7083:5:11" + }, + "variables": [ + { + "name": "temp", + "nativeSrc": "7075:4:11", + "nodeType": "YulTypedName", + "src": "7075:4:11", + "type": "" + } + ] + } + ] + }, + "src": "7065:398:11" + }, + { + "nativeSrc": "7476:25:11", + "nodeType": "YulVariableDeclaration", + "src": "7476:25:11", + "value": { + "arguments": [ + { + "name": "end", + "nativeSrc": "7489:3:11", + "nodeType": "YulIdentifier", + "src": "7489:3:11" + }, + { + "name": "result", + "nativeSrc": "7494:6:11", + "nodeType": "YulIdentifier", + "src": "7494:6:11" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "7485:3:11", + "nodeType": "YulIdentifier", + "src": "7485:3:11" + }, + "nativeSrc": "7485:16:11", + "nodeType": "YulFunctionCall", + "src": "7485:16:11" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "7480:1:11", + "nodeType": "YulTypedName", + "src": "7480:1:11", + "type": "" + } + ] + }, + { + "nativeSrc": "7514:27:11", + "nodeType": "YulAssignment", + "src": "7514:27:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "7528:6:11", + "nodeType": "YulIdentifier", + "src": "7528:6:11" + }, + { + "kind": "number", + "nativeSrc": "7536:4:11", + "nodeType": "YulLiteral", + "src": "7536:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "7524:3:11", + "nodeType": "YulIdentifier", + "src": "7524:3:11" + }, + "nativeSrc": "7524:17:11", + "nodeType": "YulFunctionCall", + "src": "7524:17:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "7514:6:11", + "nodeType": "YulIdentifier", + "src": "7514:6:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "7624:6:11", + "nodeType": "YulIdentifier", + "src": "7624:6:11" + }, + { + "name": "n", + "nativeSrc": "7632:1:11", + "nodeType": "YulIdentifier", + "src": "7632:1:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7617:6:11", + "nodeType": "YulIdentifier", + "src": "7617:6:11" + }, + "nativeSrc": "7617:17:11", + "nodeType": "YulFunctionCall", + "src": "7617:17:11" + }, + "nativeSrc": "7617:17:11", + "nodeType": "YulExpressionStatement", + "src": "7617:17:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5324, + "isOffset": false, + "isSlot": false, + "src": "6591:6:11", + "valueSize": 1 + }, + { + "declaration": 5324, + "isOffset": false, + "isSlot": false, + "src": "6653:6:11", + "valueSize": 1 + }, + { + "declaration": 5324, + "isOffset": false, + "isSlot": false, + "src": "6707:6:11", + "valueSize": 1 + }, + { + "declaration": 5324, + "isOffset": false, + "isSlot": false, + "src": "6780:6:11", + "valueSize": 1 + }, + { + "declaration": 5324, + "isOffset": false, + "isSlot": false, + "src": "7114:6:11", + "valueSize": 1 + }, + { + "declaration": 5324, + "isOffset": false, + "isSlot": false, + "src": "7128:6:11", + "valueSize": 1 + }, + { + "declaration": 5324, + "isOffset": false, + "isSlot": false, + "src": "7302:6:11", + "valueSize": 1 + }, + { + "declaration": 5324, + "isOffset": false, + "isSlot": false, + "src": "7494:6:11", + "valueSize": 1 + }, + { + "declaration": 5324, + "isOffset": false, + "isSlot": false, + "src": "7514:6:11", + "valueSize": 1 + }, + { + "declaration": 5324, + "isOffset": false, + "isSlot": false, + "src": "7528:6:11", + "valueSize": 1 + }, + { + "declaration": 5324, + "isOffset": false, + "isSlot": false, + "src": "7624:6:11", + "valueSize": 1 + }, + { + "declaration": 5321, + "isOffset": false, + "isSlot": false, + "src": "7083:5:11", + "valueSize": 1 + } + ], + "id": 5326, + "nodeType": "InlineAssembly", + "src": "6242:1423:11" + } + ] + }, + "documentation": { + "id": 5319, + "nodeType": "StructuredDocumentation", + "src": "6043:63:11", + "text": "@dev Returns the base 10 decimal representation of `value`." + }, + "id": 5328, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toString", + "nameLocation": "6120:8:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5322, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5321, + "mutability": "mutable", + "name": "value", + "nameLocation": "6137:5:11", + "nodeType": "VariableDeclaration", + "scope": 5328, + "src": "6129:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5320, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6129:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6128:15:11" + }, + "returnParameters": { + "id": 5325, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5324, + "mutability": "mutable", + "name": "result", + "nameLocation": "6181:6:11", + "nodeType": "VariableDeclaration", + "scope": 5328, + "src": "6167:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5323, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "6167:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "6166:22:11" + }, + "scope": 6145, + "src": "6111:1560:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5361, + "nodeType": "Block", + "src": "7822:630:11", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 5338, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5336, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5331, + "src": "7836:5:11", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "hexValue": "30", + "id": 5337, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7845:1:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "7836:10:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5346, + "nodeType": "IfStatement", + "src": "7832:47:11", + "trueBody": { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 5342, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5331, + "src": "7872:5:11", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 5341, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7864:7:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 5340, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7864:7:11", + "typeDescriptions": {} + } + }, + "id": 5343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7864:14:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5339, + "name": "toString", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5328, + 5362 + ], + "referencedDeclaration": 5328, + "src": "7855:8:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$", + "typeString": "function (uint256) pure returns (string memory)" + } + }, + "id": 5344, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7855:24:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 5335, + "id": 5345, + "nodeType": "Return", + "src": "7848:31:11" + } + }, + { + "id": 5359, + "nodeType": "UncheckedBlock", + "src": "7889:73:11", + "statements": [ + { + "expression": { + "id": 5357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5347, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5334, + "src": "7913:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5355, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5353, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "~", + "prefix": true, + "src": "7931:15:11", + "subExpression": { + "arguments": [ + { + "id": 5351, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5331, + "src": "7940:5:11", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 5350, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7932:7:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 5349, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7932:7:11", + "typeDescriptions": {} + } + }, + "id": 5352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7932:14:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31", + "id": 5354, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7949:1:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "7931:19:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5348, + "name": "toString", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5328, + 5362 + ], + "referencedDeclaration": 5328, + "src": "7922:8:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$", + "typeString": "function (uint256) pure returns (string memory)" + } + }, + "id": 5356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7922:29:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "7913:38:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "id": 5358, + "nodeType": "ExpressionStatement", + "src": "7913:38:11" + } + ] + }, + { + "AST": { + "nativeSrc": "8023:423:11", + "nodeType": "YulBlock", + "src": "8023:423:11", + "statements": [ + { + "nativeSrc": "8179:22:11", + "nodeType": "YulVariableDeclaration", + "src": "8179:22:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "8194:6:11", + "nodeType": "YulIdentifier", + "src": "8194:6:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "8188:5:11", + "nodeType": "YulIdentifier", + "src": "8188:5:11" + }, + "nativeSrc": "8188:13:11", + "nodeType": "YulFunctionCall", + "src": "8188:13:11" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "8183:1:11", + "nodeType": "YulTypedName", + "src": "8183:1:11", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "8248:6:11", + "nodeType": "YulIdentifier", + "src": "8248:6:11" + }, + { + "kind": "number", + "nativeSrc": "8256:4:11", + "nodeType": "YulLiteral", + "src": "8256:4:11", + "type": "", + "value": "0x2d" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8241:6:11", + "nodeType": "YulIdentifier", + "src": "8241:6:11" + }, + "nativeSrc": "8241:20:11", + "nodeType": "YulFunctionCall", + "src": "8241:20:11" + }, + "nativeSrc": "8241:20:11", + "nodeType": "YulExpressionStatement", + "src": "8241:20:11" + }, + { + "nativeSrc": "8302:24:11", + "nodeType": "YulAssignment", + "src": "8302:24:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "8316:6:11", + "nodeType": "YulIdentifier", + "src": "8316:6:11" + }, + { + "kind": "number", + "nativeSrc": "8324:1:11", + "nodeType": "YulLiteral", + "src": "8324:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "8312:3:11", + "nodeType": "YulIdentifier", + "src": "8312:3:11" + }, + "nativeSrc": "8312:14:11", + "nodeType": "YulFunctionCall", + "src": "8312:14:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "8302:6:11", + "nodeType": "YulIdentifier", + "src": "8302:6:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "8389:6:11", + "nodeType": "YulIdentifier", + "src": "8389:6:11" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "8401:1:11", + "nodeType": "YulIdentifier", + "src": "8401:1:11" + }, + { + "kind": "number", + "nativeSrc": "8404:1:11", + "nodeType": "YulLiteral", + "src": "8404:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8397:3:11", + "nodeType": "YulIdentifier", + "src": "8397:3:11" + }, + "nativeSrc": "8397:9:11", + "nodeType": "YulFunctionCall", + "src": "8397:9:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8382:6:11", + "nodeType": "YulIdentifier", + "src": "8382:6:11" + }, + "nativeSrc": "8382:25:11", + "nodeType": "YulFunctionCall", + "src": "8382:25:11" + }, + "nativeSrc": "8382:25:11", + "nodeType": "YulExpressionStatement", + "src": "8382:25:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5334, + "isOffset": false, + "isSlot": false, + "src": "8194:6:11", + "valueSize": 1 + }, + { + "declaration": 5334, + "isOffset": false, + "isSlot": false, + "src": "8248:6:11", + "valueSize": 1 + }, + { + "declaration": 5334, + "isOffset": false, + "isSlot": false, + "src": "8302:6:11", + "valueSize": 1 + }, + { + "declaration": 5334, + "isOffset": false, + "isSlot": false, + "src": "8316:6:11", + "valueSize": 1 + }, + { + "declaration": 5334, + "isOffset": false, + "isSlot": false, + "src": "8389:6:11", + "valueSize": 1 + } + ], + "id": 5360, + "nodeType": "InlineAssembly", + "src": "8014:432:11" + } + ] + }, + "documentation": { + "id": 5329, + "nodeType": "StructuredDocumentation", + "src": "7677:63:11", + "text": "@dev Returns the base 10 decimal representation of `value`." + }, + "id": 5362, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toString", + "nameLocation": "7754:8:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5332, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5331, + "mutability": "mutable", + "name": "value", + "nameLocation": "7770:5:11", + "nodeType": "VariableDeclaration", + "scope": 5362, + "src": "7763:12:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 5330, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "7763:6:11", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "7762:14:11" + }, + "returnParameters": { + "id": 5335, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5334, + "mutability": "mutable", + "name": "result", + "nameLocation": "7814:6:11", + "nodeType": "VariableDeclaration", + "scope": 5362, + "src": "7800:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5333, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "7800:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "7799:22:11" + }, + "scope": 6145, + "src": "7745:707:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5380, + "nodeType": "Block", + "src": "9226:371:11", + "statements": [ + { + "expression": { + "id": 5377, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5372, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5370, + "src": "9236:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 5374, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5365, + "src": "9265:5:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5375, + "name": "byteCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5367, + "src": "9272:9:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5373, + "name": "toHexStringNoPrefix", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5393, + 5451, + 5493, + 5519 + ], + "referencedDeclaration": 5393, + "src": "9245:19:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$", + "typeString": "function (uint256,uint256) pure returns (string memory)" + } + }, + "id": 5376, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9245:37:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "9236:46:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "id": 5378, + "nodeType": "ExpressionStatement", + "src": "9236:46:11" + }, + { + "AST": { + "nativeSrc": "9344:247:11", + "nodeType": "YulBlock", + "src": "9344:247:11", + "statements": [ + { + "nativeSrc": "9358:30:11", + "nodeType": "YulVariableDeclaration", + "src": "9358:30:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "9377:6:11", + "nodeType": "YulIdentifier", + "src": "9377:6:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "9371:5:11", + "nodeType": "YulIdentifier", + "src": "9371:5:11" + }, + "nativeSrc": "9371:13:11", + "nodeType": "YulFunctionCall", + "src": "9371:13:11" + }, + { + "kind": "number", + "nativeSrc": "9386:1:11", + "nodeType": "YulLiteral", + "src": "9386:1:11", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9367:3:11", + "nodeType": "YulIdentifier", + "src": "9367:3:11" + }, + "nativeSrc": "9367:21:11", + "nodeType": "YulFunctionCall", + "src": "9367:21:11" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "9362:1:11", + "nodeType": "YulTypedName", + "src": "9362:1:11", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "9431:6:11", + "nodeType": "YulIdentifier", + "src": "9431:6:11" + }, + { + "kind": "number", + "nativeSrc": "9439:6:11", + "nodeType": "YulLiteral", + "src": "9439:6:11", + "type": "", + "value": "0x3078" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9424:6:11", + "nodeType": "YulIdentifier", + "src": "9424:6:11" + }, + "nativeSrc": "9424:22:11", + "nodeType": "YulFunctionCall", + "src": "9424:22:11" + }, + "nativeSrc": "9424:22:11", + "nodeType": "YulExpressionStatement", + "src": "9424:22:11" + }, + { + "nativeSrc": "9485:24:11", + "nodeType": "YulAssignment", + "src": "9485:24:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "9499:6:11", + "nodeType": "YulIdentifier", + "src": "9499:6:11" + }, + { + "kind": "number", + "nativeSrc": "9507:1:11", + "nodeType": "YulLiteral", + "src": "9507:1:11", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "9495:3:11", + "nodeType": "YulIdentifier", + "src": "9495:3:11" + }, + "nativeSrc": "9495:14:11", + "nodeType": "YulFunctionCall", + "src": "9495:14:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "9485:6:11", + "nodeType": "YulIdentifier", + "src": "9485:6:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "9550:6:11", + "nodeType": "YulIdentifier", + "src": "9550:6:11" + }, + { + "name": "n", + "nativeSrc": "9558:1:11", + "nodeType": "YulIdentifier", + "src": "9558:1:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9543:6:11", + "nodeType": "YulIdentifier", + "src": "9543:6:11" + }, + "nativeSrc": "9543:17:11", + "nodeType": "YulFunctionCall", + "src": "9543:17:11" + }, + "nativeSrc": "9543:17:11", + "nodeType": "YulExpressionStatement", + "src": "9543:17:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5370, + "isOffset": false, + "isSlot": false, + "src": "9377:6:11", + "valueSize": 1 + }, + { + "declaration": 5370, + "isOffset": false, + "isSlot": false, + "src": "9431:6:11", + "valueSize": 1 + }, + { + "declaration": 5370, + "isOffset": false, + "isSlot": false, + "src": "9485:6:11", + "valueSize": 1 + }, + { + "declaration": 5370, + "isOffset": false, + "isSlot": false, + "src": "9499:6:11", + "valueSize": 1 + }, + { + "declaration": 5370, + "isOffset": false, + "isSlot": false, + "src": "9550:6:11", + "valueSize": 1 + } + ], + "id": 5379, + "nodeType": "InlineAssembly", + "src": "9335:256:11" + } + ] + }, + "documentation": { + "id": 5363, + "nodeType": "StructuredDocumentation", + "src": "8741:352:11", + "text": "@dev Returns the hexadecimal representation of `value`,\n left-padded to an input length of `byteCount` bytes.\n The output is prefixed with \"0x\" encoded using 2 hexadecimal digits per byte,\n giving a total length of `byteCount * 2 + 2` bytes.\n Reverts if `byteCount` is too small for the output to contain all the digits." + }, + "id": 5381, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toHexString", + "nameLocation": "9107:11:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5368, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5365, + "mutability": "mutable", + "name": "value", + "nameLocation": "9127:5:11", + "nodeType": "VariableDeclaration", + "scope": 5381, + "src": "9119:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5364, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9119:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5367, + "mutability": "mutable", + "name": "byteCount", + "nameLocation": "9142:9:11", + "nodeType": "VariableDeclaration", + "scope": 5381, + "src": "9134:17:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5366, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9134:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9118:34:11" + }, + "returnParameters": { + "id": 5371, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5370, + "mutability": "mutable", + "name": "result", + "nameLocation": "9214:6:11", + "nodeType": "VariableDeclaration", + "scope": 5381, + "src": "9200:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5369, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "9200:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "9199:22:11" + }, + "scope": 6145, + "src": "9098:499:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5392, + "nodeType": "Block", + "src": "10103:1689:11", + "statements": [ + { + "AST": { + "nativeSrc": "10165:1621:11", + "nodeType": "YulBlock", + "src": "10165:1621:11", + "statements": [ + { + "nativeSrc": "10485:72:11", + "nodeType": "YulAssignment", + "src": "10485:72:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10505:4:11", + "nodeType": "YulLiteral", + "src": "10505:4:11", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "10499:5:11", + "nodeType": "YulIdentifier", + "src": "10499:5:11" + }, + "nativeSrc": "10499:11:11", + "nodeType": "YulFunctionCall", + "src": "10499:11:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10524:1:11", + "nodeType": "YulLiteral", + "src": "10524:1:11", + "type": "", + "value": "1" + }, + { + "name": "byteCount", + "nativeSrc": "10527:9:11", + "nodeType": "YulIdentifier", + "src": "10527:9:11" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "10520:3:11", + "nodeType": "YulIdentifier", + "src": "10520:3:11" + }, + "nativeSrc": "10520:17:11", + "nodeType": "YulFunctionCall", + "src": "10520:17:11" + }, + { + "kind": "number", + "nativeSrc": "10539:4:11", + "nodeType": "YulLiteral", + "src": "10539:4:11", + "type": "", + "value": "0x42" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10516:3:11", + "nodeType": "YulIdentifier", + "src": "10516:3:11" + }, + "nativeSrc": "10516:28:11", + "nodeType": "YulFunctionCall", + "src": "10516:28:11" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10550:4:11", + "nodeType": "YulLiteral", + "src": "10550:4:11", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "10546:3:11", + "nodeType": "YulIdentifier", + "src": "10546:3:11" + }, + "nativeSrc": "10546:9:11", + "nodeType": "YulFunctionCall", + "src": "10546:9:11" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "10512:3:11", + "nodeType": "YulIdentifier", + "src": "10512:3:11" + }, + "nativeSrc": "10512:44:11", + "nodeType": "YulFunctionCall", + "src": "10512:44:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10495:3:11", + "nodeType": "YulIdentifier", + "src": "10495:3:11" + }, + "nativeSrc": "10495:62:11", + "nodeType": "YulFunctionCall", + "src": "10495:62:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "10485:6:11", + "nodeType": "YulIdentifier", + "src": "10485:6:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10577:4:11", + "nodeType": "YulLiteral", + "src": "10577:4:11", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "result", + "nativeSrc": "10587:6:11", + "nodeType": "YulIdentifier", + "src": "10587:6:11" + }, + { + "kind": "number", + "nativeSrc": "10595:4:11", + "nodeType": "YulLiteral", + "src": "10595:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10583:3:11", + "nodeType": "YulIdentifier", + "src": "10583:3:11" + }, + "nativeSrc": "10583:17:11", + "nodeType": "YulFunctionCall", + "src": "10583:17:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "10570:6:11", + "nodeType": "YulIdentifier", + "src": "10570:6:11" + }, + "nativeSrc": "10570:31:11", + "nodeType": "YulFunctionCall", + "src": "10570:31:11" + }, + "nativeSrc": "10570:31:11", + "nodeType": "YulExpressionStatement", + "src": "10570:31:11" + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "10641:6:11", + "nodeType": "YulIdentifier", + "src": "10641:6:11" + }, + { + "kind": "number", + "nativeSrc": "10649:1:11", + "nodeType": "YulLiteral", + "src": "10649:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "10634:6:11", + "nodeType": "YulIdentifier", + "src": "10634:6:11" + }, + "nativeSrc": "10634:17:11", + "nodeType": "YulFunctionCall", + "src": "10634:17:11" + }, + "nativeSrc": "10634:17:11", + "nodeType": "YulExpressionStatement", + "src": "10634:17:11" + }, + { + "nativeSrc": "10703:17:11", + "nodeType": "YulVariableDeclaration", + "src": "10703:17:11", + "value": { + "name": "result", + "nativeSrc": "10714:6:11", + "nodeType": "YulIdentifier", + "src": "10714:6:11" + }, + "variables": [ + { + "name": "end", + "nativeSrc": "10707:3:11", + "nodeType": "YulTypedName", + "src": "10707:3:11", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10846:4:11", + "nodeType": "YulLiteral", + "src": "10846:4:11", + "type": "", + "value": "0x0f" + }, + { + "kind": "number", + "nativeSrc": "10852:34:11", + "nodeType": "YulLiteral", + "src": "10852:34:11", + "type": "", + "value": "0x30313233343536373839616263646566" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "10839:6:11", + "nodeType": "YulIdentifier", + "src": "10839:6:11" + }, + "nativeSrc": "10839:48:11", + "nodeType": "YulFunctionCall", + "src": "10839:48:11" + }, + "nativeSrc": "10839:48:11", + "nodeType": "YulExpressionStatement", + "src": "10839:48:11" + }, + { + "nativeSrc": "10901:51:11", + "nodeType": "YulVariableDeclaration", + "src": "10901:51:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "10918:6:11", + "nodeType": "YulIdentifier", + "src": "10918:6:11" + }, + { + "arguments": [ + { + "name": "byteCount", + "nativeSrc": "10930:9:11", + "nodeType": "YulIdentifier", + "src": "10930:9:11" + }, + { + "name": "byteCount", + "nativeSrc": "10941:9:11", + "nodeType": "YulIdentifier", + "src": "10941:9:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10926:3:11", + "nodeType": "YulIdentifier", + "src": "10926:3:11" + }, + "nativeSrc": "10926:25:11", + "nodeType": "YulFunctionCall", + "src": "10926:25:11" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "10914:3:11", + "nodeType": "YulIdentifier", + "src": "10914:3:11" + }, + "nativeSrc": "10914:38:11", + "nodeType": "YulFunctionCall", + "src": "10914:38:11" + }, + "variables": [ + { + "name": "start", + "nativeSrc": "10905:5:11", + "nodeType": "YulTypedName", + "src": "10905:5:11", + "type": "" + } + ] + }, + { + "nativeSrc": "10965:15:11", + "nodeType": "YulVariableDeclaration", + "src": "10965:15:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10978:1:11", + "nodeType": "YulLiteral", + "src": "10978:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "10974:3:11", + "nodeType": "YulIdentifier", + "src": "10974:3:11" + }, + "nativeSrc": "10974:6:11", + "nodeType": "YulFunctionCall", + "src": "10974:6:11" + }, + "variables": [ + { + "name": "w", + "nativeSrc": "10969:1:11", + "nodeType": "YulTypedName", + "src": "10969:1:11", + "type": "" + } + ] + }, + { + "nativeSrc": "11001:17:11", + "nodeType": "YulVariableDeclaration", + "src": "11001:17:11", + "value": { + "name": "value", + "nativeSrc": "11013:5:11", + "nodeType": "YulIdentifier", + "src": "11013:5:11" + }, + "variables": [ + { + "name": "temp", + "nativeSrc": "11005:4:11", + "nodeType": "YulTypedName", + "src": "11005:4:11", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "11211:294:11", + "nodeType": "YulBlock", + "src": "11211:294:11", + "statements": [ + { + "nativeSrc": "11229:24:11", + "nodeType": "YulAssignment", + "src": "11229:24:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "11243:6:11", + "nodeType": "YulIdentifier", + "src": "11243:6:11" + }, + { + "name": "w", + "nativeSrc": "11251:1:11", + "nodeType": "YulIdentifier", + "src": "11251:1:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11239:3:11", + "nodeType": "YulIdentifier", + "src": "11239:3:11" + }, + "nativeSrc": "11239:14:11", + "nodeType": "YulFunctionCall", + "src": "11239:14:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "11229:6:11", + "nodeType": "YulIdentifier", + "src": "11229:6:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "11303:6:11", + "nodeType": "YulIdentifier", + "src": "11303:6:11" + }, + { + "kind": "number", + "nativeSrc": "11311:1:11", + "nodeType": "YulLiteral", + "src": "11311:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11299:3:11", + "nodeType": "YulIdentifier", + "src": "11299:3:11" + }, + "nativeSrc": "11299:14:11", + "nodeType": "YulFunctionCall", + "src": "11299:14:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "temp", + "nativeSrc": "11325:4:11", + "nodeType": "YulIdentifier", + "src": "11325:4:11" + }, + { + "kind": "number", + "nativeSrc": "11331:2:11", + "nodeType": "YulLiteral", + "src": "11331:2:11", + "type": "", + "value": "15" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "11321:3:11", + "nodeType": "YulIdentifier", + "src": "11321:3:11" + }, + "nativeSrc": "11321:13:11", + "nodeType": "YulFunctionCall", + "src": "11321:13:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "11315:5:11", + "nodeType": "YulIdentifier", + "src": "11315:5:11" + }, + "nativeSrc": "11315:20:11", + "nodeType": "YulFunctionCall", + "src": "11315:20:11" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "11291:7:11", + "nodeType": "YulIdentifier", + "src": "11291:7:11" + }, + "nativeSrc": "11291:45:11", + "nodeType": "YulFunctionCall", + "src": "11291:45:11" + }, + "nativeSrc": "11291:45:11", + "nodeType": "YulExpressionStatement", + "src": "11291:45:11" + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "11361:6:11", + "nodeType": "YulIdentifier", + "src": "11361:6:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "11383:1:11", + "nodeType": "YulLiteral", + "src": "11383:1:11", + "type": "", + "value": "4" + }, + { + "name": "temp", + "nativeSrc": "11386:4:11", + "nodeType": "YulIdentifier", + "src": "11386:4:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "11379:3:11", + "nodeType": "YulIdentifier", + "src": "11379:3:11" + }, + "nativeSrc": "11379:12:11", + "nodeType": "YulFunctionCall", + "src": "11379:12:11" + }, + { + "kind": "number", + "nativeSrc": "11393:2:11", + "nodeType": "YulLiteral", + "src": "11393:2:11", + "type": "", + "value": "15" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "11375:3:11", + "nodeType": "YulIdentifier", + "src": "11375:3:11" + }, + "nativeSrc": "11375:21:11", + "nodeType": "YulFunctionCall", + "src": "11375:21:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "11369:5:11", + "nodeType": "YulIdentifier", + "src": "11369:5:11" + }, + "nativeSrc": "11369:28:11", + "nodeType": "YulFunctionCall", + "src": "11369:28:11" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "11353:7:11", + "nodeType": "YulIdentifier", + "src": "11353:7:11" + }, + "nativeSrc": "11353:45:11", + "nodeType": "YulFunctionCall", + "src": "11353:45:11" + }, + "nativeSrc": "11353:45:11", + "nodeType": "YulExpressionStatement", + "src": "11353:45:11" + }, + { + "nativeSrc": "11415:20:11", + "nodeType": "YulAssignment", + "src": "11415:20:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "11427:1:11", + "nodeType": "YulLiteral", + "src": "11427:1:11", + "type": "", + "value": "8" + }, + { + "name": "temp", + "nativeSrc": "11430:4:11", + "nodeType": "YulIdentifier", + "src": "11430:4:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "11423:3:11", + "nodeType": "YulIdentifier", + "src": "11423:3:11" + }, + "nativeSrc": "11423:12:11", + "nodeType": "YulFunctionCall", + "src": "11423:12:11" + }, + "variableNames": [ + { + "name": "temp", + "nativeSrc": "11415:4:11", + "nodeType": "YulIdentifier", + "src": "11415:4:11" + } + ] + }, + { + "body": { + "nativeSrc": "11482:9:11", + "nodeType": "YulBlock", + "src": "11482:9:11", + "statements": [ + { + "nativeSrc": "11484:5:11", + "nodeType": "YulBreak", + "src": "11484:5:11" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "11466:6:11", + "nodeType": "YulIdentifier", + "src": "11466:6:11" + }, + { + "name": "start", + "nativeSrc": "11474:5:11", + "nodeType": "YulIdentifier", + "src": "11474:5:11" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "11462:3:11", + "nodeType": "YulIdentifier", + "src": "11462:3:11" + }, + "nativeSrc": "11462:18:11", + "nodeType": "YulFunctionCall", + "src": "11462:18:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "11455:6:11", + "nodeType": "YulIdentifier", + "src": "11455:6:11" + }, + "nativeSrc": "11455:26:11", + "nodeType": "YulFunctionCall", + "src": "11455:26:11" + }, + "nativeSrc": "11452:39:11", + "nodeType": "YulIf", + "src": "11452:39:11" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "11206:1:11", + "nodeType": "YulLiteral", + "src": "11206:1:11", + "type": "", + "value": "1" + }, + "nativeSrc": "11199:306:11", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "11208:2:11", + "nodeType": "YulBlock", + "src": "11208:2:11", + "statements": [] + }, + "pre": { + "nativeSrc": "11203:2:11", + "nodeType": "YulBlock", + "src": "11203:2:11", + "statements": [] + }, + "src": "11199:306:11" + }, + { + "body": { + "nativeSrc": "11526:121:11", + "nodeType": "YulBlock", + "src": "11526:121:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "11551:4:11", + "nodeType": "YulLiteral", + "src": "11551:4:11", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "11557:10:11", + "nodeType": "YulLiteral", + "src": "11557:10:11", + "type": "", + "value": "0x2194895a" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11544:6:11", + "nodeType": "YulIdentifier", + "src": "11544:6:11" + }, + "nativeSrc": "11544:24:11", + "nodeType": "YulFunctionCall", + "src": "11544:24:11" + }, + "nativeSrc": "11544:24:11", + "nodeType": "YulExpressionStatement", + "src": "11544:24:11" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "11622:4:11", + "nodeType": "YulLiteral", + "src": "11622:4:11", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "11628:4:11", + "nodeType": "YulLiteral", + "src": "11628:4:11", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "11615:6:11", + "nodeType": "YulIdentifier", + "src": "11615:6:11" + }, + "nativeSrc": "11615:18:11", + "nodeType": "YulFunctionCall", + "src": "11615:18:11" + }, + "nativeSrc": "11615:18:11", + "nodeType": "YulExpressionStatement", + "src": "11615:18:11" + } + ] + }, + "condition": { + "name": "temp", + "nativeSrc": "11521:4:11", + "nodeType": "YulIdentifier", + "src": "11521:4:11" + }, + "nativeSrc": "11518:129:11", + "nodeType": "YulIf", + "src": "11518:129:11" + }, + { + "nativeSrc": "11660:25:11", + "nodeType": "YulVariableDeclaration", + "src": "11660:25:11", + "value": { + "arguments": [ + { + "name": "end", + "nativeSrc": "11673:3:11", + "nodeType": "YulIdentifier", + "src": "11673:3:11" + }, + { + "name": "result", + "nativeSrc": "11678:6:11", + "nodeType": "YulIdentifier", + "src": "11678:6:11" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "11669:3:11", + "nodeType": "YulIdentifier", + "src": "11669:3:11" + }, + "nativeSrc": "11669:16:11", + "nodeType": "YulFunctionCall", + "src": "11669:16:11" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "11664:1:11", + "nodeType": "YulTypedName", + "src": "11664:1:11", + "type": "" + } + ] + }, + { + "nativeSrc": "11698:27:11", + "nodeType": "YulAssignment", + "src": "11698:27:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "11712:6:11", + "nodeType": "YulIdentifier", + "src": "11712:6:11" + }, + { + "kind": "number", + "nativeSrc": "11720:4:11", + "nodeType": "YulLiteral", + "src": "11720:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "11708:3:11", + "nodeType": "YulIdentifier", + "src": "11708:3:11" + }, + "nativeSrc": "11708:17:11", + "nodeType": "YulFunctionCall", + "src": "11708:17:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "11698:6:11", + "nodeType": "YulIdentifier", + "src": "11698:6:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "11745:6:11", + "nodeType": "YulIdentifier", + "src": "11745:6:11" + }, + { + "name": "n", + "nativeSrc": "11753:1:11", + "nodeType": "YulIdentifier", + "src": "11753:1:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11738:6:11", + "nodeType": "YulIdentifier", + "src": "11738:6:11" + }, + "nativeSrc": "11738:17:11", + "nodeType": "YulFunctionCall", + "src": "11738:17:11" + }, + "nativeSrc": "11738:17:11", + "nodeType": "YulExpressionStatement", + "src": "11738:17:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5386, + "isOffset": false, + "isSlot": false, + "src": "10527:9:11", + "valueSize": 1 + }, + { + "declaration": 5386, + "isOffset": false, + "isSlot": false, + "src": "10930:9:11", + "valueSize": 1 + }, + { + "declaration": 5386, + "isOffset": false, + "isSlot": false, + "src": "10941:9:11", + "valueSize": 1 + }, + { + "declaration": 5389, + "isOffset": false, + "isSlot": false, + "src": "10485:6:11", + "valueSize": 1 + }, + { + "declaration": 5389, + "isOffset": false, + "isSlot": false, + "src": "10587:6:11", + "valueSize": 1 + }, + { + "declaration": 5389, + "isOffset": false, + "isSlot": false, + "src": "10641:6:11", + "valueSize": 1 + }, + { + "declaration": 5389, + "isOffset": false, + "isSlot": false, + "src": "10714:6:11", + "valueSize": 1 + }, + { + "declaration": 5389, + "isOffset": false, + "isSlot": false, + "src": "10918:6:11", + "valueSize": 1 + }, + { + "declaration": 5389, + "isOffset": false, + "isSlot": false, + "src": "11229:6:11", + "valueSize": 1 + }, + { + "declaration": 5389, + "isOffset": false, + "isSlot": false, + "src": "11243:6:11", + "valueSize": 1 + }, + { + "declaration": 5389, + "isOffset": false, + "isSlot": false, + "src": "11303:6:11", + "valueSize": 1 + }, + { + "declaration": 5389, + "isOffset": false, + "isSlot": false, + "src": "11361:6:11", + "valueSize": 1 + }, + { + "declaration": 5389, + "isOffset": false, + "isSlot": false, + "src": "11466:6:11", + "valueSize": 1 + }, + { + "declaration": 5389, + "isOffset": false, + "isSlot": false, + "src": "11678:6:11", + "valueSize": 1 + }, + { + "declaration": 5389, + "isOffset": false, + "isSlot": false, + "src": "11698:6:11", + "valueSize": 1 + }, + { + "declaration": 5389, + "isOffset": false, + "isSlot": false, + "src": "11712:6:11", + "valueSize": 1 + }, + { + "declaration": 5389, + "isOffset": false, + "isSlot": false, + "src": "11745:6:11", + "valueSize": 1 + }, + { + "declaration": 5384, + "isOffset": false, + "isSlot": false, + "src": "11013:5:11", + "valueSize": 1 + } + ], + "id": 5391, + "nodeType": "InlineAssembly", + "src": "10156:1630:11" + } + ] + }, + "documentation": { + "id": 5382, + "nodeType": "StructuredDocumentation", + "src": "9603:359:11", + "text": "@dev Returns the hexadecimal representation of `value`,\n left-padded to an input length of `byteCount` bytes.\n The output is not prefixed with \"0x\" and is encoded using 2 hexadecimal digits per byte,\n giving a total length of `byteCount * 2` bytes.\n Reverts if `byteCount` is too small for the output to contain all the digits." + }, + "id": 5393, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toHexStringNoPrefix", + "nameLocation": "9976:19:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5387, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5384, + "mutability": "mutable", + "name": "value", + "nameLocation": "10004:5:11", + "nodeType": "VariableDeclaration", + "scope": 5393, + "src": "9996:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5383, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9996:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5386, + "mutability": "mutable", + "name": "byteCount", + "nameLocation": "10019:9:11", + "nodeType": "VariableDeclaration", + "scope": 5393, + "src": "10011:17:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5385, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10011:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9995:34:11" + }, + "returnParameters": { + "id": 5390, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5389, + "mutability": "mutable", + "name": "result", + "nameLocation": "10091:6:11", + "nodeType": "VariableDeclaration", + "scope": 5393, + "src": "10077:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5388, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "10077:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "10076:22:11" + }, + "scope": 6145, + "src": "9967:1825:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5408, + "nodeType": "Block", + "src": "12147:360:11", + "statements": [ + { + "expression": { + "id": 5405, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5401, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5399, + "src": "12157:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 5403, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5396, + "src": "12186:5:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5402, + "name": "toHexStringNoPrefix", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5393, + 5451, + 5493, + 5519 + ], + "referencedDeclaration": 5451, + "src": "12166:19:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$", + "typeString": "function (uint256) pure returns (string memory)" + } + }, + "id": 5404, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12166:26:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "12157:35:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "id": 5406, + "nodeType": "ExpressionStatement", + "src": "12157:35:11" + }, + { + "AST": { + "nativeSrc": "12254:247:11", + "nodeType": "YulBlock", + "src": "12254:247:11", + "statements": [ + { + "nativeSrc": "12268:30:11", + "nodeType": "YulVariableDeclaration", + "src": "12268:30:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "12287:6:11", + "nodeType": "YulIdentifier", + "src": "12287:6:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "12281:5:11", + "nodeType": "YulIdentifier", + "src": "12281:5:11" + }, + "nativeSrc": "12281:13:11", + "nodeType": "YulFunctionCall", + "src": "12281:13:11" + }, + { + "kind": "number", + "nativeSrc": "12296:1:11", + "nodeType": "YulLiteral", + "src": "12296:1:11", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12277:3:11", + "nodeType": "YulIdentifier", + "src": "12277:3:11" + }, + "nativeSrc": "12277:21:11", + "nodeType": "YulFunctionCall", + "src": "12277:21:11" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "12272:1:11", + "nodeType": "YulTypedName", + "src": "12272:1:11", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "12341:6:11", + "nodeType": "YulIdentifier", + "src": "12341:6:11" + }, + { + "kind": "number", + "nativeSrc": "12349:6:11", + "nodeType": "YulLiteral", + "src": "12349:6:11", + "type": "", + "value": "0x3078" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12334:6:11", + "nodeType": "YulIdentifier", + "src": "12334:6:11" + }, + "nativeSrc": "12334:22:11", + "nodeType": "YulFunctionCall", + "src": "12334:22:11" + }, + "nativeSrc": "12334:22:11", + "nodeType": "YulExpressionStatement", + "src": "12334:22:11" + }, + { + "nativeSrc": "12395:24:11", + "nodeType": "YulAssignment", + "src": "12395:24:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "12409:6:11", + "nodeType": "YulIdentifier", + "src": "12409:6:11" + }, + { + "kind": "number", + "nativeSrc": "12417:1:11", + "nodeType": "YulLiteral", + "src": "12417:1:11", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "12405:3:11", + "nodeType": "YulIdentifier", + "src": "12405:3:11" + }, + "nativeSrc": "12405:14:11", + "nodeType": "YulFunctionCall", + "src": "12405:14:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "12395:6:11", + "nodeType": "YulIdentifier", + "src": "12395:6:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "12460:6:11", + "nodeType": "YulIdentifier", + "src": "12460:6:11" + }, + { + "name": "n", + "nativeSrc": "12468:1:11", + "nodeType": "YulIdentifier", + "src": "12468:1:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12453:6:11", + "nodeType": "YulIdentifier", + "src": "12453:6:11" + }, + "nativeSrc": "12453:17:11", + "nodeType": "YulFunctionCall", + "src": "12453:17:11" + }, + "nativeSrc": "12453:17:11", + "nodeType": "YulExpressionStatement", + "src": "12453:17:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5399, + "isOffset": false, + "isSlot": false, + "src": "12287:6:11", + "valueSize": 1 + }, + { + "declaration": 5399, + "isOffset": false, + "isSlot": false, + "src": "12341:6:11", + "valueSize": 1 + }, + { + "declaration": 5399, + "isOffset": false, + "isSlot": false, + "src": "12395:6:11", + "valueSize": 1 + }, + { + "declaration": 5399, + "isOffset": false, + "isSlot": false, + "src": "12409:6:11", + "valueSize": 1 + }, + { + "declaration": 5399, + "isOffset": false, + "isSlot": false, + "src": "12460:6:11", + "valueSize": 1 + } + ], + "id": 5407, + "nodeType": "InlineAssembly", + "src": "12245:256:11" + } + ] + }, + "documentation": { + "id": 5394, + "nodeType": "StructuredDocumentation", + "src": "11798:263:11", + "text": "@dev Returns the hexadecimal representation of `value`.\n The output is prefixed with \"0x\" and encoded using 2 hexadecimal digits per byte.\n As address are 20 bytes long, the output will left-padded to have\n a length of `20 * 2 + 2` bytes." + }, + "id": 5409, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toHexString", + "nameLocation": "12075:11:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5397, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5396, + "mutability": "mutable", + "name": "value", + "nameLocation": "12095:5:11", + "nodeType": "VariableDeclaration", + "scope": 5409, + "src": "12087:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5395, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12087:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12086:15:11" + }, + "returnParameters": { + "id": 5400, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5399, + "mutability": "mutable", + "name": "result", + "nameLocation": "12139:6:11", + "nodeType": "VariableDeclaration", + "scope": 5409, + "src": "12125:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5398, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "12125:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "12124:22:11" + }, + "scope": 6145, + "src": "12066:441:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5424, + "nodeType": "Block", + "src": "12844:572:11", + "statements": [ + { + "expression": { + "id": 5421, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5417, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5415, + "src": "12854:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 5419, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5412, + "src": "12883:5:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5418, + "name": "toHexStringNoPrefix", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5393, + 5451, + 5493, + 5519 + ], + "referencedDeclaration": 5451, + "src": "12863:19:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$", + "typeString": "function (uint256) pure returns (string memory)" + } + }, + "id": 5420, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12863:26:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "12854:35:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "id": 5422, + "nodeType": "ExpressionStatement", + "src": "12854:35:11" + }, + { + "AST": { + "nativeSrc": "12951:459:11", + "nodeType": "YulBlock", + "src": "12951:459:11", + "statements": [ + { + "nativeSrc": "12965:52:11", + "nodeType": "YulVariableDeclaration", + "src": "12965:52:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12982:1:11", + "nodeType": "YulLiteral", + "src": "12982:1:11", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "12995:6:11", + "nodeType": "YulIdentifier", + "src": "12995:6:11" + }, + { + "kind": "number", + "nativeSrc": "13003:4:11", + "nodeType": "YulLiteral", + "src": "13003:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12991:3:11", + "nodeType": "YulIdentifier", + "src": "12991:3:11" + }, + "nativeSrc": "12991:17:11", + "nodeType": "YulFunctionCall", + "src": "12991:17:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "12985:5:11", + "nodeType": "YulIdentifier", + "src": "12985:5:11" + }, + "nativeSrc": "12985:24:11", + "nodeType": "YulFunctionCall", + "src": "12985:24:11" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "12977:4:11", + "nodeType": "YulIdentifier", + "src": "12977:4:11" + }, + "nativeSrc": "12977:33:11", + "nodeType": "YulFunctionCall", + "src": "12977:33:11" + }, + { + "kind": "number", + "nativeSrc": "13012:4:11", + "nodeType": "YulLiteral", + "src": "13012:4:11", + "type": "", + "value": "0x30" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "12974:2:11", + "nodeType": "YulIdentifier", + "src": "12974:2:11" + }, + "nativeSrc": "12974:43:11", + "nodeType": "YulFunctionCall", + "src": "12974:43:11" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "12969:1:11", + "nodeType": "YulTypedName", + "src": "12969:1:11", + "type": "" + } + ] + }, + { + "nativeSrc": "13066:30:11", + "nodeType": "YulVariableDeclaration", + "src": "13066:30:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "13085:6:11", + "nodeType": "YulIdentifier", + "src": "13085:6:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "13079:5:11", + "nodeType": "YulIdentifier", + "src": "13079:5:11" + }, + "nativeSrc": "13079:13:11", + "nodeType": "YulFunctionCall", + "src": "13079:13:11" + }, + { + "kind": "number", + "nativeSrc": "13094:1:11", + "nodeType": "YulLiteral", + "src": "13094:1:11", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13075:3:11", + "nodeType": "YulIdentifier", + "src": "13075:3:11" + }, + "nativeSrc": "13075:21:11", + "nodeType": "YulFunctionCall", + "src": "13075:21:11" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "13070:1:11", + "nodeType": "YulTypedName", + "src": "13070:1:11", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "13143:6:11", + "nodeType": "YulIdentifier", + "src": "13143:6:11" + }, + { + "name": "o", + "nativeSrc": "13151:1:11", + "nodeType": "YulIdentifier", + "src": "13151:1:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13139:3:11", + "nodeType": "YulIdentifier", + "src": "13139:3:11" + }, + "nativeSrc": "13139:14:11", + "nodeType": "YulFunctionCall", + "src": "13139:14:11" + }, + { + "kind": "number", + "nativeSrc": "13155:6:11", + "nodeType": "YulLiteral", + "src": "13155:6:11", + "type": "", + "value": "0x3078" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13132:6:11", + "nodeType": "YulIdentifier", + "src": "13132:6:11" + }, + "nativeSrc": "13132:30:11", + "nodeType": "YulFunctionCall", + "src": "13132:30:11" + }, + "nativeSrc": "13132:30:11", + "nodeType": "YulExpressionStatement", + "src": "13132:30:11" + }, + { + "nativeSrc": "13230:32:11", + "nodeType": "YulAssignment", + "src": "13230:32:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "13248:6:11", + "nodeType": "YulIdentifier", + "src": "13248:6:11" + }, + { + "name": "o", + "nativeSrc": "13256:1:11", + "nodeType": "YulIdentifier", + "src": "13256:1:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13244:3:11", + "nodeType": "YulIdentifier", + "src": "13244:3:11" + }, + "nativeSrc": "13244:14:11", + "nodeType": "YulFunctionCall", + "src": "13244:14:11" + }, + { + "kind": "number", + "nativeSrc": "13260:1:11", + "nodeType": "YulLiteral", + "src": "13260:1:11", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "13240:3:11", + "nodeType": "YulIdentifier", + "src": "13240:3:11" + }, + "nativeSrc": "13240:22:11", + "nodeType": "YulFunctionCall", + "src": "13240:22:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "13230:6:11", + "nodeType": "YulIdentifier", + "src": "13230:6:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "13332:6:11", + "nodeType": "YulIdentifier", + "src": "13332:6:11" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "13344:1:11", + "nodeType": "YulIdentifier", + "src": "13344:1:11" + }, + { + "name": "o", + "nativeSrc": "13347:1:11", + "nodeType": "YulIdentifier", + "src": "13347:1:11" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "13340:3:11", + "nodeType": "YulIdentifier", + "src": "13340:3:11" + }, + "nativeSrc": "13340:9:11", + "nodeType": "YulFunctionCall", + "src": "13340:9:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13325:6:11", + "nodeType": "YulIdentifier", + "src": "13325:6:11" + }, + "nativeSrc": "13325:25:11", + "nodeType": "YulFunctionCall", + "src": "13325:25:11" + }, + "nativeSrc": "13325:25:11", + "nodeType": "YulExpressionStatement", + "src": "13325:25:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5415, + "isOffset": false, + "isSlot": false, + "src": "12995:6:11", + "valueSize": 1 + }, + { + "declaration": 5415, + "isOffset": false, + "isSlot": false, + "src": "13085:6:11", + "valueSize": 1 + }, + { + "declaration": 5415, + "isOffset": false, + "isSlot": false, + "src": "13143:6:11", + "valueSize": 1 + }, + { + "declaration": 5415, + "isOffset": false, + "isSlot": false, + "src": "13230:6:11", + "valueSize": 1 + }, + { + "declaration": 5415, + "isOffset": false, + "isSlot": false, + "src": "13248:6:11", + "valueSize": 1 + }, + { + "declaration": 5415, + "isOffset": false, + "isSlot": false, + "src": "13332:6:11", + "valueSize": 1 + } + ], + "id": 5423, + "nodeType": "InlineAssembly", + "src": "12942:468:11" + } + ] + }, + "documentation": { + "id": 5410, + "nodeType": "StructuredDocumentation", + "src": "12513:238:11", + "text": "@dev Returns the hexadecimal representation of `value`.\n The output is prefixed with \"0x\".\n The output excludes leading \"0\" from the `toHexString` output.\n `0x00: \"0x0\", 0x01: \"0x1\", 0x12: \"0x12\", 0x123: \"0x123\"`." + }, + "id": 5425, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toMinimalHexString", + "nameLocation": "12765:18:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5413, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5412, + "mutability": "mutable", + "name": "value", + "nameLocation": "12792:5:11", + "nodeType": "VariableDeclaration", + "scope": 5425, + "src": "12784:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5411, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12784:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12783:15:11" + }, + "returnParameters": { + "id": 5416, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5415, + "mutability": "mutable", + "name": "result", + "nameLocation": "12836:6:11", + "nodeType": "VariableDeclaration", + "scope": 5425, + "src": "12822:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5414, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "12822:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "12821:22:11" + }, + "scope": 6145, + "src": "12756:660:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5440, + "nodeType": "Block", + "src": "13747:454:11", + "statements": [ + { + "expression": { + "id": 5437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5433, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5431, + "src": "13757:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 5435, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5428, + "src": "13786:5:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5434, + "name": "toHexStringNoPrefix", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5393, + 5451, + 5493, + 5519 + ], + "referencedDeclaration": 5451, + "src": "13766:19:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$", + "typeString": "function (uint256) pure returns (string memory)" + } + }, + "id": 5436, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13766:26:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "13757:35:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "id": 5438, + "nodeType": "ExpressionStatement", + "src": "13757:35:11" + }, + { + "AST": { + "nativeSrc": "13854:341:11", + "nodeType": "YulBlock", + "src": "13854:341:11", + "statements": [ + { + "nativeSrc": "13868:52:11", + "nodeType": "YulVariableDeclaration", + "src": "13868:52:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13885:1:11", + "nodeType": "YulLiteral", + "src": "13885:1:11", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "13898:6:11", + "nodeType": "YulIdentifier", + "src": "13898:6:11" + }, + { + "kind": "number", + "nativeSrc": "13906:4:11", + "nodeType": "YulLiteral", + "src": "13906:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13894:3:11", + "nodeType": "YulIdentifier", + "src": "13894:3:11" + }, + "nativeSrc": "13894:17:11", + "nodeType": "YulFunctionCall", + "src": "13894:17:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "13888:5:11", + "nodeType": "YulIdentifier", + "src": "13888:5:11" + }, + "nativeSrc": "13888:24:11", + "nodeType": "YulFunctionCall", + "src": "13888:24:11" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "13880:4:11", + "nodeType": "YulIdentifier", + "src": "13880:4:11" + }, + "nativeSrc": "13880:33:11", + "nodeType": "YulFunctionCall", + "src": "13880:33:11" + }, + { + "kind": "number", + "nativeSrc": "13915:4:11", + "nodeType": "YulLiteral", + "src": "13915:4:11", + "type": "", + "value": "0x30" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "13877:2:11", + "nodeType": "YulIdentifier", + "src": "13877:2:11" + }, + "nativeSrc": "13877:43:11", + "nodeType": "YulFunctionCall", + "src": "13877:43:11" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "13872:1:11", + "nodeType": "YulTypedName", + "src": "13872:1:11", + "type": "" + } + ] + }, + { + "nativeSrc": "13969:22:11", + "nodeType": "YulVariableDeclaration", + "src": "13969:22:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "13984:6:11", + "nodeType": "YulIdentifier", + "src": "13984:6:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "13978:5:11", + "nodeType": "YulIdentifier", + "src": "13978:5:11" + }, + "nativeSrc": "13978:13:11", + "nodeType": "YulFunctionCall", + "src": "13978:13:11" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "13973:1:11", + "nodeType": "YulTypedName", + "src": "13973:1:11", + "type": "" + } + ] + }, + { + "nativeSrc": "14023:24:11", + "nodeType": "YulAssignment", + "src": "14023:24:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "14037:6:11", + "nodeType": "YulIdentifier", + "src": "14037:6:11" + }, + { + "name": "o", + "nativeSrc": "14045:1:11", + "nodeType": "YulIdentifier", + "src": "14045:1:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14033:3:11", + "nodeType": "YulIdentifier", + "src": "14033:3:11" + }, + "nativeSrc": "14033:14:11", + "nodeType": "YulFunctionCall", + "src": "14033:14:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "14023:6:11", + "nodeType": "YulIdentifier", + "src": "14023:6:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "14117:6:11", + "nodeType": "YulIdentifier", + "src": "14117:6:11" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "14129:1:11", + "nodeType": "YulIdentifier", + "src": "14129:1:11" + }, + { + "name": "o", + "nativeSrc": "14132:1:11", + "nodeType": "YulIdentifier", + "src": "14132:1:11" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "14125:3:11", + "nodeType": "YulIdentifier", + "src": "14125:3:11" + }, + "nativeSrc": "14125:9:11", + "nodeType": "YulFunctionCall", + "src": "14125:9:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "14110:6:11", + "nodeType": "YulIdentifier", + "src": "14110:6:11" + }, + "nativeSrc": "14110:25:11", + "nodeType": "YulFunctionCall", + "src": "14110:25:11" + }, + "nativeSrc": "14110:25:11", + "nodeType": "YulExpressionStatement", + "src": "14110:25:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5431, + "isOffset": false, + "isSlot": false, + "src": "13898:6:11", + "valueSize": 1 + }, + { + "declaration": 5431, + "isOffset": false, + "isSlot": false, + "src": "13984:6:11", + "valueSize": 1 + }, + { + "declaration": 5431, + "isOffset": false, + "isSlot": false, + "src": "14023:6:11", + "valueSize": 1 + }, + { + "declaration": 5431, + "isOffset": false, + "isSlot": false, + "src": "14037:6:11", + "valueSize": 1 + }, + { + "declaration": 5431, + "isOffset": false, + "isSlot": false, + "src": "14117:6:11", + "valueSize": 1 + } + ], + "id": 5439, + "nodeType": "InlineAssembly", + "src": "13845:350:11" + } + ] + }, + "documentation": { + "id": 5426, + "nodeType": "StructuredDocumentation", + "src": "13422:196:11", + "text": "@dev Returns the hexadecimal representation of `value`.\n The output excludes leading \"0\" from the `toHexStringNoPrefix` output.\n `0x00: \"0\", 0x01: \"1\", 0x12: \"12\", 0x123: \"123\"`." + }, + "id": 5441, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toMinimalHexStringNoPrefix", + "nameLocation": "13632:26:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5429, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5428, + "mutability": "mutable", + "name": "value", + "nameLocation": "13667:5:11", + "nodeType": "VariableDeclaration", + "scope": 5441, + "src": "13659:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5427, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13659:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "13658:15:11" + }, + "returnParameters": { + "id": 5432, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5431, + "mutability": "mutable", + "name": "result", + "nameLocation": "13735:6:11", + "nodeType": "VariableDeclaration", + "scope": 5441, + "src": "13721:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5430, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "13721:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "13720:22:11" + }, + "scope": 6145, + "src": "13623:578:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5450, + "nodeType": "Block", + "src": "14537:1344:11", + "statements": [ + { + "AST": { + "nativeSrc": "14599:1276:11", + "nodeType": "YulBlock", + "src": "14599:1276:11", + "statements": [ + { + "nativeSrc": "14863:32:11", + "nodeType": "YulAssignment", + "src": "14863:32:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14883:4:11", + "nodeType": "YulLiteral", + "src": "14883:4:11", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "14877:5:11", + "nodeType": "YulIdentifier", + "src": "14877:5:11" + }, + "nativeSrc": "14877:11:11", + "nodeType": "YulFunctionCall", + "src": "14877:11:11" + }, + { + "kind": "number", + "nativeSrc": "14890:4:11", + "nodeType": "YulLiteral", + "src": "14890:4:11", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14873:3:11", + "nodeType": "YulIdentifier", + "src": "14873:3:11" + }, + "nativeSrc": "14873:22:11", + "nodeType": "YulFunctionCall", + "src": "14873:22:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "14863:6:11", + "nodeType": "YulIdentifier", + "src": "14863:6:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14915:4:11", + "nodeType": "YulLiteral", + "src": "14915:4:11", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "result", + "nativeSrc": "14925:6:11", + "nodeType": "YulIdentifier", + "src": "14925:6:11" + }, + { + "kind": "number", + "nativeSrc": "14933:4:11", + "nodeType": "YulLiteral", + "src": "14933:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14921:3:11", + "nodeType": "YulIdentifier", + "src": "14921:3:11" + }, + "nativeSrc": "14921:17:11", + "nodeType": "YulFunctionCall", + "src": "14921:17:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "14908:6:11", + "nodeType": "YulIdentifier", + "src": "14908:6:11" + }, + "nativeSrc": "14908:31:11", + "nodeType": "YulFunctionCall", + "src": "14908:31:11" + }, + "nativeSrc": "14908:31:11", + "nodeType": "YulExpressionStatement", + "src": "14908:31:11" + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "14979:6:11", + "nodeType": "YulIdentifier", + "src": "14979:6:11" + }, + { + "kind": "number", + "nativeSrc": "14987:1:11", + "nodeType": "YulLiteral", + "src": "14987:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "14972:6:11", + "nodeType": "YulIdentifier", + "src": "14972:6:11" + }, + "nativeSrc": "14972:17:11", + "nodeType": "YulFunctionCall", + "src": "14972:17:11" + }, + "nativeSrc": "14972:17:11", + "nodeType": "YulExpressionStatement", + "src": "14972:17:11" + }, + { + "nativeSrc": "15041:17:11", + "nodeType": "YulVariableDeclaration", + "src": "15041:17:11", + "value": { + "name": "result", + "nativeSrc": "15052:6:11", + "nodeType": "YulIdentifier", + "src": "15052:6:11" + }, + "variables": [ + { + "name": "end", + "nativeSrc": "15045:3:11", + "nodeType": "YulTypedName", + "src": "15045:3:11", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "15126:4:11", + "nodeType": "YulLiteral", + "src": "15126:4:11", + "type": "", + "value": "0x0f" + }, + { + "kind": "number", + "nativeSrc": "15132:34:11", + "nodeType": "YulLiteral", + "src": "15132:34:11", + "type": "", + "value": "0x30313233343536373839616263646566" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "15119:6:11", + "nodeType": "YulIdentifier", + "src": "15119:6:11" + }, + "nativeSrc": "15119:48:11", + "nodeType": "YulFunctionCall", + "src": "15119:48:11" + }, + "nativeSrc": "15119:48:11", + "nodeType": "YulExpressionStatement", + "src": "15119:48:11" + }, + { + "nativeSrc": "15221:15:11", + "nodeType": "YulVariableDeclaration", + "src": "15221:15:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "15234:1:11", + "nodeType": "YulLiteral", + "src": "15234:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "15230:3:11", + "nodeType": "YulIdentifier", + "src": "15230:3:11" + }, + "nativeSrc": "15230:6:11", + "nodeType": "YulFunctionCall", + "src": "15230:6:11" + }, + "variables": [ + { + "name": "w", + "nativeSrc": "15225:1:11", + "nodeType": "YulTypedName", + "src": "15225:1:11", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "15456:280:11", + "nodeType": "YulBlock", + "src": "15456:280:11", + "statements": [ + { + "nativeSrc": "15474:24:11", + "nodeType": "YulAssignment", + "src": "15474:24:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "15488:6:11", + "nodeType": "YulIdentifier", + "src": "15488:6:11" + }, + { + "name": "w", + "nativeSrc": "15496:1:11", + "nodeType": "YulIdentifier", + "src": "15496:1:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15484:3:11", + "nodeType": "YulIdentifier", + "src": "15484:3:11" + }, + "nativeSrc": "15484:14:11", + "nodeType": "YulFunctionCall", + "src": "15484:14:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "15474:6:11", + "nodeType": "YulIdentifier", + "src": "15474:6:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "15548:6:11", + "nodeType": "YulIdentifier", + "src": "15548:6:11" + }, + { + "kind": "number", + "nativeSrc": "15556:1:11", + "nodeType": "YulLiteral", + "src": "15556:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15544:3:11", + "nodeType": "YulIdentifier", + "src": "15544:3:11" + }, + "nativeSrc": "15544:14:11", + "nodeType": "YulFunctionCall", + "src": "15544:14:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "temp", + "nativeSrc": "15570:4:11", + "nodeType": "YulIdentifier", + "src": "15570:4:11" + }, + { + "kind": "number", + "nativeSrc": "15576:2:11", + "nodeType": "YulLiteral", + "src": "15576:2:11", + "type": "", + "value": "15" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "15566:3:11", + "nodeType": "YulIdentifier", + "src": "15566:3:11" + }, + "nativeSrc": "15566:13:11", + "nodeType": "YulFunctionCall", + "src": "15566:13:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "15560:5:11", + "nodeType": "YulIdentifier", + "src": "15560:5:11" + }, + "nativeSrc": "15560:20:11", + "nodeType": "YulFunctionCall", + "src": "15560:20:11" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "15536:7:11", + "nodeType": "YulIdentifier", + "src": "15536:7:11" + }, + "nativeSrc": "15536:45:11", + "nodeType": "YulFunctionCall", + "src": "15536:45:11" + }, + "nativeSrc": "15536:45:11", + "nodeType": "YulExpressionStatement", + "src": "15536:45:11" + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "15606:6:11", + "nodeType": "YulIdentifier", + "src": "15606:6:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "15628:1:11", + "nodeType": "YulLiteral", + "src": "15628:1:11", + "type": "", + "value": "4" + }, + { + "name": "temp", + "nativeSrc": "15631:4:11", + "nodeType": "YulIdentifier", + "src": "15631:4:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "15624:3:11", + "nodeType": "YulIdentifier", + "src": "15624:3:11" + }, + "nativeSrc": "15624:12:11", + "nodeType": "YulFunctionCall", + "src": "15624:12:11" + }, + { + "kind": "number", + "nativeSrc": "15638:2:11", + "nodeType": "YulLiteral", + "src": "15638:2:11", + "type": "", + "value": "15" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "15620:3:11", + "nodeType": "YulIdentifier", + "src": "15620:3:11" + }, + "nativeSrc": "15620:21:11", + "nodeType": "YulFunctionCall", + "src": "15620:21:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "15614:5:11", + "nodeType": "YulIdentifier", + "src": "15614:5:11" + }, + "nativeSrc": "15614:28:11", + "nodeType": "YulFunctionCall", + "src": "15614:28:11" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "15598:7:11", + "nodeType": "YulIdentifier", + "src": "15598:7:11" + }, + "nativeSrc": "15598:45:11", + "nodeType": "YulFunctionCall", + "src": "15598:45:11" + }, + "nativeSrc": "15598:45:11", + "nodeType": "YulExpressionStatement", + "src": "15598:45:11" + }, + { + "nativeSrc": "15660:20:11", + "nodeType": "YulAssignment", + "src": "15660:20:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "15672:1:11", + "nodeType": "YulLiteral", + "src": "15672:1:11", + "type": "", + "value": "8" + }, + { + "name": "temp", + "nativeSrc": "15675:4:11", + "nodeType": "YulIdentifier", + "src": "15675:4:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "15668:3:11", + "nodeType": "YulIdentifier", + "src": "15668:3:11" + }, + "nativeSrc": "15668:12:11", + "nodeType": "YulFunctionCall", + "src": "15668:12:11" + }, + "variableNames": [ + { + "name": "temp", + "nativeSrc": "15660:4:11", + "nodeType": "YulIdentifier", + "src": "15660:4:11" + } + ] + }, + { + "body": { + "nativeSrc": "15713:9:11", + "nodeType": "YulBlock", + "src": "15713:9:11", + "statements": [ + { + "nativeSrc": "15715:5:11", + "nodeType": "YulBreak", + "src": "15715:5:11" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "temp", + "nativeSrc": "15707:4:11", + "nodeType": "YulIdentifier", + "src": "15707:4:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "15700:6:11", + "nodeType": "YulIdentifier", + "src": "15700:6:11" + }, + "nativeSrc": "15700:12:11", + "nodeType": "YulFunctionCall", + "src": "15700:12:11" + }, + "nativeSrc": "15697:25:11", + "nodeType": "YulIf", + "src": "15697:25:11" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "15451:1:11", + "nodeType": "YulLiteral", + "src": "15451:1:11", + "type": "", + "value": "1" + }, + "nativeSrc": "15425:311:11", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "15453:2:11", + "nodeType": "YulBlock", + "src": "15453:2:11", + "statements": [] + }, + "pre": { + "nativeSrc": "15429:21:11", + "nodeType": "YulBlock", + "src": "15429:21:11", + "statements": [ + { + "nativeSrc": "15431:17:11", + "nodeType": "YulVariableDeclaration", + "src": "15431:17:11", + "value": { + "name": "value", + "nativeSrc": "15443:5:11", + "nodeType": "YulIdentifier", + "src": "15443:5:11" + }, + "variables": [ + { + "name": "temp", + "nativeSrc": "15435:4:11", + "nodeType": "YulTypedName", + "src": "15435:4:11", + "type": "" + } + ] + } + ] + }, + "src": "15425:311:11" + }, + { + "nativeSrc": "15749:25:11", + "nodeType": "YulVariableDeclaration", + "src": "15749:25:11", + "value": { + "arguments": [ + { + "name": "end", + "nativeSrc": "15762:3:11", + "nodeType": "YulIdentifier", + "src": "15762:3:11" + }, + { + "name": "result", + "nativeSrc": "15767:6:11", + "nodeType": "YulIdentifier", + "src": "15767:6:11" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "15758:3:11", + "nodeType": "YulIdentifier", + "src": "15758:3:11" + }, + "nativeSrc": "15758:16:11", + "nodeType": "YulFunctionCall", + "src": "15758:16:11" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "15753:1:11", + "nodeType": "YulTypedName", + "src": "15753:1:11", + "type": "" + } + ] + }, + { + "nativeSrc": "15787:27:11", + "nodeType": "YulAssignment", + "src": "15787:27:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "15801:6:11", + "nodeType": "YulIdentifier", + "src": "15801:6:11" + }, + { + "kind": "number", + "nativeSrc": "15809:4:11", + "nodeType": "YulLiteral", + "src": "15809:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "15797:3:11", + "nodeType": "YulIdentifier", + "src": "15797:3:11" + }, + "nativeSrc": "15797:17:11", + "nodeType": "YulFunctionCall", + "src": "15797:17:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "15787:6:11", + "nodeType": "YulIdentifier", + "src": "15787:6:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "15834:6:11", + "nodeType": "YulIdentifier", + "src": "15834:6:11" + }, + { + "name": "n", + "nativeSrc": "15842:1:11", + "nodeType": "YulIdentifier", + "src": "15842:1:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "15827:6:11", + "nodeType": "YulIdentifier", + "src": "15827:6:11" + }, + "nativeSrc": "15827:17:11", + "nodeType": "YulFunctionCall", + "src": "15827:17:11" + }, + "nativeSrc": "15827:17:11", + "nodeType": "YulExpressionStatement", + "src": "15827:17:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5447, + "isOffset": false, + "isSlot": false, + "src": "14863:6:11", + "valueSize": 1 + }, + { + "declaration": 5447, + "isOffset": false, + "isSlot": false, + "src": "14925:6:11", + "valueSize": 1 + }, + { + "declaration": 5447, + "isOffset": false, + "isSlot": false, + "src": "14979:6:11", + "valueSize": 1 + }, + { + "declaration": 5447, + "isOffset": false, + "isSlot": false, + "src": "15052:6:11", + "valueSize": 1 + }, + { + "declaration": 5447, + "isOffset": false, + "isSlot": false, + "src": "15474:6:11", + "valueSize": 1 + }, + { + "declaration": 5447, + "isOffset": false, + "isSlot": false, + "src": "15488:6:11", + "valueSize": 1 + }, + { + "declaration": 5447, + "isOffset": false, + "isSlot": false, + "src": "15548:6:11", + "valueSize": 1 + }, + { + "declaration": 5447, + "isOffset": false, + "isSlot": false, + "src": "15606:6:11", + "valueSize": 1 + }, + { + "declaration": 5447, + "isOffset": false, + "isSlot": false, + "src": "15767:6:11", + "valueSize": 1 + }, + { + "declaration": 5447, + "isOffset": false, + "isSlot": false, + "src": "15787:6:11", + "valueSize": 1 + }, + { + "declaration": 5447, + "isOffset": false, + "isSlot": false, + "src": "15801:6:11", + "valueSize": 1 + }, + { + "declaration": 5447, + "isOffset": false, + "isSlot": false, + "src": "15834:6:11", + "valueSize": 1 + }, + { + "declaration": 5444, + "isOffset": false, + "isSlot": false, + "src": "15443:5:11", + "valueSize": 1 + } + ], + "id": 5449, + "nodeType": "InlineAssembly", + "src": "14590:1285:11" + } + ] + }, + "documentation": { + "id": 5442, + "nodeType": "StructuredDocumentation", + "src": "14207:236:11", + "text": "@dev Returns the hexadecimal representation of `value`.\n The output is encoded using 2 hexadecimal digits per byte.\n As address are 20 bytes long, the output will left-padded to have\n a length of `20 * 2` bytes." + }, + "id": 5451, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toHexStringNoPrefix", + "nameLocation": "14457:19:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5445, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5444, + "mutability": "mutable", + "name": "value", + "nameLocation": "14485:5:11", + "nodeType": "VariableDeclaration", + "scope": 5451, + "src": "14477:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5443, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14477:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "14476:15:11" + }, + "returnParameters": { + "id": 5448, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5447, + "mutability": "mutable", + "name": "result", + "nameLocation": "14529:6:11", + "nodeType": "VariableDeclaration", + "scope": 5451, + "src": "14515:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5446, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "14515:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "14514:22:11" + }, + "scope": 6145, + "src": "14448:1433:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5466, + "nodeType": "Block", + "src": "16245:755:11", + "statements": [ + { + "expression": { + "id": 5463, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5459, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5457, + "src": "16255:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 5461, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5454, + "src": "16276:5:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5460, + "name": "toHexString", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5381, + 5409, + 5483, + 5509 + ], + "referencedDeclaration": 5483, + "src": "16264:11:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_string_memory_ptr_$", + "typeString": "function (address) pure returns (string memory)" + } + }, + "id": 5462, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16264:18:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "16255:27:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "id": 5464, + "nodeType": "ExpressionStatement", + "src": "16255:27:11" + }, + { + "AST": { + "nativeSrc": "16344:650:11", + "nodeType": "YulBlock", + "src": "16344:650:11", + "statements": [ + { + "nativeSrc": "16358:36:11", + "nodeType": "YulVariableDeclaration", + "src": "16358:36:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "16374:1:11", + "nodeType": "YulLiteral", + "src": "16374:1:11", + "type": "", + "value": "6" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "16385:1:11", + "nodeType": "YulLiteral", + "src": "16385:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "16381:3:11", + "nodeType": "YulIdentifier", + "src": "16381:3:11" + }, + "nativeSrc": "16381:6:11", + "nodeType": "YulFunctionCall", + "src": "16381:6:11" + }, + { + "kind": "number", + "nativeSrc": "16389:3:11", + "nodeType": "YulLiteral", + "src": "16389:3:11", + "type": "", + "value": "255" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "16377:3:11", + "nodeType": "YulIdentifier", + "src": "16377:3:11" + }, + "nativeSrc": "16377:16:11", + "nodeType": "YulFunctionCall", + "src": "16377:16:11" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "16370:3:11", + "nodeType": "YulIdentifier", + "src": "16370:3:11" + }, + "nativeSrc": "16370:24:11", + "nodeType": "YulFunctionCall", + "src": "16370:24:11" + }, + "variables": [ + { + "name": "mask", + "nativeSrc": "16362:4:11", + "nodeType": "YulTypedName", + "src": "16362:4:11", + "type": "" + } + ] + }, + { + "nativeSrc": "16437:26:11", + "nodeType": "YulVariableDeclaration", + "src": "16437:26:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "16450:6:11", + "nodeType": "YulIdentifier", + "src": "16450:6:11" + }, + { + "kind": "number", + "nativeSrc": "16458:4:11", + "nodeType": "YulLiteral", + "src": "16458:4:11", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16446:3:11", + "nodeType": "YulIdentifier", + "src": "16446:3:11" + }, + "nativeSrc": "16446:17:11", + "nodeType": "YulFunctionCall", + "src": "16446:17:11" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "16441:1:11", + "nodeType": "YulTypedName", + "src": "16441:1:11", + "type": "" + } + ] + }, + { + "nativeSrc": "16476:50:11", + "nodeType": "YulVariableDeclaration", + "src": "16476:50:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "16504:1:11", + "nodeType": "YulIdentifier", + "src": "16504:1:11" + }, + { + "kind": "number", + "nativeSrc": "16507:2:11", + "nodeType": "YulLiteral", + "src": "16507:2:11", + "type": "", + "value": "40" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "16494:9:11", + "nodeType": "YulIdentifier", + "src": "16494:9:11" + }, + "nativeSrc": "16494:16:11", + "nodeType": "YulFunctionCall", + "src": "16494:16:11" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "16516:2:11", + "nodeType": "YulLiteral", + "src": "16516:2:11", + "type": "", + "value": "34" + }, + { + "name": "mask", + "nativeSrc": "16520:4:11", + "nodeType": "YulIdentifier", + "src": "16520:4:11" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "16512:3:11", + "nodeType": "YulIdentifier", + "src": "16512:3:11" + }, + "nativeSrc": "16512:13:11", + "nodeType": "YulFunctionCall", + "src": "16512:13:11" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "16490:3:11", + "nodeType": "YulIdentifier", + "src": "16490:3:11" + }, + "nativeSrc": "16490:36:11", + "nodeType": "YulFunctionCall", + "src": "16490:36:11" + }, + "variables": [ + { + "name": "hashed", + "nativeSrc": "16480:6:11", + "nodeType": "YulTypedName", + "src": "16480:6:11", + "type": "" + } + ] + }, + { + "nativeSrc": "16560:22:11", + "nodeType": "YulVariableDeclaration", + "src": "16560:22:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "16573:3:11", + "nodeType": "YulLiteral", + "src": "16573:3:11", + "type": "", + "value": "240" + }, + { + "kind": "number", + "nativeSrc": "16578:3:11", + "nodeType": "YulLiteral", + "src": "16578:3:11", + "type": "", + "value": "136" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "16569:3:11", + "nodeType": "YulIdentifier", + "src": "16569:3:11" + }, + "nativeSrc": "16569:13:11", + "nodeType": "YulFunctionCall", + "src": "16569:13:11" + }, + "variables": [ + { + "name": "t", + "nativeSrc": "16564:1:11", + "nodeType": "YulTypedName", + "src": "16564:1:11", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "16642:144:11", + "nodeType": "YulBlock", + "src": "16642:144:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "i", + "nativeSrc": "16671:1:11", + "nodeType": "YulIdentifier", + "src": "16671:1:11" + }, + { + "name": "i", + "nativeSrc": "16674:1:11", + "nodeType": "YulIdentifier", + "src": "16674:1:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16667:3:11", + "nodeType": "YulIdentifier", + "src": "16667:3:11" + }, + "nativeSrc": "16667:9:11", + "nodeType": "YulFunctionCall", + "src": "16667:9:11" + }, + { + "arguments": [ + { + "name": "t", + "nativeSrc": "16682:1:11", + "nodeType": "YulIdentifier", + "src": "16682:1:11" + }, + { + "arguments": [ + { + "name": "i", + "nativeSrc": "16690:1:11", + "nodeType": "YulIdentifier", + "src": "16690:1:11" + }, + { + "name": "hashed", + "nativeSrc": "16693:6:11", + "nodeType": "YulIdentifier", + "src": "16693:6:11" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "16685:4:11", + "nodeType": "YulIdentifier", + "src": "16685:4:11" + }, + "nativeSrc": "16685:15:11", + "nodeType": "YulFunctionCall", + "src": "16685:15:11" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "16678:3:11", + "nodeType": "YulIdentifier", + "src": "16678:3:11" + }, + "nativeSrc": "16678:23:11", + "nodeType": "YulFunctionCall", + "src": "16678:23:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "16660:6:11", + "nodeType": "YulIdentifier", + "src": "16660:6:11" + }, + "nativeSrc": "16660:42:11", + "nodeType": "YulFunctionCall", + "src": "16660:42:11" + }, + "nativeSrc": "16660:42:11", + "nodeType": "YulExpressionStatement", + "src": "16660:42:11" + }, + { + "nativeSrc": "16719:14:11", + "nodeType": "YulAssignment", + "src": "16719:14:11", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "16728:1:11", + "nodeType": "YulIdentifier", + "src": "16728:1:11" + }, + { + "kind": "number", + "nativeSrc": "16731:1:11", + "nodeType": "YulLiteral", + "src": "16731:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16724:3:11", + "nodeType": "YulIdentifier", + "src": "16724:3:11" + }, + "nativeSrc": "16724:9:11", + "nodeType": "YulFunctionCall", + "src": "16724:9:11" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "16719:1:11", + "nodeType": "YulIdentifier", + "src": "16719:1:11" + } + ] + }, + { + "body": { + "nativeSrc": "16763:9:11", + "nodeType": "YulBlock", + "src": "16763:9:11", + "statements": [ + { + "nativeSrc": "16765:5:11", + "nodeType": "YulBreak", + "src": "16765:5:11" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "16756:1:11", + "nodeType": "YulIdentifier", + "src": "16756:1:11" + }, + { + "kind": "number", + "nativeSrc": "16759:2:11", + "nodeType": "YulLiteral", + "src": "16759:2:11", + "type": "", + "value": "20" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "16753:2:11", + "nodeType": "YulIdentifier", + "src": "16753:2:11" + }, + "nativeSrc": "16753:9:11", + "nodeType": "YulFunctionCall", + "src": "16753:9:11" + }, + "nativeSrc": "16750:22:11", + "nodeType": "YulIf", + "src": "16750:22:11" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "16637:1:11", + "nodeType": "YulLiteral", + "src": "16637:1:11", + "type": "", + "value": "1" + }, + "nativeSrc": "16618:168:11", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "16639:2:11", + "nodeType": "YulBlock", + "src": "16639:2:11", + "statements": [] + }, + "pre": { + "nativeSrc": "16622:14:11", + "nodeType": "YulBlock", + "src": "16622:14:11", + "statements": [ + { + "nativeSrc": "16624:10:11", + "nodeType": "YulVariableDeclaration", + "src": "16624:10:11", + "value": { + "kind": "number", + "nativeSrc": "16633:1:11", + "nodeType": "YulLiteral", + "src": "16633:1:11", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "16628:1:11", + "nodeType": "YulTypedName", + "src": "16628:1:11", + "type": "" + } + ] + } + ] + }, + "src": "16618:168:11" + }, + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "16806:1:11", + "nodeType": "YulIdentifier", + "src": "16806:1:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "16819:1:11", + "nodeType": "YulIdentifier", + "src": "16819:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "16813:5:11", + "nodeType": "YulIdentifier", + "src": "16813:5:11" + }, + "nativeSrc": "16813:8:11", + "nodeType": "YulFunctionCall", + "src": "16813:8:11" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "16827:1:11", + "nodeType": "YulLiteral", + "src": "16827:1:11", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "16840:4:11", + "nodeType": "YulLiteral", + "src": "16840:4:11", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "16834:5:11", + "nodeType": "YulIdentifier", + "src": "16834:5:11" + }, + "nativeSrc": "16834:11:11", + "nodeType": "YulFunctionCall", + "src": "16834:11:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "16857:1:11", + "nodeType": "YulIdentifier", + "src": "16857:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "16851:5:11", + "nodeType": "YulIdentifier", + "src": "16851:5:11" + }, + "nativeSrc": "16851:8:11", + "nodeType": "YulFunctionCall", + "src": "16851:8:11" + }, + { + "name": "mask", + "nativeSrc": "16861:4:11", + "nodeType": "YulIdentifier", + "src": "16861:4:11" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "16847:3:11", + "nodeType": "YulIdentifier", + "src": "16847:3:11" + }, + "nativeSrc": "16847:19:11", + "nodeType": "YulFunctionCall", + "src": "16847:19:11" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "16830:3:11", + "nodeType": "YulIdentifier", + "src": "16830:3:11" + }, + "nativeSrc": "16830:37:11", + "nodeType": "YulFunctionCall", + "src": "16830:37:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "16823:3:11", + "nodeType": "YulIdentifier", + "src": "16823:3:11" + }, + "nativeSrc": "16823:45:11", + "nodeType": "YulFunctionCall", + "src": "16823:45:11" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "16809:3:11", + "nodeType": "YulIdentifier", + "src": "16809:3:11" + }, + "nativeSrc": "16809:60:11", + "nodeType": "YulFunctionCall", + "src": "16809:60:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "16799:6:11", + "nodeType": "YulIdentifier", + "src": "16799:6:11" + }, + "nativeSrc": "16799:71:11", + "nodeType": "YulFunctionCall", + "src": "16799:71:11" + }, + "nativeSrc": "16799:71:11", + "nodeType": "YulExpressionStatement", + "src": "16799:71:11" + }, + { + "nativeSrc": "16883:17:11", + "nodeType": "YulAssignment", + "src": "16883:17:11", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "16892:1:11", + "nodeType": "YulIdentifier", + "src": "16892:1:11" + }, + { + "kind": "number", + "nativeSrc": "16895:4:11", + "nodeType": "YulLiteral", + "src": "16895:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16888:3:11", + "nodeType": "YulIdentifier", + "src": "16888:3:11" + }, + "nativeSrc": "16888:12:11", + "nodeType": "YulFunctionCall", + "src": "16888:12:11" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "16883:1:11", + "nodeType": "YulIdentifier", + "src": "16883:1:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "16920:1:11", + "nodeType": "YulIdentifier", + "src": "16920:1:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "16933:1:11", + "nodeType": "YulIdentifier", + "src": "16933:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "16927:5:11", + "nodeType": "YulIdentifier", + "src": "16927:5:11" + }, + "nativeSrc": "16927:8:11", + "nodeType": "YulFunctionCall", + "src": "16927:8:11" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "16941:1:11", + "nodeType": "YulLiteral", + "src": "16941:1:11", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "16954:4:11", + "nodeType": "YulLiteral", + "src": "16954:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "16948:5:11", + "nodeType": "YulIdentifier", + "src": "16948:5:11" + }, + "nativeSrc": "16948:11:11", + "nodeType": "YulFunctionCall", + "src": "16948:11:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "16971:1:11", + "nodeType": "YulIdentifier", + "src": "16971:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "16965:5:11", + "nodeType": "YulIdentifier", + "src": "16965:5:11" + }, + "nativeSrc": "16965:8:11", + "nodeType": "YulFunctionCall", + "src": "16965:8:11" + }, + { + "name": "mask", + "nativeSrc": "16975:4:11", + "nodeType": "YulIdentifier", + "src": "16975:4:11" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "16961:3:11", + "nodeType": "YulIdentifier", + "src": "16961:3:11" + }, + "nativeSrc": "16961:19:11", + "nodeType": "YulFunctionCall", + "src": "16961:19:11" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "16944:3:11", + "nodeType": "YulIdentifier", + "src": "16944:3:11" + }, + "nativeSrc": "16944:37:11", + "nodeType": "YulFunctionCall", + "src": "16944:37:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "16937:3:11", + "nodeType": "YulIdentifier", + "src": "16937:3:11" + }, + "nativeSrc": "16937:45:11", + "nodeType": "YulFunctionCall", + "src": "16937:45:11" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "16923:3:11", + "nodeType": "YulIdentifier", + "src": "16923:3:11" + }, + "nativeSrc": "16923:60:11", + "nodeType": "YulFunctionCall", + "src": "16923:60:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "16913:6:11", + "nodeType": "YulIdentifier", + "src": "16913:6:11" + }, + "nativeSrc": "16913:71:11", + "nodeType": "YulFunctionCall", + "src": "16913:71:11" + }, + "nativeSrc": "16913:71:11", + "nodeType": "YulExpressionStatement", + "src": "16913:71:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5457, + "isOffset": false, + "isSlot": false, + "src": "16450:6:11", + "valueSize": 1 + } + ], + "id": 5465, + "nodeType": "InlineAssembly", + "src": "16335:659:11" + } + ] + }, + "documentation": { + "id": 5452, + "nodeType": "StructuredDocumentation", + "src": "15887:261:11", + "text": "@dev Returns the hexadecimal representation of `value`.\n The output is prefixed with \"0x\", encoded using 2 hexadecimal digits per byte,\n and the alphabets are capitalized conditionally according to\n https://eips.ethereum.org/EIPS/eip-55" + }, + "id": 5467, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toHexStringChecksummed", + "nameLocation": "16162:22:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5455, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5454, + "mutability": "mutable", + "name": "value", + "nameLocation": "16193:5:11", + "nodeType": "VariableDeclaration", + "scope": 5467, + "src": "16185:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5453, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16185:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "16184:15:11" + }, + "returnParameters": { + "id": 5458, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5457, + "mutability": "mutable", + "name": "result", + "nameLocation": "16237:6:11", + "nodeType": "VariableDeclaration", + "scope": 5467, + "src": "16223:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5456, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "16223:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "16222:22:11" + }, + "scope": 6145, + "src": "16153:847:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5482, + "nodeType": "Block", + "src": "17241:360:11", + "statements": [ + { + "expression": { + "id": 5479, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5475, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5473, + "src": "17251:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 5477, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5470, + "src": "17280:5:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5476, + "name": "toHexStringNoPrefix", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5393, + 5451, + 5493, + 5519 + ], + "referencedDeclaration": 5493, + "src": "17260:19:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_string_memory_ptr_$", + "typeString": "function (address) pure returns (string memory)" + } + }, + "id": 5478, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17260:26:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "17251:35:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "id": 5480, + "nodeType": "ExpressionStatement", + "src": "17251:35:11" + }, + { + "AST": { + "nativeSrc": "17348:247:11", + "nodeType": "YulBlock", + "src": "17348:247:11", + "statements": [ + { + "nativeSrc": "17362:30:11", + "nodeType": "YulVariableDeclaration", + "src": "17362:30:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "17381:6:11", + "nodeType": "YulIdentifier", + "src": "17381:6:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "17375:5:11", + "nodeType": "YulIdentifier", + "src": "17375:5:11" + }, + "nativeSrc": "17375:13:11", + "nodeType": "YulFunctionCall", + "src": "17375:13:11" + }, + { + "kind": "number", + "nativeSrc": "17390:1:11", + "nodeType": "YulLiteral", + "src": "17390:1:11", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17371:3:11", + "nodeType": "YulIdentifier", + "src": "17371:3:11" + }, + "nativeSrc": "17371:21:11", + "nodeType": "YulFunctionCall", + "src": "17371:21:11" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "17366:1:11", + "nodeType": "YulTypedName", + "src": "17366:1:11", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "17435:6:11", + "nodeType": "YulIdentifier", + "src": "17435:6:11" + }, + { + "kind": "number", + "nativeSrc": "17443:6:11", + "nodeType": "YulLiteral", + "src": "17443:6:11", + "type": "", + "value": "0x3078" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "17428:6:11", + "nodeType": "YulIdentifier", + "src": "17428:6:11" + }, + "nativeSrc": "17428:22:11", + "nodeType": "YulFunctionCall", + "src": "17428:22:11" + }, + "nativeSrc": "17428:22:11", + "nodeType": "YulExpressionStatement", + "src": "17428:22:11" + }, + { + "nativeSrc": "17489:24:11", + "nodeType": "YulAssignment", + "src": "17489:24:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "17503:6:11", + "nodeType": "YulIdentifier", + "src": "17503:6:11" + }, + { + "kind": "number", + "nativeSrc": "17511:1:11", + "nodeType": "YulLiteral", + "src": "17511:1:11", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "17499:3:11", + "nodeType": "YulIdentifier", + "src": "17499:3:11" + }, + "nativeSrc": "17499:14:11", + "nodeType": "YulFunctionCall", + "src": "17499:14:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "17489:6:11", + "nodeType": "YulIdentifier", + "src": "17489:6:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "17554:6:11", + "nodeType": "YulIdentifier", + "src": "17554:6:11" + }, + { + "name": "n", + "nativeSrc": "17562:1:11", + "nodeType": "YulIdentifier", + "src": "17562:1:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "17547:6:11", + "nodeType": "YulIdentifier", + "src": "17547:6:11" + }, + "nativeSrc": "17547:17:11", + "nodeType": "YulFunctionCall", + "src": "17547:17:11" + }, + "nativeSrc": "17547:17:11", + "nodeType": "YulExpressionStatement", + "src": "17547:17:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5473, + "isOffset": false, + "isSlot": false, + "src": "17381:6:11", + "valueSize": 1 + }, + { + "declaration": 5473, + "isOffset": false, + "isSlot": false, + "src": "17435:6:11", + "valueSize": 1 + }, + { + "declaration": 5473, + "isOffset": false, + "isSlot": false, + "src": "17489:6:11", + "valueSize": 1 + }, + { + "declaration": 5473, + "isOffset": false, + "isSlot": false, + "src": "17503:6:11", + "valueSize": 1 + }, + { + "declaration": 5473, + "isOffset": false, + "isSlot": false, + "src": "17554:6:11", + "valueSize": 1 + } + ], + "id": 5481, + "nodeType": "InlineAssembly", + "src": "17339:256:11" + } + ] + }, + "documentation": { + "id": 5468, + "nodeType": "StructuredDocumentation", + "src": "17006:149:11", + "text": "@dev Returns the hexadecimal representation of `value`.\n The output is prefixed with \"0x\" and encoded using 2 hexadecimal digits per byte." + }, + "id": 5483, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toHexString", + "nameLocation": "17169:11:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5471, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5470, + "mutability": "mutable", + "name": "value", + "nameLocation": "17189:5:11", + "nodeType": "VariableDeclaration", + "scope": 5483, + "src": "17181:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5469, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17181:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "17180:15:11" + }, + "returnParameters": { + "id": 5474, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5473, + "mutability": "mutable", + "name": "result", + "nameLocation": "17233:6:11", + "nodeType": "VariableDeclaration", + "scope": 5483, + "src": "17219:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5472, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "17219:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "17218:22:11" + }, + "scope": 6145, + "src": "17160:441:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5492, + "nodeType": "Block", + "src": "17827:1258:11", + "statements": [ + { + "AST": { + "nativeSrc": "17889:1190:11", + "nodeType": "YulBlock", + "src": "17889:1190:11", + "statements": [ + { + "nativeSrc": "17903:21:11", + "nodeType": "YulAssignment", + "src": "17903:21:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "17919:4:11", + "nodeType": "YulLiteral", + "src": "17919:4:11", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "17913:5:11", + "nodeType": "YulIdentifier", + "src": "17913:5:11" + }, + "nativeSrc": "17913:11:11", + "nodeType": "YulFunctionCall", + "src": "17913:11:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "17903:6:11", + "nodeType": "YulIdentifier", + "src": "17903:6:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18226:4:11", + "nodeType": "YulLiteral", + "src": "18226:4:11", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "result", + "nativeSrc": "18236:6:11", + "nodeType": "YulIdentifier", + "src": "18236:6:11" + }, + { + "kind": "number", + "nativeSrc": "18244:4:11", + "nodeType": "YulLiteral", + "src": "18244:4:11", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18232:3:11", + "nodeType": "YulIdentifier", + "src": "18232:3:11" + }, + "nativeSrc": "18232:17:11", + "nodeType": "YulFunctionCall", + "src": "18232:17:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18219:6:11", + "nodeType": "YulIdentifier", + "src": "18219:6:11" + }, + "nativeSrc": "18219:31:11", + "nodeType": "YulFunctionCall", + "src": "18219:31:11" + }, + "nativeSrc": "18219:31:11", + "nodeType": "YulExpressionStatement", + "src": "18219:31:11" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18270:4:11", + "nodeType": "YulLiteral", + "src": "18270:4:11", + "type": "", + "value": "0x0f" + }, + { + "kind": "number", + "nativeSrc": "18276:34:11", + "nodeType": "YulLiteral", + "src": "18276:34:11", + "type": "", + "value": "0x30313233343536373839616263646566" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18263:6:11", + "nodeType": "YulIdentifier", + "src": "18263:6:11" + }, + "nativeSrc": "18263:48:11", + "nodeType": "YulFunctionCall", + "src": "18263:48:11" + }, + "nativeSrc": "18263:48:11", + "nodeType": "YulExpressionStatement", + "src": "18263:48:11" + }, + { + "nativeSrc": "18365:24:11", + "nodeType": "YulAssignment", + "src": "18365:24:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "18379:6:11", + "nodeType": "YulIdentifier", + "src": "18379:6:11" + }, + { + "kind": "number", + "nativeSrc": "18387:1:11", + "nodeType": "YulLiteral", + "src": "18387:1:11", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18375:3:11", + "nodeType": "YulIdentifier", + "src": "18375:3:11" + }, + "nativeSrc": "18375:14:11", + "nodeType": "YulFunctionCall", + "src": "18375:14:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "18365:6:11", + "nodeType": "YulIdentifier", + "src": "18365:6:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "18409:6:11", + "nodeType": "YulIdentifier", + "src": "18409:6:11" + }, + { + "kind": "number", + "nativeSrc": "18417:2:11", + "nodeType": "YulLiteral", + "src": "18417:2:11", + "type": "", + "value": "40" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18402:6:11", + "nodeType": "YulIdentifier", + "src": "18402:6:11" + }, + "nativeSrc": "18402:18:11", + "nodeType": "YulFunctionCall", + "src": "18402:18:11" + }, + "nativeSrc": "18402:18:11", + "nodeType": "YulExpressionStatement", + "src": "18402:18:11" + }, + { + "nativeSrc": "18454:26:11", + "nodeType": "YulVariableDeclaration", + "src": "18454:26:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "18467:6:11", + "nodeType": "YulIdentifier", + "src": "18467:6:11" + }, + { + "kind": "number", + "nativeSrc": "18475:4:11", + "nodeType": "YulLiteral", + "src": "18475:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18463:3:11", + "nodeType": "YulIdentifier", + "src": "18463:3:11" + }, + "nativeSrc": "18463:17:11", + "nodeType": "YulFunctionCall", + "src": "18463:17:11" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "18458:1:11", + "nodeType": "YulTypedName", + "src": "18458:1:11", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "18504:1:11", + "nodeType": "YulIdentifier", + "src": "18504:1:11" + }, + { + "kind": "number", + "nativeSrc": "18507:2:11", + "nodeType": "YulLiteral", + "src": "18507:2:11", + "type": "", + "value": "40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18500:3:11", + "nodeType": "YulIdentifier", + "src": "18500:3:11" + }, + "nativeSrc": "18500:10:11", + "nodeType": "YulFunctionCall", + "src": "18500:10:11" + }, + { + "kind": "number", + "nativeSrc": "18512:1:11", + "nodeType": "YulLiteral", + "src": "18512:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18493:6:11", + "nodeType": "YulIdentifier", + "src": "18493:6:11" + }, + "nativeSrc": "18493:21:11", + "nodeType": "YulFunctionCall", + "src": "18493:21:11" + }, + "nativeSrc": "18493:21:11", + "nodeType": "YulExpressionStatement", + "src": "18493:21:11" + }, + { + "nativeSrc": "18565:23:11", + "nodeType": "YulAssignment", + "src": "18565:23:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18578:2:11", + "nodeType": "YulLiteral", + "src": "18578:2:11", + "type": "", + "value": "96" + }, + { + "name": "value", + "nativeSrc": "18582:5:11", + "nodeType": "YulIdentifier", + "src": "18582:5:11" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "18574:3:11", + "nodeType": "YulIdentifier", + "src": "18574:3:11" + }, + "nativeSrc": "18574:14:11", + "nodeType": "YulFunctionCall", + "src": "18574:14:11" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "18565:5:11", + "nodeType": "YulIdentifier", + "src": "18565:5:11" + } + ] + }, + { + "body": { + "nativeSrc": "18793:276:11", + "nodeType": "YulBlock", + "src": "18793:276:11", + "statements": [ + { + "nativeSrc": "18811:26:11", + "nodeType": "YulVariableDeclaration", + "src": "18811:26:11", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "18824:1:11", + "nodeType": "YulIdentifier", + "src": "18824:1:11" + }, + { + "arguments": [ + { + "name": "i", + "nativeSrc": "18831:1:11", + "nodeType": "YulIdentifier", + "src": "18831:1:11" + }, + { + "name": "i", + "nativeSrc": "18834:1:11", + "nodeType": "YulIdentifier", + "src": "18834:1:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18827:3:11", + "nodeType": "YulIdentifier", + "src": "18827:3:11" + }, + "nativeSrc": "18827:9:11", + "nodeType": "YulFunctionCall", + "src": "18827:9:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18820:3:11", + "nodeType": "YulIdentifier", + "src": "18820:3:11" + }, + "nativeSrc": "18820:17:11", + "nodeType": "YulFunctionCall", + "src": "18820:17:11" + }, + "variables": [ + { + "name": "p", + "nativeSrc": "18815:1:11", + "nodeType": "YulTypedName", + "src": "18815:1:11", + "type": "" + } + ] + }, + { + "nativeSrc": "18854:26:11", + "nodeType": "YulVariableDeclaration", + "src": "18854:26:11", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "18871:1:11", + "nodeType": "YulIdentifier", + "src": "18871:1:11" + }, + { + "name": "value", + "nativeSrc": "18874:5:11", + "nodeType": "YulIdentifier", + "src": "18874:5:11" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "18866:4:11", + "nodeType": "YulIdentifier", + "src": "18866:4:11" + }, + "nativeSrc": "18866:14:11", + "nodeType": "YulFunctionCall", + "src": "18866:14:11" + }, + "variables": [ + { + "name": "temp", + "nativeSrc": "18858:4:11", + "nodeType": "YulTypedName", + "src": "18858:4:11", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "p", + "nativeSrc": "18909:1:11", + "nodeType": "YulIdentifier", + "src": "18909:1:11" + }, + { + "kind": "number", + "nativeSrc": "18912:1:11", + "nodeType": "YulLiteral", + "src": "18912:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18905:3:11", + "nodeType": "YulIdentifier", + "src": "18905:3:11" + }, + "nativeSrc": "18905:9:11", + "nodeType": "YulFunctionCall", + "src": "18905:9:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "temp", + "nativeSrc": "18926:4:11", + "nodeType": "YulIdentifier", + "src": "18926:4:11" + }, + { + "kind": "number", + "nativeSrc": "18932:2:11", + "nodeType": "YulLiteral", + "src": "18932:2:11", + "type": "", + "value": "15" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "18922:3:11", + "nodeType": "YulIdentifier", + "src": "18922:3:11" + }, + "nativeSrc": "18922:13:11", + "nodeType": "YulFunctionCall", + "src": "18922:13:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "18916:5:11", + "nodeType": "YulIdentifier", + "src": "18916:5:11" + }, + "nativeSrc": "18916:20:11", + "nodeType": "YulFunctionCall", + "src": "18916:20:11" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "18897:7:11", + "nodeType": "YulIdentifier", + "src": "18897:7:11" + }, + "nativeSrc": "18897:40:11", + "nodeType": "YulFunctionCall", + "src": "18897:40:11" + }, + "nativeSrc": "18897:40:11", + "nodeType": "YulExpressionStatement", + "src": "18897:40:11" + }, + { + "expression": { + "arguments": [ + { + "name": "p", + "nativeSrc": "18962:1:11", + "nodeType": "YulIdentifier", + "src": "18962:1:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18975:1:11", + "nodeType": "YulLiteral", + "src": "18975:1:11", + "type": "", + "value": "4" + }, + { + "name": "temp", + "nativeSrc": "18978:4:11", + "nodeType": "YulIdentifier", + "src": "18978:4:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "18971:3:11", + "nodeType": "YulIdentifier", + "src": "18971:3:11" + }, + "nativeSrc": "18971:12:11", + "nodeType": "YulFunctionCall", + "src": "18971:12:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "18965:5:11", + "nodeType": "YulIdentifier", + "src": "18965:5:11" + }, + "nativeSrc": "18965:19:11", + "nodeType": "YulFunctionCall", + "src": "18965:19:11" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "18954:7:11", + "nodeType": "YulIdentifier", + "src": "18954:7:11" + }, + "nativeSrc": "18954:31:11", + "nodeType": "YulFunctionCall", + "src": "18954:31:11" + }, + "nativeSrc": "18954:31:11", + "nodeType": "YulExpressionStatement", + "src": "18954:31:11" + }, + { + "nativeSrc": "19002:14:11", + "nodeType": "YulAssignment", + "src": "19002:14:11", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "19011:1:11", + "nodeType": "YulIdentifier", + "src": "19011:1:11" + }, + { + "kind": "number", + "nativeSrc": "19014:1:11", + "nodeType": "YulLiteral", + "src": "19014:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19007:3:11", + "nodeType": "YulIdentifier", + "src": "19007:3:11" + }, + "nativeSrc": "19007:9:11", + "nodeType": "YulFunctionCall", + "src": "19007:9:11" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "19002:1:11", + "nodeType": "YulIdentifier", + "src": "19002:1:11" + } + ] + }, + { + "body": { + "nativeSrc": "19046:9:11", + "nodeType": "YulBlock", + "src": "19046:9:11", + "statements": [ + { + "nativeSrc": "19048:5:11", + "nodeType": "YulBreak", + "src": "19048:5:11" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "19039:1:11", + "nodeType": "YulIdentifier", + "src": "19039:1:11" + }, + { + "kind": "number", + "nativeSrc": "19042:2:11", + "nodeType": "YulLiteral", + "src": "19042:2:11", + "type": "", + "value": "20" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "19036:2:11", + "nodeType": "YulIdentifier", + "src": "19036:2:11" + }, + "nativeSrc": "19036:9:11", + "nodeType": "YulFunctionCall", + "src": "19036:9:11" + }, + "nativeSrc": "19033:22:11", + "nodeType": "YulIf", + "src": "19033:22:11" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "18788:1:11", + "nodeType": "YulLiteral", + "src": "18788:1:11", + "type": "", + "value": "1" + }, + "nativeSrc": "18769:300:11", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "18790:2:11", + "nodeType": "YulBlock", + "src": "18790:2:11", + "statements": [] + }, + "pre": { + "nativeSrc": "18773:14:11", + "nodeType": "YulBlock", + "src": "18773:14:11", + "statements": [ + { + "nativeSrc": "18775:10:11", + "nodeType": "YulVariableDeclaration", + "src": "18775:10:11", + "value": { + "kind": "number", + "nativeSrc": "18784:1:11", + "nodeType": "YulLiteral", + "src": "18784:1:11", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "18779:1:11", + "nodeType": "YulTypedName", + "src": "18779:1:11", + "type": "" + } + ] + } + ] + }, + "src": "18769:300:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5489, + "isOffset": false, + "isSlot": false, + "src": "17903:6:11", + "valueSize": 1 + }, + { + "declaration": 5489, + "isOffset": false, + "isSlot": false, + "src": "18236:6:11", + "valueSize": 1 + }, + { + "declaration": 5489, + "isOffset": false, + "isSlot": false, + "src": "18365:6:11", + "valueSize": 1 + }, + { + "declaration": 5489, + "isOffset": false, + "isSlot": false, + "src": "18379:6:11", + "valueSize": 1 + }, + { + "declaration": 5489, + "isOffset": false, + "isSlot": false, + "src": "18409:6:11", + "valueSize": 1 + }, + { + "declaration": 5489, + "isOffset": false, + "isSlot": false, + "src": "18467:6:11", + "valueSize": 1 + }, + { + "declaration": 5486, + "isOffset": false, + "isSlot": false, + "src": "18565:5:11", + "valueSize": 1 + }, + { + "declaration": 5486, + "isOffset": false, + "isSlot": false, + "src": "18582:5:11", + "valueSize": 1 + }, + { + "declaration": 5486, + "isOffset": false, + "isSlot": false, + "src": "18874:5:11", + "valueSize": 1 + } + ], + "id": 5491, + "nodeType": "InlineAssembly", + "src": "17880:1199:11" + } + ] + }, + "documentation": { + "id": 5484, + "nodeType": "StructuredDocumentation", + "src": "17607:126:11", + "text": "@dev Returns the hexadecimal representation of `value`.\n The output is encoded using 2 hexadecimal digits per byte." + }, + "id": 5493, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toHexStringNoPrefix", + "nameLocation": "17747:19:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5487, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5486, + "mutability": "mutable", + "name": "value", + "nameLocation": "17775:5:11", + "nodeType": "VariableDeclaration", + "scope": 5493, + "src": "17767:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5485, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17767:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "17766:15:11" + }, + "returnParameters": { + "id": 5490, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5489, + "mutability": "mutable", + "name": "result", + "nameLocation": "17819:6:11", + "nodeType": "VariableDeclaration", + "scope": 5493, + "src": "17805:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5488, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "17805:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "17804:22:11" + }, + "scope": 6145, + "src": "17738:1347:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5508, + "nodeType": "Block", + "src": "19306:358:11", + "statements": [ + { + "expression": { + "id": 5505, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5501, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5499, + "src": "19316:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 5503, + "name": "raw", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5496, + "src": "19345:3:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5502, + "name": "toHexStringNoPrefix", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5393, + 5451, + 5493, + 5519 + ], + "referencedDeclaration": 5519, + "src": "19325:19:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_string_memory_ptr_$", + "typeString": "function (bytes memory) pure returns (string memory)" + } + }, + "id": 5504, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19325:24:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "19316:33:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "id": 5506, + "nodeType": "ExpressionStatement", + "src": "19316:33:11" + }, + { + "AST": { + "nativeSrc": "19411:247:11", + "nodeType": "YulBlock", + "src": "19411:247:11", + "statements": [ + { + "nativeSrc": "19425:30:11", + "nodeType": "YulVariableDeclaration", + "src": "19425:30:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "19444:6:11", + "nodeType": "YulIdentifier", + "src": "19444:6:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "19438:5:11", + "nodeType": "YulIdentifier", + "src": "19438:5:11" + }, + "nativeSrc": "19438:13:11", + "nodeType": "YulFunctionCall", + "src": "19438:13:11" + }, + { + "kind": "number", + "nativeSrc": "19453:1:11", + "nodeType": "YulLiteral", + "src": "19453:1:11", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19434:3:11", + "nodeType": "YulIdentifier", + "src": "19434:3:11" + }, + "nativeSrc": "19434:21:11", + "nodeType": "YulFunctionCall", + "src": "19434:21:11" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "19429:1:11", + "nodeType": "YulTypedName", + "src": "19429:1:11", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "19498:6:11", + "nodeType": "YulIdentifier", + "src": "19498:6:11" + }, + { + "kind": "number", + "nativeSrc": "19506:6:11", + "nodeType": "YulLiteral", + "src": "19506:6:11", + "type": "", + "value": "0x3078" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "19491:6:11", + "nodeType": "YulIdentifier", + "src": "19491:6:11" + }, + "nativeSrc": "19491:22:11", + "nodeType": "YulFunctionCall", + "src": "19491:22:11" + }, + "nativeSrc": "19491:22:11", + "nodeType": "YulExpressionStatement", + "src": "19491:22:11" + }, + { + "nativeSrc": "19552:24:11", + "nodeType": "YulAssignment", + "src": "19552:24:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "19566:6:11", + "nodeType": "YulIdentifier", + "src": "19566:6:11" + }, + { + "kind": "number", + "nativeSrc": "19574:1:11", + "nodeType": "YulLiteral", + "src": "19574:1:11", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "19562:3:11", + "nodeType": "YulIdentifier", + "src": "19562:3:11" + }, + "nativeSrc": "19562:14:11", + "nodeType": "YulFunctionCall", + "src": "19562:14:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "19552:6:11", + "nodeType": "YulIdentifier", + "src": "19552:6:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "19617:6:11", + "nodeType": "YulIdentifier", + "src": "19617:6:11" + }, + { + "name": "n", + "nativeSrc": "19625:1:11", + "nodeType": "YulIdentifier", + "src": "19625:1:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "19610:6:11", + "nodeType": "YulIdentifier", + "src": "19610:6:11" + }, + "nativeSrc": "19610:17:11", + "nodeType": "YulFunctionCall", + "src": "19610:17:11" + }, + "nativeSrc": "19610:17:11", + "nodeType": "YulExpressionStatement", + "src": "19610:17:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5499, + "isOffset": false, + "isSlot": false, + "src": "19444:6:11", + "valueSize": 1 + }, + { + "declaration": 5499, + "isOffset": false, + "isSlot": false, + "src": "19498:6:11", + "valueSize": 1 + }, + { + "declaration": 5499, + "isOffset": false, + "isSlot": false, + "src": "19552:6:11", + "valueSize": 1 + }, + { + "declaration": 5499, + "isOffset": false, + "isSlot": false, + "src": "19566:6:11", + "valueSize": 1 + }, + { + "declaration": 5499, + "isOffset": false, + "isSlot": false, + "src": "19617:6:11", + "valueSize": 1 + } + ], + "id": 5507, + "nodeType": "InlineAssembly", + "src": "19402:256:11" + } + ] + }, + "documentation": { + "id": 5494, + "nodeType": "StructuredDocumentation", + "src": "19091:126:11", + "text": "@dev Returns the hex encoded string from the raw bytes.\n The output is encoded using 2 hexadecimal digits per byte." + }, + "id": 5509, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toHexString", + "nameLocation": "19231:11:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5497, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5496, + "mutability": "mutable", + "name": "raw", + "nameLocation": "19256:3:11", + "nodeType": "VariableDeclaration", + "scope": 5509, + "src": "19243:16:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5495, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "19243:5:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "19242:18:11" + }, + "returnParameters": { + "id": 5500, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5499, + "mutability": "mutable", + "name": "result", + "nameLocation": "19298:6:11", + "nodeType": "VariableDeclaration", + "scope": 5509, + "src": "19284:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5498, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "19284:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "19283:22:11" + }, + "scope": 6145, + "src": "19222:442:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5518, + "nodeType": "Block", + "src": "19893:816:11", + "statements": [ + { + "AST": { + "nativeSrc": "19955:748:11", + "nodeType": "YulBlock", + "src": "19955:748:11", + "statements": [ + { + "nativeSrc": "19969:19:11", + "nodeType": "YulVariableDeclaration", + "src": "19969:19:11", + "value": { + "arguments": [ + { + "name": "raw", + "nativeSrc": "19984:3:11", + "nodeType": "YulIdentifier", + "src": "19984:3:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "19978:5:11", + "nodeType": "YulIdentifier", + "src": "19978:5:11" + }, + "nativeSrc": "19978:10:11", + "nodeType": "YulFunctionCall", + "src": "19978:10:11" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "19973:1:11", + "nodeType": "YulTypedName", + "src": "19973:1:11", + "type": "" + } + ] + }, + { + "nativeSrc": "20001:29:11", + "nodeType": "YulAssignment", + "src": "20001:29:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20021:4:11", + "nodeType": "YulLiteral", + "src": "20021:4:11", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "20015:5:11", + "nodeType": "YulIdentifier", + "src": "20015:5:11" + }, + "nativeSrc": "20015:11:11", + "nodeType": "YulFunctionCall", + "src": "20015:11:11" + }, + { + "kind": "number", + "nativeSrc": "20028:1:11", + "nodeType": "YulLiteral", + "src": "20028:1:11", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20011:3:11", + "nodeType": "YulIdentifier", + "src": "20011:3:11" + }, + "nativeSrc": "20011:19:11", + "nodeType": "YulFunctionCall", + "src": "20011:19:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "20001:6:11", + "nodeType": "YulIdentifier", + "src": "20001:6:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "20091:6:11", + "nodeType": "YulIdentifier", + "src": "20091:6:11" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "20103:1:11", + "nodeType": "YulIdentifier", + "src": "20103:1:11" + }, + { + "name": "n", + "nativeSrc": "20106:1:11", + "nodeType": "YulIdentifier", + "src": "20106:1:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20099:3:11", + "nodeType": "YulIdentifier", + "src": "20099:3:11" + }, + "nativeSrc": "20099:9:11", + "nodeType": "YulFunctionCall", + "src": "20099:9:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "20084:6:11", + "nodeType": "YulIdentifier", + "src": "20084:6:11" + }, + "nativeSrc": "20084:25:11", + "nodeType": "YulFunctionCall", + "src": "20084:25:11" + }, + "nativeSrc": "20084:25:11", + "nodeType": "YulExpressionStatement", + "src": "20084:25:11" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20165:4:11", + "nodeType": "YulLiteral", + "src": "20165:4:11", + "type": "", + "value": "0x0f" + }, + { + "kind": "number", + "nativeSrc": "20171:34:11", + "nodeType": "YulLiteral", + "src": "20171:34:11", + "type": "", + "value": "0x30313233343536373839616263646566" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "20158:6:11", + "nodeType": "YulIdentifier", + "src": "20158:6:11" + }, + "nativeSrc": "20158:48:11", + "nodeType": "YulFunctionCall", + "src": "20158:48:11" + }, + "nativeSrc": "20158:48:11", + "nodeType": "YulExpressionStatement", + "src": "20158:48:11" + }, + { + "nativeSrc": "20259:26:11", + "nodeType": "YulVariableDeclaration", + "src": "20259:26:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "20272:6:11", + "nodeType": "YulIdentifier", + "src": "20272:6:11" + }, + { + "kind": "number", + "nativeSrc": "20280:4:11", + "nodeType": "YulLiteral", + "src": "20280:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20268:3:11", + "nodeType": "YulIdentifier", + "src": "20268:3:11" + }, + "nativeSrc": "20268:17:11", + "nodeType": "YulFunctionCall", + "src": "20268:17:11" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "20263:1:11", + "nodeType": "YulTypedName", + "src": "20263:1:11", + "type": "" + } + ] + }, + { + "nativeSrc": "20298:22:11", + "nodeType": "YulVariableDeclaration", + "src": "20298:22:11", + "value": { + "arguments": [ + { + "name": "raw", + "nativeSrc": "20313:3:11", + "nodeType": "YulIdentifier", + "src": "20313:3:11" + }, + { + "name": "n", + "nativeSrc": "20318:1:11", + "nodeType": "YulIdentifier", + "src": "20318:1:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20309:3:11", + "nodeType": "YulIdentifier", + "src": "20309:3:11" + }, + "nativeSrc": "20309:11:11", + "nodeType": "YulFunctionCall", + "src": "20309:11:11" + }, + "variables": [ + { + "name": "end", + "nativeSrc": "20302:3:11", + "nodeType": "YulTypedName", + "src": "20302:3:11", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "20364:207:11", + "nodeType": "YulBlock", + "src": "20364:207:11", + "statements": [ + { + "nativeSrc": "20382:18:11", + "nodeType": "YulAssignment", + "src": "20382:18:11", + "value": { + "arguments": [ + { + "name": "raw", + "nativeSrc": "20393:3:11", + "nodeType": "YulIdentifier", + "src": "20393:3:11" + }, + { + "kind": "number", + "nativeSrc": "20398:1:11", + "nodeType": "YulLiteral", + "src": "20398:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20389:3:11", + "nodeType": "YulIdentifier", + "src": "20389:3:11" + }, + "nativeSrc": "20389:11:11", + "nodeType": "YulFunctionCall", + "src": "20389:11:11" + }, + "variableNames": [ + { + "name": "raw", + "nativeSrc": "20382:3:11", + "nodeType": "YulIdentifier", + "src": "20382:3:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "20429:1:11", + "nodeType": "YulIdentifier", + "src": "20429:1:11" + }, + { + "kind": "number", + "nativeSrc": "20432:1:11", + "nodeType": "YulLiteral", + "src": "20432:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20425:3:11", + "nodeType": "YulIdentifier", + "src": "20425:3:11" + }, + "nativeSrc": "20425:9:11", + "nodeType": "YulFunctionCall", + "src": "20425:9:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "raw", + "nativeSrc": "20452:3:11", + "nodeType": "YulIdentifier", + "src": "20452:3:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "20446:5:11", + "nodeType": "YulIdentifier", + "src": "20446:5:11" + }, + "nativeSrc": "20446:10:11", + "nodeType": "YulFunctionCall", + "src": "20446:10:11" + }, + { + "kind": "number", + "nativeSrc": "20458:2:11", + "nodeType": "YulLiteral", + "src": "20458:2:11", + "type": "", + "value": "15" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "20442:3:11", + "nodeType": "YulIdentifier", + "src": "20442:3:11" + }, + "nativeSrc": "20442:19:11", + "nodeType": "YulFunctionCall", + "src": "20442:19:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "20436:5:11", + "nodeType": "YulIdentifier", + "src": "20436:5:11" + }, + "nativeSrc": "20436:26:11", + "nodeType": "YulFunctionCall", + "src": "20436:26:11" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "20417:7:11", + "nodeType": "YulIdentifier", + "src": "20417:7:11" + }, + "nativeSrc": "20417:46:11", + "nodeType": "YulFunctionCall", + "src": "20417:46:11" + }, + "nativeSrc": "20417:46:11", + "nodeType": "YulExpressionStatement", + "src": "20417:46:11" + }, + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "20488:1:11", + "nodeType": "YulIdentifier", + "src": "20488:1:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20505:1:11", + "nodeType": "YulLiteral", + "src": "20505:1:11", + "type": "", + "value": "4" + }, + { + "arguments": [ + { + "name": "raw", + "nativeSrc": "20514:3:11", + "nodeType": "YulIdentifier", + "src": "20514:3:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "20508:5:11", + "nodeType": "YulIdentifier", + "src": "20508:5:11" + }, + "nativeSrc": "20508:10:11", + "nodeType": "YulFunctionCall", + "src": "20508:10:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "20501:3:11", + "nodeType": "YulIdentifier", + "src": "20501:3:11" + }, + "nativeSrc": "20501:18:11", + "nodeType": "YulFunctionCall", + "src": "20501:18:11" + }, + { + "kind": "number", + "nativeSrc": "20521:2:11", + "nodeType": "YulLiteral", + "src": "20521:2:11", + "type": "", + "value": "15" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "20497:3:11", + "nodeType": "YulIdentifier", + "src": "20497:3:11" + }, + "nativeSrc": "20497:27:11", + "nodeType": "YulFunctionCall", + "src": "20497:27:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "20491:5:11", + "nodeType": "YulIdentifier", + "src": "20491:5:11" + }, + "nativeSrc": "20491:34:11", + "nodeType": "YulFunctionCall", + "src": "20491:34:11" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "20480:7:11", + "nodeType": "YulIdentifier", + "src": "20480:7:11" + }, + "nativeSrc": "20480:46:11", + "nodeType": "YulFunctionCall", + "src": "20480:46:11" + }, + "nativeSrc": "20480:46:11", + "nodeType": "YulExpressionStatement", + "src": "20480:46:11" + }, + { + "nativeSrc": "20543:14:11", + "nodeType": "YulAssignment", + "src": "20543:14:11", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "20552:1:11", + "nodeType": "YulIdentifier", + "src": "20552:1:11" + }, + { + "kind": "number", + "nativeSrc": "20555:1:11", + "nodeType": "YulLiteral", + "src": "20555:1:11", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20548:3:11", + "nodeType": "YulIdentifier", + "src": "20548:3:11" + }, + "nativeSrc": "20548:9:11", + "nodeType": "YulFunctionCall", + "src": "20548:9:11" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "20543:1:11", + "nodeType": "YulIdentifier", + "src": "20543:1:11" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "raw", + "nativeSrc": "20350:3:11", + "nodeType": "YulIdentifier", + "src": "20350:3:11" + }, + { + "name": "end", + "nativeSrc": "20355:3:11", + "nodeType": "YulIdentifier", + "src": "20355:3:11" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "20347:2:11", + "nodeType": "YulIdentifier", + "src": "20347:2:11" + }, + "nativeSrc": "20347:12:11", + "nodeType": "YulFunctionCall", + "src": "20347:12:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "20340:6:11", + "nodeType": "YulIdentifier", + "src": "20340:6:11" + }, + "nativeSrc": "20340:20:11", + "nodeType": "YulFunctionCall", + "src": "20340:20:11" + }, + "nativeSrc": "20333:238:11", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "20361:2:11", + "nodeType": "YulBlock", + "src": "20361:2:11", + "statements": [] + }, + "pre": { + "nativeSrc": "20337:2:11", + "nodeType": "YulBlock", + "src": "20337:2:11", + "statements": [] + }, + "src": "20333:238:11" + }, + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "20591:1:11", + "nodeType": "YulIdentifier", + "src": "20591:1:11" + }, + { + "kind": "number", + "nativeSrc": "20594:1:11", + "nodeType": "YulLiteral", + "src": "20594:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "20584:6:11", + "nodeType": "YulIdentifier", + "src": "20584:6:11" + }, + "nativeSrc": "20584:12:11", + "nodeType": "YulFunctionCall", + "src": "20584:12:11" + }, + "nativeSrc": "20584:12:11", + "nodeType": "YulExpressionStatement", + "src": "20584:12:11" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20654:4:11", + "nodeType": "YulLiteral", + "src": "20654:4:11", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "o", + "nativeSrc": "20664:1:11", + "nodeType": "YulIdentifier", + "src": "20664:1:11" + }, + { + "kind": "number", + "nativeSrc": "20667:4:11", + "nodeType": "YulLiteral", + "src": "20667:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20660:3:11", + "nodeType": "YulIdentifier", + "src": "20660:3:11" + }, + "nativeSrc": "20660:12:11", + "nodeType": "YulFunctionCall", + "src": "20660:12:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "20647:6:11", + "nodeType": "YulIdentifier", + "src": "20647:6:11" + }, + "nativeSrc": "20647:26:11", + "nodeType": "YulFunctionCall", + "src": "20647:26:11" + }, + "nativeSrc": "20647:26:11", + "nodeType": "YulExpressionStatement", + "src": "20647:26:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5512, + "isOffset": false, + "isSlot": false, + "src": "19984:3:11", + "valueSize": 1 + }, + { + "declaration": 5512, + "isOffset": false, + "isSlot": false, + "src": "20313:3:11", + "valueSize": 1 + }, + { + "declaration": 5512, + "isOffset": false, + "isSlot": false, + "src": "20350:3:11", + "valueSize": 1 + }, + { + "declaration": 5512, + "isOffset": false, + "isSlot": false, + "src": "20382:3:11", + "valueSize": 1 + }, + { + "declaration": 5512, + "isOffset": false, + "isSlot": false, + "src": "20393:3:11", + "valueSize": 1 + }, + { + "declaration": 5512, + "isOffset": false, + "isSlot": false, + "src": "20452:3:11", + "valueSize": 1 + }, + { + "declaration": 5512, + "isOffset": false, + "isSlot": false, + "src": "20514:3:11", + "valueSize": 1 + }, + { + "declaration": 5515, + "isOffset": false, + "isSlot": false, + "src": "20001:6:11", + "valueSize": 1 + }, + { + "declaration": 5515, + "isOffset": false, + "isSlot": false, + "src": "20091:6:11", + "valueSize": 1 + }, + { + "declaration": 5515, + "isOffset": false, + "isSlot": false, + "src": "20272:6:11", + "valueSize": 1 + } + ], + "id": 5517, + "nodeType": "InlineAssembly", + "src": "19946:757:11" + } + ] + }, + "documentation": { + "id": 5510, + "nodeType": "StructuredDocumentation", + "src": "19670:126:11", + "text": "@dev Returns the hex encoded string from the raw bytes.\n The output is encoded using 2 hexadecimal digits per byte." + }, + "id": 5519, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toHexStringNoPrefix", + "nameLocation": "19810:19:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5513, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5512, + "mutability": "mutable", + "name": "raw", + "nameLocation": "19843:3:11", + "nodeType": "VariableDeclaration", + "scope": 5519, + "src": "19830:16:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5511, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "19830:5:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "19829:18:11" + }, + "returnParameters": { + "id": 5516, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5515, + "mutability": "mutable", + "name": "result", + "nameLocation": "19885:6:11", + "nodeType": "VariableDeclaration", + "scope": 5519, + "src": "19871:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5514, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "19871:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "19870:22:11" + }, + "scope": 6145, + "src": "19801:908:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5528, + "nodeType": "Block", + "src": "21138:552:11", + "statements": [ + { + "AST": { + "nativeSrc": "21200:484:11", + "nodeType": "YulBlock", + "src": "21200:484:11", + "statements": [ + { + "body": { + "nativeSrc": "21226:448:11", + "nodeType": "YulBlock", + "src": "21226:448:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21251:4:11", + "nodeType": "YulLiteral", + "src": "21251:4:11", + "type": "", + "value": "0x00" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21265:1:11", + "nodeType": "YulLiteral", + "src": "21265:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "21261:3:11", + "nodeType": "YulIdentifier", + "src": "21261:3:11" + }, + "nativeSrc": "21261:6:11", + "nodeType": "YulFunctionCall", + "src": "21261:6:11" + }, + { + "kind": "number", + "nativeSrc": "21269:3:11", + "nodeType": "YulLiteral", + "src": "21269:3:11", + "type": "", + "value": "255" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "21257:3:11", + "nodeType": "YulIdentifier", + "src": "21257:3:11" + }, + "nativeSrc": "21257:16:11", + "nodeType": "YulFunctionCall", + "src": "21257:16:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "21244:6:11", + "nodeType": "YulIdentifier", + "src": "21244:6:11" + }, + "nativeSrc": "21244:30:11", + "nodeType": "YulFunctionCall", + "src": "21244:30:11" + }, + "nativeSrc": "21244:30:11", + "nodeType": "YulExpressionStatement", + "src": "21244:30:11" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21298:4:11", + "nodeType": "YulLiteral", + "src": "21298:4:11", + "type": "", + "value": "0x20" + }, + { + "kind": "number", + "nativeSrc": "21304:66:11", + "nodeType": "YulLiteral", + "src": "21304:66:11", + "type": "", + "value": "0x0202020202020202020202020202020202020202020202020303030304040506" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "21291:6:11", + "nodeType": "YulIdentifier", + "src": "21291:6:11" + }, + "nativeSrc": "21291:80:11", + "nodeType": "YulFunctionCall", + "src": "21291:80:11" + }, + "nativeSrc": "21291:80:11", + "nodeType": "YulExpressionStatement", + "src": "21291:80:11" + }, + { + "nativeSrc": "21388:21:11", + "nodeType": "YulVariableDeclaration", + "src": "21388:21:11", + "value": { + "arguments": [ + { + "name": "s", + "nativeSrc": "21401:1:11", + "nodeType": "YulIdentifier", + "src": "21401:1:11" + }, + { + "kind": "number", + "nativeSrc": "21404:4:11", + "nodeType": "YulLiteral", + "src": "21404:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21397:3:11", + "nodeType": "YulIdentifier", + "src": "21397:3:11" + }, + "nativeSrc": "21397:12:11", + "nodeType": "YulFunctionCall", + "src": "21397:12:11" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "21392:1:11", + "nodeType": "YulTypedName", + "src": "21392:1:11", + "type": "" + } + ] + }, + { + "nativeSrc": "21426:27:11", + "nodeType": "YulVariableDeclaration", + "src": "21426:27:11", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "21441:1:11", + "nodeType": "YulIdentifier", + "src": "21441:1:11" + }, + { + "arguments": [ + { + "name": "s", + "nativeSrc": "21450:1:11", + "nodeType": "YulIdentifier", + "src": "21450:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "21444:5:11", + "nodeType": "YulIdentifier", + "src": "21444:5:11" + }, + "nativeSrc": "21444:8:11", + "nodeType": "YulFunctionCall", + "src": "21444:8:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21437:3:11", + "nodeType": "YulIdentifier", + "src": "21437:3:11" + }, + "nativeSrc": "21437:16:11", + "nodeType": "YulFunctionCall", + "src": "21437:16:11" + }, + "variables": [ + { + "name": "end", + "nativeSrc": "21430:3:11", + "nodeType": "YulTypedName", + "src": "21430:3:11", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "21521:139:11", + "nodeType": "YulBlock", + "src": "21521:139:11", + "statements": [ + { + "nativeSrc": "21543:47:11", + "nodeType": "YulAssignment", + "src": "21543:47:11", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "21552:1:11", + "nodeType": "YulIdentifier", + "src": "21552:1:11" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21560:1:11", + "nodeType": "YulLiteral", + "src": "21560:1:11", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21573:3:11", + "nodeType": "YulLiteral", + "src": "21573:3:11", + "type": "", + "value": "250" + }, + { + "arguments": [ + { + "name": "o", + "nativeSrc": "21584:1:11", + "nodeType": "YulIdentifier", + "src": "21584:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "21578:5:11", + "nodeType": "YulIdentifier", + "src": "21578:5:11" + }, + "nativeSrc": "21578:8:11", + "nodeType": "YulFunctionCall", + "src": "21578:8:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "21569:3:11", + "nodeType": "YulIdentifier", + "src": "21569:3:11" + }, + "nativeSrc": "21569:18:11", + "nodeType": "YulFunctionCall", + "src": "21569:18:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "21563:5:11", + "nodeType": "YulIdentifier", + "src": "21563:5:11" + }, + "nativeSrc": "21563:25:11", + "nodeType": "YulFunctionCall", + "src": "21563:25:11" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "21555:4:11", + "nodeType": "YulIdentifier", + "src": "21555:4:11" + }, + "nativeSrc": "21555:34:11", + "nodeType": "YulFunctionCall", + "src": "21555:34:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21548:3:11", + "nodeType": "YulIdentifier", + "src": "21548:3:11" + }, + "nativeSrc": "21548:42:11", + "nodeType": "YulFunctionCall", + "src": "21548:42:11" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "21543:1:11", + "nodeType": "YulIdentifier", + "src": "21543:1:11" + } + ] + }, + { + "body": { + "nativeSrc": "21633:9:11", + "nodeType": "YulBlock", + "src": "21633:9:11", + "statements": [ + { + "nativeSrc": "21635:5:11", + "nodeType": "YulBreak", + "src": "21635:5:11" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "21624:1:11", + "nodeType": "YulIdentifier", + "src": "21624:1:11" + }, + { + "name": "end", + "nativeSrc": "21627:3:11", + "nodeType": "YulIdentifier", + "src": "21627:3:11" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "21621:2:11", + "nodeType": "YulIdentifier", + "src": "21621:2:11" + }, + "nativeSrc": "21621:10:11", + "nodeType": "YulFunctionCall", + "src": "21621:10:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "21614:6:11", + "nodeType": "YulIdentifier", + "src": "21614:6:11" + }, + "nativeSrc": "21614:18:11", + "nodeType": "YulFunctionCall", + "src": "21614:18:11" + }, + "nativeSrc": "21611:31:11", + "nodeType": "YulIf", + "src": "21611:31:11" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "21490:1:11", + "nodeType": "YulLiteral", + "src": "21490:1:11", + "type": "", + "value": "1" + }, + "nativeSrc": "21470:190:11", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "21492:28:11", + "nodeType": "YulBlock", + "src": "21492:28:11", + "statements": [ + { + "nativeSrc": "21494:24:11", + "nodeType": "YulAssignment", + "src": "21494:24:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "21508:6:11", + "nodeType": "YulIdentifier", + "src": "21508:6:11" + }, + { + "kind": "number", + "nativeSrc": "21516:1:11", + "nodeType": "YulLiteral", + "src": "21516:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21504:3:11", + "nodeType": "YulIdentifier", + "src": "21504:3:11" + }, + "nativeSrc": "21504:14:11", + "nodeType": "YulFunctionCall", + "src": "21504:14:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "21494:6:11", + "nodeType": "YulIdentifier", + "src": "21494:6:11" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "21474:15:11", + "nodeType": "YulBlock", + "src": "21474:15:11", + "statements": [ + { + "nativeSrc": "21476:11:11", + "nodeType": "YulAssignment", + "src": "21476:11:11", + "value": { + "kind": "number", + "nativeSrc": "21486:1:11", + "nodeType": "YulLiteral", + "src": "21486:1:11", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "21476:6:11", + "nodeType": "YulIdentifier", + "src": "21476:6:11" + } + ] + } + ] + }, + "src": "21470:190:11" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "s", + "nativeSrc": "21223:1:11", + "nodeType": "YulIdentifier", + "src": "21223:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "21217:5:11", + "nodeType": "YulIdentifier", + "src": "21217:5:11" + }, + "nativeSrc": "21217:8:11", + "nodeType": "YulFunctionCall", + "src": "21217:8:11" + }, + "nativeSrc": "21214:460:11", + "nodeType": "YulIf", + "src": "21214:460:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5525, + "isOffset": false, + "isSlot": false, + "src": "21476:6:11", + "valueSize": 1 + }, + { + "declaration": 5525, + "isOffset": false, + "isSlot": false, + "src": "21494:6:11", + "valueSize": 1 + }, + { + "declaration": 5525, + "isOffset": false, + "isSlot": false, + "src": "21508:6:11", + "valueSize": 1 + }, + { + "declaration": 5522, + "isOffset": false, + "isSlot": false, + "src": "21223:1:11", + "valueSize": 1 + }, + { + "declaration": 5522, + "isOffset": false, + "isSlot": false, + "src": "21401:1:11", + "valueSize": 1 + }, + { + "declaration": 5522, + "isOffset": false, + "isSlot": false, + "src": "21450:1:11", + "valueSize": 1 + } + ], + "id": 5527, + "nodeType": "InlineAssembly", + "src": "21191:493:11" + } + ] + }, + "documentation": { + "id": 5520, + "nodeType": "StructuredDocumentation", + "src": "20998:60:11", + "text": "@dev Returns the number of UTF characters in the string." + }, + "id": 5529, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "runeCount", + "nameLocation": "21072:9:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5523, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5522, + "mutability": "mutable", + "name": "s", + "nameLocation": "21096:1:11", + "nodeType": "VariableDeclaration", + "scope": 5529, + "src": "21082:15:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5521, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "21082:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "21081:17:11" + }, + "returnParameters": { + "id": 5526, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5525, + "mutability": "mutable", + "name": "result", + "nameLocation": "21130:6:11", + "nodeType": "VariableDeclaration", + "scope": 5529, + "src": "21122:14:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5524, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21122:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "21121:16:11" + }, + "scope": 6145, + "src": "21063:627:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5538, + "nodeType": "Block", + "src": "21883:665:11", + "statements": [ + { + "AST": { + "nativeSrc": "21945:597:11", + "nodeType": "YulBlock", + "src": "21945:597:11", + "statements": [ + { + "nativeSrc": "21959:11:11", + "nodeType": "YulAssignment", + "src": "21959:11:11", + "value": { + "kind": "number", + "nativeSrc": "21969:1:11", + "nodeType": "YulLiteral", + "src": "21969:1:11", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "21959:6:11", + "nodeType": "YulIdentifier", + "src": "21959:6:11" + } + ] + }, + { + "nativeSrc": "21983:36:11", + "nodeType": "YulVariableDeclaration", + "src": "21983:36:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21999:1:11", + "nodeType": "YulLiteral", + "src": "21999:1:11", + "type": "", + "value": "7" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22010:1:11", + "nodeType": "YulLiteral", + "src": "22010:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "22006:3:11", + "nodeType": "YulIdentifier", + "src": "22006:3:11" + }, + "nativeSrc": "22006:6:11", + "nodeType": "YulFunctionCall", + "src": "22006:6:11" + }, + { + "kind": "number", + "nativeSrc": "22014:3:11", + "nodeType": "YulLiteral", + "src": "22014:3:11", + "type": "", + "value": "255" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "22002:3:11", + "nodeType": "YulIdentifier", + "src": "22002:3:11" + }, + "nativeSrc": "22002:16:11", + "nodeType": "YulFunctionCall", + "src": "22002:16:11" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "21995:3:11", + "nodeType": "YulIdentifier", + "src": "21995:3:11" + }, + "nativeSrc": "21995:24:11", + "nodeType": "YulFunctionCall", + "src": "21995:24:11" + }, + "variables": [ + { + "name": "mask", + "nativeSrc": "21987:4:11", + "nodeType": "YulTypedName", + "src": "21987:4:11", + "type": "" + } + ] + }, + { + "nativeSrc": "22032:17:11", + "nodeType": "YulVariableDeclaration", + "src": "22032:17:11", + "value": { + "arguments": [ + { + "name": "s", + "nativeSrc": "22047:1:11", + "nodeType": "YulIdentifier", + "src": "22047:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "22041:5:11", + "nodeType": "YulIdentifier", + "src": "22041:5:11" + }, + "nativeSrc": "22041:8:11", + "nodeType": "YulFunctionCall", + "src": "22041:8:11" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "22036:1:11", + "nodeType": "YulTypedName", + "src": "22036:1:11", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "22067:465:11", + "nodeType": "YulBlock", + "src": "22067:465:11", + "statements": [ + { + "nativeSrc": "22085:21:11", + "nodeType": "YulVariableDeclaration", + "src": "22085:21:11", + "value": { + "arguments": [ + { + "name": "s", + "nativeSrc": "22098:1:11", + "nodeType": "YulIdentifier", + "src": "22098:1:11" + }, + { + "kind": "number", + "nativeSrc": "22101:4:11", + "nodeType": "YulLiteral", + "src": "22101:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22094:3:11", + "nodeType": "YulIdentifier", + "src": "22094:3:11" + }, + "nativeSrc": "22094:12:11", + "nodeType": "YulFunctionCall", + "src": "22094:12:11" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "22089:1:11", + "nodeType": "YulTypedName", + "src": "22089:1:11", + "type": "" + } + ] + }, + { + "nativeSrc": "22123:20:11", + "nodeType": "YulVariableDeclaration", + "src": "22123:20:11", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "22138:1:11", + "nodeType": "YulIdentifier", + "src": "22138:1:11" + }, + { + "name": "n", + "nativeSrc": "22141:1:11", + "nodeType": "YulIdentifier", + "src": "22141:1:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22134:3:11", + "nodeType": "YulIdentifier", + "src": "22134:3:11" + }, + "nativeSrc": "22134:9:11", + "nodeType": "YulFunctionCall", + "src": "22134:9:11" + }, + "variables": [ + { + "name": "end", + "nativeSrc": "22127:3:11", + "nodeType": "YulTypedName", + "src": "22127:3:11", + "type": "" + } + ] + }, + { + "nativeSrc": "22160:22:11", + "nodeType": "YulVariableDeclaration", + "src": "22160:22:11", + "value": { + "arguments": [ + { + "name": "end", + "nativeSrc": "22178:3:11", + "nodeType": "YulIdentifier", + "src": "22178:3:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "22172:5:11", + "nodeType": "YulIdentifier", + "src": "22172:5:11" + }, + "nativeSrc": "22172:10:11", + "nodeType": "YulFunctionCall", + "src": "22172:10:11" + }, + "variables": [ + { + "name": "last", + "nativeSrc": "22164:4:11", + "nodeType": "YulTypedName", + "src": "22164:4:11", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "end", + "nativeSrc": "22206:3:11", + "nodeType": "YulIdentifier", + "src": "22206:3:11" + }, + { + "kind": "number", + "nativeSrc": "22211:1:11", + "nodeType": "YulLiteral", + "src": "22211:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22199:6:11", + "nodeType": "YulIdentifier", + "src": "22199:6:11" + }, + "nativeSrc": "22199:14:11", + "nodeType": "YulFunctionCall", + "src": "22199:14:11" + }, + "nativeSrc": "22199:14:11", + "nodeType": "YulExpressionStatement", + "src": "22199:14:11" + }, + { + "body": { + "nativeSrc": "22242:242:11", + "nodeType": "YulBlock", + "src": "22242:242:11", + "statements": [ + { + "body": { + "nativeSrc": "22287:89:11", + "nodeType": "YulBlock", + "src": "22287:89:11", + "statements": [ + { + "nativeSrc": "22313:11:11", + "nodeType": "YulAssignment", + "src": "22313:11:11", + "value": { + "kind": "number", + "nativeSrc": "22323:1:11", + "nodeType": "YulLiteral", + "src": "22323:1:11", + "type": "", + "value": "0" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "22313:6:11", + "nodeType": "YulIdentifier", + "src": "22313:6:11" + } + ] + }, + { + "nativeSrc": "22349:5:11", + "nodeType": "YulBreak", + "src": "22349:5:11" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "mask", + "nativeSrc": "22271:4:11", + "nodeType": "YulIdentifier", + "src": "22271:4:11" + }, + { + "arguments": [ + { + "name": "o", + "nativeSrc": "22283:1:11", + "nodeType": "YulIdentifier", + "src": "22283:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "22277:5:11", + "nodeType": "YulIdentifier", + "src": "22277:5:11" + }, + "nativeSrc": "22277:8:11", + "nodeType": "YulFunctionCall", + "src": "22277:8:11" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "22267:3:11", + "nodeType": "YulIdentifier", + "src": "22267:3:11" + }, + "nativeSrc": "22267:19:11", + "nodeType": "YulFunctionCall", + "src": "22267:19:11" + }, + "nativeSrc": "22264:112:11", + "nodeType": "YulIf", + "src": "22264:112:11" + }, + { + "nativeSrc": "22397:17:11", + "nodeType": "YulAssignment", + "src": "22397:17:11", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "22406:1:11", + "nodeType": "YulIdentifier", + "src": "22406:1:11" + }, + { + "kind": "number", + "nativeSrc": "22409:4:11", + "nodeType": "YulLiteral", + "src": "22409:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22402:3:11", + "nodeType": "YulIdentifier", + "src": "22402:3:11" + }, + "nativeSrc": "22402:12:11", + "nodeType": "YulFunctionCall", + "src": "22402:12:11" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "22397:1:11", + "nodeType": "YulIdentifier", + "src": "22397:1:11" + } + ] + }, + { + "body": { + "nativeSrc": "22457:9:11", + "nodeType": "YulBlock", + "src": "22457:9:11", + "statements": [ + { + "nativeSrc": "22459:5:11", + "nodeType": "YulBreak", + "src": "22459:5:11" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "22448:1:11", + "nodeType": "YulIdentifier", + "src": "22448:1:11" + }, + { + "name": "end", + "nativeSrc": "22451:3:11", + "nodeType": "YulIdentifier", + "src": "22451:3:11" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "22445:2:11", + "nodeType": "YulIdentifier", + "src": "22445:2:11" + }, + "nativeSrc": "22445:10:11", + "nodeType": "YulFunctionCall", + "src": "22445:10:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "22438:6:11", + "nodeType": "YulIdentifier", + "src": "22438:6:11" + }, + "nativeSrc": "22438:18:11", + "nodeType": "YulFunctionCall", + "src": "22438:18:11" + }, + "nativeSrc": "22435:31:11", + "nodeType": "YulIf", + "src": "22435:31:11" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "22237:1:11", + "nodeType": "YulLiteral", + "src": "22237:1:11", + "type": "", + "value": "1" + }, + "nativeSrc": "22230:254:11", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "22239:2:11", + "nodeType": "YulBlock", + "src": "22239:2:11", + "statements": [] + }, + "pre": { + "nativeSrc": "22234:2:11", + "nodeType": "YulBlock", + "src": "22234:2:11", + "statements": [] + }, + "src": "22230:254:11" + }, + { + "expression": { + "arguments": [ + { + "name": "end", + "nativeSrc": "22508:3:11", + "nodeType": "YulIdentifier", + "src": "22508:3:11" + }, + { + "name": "last", + "nativeSrc": "22513:4:11", + "nodeType": "YulIdentifier", + "src": "22513:4:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22501:6:11", + "nodeType": "YulIdentifier", + "src": "22501:6:11" + }, + "nativeSrc": "22501:17:11", + "nodeType": "YulFunctionCall", + "src": "22501:17:11" + }, + "nativeSrc": "22501:17:11", + "nodeType": "YulExpressionStatement", + "src": "22501:17:11" + } + ] + }, + "condition": { + "name": "n", + "nativeSrc": "22065:1:11", + "nodeType": "YulIdentifier", + "src": "22065:1:11" + }, + "nativeSrc": "22062:470:11", + "nodeType": "YulIf", + "src": "22062:470:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5535, + "isOffset": false, + "isSlot": false, + "src": "21959:6:11", + "valueSize": 1 + }, + { + "declaration": 5535, + "isOffset": false, + "isSlot": false, + "src": "22313:6:11", + "valueSize": 1 + }, + { + "declaration": 5532, + "isOffset": false, + "isSlot": false, + "src": "22047:1:11", + "valueSize": 1 + }, + { + "declaration": 5532, + "isOffset": false, + "isSlot": false, + "src": "22098:1:11", + "valueSize": 1 + } + ], + "id": 5537, + "nodeType": "InlineAssembly", + "src": "21936:606:11" + } + ] + }, + "documentation": { + "id": 5530, + "nodeType": "StructuredDocumentation", + "src": "21696:108:11", + "text": "@dev Returns if this string is a 7-bit ASCII string.\n (i.e. all characters codes are in [0..127])" + }, + "id": 5539, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "is7BitASCII", + "nameLocation": "21818:11:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5533, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5532, + "mutability": "mutable", + "name": "s", + "nameLocation": "21844:1:11", + "nodeType": "VariableDeclaration", + "scope": 5539, + "src": "21830:15:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5531, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "21830:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "21829:17:11" + }, + "returnParameters": { + "id": 5536, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5535, + "mutability": "mutable", + "name": "result", + "nameLocation": "21875:6:11", + "nodeType": "VariableDeclaration", + "scope": 5539, + "src": "21870:11:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5534, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "21870:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "21869:13:11" + }, + "scope": 6145, + "src": "21809:739:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5550, + "nodeType": "Block", + "src": "22831:494:11", + "statements": [ + { + "AST": { + "nativeSrc": "22893:426:11", + "nodeType": "YulBlock", + "src": "22893:426:11", + "statements": [ + { + "nativeSrc": "22907:11:11", + "nodeType": "YulAssignment", + "src": "22907:11:11", + "value": { + "kind": "number", + "nativeSrc": "22917:1:11", + "nodeType": "YulLiteral", + "src": "22917:1:11", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "22907:6:11", + "nodeType": "YulIdentifier", + "src": "22907:6:11" + } + ] + }, + { + "body": { + "nativeSrc": "22943:366:11", + "nodeType": "YulBlock", + "src": "22943:366:11", + "statements": [ + { + "nativeSrc": "22961:43:11", + "nodeType": "YulVariableDeclaration", + "src": "22961:43:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22981:3:11", + "nodeType": "YulLiteral", + "src": "22981:3:11", + "type": "", + "value": "128" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22990:3:11", + "nodeType": "YulLiteral", + "src": "22990:3:11", + "type": "", + "value": "128" + }, + { + "name": "allowed", + "nativeSrc": "22995:7:11", + "nodeType": "YulIdentifier", + "src": "22995:7:11" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "22986:3:11", + "nodeType": "YulIdentifier", + "src": "22986:3:11" + }, + "nativeSrc": "22986:17:11", + "nodeType": "YulFunctionCall", + "src": "22986:17:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "22977:3:11", + "nodeType": "YulIdentifier", + "src": "22977:3:11" + }, + "nativeSrc": "22977:27:11", + "nodeType": "YulFunctionCall", + "src": "22977:27:11" + }, + "variables": [ + { + "name": "allowed_", + "nativeSrc": "22965:8:11", + "nodeType": "YulTypedName", + "src": "22965:8:11", + "type": "" + } + ] + }, + { + "nativeSrc": "23021:21:11", + "nodeType": "YulVariableDeclaration", + "src": "23021:21:11", + "value": { + "arguments": [ + { + "name": "s", + "nativeSrc": "23034:1:11", + "nodeType": "YulIdentifier", + "src": "23034:1:11" + }, + { + "kind": "number", + "nativeSrc": "23037:4:11", + "nodeType": "YulLiteral", + "src": "23037:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23030:3:11", + "nodeType": "YulIdentifier", + "src": "23030:3:11" + }, + "nativeSrc": "23030:12:11", + "nodeType": "YulFunctionCall", + "src": "23030:12:11" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "23025:1:11", + "nodeType": "YulTypedName", + "src": "23025:1:11", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "23100:195:11", + "nodeType": "YulBlock", + "src": "23100:195:11", + "statements": [ + { + "nativeSrc": "23122:55:11", + "nodeType": "YulAssignment", + "src": "23122:55:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "23136:6:11", + "nodeType": "YulIdentifier", + "src": "23136:6:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23153:1:11", + "nodeType": "YulLiteral", + "src": "23153:1:11", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "name": "o", + "nativeSrc": "23162:1:11", + "nodeType": "YulIdentifier", + "src": "23162:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "23156:5:11", + "nodeType": "YulIdentifier", + "src": "23156:5:11" + }, + "nativeSrc": "23156:8:11", + "nodeType": "YulFunctionCall", + "src": "23156:8:11" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "23148:4:11", + "nodeType": "YulIdentifier", + "src": "23148:4:11" + }, + "nativeSrc": "23148:17:11", + "nodeType": "YulFunctionCall", + "src": "23148:17:11" + }, + { + "name": "allowed_", + "nativeSrc": "23167:8:11", + "nodeType": "YulIdentifier", + "src": "23167:8:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "23144:3:11", + "nodeType": "YulIdentifier", + "src": "23144:3:11" + }, + "nativeSrc": "23144:32:11", + "nodeType": "YulFunctionCall", + "src": "23144:32:11" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "23132:3:11", + "nodeType": "YulIdentifier", + "src": "23132:3:11" + }, + "nativeSrc": "23132:45:11", + "nodeType": "YulFunctionCall", + "src": "23132:45:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "23122:6:11", + "nodeType": "YulIdentifier", + "src": "23122:6:11" + } + ] + }, + { + "nativeSrc": "23198:14:11", + "nodeType": "YulAssignment", + "src": "23198:14:11", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "23207:1:11", + "nodeType": "YulIdentifier", + "src": "23207:1:11" + }, + { + "kind": "number", + "nativeSrc": "23210:1:11", + "nodeType": "YulLiteral", + "src": "23210:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23203:3:11", + "nodeType": "YulIdentifier", + "src": "23203:3:11" + }, + "nativeSrc": "23203:9:11", + "nodeType": "YulFunctionCall", + "src": "23203:9:11" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "23198:1:11", + "nodeType": "YulIdentifier", + "src": "23198:1:11" + } + ] + }, + { + "body": { + "nativeSrc": "23268:9:11", + "nodeType": "YulBlock", + "src": "23268:9:11", + "statements": [ + { + "nativeSrc": "23270:5:11", + "nodeType": "YulBreak", + "src": "23270:5:11" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "23247:6:11", + "nodeType": "YulIdentifier", + "src": "23247:6:11" + }, + { + "arguments": [ + { + "name": "o", + "nativeSrc": "23258:1:11", + "nodeType": "YulIdentifier", + "src": "23258:1:11" + }, + { + "name": "end", + "nativeSrc": "23261:3:11", + "nodeType": "YulIdentifier", + "src": "23261:3:11" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "23255:2:11", + "nodeType": "YulIdentifier", + "src": "23255:2:11" + }, + "nativeSrc": "23255:10:11", + "nodeType": "YulFunctionCall", + "src": "23255:10:11" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "23243:3:11", + "nodeType": "YulIdentifier", + "src": "23243:3:11" + }, + "nativeSrc": "23243:23:11", + "nodeType": "YulFunctionCall", + "src": "23243:23:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "23236:6:11", + "nodeType": "YulIdentifier", + "src": "23236:6:11" + }, + "nativeSrc": "23236:31:11", + "nodeType": "YulFunctionCall", + "src": "23236:31:11" + }, + "nativeSrc": "23233:44:11", + "nodeType": "YulIf", + "src": "23233:44:11" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "23095:1:11", + "nodeType": "YulLiteral", + "src": "23095:1:11", + "type": "", + "value": "1" + }, + "nativeSrc": "23059:236:11", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "23097:2:11", + "nodeType": "YulBlock", + "src": "23097:2:11", + "statements": [] + }, + "pre": { + "nativeSrc": "23063:31:11", + "nodeType": "YulBlock", + "src": "23063:31:11", + "statements": [ + { + "nativeSrc": "23065:27:11", + "nodeType": "YulVariableDeclaration", + "src": "23065:27:11", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "23080:1:11", + "nodeType": "YulIdentifier", + "src": "23080:1:11" + }, + { + "arguments": [ + { + "name": "s", + "nativeSrc": "23089:1:11", + "nodeType": "YulIdentifier", + "src": "23089:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "23083:5:11", + "nodeType": "YulIdentifier", + "src": "23083:5:11" + }, + "nativeSrc": "23083:8:11", + "nodeType": "YulFunctionCall", + "src": "23083:8:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23076:3:11", + "nodeType": "YulIdentifier", + "src": "23076:3:11" + }, + "nativeSrc": "23076:16:11", + "nodeType": "YulFunctionCall", + "src": "23076:16:11" + }, + "variables": [ + { + "name": "end", + "nativeSrc": "23069:3:11", + "nodeType": "YulTypedName", + "src": "23069:3:11", + "type": "" + } + ] + } + ] + }, + "src": "23059:236:11" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "s", + "nativeSrc": "22940:1:11", + "nodeType": "YulIdentifier", + "src": "22940:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "22934:5:11", + "nodeType": "YulIdentifier", + "src": "22934:5:11" + }, + "nativeSrc": "22934:8:11", + "nodeType": "YulFunctionCall", + "src": "22934:8:11" + }, + "nativeSrc": "22931:378:11", + "nodeType": "YulIf", + "src": "22931:378:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5544, + "isOffset": false, + "isSlot": false, + "src": "22995:7:11", + "valueSize": 1 + }, + { + "declaration": 5547, + "isOffset": false, + "isSlot": false, + "src": "22907:6:11", + "valueSize": 1 + }, + { + "declaration": 5547, + "isOffset": false, + "isSlot": false, + "src": "23122:6:11", + "valueSize": 1 + }, + { + "declaration": 5547, + "isOffset": false, + "isSlot": false, + "src": "23136:6:11", + "valueSize": 1 + }, + { + "declaration": 5547, + "isOffset": false, + "isSlot": false, + "src": "23247:6:11", + "valueSize": 1 + }, + { + "declaration": 5542, + "isOffset": false, + "isSlot": false, + "src": "22940:1:11", + "valueSize": 1 + }, + { + "declaration": 5542, + "isOffset": false, + "isSlot": false, + "src": "23034:1:11", + "valueSize": 1 + }, + { + "declaration": 5542, + "isOffset": false, + "isSlot": false, + "src": "23089:1:11", + "valueSize": 1 + } + ], + "id": 5549, + "nodeType": "InlineAssembly", + "src": "22884:435:11" + } + ] + }, + "documentation": { + "id": 5540, + "nodeType": "StructuredDocumentation", + "src": "22554:181:11", + "text": "@dev Returns if this string is a 7-bit ASCII string,\n AND all characters are in the `allowed` lookup.\n Note: If `s` is empty, returns true regardless of `allowed`." + }, + "id": 5551, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "is7BitASCII", + "nameLocation": "22749:11:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5545, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5542, + "mutability": "mutable", + "name": "s", + "nameLocation": "22775:1:11", + "nodeType": "VariableDeclaration", + "scope": 5551, + "src": "22761:15:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5541, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "22761:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5544, + "mutability": "mutable", + "name": "allowed", + "nameLocation": "22786:7:11", + "nodeType": "VariableDeclaration", + "scope": 5551, + "src": "22778:15:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 5543, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "22778:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "22760:34:11" + }, + "returnParameters": { + "id": 5548, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5547, + "mutability": "mutable", + "name": "result", + "nameLocation": "22823:6:11", + "nodeType": "VariableDeclaration", + "scope": 5551, + "src": "22818:11:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5546, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "22818:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "22817:13:11" + }, + "scope": 6145, + "src": "22740:585:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5560, + "nodeType": "Block", + "src": "23630:556:11", + "statements": [ + { + "AST": { + "nativeSrc": "23692:488:11", + "nodeType": "YulBlock", + "src": "23692:488:11", + "statements": [ + { + "body": { + "nativeSrc": "23718:452:11", + "nodeType": "YulBlock", + "src": "23718:452:11", + "statements": [ + { + "nativeSrc": "23736:21:11", + "nodeType": "YulVariableDeclaration", + "src": "23736:21:11", + "value": { + "arguments": [ + { + "name": "s", + "nativeSrc": "23749:1:11", + "nodeType": "YulIdentifier", + "src": "23749:1:11" + }, + { + "kind": "number", + "nativeSrc": "23752:4:11", + "nodeType": "YulLiteral", + "src": "23752:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23745:3:11", + "nodeType": "YulIdentifier", + "src": "23745:3:11" + }, + "nativeSrc": "23745:12:11", + "nodeType": "YulFunctionCall", + "src": "23745:12:11" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "23740:1:11", + "nodeType": "YulTypedName", + "src": "23740:1:11", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "23815:174:11", + "nodeType": "YulBlock", + "src": "23815:174:11", + "statements": [ + { + "nativeSrc": "23837:47:11", + "nodeType": "YulAssignment", + "src": "23837:47:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "23850:6:11", + "nodeType": "YulIdentifier", + "src": "23850:6:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23867:1:11", + "nodeType": "YulLiteral", + "src": "23867:1:11", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "name": "o", + "nativeSrc": "23876:1:11", + "nodeType": "YulIdentifier", + "src": "23876:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "23870:5:11", + "nodeType": "YulIdentifier", + "src": "23870:5:11" + }, + "nativeSrc": "23870:8:11", + "nodeType": "YulFunctionCall", + "src": "23870:8:11" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "23862:4:11", + "nodeType": "YulIdentifier", + "src": "23862:4:11" + }, + "nativeSrc": "23862:17:11", + "nodeType": "YulFunctionCall", + "src": "23862:17:11" + }, + { + "kind": "number", + "nativeSrc": "23881:1:11", + "nodeType": "YulLiteral", + "src": "23881:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "23858:3:11", + "nodeType": "YulIdentifier", + "src": "23858:3:11" + }, + "nativeSrc": "23858:25:11", + "nodeType": "YulFunctionCall", + "src": "23858:25:11" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "23847:2:11", + "nodeType": "YulIdentifier", + "src": "23847:2:11" + }, + "nativeSrc": "23847:37:11", + "nodeType": "YulFunctionCall", + "src": "23847:37:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "23837:6:11", + "nodeType": "YulIdentifier", + "src": "23837:6:11" + } + ] + }, + { + "nativeSrc": "23905:14:11", + "nodeType": "YulAssignment", + "src": "23905:14:11", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "23914:1:11", + "nodeType": "YulIdentifier", + "src": "23914:1:11" + }, + { + "kind": "number", + "nativeSrc": "23917:1:11", + "nodeType": "YulLiteral", + "src": "23917:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23910:3:11", + "nodeType": "YulIdentifier", + "src": "23910:3:11" + }, + "nativeSrc": "23910:9:11", + "nodeType": "YulFunctionCall", + "src": "23910:9:11" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "23905:1:11", + "nodeType": "YulIdentifier", + "src": "23905:1:11" + } + ] + }, + { + "body": { + "nativeSrc": "23962:9:11", + "nodeType": "YulBlock", + "src": "23962:9:11", + "statements": [ + { + "nativeSrc": "23964:5:11", + "nodeType": "YulBreak", + "src": "23964:5:11" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "23953:1:11", + "nodeType": "YulIdentifier", + "src": "23953:1:11" + }, + { + "name": "end", + "nativeSrc": "23956:3:11", + "nodeType": "YulIdentifier", + "src": "23956:3:11" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "23950:2:11", + "nodeType": "YulIdentifier", + "src": "23950:2:11" + }, + "nativeSrc": "23950:10:11", + "nodeType": "YulFunctionCall", + "src": "23950:10:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "23943:6:11", + "nodeType": "YulIdentifier", + "src": "23943:6:11" + }, + "nativeSrc": "23943:18:11", + "nodeType": "YulFunctionCall", + "src": "23943:18:11" + }, + "nativeSrc": "23940:31:11", + "nodeType": "YulIf", + "src": "23940:31:11" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "23810:1:11", + "nodeType": "YulLiteral", + "src": "23810:1:11", + "type": "", + "value": "1" + }, + "nativeSrc": "23774:215:11", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "23812:2:11", + "nodeType": "YulBlock", + "src": "23812:2:11", + "statements": [] + }, + "pre": { + "nativeSrc": "23778:31:11", + "nodeType": "YulBlock", + "src": "23778:31:11", + "statements": [ + { + "nativeSrc": "23780:27:11", + "nodeType": "YulVariableDeclaration", + "src": "23780:27:11", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "23795:1:11", + "nodeType": "YulIdentifier", + "src": "23795:1:11" + }, + { + "arguments": [ + { + "name": "s", + "nativeSrc": "23804:1:11", + "nodeType": "YulIdentifier", + "src": "23804:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "23798:5:11", + "nodeType": "YulIdentifier", + "src": "23798:5:11" + }, + "nativeSrc": "23798:8:11", + "nodeType": "YulFunctionCall", + "src": "23798:8:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23791:3:11", + "nodeType": "YulIdentifier", + "src": "23791:3:11" + }, + "nativeSrc": "23791:16:11", + "nodeType": "YulFunctionCall", + "src": "23791:16:11" + }, + "variables": [ + { + "name": "end", + "nativeSrc": "23784:3:11", + "nodeType": "YulTypedName", + "src": "23784:3:11", + "type": "" + } + ] + } + ] + }, + "src": "23774:215:11" + }, + { + "body": { + "nativeSrc": "24026:130:11", + "nodeType": "YulBlock", + "src": "24026:130:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "24055:4:11", + "nodeType": "YulLiteral", + "src": "24055:4:11", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "24061:10:11", + "nodeType": "YulLiteral", + "src": "24061:10:11", + "type": "", + "value": "0xc9807e0d" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "24048:6:11", + "nodeType": "YulIdentifier", + "src": "24048:6:11" + }, + "nativeSrc": "24048:24:11", + "nodeType": "YulFunctionCall", + "src": "24048:24:11" + }, + "nativeSrc": "24048:24:11", + "nodeType": "YulExpressionStatement", + "src": "24048:24:11" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "24127:4:11", + "nodeType": "YulLiteral", + "src": "24127:4:11", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "24133:4:11", + "nodeType": "YulLiteral", + "src": "24133:4:11", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "24120:6:11", + "nodeType": "YulIdentifier", + "src": "24120:6:11" + }, + "nativeSrc": "24120:18:11", + "nodeType": "YulFunctionCall", + "src": "24120:18:11" + }, + "nativeSrc": "24120:18:11", + "nodeType": "YulExpressionStatement", + "src": "24120:18:11" + } + ] + }, + "condition": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "24013:3:11", + "nodeType": "YulLiteral", + "src": "24013:3:11", + "type": "", + "value": "128" + }, + { + "name": "result", + "nativeSrc": "24018:6:11", + "nodeType": "YulIdentifier", + "src": "24018:6:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "24009:3:11", + "nodeType": "YulIdentifier", + "src": "24009:3:11" + }, + "nativeSrc": "24009:16:11", + "nodeType": "YulFunctionCall", + "src": "24009:16:11" + }, + "nativeSrc": "24006:150:11", + "nodeType": "YulIf", + "src": "24006:150:11" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "s", + "nativeSrc": "23715:1:11", + "nodeType": "YulIdentifier", + "src": "23715:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "23709:5:11", + "nodeType": "YulIdentifier", + "src": "23709:5:11" + }, + "nativeSrc": "23709:8:11", + "nodeType": "YulFunctionCall", + "src": "23709:8:11" + }, + "nativeSrc": "23706:464:11", + "nodeType": "YulIf", + "src": "23706:464:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5557, + "isOffset": false, + "isSlot": false, + "src": "23837:6:11", + "valueSize": 1 + }, + { + "declaration": 5557, + "isOffset": false, + "isSlot": false, + "src": "23850:6:11", + "valueSize": 1 + }, + { + "declaration": 5557, + "isOffset": false, + "isSlot": false, + "src": "24018:6:11", + "valueSize": 1 + }, + { + "declaration": 5554, + "isOffset": false, + "isSlot": false, + "src": "23715:1:11", + "valueSize": 1 + }, + { + "declaration": 5554, + "isOffset": false, + "isSlot": false, + "src": "23749:1:11", + "valueSize": 1 + }, + { + "declaration": 5554, + "isOffset": false, + "isSlot": false, + "src": "23804:1:11", + "valueSize": 1 + } + ], + "id": 5559, + "nodeType": "InlineAssembly", + "src": "23683:497:11" + } + ] + }, + "documentation": { + "id": 5552, + "nodeType": "StructuredDocumentation", + "src": "23331:204:11", + "text": "@dev Converts the bytes in the 7-bit ASCII string `s` to\n an allowed lookup for use in `is7BitASCII(s, allowed)`.\n To save runtime gas, you can cache the result in an immutable variable." + }, + "id": 5561, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "to7BitASCIIAllowedLookup", + "nameLocation": "23549:24:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5555, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5554, + "mutability": "mutable", + "name": "s", + "nameLocation": "23588:1:11", + "nodeType": "VariableDeclaration", + "scope": 5561, + "src": "23574:15:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5553, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "23574:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "23573:17:11" + }, + "returnParameters": { + "id": 5558, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5557, + "mutability": "mutable", + "name": "result", + "nameLocation": "23622:6:11", + "nodeType": "VariableDeclaration", + "scope": 5561, + "src": "23614:14:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 5556, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "23614:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "23613:16:11" + }, + "scope": 6145, + "src": "23540:646:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5592, + "nodeType": "Block", + "src": "25022:99:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 5579, + "name": "subject", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5564, + "src": "25069:7:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5578, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "25063:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5577, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "25063:5:11", + "typeDescriptions": {} + } + }, + "id": 5580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25063:14:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "arguments": [ + { + "id": 5583, + "name": "needle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5566, + "src": "25085:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5582, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "25079:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5581, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "25079:5:11", + "typeDescriptions": {} + } + }, + "id": 5584, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25079:13:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "arguments": [ + { + "id": 5587, + "name": "replacement", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5568, + "src": "25100:11:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5586, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "25094:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5585, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "25094:5:11", + "typeDescriptions": {} + } + }, + "id": 5588, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25094:18:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 5575, + "name": "LibBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "25046:8:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibBytes_$3089_$", + "typeString": "type(library LibBytes)" + } + }, + "id": 5576, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "25055:7:11", + "memberName": "replace", + "nodeType": "MemberAccess", + "referencedDeclaration": 2712, + "src": "25046:16:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,bytes memory,bytes memory) pure returns (bytes memory)" + } + }, + "id": 5589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25046:67:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5574, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "25039:6:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 5573, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "25039:6:11", + "typeDescriptions": {} + } + }, + "id": 5590, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25039:75:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 5572, + "id": 5591, + "nodeType": "Return", + "src": "25032:82:11" + } + ] + }, + "documentation": { + "id": 5562, + "nodeType": "StructuredDocumentation", + "src": "24779:83:11", + "text": "@dev Returns `subject` all occurrences of `needle` replaced with `replacement`." + }, + "id": 5593, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "replace", + "nameLocation": "24876:7:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5569, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5564, + "mutability": "mutable", + "name": "subject", + "nameLocation": "24898:7:11", + "nodeType": "VariableDeclaration", + "scope": 5593, + "src": "24884:21:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5563, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "24884:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5566, + "mutability": "mutable", + "name": "needle", + "nameLocation": "24921:6:11", + "nodeType": "VariableDeclaration", + "scope": 5593, + "src": "24907:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5565, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "24907:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5568, + "mutability": "mutable", + "name": "replacement", + "nameLocation": "24943:11:11", + "nodeType": "VariableDeclaration", + "scope": 5593, + "src": "24929:25:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5567, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "24929:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "24883:72:11" + }, + "returnParameters": { + "id": 5572, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5571, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5593, + "src": "25003:13:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5570, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "25003:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "25002:15:11" + }, + "scope": 6145, + "src": "24867:254:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5618, + "nodeType": "Block", + "src": "25492:77:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 5609, + "name": "subject", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5596, + "src": "25532:7:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5608, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "25526:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5607, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "25526:5:11", + "typeDescriptions": {} + } + }, + "id": 5610, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25526:14:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "arguments": [ + { + "id": 5613, + "name": "needle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5598, + "src": "25548:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5612, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "25542:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5611, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "25542:5:11", + "typeDescriptions": {} + } + }, + "id": 5614, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25542:13:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 5615, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5600, + "src": "25557:4:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 5605, + "name": "LibBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "25509:8:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibBytes_$3089_$", + "typeString": "type(library LibBytes)" + } + }, + "id": 5606, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "25518:7:11", + "memberName": "indexOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 2726, + "src": "25509:16:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (bytes memory,bytes memory,uint256) pure returns (uint256)" + } + }, + "id": 5616, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25509:53:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5604, + "id": 5617, + "nodeType": "Return", + "src": "25502:60:11" + } + ] + }, + "documentation": { + "id": 5594, + "nodeType": "StructuredDocumentation", + "src": "25127:224:11", + "text": "@dev Returns the byte index of the first location of `needle` in `subject`,\n needleing from left to right, starting from `from`.\n Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `needle` is not found." + }, + "id": 5619, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "indexOf", + "nameLocation": "25365:7:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5601, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5596, + "mutability": "mutable", + "name": "subject", + "nameLocation": "25387:7:11", + "nodeType": "VariableDeclaration", + "scope": 5619, + "src": "25373:21:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5595, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "25373:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5598, + "mutability": "mutable", + "name": "needle", + "nameLocation": "25410:6:11", + "nodeType": "VariableDeclaration", + "scope": 5619, + "src": "25396:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5597, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "25396:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5600, + "mutability": "mutable", + "name": "from", + "nameLocation": "25426:4:11", + "nodeType": "VariableDeclaration", + "scope": 5619, + "src": "25418:12:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5599, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "25418:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "25372:59:11" + }, + "returnParameters": { + "id": 5604, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5603, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5619, + "src": "25479:7:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5602, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "25479:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "25478:9:11" + }, + "scope": 6145, + "src": "25356:213:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5642, + "nodeType": "Block", + "src": "25876:74:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 5633, + "name": "subject", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5622, + "src": "25916:7:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5632, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "25910:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5631, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "25910:5:11", + "typeDescriptions": {} + } + }, + "id": 5634, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25910:14:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "arguments": [ + { + "id": 5637, + "name": "needle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5624, + "src": "25932:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5636, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "25926:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5635, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "25926:5:11", + "typeDescriptions": {} + } + }, + "id": 5638, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25926:13:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "hexValue": "30", + "id": 5639, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25941:1:11", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "expression": { + "id": 5629, + "name": "LibBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "25893:8:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibBytes_$3089_$", + "typeString": "type(library LibBytes)" + } + }, + "id": 5630, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "25902:7:11", + "memberName": "indexOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 2726, + "src": "25893:16:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (bytes memory,bytes memory,uint256) pure returns (uint256)" + } + }, + "id": 5640, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25893:50:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5628, + "id": 5641, + "nodeType": "Return", + "src": "25886:57:11" + } + ] + }, + "documentation": { + "id": 5620, + "nodeType": "StructuredDocumentation", + "src": "25575:202:11", + "text": "@dev Returns the byte index of the first location of `needle` in `subject`,\n needleing from left to right.\n Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `needle` is not found." + }, + "id": 5643, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "indexOf", + "nameLocation": "25791:7:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5625, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5622, + "mutability": "mutable", + "name": "subject", + "nameLocation": "25813:7:11", + "nodeType": "VariableDeclaration", + "scope": 5643, + "src": "25799:21:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5621, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "25799:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5624, + "mutability": "mutable", + "name": "needle", + "nameLocation": "25836:6:11", + "nodeType": "VariableDeclaration", + "scope": 5643, + "src": "25822:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5623, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "25822:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "25798:45:11" + }, + "returnParameters": { + "id": 5628, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5627, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5643, + "src": "25867:7:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5626, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "25867:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "25866:9:11" + }, + "scope": 6145, + "src": "25782:168:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5668, + "nodeType": "Block", + "src": "26325:81:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 5659, + "name": "subject", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5646, + "src": "26369:7:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5658, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "26363:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5657, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "26363:5:11", + "typeDescriptions": {} + } + }, + "id": 5660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26363:14:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "arguments": [ + { + "id": 5663, + "name": "needle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5648, + "src": "26385:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5662, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "26379:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5661, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "26379:5:11", + "typeDescriptions": {} + } + }, + "id": 5664, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26379:13:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 5665, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5650, + "src": "26394:4:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 5655, + "name": "LibBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "26342:8:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibBytes_$3089_$", + "typeString": "type(library LibBytes)" + } + }, + "id": 5656, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "26351:11:11", + "memberName": "lastIndexOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 2757, + "src": "26342:20:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (bytes memory,bytes memory,uint256) pure returns (uint256)" + } + }, + "id": 5666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26342:57:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5654, + "id": 5667, + "nodeType": "Return", + "src": "26335:64:11" + } + ] + }, + "documentation": { + "id": 5644, + "nodeType": "StructuredDocumentation", + "src": "25956:224:11", + "text": "@dev Returns the byte index of the first location of `needle` in `subject`,\n needleing from right to left, starting from `from`.\n Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `needle` is not found." + }, + "id": 5669, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "lastIndexOf", + "nameLocation": "26194:11:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5651, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5646, + "mutability": "mutable", + "name": "subject", + "nameLocation": "26220:7:11", + "nodeType": "VariableDeclaration", + "scope": 5669, + "src": "26206:21:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5645, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "26206:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5648, + "mutability": "mutable", + "name": "needle", + "nameLocation": "26243:6:11", + "nodeType": "VariableDeclaration", + "scope": 5669, + "src": "26229:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5647, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "26229:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5650, + "mutability": "mutable", + "name": "from", + "nameLocation": "26259:4:11", + "nodeType": "VariableDeclaration", + "scope": 5669, + "src": "26251:12:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5649, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26251:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "26205:59:11" + }, + "returnParameters": { + "id": 5654, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5653, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5669, + "src": "26312:7:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5652, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26312:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "26311:9:11" + }, + "scope": 6145, + "src": "26185:221:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5696, + "nodeType": "Block", + "src": "26745:94:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 5683, + "name": "subject", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5672, + "src": "26789:7:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5682, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "26783:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5681, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "26783:5:11", + "typeDescriptions": {} + } + }, + "id": 5684, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26783:14:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "arguments": [ + { + "id": 5687, + "name": "needle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5674, + "src": "26805:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5686, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "26799:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5685, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "26799:5:11", + "typeDescriptions": {} + } + }, + "id": 5688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26799:13:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "expression": { + "arguments": [ + { + "id": 5691, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "26819:7:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 5690, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26819:7:11", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 5689, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "26814:4:11", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 5692, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26814:13:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 5693, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "26828:3:11", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "26814:17:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 5679, + "name": "LibBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "26762:8:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibBytes_$3089_$", + "typeString": "type(library LibBytes)" + } + }, + "id": 5680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "26771:11:11", + "memberName": "lastIndexOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 2757, + "src": "26762:20:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (bytes memory,bytes memory,uint256) pure returns (uint256)" + } + }, + "id": 5694, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26762:70:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5678, + "id": 5695, + "nodeType": "Return", + "src": "26755:77:11" + } + ] + }, + "documentation": { + "id": 5670, + "nodeType": "StructuredDocumentation", + "src": "26412:202:11", + "text": "@dev Returns the byte index of the first location of `needle` in `subject`,\n needleing from right to left.\n Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `needle` is not found." + }, + "id": 5697, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "lastIndexOf", + "nameLocation": "26628:11:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5675, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5672, + "mutability": "mutable", + "name": "subject", + "nameLocation": "26654:7:11", + "nodeType": "VariableDeclaration", + "scope": 5697, + "src": "26640:21:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5671, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "26640:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5674, + "mutability": "mutable", + "name": "needle", + "nameLocation": "26677:6:11", + "nodeType": "VariableDeclaration", + "scope": 5697, + "src": "26663:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5673, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "26663:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "26639:45:11" + }, + "returnParameters": { + "id": 5678, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5677, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5697, + "src": "26732:7:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5676, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26732:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "26731:9:11" + }, + "scope": 6145, + "src": "26619:220:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5719, + "nodeType": "Block", + "src": "27015:72:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 5711, + "name": "subject", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5700, + "src": "27056:7:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5710, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "27050:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5709, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "27050:5:11", + "typeDescriptions": {} + } + }, + "id": 5712, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27050:14:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "arguments": [ + { + "id": 5715, + "name": "needle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5702, + "src": "27072:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5714, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "27066:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5713, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "27066:5:11", + "typeDescriptions": {} + } + }, + "id": 5716, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27066:13:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 5707, + "name": "LibBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "27032:8:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibBytes_$3089_$", + "typeString": "type(library LibBytes)" + } + }, + "id": 5708, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "27041:8:11", + "memberName": "contains", + "nodeType": "MemberAccess", + "referencedDeclaration": 2796, + "src": "27032:17:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (bytes memory,bytes memory) pure returns (bool)" + } + }, + "id": 5717, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27032:48:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 5706, + "id": 5718, + "nodeType": "Return", + "src": "27025:55:11" + } + ] + }, + "documentation": { + "id": 5698, + "nodeType": "StructuredDocumentation", + "src": "26845:73:11", + "text": "@dev Returns true if `needle` is found in `subject`, false otherwise." + }, + "id": 5720, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "contains", + "nameLocation": "26932:8:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5703, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5700, + "mutability": "mutable", + "name": "subject", + "nameLocation": "26955:7:11", + "nodeType": "VariableDeclaration", + "scope": 5720, + "src": "26941:21:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5699, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "26941:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5702, + "mutability": "mutable", + "name": "needle", + "nameLocation": "26978:6:11", + "nodeType": "VariableDeclaration", + "scope": 5720, + "src": "26964:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5701, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "26964:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "26940:45:11" + }, + "returnParameters": { + "id": 5706, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5705, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5720, + "src": "27009:4:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5704, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "27009:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "27008:6:11" + }, + "scope": 6145, + "src": "26923:164:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5742, + "nodeType": "Block", + "src": "27248:74:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 5734, + "name": "subject", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5723, + "src": "27291:7:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5733, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "27285:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5732, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "27285:5:11", + "typeDescriptions": {} + } + }, + "id": 5735, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27285:14:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "arguments": [ + { + "id": 5738, + "name": "needle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5725, + "src": "27307:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5737, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "27301:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5736, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "27301:5:11", + "typeDescriptions": {} + } + }, + "id": 5739, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27301:13:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 5730, + "name": "LibBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "27265:8:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibBytes_$3089_$", + "typeString": "type(library LibBytes)" + } + }, + "id": 5731, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "27274:10:11", + "memberName": "startsWith", + "nodeType": "MemberAccess", + "referencedDeclaration": 2808, + "src": "27265:19:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (bytes memory,bytes memory) pure returns (bool)" + } + }, + "id": 5740, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27265:50:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 5729, + "id": 5741, + "nodeType": "Return", + "src": "27258:57:11" + } + ] + }, + "documentation": { + "id": 5721, + "nodeType": "StructuredDocumentation", + "src": "27093:56:11", + "text": "@dev Returns whether `subject` starts with `needle`." + }, + "id": 5743, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "startsWith", + "nameLocation": "27163:10:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5726, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5723, + "mutability": "mutable", + "name": "subject", + "nameLocation": "27188:7:11", + "nodeType": "VariableDeclaration", + "scope": 5743, + "src": "27174:21:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5722, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "27174:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5725, + "mutability": "mutable", + "name": "needle", + "nameLocation": "27211:6:11", + "nodeType": "VariableDeclaration", + "scope": 5743, + "src": "27197:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5724, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "27197:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "27173:45:11" + }, + "returnParameters": { + "id": 5729, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5728, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5743, + "src": "27242:4:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5727, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "27242:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "27241:6:11" + }, + "scope": 6145, + "src": "27154:168:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5765, + "nodeType": "Block", + "src": "27479:72:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 5757, + "name": "subject", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5746, + "src": "27520:7:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5756, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "27514:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5755, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "27514:5:11", + "typeDescriptions": {} + } + }, + "id": 5758, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27514:14:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "arguments": [ + { + "id": 5761, + "name": "needle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5748, + "src": "27536:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5760, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "27530:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5759, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "27530:5:11", + "typeDescriptions": {} + } + }, + "id": 5762, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27530:13:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 5753, + "name": "LibBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "27496:8:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibBytes_$3089_$", + "typeString": "type(library LibBytes)" + } + }, + "id": 5754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "27505:8:11", + "memberName": "endsWith", + "nodeType": "MemberAccess", + "referencedDeclaration": 2820, + "src": "27496:17:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (bytes memory,bytes memory) pure returns (bool)" + } + }, + "id": 5763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27496:48:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 5752, + "id": 5764, + "nodeType": "Return", + "src": "27489:55:11" + } + ] + }, + "documentation": { + "id": 5744, + "nodeType": "StructuredDocumentation", + "src": "27328:54:11", + "text": "@dev Returns whether `subject` ends with `needle`." + }, + "id": 5766, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "endsWith", + "nameLocation": "27396:8:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5749, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5746, + "mutability": "mutable", + "name": "subject", + "nameLocation": "27419:7:11", + "nodeType": "VariableDeclaration", + "scope": 5766, + "src": "27405:21:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5745, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "27405:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5748, + "mutability": "mutable", + "name": "needle", + "nameLocation": "27442:6:11", + "nodeType": "VariableDeclaration", + "scope": 5766, + "src": "27428:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5747, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "27428:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "27404:45:11" + }, + "returnParameters": { + "id": 5752, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5751, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5766, + "src": "27473:4:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5750, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "27473:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "27472:6:11" + }, + "scope": 6145, + "src": "27387:164:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5788, + "nodeType": "Block", + "src": "27698:70:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 5782, + "name": "subject", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5769, + "src": "27744:7:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5781, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "27738:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5780, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "27738:5:11", + "typeDescriptions": {} + } + }, + "id": 5783, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27738:14:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 5784, + "name": "times", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5771, + "src": "27754:5:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 5778, + "name": "LibBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "27722:8:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibBytes_$3089_$", + "typeString": "type(library LibBytes)" + } + }, + "id": 5779, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "27731:6:11", + "memberName": "repeat", + "nodeType": "MemberAccess", + "referencedDeclaration": 2832, + "src": "27722:15:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256) pure returns (bytes memory)" + } + }, + "id": 5785, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27722:38:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5777, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "27715:6:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 5776, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "27715:6:11", + "typeDescriptions": {} + } + }, + "id": 5786, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27715:46:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 5775, + "id": 5787, + "nodeType": "Return", + "src": "27708:53:11" + } + ] + }, + "documentation": { + "id": 5767, + "nodeType": "StructuredDocumentation", + "src": "27557:44:11", + "text": "@dev Returns `subject` repeated `times`." + }, + "id": 5789, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "repeat", + "nameLocation": "27615:6:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5772, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5769, + "mutability": "mutable", + "name": "subject", + "nameLocation": "27636:7:11", + "nodeType": "VariableDeclaration", + "scope": 5789, + "src": "27622:21:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5768, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "27622:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5771, + "mutability": "mutable", + "name": "times", + "nameLocation": "27653:5:11", + "nodeType": "VariableDeclaration", + "scope": 5789, + "src": "27645:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5770, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27645:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "27621:38:11" + }, + "returnParameters": { + "id": 5775, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5774, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5789, + "src": "27683:13:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5773, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "27683:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "27682:15:11" + }, + "scope": 6145, + "src": "27606:162:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5814, + "nodeType": "Block", + "src": "28033:74:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 5807, + "name": "subject", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5792, + "src": "28078:7:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5806, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "28072:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5805, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "28072:5:11", + "typeDescriptions": {} + } + }, + "id": 5808, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28072:14:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 5809, + "name": "start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5794, + "src": "28088:5:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5810, + "name": "end", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5796, + "src": "28095:3:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 5803, + "name": "LibBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "28057:8:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibBytes_$3089_$", + "typeString": "type(library LibBytes)" + } + }, + "id": 5804, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "28066:5:11", + "memberName": "slice", + "nodeType": "MemberAccess", + "referencedDeclaration": 2846, + "src": "28057:14:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)" + } + }, + "id": 5811, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28057:42:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5802, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "28050:6:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 5801, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "28050:6:11", + "typeDescriptions": {} + } + }, + "id": 5812, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28050:50:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 5800, + "id": 5813, + "nodeType": "Return", + "src": "28043:57:11" + } + ] + }, + "documentation": { + "id": 5790, + "nodeType": "StructuredDocumentation", + "src": "27774:122:11", + "text": "@dev Returns a copy of `subject` sliced from `start` to `end` (exclusive).\n `start` and `end` are byte offsets." + }, + "id": 5815, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "slice", + "nameLocation": "27910:5:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5797, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5792, + "mutability": "mutable", + "name": "subject", + "nameLocation": "27930:7:11", + "nodeType": "VariableDeclaration", + "scope": 5815, + "src": "27916:21:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5791, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "27916:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5794, + "mutability": "mutable", + "name": "start", + "nameLocation": "27947:5:11", + "nodeType": "VariableDeclaration", + "scope": 5815, + "src": "27939:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5793, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27939:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5796, + "mutability": "mutable", + "name": "end", + "nameLocation": "27962:3:11", + "nodeType": "VariableDeclaration", + "scope": 5815, + "src": "27954:11:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5795, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27954:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "27915:51:11" + }, + "returnParameters": { + "id": 5800, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5799, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5815, + "src": "28014:13:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5798, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "28014:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "28013:15:11" + }, + "scope": 6145, + "src": "27901:206:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5842, + "nodeType": "Block", + "src": "28325:88:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 5831, + "name": "subject", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5818, + "src": "28370:7:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5830, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "28364:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5829, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "28364:5:11", + "typeDescriptions": {} + } + }, + "id": 5832, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28364:14:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 5833, + "name": "start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5820, + "src": "28380:5:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "arguments": [ + { + "id": 5836, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "28392:7:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 5835, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28392:7:11", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 5834, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "28387:4:11", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 5837, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28387:13:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 5838, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "28401:3:11", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "28387:17:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 5827, + "name": "LibBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "28349:8:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibBytes_$3089_$", + "typeString": "type(library LibBytes)" + } + }, + "id": 5828, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "28358:5:11", + "memberName": "slice", + "nodeType": "MemberAccess", + "referencedDeclaration": 2846, + "src": "28349:14:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)" + } + }, + "id": 5839, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28349:56:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5826, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "28342:6:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 5825, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "28342:6:11", + "typeDescriptions": {} + } + }, + "id": 5840, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28342:64:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 5824, + "id": 5841, + "nodeType": "Return", + "src": "28335:71:11" + } + ] + }, + "documentation": { + "id": 5816, + "nodeType": "StructuredDocumentation", + "src": "28113:116:11", + "text": "@dev Returns a copy of `subject` sliced from `start` to the end of the string.\n `start` is a byte offset." + }, + "id": 5843, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "slice", + "nameLocation": "28243:5:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5821, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5818, + "mutability": "mutable", + "name": "subject", + "nameLocation": "28263:7:11", + "nodeType": "VariableDeclaration", + "scope": 5843, + "src": "28249:21:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5817, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "28249:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5820, + "mutability": "mutable", + "name": "start", + "nameLocation": "28280:5:11", + "nodeType": "VariableDeclaration", + "scope": 5843, + "src": "28272:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5819, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28272:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "28248:38:11" + }, + "returnParameters": { + "id": 5824, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5823, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5843, + "src": "28310:13:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5822, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "28310:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "28309:15:11" + }, + "scope": 6145, + "src": "28234:179:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5866, + "nodeType": "Block", + "src": "28653:73:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 5858, + "name": "subject", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5846, + "src": "28695:7:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5857, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "28689:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5856, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "28689:5:11", + "typeDescriptions": {} + } + }, + "id": 5859, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28689:14:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "arguments": [ + { + "id": 5862, + "name": "needle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5848, + "src": "28711:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5861, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "28705:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5860, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "28705:5:11", + "typeDescriptions": {} + } + }, + "id": 5863, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28705:13:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 5854, + "name": "LibBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "28670:8:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibBytes_$3089_$", + "typeString": "type(library LibBytes)" + } + }, + "id": 5855, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "28679:9:11", + "memberName": "indicesOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 2932, + "src": "28670:18:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (bytes memory,bytes memory) pure returns (uint256[] memory)" + } + }, + "id": 5864, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28670:49:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "functionReturnParameters": 5853, + "id": 5865, + "nodeType": "Return", + "src": "28663:56:11" + } + ] + }, + "documentation": { + "id": 5844, + "nodeType": "StructuredDocumentation", + "src": "28419:96:11", + "text": "@dev Returns all the indices of `needle` in `subject`.\n The indices are byte offsets." + }, + "id": 5867, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "indicesOf", + "nameLocation": "28529:9:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5849, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5846, + "mutability": "mutable", + "name": "subject", + "nameLocation": "28553:7:11", + "nodeType": "VariableDeclaration", + "scope": 5867, + "src": "28539:21:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5845, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "28539:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5848, + "mutability": "mutable", + "name": "needle", + "nameLocation": "28576:6:11", + "nodeType": "VariableDeclaration", + "scope": 5867, + "src": "28562:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5847, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "28562:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "28538:45:11" + }, + "returnParameters": { + "id": 5853, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5852, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5867, + "src": "28631:16:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5850, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28631:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5851, + "nodeType": "ArrayTypeName", + "src": "28631:9:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "28630:18:11" + }, + "scope": 6145, + "src": "28520:206:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5896, + "nodeType": "Block", + "src": "28969:180:11", + "statements": [ + { + "assignments": [ + 5882 + ], + "declarations": [ + { + "constant": false, + "id": 5882, + "mutability": "mutable", + "name": "a", + "nameLocation": "28994:1:11", + "nodeType": "VariableDeclaration", + "scope": 5896, + "src": "28979:16:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 5880, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "28979:5:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 5881, + "nodeType": "ArrayTypeName", + "src": "28979:7:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + } + ], + "id": 5894, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 5887, + "name": "subject", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5870, + "src": "29019:7:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5886, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "29013:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5885, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "29013:5:11", + "typeDescriptions": {} + } + }, + "id": 5888, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29013:14:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "arguments": [ + { + "id": 5891, + "name": "delimiter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5872, + "src": "29035:9:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5890, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "29029:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5889, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "29029:5:11", + "typeDescriptions": {} + } + }, + "id": 5892, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29029:16:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 5883, + "name": "LibBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "28998:8:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibBytes_$3089_$", + "typeString": "type(library LibBytes)" + } + }, + "id": 5884, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "29007:5:11", + "memberName": "split", + "nodeType": "MemberAccess", + "referencedDeclaration": 2955, + "src": "28998:14:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$", + "typeString": "function (bytes memory,bytes memory) pure returns (bytes memory[] memory)" + } + }, + "id": 5893, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28998:48:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "28979:67:11" + }, + { + "AST": { + "nativeSrc": "29108:35:11", + "nodeType": "YulBlock", + "src": "29108:35:11", + "statements": [ + { + "nativeSrc": "29122:11:11", + "nodeType": "YulAssignment", + "src": "29122:11:11", + "value": { + "name": "a", + "nativeSrc": "29132:1:11", + "nodeType": "YulIdentifier", + "src": "29132:1:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "29122:6:11", + "nodeType": "YulIdentifier", + "src": "29122:6:11" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5882, + "isOffset": false, + "isSlot": false, + "src": "29132:1:11", + "valueSize": 1 + }, + { + "declaration": 5876, + "isOffset": false, + "isSlot": false, + "src": "29122:6:11", + "valueSize": 1 + } + ], + "id": 5895, + "nodeType": "InlineAssembly", + "src": "29099:44:11" + } + ] + }, + "documentation": { + "id": 5868, + "nodeType": "StructuredDocumentation", + "src": "28732:94:11", + "text": "@dev Returns an arrays of strings based on the `delimiter` inside of the `subject` string." + }, + "id": 5897, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "split", + "nameLocation": "28840:5:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5873, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5870, + "mutability": "mutable", + "name": "subject", + "nameLocation": "28860:7:11", + "nodeType": "VariableDeclaration", + "scope": 5897, + "src": "28846:21:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5869, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "28846:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5872, + "mutability": "mutable", + "name": "delimiter", + "nameLocation": "28883:9:11", + "nodeType": "VariableDeclaration", + "scope": 5897, + "src": "28869:23:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5871, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "28869:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "28845:48:11" + }, + "returnParameters": { + "id": 5877, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5876, + "mutability": "mutable", + "name": "result", + "nameLocation": "28957:6:11", + "nodeType": "VariableDeclaration", + "scope": 5897, + "src": "28941:22:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 5874, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "28941:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 5875, + "nodeType": "ArrayTypeName", + "src": "28941:8:11", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + } + ], + "src": "28940:24:11" + }, + "scope": 6145, + "src": "28831:318:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5922, + "nodeType": "Block", + "src": "29388:67:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 5913, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5900, + "src": "29434:1:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5912, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "29428:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5911, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "29428:5:11", + "typeDescriptions": {} + } + }, + "id": 5914, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29428:8:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "arguments": [ + { + "id": 5917, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5902, + "src": "29444:1:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5916, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "29438:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5915, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "29438:5:11", + "typeDescriptions": {} + } + }, + "id": 5918, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29438:8:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 5909, + "name": "LibBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "29412:8:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibBytes_$3089_$", + "typeString": "type(library LibBytes)" + } + }, + "id": 5910, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "29421:6:11", + "memberName": "concat", + "nodeType": "MemberAccess", + "referencedDeclaration": 2967, + "src": "29412:15:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,bytes memory) pure returns (bytes memory)" + } + }, + "id": 5919, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29412:35:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5908, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "29405:6:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 5907, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "29405:6:11", + "typeDescriptions": {} + } + }, + "id": 5920, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29405:43:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 5906, + "id": 5921, + "nodeType": "Return", + "src": "29398:50:11" + } + ] + }, + "documentation": { + "id": 5898, + "nodeType": "StructuredDocumentation", + "src": "29155:140:11", + "text": "@dev Returns a concatenated string of `a` and `b`.\n Cheaper than `string.concat()` and does not de-align the free memory pointer." + }, + "id": 5923, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "concat", + "nameLocation": "29309:6:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5903, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5900, + "mutability": "mutable", + "name": "a", + "nameLocation": "29330:1:11", + "nodeType": "VariableDeclaration", + "scope": 5923, + "src": "29316:15:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5899, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "29316:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5902, + "mutability": "mutable", + "name": "b", + "nameLocation": "29347:1:11", + "nodeType": "VariableDeclaration", + "scope": 5923, + "src": "29333:15:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5901, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "29333:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "29315:34:11" + }, + "returnParameters": { + "id": 5906, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5905, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5923, + "src": "29373:13:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5904, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "29373:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "29372:15:11" + }, + "scope": 6145, + "src": "29300:155:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5934, + "nodeType": "Block", + "src": "29739:799:11", + "statements": [ + { + "AST": { + "nativeSrc": "29801:731:11", + "nodeType": "YulBlock", + "src": "29801:731:11", + "statements": [ + { + "nativeSrc": "29815:23:11", + "nodeType": "YulVariableDeclaration", + "src": "29815:23:11", + "value": { + "arguments": [ + { + "name": "subject", + "nativeSrc": "29830:7:11", + "nodeType": "YulIdentifier", + "src": "29830:7:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "29824:5:11", + "nodeType": "YulIdentifier", + "src": "29824:5:11" + }, + "nativeSrc": "29824:14:11", + "nodeType": "YulFunctionCall", + "src": "29824:14:11" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "29819:1:11", + "nodeType": "YulTypedName", + "src": "29819:1:11", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "29856:666:11", + "nodeType": "YulBlock", + "src": "29856:666:11", + "statements": [ + { + "nativeSrc": "29874:21:11", + "nodeType": "YulAssignment", + "src": "29874:21:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "29890:4:11", + "nodeType": "YulLiteral", + "src": "29890:4:11", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "29884:5:11", + "nodeType": "YulIdentifier", + "src": "29884:5:11" + }, + "nativeSrc": "29884:11:11", + "nodeType": "YulFunctionCall", + "src": "29884:11:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "29874:6:11", + "nodeType": "YulIdentifier", + "src": "29874:6:11" + } + ] + }, + { + "nativeSrc": "29912:26:11", + "nodeType": "YulVariableDeclaration", + "src": "29912:26:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "29925:6:11", + "nodeType": "YulIdentifier", + "src": "29925:6:11" + }, + { + "kind": "number", + "nativeSrc": "29933:4:11", + "nodeType": "YulLiteral", + "src": "29933:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "29921:3:11", + "nodeType": "YulIdentifier", + "src": "29921:3:11" + }, + "nativeSrc": "29921:17:11", + "nodeType": "YulFunctionCall", + "src": "29921:17:11" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "29916:1:11", + "nodeType": "YulTypedName", + "src": "29916:1:11", + "type": "" + } + ] + }, + { + "nativeSrc": "29955:29:11", + "nodeType": "YulVariableDeclaration", + "src": "29955:29:11", + "value": { + "arguments": [ + { + "name": "subject", + "nativeSrc": "29968:7:11", + "nodeType": "YulIdentifier", + "src": "29968:7:11" + }, + { + "name": "result", + "nativeSrc": "29977:6:11", + "nodeType": "YulIdentifier", + "src": "29977:6:11" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "29964:3:11", + "nodeType": "YulIdentifier", + "src": "29964:3:11" + }, + "nativeSrc": "29964:20:11", + "nodeType": "YulFunctionCall", + "src": "29964:20:11" + }, + "variables": [ + { + "name": "d", + "nativeSrc": "29959:1:11", + "nodeType": "YulTypedName", + "src": "29959:1:11", + "type": "" + } + ] + }, + { + "nativeSrc": "30001:53:11", + "nodeType": "YulVariableDeclaration", + "src": "30001:53:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30022:2:11", + "nodeType": "YulLiteral", + "src": "30022:2:11", + "type": "", + "value": "70" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30030:1:11", + "nodeType": "YulLiteral", + "src": "30030:1:11", + "type": "", + "value": "5" + }, + { + "name": "toUpper", + "nativeSrc": "30033:7:11", + "nodeType": "YulIdentifier", + "src": "30033:7:11" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "30026:3:11", + "nodeType": "YulIdentifier", + "src": "30026:3:11" + }, + "nativeSrc": "30026:15:11", + "nodeType": "YulFunctionCall", + "src": "30026:15:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30018:3:11", + "nodeType": "YulIdentifier", + "src": "30018:3:11" + }, + "nativeSrc": "30018:24:11", + "nodeType": "YulFunctionCall", + "src": "30018:24:11" + }, + { + "kind": "number", + "nativeSrc": "30044:9:11", + "nodeType": "YulLiteral", + "src": "30044:9:11", + "type": "", + "value": "0x3ffffff" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "30014:3:11", + "nodeType": "YulIdentifier", + "src": "30014:3:11" + }, + "nativeSrc": "30014:40:11", + "nodeType": "YulFunctionCall", + "src": "30014:40:11" + }, + "variables": [ + { + "name": "flags", + "nativeSrc": "30005:5:11", + "nodeType": "YulTypedName", + "src": "30005:5:11", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "30105:218:11", + "nodeType": "YulBlock", + "src": "30105:218:11", + "statements": [ + { + "nativeSrc": "30127:34:11", + "nodeType": "YulVariableDeclaration", + "src": "30127:34:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30141:1:11", + "nodeType": "YulLiteral", + "src": "30141:1:11", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "d", + "nativeSrc": "30154:1:11", + "nodeType": "YulIdentifier", + "src": "30154:1:11" + }, + { + "name": "o", + "nativeSrc": "30157:1:11", + "nodeType": "YulIdentifier", + "src": "30157:1:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30150:3:11", + "nodeType": "YulIdentifier", + "src": "30150:3:11" + }, + "nativeSrc": "30150:9:11", + "nodeType": "YulFunctionCall", + "src": "30150:9:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "30144:5:11", + "nodeType": "YulIdentifier", + "src": "30144:5:11" + }, + "nativeSrc": "30144:16:11", + "nodeType": "YulFunctionCall", + "src": "30144:16:11" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "30136:4:11", + "nodeType": "YulIdentifier", + "src": "30136:4:11" + }, + "nativeSrc": "30136:25:11", + "nodeType": "YulFunctionCall", + "src": "30136:25:11" + }, + "variables": [ + { + "name": "b", + "nativeSrc": "30131:1:11", + "nodeType": "YulTypedName", + "src": "30131:1:11", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "30190:1:11", + "nodeType": "YulIdentifier", + "src": "30190:1:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "b", + "nativeSrc": "30205:1:11", + "nodeType": "YulIdentifier", + "src": "30205:1:11" + }, + { + "name": "flags", + "nativeSrc": "30208:5:11", + "nodeType": "YulIdentifier", + "src": "30208:5:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "30201:3:11", + "nodeType": "YulIdentifier", + "src": "30201:3:11" + }, + "nativeSrc": "30201:13:11", + "nodeType": "YulFunctionCall", + "src": "30201:13:11" + }, + { + "kind": "number", + "nativeSrc": "30216:4:11", + "nodeType": "YulLiteral", + "src": "30216:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "30197:3:11", + "nodeType": "YulIdentifier", + "src": "30197:3:11" + }, + "nativeSrc": "30197:24:11", + "nodeType": "YulFunctionCall", + "src": "30197:24:11" + }, + { + "name": "b", + "nativeSrc": "30223:1:11", + "nodeType": "YulIdentifier", + "src": "30223:1:11" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "30193:3:11", + "nodeType": "YulIdentifier", + "src": "30193:3:11" + }, + "nativeSrc": "30193:32:11", + "nodeType": "YulFunctionCall", + "src": "30193:32:11" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "30182:7:11", + "nodeType": "YulIdentifier", + "src": "30182:7:11" + }, + "nativeSrc": "30182:44:11", + "nodeType": "YulFunctionCall", + "src": "30182:44:11" + }, + "nativeSrc": "30182:44:11", + "nodeType": "YulExpressionStatement", + "src": "30182:44:11" + }, + { + "nativeSrc": "30247:14:11", + "nodeType": "YulAssignment", + "src": "30247:14:11", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "30256:1:11", + "nodeType": "YulIdentifier", + "src": "30256:1:11" + }, + { + "kind": "number", + "nativeSrc": "30259:1:11", + "nodeType": "YulLiteral", + "src": "30259:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30252:3:11", + "nodeType": "YulIdentifier", + "src": "30252:3:11" + }, + "nativeSrc": "30252:9:11", + "nodeType": "YulFunctionCall", + "src": "30252:9:11" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "30247:1:11", + "nodeType": "YulIdentifier", + "src": "30247:1:11" + } + ] + }, + { + "body": { + "nativeSrc": "30296:9:11", + "nodeType": "YulBlock", + "src": "30296:9:11", + "statements": [ + { + "nativeSrc": "30298:5:11", + "nodeType": "YulBreak", + "src": "30298:5:11" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "o", + "nativeSrc": "30288:1:11", + "nodeType": "YulIdentifier", + "src": "30288:1:11" + }, + { + "name": "end", + "nativeSrc": "30291:3:11", + "nodeType": "YulIdentifier", + "src": "30291:3:11" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "30285:2:11", + "nodeType": "YulIdentifier", + "src": "30285:2:11" + }, + "nativeSrc": "30285:10:11", + "nodeType": "YulFunctionCall", + "src": "30285:10:11" + }, + "nativeSrc": "30282:23:11", + "nodeType": "YulIf", + "src": "30282:23:11" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "30100:1:11", + "nodeType": "YulLiteral", + "src": "30100:1:11", + "type": "", + "value": "1" + }, + "nativeSrc": "30071:252:11", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "30102:2:11", + "nodeType": "YulBlock", + "src": "30102:2:11", + "statements": [] + }, + "pre": { + "nativeSrc": "30075:24:11", + "nodeType": "YulBlock", + "src": "30075:24:11", + "statements": [ + { + "nativeSrc": "30077:20:11", + "nodeType": "YulVariableDeclaration", + "src": "30077:20:11", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "30092:1:11", + "nodeType": "YulIdentifier", + "src": "30092:1:11" + }, + { + "name": "n", + "nativeSrc": "30095:1:11", + "nodeType": "YulIdentifier", + "src": "30095:1:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30088:3:11", + "nodeType": "YulIdentifier", + "src": "30088:3:11" + }, + "nativeSrc": "30088:9:11", + "nodeType": "YulFunctionCall", + "src": "30088:9:11" + }, + "variables": [ + { + "name": "end", + "nativeSrc": "30081:3:11", + "nodeType": "YulTypedName", + "src": "30081:3:11", + "type": "" + } + ] + } + ] + }, + "src": "30071:252:11" + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "30347:6:11", + "nodeType": "YulIdentifier", + "src": "30347:6:11" + }, + { + "name": "n", + "nativeSrc": "30355:1:11", + "nodeType": "YulIdentifier", + "src": "30355:1:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "30340:6:11", + "nodeType": "YulIdentifier", + "src": "30340:6:11" + }, + "nativeSrc": "30340:17:11", + "nodeType": "YulFunctionCall", + "src": "30340:17:11" + }, + "nativeSrc": "30340:17:11", + "nodeType": "YulExpressionStatement", + "src": "30340:17:11" + }, + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "30402:1:11", + "nodeType": "YulIdentifier", + "src": "30402:1:11" + }, + { + "kind": "number", + "nativeSrc": "30405:1:11", + "nodeType": "YulLiteral", + "src": "30405:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "30395:6:11", + "nodeType": "YulIdentifier", + "src": "30395:6:11" + }, + "nativeSrc": "30395:12:11", + "nodeType": "YulFunctionCall", + "src": "30395:12:11" + }, + "nativeSrc": "30395:12:11", + "nodeType": "YulExpressionStatement", + "src": "30395:12:11" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30469:4:11", + "nodeType": "YulLiteral", + "src": "30469:4:11", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "o", + "nativeSrc": "30479:1:11", + "nodeType": "YulIdentifier", + "src": "30479:1:11" + }, + { + "kind": "number", + "nativeSrc": "30482:4:11", + "nodeType": "YulLiteral", + "src": "30482:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30475:3:11", + "nodeType": "YulIdentifier", + "src": "30475:3:11" + }, + "nativeSrc": "30475:12:11", + "nodeType": "YulFunctionCall", + "src": "30475:12:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "30462:6:11", + "nodeType": "YulIdentifier", + "src": "30462:6:11" + }, + "nativeSrc": "30462:26:11", + "nodeType": "YulFunctionCall", + "src": "30462:26:11" + }, + "nativeSrc": "30462:26:11", + "nodeType": "YulExpressionStatement", + "src": "30462:26:11" + } + ] + }, + "condition": { + "name": "n", + "nativeSrc": "29854:1:11", + "nodeType": "YulIdentifier", + "src": "29854:1:11" + }, + "nativeSrc": "29851:671:11", + "nodeType": "YulIf", + "src": "29851:671:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5931, + "isOffset": false, + "isSlot": false, + "src": "29874:6:11", + "valueSize": 1 + }, + { + "declaration": 5931, + "isOffset": false, + "isSlot": false, + "src": "29925:6:11", + "valueSize": 1 + }, + { + "declaration": 5931, + "isOffset": false, + "isSlot": false, + "src": "29977:6:11", + "valueSize": 1 + }, + { + "declaration": 5931, + "isOffset": false, + "isSlot": false, + "src": "30347:6:11", + "valueSize": 1 + }, + { + "declaration": 5926, + "isOffset": false, + "isSlot": false, + "src": "29830:7:11", + "valueSize": 1 + }, + { + "declaration": 5926, + "isOffset": false, + "isSlot": false, + "src": "29968:7:11", + "valueSize": 1 + }, + { + "declaration": 5928, + "isOffset": false, + "isSlot": false, + "src": "30033:7:11", + "valueSize": 1 + } + ], + "id": 5933, + "nodeType": "InlineAssembly", + "src": "29792:740:11" + } + ] + }, + "documentation": { + "id": 5924, + "nodeType": "StructuredDocumentation", + "src": "29461:147:11", + "text": "@dev Returns a copy of the string in either lowercase or UPPERCASE.\n WARNING! This function is only compatible with 7-bit ASCII strings." + }, + "id": 5935, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toCase", + "nameLocation": "29622:6:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5929, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5926, + "mutability": "mutable", + "name": "subject", + "nameLocation": "29643:7:11", + "nodeType": "VariableDeclaration", + "scope": 5935, + "src": "29629:21:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5925, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "29629:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5928, + "mutability": "mutable", + "name": "toUpper", + "nameLocation": "29657:7:11", + "nodeType": "VariableDeclaration", + "scope": 5935, + "src": "29652:12:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5927, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "29652:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "29628:37:11" + }, + "returnParameters": { + "id": 5932, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5931, + "mutability": "mutable", + "name": "result", + "nameLocation": "29727:6:11", + "nodeType": "VariableDeclaration", + "scope": 5935, + "src": "29713:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5930, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "29713:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "29712:22:11" + }, + "scope": 6145, + "src": "29613:925:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5944, + "nodeType": "Block", + "src": "30752:490:11", + "statements": [ + { + "AST": { + "nativeSrc": "30814:422:11", + "nodeType": "YulBlock", + "src": "30814:422:11", + "statements": [ + { + "nativeSrc": "30828:21:11", + "nodeType": "YulAssignment", + "src": "30828:21:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30844:4:11", + "nodeType": "YulLiteral", + "src": "30844:4:11", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "30838:5:11", + "nodeType": "YulIdentifier", + "src": "30838:5:11" + }, + "nativeSrc": "30838:11:11", + "nodeType": "YulFunctionCall", + "src": "30838:11:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "30828:6:11", + "nodeType": "YulIdentifier", + "src": "30828:6:11" + } + ] + }, + { + "nativeSrc": "30862:10:11", + "nodeType": "YulVariableDeclaration", + "src": "30862:10:11", + "value": { + "kind": "number", + "nativeSrc": "30871:1:11", + "nodeType": "YulLiteral", + "src": "30871:1:11", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "30866:1:11", + "nodeType": "YulTypedName", + "src": "30866:1:11", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "30922:2:11", + "nodeType": "YulBlock", + "src": "30922:2:11", + "statements": [] + }, + "condition": { + "arguments": [ + { + "name": "n", + "nativeSrc": "30897:1:11", + "nodeType": "YulIdentifier", + "src": "30897:1:11" + }, + { + "name": "s", + "nativeSrc": "30900:1:11", + "nodeType": "YulIdentifier", + "src": "30900:1:11" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "30892:4:11", + "nodeType": "YulIdentifier", + "src": "30892:4:11" + }, + "nativeSrc": "30892:10:11", + "nodeType": "YulFunctionCall", + "src": "30892:10:11" + }, + "nativeSrc": "30885:39:11", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "30903:18:11", + "nodeType": "YulBlock", + "src": "30903:18:11", + "statements": [ + { + "nativeSrc": "30905:14:11", + "nodeType": "YulAssignment", + "src": "30905:14:11", + "value": { + "arguments": [ + { + "name": "n", + "nativeSrc": "30914:1:11", + "nodeType": "YulIdentifier", + "src": "30914:1:11" + }, + { + "kind": "number", + "nativeSrc": "30917:1:11", + "nodeType": "YulLiteral", + "src": "30917:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30910:3:11", + "nodeType": "YulIdentifier", + "src": "30910:3:11" + }, + "nativeSrc": "30910:9:11", + "nodeType": "YulFunctionCall", + "src": "30910:9:11" + }, + "variableNames": [ + { + "name": "n", + "nativeSrc": "30905:1:11", + "nodeType": "YulIdentifier", + "src": "30905:1:11" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "30889:2:11", + "nodeType": "YulBlock", + "src": "30889:2:11", + "statements": [] + }, + "src": "30885:39:11" + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "30962:6:11", + "nodeType": "YulIdentifier", + "src": "30962:6:11" + }, + { + "name": "n", + "nativeSrc": "30970:1:11", + "nodeType": "YulIdentifier", + "src": "30970:1:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "30955:6:11", + "nodeType": "YulIdentifier", + "src": "30955:6:11" + }, + "nativeSrc": "30955:17:11", + "nodeType": "YulFunctionCall", + "src": "30955:17:11" + }, + "nativeSrc": "30955:17:11", + "nodeType": "YulExpressionStatement", + "src": "30955:17:11" + }, + { + "nativeSrc": "31006:26:11", + "nodeType": "YulVariableDeclaration", + "src": "31006:26:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "31019:6:11", + "nodeType": "YulIdentifier", + "src": "31019:6:11" + }, + { + "kind": "number", + "nativeSrc": "31027:4:11", + "nodeType": "YulLiteral", + "src": "31027:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31015:3:11", + "nodeType": "YulIdentifier", + "src": "31015:3:11" + }, + "nativeSrc": "31015:17:11", + "nodeType": "YulFunctionCall", + "src": "31015:17:11" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "31010:1:11", + "nodeType": "YulTypedName", + "src": "31010:1:11", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "31052:1:11", + "nodeType": "YulIdentifier", + "src": "31052:1:11" + }, + { + "name": "s", + "nativeSrc": "31055:1:11", + "nodeType": "YulIdentifier", + "src": "31055:1:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "31045:6:11", + "nodeType": "YulIdentifier", + "src": "31045:6:11" + }, + "nativeSrc": "31045:12:11", + "nodeType": "YulFunctionCall", + "src": "31045:12:11" + }, + "nativeSrc": "31045:12:11", + "nodeType": "YulExpressionStatement", + "src": "31045:12:11" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "31115:1:11", + "nodeType": "YulIdentifier", + "src": "31115:1:11" + }, + { + "name": "n", + "nativeSrc": "31118:1:11", + "nodeType": "YulIdentifier", + "src": "31118:1:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31111:3:11", + "nodeType": "YulIdentifier", + "src": "31111:3:11" + }, + "nativeSrc": "31111:9:11", + "nodeType": "YulFunctionCall", + "src": "31111:9:11" + }, + { + "kind": "number", + "nativeSrc": "31122:1:11", + "nodeType": "YulLiteral", + "src": "31122:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "31104:6:11", + "nodeType": "YulIdentifier", + "src": "31104:6:11" + }, + "nativeSrc": "31104:20:11", + "nodeType": "YulFunctionCall", + "src": "31104:20:11" + }, + "nativeSrc": "31104:20:11", + "nodeType": "YulExpressionStatement", + "src": "31104:20:11" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "31182:4:11", + "nodeType": "YulLiteral", + "src": "31182:4:11", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "result", + "nativeSrc": "31192:6:11", + "nodeType": "YulIdentifier", + "src": "31192:6:11" + }, + { + "kind": "number", + "nativeSrc": "31200:4:11", + "nodeType": "YulLiteral", + "src": "31200:4:11", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31188:3:11", + "nodeType": "YulIdentifier", + "src": "31188:3:11" + }, + "nativeSrc": "31188:17:11", + "nodeType": "YulFunctionCall", + "src": "31188:17:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "31175:6:11", + "nodeType": "YulIdentifier", + "src": "31175:6:11" + }, + "nativeSrc": "31175:31:11", + "nodeType": "YulFunctionCall", + "src": "31175:31:11" + }, + "nativeSrc": "31175:31:11", + "nodeType": "YulExpressionStatement", + "src": "31175:31:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5941, + "isOffset": false, + "isSlot": false, + "src": "30828:6:11", + "valueSize": 1 + }, + { + "declaration": 5941, + "isOffset": false, + "isSlot": false, + "src": "30962:6:11", + "valueSize": 1 + }, + { + "declaration": 5941, + "isOffset": false, + "isSlot": false, + "src": "31019:6:11", + "valueSize": 1 + }, + { + "declaration": 5941, + "isOffset": false, + "isSlot": false, + "src": "31192:6:11", + "valueSize": 1 + }, + { + "declaration": 5938, + "isOffset": false, + "isSlot": false, + "src": "30900:1:11", + "valueSize": 1 + }, + { + "declaration": 5938, + "isOffset": false, + "isSlot": false, + "src": "31055:1:11", + "valueSize": 1 + } + ], + "id": 5943, + "nodeType": "InlineAssembly", + "src": "30805:431:11" + } + ] + }, + "documentation": { + "id": 5936, + "nodeType": "StructuredDocumentation", + "src": "30544:122:11", + "text": "@dev Returns a string from a small bytes32 string.\n `s` must be null-terminated, or behavior will be undefined." + }, + "id": 5945, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "fromSmallString", + "nameLocation": "30680:15:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5939, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5938, + "mutability": "mutable", + "name": "s", + "nameLocation": "30704:1:11", + "nodeType": "VariableDeclaration", + "scope": 5945, + "src": "30696:9:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5937, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "30696:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "30695:11:11" + }, + "returnParameters": { + "id": 5942, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5941, + "mutability": "mutable", + "name": "result", + "nameLocation": "30744:6:11", + "nodeType": "VariableDeclaration", + "scope": 5945, + "src": "30730:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5940, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "30730:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "30729:22:11" + }, + "scope": 6145, + "src": "30671:571:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5954, + "nodeType": "Block", + "src": "31418:259:11", + "statements": [ + { + "AST": { + "nativeSrc": "31480:191:11", + "nodeType": "YulBlock", + "src": "31480:191:11", + "statements": [ + { + "body": { + "nativeSrc": "31546:2:11", + "nodeType": "YulBlock", + "src": "31546:2:11", + "statements": [] + }, + "condition": { + "arguments": [ + { + "name": "result", + "nativeSrc": "31506:6:11", + "nodeType": "YulIdentifier", + "src": "31506:6:11" + }, + { + "name": "s", + "nativeSrc": "31514:1:11", + "nodeType": "YulIdentifier", + "src": "31514:1:11" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "31501:4:11", + "nodeType": "YulIdentifier", + "src": "31501:4:11" + }, + "nativeSrc": "31501:15:11", + "nodeType": "YulFunctionCall", + "src": "31501:15:11" + }, + "nativeSrc": "31494:54:11", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "31517:28:11", + "nodeType": "YulBlock", + "src": "31517:28:11", + "statements": [ + { + "nativeSrc": "31519:24:11", + "nodeType": "YulAssignment", + "src": "31519:24:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "31533:6:11", + "nodeType": "YulIdentifier", + "src": "31533:6:11" + }, + { + "kind": "number", + "nativeSrc": "31541:1:11", + "nodeType": "YulLiteral", + "src": "31541:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31529:3:11", + "nodeType": "YulIdentifier", + "src": "31529:3:11" + }, + "nativeSrc": "31529:14:11", + "nodeType": "YulFunctionCall", + "src": "31529:14:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "31519:6:11", + "nodeType": "YulIdentifier", + "src": "31519:6:11" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "31498:2:11", + "nodeType": "YulBlock", + "src": "31498:2:11", + "statements": [] + }, + "src": "31494:54:11" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "31586:4:11", + "nodeType": "YulLiteral", + "src": "31586:4:11", + "type": "", + "value": "0x00" + }, + { + "name": "s", + "nativeSrc": "31592:1:11", + "nodeType": "YulIdentifier", + "src": "31592:1:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "31579:6:11", + "nodeType": "YulIdentifier", + "src": "31579:6:11" + }, + "nativeSrc": "31579:15:11", + "nodeType": "YulFunctionCall", + "src": "31579:15:11" + }, + "nativeSrc": "31579:15:11", + "nodeType": "YulExpressionStatement", + "src": "31579:15:11" + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "31614:6:11", + "nodeType": "YulIdentifier", + "src": "31614:6:11" + }, + { + "kind": "number", + "nativeSrc": "31622:4:11", + "nodeType": "YulLiteral", + "src": "31622:4:11", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "31607:6:11", + "nodeType": "YulIdentifier", + "src": "31607:6:11" + }, + "nativeSrc": "31607:20:11", + "nodeType": "YulFunctionCall", + "src": "31607:20:11" + }, + "nativeSrc": "31607:20:11", + "nodeType": "YulExpressionStatement", + "src": "31607:20:11" + }, + { + "nativeSrc": "31640:21:11", + "nodeType": "YulAssignment", + "src": "31640:21:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "31656:4:11", + "nodeType": "YulLiteral", + "src": "31656:4:11", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "31650:5:11", + "nodeType": "YulIdentifier", + "src": "31650:5:11" + }, + "nativeSrc": "31650:11:11", + "nodeType": "YulFunctionCall", + "src": "31650:11:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "31640:6:11", + "nodeType": "YulIdentifier", + "src": "31640:6:11" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5951, + "isOffset": false, + "isSlot": false, + "src": "31506:6:11", + "valueSize": 1 + }, + { + "declaration": 5951, + "isOffset": false, + "isSlot": false, + "src": "31519:6:11", + "valueSize": 1 + }, + { + "declaration": 5951, + "isOffset": false, + "isSlot": false, + "src": "31533:6:11", + "valueSize": 1 + }, + { + "declaration": 5951, + "isOffset": false, + "isSlot": false, + "src": "31614:6:11", + "valueSize": 1 + }, + { + "declaration": 5951, + "isOffset": false, + "isSlot": false, + "src": "31640:6:11", + "valueSize": 1 + }, + { + "declaration": 5948, + "isOffset": false, + "isSlot": false, + "src": "31514:1:11", + "valueSize": 1 + }, + { + "declaration": 5948, + "isOffset": false, + "isSlot": false, + "src": "31592:1:11", + "valueSize": 1 + } + ], + "id": 5953, + "nodeType": "InlineAssembly", + "src": "31471:200:11" + } + ] + }, + "documentation": { + "id": 5946, + "nodeType": "StructuredDocumentation", + "src": "31248:85:11", + "text": "@dev Returns the small string, with all bytes after the first null byte zeroized." + }, + "id": 5955, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "normalizeSmallString", + "nameLocation": "31347:20:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5949, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5948, + "mutability": "mutable", + "name": "s", + "nameLocation": "31376:1:11", + "nodeType": "VariableDeclaration", + "scope": 5955, + "src": "31368:9:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5947, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "31368:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "31367:11:11" + }, + "returnParameters": { + "id": 5952, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5951, + "mutability": "mutable", + "name": "result", + "nameLocation": "31410:6:11", + "nodeType": "VariableDeclaration", + "scope": 5955, + "src": "31402:14:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5950, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "31402:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "31401:16:11" + }, + "scope": 6145, + "src": "31338:339:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5964, + "nodeType": "Block", + "src": "31840:343:11", + "statements": [ + { + "AST": { + "nativeSrc": "31902:275:11", + "nodeType": "YulBlock", + "src": "31902:275:11", + "statements": [ + { + "nativeSrc": "31916:18:11", + "nodeType": "YulAssignment", + "src": "31916:18:11", + "value": { + "arguments": [ + { + "name": "s", + "nativeSrc": "31932:1:11", + "nodeType": "YulIdentifier", + "src": "31932:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "31926:5:11", + "nodeType": "YulIdentifier", + "src": "31926:5:11" + }, + "nativeSrc": "31926:8:11", + "nodeType": "YulFunctionCall", + "src": "31926:8:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "31916:6:11", + "nodeType": "YulIdentifier", + "src": "31916:6:11" + } + ] + }, + { + "body": { + "nativeSrc": "31973:120:11", + "nodeType": "YulBlock", + "src": "31973:120:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "31998:4:11", + "nodeType": "YulLiteral", + "src": "31998:4:11", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "32004:10:11", + "nodeType": "YulLiteral", + "src": "32004:10:11", + "type": "", + "value": "0xec92f9a3" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "31991:6:11", + "nodeType": "YulIdentifier", + "src": "31991:6:11" + }, + "nativeSrc": "31991:24:11", + "nodeType": "YulFunctionCall", + "src": "31991:24:11" + }, + "nativeSrc": "31991:24:11", + "nodeType": "YulExpressionStatement", + "src": "31991:24:11" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "32068:4:11", + "nodeType": "YulLiteral", + "src": "32068:4:11", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "32074:4:11", + "nodeType": "YulLiteral", + "src": "32074:4:11", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "32061:6:11", + "nodeType": "YulIdentifier", + "src": "32061:6:11" + }, + "nativeSrc": "32061:18:11", + "nodeType": "YulFunctionCall", + "src": "32061:18:11" + }, + "nativeSrc": "32061:18:11", + "nodeType": "YulExpressionStatement", + "src": "32061:18:11" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "31960:6:11", + "nodeType": "YulIdentifier", + "src": "31960:6:11" + }, + { + "kind": "number", + "nativeSrc": "31968:2:11", + "nodeType": "YulLiteral", + "src": "31968:2:11", + "type": "", + "value": "33" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "31957:2:11", + "nodeType": "YulIdentifier", + "src": "31957:2:11" + }, + "nativeSrc": "31957:14:11", + "nodeType": "YulFunctionCall", + "src": "31957:14:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "31950:6:11", + "nodeType": "YulIdentifier", + "src": "31950:6:11" + }, + "nativeSrc": "31950:22:11", + "nodeType": "YulFunctionCall", + "src": "31950:22:11" + }, + "nativeSrc": "31947:146:11", + "nodeType": "YulIf", + "src": "31947:146:11" + }, + { + "nativeSrc": "32106:61:11", + "nodeType": "YulAssignment", + "src": "32106:61:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "32124:1:11", + "nodeType": "YulLiteral", + "src": "32124:1:11", + "type": "", + "value": "3" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "32131:2:11", + "nodeType": "YulLiteral", + "src": "32131:2:11", + "type": "", + "value": "32" + }, + { + "name": "result", + "nativeSrc": "32135:6:11", + "nodeType": "YulIdentifier", + "src": "32135:6:11" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "32127:3:11", + "nodeType": "YulIdentifier", + "src": "32127:3:11" + }, + "nativeSrc": "32127:15:11", + "nodeType": "YulFunctionCall", + "src": "32127:15:11" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "32120:3:11", + "nodeType": "YulIdentifier", + "src": "32120:3:11" + }, + "nativeSrc": "32120:23:11", + "nodeType": "YulFunctionCall", + "src": "32120:23:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "s", + "nativeSrc": "32155:1:11", + "nodeType": "YulIdentifier", + "src": "32155:1:11" + }, + { + "name": "result", + "nativeSrc": "32158:6:11", + "nodeType": "YulIdentifier", + "src": "32158:6:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "32151:3:11", + "nodeType": "YulIdentifier", + "src": "32151:3:11" + }, + "nativeSrc": "32151:14:11", + "nodeType": "YulFunctionCall", + "src": "32151:14:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "32145:5:11", + "nodeType": "YulIdentifier", + "src": "32145:5:11" + }, + "nativeSrc": "32145:21:11", + "nodeType": "YulFunctionCall", + "src": "32145:21:11" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "32116:3:11", + "nodeType": "YulIdentifier", + "src": "32116:3:11" + }, + "nativeSrc": "32116:51:11", + "nodeType": "YulFunctionCall", + "src": "32116:51:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "32106:6:11", + "nodeType": "YulIdentifier", + "src": "32106:6:11" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5961, + "isOffset": false, + "isSlot": false, + "src": "31916:6:11", + "valueSize": 1 + }, + { + "declaration": 5961, + "isOffset": false, + "isSlot": false, + "src": "31960:6:11", + "valueSize": 1 + }, + { + "declaration": 5961, + "isOffset": false, + "isSlot": false, + "src": "32106:6:11", + "valueSize": 1 + }, + { + "declaration": 5961, + "isOffset": false, + "isSlot": false, + "src": "32135:6:11", + "valueSize": 1 + }, + { + "declaration": 5961, + "isOffset": false, + "isSlot": false, + "src": "32158:6:11", + "valueSize": 1 + }, + { + "declaration": 5958, + "isOffset": false, + "isSlot": false, + "src": "31932:1:11", + "valueSize": 1 + }, + { + "declaration": 5958, + "isOffset": false, + "isSlot": false, + "src": "32155:1:11", + "valueSize": 1 + } + ], + "id": 5963, + "nodeType": "InlineAssembly", + "src": "31893:284:11" + } + ] + }, + "documentation": { + "id": 5956, + "nodeType": "StructuredDocumentation", + "src": "31683:73:11", + "text": "@dev Returns the string as a normalized null-terminated small string." + }, + "id": 5965, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toSmallString", + "nameLocation": "31770:13:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5959, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5958, + "mutability": "mutable", + "name": "s", + "nameLocation": "31798:1:11", + "nodeType": "VariableDeclaration", + "scope": 5965, + "src": "31784:15:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5957, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "31784:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "31783:17:11" + }, + "returnParameters": { + "id": 5962, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5961, + "mutability": "mutable", + "name": "result", + "nameLocation": "31832:6:11", + "nodeType": "VariableDeclaration", + "scope": 5965, + "src": "31824:14:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5960, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "31824:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "31823:16:11" + }, + "scope": 6145, + "src": "31761:422:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5980, + "nodeType": "Block", + "src": "32402:48:11", + "statements": [ + { + "expression": { + "id": 5978, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5973, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5971, + "src": "32412:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 5975, + "name": "subject", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5968, + "src": "32428:7:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "hexValue": "66616c7365", + "id": 5976, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32437:5:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5974, + "name": "toCase", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5935, + "src": "32421:6:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_bool_$returns$_t_string_memory_ptr_$", + "typeString": "function (string memory,bool) pure returns (string memory)" + } + }, + "id": 5977, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "32421:22:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "32412:31:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "id": 5979, + "nodeType": "ExpressionStatement", + "src": "32412:31:11" + } + ] + }, + "documentation": { + "id": 5966, + "nodeType": "StructuredDocumentation", + "src": "32189:125:11", + "text": "@dev Returns a lowercased copy of the string.\n WARNING! This function is only compatible with 7-bit ASCII strings." + }, + "id": 5981, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "lower", + "nameLocation": "32328:5:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5969, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5968, + "mutability": "mutable", + "name": "subject", + "nameLocation": "32348:7:11", + "nodeType": "VariableDeclaration", + "scope": 5981, + "src": "32334:21:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5967, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "32334:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "32333:23:11" + }, + "returnParameters": { + "id": 5972, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5971, + "mutability": "mutable", + "name": "result", + "nameLocation": "32394:6:11", + "nodeType": "VariableDeclaration", + "scope": 5981, + "src": "32380:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5970, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "32380:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "32379:22:11" + }, + "scope": 6145, + "src": "32319:131:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5996, + "nodeType": "Block", + "src": "32670:47:11", + "statements": [ + { + "expression": { + "id": 5994, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5989, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5987, + "src": "32680:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 5991, + "name": "subject", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5984, + "src": "32696:7:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "hexValue": "74727565", + "id": 5992, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32705:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5990, + "name": "toCase", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5935, + "src": "32689:6:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_bool_$returns$_t_string_memory_ptr_$", + "typeString": "function (string memory,bool) pure returns (string memory)" + } + }, + "id": 5993, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "32689:21:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "32680:30:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "id": 5995, + "nodeType": "ExpressionStatement", + "src": "32680:30:11" + } + ] + }, + "documentation": { + "id": 5982, + "nodeType": "StructuredDocumentation", + "src": "32456:126:11", + "text": "@dev Returns an UPPERCASED copy of the string.\n WARNING! This function is only compatible with 7-bit ASCII strings." + }, + "id": 5997, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "upper", + "nameLocation": "32596:5:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5985, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5984, + "mutability": "mutable", + "name": "subject", + "nameLocation": "32616:7:11", + "nodeType": "VariableDeclaration", + "scope": 5997, + "src": "32602:21:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5983, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "32602:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "32601:23:11" + }, + "returnParameters": { + "id": 5988, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5987, + "mutability": "mutable", + "name": "result", + "nameLocation": "32662:6:11", + "nodeType": "VariableDeclaration", + "scope": 5997, + "src": "32648:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5986, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "32648:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "32647:22:11" + }, + "scope": 6145, + "src": "32587:130:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6006, + "nodeType": "Block", + "src": "32866:1292:11", + "statements": [ + { + "AST": { + "nativeSrc": "32928:1224:11", + "nodeType": "YulBlock", + "src": "32928:1224:11", + "statements": [ + { + "nativeSrc": "32942:21:11", + "nodeType": "YulAssignment", + "src": "32942:21:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "32958:4:11", + "nodeType": "YulLiteral", + "src": "32958:4:11", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "32952:5:11", + "nodeType": "YulIdentifier", + "src": "32952:5:11" + }, + "nativeSrc": "32952:11:11", + "nodeType": "YulFunctionCall", + "src": "32952:11:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "32942:6:11", + "nodeType": "YulIdentifier", + "src": "32942:6:11" + } + ] + }, + { + "nativeSrc": "32976:27:11", + "nodeType": "YulVariableDeclaration", + "src": "32976:27:11", + "value": { + "arguments": [ + { + "name": "s", + "nativeSrc": "32991:1:11", + "nodeType": "YulIdentifier", + "src": "32991:1:11" + }, + { + "arguments": [ + { + "name": "s", + "nativeSrc": "33000:1:11", + "nodeType": "YulIdentifier", + "src": "33000:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "32994:5:11", + "nodeType": "YulIdentifier", + "src": "32994:5:11" + }, + "nativeSrc": "32994:8:11", + "nodeType": "YulFunctionCall", + "src": "32994:8:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "32987:3:11", + "nodeType": "YulIdentifier", + "src": "32987:3:11" + }, + "nativeSrc": "32987:16:11", + "nodeType": "YulFunctionCall", + "src": "32987:16:11" + }, + "variables": [ + { + "name": "end", + "nativeSrc": "32980:3:11", + "nodeType": "YulTypedName", + "src": "32980:3:11", + "type": "" + } + ] + }, + { + "nativeSrc": "33016:26:11", + "nodeType": "YulVariableDeclaration", + "src": "33016:26:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "33029:6:11", + "nodeType": "YulIdentifier", + "src": "33029:6:11" + }, + { + "kind": "number", + "nativeSrc": "33037:4:11", + "nodeType": "YulLiteral", + "src": "33037:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33025:3:11", + "nodeType": "YulIdentifier", + "src": "33025:3:11" + }, + "nativeSrc": "33025:17:11", + "nodeType": "YulFunctionCall", + "src": "33025:17:11" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "33020:1:11", + "nodeType": "YulTypedName", + "src": "33020:1:11", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33236:4:11", + "nodeType": "YulLiteral", + "src": "33236:4:11", + "type": "", + "value": "0x1f" + }, + { + "kind": "number", + "nativeSrc": "33242:8:11", + "nodeType": "YulLiteral", + "src": "33242:8:11", + "type": "", + "value": "0x900094" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "33229:6:11", + "nodeType": "YulIdentifier", + "src": "33229:6:11" + }, + "nativeSrc": "33229:22:11", + "nodeType": "YulFunctionCall", + "src": "33229:22:11" + }, + "nativeSrc": "33229:22:11", + "nodeType": "YulExpressionStatement", + "src": "33229:22:11" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33271:4:11", + "nodeType": "YulLiteral", + "src": "33271:4:11", + "type": "", + "value": "0x08" + }, + { + "kind": "number", + "nativeSrc": "33277:14:11", + "nodeType": "YulLiteral", + "src": "33277:14:11", + "type": "", + "value": "0xc0000000a6ab" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "33264:6:11", + "nodeType": "YulIdentifier", + "src": "33264:6:11" + }, + "nativeSrc": "33264:28:11", + "nodeType": "YulFunctionCall", + "src": "33264:28:11" + }, + "nativeSrc": "33264:28:11", + "nodeType": "YulExpressionStatement", + "src": "33264:28:11" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33384:4:11", + "nodeType": "YulLiteral", + "src": "33384:4:11", + "type": "", + "value": "0x00" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33394:2:11", + "nodeType": "YulLiteral", + "src": "33394:2:11", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "33398:50:11", + "nodeType": "YulLiteral", + "src": "33398:50:11", + "type": "", + "value": "0x2671756f743b26616d703b262333393b266c743b2667743b" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "33390:3:11", + "nodeType": "YulIdentifier", + "src": "33390:3:11" + }, + "nativeSrc": "33390:59:11", + "nodeType": "YulFunctionCall", + "src": "33390:59:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "33377:6:11", + "nodeType": "YulIdentifier", + "src": "33377:6:11" + }, + "nativeSrc": "33377:73:11", + "nodeType": "YulFunctionCall", + "src": "33377:73:11" + }, + "nativeSrc": "33377:73:11", + "nodeType": "YulExpressionStatement", + "src": "33377:73:11" + }, + { + "body": { + "nativeSrc": "33492:453:11", + "nodeType": "YulBlock", + "src": "33492:453:11", + "statements": [ + { + "nativeSrc": "33510:14:11", + "nodeType": "YulAssignment", + "src": "33510:14:11", + "value": { + "arguments": [ + { + "name": "s", + "nativeSrc": "33519:1:11", + "nodeType": "YulIdentifier", + "src": "33519:1:11" + }, + { + "kind": "number", + "nativeSrc": "33522:1:11", + "nodeType": "YulLiteral", + "src": "33522:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33515:3:11", + "nodeType": "YulIdentifier", + "src": "33515:3:11" + }, + "nativeSrc": "33515:9:11", + "nodeType": "YulFunctionCall", + "src": "33515:9:11" + }, + "variableNames": [ + { + "name": "s", + "nativeSrc": "33510:1:11", + "nodeType": "YulIdentifier", + "src": "33510:1:11" + } + ] + }, + { + "nativeSrc": "33541:28:11", + "nodeType": "YulVariableDeclaration", + "src": "33541:28:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "s", + "nativeSrc": "33560:1:11", + "nodeType": "YulIdentifier", + "src": "33560:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "33554:5:11", + "nodeType": "YulIdentifier", + "src": "33554:5:11" + }, + "nativeSrc": "33554:8:11", + "nodeType": "YulFunctionCall", + "src": "33554:8:11" + }, + { + "kind": "number", + "nativeSrc": "33564:4:11", + "nodeType": "YulLiteral", + "src": "33564:4:11", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "33550:3:11", + "nodeType": "YulIdentifier", + "src": "33550:3:11" + }, + "nativeSrc": "33550:19:11", + "nodeType": "YulFunctionCall", + "src": "33550:19:11" + }, + "variables": [ + { + "name": "c", + "nativeSrc": "33545:1:11", + "nodeType": "YulTypedName", + "src": "33545:1:11", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "33684:117:11", + "nodeType": "YulBlock", + "src": "33684:117:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "33714:1:11", + "nodeType": "YulIdentifier", + "src": "33714:1:11" + }, + { + "name": "c", + "nativeSrc": "33717:1:11", + "nodeType": "YulIdentifier", + "src": "33717:1:11" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "33706:7:11", + "nodeType": "YulIdentifier", + "src": "33706:7:11" + }, + "nativeSrc": "33706:13:11", + "nodeType": "YulFunctionCall", + "src": "33706:13:11" + }, + "nativeSrc": "33706:13:11", + "nodeType": "YulExpressionStatement", + "src": "33706:13:11" + }, + { + "nativeSrc": "33740:14:11", + "nodeType": "YulAssignment", + "src": "33740:14:11", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "33749:1:11", + "nodeType": "YulIdentifier", + "src": "33749:1:11" + }, + { + "kind": "number", + "nativeSrc": "33752:1:11", + "nodeType": "YulLiteral", + "src": "33752:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33745:3:11", + "nodeType": "YulIdentifier", + "src": "33745:3:11" + }, + "nativeSrc": "33745:9:11", + "nodeType": "YulFunctionCall", + "src": "33745:9:11" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "33740:1:11", + "nodeType": "YulIdentifier", + "src": "33740:1:11" + } + ] + }, + { + "nativeSrc": "33775:8:11", + "nodeType": "YulContinue", + "src": "33775:8:11" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "33656:1:11", + "nodeType": "YulIdentifier", + "src": "33656:1:11" + }, + { + "kind": "number", + "nativeSrc": "33659:1:11", + "nodeType": "YulLiteral", + "src": "33659:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "33652:3:11", + "nodeType": "YulIdentifier", + "src": "33652:3:11" + }, + "nativeSrc": "33652:9:11", + "nodeType": "YulFunctionCall", + "src": "33652:9:11" + }, + { + "kind": "number", + "nativeSrc": "33663:18:11", + "nodeType": "YulLiteral", + "src": "33663:18:11", + "type": "", + "value": "0x500000c400000000" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "33648:3:11", + "nodeType": "YulIdentifier", + "src": "33648:3:11" + }, + "nativeSrc": "33648:34:11", + "nodeType": "YulFunctionCall", + "src": "33648:34:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "33641:6:11", + "nodeType": "YulIdentifier", + "src": "33641:6:11" + }, + "nativeSrc": "33641:42:11", + "nodeType": "YulFunctionCall", + "src": "33641:42:11" + }, + "nativeSrc": "33638:163:11", + "nodeType": "YulIf", + "src": "33638:163:11" + }, + { + "nativeSrc": "33818:27:11", + "nodeType": "YulVariableDeclaration", + "src": "33818:27:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33831:3:11", + "nodeType": "YulLiteral", + "src": "33831:3:11", + "type": "", + "value": "248" + }, + { + "arguments": [ + { + "name": "c", + "nativeSrc": "33842:1:11", + "nodeType": "YulIdentifier", + "src": "33842:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "33836:5:11", + "nodeType": "YulIdentifier", + "src": "33836:5:11" + }, + "nativeSrc": "33836:8:11", + "nodeType": "YulFunctionCall", + "src": "33836:8:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "33827:3:11", + "nodeType": "YulIdentifier", + "src": "33827:3:11" + }, + "nativeSrc": "33827:18:11", + "nodeType": "YulFunctionCall", + "src": "33827:18:11" + }, + "variables": [ + { + "name": "t", + "nativeSrc": "33822:1:11", + "nodeType": "YulTypedName", + "src": "33822:1:11", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "33869:1:11", + "nodeType": "YulIdentifier", + "src": "33869:1:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "t", + "nativeSrc": "33882:1:11", + "nodeType": "YulIdentifier", + "src": "33882:1:11" + }, + { + "kind": "number", + "nativeSrc": "33885:4:11", + "nodeType": "YulLiteral", + "src": "33885:4:11", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "33878:3:11", + "nodeType": "YulIdentifier", + "src": "33878:3:11" + }, + "nativeSrc": "33878:12:11", + "nodeType": "YulFunctionCall", + "src": "33878:12:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "33872:5:11", + "nodeType": "YulIdentifier", + "src": "33872:5:11" + }, + "nativeSrc": "33872:19:11", + "nodeType": "YulFunctionCall", + "src": "33872:19:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "33862:6:11", + "nodeType": "YulIdentifier", + "src": "33862:6:11" + }, + "nativeSrc": "33862:30:11", + "nodeType": "YulFunctionCall", + "src": "33862:30:11" + }, + "nativeSrc": "33862:30:11", + "nodeType": "YulExpressionStatement", + "src": "33862:30:11" + }, + { + "nativeSrc": "33909:22:11", + "nodeType": "YulAssignment", + "src": "33909:22:11", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "33918:1:11", + "nodeType": "YulIdentifier", + "src": "33918:1:11" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33925:1:11", + "nodeType": "YulLiteral", + "src": "33925:1:11", + "type": "", + "value": "5" + }, + { + "name": "t", + "nativeSrc": "33928:1:11", + "nodeType": "YulIdentifier", + "src": "33928:1:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "33921:3:11", + "nodeType": "YulIdentifier", + "src": "33921:3:11" + }, + "nativeSrc": "33921:9:11", + "nodeType": "YulFunctionCall", + "src": "33921:9:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33914:3:11", + "nodeType": "YulIdentifier", + "src": "33914:3:11" + }, + "nativeSrc": "33914:17:11", + "nodeType": "YulFunctionCall", + "src": "33914:17:11" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "33909:1:11", + "nodeType": "YulIdentifier", + "src": "33909:1:11" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "s", + "nativeSrc": "33480:1:11", + "nodeType": "YulIdentifier", + "src": "33480:1:11" + }, + { + "name": "end", + "nativeSrc": "33483:3:11", + "nodeType": "YulIdentifier", + "src": "33483:3:11" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "33477:2:11", + "nodeType": "YulIdentifier", + "src": "33477:2:11" + }, + "nativeSrc": "33477:10:11", + "nodeType": "YulFunctionCall", + "src": "33477:10:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "33470:6:11", + "nodeType": "YulIdentifier", + "src": "33470:6:11" + }, + "nativeSrc": "33470:18:11", + "nodeType": "YulFunctionCall", + "src": "33470:18:11" + }, + "nativeSrc": "33463:482:11", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "33489:2:11", + "nodeType": "YulBlock", + "src": "33489:2:11", + "statements": [] + }, + "pre": { + "nativeSrc": "33467:2:11", + "nodeType": "YulBlock", + "src": "33467:2:11", + "statements": [] + }, + "src": "33463:482:11" + }, + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "33965:1:11", + "nodeType": "YulIdentifier", + "src": "33965:1:11" + }, + { + "kind": "number", + "nativeSrc": "33968:1:11", + "nodeType": "YulLiteral", + "src": "33968:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "33958:6:11", + "nodeType": "YulIdentifier", + "src": "33958:6:11" + }, + "nativeSrc": "33958:12:11", + "nodeType": "YulFunctionCall", + "src": "33958:12:11" + }, + "nativeSrc": "33958:12:11", + "nodeType": "YulExpressionStatement", + "src": "33958:12:11" + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "34028:6:11", + "nodeType": "YulIdentifier", + "src": "34028:6:11" + }, + { + "arguments": [ + { + "name": "o", + "nativeSrc": "34040:1:11", + "nodeType": "YulIdentifier", + "src": "34040:1:11" + }, + { + "arguments": [ + { + "name": "result", + "nativeSrc": "34047:6:11", + "nodeType": "YulIdentifier", + "src": "34047:6:11" + }, + { + "kind": "number", + "nativeSrc": "34055:4:11", + "nodeType": "YulLiteral", + "src": "34055:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "34043:3:11", + "nodeType": "YulIdentifier", + "src": "34043:3:11" + }, + "nativeSrc": "34043:17:11", + "nodeType": "YulFunctionCall", + "src": "34043:17:11" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "34036:3:11", + "nodeType": "YulIdentifier", + "src": "34036:3:11" + }, + "nativeSrc": "34036:25:11", + "nodeType": "YulFunctionCall", + "src": "34036:25:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "34021:6:11", + "nodeType": "YulIdentifier", + "src": "34021:6:11" + }, + "nativeSrc": "34021:41:11", + "nodeType": "YulFunctionCall", + "src": "34021:41:11" + }, + "nativeSrc": "34021:41:11", + "nodeType": "YulExpressionStatement", + "src": "34021:41:11" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "34103:4:11", + "nodeType": "YulLiteral", + "src": "34103:4:11", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "o", + "nativeSrc": "34113:1:11", + "nodeType": "YulIdentifier", + "src": "34113:1:11" + }, + { + "kind": "number", + "nativeSrc": "34116:4:11", + "nodeType": "YulLiteral", + "src": "34116:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "34109:3:11", + "nodeType": "YulIdentifier", + "src": "34109:3:11" + }, + "nativeSrc": "34109:12:11", + "nodeType": "YulFunctionCall", + "src": "34109:12:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "34096:6:11", + "nodeType": "YulIdentifier", + "src": "34096:6:11" + }, + "nativeSrc": "34096:26:11", + "nodeType": "YulFunctionCall", + "src": "34096:26:11" + }, + "nativeSrc": "34096:26:11", + "nodeType": "YulExpressionStatement", + "src": "34096:26:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6003, + "isOffset": false, + "isSlot": false, + "src": "32942:6:11", + "valueSize": 1 + }, + { + "declaration": 6003, + "isOffset": false, + "isSlot": false, + "src": "33029:6:11", + "valueSize": 1 + }, + { + "declaration": 6003, + "isOffset": false, + "isSlot": false, + "src": "34028:6:11", + "valueSize": 1 + }, + { + "declaration": 6003, + "isOffset": false, + "isSlot": false, + "src": "34047:6:11", + "valueSize": 1 + }, + { + "declaration": 6000, + "isOffset": false, + "isSlot": false, + "src": "32991:1:11", + "valueSize": 1 + }, + { + "declaration": 6000, + "isOffset": false, + "isSlot": false, + "src": "33000:1:11", + "valueSize": 1 + }, + { + "declaration": 6000, + "isOffset": false, + "isSlot": false, + "src": "33480:1:11", + "valueSize": 1 + }, + { + "declaration": 6000, + "isOffset": false, + "isSlot": false, + "src": "33510:1:11", + "valueSize": 1 + }, + { + "declaration": 6000, + "isOffset": false, + "isSlot": false, + "src": "33519:1:11", + "valueSize": 1 + }, + { + "declaration": 6000, + "isOffset": false, + "isSlot": false, + "src": "33560:1:11", + "valueSize": 1 + } + ], + "id": 6005, + "nodeType": "InlineAssembly", + "src": "32919:1233:11" + } + ] + }, + "documentation": { + "id": 5998, + "nodeType": "StructuredDocumentation", + "src": "32723:56:11", + "text": "@dev Escapes the string to be used within HTML tags." + }, + "id": 6007, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "escapeHTML", + "nameLocation": "32793:10:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6001, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6000, + "mutability": "mutable", + "name": "s", + "nameLocation": "32818:1:11", + "nodeType": "VariableDeclaration", + "scope": 6007, + "src": "32804:15:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5999, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "32804:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "32803:17:11" + }, + "returnParameters": { + "id": 6004, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6003, + "mutability": "mutable", + "name": "result", + "nameLocation": "32858:6:11", + "nodeType": "VariableDeclaration", + "scope": 6007, + "src": "32844:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6002, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "32844:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "32843:22:11" + }, + "scope": 6145, + "src": "32784:1374:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6018, + "nodeType": "Block", + "src": "34455:2098:11", + "statements": [ + { + "AST": { + "nativeSrc": "34517:2030:11", + "nodeType": "YulBlock", + "src": "34517:2030:11", + "statements": [ + { + "nativeSrc": "34531:21:11", + "nodeType": "YulAssignment", + "src": "34531:21:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "34547:4:11", + "nodeType": "YulLiteral", + "src": "34547:4:11", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "34541:5:11", + "nodeType": "YulIdentifier", + "src": "34541:5:11" + }, + "nativeSrc": "34541:11:11", + "nodeType": "YulFunctionCall", + "src": "34541:11:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "34531:6:11", + "nodeType": "YulIdentifier", + "src": "34531:6:11" + } + ] + }, + { + "nativeSrc": "34565:26:11", + "nodeType": "YulVariableDeclaration", + "src": "34565:26:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "34578:6:11", + "nodeType": "YulIdentifier", + "src": "34578:6:11" + }, + { + "kind": "number", + "nativeSrc": "34586:4:11", + "nodeType": "YulLiteral", + "src": "34586:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "34574:3:11", + "nodeType": "YulIdentifier", + "src": "34574:3:11" + }, + "nativeSrc": "34574:17:11", + "nodeType": "YulFunctionCall", + "src": "34574:17:11" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "34569:1:11", + "nodeType": "YulTypedName", + "src": "34569:1:11", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "34623:77:11", + "nodeType": "YulBlock", + "src": "34623:77:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "34649:1:11", + "nodeType": "YulIdentifier", + "src": "34649:1:11" + }, + { + "kind": "number", + "nativeSrc": "34652:2:11", + "nodeType": "YulLiteral", + "src": "34652:2:11", + "type": "", + "value": "34" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "34641:7:11", + "nodeType": "YulIdentifier", + "src": "34641:7:11" + }, + "nativeSrc": "34641:14:11", + "nodeType": "YulFunctionCall", + "src": "34641:14:11" + }, + "nativeSrc": "34641:14:11", + "nodeType": "YulExpressionStatement", + "src": "34641:14:11" + }, + { + "nativeSrc": "34672:14:11", + "nodeType": "YulAssignment", + "src": "34672:14:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "34681:1:11", + "nodeType": "YulLiteral", + "src": "34681:1:11", + "type": "", + "value": "1" + }, + { + "name": "o", + "nativeSrc": "34684:1:11", + "nodeType": "YulIdentifier", + "src": "34684:1:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "34677:3:11", + "nodeType": "YulIdentifier", + "src": "34677:3:11" + }, + "nativeSrc": "34677:9:11", + "nodeType": "YulFunctionCall", + "src": "34677:9:11" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "34672:1:11", + "nodeType": "YulIdentifier", + "src": "34672:1:11" + } + ] + } + ] + }, + "condition": { + "name": "addDoubleQuotes", + "nativeSrc": "34607:15:11", + "nodeType": "YulIdentifier", + "src": "34607:15:11" + }, + "nativeSrc": "34604:96:11", + "nodeType": "YulIf", + "src": "34604:96:11" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "34947:4:11", + "nodeType": "YulLiteral", + "src": "34947:4:11", + "type": "", + "value": "0x15" + }, + { + "kind": "number", + "nativeSrc": "34953:58:11", + "nodeType": "YulLiteral", + "src": "34953:58:11", + "type": "", + "value": "0x5c75303030303031323334353637383961626364656662746e006672" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "34940:6:11", + "nodeType": "YulIdentifier", + "src": "34940:6:11" + }, + "nativeSrc": "34940:72:11", + "nodeType": "YulFunctionCall", + "src": "34940:72:11" + }, + "nativeSrc": "34940:72:11", + "nodeType": "YulExpressionStatement", + "src": "34940:72:11" + }, + { + "nativeSrc": "35077:39:11", + "nodeType": "YulVariableDeclaration", + "src": "35077:39:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "35093:4:11", + "nodeType": "YulLiteral", + "src": "35093:4:11", + "type": "", + "value": "0x22" + }, + { + "kind": "number", + "nativeSrc": "35099:1:11", + "nodeType": "YulLiteral", + "src": "35099:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "35089:3:11", + "nodeType": "YulIdentifier", + "src": "35089:3:11" + }, + "nativeSrc": "35089:12:11", + "nodeType": "YulFunctionCall", + "src": "35089:12:11" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "35107:4:11", + "nodeType": "YulLiteral", + "src": "35107:4:11", + "type": "", + "value": "0x5c" + }, + { + "kind": "number", + "nativeSrc": "35113:1:11", + "nodeType": "YulLiteral", + "src": "35113:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "35103:3:11", + "nodeType": "YulIdentifier", + "src": "35103:3:11" + }, + "nativeSrc": "35103:12:11", + "nodeType": "YulFunctionCall", + "src": "35103:12:11" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "35086:2:11", + "nodeType": "YulIdentifier", + "src": "35086:2:11" + }, + "nativeSrc": "35086:30:11", + "nodeType": "YulFunctionCall", + "src": "35086:30:11" + }, + "variables": [ + { + "name": "e", + "nativeSrc": "35081:1:11", + "nodeType": "YulTypedName", + "src": "35081:1:11", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "35187:1044:11", + "nodeType": "YulBlock", + "src": "35187:1044:11", + "statements": [ + { + "nativeSrc": "35205:14:11", + "nodeType": "YulAssignment", + "src": "35205:14:11", + "value": { + "arguments": [ + { + "name": "s", + "nativeSrc": "35214:1:11", + "nodeType": "YulIdentifier", + "src": "35214:1:11" + }, + { + "kind": "number", + "nativeSrc": "35217:1:11", + "nodeType": "YulLiteral", + "src": "35217:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35210:3:11", + "nodeType": "YulIdentifier", + "src": "35210:3:11" + }, + "nativeSrc": "35210:9:11", + "nodeType": "YulFunctionCall", + "src": "35210:9:11" + }, + "variableNames": [ + { + "name": "s", + "nativeSrc": "35205:1:11", + "nodeType": "YulIdentifier", + "src": "35205:1:11" + } + ] + }, + { + "nativeSrc": "35236:28:11", + "nodeType": "YulVariableDeclaration", + "src": "35236:28:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "s", + "nativeSrc": "35255:1:11", + "nodeType": "YulIdentifier", + "src": "35255:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "35249:5:11", + "nodeType": "YulIdentifier", + "src": "35249:5:11" + }, + "nativeSrc": "35249:8:11", + "nodeType": "YulFunctionCall", + "src": "35249:8:11" + }, + { + "kind": "number", + "nativeSrc": "35259:4:11", + "nodeType": "YulLiteral", + "src": "35259:4:11", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "35245:3:11", + "nodeType": "YulIdentifier", + "src": "35245:3:11" + }, + "nativeSrc": "35245:19:11", + "nodeType": "YulFunctionCall", + "src": "35245:19:11" + }, + "variables": [ + { + "name": "c", + "nativeSrc": "35240:1:11", + "nodeType": "YulTypedName", + "src": "35240:1:11", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "35304:403:11", + "nodeType": "YulBlock", + "src": "35304:403:11", + "statements": [ + { + "body": { + "nativeSrc": "35355:182:11", + "nodeType": "YulBlock", + "src": "35355:182:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "35438:1:11", + "nodeType": "YulIdentifier", + "src": "35438:1:11" + }, + { + "name": "c", + "nativeSrc": "35441:1:11", + "nodeType": "YulIdentifier", + "src": "35441:1:11" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "35430:7:11", + "nodeType": "YulIdentifier", + "src": "35430:7:11" + }, + "nativeSrc": "35430:13:11", + "nodeType": "YulFunctionCall", + "src": "35430:13:11" + }, + "nativeSrc": "35430:13:11", + "nodeType": "YulExpressionStatement", + "src": "35430:13:11" + }, + { + "nativeSrc": "35468:14:11", + "nodeType": "YulAssignment", + "src": "35468:14:11", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "35477:1:11", + "nodeType": "YulIdentifier", + "src": "35477:1:11" + }, + { + "kind": "number", + "nativeSrc": "35480:1:11", + "nodeType": "YulLiteral", + "src": "35480:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35473:3:11", + "nodeType": "YulIdentifier", + "src": "35473:3:11" + }, + "nativeSrc": "35473:9:11", + "nodeType": "YulFunctionCall", + "src": "35473:9:11" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "35468:1:11", + "nodeType": "YulIdentifier", + "src": "35468:1:11" + } + ] + }, + { + "nativeSrc": "35507:8:11", + "nodeType": "YulContinue", + "src": "35507:8:11" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "35344:1:11", + "nodeType": "YulIdentifier", + "src": "35344:1:11" + }, + { + "kind": "number", + "nativeSrc": "35347:1:11", + "nodeType": "YulLiteral", + "src": "35347:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "35340:3:11", + "nodeType": "YulIdentifier", + "src": "35340:3:11" + }, + "nativeSrc": "35340:9:11", + "nodeType": "YulFunctionCall", + "src": "35340:9:11" + }, + { + "name": "e", + "nativeSrc": "35351:1:11", + "nodeType": "YulIdentifier", + "src": "35351:1:11" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "35336:3:11", + "nodeType": "YulIdentifier", + "src": "35336:3:11" + }, + "nativeSrc": "35336:17:11", + "nodeType": "YulFunctionCall", + "src": "35336:17:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "35329:6:11", + "nodeType": "YulIdentifier", + "src": "35329:6:11" + }, + "nativeSrc": "35329:25:11", + "nodeType": "YulFunctionCall", + "src": "35329:25:11" + }, + "nativeSrc": "35326:211:11", + "nodeType": "YulIf", + "src": "35326:211:11" + }, + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "35566:1:11", + "nodeType": "YulIdentifier", + "src": "35566:1:11" + }, + { + "kind": "number", + "nativeSrc": "35569:4:11", + "nodeType": "YulLiteral", + "src": "35569:4:11", + "type": "", + "value": "0x5c" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "35558:7:11", + "nodeType": "YulIdentifier", + "src": "35558:7:11" + }, + "nativeSrc": "35558:16:11", + "nodeType": "YulFunctionCall", + "src": "35558:16:11" + }, + "nativeSrc": "35558:16:11", + "nodeType": "YulExpressionStatement", + "src": "35558:16:11" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "35616:1:11", + "nodeType": "YulIdentifier", + "src": "35616:1:11" + }, + { + "kind": "number", + "nativeSrc": "35619:1:11", + "nodeType": "YulLiteral", + "src": "35619:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35612:3:11", + "nodeType": "YulIdentifier", + "src": "35612:3:11" + }, + "nativeSrc": "35612:9:11", + "nodeType": "YulFunctionCall", + "src": "35612:9:11" + }, + { + "name": "c", + "nativeSrc": "35623:1:11", + "nodeType": "YulIdentifier", + "src": "35623:1:11" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "35604:7:11", + "nodeType": "YulIdentifier", + "src": "35604:7:11" + }, + "nativeSrc": "35604:21:11", + "nodeType": "YulFunctionCall", + "src": "35604:21:11" + }, + "nativeSrc": "35604:21:11", + "nodeType": "YulExpressionStatement", + "src": "35604:21:11" + }, + { + "nativeSrc": "35646:14:11", + "nodeType": "YulAssignment", + "src": "35646:14:11", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "35655:1:11", + "nodeType": "YulIdentifier", + "src": "35655:1:11" + }, + { + "kind": "number", + "nativeSrc": "35658:1:11", + "nodeType": "YulLiteral", + "src": "35658:1:11", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35651:3:11", + "nodeType": "YulIdentifier", + "src": "35651:3:11" + }, + "nativeSrc": "35651:9:11", + "nodeType": "YulFunctionCall", + "src": "35651:9:11" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "35646:1:11", + "nodeType": "YulIdentifier", + "src": "35646:1:11" + } + ] + }, + { + "nativeSrc": "35681:8:11", + "nodeType": "YulContinue", + "src": "35681:8:11" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "35294:1:11", + "nodeType": "YulIdentifier", + "src": "35294:1:11" + }, + { + "kind": "number", + "nativeSrc": "35297:4:11", + "nodeType": "YulLiteral", + "src": "35297:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "35291:2:11", + "nodeType": "YulIdentifier", + "src": "35291:2:11" + }, + "nativeSrc": "35291:11:11", + "nodeType": "YulFunctionCall", + "src": "35291:11:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "35284:6:11", + "nodeType": "YulIdentifier", + "src": "35284:6:11" + }, + "nativeSrc": "35284:19:11", + "nodeType": "YulFunctionCall", + "src": "35284:19:11" + }, + "nativeSrc": "35281:426:11", + "nodeType": "YulIf", + "src": "35281:426:11" + }, + { + "body": { + "nativeSrc": "35758:333:11", + "nodeType": "YulBlock", + "src": "35758:333:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "35848:4:11", + "nodeType": "YulLiteral", + "src": "35848:4:11", + "type": "", + "value": "0x1d" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "35864:1:11", + "nodeType": "YulLiteral", + "src": "35864:1:11", + "type": "", + "value": "4" + }, + { + "name": "c", + "nativeSrc": "35867:1:11", + "nodeType": "YulIdentifier", + "src": "35867:1:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "35860:3:11", + "nodeType": "YulIdentifier", + "src": "35860:3:11" + }, + "nativeSrc": "35860:9:11", + "nodeType": "YulFunctionCall", + "src": "35860:9:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "35854:5:11", + "nodeType": "YulIdentifier", + "src": "35854:5:11" + }, + "nativeSrc": "35854:16:11", + "nodeType": "YulFunctionCall", + "src": "35854:16:11" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "35840:7:11", + "nodeType": "YulIdentifier", + "src": "35840:7:11" + }, + "nativeSrc": "35840:31:11", + "nodeType": "YulFunctionCall", + "src": "35840:31:11" + }, + "nativeSrc": "35840:31:11", + "nodeType": "YulExpressionStatement", + "src": "35840:31:11" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "35914:4:11", + "nodeType": "YulLiteral", + "src": "35914:4:11", + "type": "", + "value": "0x1e" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "35930:1:11", + "nodeType": "YulIdentifier", + "src": "35930:1:11" + }, + { + "kind": "number", + "nativeSrc": "35933:2:11", + "nodeType": "YulLiteral", + "src": "35933:2:11", + "type": "", + "value": "15" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "35926:3:11", + "nodeType": "YulIdentifier", + "src": "35926:3:11" + }, + "nativeSrc": "35926:10:11", + "nodeType": "YulFunctionCall", + "src": "35926:10:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "35920:5:11", + "nodeType": "YulIdentifier", + "src": "35920:5:11" + }, + "nativeSrc": "35920:17:11", + "nodeType": "YulFunctionCall", + "src": "35920:17:11" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "35906:7:11", + "nodeType": "YulIdentifier", + "src": "35906:7:11" + }, + "nativeSrc": "35906:32:11", + "nodeType": "YulFunctionCall", + "src": "35906:32:11" + }, + "nativeSrc": "35906:32:11", + "nodeType": "YulExpressionStatement", + "src": "35906:32:11" + }, + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "35980:1:11", + "nodeType": "YulIdentifier", + "src": "35980:1:11" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "35989:4:11", + "nodeType": "YulLiteral", + "src": "35989:4:11", + "type": "", + "value": "0x19" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "35983:5:11", + "nodeType": "YulIdentifier", + "src": "35983:5:11" + }, + "nativeSrc": "35983:11:11", + "nodeType": "YulFunctionCall", + "src": "35983:11:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "35973:6:11", + "nodeType": "YulIdentifier", + "src": "35973:6:11" + }, + "nativeSrc": "35973:22:11", + "nodeType": "YulFunctionCall", + "src": "35973:22:11" + }, + "nativeSrc": "35973:22:11", + "nodeType": "YulExpressionStatement", + "src": "35973:22:11" + }, + { + "nativeSrc": "36030:14:11", + "nodeType": "YulAssignment", + "src": "36030:14:11", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "36039:1:11", + "nodeType": "YulIdentifier", + "src": "36039:1:11" + }, + { + "kind": "number", + "nativeSrc": "36042:1:11", + "nodeType": "YulLiteral", + "src": "36042:1:11", + "type": "", + "value": "6" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36035:3:11", + "nodeType": "YulIdentifier", + "src": "36035:3:11" + }, + "nativeSrc": "36035:9:11", + "nodeType": "YulFunctionCall", + "src": "36035:9:11" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "36030:1:11", + "nodeType": "YulIdentifier", + "src": "36030:1:11" + } + ] + }, + { + "nativeSrc": "36065:8:11", + "nodeType": "YulContinue", + "src": "36065:8:11" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "35742:1:11", + "nodeType": "YulIdentifier", + "src": "35742:1:11" + }, + { + "kind": "number", + "nativeSrc": "35745:1:11", + "nodeType": "YulLiteral", + "src": "35745:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "35738:3:11", + "nodeType": "YulIdentifier", + "src": "35738:3:11" + }, + "nativeSrc": "35738:9:11", + "nodeType": "YulFunctionCall", + "src": "35738:9:11" + }, + { + "kind": "number", + "nativeSrc": "35749:6:11", + "nodeType": "YulLiteral", + "src": "35749:6:11", + "type": "", + "value": "0x3700" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "35734:3:11", + "nodeType": "YulIdentifier", + "src": "35734:3:11" + }, + "nativeSrc": "35734:22:11", + "nodeType": "YulFunctionCall", + "src": "35734:22:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "35727:6:11", + "nodeType": "YulIdentifier", + "src": "35727:6:11" + }, + "nativeSrc": "35727:30:11", + "nodeType": "YulFunctionCall", + "src": "35727:30:11" + }, + "nativeSrc": "35724:367:11", + "nodeType": "YulIf", + "src": "35724:367:11" + }, + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "36116:1:11", + "nodeType": "YulIdentifier", + "src": "36116:1:11" + }, + { + "kind": "number", + "nativeSrc": "36119:4:11", + "nodeType": "YulLiteral", + "src": "36119:4:11", + "type": "", + "value": "0x5c" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "36108:7:11", + "nodeType": "YulIdentifier", + "src": "36108:7:11" + }, + "nativeSrc": "36108:16:11", + "nodeType": "YulFunctionCall", + "src": "36108:16:11" + }, + "nativeSrc": "36108:16:11", + "nodeType": "YulExpressionStatement", + "src": "36108:16:11" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "36162:1:11", + "nodeType": "YulIdentifier", + "src": "36162:1:11" + }, + { + "kind": "number", + "nativeSrc": "36165:1:11", + "nodeType": "YulLiteral", + "src": "36165:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36158:3:11", + "nodeType": "YulIdentifier", + "src": "36158:3:11" + }, + "nativeSrc": "36158:9:11", + "nodeType": "YulFunctionCall", + "src": "36158:9:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "36179:1:11", + "nodeType": "YulIdentifier", + "src": "36179:1:11" + }, + { + "kind": "number", + "nativeSrc": "36182:1:11", + "nodeType": "YulLiteral", + "src": "36182:1:11", + "type": "", + "value": "8" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36175:3:11", + "nodeType": "YulIdentifier", + "src": "36175:3:11" + }, + "nativeSrc": "36175:9:11", + "nodeType": "YulFunctionCall", + "src": "36175:9:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "36169:5:11", + "nodeType": "YulIdentifier", + "src": "36169:5:11" + }, + "nativeSrc": "36169:16:11", + "nodeType": "YulFunctionCall", + "src": "36169:16:11" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "36150:7:11", + "nodeType": "YulIdentifier", + "src": "36150:7:11" + }, + "nativeSrc": "36150:36:11", + "nodeType": "YulFunctionCall", + "src": "36150:36:11" + }, + "nativeSrc": "36150:36:11", + "nodeType": "YulExpressionStatement", + "src": "36150:36:11" + }, + { + "nativeSrc": "36203:14:11", + "nodeType": "YulAssignment", + "src": "36203:14:11", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "36212:1:11", + "nodeType": "YulIdentifier", + "src": "36212:1:11" + }, + { + "kind": "number", + "nativeSrc": "36215:1:11", + "nodeType": "YulLiteral", + "src": "36215:1:11", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36208:3:11", + "nodeType": "YulIdentifier", + "src": "36208:3:11" + }, + "nativeSrc": "36208:9:11", + "nodeType": "YulFunctionCall", + "src": "36208:9:11" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "36203:1:11", + "nodeType": "YulIdentifier", + "src": "36203:1:11" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "s", + "nativeSrc": "35175:1:11", + "nodeType": "YulIdentifier", + "src": "35175:1:11" + }, + { + "name": "end", + "nativeSrc": "35178:3:11", + "nodeType": "YulIdentifier", + "src": "35178:3:11" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "35172:2:11", + "nodeType": "YulIdentifier", + "src": "35172:2:11" + }, + "nativeSrc": "35172:10:11", + "nodeType": "YulFunctionCall", + "src": "35172:10:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "35165:6:11", + "nodeType": "YulIdentifier", + "src": "35165:6:11" + }, + "nativeSrc": "35165:18:11", + "nodeType": "YulFunctionCall", + "src": "35165:18:11" + }, + "nativeSrc": "35129:1102:11", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "35184:2:11", + "nodeType": "YulBlock", + "src": "35184:2:11", + "statements": [] + }, + "pre": { + "nativeSrc": "35133:31:11", + "nodeType": "YulBlock", + "src": "35133:31:11", + "statements": [ + { + "nativeSrc": "35135:27:11", + "nodeType": "YulVariableDeclaration", + "src": "35135:27:11", + "value": { + "arguments": [ + { + "name": "s", + "nativeSrc": "35150:1:11", + "nodeType": "YulIdentifier", + "src": "35150:1:11" + }, + { + "arguments": [ + { + "name": "s", + "nativeSrc": "35159:1:11", + "nodeType": "YulIdentifier", + "src": "35159:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "35153:5:11", + "nodeType": "YulIdentifier", + "src": "35153:5:11" + }, + "nativeSrc": "35153:8:11", + "nodeType": "YulFunctionCall", + "src": "35153:8:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35146:3:11", + "nodeType": "YulIdentifier", + "src": "35146:3:11" + }, + "nativeSrc": "35146:16:11", + "nodeType": "YulFunctionCall", + "src": "35146:16:11" + }, + "variables": [ + { + "name": "end", + "nativeSrc": "35139:3:11", + "nodeType": "YulTypedName", + "src": "35139:3:11", + "type": "" + } + ] + } + ] + }, + "src": "35129:1102:11" + }, + { + "body": { + "nativeSrc": "36263:77:11", + "nodeType": "YulBlock", + "src": "36263:77:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "36289:1:11", + "nodeType": "YulIdentifier", + "src": "36289:1:11" + }, + { + "kind": "number", + "nativeSrc": "36292:2:11", + "nodeType": "YulLiteral", + "src": "36292:2:11", + "type": "", + "value": "34" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "36281:7:11", + "nodeType": "YulIdentifier", + "src": "36281:7:11" + }, + "nativeSrc": "36281:14:11", + "nodeType": "YulFunctionCall", + "src": "36281:14:11" + }, + "nativeSrc": "36281:14:11", + "nodeType": "YulExpressionStatement", + "src": "36281:14:11" + }, + { + "nativeSrc": "36312:14:11", + "nodeType": "YulAssignment", + "src": "36312:14:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "36321:1:11", + "nodeType": "YulLiteral", + "src": "36321:1:11", + "type": "", + "value": "1" + }, + { + "name": "o", + "nativeSrc": "36324:1:11", + "nodeType": "YulIdentifier", + "src": "36324:1:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36317:3:11", + "nodeType": "YulIdentifier", + "src": "36317:3:11" + }, + "nativeSrc": "36317:9:11", + "nodeType": "YulFunctionCall", + "src": "36317:9:11" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "36312:1:11", + "nodeType": "YulIdentifier", + "src": "36312:1:11" + } + ] + } + ] + }, + "condition": { + "name": "addDoubleQuotes", + "nativeSrc": "36247:15:11", + "nodeType": "YulIdentifier", + "src": "36247:15:11" + }, + "nativeSrc": "36244:96:11", + "nodeType": "YulIf", + "src": "36244:96:11" + }, + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "36360:1:11", + "nodeType": "YulIdentifier", + "src": "36360:1:11" + }, + { + "kind": "number", + "nativeSrc": "36363:1:11", + "nodeType": "YulLiteral", + "src": "36363:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "36353:6:11", + "nodeType": "YulIdentifier", + "src": "36353:6:11" + }, + "nativeSrc": "36353:12:11", + "nodeType": "YulFunctionCall", + "src": "36353:12:11" + }, + "nativeSrc": "36353:12:11", + "nodeType": "YulExpressionStatement", + "src": "36353:12:11" + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "36423:6:11", + "nodeType": "YulIdentifier", + "src": "36423:6:11" + }, + { + "arguments": [ + { + "name": "o", + "nativeSrc": "36435:1:11", + "nodeType": "YulIdentifier", + "src": "36435:1:11" + }, + { + "arguments": [ + { + "name": "result", + "nativeSrc": "36442:6:11", + "nodeType": "YulIdentifier", + "src": "36442:6:11" + }, + { + "kind": "number", + "nativeSrc": "36450:4:11", + "nodeType": "YulLiteral", + "src": "36450:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36438:3:11", + "nodeType": "YulIdentifier", + "src": "36438:3:11" + }, + "nativeSrc": "36438:17:11", + "nodeType": "YulFunctionCall", + "src": "36438:17:11" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "36431:3:11", + "nodeType": "YulIdentifier", + "src": "36431:3:11" + }, + "nativeSrc": "36431:25:11", + "nodeType": "YulFunctionCall", + "src": "36431:25:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "36416:6:11", + "nodeType": "YulIdentifier", + "src": "36416:6:11" + }, + "nativeSrc": "36416:41:11", + "nodeType": "YulFunctionCall", + "src": "36416:41:11" + }, + "nativeSrc": "36416:41:11", + "nodeType": "YulExpressionStatement", + "src": "36416:41:11" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "36498:4:11", + "nodeType": "YulLiteral", + "src": "36498:4:11", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "o", + "nativeSrc": "36508:1:11", + "nodeType": "YulIdentifier", + "src": "36508:1:11" + }, + { + "kind": "number", + "nativeSrc": "36511:4:11", + "nodeType": "YulLiteral", + "src": "36511:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36504:3:11", + "nodeType": "YulIdentifier", + "src": "36504:3:11" + }, + "nativeSrc": "36504:12:11", + "nodeType": "YulFunctionCall", + "src": "36504:12:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "36491:6:11", + "nodeType": "YulIdentifier", + "src": "36491:6:11" + }, + "nativeSrc": "36491:26:11", + "nodeType": "YulFunctionCall", + "src": "36491:26:11" + }, + "nativeSrc": "36491:26:11", + "nodeType": "YulExpressionStatement", + "src": "36491:26:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6012, + "isOffset": false, + "isSlot": false, + "src": "34607:15:11", + "valueSize": 1 + }, + { + "declaration": 6012, + "isOffset": false, + "isSlot": false, + "src": "36247:15:11", + "valueSize": 1 + }, + { + "declaration": 6015, + "isOffset": false, + "isSlot": false, + "src": "34531:6:11", + "valueSize": 1 + }, + { + "declaration": 6015, + "isOffset": false, + "isSlot": false, + "src": "34578:6:11", + "valueSize": 1 + }, + { + "declaration": 6015, + "isOffset": false, + "isSlot": false, + "src": "36423:6:11", + "valueSize": 1 + }, + { + "declaration": 6015, + "isOffset": false, + "isSlot": false, + "src": "36442:6:11", + "valueSize": 1 + }, + { + "declaration": 6010, + "isOffset": false, + "isSlot": false, + "src": "35150:1:11", + "valueSize": 1 + }, + { + "declaration": 6010, + "isOffset": false, + "isSlot": false, + "src": "35159:1:11", + "valueSize": 1 + }, + { + "declaration": 6010, + "isOffset": false, + "isSlot": false, + "src": "35175:1:11", + "valueSize": 1 + }, + { + "declaration": 6010, + "isOffset": false, + "isSlot": false, + "src": "35205:1:11", + "valueSize": 1 + }, + { + "declaration": 6010, + "isOffset": false, + "isSlot": false, + "src": "35214:1:11", + "valueSize": 1 + }, + { + "declaration": 6010, + "isOffset": false, + "isSlot": false, + "src": "35255:1:11", + "valueSize": 1 + } + ], + "id": 6017, + "nodeType": "InlineAssembly", + "src": "34508:2039:11" + } + ] + }, + "documentation": { + "id": 6008, + "nodeType": "StructuredDocumentation", + "src": "34164:154:11", + "text": "@dev Escapes the string to be used within double-quotes in a JSON.\n If `addDoubleQuotes` is true, the result will be enclosed in double-quotes." + }, + "id": 6019, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "escapeJSON", + "nameLocation": "34332:10:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6013, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6010, + "mutability": "mutable", + "name": "s", + "nameLocation": "34357:1:11", + "nodeType": "VariableDeclaration", + "scope": 6019, + "src": "34343:15:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6009, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "34343:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6012, + "mutability": "mutable", + "name": "addDoubleQuotes", + "nameLocation": "34365:15:11", + "nodeType": "VariableDeclaration", + "scope": 6019, + "src": "34360:20:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6011, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "34360:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "34342:39:11" + }, + "returnParameters": { + "id": 6016, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6015, + "mutability": "mutable", + "name": "result", + "nameLocation": "34443:6:11", + "nodeType": "VariableDeclaration", + "scope": 6019, + "src": "34429:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6014, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "34429:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "34428:22:11" + }, + "scope": 6145, + "src": "34323:2230:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6034, + "nodeType": "Block", + "src": "36716:46:11", + "statements": [ + { + "expression": { + "id": 6032, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6027, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6025, + "src": "36726:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 6029, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6022, + "src": "36746:1:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "hexValue": "66616c7365", + "id": 6030, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "36749:5:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 6028, + "name": "escapeJSON", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6019, + 6035 + ], + "referencedDeclaration": 6019, + "src": "36735:10:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_bool_$returns$_t_string_memory_ptr_$", + "typeString": "function (string memory,bool) pure returns (string memory)" + } + }, + "id": 6031, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "36735:20:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "36726:29:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "id": 6033, + "nodeType": "ExpressionStatement", + "src": "36726:29:11" + } + ] + }, + "documentation": { + "id": 6020, + "nodeType": "StructuredDocumentation", + "src": "36559:70:11", + "text": "@dev Escapes the string to be used within double-quotes in a JSON." + }, + "id": 6035, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "escapeJSON", + "nameLocation": "36643:10:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6023, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6022, + "mutability": "mutable", + "name": "s", + "nameLocation": "36668:1:11", + "nodeType": "VariableDeclaration", + "scope": 6035, + "src": "36654:15:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6021, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "36654:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "36653:17:11" + }, + "returnParameters": { + "id": 6026, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6025, + "mutability": "mutable", + "name": "result", + "nameLocation": "36708:6:11", + "nodeType": "VariableDeclaration", + "scope": 6035, + "src": "36694:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6024, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "36694:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "36693:22:11" + }, + "scope": 6145, + "src": "36634:128:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6044, + "nodeType": "Block", + "src": "37208:1153:11", + "statements": [ + { + "AST": { + "nativeSrc": "37270:1085:11", + "nodeType": "YulBlock", + "src": "37270:1085:11", + "statements": [ + { + "nativeSrc": "37284:21:11", + "nodeType": "YulAssignment", + "src": "37284:21:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "37300:4:11", + "nodeType": "YulLiteral", + "src": "37300:4:11", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "37294:5:11", + "nodeType": "YulIdentifier", + "src": "37294:5:11" + }, + "nativeSrc": "37294:11:11", + "nodeType": "YulFunctionCall", + "src": "37294:11:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "37284:6:11", + "nodeType": "YulIdentifier", + "src": "37284:6:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "37460:4:11", + "nodeType": "YulLiteral", + "src": "37460:4:11", + "type": "", + "value": "0x0f" + }, + { + "kind": "number", + "nativeSrc": "37466:34:11", + "nodeType": "YulLiteral", + "src": "37466:34:11", + "type": "", + "value": "0x30313233343536373839414243444546" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "37453:6:11", + "nodeType": "YulIdentifier", + "src": "37453:6:11" + }, + "nativeSrc": "37453:48:11", + "nodeType": "YulFunctionCall", + "src": "37453:48:11" + }, + "nativeSrc": "37453:48:11", + "nodeType": "YulExpressionStatement", + "src": "37453:48:11" + }, + { + "nativeSrc": "37514:26:11", + "nodeType": "YulVariableDeclaration", + "src": "37514:26:11", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "37527:6:11", + "nodeType": "YulIdentifier", + "src": "37527:6:11" + }, + { + "kind": "number", + "nativeSrc": "37535:4:11", + "nodeType": "YulLiteral", + "src": "37535:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "37523:3:11", + "nodeType": "YulIdentifier", + "src": "37523:3:11" + }, + "nativeSrc": "37523:17:11", + "nodeType": "YulFunctionCall", + "src": "37523:17:11" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "37518:1:11", + "nodeType": "YulTypedName", + "src": "37518:1:11", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "37611:537:11", + "nodeType": "YulBlock", + "src": "37611:537:11", + "statements": [ + { + "nativeSrc": "37629:14:11", + "nodeType": "YulAssignment", + "src": "37629:14:11", + "value": { + "arguments": [ + { + "name": "s", + "nativeSrc": "37638:1:11", + "nodeType": "YulIdentifier", + "src": "37638:1:11" + }, + { + "kind": "number", + "nativeSrc": "37641:1:11", + "nodeType": "YulLiteral", + "src": "37641:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "37634:3:11", + "nodeType": "YulIdentifier", + "src": "37634:3:11" + }, + "nativeSrc": "37634:9:11", + "nodeType": "YulFunctionCall", + "src": "37634:9:11" + }, + "variableNames": [ + { + "name": "s", + "nativeSrc": "37629:1:11", + "nodeType": "YulIdentifier", + "src": "37629:1:11" + } + ] + }, + { + "nativeSrc": "37660:28:11", + "nodeType": "YulVariableDeclaration", + "src": "37660:28:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "s", + "nativeSrc": "37679:1:11", + "nodeType": "YulIdentifier", + "src": "37679:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "37673:5:11", + "nodeType": "YulIdentifier", + "src": "37673:5:11" + }, + "nativeSrc": "37673:8:11", + "nodeType": "YulFunctionCall", + "src": "37673:8:11" + }, + { + "kind": "number", + "nativeSrc": "37683:4:11", + "nodeType": "YulLiteral", + "src": "37683:4:11", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "37669:3:11", + "nodeType": "YulIdentifier", + "src": "37669:3:11" + }, + "nativeSrc": "37669:19:11", + "nodeType": "YulFunctionCall", + "src": "37669:19:11" + }, + "variables": [ + { + "name": "c", + "nativeSrc": "37664:1:11", + "nodeType": "YulTypedName", + "src": "37664:1:11", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "37821:252:11", + "nodeType": "YulBlock", + "src": "37821:252:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "37851:1:11", + "nodeType": "YulIdentifier", + "src": "37851:1:11" + }, + { + "kind": "number", + "nativeSrc": "37854:4:11", + "nodeType": "YulLiteral", + "src": "37854:4:11", + "type": "", + "value": "0x25" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "37843:7:11", + "nodeType": "YulIdentifier", + "src": "37843:7:11" + }, + "nativeSrc": "37843:16:11", + "nodeType": "YulFunctionCall", + "src": "37843:16:11" + }, + "nativeSrc": "37843:16:11", + "nodeType": "YulExpressionStatement", + "src": "37843:16:11" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "37900:1:11", + "nodeType": "YulIdentifier", + "src": "37900:1:11" + }, + { + "kind": "number", + "nativeSrc": "37903:1:11", + "nodeType": "YulLiteral", + "src": "37903:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "37896:3:11", + "nodeType": "YulIdentifier", + "src": "37896:3:11" + }, + "nativeSrc": "37896:9:11", + "nodeType": "YulFunctionCall", + "src": "37896:9:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "37921:1:11", + "nodeType": "YulLiteral", + "src": "37921:1:11", + "type": "", + "value": "4" + }, + { + "name": "c", + "nativeSrc": "37924:1:11", + "nodeType": "YulIdentifier", + "src": "37924:1:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "37917:3:11", + "nodeType": "YulIdentifier", + "src": "37917:3:11" + }, + "nativeSrc": "37917:9:11", + "nodeType": "YulFunctionCall", + "src": "37917:9:11" + }, + { + "kind": "number", + "nativeSrc": "37928:2:11", + "nodeType": "YulLiteral", + "src": "37928:2:11", + "type": "", + "value": "15" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "37913:3:11", + "nodeType": "YulIdentifier", + "src": "37913:3:11" + }, + "nativeSrc": "37913:18:11", + "nodeType": "YulFunctionCall", + "src": "37913:18:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "37907:5:11", + "nodeType": "YulIdentifier", + "src": "37907:5:11" + }, + "nativeSrc": "37907:25:11", + "nodeType": "YulFunctionCall", + "src": "37907:25:11" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "37888:7:11", + "nodeType": "YulIdentifier", + "src": "37888:7:11" + }, + "nativeSrc": "37888:45:11", + "nodeType": "YulFunctionCall", + "src": "37888:45:11" + }, + "nativeSrc": "37888:45:11", + "nodeType": "YulExpressionStatement", + "src": "37888:45:11" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "37966:1:11", + "nodeType": "YulIdentifier", + "src": "37966:1:11" + }, + { + "kind": "number", + "nativeSrc": "37969:1:11", + "nodeType": "YulLiteral", + "src": "37969:1:11", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "37962:3:11", + "nodeType": "YulIdentifier", + "src": "37962:3:11" + }, + "nativeSrc": "37962:9:11", + "nodeType": "YulFunctionCall", + "src": "37962:9:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "c", + "nativeSrc": "37983:1:11", + "nodeType": "YulIdentifier", + "src": "37983:1:11" + }, + { + "kind": "number", + "nativeSrc": "37986:2:11", + "nodeType": "YulLiteral", + "src": "37986:2:11", + "type": "", + "value": "15" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "37979:3:11", + "nodeType": "YulIdentifier", + "src": "37979:3:11" + }, + "nativeSrc": "37979:10:11", + "nodeType": "YulFunctionCall", + "src": "37979:10:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "37973:5:11", + "nodeType": "YulIdentifier", + "src": "37973:5:11" + }, + "nativeSrc": "37973:17:11", + "nodeType": "YulFunctionCall", + "src": "37973:17:11" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "37954:7:11", + "nodeType": "YulIdentifier", + "src": "37954:7:11" + }, + "nativeSrc": "37954:37:11", + "nodeType": "YulFunctionCall", + "src": "37954:37:11" + }, + "nativeSrc": "37954:37:11", + "nodeType": "YulExpressionStatement", + "src": "37954:37:11" + }, + { + "nativeSrc": "38012:14:11", + "nodeType": "YulAssignment", + "src": "38012:14:11", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "38021:1:11", + "nodeType": "YulIdentifier", + "src": "38021:1:11" + }, + { + "kind": "number", + "nativeSrc": "38024:1:11", + "nodeType": "YulLiteral", + "src": "38024:1:11", + "type": "", + "value": "3" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "38017:3:11", + "nodeType": "YulIdentifier", + "src": "38017:3:11" + }, + "nativeSrc": "38017:9:11", + "nodeType": "YulFunctionCall", + "src": "38017:9:11" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "38012:1:11", + "nodeType": "YulIdentifier", + "src": "38012:1:11" + } + ] + }, + { + "nativeSrc": "38047:8:11", + "nodeType": "YulContinue", + "src": "38047:8:11" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "37773:1:11", + "nodeType": "YulLiteral", + "src": "37773:1:11", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "name": "c", + "nativeSrc": "37780:1:11", + "nodeType": "YulIdentifier", + "src": "37780:1:11" + }, + { + "kind": "number", + "nativeSrc": "37783:34:11", + "nodeType": "YulLiteral", + "src": "37783:34:11", + "type": "", + "value": "0x47fffffe87fffffe03ff678200000000" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "37776:3:11", + "nodeType": "YulIdentifier", + "src": "37776:3:11" + }, + "nativeSrc": "37776:42:11", + "nodeType": "YulFunctionCall", + "src": "37776:42:11" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "37769:3:11", + "nodeType": "YulIdentifier", + "src": "37769:3:11" + }, + "nativeSrc": "37769:50:11", + "nodeType": "YulFunctionCall", + "src": "37769:50:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "37762:6:11", + "nodeType": "YulIdentifier", + "src": "37762:6:11" + }, + "nativeSrc": "37762:58:11", + "nodeType": "YulFunctionCall", + "src": "37762:58:11" + }, + "nativeSrc": "37759:314:11", + "nodeType": "YulIf", + "src": "37759:314:11" + }, + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "38098:1:11", + "nodeType": "YulIdentifier", + "src": "38098:1:11" + }, + { + "name": "c", + "nativeSrc": "38101:1:11", + "nodeType": "YulIdentifier", + "src": "38101:1:11" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "38090:7:11", + "nodeType": "YulIdentifier", + "src": "38090:7:11" + }, + "nativeSrc": "38090:13:11", + "nodeType": "YulFunctionCall", + "src": "38090:13:11" + }, + "nativeSrc": "38090:13:11", + "nodeType": "YulExpressionStatement", + "src": "38090:13:11" + }, + { + "nativeSrc": "38120:14:11", + "nodeType": "YulAssignment", + "src": "38120:14:11", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "38129:1:11", + "nodeType": "YulIdentifier", + "src": "38129:1:11" + }, + { + "kind": "number", + "nativeSrc": "38132:1:11", + "nodeType": "YulLiteral", + "src": "38132:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "38125:3:11", + "nodeType": "YulIdentifier", + "src": "38125:3:11" + }, + "nativeSrc": "38125:9:11", + "nodeType": "YulFunctionCall", + "src": "38125:9:11" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "38120:1:11", + "nodeType": "YulIdentifier", + "src": "38120:1:11" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "s", + "nativeSrc": "37599:1:11", + "nodeType": "YulIdentifier", + "src": "37599:1:11" + }, + { + "name": "end", + "nativeSrc": "37602:3:11", + "nodeType": "YulIdentifier", + "src": "37602:3:11" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "37596:2:11", + "nodeType": "YulIdentifier", + "src": "37596:2:11" + }, + "nativeSrc": "37596:10:11", + "nodeType": "YulFunctionCall", + "src": "37596:10:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "37589:6:11", + "nodeType": "YulIdentifier", + "src": "37589:6:11" + }, + "nativeSrc": "37589:18:11", + "nodeType": "YulFunctionCall", + "src": "37589:18:11" + }, + "nativeSrc": "37553:595:11", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "37608:2:11", + "nodeType": "YulBlock", + "src": "37608:2:11", + "statements": [] + }, + "pre": { + "nativeSrc": "37557:31:11", + "nodeType": "YulBlock", + "src": "37557:31:11", + "statements": [ + { + "nativeSrc": "37559:27:11", + "nodeType": "YulVariableDeclaration", + "src": "37559:27:11", + "value": { + "arguments": [ + { + "name": "s", + "nativeSrc": "37574:1:11", + "nodeType": "YulIdentifier", + "src": "37574:1:11" + }, + { + "arguments": [ + { + "name": "s", + "nativeSrc": "37583:1:11", + "nodeType": "YulIdentifier", + "src": "37583:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "37577:5:11", + "nodeType": "YulIdentifier", + "src": "37577:5:11" + }, + "nativeSrc": "37577:8:11", + "nodeType": "YulFunctionCall", + "src": "37577:8:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "37570:3:11", + "nodeType": "YulIdentifier", + "src": "37570:3:11" + }, + "nativeSrc": "37570:16:11", + "nodeType": "YulFunctionCall", + "src": "37570:16:11" + }, + "variables": [ + { + "name": "end", + "nativeSrc": "37563:3:11", + "nodeType": "YulTypedName", + "src": "37563:3:11", + "type": "" + } + ] + } + ] + }, + "src": "37553:595:11" + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "38168:6:11", + "nodeType": "YulIdentifier", + "src": "38168:6:11" + }, + { + "arguments": [ + { + "name": "o", + "nativeSrc": "38180:1:11", + "nodeType": "YulIdentifier", + "src": "38180:1:11" + }, + { + "arguments": [ + { + "name": "result", + "nativeSrc": "38187:6:11", + "nodeType": "YulIdentifier", + "src": "38187:6:11" + }, + { + "kind": "number", + "nativeSrc": "38195:4:11", + "nodeType": "YulLiteral", + "src": "38195:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "38183:3:11", + "nodeType": "YulIdentifier", + "src": "38183:3:11" + }, + "nativeSrc": "38183:17:11", + "nodeType": "YulFunctionCall", + "src": "38183:17:11" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "38176:3:11", + "nodeType": "YulIdentifier", + "src": "38176:3:11" + }, + "nativeSrc": "38176:25:11", + "nodeType": "YulFunctionCall", + "src": "38176:25:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "38161:6:11", + "nodeType": "YulIdentifier", + "src": "38161:6:11" + }, + "nativeSrc": "38161:41:11", + "nodeType": "YulFunctionCall", + "src": "38161:41:11" + }, + "nativeSrc": "38161:41:11", + "nodeType": "YulExpressionStatement", + "src": "38161:41:11" + }, + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "38243:1:11", + "nodeType": "YulIdentifier", + "src": "38243:1:11" + }, + { + "kind": "number", + "nativeSrc": "38246:1:11", + "nodeType": "YulLiteral", + "src": "38246:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "38236:6:11", + "nodeType": "YulIdentifier", + "src": "38236:6:11" + }, + "nativeSrc": "38236:12:11", + "nodeType": "YulFunctionCall", + "src": "38236:12:11" + }, + "nativeSrc": "38236:12:11", + "nodeType": "YulExpressionStatement", + "src": "38236:12:11" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "38306:4:11", + "nodeType": "YulLiteral", + "src": "38306:4:11", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "o", + "nativeSrc": "38316:1:11", + "nodeType": "YulIdentifier", + "src": "38316:1:11" + }, + { + "kind": "number", + "nativeSrc": "38319:4:11", + "nodeType": "YulLiteral", + "src": "38319:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "38312:3:11", + "nodeType": "YulIdentifier", + "src": "38312:3:11" + }, + "nativeSrc": "38312:12:11", + "nodeType": "YulFunctionCall", + "src": "38312:12:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "38299:6:11", + "nodeType": "YulIdentifier", + "src": "38299:6:11" + }, + "nativeSrc": "38299:26:11", + "nodeType": "YulFunctionCall", + "src": "38299:26:11" + }, + "nativeSrc": "38299:26:11", + "nodeType": "YulExpressionStatement", + "src": "38299:26:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6041, + "isOffset": false, + "isSlot": false, + "src": "37284:6:11", + "valueSize": 1 + }, + { + "declaration": 6041, + "isOffset": false, + "isSlot": false, + "src": "37527:6:11", + "valueSize": 1 + }, + { + "declaration": 6041, + "isOffset": false, + "isSlot": false, + "src": "38168:6:11", + "valueSize": 1 + }, + { + "declaration": 6041, + "isOffset": false, + "isSlot": false, + "src": "38187:6:11", + "valueSize": 1 + }, + { + "declaration": 6038, + "isOffset": false, + "isSlot": false, + "src": "37574:1:11", + "valueSize": 1 + }, + { + "declaration": 6038, + "isOffset": false, + "isSlot": false, + "src": "37583:1:11", + "valueSize": 1 + }, + { + "declaration": 6038, + "isOffset": false, + "isSlot": false, + "src": "37599:1:11", + "valueSize": 1 + }, + { + "declaration": 6038, + "isOffset": false, + "isSlot": false, + "src": "37629:1:11", + "valueSize": 1 + }, + { + "declaration": 6038, + "isOffset": false, + "isSlot": false, + "src": "37638:1:11", + "valueSize": 1 + }, + { + "declaration": 6038, + "isOffset": false, + "isSlot": false, + "src": "37679:1:11", + "valueSize": 1 + } + ], + "id": 6043, + "nodeType": "InlineAssembly", + "src": "37261:1094:11" + } + ] + }, + "documentation": { + "id": 6036, + "nodeType": "StructuredDocumentation", + "src": "36768:345:11", + "text": "@dev Encodes `s` so that it can be safely used in a URI,\n just like `encodeURIComponent` in JavaScript.\n See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent\n See: https://datatracker.ietf.org/doc/html/rfc2396\n See: https://datatracker.ietf.org/doc/html/rfc3986" + }, + "id": 6045, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "encodeURIComponent", + "nameLocation": "37127:18:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6039, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6038, + "mutability": "mutable", + "name": "s", + "nameLocation": "37160:1:11", + "nodeType": "VariableDeclaration", + "scope": 6045, + "src": "37146:15:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6037, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "37146:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "37145:17:11" + }, + "returnParameters": { + "id": 6042, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6041, + "mutability": "mutable", + "name": "result", + "nameLocation": "37200:6:11", + "nodeType": "VariableDeclaration", + "scope": 6045, + "src": "37186:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6040, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "37186:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "37185:22:11" + }, + "scope": 6145, + "src": "37118:1243:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6056, + "nodeType": "Block", + "src": "38494:174:11", + "statements": [ + { + "AST": { + "nativeSrc": "38556:106:11", + "nodeType": "YulBlock", + "src": "38556:106:11", + "statements": [ + { + "nativeSrc": "38570:82:11", + "nodeType": "YulAssignment", + "src": "38570:82:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "a", + "nativeSrc": "38597:1:11", + "nodeType": "YulIdentifier", + "src": "38597:1:11" + }, + { + "kind": "number", + "nativeSrc": "38600:4:11", + "nodeType": "YulLiteral", + "src": "38600:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "38593:3:11", + "nodeType": "YulIdentifier", + "src": "38593:3:11" + }, + "nativeSrc": "38593:12:11", + "nodeType": "YulFunctionCall", + "src": "38593:12:11" + }, + { + "arguments": [ + { + "name": "a", + "nativeSrc": "38613:1:11", + "nodeType": "YulIdentifier", + "src": "38613:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "38607:5:11", + "nodeType": "YulIdentifier", + "src": "38607:5:11" + }, + "nativeSrc": "38607:8:11", + "nodeType": "YulFunctionCall", + "src": "38607:8:11" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "38583:9:11", + "nodeType": "YulIdentifier", + "src": "38583:9:11" + }, + "nativeSrc": "38583:33:11", + "nodeType": "YulFunctionCall", + "src": "38583:33:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "b", + "nativeSrc": "38632:1:11", + "nodeType": "YulIdentifier", + "src": "38632:1:11" + }, + { + "kind": "number", + "nativeSrc": "38635:4:11", + "nodeType": "YulLiteral", + "src": "38635:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "38628:3:11", + "nodeType": "YulIdentifier", + "src": "38628:3:11" + }, + "nativeSrc": "38628:12:11", + "nodeType": "YulFunctionCall", + "src": "38628:12:11" + }, + { + "arguments": [ + { + "name": "b", + "nativeSrc": "38648:1:11", + "nodeType": "YulIdentifier", + "src": "38648:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "38642:5:11", + "nodeType": "YulIdentifier", + "src": "38642:5:11" + }, + "nativeSrc": "38642:8:11", + "nodeType": "YulFunctionCall", + "src": "38642:8:11" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "38618:9:11", + "nodeType": "YulIdentifier", + "src": "38618:9:11" + }, + "nativeSrc": "38618:33:11", + "nodeType": "YulFunctionCall", + "src": "38618:33:11" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "38580:2:11", + "nodeType": "YulIdentifier", + "src": "38580:2:11" + }, + "nativeSrc": "38580:72:11", + "nodeType": "YulFunctionCall", + "src": "38580:72:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "38570:6:11", + "nodeType": "YulIdentifier", + "src": "38570:6:11" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6048, + "isOffset": false, + "isSlot": false, + "src": "38597:1:11", + "valueSize": 1 + }, + { + "declaration": 6048, + "isOffset": false, + "isSlot": false, + "src": "38613:1:11", + "valueSize": 1 + }, + { + "declaration": 6050, + "isOffset": false, + "isSlot": false, + "src": "38632:1:11", + "valueSize": 1 + }, + { + "declaration": 6050, + "isOffset": false, + "isSlot": false, + "src": "38648:1:11", + "valueSize": 1 + }, + { + "declaration": 6053, + "isOffset": false, + "isSlot": false, + "src": "38570:6:11", + "valueSize": 1 + } + ], + "id": 6055, + "nodeType": "InlineAssembly", + "src": "38547:115:11" + } + ] + }, + "documentation": { + "id": 6046, + "nodeType": "StructuredDocumentation", + "src": "38367:40:11", + "text": "@dev Returns whether `a` equals `b`." + }, + "id": 6057, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "eq", + "nameLocation": "38421:2:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6051, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6048, + "mutability": "mutable", + "name": "a", + "nameLocation": "38438:1:11", + "nodeType": "VariableDeclaration", + "scope": 6057, + "src": "38424:15:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6047, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "38424:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6050, + "mutability": "mutable", + "name": "b", + "nameLocation": "38455:1:11", + "nodeType": "VariableDeclaration", + "scope": 6057, + "src": "38441:15:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6049, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "38441:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "38423:34:11" + }, + "returnParameters": { + "id": 6054, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6053, + "mutability": "mutable", + "name": "result", + "nameLocation": "38486:6:11", + "nodeType": "VariableDeclaration", + "scope": 6057, + "src": "38481:11:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6052, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "38481:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "38480:13:11" + }, + "scope": 6145, + "src": "38412:256:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6068, + "nodeType": "Block", + "src": "38841:774:11", + "statements": [ + { + "AST": { + "nativeSrc": "38903:706:11", + "nodeType": "YulBlock", + "src": "38903:706:11", + "statements": [ + { + "nativeSrc": "38995:46:11", + "nodeType": "YulVariableDeclaration", + "src": "38995:46:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "39012:1:11", + "nodeType": "YulLiteral", + "src": "39012:1:11", + "type": "", + "value": "7" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "b", + "nativeSrc": "39030:1:11", + "nodeType": "YulIdentifier", + "src": "39030:1:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "39023:6:11", + "nodeType": "YulIdentifier", + "src": "39023:6:11" + }, + "nativeSrc": "39023:9:11", + "nodeType": "YulFunctionCall", + "src": "39023:9:11" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "39019:3:11", + "nodeType": "YulIdentifier", + "src": "39019:3:11" + }, + "nativeSrc": "39019:14:11", + "nodeType": "YulFunctionCall", + "src": "39019:14:11" + }, + { + "kind": "number", + "nativeSrc": "39035:3:11", + "nodeType": "YulLiteral", + "src": "39035:3:11", + "type": "", + "value": "255" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "39015:3:11", + "nodeType": "YulIdentifier", + "src": "39015:3:11" + }, + "nativeSrc": "39015:24:11", + "nodeType": "YulFunctionCall", + "src": "39015:24:11" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "39008:3:11", + "nodeType": "YulIdentifier", + "src": "39008:3:11" + }, + "nativeSrc": "39008:32:11", + "nodeType": "YulFunctionCall", + "src": "39008:32:11" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "39004:3:11", + "nodeType": "YulIdentifier", + "src": "39004:3:11" + }, + "nativeSrc": "39004:37:11", + "nodeType": "YulFunctionCall", + "src": "39004:37:11" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "38999:1:11", + "nodeType": "YulTypedName", + "src": "38999:1:11", + "type": "" + } + ] + }, + { + "nativeSrc": "39071:45:11", + "nodeType": "YulVariableDeclaration", + "src": "39071:45:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "39087:1:11", + "nodeType": "YulIdentifier", + "src": "39087:1:11" + }, + { + "arguments": [ + { + "name": "b", + "nativeSrc": "39093:1:11", + "nodeType": "YulIdentifier", + "src": "39093:1:11" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "39100:1:11", + "nodeType": "YulIdentifier", + "src": "39100:1:11" + }, + { + "arguments": [ + { + "name": "b", + "nativeSrc": "39107:1:11", + "nodeType": "YulIdentifier", + "src": "39107:1:11" + }, + { + "name": "m", + "nativeSrc": "39110:1:11", + "nodeType": "YulIdentifier", + "src": "39110:1:11" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "39103:3:11", + "nodeType": "YulIdentifier", + "src": "39103:3:11" + }, + "nativeSrc": "39103:9:11", + "nodeType": "YulFunctionCall", + "src": "39103:9:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "39096:3:11", + "nodeType": "YulIdentifier", + "src": "39096:3:11" + }, + "nativeSrc": "39096:17:11", + "nodeType": "YulFunctionCall", + "src": "39096:17:11" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "39090:2:11", + "nodeType": "YulIdentifier", + "src": "39090:2:11" + }, + "nativeSrc": "39090:24:11", + "nodeType": "YulFunctionCall", + "src": "39090:24:11" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "39084:2:11", + "nodeType": "YulIdentifier", + "src": "39084:2:11" + }, + "nativeSrc": "39084:31:11", + "nodeType": "YulFunctionCall", + "src": "39084:31:11" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "39080:3:11", + "nodeType": "YulIdentifier", + "src": "39080:3:11" + }, + "nativeSrc": "39080:36:11", + "nodeType": "YulFunctionCall", + "src": "39080:36:11" + }, + "variables": [ + { + "name": "x", + "nativeSrc": "39075:1:11", + "nodeType": "YulTypedName", + "src": "39075:1:11", + "type": "" + } + ] + }, + { + "nativeSrc": "39129:44:11", + "nodeType": "YulVariableDeclaration", + "src": "39129:44:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "39142:1:11", + "nodeType": "YulLiteral", + "src": "39142:1:11", + "type": "", + "value": "7" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "39163:3:11", + "nodeType": "YulLiteral", + "src": "39163:3:11", + "type": "", + "value": "128" + }, + { + "name": "x", + "nativeSrc": "39168:1:11", + "nodeType": "YulIdentifier", + "src": "39168:1:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "39159:3:11", + "nodeType": "YulIdentifier", + "src": "39159:3:11" + }, + "nativeSrc": "39159:11:11", + "nodeType": "YulFunctionCall", + "src": "39159:11:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "39152:6:11", + "nodeType": "YulIdentifier", + "src": "39152:6:11" + }, + "nativeSrc": "39152:19:11", + "nodeType": "YulFunctionCall", + "src": "39152:19:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "39145:6:11", + "nodeType": "YulIdentifier", + "src": "39145:6:11" + }, + "nativeSrc": "39145:27:11", + "nodeType": "YulFunctionCall", + "src": "39145:27:11" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "39138:3:11", + "nodeType": "YulIdentifier", + "src": "39138:3:11" + }, + "nativeSrc": "39138:35:11", + "nodeType": "YulFunctionCall", + "src": "39138:35:11" + }, + "variables": [ + { + "name": "r", + "nativeSrc": "39133:1:11", + "nodeType": "YulTypedName", + "src": "39133:1:11", + "type": "" + } + ] + }, + { + "nativeSrc": "39186:54:11", + "nodeType": "YulAssignment", + "src": "39186:54:11", + "value": { + "arguments": [ + { + "name": "r", + "nativeSrc": "39194:1:11", + "nodeType": "YulIdentifier", + "src": "39194:1:11" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "39201:1:11", + "nodeType": "YulLiteral", + "src": "39201:1:11", + "type": "", + "value": "6" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "39222:2:11", + "nodeType": "YulLiteral", + "src": "39222:2:11", + "type": "", + "value": "64" + }, + { + "arguments": [ + { + "name": "r", + "nativeSrc": "39230:1:11", + "nodeType": "YulIdentifier", + "src": "39230:1:11" + }, + { + "name": "x", + "nativeSrc": "39233:1:11", + "nodeType": "YulIdentifier", + "src": "39233:1:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "39226:3:11", + "nodeType": "YulIdentifier", + "src": "39226:3:11" + }, + "nativeSrc": "39226:9:11", + "nodeType": "YulFunctionCall", + "src": "39226:9:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "39218:3:11", + "nodeType": "YulIdentifier", + "src": "39218:3:11" + }, + "nativeSrc": "39218:18:11", + "nodeType": "YulFunctionCall", + "src": "39218:18:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "39211:6:11", + "nodeType": "YulIdentifier", + "src": "39211:6:11" + }, + "nativeSrc": "39211:26:11", + "nodeType": "YulFunctionCall", + "src": "39211:26:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "39204:6:11", + "nodeType": "YulIdentifier", + "src": "39204:6:11" + }, + "nativeSrc": "39204:34:11", + "nodeType": "YulFunctionCall", + "src": "39204:34:11" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "39197:3:11", + "nodeType": "YulIdentifier", + "src": "39197:3:11" + }, + "nativeSrc": "39197:42:11", + "nodeType": "YulFunctionCall", + "src": "39197:42:11" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "39191:2:11", + "nodeType": "YulIdentifier", + "src": "39191:2:11" + }, + "nativeSrc": "39191:49:11", + "nodeType": "YulFunctionCall", + "src": "39191:49:11" + }, + "variableNames": [ + { + "name": "r", + "nativeSrc": "39186:1:11", + "nodeType": "YulIdentifier", + "src": "39186:1:11" + } + ] + }, + { + "nativeSrc": "39253:45:11", + "nodeType": "YulAssignment", + "src": "39253:45:11", + "value": { + "arguments": [ + { + "name": "r", + "nativeSrc": "39261:1:11", + "nodeType": "YulIdentifier", + "src": "39261:1:11" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "39268:1:11", + "nodeType": "YulLiteral", + "src": "39268:1:11", + "type": "", + "value": "5" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "39274:10:11", + "nodeType": "YulLiteral", + "src": "39274:10:11", + "type": "", + "value": "0xffffffff" + }, + { + "arguments": [ + { + "name": "r", + "nativeSrc": "39290:1:11", + "nodeType": "YulIdentifier", + "src": "39290:1:11" + }, + { + "name": "x", + "nativeSrc": "39293:1:11", + "nodeType": "YulIdentifier", + "src": "39293:1:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "39286:3:11", + "nodeType": "YulIdentifier", + "src": "39286:3:11" + }, + "nativeSrc": "39286:9:11", + "nodeType": "YulFunctionCall", + "src": "39286:9:11" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "39271:2:11", + "nodeType": "YulIdentifier", + "src": "39271:2:11" + }, + "nativeSrc": "39271:25:11", + "nodeType": "YulFunctionCall", + "src": "39271:25:11" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "39264:3:11", + "nodeType": "YulIdentifier", + "src": "39264:3:11" + }, + "nativeSrc": "39264:33:11", + "nodeType": "YulFunctionCall", + "src": "39264:33:11" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "39258:2:11", + "nodeType": "YulIdentifier", + "src": "39258:2:11" + }, + "nativeSrc": "39258:40:11", + "nodeType": "YulFunctionCall", + "src": "39258:40:11" + }, + "variableNames": [ + { + "name": "r", + "nativeSrc": "39253:1:11", + "nodeType": "YulIdentifier", + "src": "39253:1:11" + } + ] + }, + { + "nativeSrc": "39311:41:11", + "nodeType": "YulAssignment", + "src": "39311:41:11", + "value": { + "arguments": [ + { + "name": "r", + "nativeSrc": "39319:1:11", + "nodeType": "YulIdentifier", + "src": "39319:1:11" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "39326:1:11", + "nodeType": "YulLiteral", + "src": "39326:1:11", + "type": "", + "value": "4" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "39332:6:11", + "nodeType": "YulLiteral", + "src": "39332:6:11", + "type": "", + "value": "0xffff" + }, + { + "arguments": [ + { + "name": "r", + "nativeSrc": "39344:1:11", + "nodeType": "YulIdentifier", + "src": "39344:1:11" + }, + { + "name": "x", + "nativeSrc": "39347:1:11", + "nodeType": "YulIdentifier", + "src": "39347:1:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "39340:3:11", + "nodeType": "YulIdentifier", + "src": "39340:3:11" + }, + "nativeSrc": "39340:9:11", + "nodeType": "YulFunctionCall", + "src": "39340:9:11" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "39329:2:11", + "nodeType": "YulIdentifier", + "src": "39329:2:11" + }, + "nativeSrc": "39329:21:11", + "nodeType": "YulFunctionCall", + "src": "39329:21:11" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "39322:3:11", + "nodeType": "YulIdentifier", + "src": "39322:3:11" + }, + "nativeSrc": "39322:29:11", + "nodeType": "YulFunctionCall", + "src": "39322:29:11" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "39316:2:11", + "nodeType": "YulIdentifier", + "src": "39316:2:11" + }, + "nativeSrc": "39316:36:11", + "nodeType": "YulFunctionCall", + "src": "39316:36:11" + }, + "variableNames": [ + { + "name": "r", + "nativeSrc": "39311:1:11", + "nodeType": "YulIdentifier", + "src": "39311:1:11" + } + ] + }, + { + "nativeSrc": "39365:39:11", + "nodeType": "YulAssignment", + "src": "39365:39:11", + "value": { + "arguments": [ + { + "name": "r", + "nativeSrc": "39373:1:11", + "nodeType": "YulIdentifier", + "src": "39373:1:11" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "39380:1:11", + "nodeType": "YulLiteral", + "src": "39380:1:11", + "type": "", + "value": "3" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "39386:4:11", + "nodeType": "YulLiteral", + "src": "39386:4:11", + "type": "", + "value": "0xff" + }, + { + "arguments": [ + { + "name": "r", + "nativeSrc": "39396:1:11", + "nodeType": "YulIdentifier", + "src": "39396:1:11" + }, + { + "name": "x", + "nativeSrc": "39399:1:11", + "nodeType": "YulIdentifier", + "src": "39399:1:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "39392:3:11", + "nodeType": "YulIdentifier", + "src": "39392:3:11" + }, + "nativeSrc": "39392:9:11", + "nodeType": "YulFunctionCall", + "src": "39392:9:11" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "39383:2:11", + "nodeType": "YulIdentifier", + "src": "39383:2:11" + }, + "nativeSrc": "39383:19:11", + "nodeType": "YulFunctionCall", + "src": "39383:19:11" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "39376:3:11", + "nodeType": "YulIdentifier", + "src": "39376:3:11" + }, + "nativeSrc": "39376:27:11", + "nodeType": "YulFunctionCall", + "src": "39376:27:11" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "39370:2:11", + "nodeType": "YulIdentifier", + "src": "39370:2:11" + }, + "nativeSrc": "39370:34:11", + "nodeType": "YulFunctionCall", + "src": "39370:34:11" + }, + "variableNames": [ + { + "name": "r", + "nativeSrc": "39365:1:11", + "nodeType": "YulIdentifier", + "src": "39365:1:11" + } + ] + }, + { + "nativeSrc": "39460:139:11", + "nodeType": "YulAssignment", + "src": "39460:139:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "a", + "nativeSrc": "39482:1:11", + "nodeType": "YulIdentifier", + "src": "39482:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "39476:5:11", + "nodeType": "YulIdentifier", + "src": "39476:5:11" + }, + "nativeSrc": "39476:8:11", + "nodeType": "YulFunctionCall", + "src": "39476:8:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "x", + "nativeSrc": "39497:1:11", + "nodeType": "YulIdentifier", + "src": "39497:1:11" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "39490:6:11", + "nodeType": "YulIdentifier", + "src": "39490:6:11" + }, + "nativeSrc": "39490:9:11", + "nodeType": "YulFunctionCall", + "src": "39490:9:11" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "39505:2:11", + "nodeType": "YulLiteral", + "src": "39505:2:11", + "type": "", + "value": "31" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "39513:1:11", + "nodeType": "YulLiteral", + "src": "39513:1:11", + "type": "", + "value": "3" + }, + { + "name": "r", + "nativeSrc": "39516:1:11", + "nodeType": "YulIdentifier", + "src": "39516:1:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "39509:3:11", + "nodeType": "YulIdentifier", + "src": "39509:3:11" + }, + "nativeSrc": "39509:9:11", + "nodeType": "YulFunctionCall", + "src": "39509:9:11" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "39501:3:11", + "nodeType": "YulIdentifier", + "src": "39501:3:11" + }, + "nativeSrc": "39501:18:11", + "nodeType": "YulFunctionCall", + "src": "39501:18:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "39486:3:11", + "nodeType": "YulIdentifier", + "src": "39486:3:11" + }, + "nativeSrc": "39486:34:11", + "nodeType": "YulFunctionCall", + "src": "39486:34:11" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "39473:2:11", + "nodeType": "YulIdentifier", + "src": "39473:2:11" + }, + "nativeSrc": "39473:48:11", + "nodeType": "YulFunctionCall", + "src": "39473:48:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "39551:1:11", + "nodeType": "YulLiteral", + "src": "39551:1:11", + "type": "", + "value": "8" + }, + { + "name": "r", + "nativeSrc": "39554:1:11", + "nodeType": "YulIdentifier", + "src": "39554:1:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "39547:3:11", + "nodeType": "YulIdentifier", + "src": "39547:3:11" + }, + "nativeSrc": "39547:9:11", + "nodeType": "YulFunctionCall", + "src": "39547:9:11" + }, + { + "name": "b", + "nativeSrc": "39558:1:11", + "nodeType": "YulIdentifier", + "src": "39558:1:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "39543:3:11", + "nodeType": "YulIdentifier", + "src": "39543:3:11" + }, + "nativeSrc": "39543:17:11", + "nodeType": "YulFunctionCall", + "src": "39543:17:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "39570:1:11", + "nodeType": "YulLiteral", + "src": "39570:1:11", + "type": "", + "value": "8" + }, + { + "name": "r", + "nativeSrc": "39573:1:11", + "nodeType": "YulIdentifier", + "src": "39573:1:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "39566:3:11", + "nodeType": "YulIdentifier", + "src": "39566:3:11" + }, + "nativeSrc": "39566:9:11", + "nodeType": "YulFunctionCall", + "src": "39566:9:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "a", + "nativeSrc": "39587:1:11", + "nodeType": "YulIdentifier", + "src": "39587:1:11" + }, + { + "kind": "number", + "nativeSrc": "39590:4:11", + "nodeType": "YulLiteral", + "src": "39590:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "39583:3:11", + "nodeType": "YulIdentifier", + "src": "39583:3:11" + }, + "nativeSrc": "39583:12:11", + "nodeType": "YulFunctionCall", + "src": "39583:12:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "39577:5:11", + "nodeType": "YulIdentifier", + "src": "39577:5:11" + }, + "nativeSrc": "39577:19:11", + "nodeType": "YulFunctionCall", + "src": "39577:19:11" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "39562:3:11", + "nodeType": "YulIdentifier", + "src": "39562:3:11" + }, + "nativeSrc": "39562:35:11", + "nodeType": "YulFunctionCall", + "src": "39562:35:11" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "39539:3:11", + "nodeType": "YulIdentifier", + "src": "39539:3:11" + }, + "nativeSrc": "39539:59:11", + "nodeType": "YulFunctionCall", + "src": "39539:59:11" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "39470:2:11", + "nodeType": "YulIdentifier", + "src": "39470:2:11" + }, + "nativeSrc": "39470:129:11", + "nodeType": "YulFunctionCall", + "src": "39470:129:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "39460:6:11", + "nodeType": "YulIdentifier", + "src": "39460:6:11" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6060, + "isOffset": false, + "isSlot": false, + "src": "39482:1:11", + "valueSize": 1 + }, + { + "declaration": 6060, + "isOffset": false, + "isSlot": false, + "src": "39587:1:11", + "valueSize": 1 + }, + { + "declaration": 6062, + "isOffset": false, + "isSlot": false, + "src": "39030:1:11", + "valueSize": 1 + }, + { + "declaration": 6062, + "isOffset": false, + "isSlot": false, + "src": "39093:1:11", + "valueSize": 1 + }, + { + "declaration": 6062, + "isOffset": false, + "isSlot": false, + "src": "39107:1:11", + "valueSize": 1 + }, + { + "declaration": 6062, + "isOffset": false, + "isSlot": false, + "src": "39558:1:11", + "valueSize": 1 + }, + { + "declaration": 6065, + "isOffset": false, + "isSlot": false, + "src": "39460:6:11", + "valueSize": 1 + } + ], + "id": 6067, + "nodeType": "InlineAssembly", + "src": "38894:715:11" + } + ] + }, + "documentation": { + "id": 6058, + "nodeType": "StructuredDocumentation", + "src": "38674:85:11", + "text": "@dev Returns whether `a` equals `b`, where `b` is a null-terminated small string." + }, + "id": 6069, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "eqs", + "nameLocation": "38773:3:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6063, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6060, + "mutability": "mutable", + "name": "a", + "nameLocation": "38791:1:11", + "nodeType": "VariableDeclaration", + "scope": 6069, + "src": "38777:15:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6059, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "38777:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6062, + "mutability": "mutable", + "name": "b", + "nameLocation": "38802:1:11", + "nodeType": "VariableDeclaration", + "scope": 6069, + "src": "38794:9:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6061, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "38794:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "38776:28:11" + }, + "returnParameters": { + "id": 6066, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6065, + "mutability": "mutable", + "name": "result", + "nameLocation": "38833:6:11", + "nodeType": "VariableDeclaration", + "scope": 6069, + "src": "38828:11:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6064, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "38828:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "38827:13:11" + }, + "scope": 6145, + "src": "38764:851:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6091, + "nodeType": "Block", + "src": "39837:56:11", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 6083, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6072, + "src": "39873:1:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 6082, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "39867:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 6081, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "39867:5:11", + "typeDescriptions": {} + } + }, + "id": 6084, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "39867:8:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "arguments": [ + { + "id": 6087, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6074, + "src": "39883:1:11", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 6086, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "39877:5:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 6085, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "39877:5:11", + "typeDescriptions": {} + } + }, + "id": 6088, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "39877:8:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 6079, + "name": "LibBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "39854:8:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibBytes_$3089_$", + "typeString": "type(library LibBytes)" + } + }, + "id": 6080, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "39863:3:11", + "memberName": "cmp", + "nodeType": "MemberAccess", + "referencedDeclaration": 3003, + "src": "39854:12:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_int256_$", + "typeString": "function (bytes memory,bytes memory) pure returns (int256)" + } + }, + "id": 6089, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "39854:32:11", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "functionReturnParameters": 6078, + "id": 6090, + "nodeType": "Return", + "src": "39847:39:11" + } + ] + }, + "documentation": { + "id": 6070, + "nodeType": "StructuredDocumentation", + "src": "39621:133:11", + "text": "@dev Returns 0 if `a == b`, -1 if `a < b`, +1 if `a > b`.\n If `a` == b[:a.length]`, and `a.length < b.length`, returns -1." + }, + "id": 6092, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "cmp", + "nameLocation": "39768:3:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6075, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6072, + "mutability": "mutable", + "name": "a", + "nameLocation": "39786:1:11", + "nodeType": "VariableDeclaration", + "scope": 6092, + "src": "39772:15:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6071, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "39772:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6074, + "mutability": "mutable", + "name": "b", + "nameLocation": "39803:1:11", + "nodeType": "VariableDeclaration", + "scope": 6092, + "src": "39789:15:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6073, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "39789:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "39771:34:11" + }, + "returnParameters": { + "id": 6078, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6077, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6092, + "src": "39829:6:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 6076, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "39829:6:11", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "39828:8:11" + }, + "scope": 6145, + "src": "39759:134:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6101, + "nodeType": "Block", + "src": "40114:573:11", + "statements": [ + { + "AST": { + "nativeSrc": "40176:505:11", + "nodeType": "YulBlock", + "src": "40176:505:11", + "statements": [ + { + "nativeSrc": "40322:349:11", + "nodeType": "YulAssignment", + "src": "40322:349:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "a", + "nativeSrc": "40437:1:11", + "nodeType": "YulIdentifier", + "src": "40437:1:11" + }, + { + "kind": "number", + "nativeSrc": "40440:4:11", + "nodeType": "YulLiteral", + "src": "40440:4:11", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "40433:3:11", + "nodeType": "YulIdentifier", + "src": "40433:3:11" + }, + "nativeSrc": "40433:12:11", + "nodeType": "YulFunctionCall", + "src": "40433:12:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "40427:5:11", + "nodeType": "YulIdentifier", + "src": "40427:5:11" + }, + "nativeSrc": "40427:19:11", + "nodeType": "YulFunctionCall", + "src": "40427:19:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "a", + "nativeSrc": "40640:1:11", + "nodeType": "YulIdentifier", + "src": "40640:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "40634:5:11", + "nodeType": "YulIdentifier", + "src": "40634:5:11" + }, + "nativeSrc": "40634:8:11", + "nodeType": "YulFunctionCall", + "src": "40634:8:11" + }, + { + "kind": "number", + "nativeSrc": "40644:1:11", + "nodeType": "YulLiteral", + "src": "40644:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "40630:3:11", + "nodeType": "YulIdentifier", + "src": "40630:3:11" + }, + "nativeSrc": "40630:16:11", + "nodeType": "YulFunctionCall", + "src": "40630:16:11" + }, + { + "kind": "number", + "nativeSrc": "40648:4:11", + "nodeType": "YulLiteral", + "src": "40648:4:11", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "40627:2:11", + "nodeType": "YulIdentifier", + "src": "40627:2:11" + }, + "nativeSrc": "40627:26:11", + "nodeType": "YulFunctionCall", + "src": "40627:26:11" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "40348:3:11", + "nodeType": "YulIdentifier", + "src": "40348:3:11" + }, + "nativeSrc": "40348:323:11", + "nodeType": "YulFunctionCall", + "src": "40348:323:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "40322:6:11", + "nodeType": "YulIdentifier", + "src": "40322:6:11" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6095, + "isOffset": false, + "isSlot": false, + "src": "40437:1:11", + "valueSize": 1 + }, + { + "declaration": 6095, + "isOffset": false, + "isSlot": false, + "src": "40640:1:11", + "valueSize": 1 + }, + { + "declaration": 6098, + "isOffset": false, + "isSlot": false, + "src": "40322:6:11", + "valueSize": 1 + } + ], + "id": 6100, + "nodeType": "InlineAssembly", + "src": "40167:514:11" + } + ] + }, + "documentation": { + "id": 6093, + "nodeType": "StructuredDocumentation", + "src": "39899:137:11", + "text": "@dev Packs a single string with its length into a single word.\n Returns `bytes32(0)` if the length is zero or greater than 31." + }, + "id": 6102, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "packOne", + "nameLocation": "40050:7:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6096, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6095, + "mutability": "mutable", + "name": "a", + "nameLocation": "40072:1:11", + "nodeType": "VariableDeclaration", + "scope": 6102, + "src": "40058:15:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6094, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "40058:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "40057:17:11" + }, + "returnParameters": { + "id": 6099, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6098, + "mutability": "mutable", + "name": "result", + "nameLocation": "40106:6:11", + "nodeType": "VariableDeclaration", + "scope": 6102, + "src": "40098:14:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6097, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "40098:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "40097:16:11" + }, + "scope": 6145, + "src": "40041:646:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6111, + "nodeType": "Block", + "src": "40974:469:11", + "statements": [ + { + "AST": { + "nativeSrc": "41036:401:11", + "nodeType": "YulBlock", + "src": "41036:401:11", + "statements": [ + { + "nativeSrc": "41050:21:11", + "nodeType": "YulAssignment", + "src": "41050:21:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "41066:4:11", + "nodeType": "YulLiteral", + "src": "41066:4:11", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "41060:5:11", + "nodeType": "YulIdentifier", + "src": "41060:5:11" + }, + "nativeSrc": "41060:11:11", + "nodeType": "YulFunctionCall", + "src": "41060:11:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "41050:6:11", + "nodeType": "YulIdentifier", + "src": "41050:6:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "41124:4:11", + "nodeType": "YulLiteral", + "src": "41124:4:11", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "result", + "nativeSrc": "41134:6:11", + "nodeType": "YulIdentifier", + "src": "41134:6:11" + }, + { + "kind": "number", + "nativeSrc": "41142:4:11", + "nodeType": "YulLiteral", + "src": "41142:4:11", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "41130:3:11", + "nodeType": "YulIdentifier", + "src": "41130:3:11" + }, + "nativeSrc": "41130:17:11", + "nodeType": "YulFunctionCall", + "src": "41130:17:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "41117:6:11", + "nodeType": "YulIdentifier", + "src": "41117:6:11" + }, + "nativeSrc": "41117:31:11", + "nodeType": "YulFunctionCall", + "src": "41117:31:11" + }, + "nativeSrc": "41117:31:11", + "nodeType": "YulExpressionStatement", + "src": "41117:31:11" + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "41225:6:11", + "nodeType": "YulIdentifier", + "src": "41225:6:11" + }, + { + "kind": "number", + "nativeSrc": "41233:1:11", + "nodeType": "YulLiteral", + "src": "41233:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "41218:6:11", + "nodeType": "YulIdentifier", + "src": "41218:6:11" + }, + "nativeSrc": "41218:17:11", + "nodeType": "YulFunctionCall", + "src": "41218:17:11" + }, + "nativeSrc": "41218:17:11", + "nodeType": "YulExpressionStatement", + "src": "41218:17:11" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "41287:6:11", + "nodeType": "YulIdentifier", + "src": "41287:6:11" + }, + { + "kind": "number", + "nativeSrc": "41295:4:11", + "nodeType": "YulLiteral", + "src": "41295:4:11", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "41283:3:11", + "nodeType": "YulIdentifier", + "src": "41283:3:11" + }, + "nativeSrc": "41283:17:11", + "nodeType": "YulFunctionCall", + "src": "41283:17:11" + }, + { + "name": "packed", + "nativeSrc": "41302:6:11", + "nodeType": "YulIdentifier", + "src": "41302:6:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "41276:6:11", + "nodeType": "YulIdentifier", + "src": "41276:6:11" + }, + "nativeSrc": "41276:33:11", + "nodeType": "YulFunctionCall", + "src": "41276:33:11" + }, + "nativeSrc": "41276:33:11", + "nodeType": "YulExpressionStatement", + "src": "41276:33:11" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "41368:6:11", + "nodeType": "YulIdentifier", + "src": "41368:6:11" + }, + { + "kind": "number", + "nativeSrc": "41376:4:11", + "nodeType": "YulLiteral", + "src": "41376:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "41364:3:11", + "nodeType": "YulIdentifier", + "src": "41364:3:11" + }, + "nativeSrc": "41364:17:11", + "nodeType": "YulFunctionCall", + "src": "41364:17:11" + }, + { + "arguments": [ + { + "name": "result", + "nativeSrc": "41389:6:11", + "nodeType": "YulIdentifier", + "src": "41389:6:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "41383:5:11", + "nodeType": "YulIdentifier", + "src": "41383:5:11" + }, + "nativeSrc": "41383:13:11", + "nodeType": "YulFunctionCall", + "src": "41383:13:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "41360:3:11", + "nodeType": "YulIdentifier", + "src": "41360:3:11" + }, + "nativeSrc": "41360:37:11", + "nodeType": "YulFunctionCall", + "src": "41360:37:11" + }, + { + "kind": "number", + "nativeSrc": "41399:1:11", + "nodeType": "YulLiteral", + "src": "41399:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "41353:6:11", + "nodeType": "YulIdentifier", + "src": "41353:6:11" + }, + "nativeSrc": "41353:48:11", + "nodeType": "YulFunctionCall", + "src": "41353:48:11" + }, + "nativeSrc": "41353:48:11", + "nodeType": "YulExpressionStatement", + "src": "41353:48:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6105, + "isOffset": false, + "isSlot": false, + "src": "41302:6:11", + "valueSize": 1 + }, + { + "declaration": 6108, + "isOffset": false, + "isSlot": false, + "src": "41050:6:11", + "valueSize": 1 + }, + { + "declaration": 6108, + "isOffset": false, + "isSlot": false, + "src": "41134:6:11", + "valueSize": 1 + }, + { + "declaration": 6108, + "isOffset": false, + "isSlot": false, + "src": "41225:6:11", + "valueSize": 1 + }, + { + "declaration": 6108, + "isOffset": false, + "isSlot": false, + "src": "41287:6:11", + "valueSize": 1 + }, + { + "declaration": 6108, + "isOffset": false, + "isSlot": false, + "src": "41368:6:11", + "valueSize": 1 + }, + { + "declaration": 6108, + "isOffset": false, + "isSlot": false, + "src": "41389:6:11", + "valueSize": 1 + } + ], + "id": 6110, + "nodeType": "InlineAssembly", + "src": "41027:410:11" + } + ] + }, + "documentation": { + "id": 6103, + "nodeType": "StructuredDocumentation", + "src": "40693:196:11", + "text": "@dev Unpacks a string packed using {packOne}.\n Returns the empty string if `packed` is `bytes32(0)`.\n If `packed` is not an output of {packOne}, the output behavior is undefined." + }, + "id": 6112, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "unpackOne", + "nameLocation": "40903:9:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6106, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6105, + "mutability": "mutable", + "name": "packed", + "nameLocation": "40921:6:11", + "nodeType": "VariableDeclaration", + "scope": 6112, + "src": "40913:14:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6104, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "40913:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "40912:16:11" + }, + "returnParameters": { + "id": 6109, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6108, + "mutability": "mutable", + "name": "result", + "nameLocation": "40966:6:11", + "nodeType": "VariableDeclaration", + "scope": 6112, + "src": "40952:20:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6107, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "40952:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "40951:22:11" + }, + "scope": 6145, + "src": "40894:549:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6123, + "nodeType": "Block", + "src": "41685:706:11", + "statements": [ + { + "AST": { + "nativeSrc": "41747:638:11", + "nodeType": "YulBlock", + "src": "41747:638:11", + "statements": [ + { + "nativeSrc": "41761:20:11", + "nodeType": "YulVariableDeclaration", + "src": "41761:20:11", + "value": { + "arguments": [ + { + "name": "a", + "nativeSrc": "41779:1:11", + "nodeType": "YulIdentifier", + "src": "41779:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "41773:5:11", + "nodeType": "YulIdentifier", + "src": "41773:5:11" + }, + "nativeSrc": "41773:8:11", + "nodeType": "YulFunctionCall", + "src": "41773:8:11" + }, + "variables": [ + { + "name": "aLen", + "nativeSrc": "41765:4:11", + "nodeType": "YulTypedName", + "src": "41765:4:11", + "type": "" + } + ] + }, + { + "nativeSrc": "41927:448:11", + "nodeType": "YulAssignment", + "src": "41927:448:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "42059:1:11", + "nodeType": "YulLiteral", + "src": "42059:1:11", + "type": "", + "value": "3" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "42066:4:11", + "nodeType": "YulLiteral", + "src": "42066:4:11", + "type": "", + "value": "0x1f" + }, + { + "name": "aLen", + "nativeSrc": "42072:4:11", + "nodeType": "YulIdentifier", + "src": "42072:4:11" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "42062:3:11", + "nodeType": "YulIdentifier", + "src": "42062:3:11" + }, + "nativeSrc": "42062:15:11", + "nodeType": "YulFunctionCall", + "src": "42062:15:11" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "42055:3:11", + "nodeType": "YulIdentifier", + "src": "42055:3:11" + }, + "nativeSrc": "42055:23:11", + "nodeType": "YulFunctionCall", + "src": "42055:23:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "a", + "nativeSrc": "42090:1:11", + "nodeType": "YulIdentifier", + "src": "42090:1:11" + }, + { + "name": "aLen", + "nativeSrc": "42093:4:11", + "nodeType": "YulIdentifier", + "src": "42093:4:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "42086:3:11", + "nodeType": "YulIdentifier", + "src": "42086:3:11" + }, + "nativeSrc": "42086:12:11", + "nodeType": "YulFunctionCall", + "src": "42086:12:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "42080:5:11", + "nodeType": "YulIdentifier", + "src": "42080:5:11" + }, + "nativeSrc": "42080:19:11", + "nodeType": "YulFunctionCall", + "src": "42080:19:11" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "42051:3:11", + "nodeType": "YulIdentifier", + "src": "42051:3:11" + }, + "nativeSrc": "42051:49:11", + "nodeType": "YulFunctionCall", + "src": "42051:49:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "b", + "nativeSrc": "42116:1:11", + "nodeType": "YulIdentifier", + "src": "42116:1:11" + }, + { + "kind": "number", + "nativeSrc": "42119:4:11", + "nodeType": "YulLiteral", + "src": "42119:4:11", + "type": "", + "value": "0x1e" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "42112:3:11", + "nodeType": "YulIdentifier", + "src": "42112:3:11" + }, + "nativeSrc": "42112:12:11", + "nodeType": "YulFunctionCall", + "src": "42112:12:11" + }, + { + "name": "aLen", + "nativeSrc": "42126:4:11", + "nodeType": "YulIdentifier", + "src": "42126:4:11" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "42108:3:11", + "nodeType": "YulIdentifier", + "src": "42108:3:11" + }, + "nativeSrc": "42108:23:11", + "nodeType": "YulFunctionCall", + "src": "42108:23:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "42102:5:11", + "nodeType": "YulIdentifier", + "src": "42102:5:11" + }, + "nativeSrc": "42102:30:11", + "nodeType": "YulFunctionCall", + "src": "42102:30:11" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "41978:2:11", + "nodeType": "YulIdentifier", + "src": "41978:2:11" + }, + "nativeSrc": "41978:155:11", + "nodeType": "YulFunctionCall", + "src": "41978:155:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "aLen", + "nativeSrc": "42331:4:11", + "nodeType": "YulIdentifier", + "src": "42331:4:11" + }, + { + "arguments": [ + { + "name": "b", + "nativeSrc": "42343:1:11", + "nodeType": "YulIdentifier", + "src": "42343:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "42337:5:11", + "nodeType": "YulIdentifier", + "src": "42337:5:11" + }, + "nativeSrc": "42337:8:11", + "nodeType": "YulFunctionCall", + "src": "42337:8:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "42327:3:11", + "nodeType": "YulIdentifier", + "src": "42327:3:11" + }, + "nativeSrc": "42327:19:11", + "nodeType": "YulFunctionCall", + "src": "42327:19:11" + }, + { + "kind": "number", + "nativeSrc": "42348:1:11", + "nodeType": "YulLiteral", + "src": "42348:1:11", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "42323:3:11", + "nodeType": "YulIdentifier", + "src": "42323:3:11" + }, + "nativeSrc": "42323:27:11", + "nodeType": "YulFunctionCall", + "src": "42323:27:11" + }, + { + "kind": "number", + "nativeSrc": "42352:4:11", + "nodeType": "YulLiteral", + "src": "42352:4:11", + "type": "", + "value": "0x1e" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "42320:2:11", + "nodeType": "YulIdentifier", + "src": "42320:2:11" + }, + "nativeSrc": "42320:37:11", + "nodeType": "YulFunctionCall", + "src": "42320:37:11" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "41953:3:11", + "nodeType": "YulIdentifier", + "src": "41953:3:11" + }, + "nativeSrc": "41953:422:11", + "nodeType": "YulFunctionCall", + "src": "41953:422:11" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "41927:6:11", + "nodeType": "YulIdentifier", + "src": "41927:6:11" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6115, + "isOffset": false, + "isSlot": false, + "src": "41779:1:11", + "valueSize": 1 + }, + { + "declaration": 6115, + "isOffset": false, + "isSlot": false, + "src": "42090:1:11", + "valueSize": 1 + }, + { + "declaration": 6117, + "isOffset": false, + "isSlot": false, + "src": "42116:1:11", + "valueSize": 1 + }, + { + "declaration": 6117, + "isOffset": false, + "isSlot": false, + "src": "42343:1:11", + "valueSize": 1 + }, + { + "declaration": 6120, + "isOffset": false, + "isSlot": false, + "src": "41927:6:11", + "valueSize": 1 + } + ], + "id": 6122, + "nodeType": "InlineAssembly", + "src": "41738:647:11" + } + ] + }, + "documentation": { + "id": 6113, + "nodeType": "StructuredDocumentation", + "src": "41449:141:11", + "text": "@dev Packs two strings with their lengths into a single word.\n Returns `bytes32(0)` if combined length is zero or greater than 30." + }, + "id": 6124, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "packTwo", + "nameLocation": "41604:7:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6118, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6115, + "mutability": "mutable", + "name": "a", + "nameLocation": "41626:1:11", + "nodeType": "VariableDeclaration", + "scope": 6124, + "src": "41612:15:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6114, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "41612:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6117, + "mutability": "mutable", + "name": "b", + "nameLocation": "41643:1:11", + "nodeType": "VariableDeclaration", + "scope": 6124, + "src": "41629:15:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6116, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "41629:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "41611:34:11" + }, + "returnParameters": { + "id": 6121, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6120, + "mutability": "mutable", + "name": "result", + "nameLocation": "41677:6:11", + "nodeType": "VariableDeclaration", + "scope": 6124, + "src": "41669:14:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6119, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "41669:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "41668:16:11" + }, + "scope": 6145, + "src": "41595:796:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6135, + "nodeType": "Block", + "src": "42730:778:11", + "statements": [ + { + "AST": { + "nativeSrc": "42792:710:11", + "nodeType": "YulBlock", + "src": "42792:710:11", + "statements": [ + { + "nativeSrc": "42806:22:11", + "nodeType": "YulAssignment", + "src": "42806:22:11", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "42823:4:11", + "nodeType": "YulLiteral", + "src": "42823:4:11", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "42817:5:11", + "nodeType": "YulIdentifier", + "src": "42817:5:11" + }, + "nativeSrc": "42817:11:11", + "nodeType": "YulFunctionCall", + "src": "42817:11:11" + }, + "variableNames": [ + { + "name": "resultA", + "nativeSrc": "42806:7:11", + "nodeType": "YulIdentifier", + "src": "42806:7:11" + } + ] + }, + { + "nativeSrc": "42874:29:11", + "nodeType": "YulAssignment", + "src": "42874:29:11", + "value": { + "arguments": [ + { + "name": "resultA", + "nativeSrc": "42889:7:11", + "nodeType": "YulIdentifier", + "src": "42889:7:11" + }, + { + "kind": "number", + "nativeSrc": "42898:4:11", + "nodeType": "YulLiteral", + "src": "42898:4:11", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "42885:3:11", + "nodeType": "YulIdentifier", + "src": "42885:3:11" + }, + "nativeSrc": "42885:18:11", + "nodeType": "YulFunctionCall", + "src": "42885:18:11" + }, + "variableNames": [ + { + "name": "resultB", + "nativeSrc": "42874:7:11", + "nodeType": "YulIdentifier", + "src": "42874:7:11" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "43022:4:11", + "nodeType": "YulLiteral", + "src": "43022:4:11", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "resultB", + "nativeSrc": "43032:7:11", + "nodeType": "YulIdentifier", + "src": "43032:7:11" + }, + { + "kind": "number", + "nativeSrc": "43041:4:11", + "nodeType": "YulLiteral", + "src": "43041:4:11", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "43028:3:11", + "nodeType": "YulIdentifier", + "src": "43028:3:11" + }, + "nativeSrc": "43028:18:11", + "nodeType": "YulFunctionCall", + "src": "43028:18:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "43015:6:11", + "nodeType": "YulIdentifier", + "src": "43015:6:11" + }, + "nativeSrc": "43015:32:11", + "nodeType": "YulFunctionCall", + "src": "43015:32:11" + }, + "nativeSrc": "43015:32:11", + "nodeType": "YulExpressionStatement", + "src": "43015:32:11" + }, + { + "expression": { + "arguments": [ + { + "name": "resultA", + "nativeSrc": "43108:7:11", + "nodeType": "YulIdentifier", + "src": "43108:7:11" + }, + { + "kind": "number", + "nativeSrc": "43117:1:11", + "nodeType": "YulLiteral", + "src": "43117:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "43101:6:11", + "nodeType": "YulIdentifier", + "src": "43101:6:11" + }, + "nativeSrc": "43101:18:11", + "nodeType": "YulFunctionCall", + "src": "43101:18:11" + }, + "nativeSrc": "43101:18:11", + "nodeType": "YulExpressionStatement", + "src": "43101:18:11" + }, + { + "expression": { + "arguments": [ + { + "name": "resultB", + "nativeSrc": "43139:7:11", + "nodeType": "YulIdentifier", + "src": "43139:7:11" + }, + { + "kind": "number", + "nativeSrc": "43148:1:11", + "nodeType": "YulLiteral", + "src": "43148:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "43132:6:11", + "nodeType": "YulIdentifier", + "src": "43132:6:11" + }, + "nativeSrc": "43132:18:11", + "nodeType": "YulFunctionCall", + "src": "43132:18:11" + }, + "nativeSrc": "43132:18:11", + "nodeType": "YulExpressionStatement", + "src": "43132:18:11" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "resultA", + "nativeSrc": "43218:7:11", + "nodeType": "YulIdentifier", + "src": "43218:7:11" + }, + { + "kind": "number", + "nativeSrc": "43227:4:11", + "nodeType": "YulLiteral", + "src": "43227:4:11", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "43214:3:11", + "nodeType": "YulIdentifier", + "src": "43214:3:11" + }, + "nativeSrc": "43214:18:11", + "nodeType": "YulFunctionCall", + "src": "43214:18:11" + }, + { + "name": "packed", + "nativeSrc": "43234:6:11", + "nodeType": "YulIdentifier", + "src": "43234:6:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "43207:6:11", + "nodeType": "YulIdentifier", + "src": "43207:6:11" + }, + "nativeSrc": "43207:34:11", + "nodeType": "YulFunctionCall", + "src": "43207:34:11" + }, + "nativeSrc": "43207:34:11", + "nodeType": "YulExpressionStatement", + "src": "43207:34:11" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "resultB", + "nativeSrc": "43265:7:11", + "nodeType": "YulIdentifier", + "src": "43265:7:11" + }, + { + "kind": "number", + "nativeSrc": "43274:4:11", + "nodeType": "YulLiteral", + "src": "43274:4:11", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "43261:3:11", + "nodeType": "YulIdentifier", + "src": "43261:3:11" + }, + "nativeSrc": "43261:18:11", + "nodeType": "YulFunctionCall", + "src": "43261:18:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "resultA", + "nativeSrc": "43295:7:11", + "nodeType": "YulIdentifier", + "src": "43295:7:11" + }, + { + "kind": "number", + "nativeSrc": "43304:4:11", + "nodeType": "YulLiteral", + "src": "43304:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "43291:3:11", + "nodeType": "YulIdentifier", + "src": "43291:3:11" + }, + "nativeSrc": "43291:18:11", + "nodeType": "YulFunctionCall", + "src": "43291:18:11" + }, + { + "arguments": [ + { + "name": "resultA", + "nativeSrc": "43317:7:11", + "nodeType": "YulIdentifier", + "src": "43317:7:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "43311:5:11", + "nodeType": "YulIdentifier", + "src": "43311:5:11" + }, + "nativeSrc": "43311:14:11", + "nodeType": "YulFunctionCall", + "src": "43311:14:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "43287:3:11", + "nodeType": "YulIdentifier", + "src": "43287:3:11" + }, + "nativeSrc": "43287:39:11", + "nodeType": "YulFunctionCall", + "src": "43287:39:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "43281:5:11", + "nodeType": "YulIdentifier", + "src": "43281:5:11" + }, + "nativeSrc": "43281:46:11", + "nodeType": "YulFunctionCall", + "src": "43281:46:11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "43254:6:11", + "nodeType": "YulIdentifier", + "src": "43254:6:11" + }, + "nativeSrc": "43254:74:11", + "nodeType": "YulFunctionCall", + "src": "43254:74:11" + }, + "nativeSrc": "43254:74:11", + "nodeType": "YulExpressionStatement", + "src": "43254:74:11" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "resultA", + "nativeSrc": "43394:7:11", + "nodeType": "YulIdentifier", + "src": "43394:7:11" + }, + { + "kind": "number", + "nativeSrc": "43403:4:11", + "nodeType": "YulLiteral", + "src": "43403:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "43390:3:11", + "nodeType": "YulIdentifier", + "src": "43390:3:11" + }, + "nativeSrc": "43390:18:11", + "nodeType": "YulFunctionCall", + "src": "43390:18:11" + }, + { + "arguments": [ + { + "name": "resultA", + "nativeSrc": "43416:7:11", + "nodeType": "YulIdentifier", + "src": "43416:7:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "43410:5:11", + "nodeType": "YulIdentifier", + "src": "43410:5:11" + }, + "nativeSrc": "43410:14:11", + "nodeType": "YulFunctionCall", + "src": "43410:14:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "43386:3:11", + "nodeType": "YulIdentifier", + "src": "43386:3:11" + }, + "nativeSrc": "43386:39:11", + "nodeType": "YulFunctionCall", + "src": "43386:39:11" + }, + { + "kind": "number", + "nativeSrc": "43427:1:11", + "nodeType": "YulLiteral", + "src": "43427:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "43379:6:11", + "nodeType": "YulIdentifier", + "src": "43379:6:11" + }, + "nativeSrc": "43379:50:11", + "nodeType": "YulFunctionCall", + "src": "43379:50:11" + }, + "nativeSrc": "43379:50:11", + "nodeType": "YulExpressionStatement", + "src": "43379:50:11" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "resultB", + "nativeSrc": "43457:7:11", + "nodeType": "YulIdentifier", + "src": "43457:7:11" + }, + { + "kind": "number", + "nativeSrc": "43466:4:11", + "nodeType": "YulLiteral", + "src": "43466:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "43453:3:11", + "nodeType": "YulIdentifier", + "src": "43453:3:11" + }, + "nativeSrc": "43453:18:11", + "nodeType": "YulFunctionCall", + "src": "43453:18:11" + }, + { + "arguments": [ + { + "name": "resultB", + "nativeSrc": "43479:7:11", + "nodeType": "YulIdentifier", + "src": "43479:7:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "43473:5:11", + "nodeType": "YulIdentifier", + "src": "43473:5:11" + }, + "nativeSrc": "43473:14:11", + "nodeType": "YulFunctionCall", + "src": "43473:14:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "43449:3:11", + "nodeType": "YulIdentifier", + "src": "43449:3:11" + }, + "nativeSrc": "43449:39:11", + "nodeType": "YulFunctionCall", + "src": "43449:39:11" + }, + { + "kind": "number", + "nativeSrc": "43490:1:11", + "nodeType": "YulLiteral", + "src": "43490:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "43442:6:11", + "nodeType": "YulIdentifier", + "src": "43442:6:11" + }, + "nativeSrc": "43442:50:11", + "nodeType": "YulFunctionCall", + "src": "43442:50:11" + }, + "nativeSrc": "43442:50:11", + "nodeType": "YulExpressionStatement", + "src": "43442:50:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6127, + "isOffset": false, + "isSlot": false, + "src": "43234:6:11", + "valueSize": 1 + }, + { + "declaration": 6130, + "isOffset": false, + "isSlot": false, + "src": "42806:7:11", + "valueSize": 1 + }, + { + "declaration": 6130, + "isOffset": false, + "isSlot": false, + "src": "42889:7:11", + "valueSize": 1 + }, + { + "declaration": 6130, + "isOffset": false, + "isSlot": false, + "src": "43108:7:11", + "valueSize": 1 + }, + { + "declaration": 6130, + "isOffset": false, + "isSlot": false, + "src": "43218:7:11", + "valueSize": 1 + }, + { + "declaration": 6130, + "isOffset": false, + "isSlot": false, + "src": "43295:7:11", + "valueSize": 1 + }, + { + "declaration": 6130, + "isOffset": false, + "isSlot": false, + "src": "43317:7:11", + "valueSize": 1 + }, + { + "declaration": 6130, + "isOffset": false, + "isSlot": false, + "src": "43394:7:11", + "valueSize": 1 + }, + { + "declaration": 6130, + "isOffset": false, + "isSlot": false, + "src": "43416:7:11", + "valueSize": 1 + }, + { + "declaration": 6132, + "isOffset": false, + "isSlot": false, + "src": "42874:7:11", + "valueSize": 1 + }, + { + "declaration": 6132, + "isOffset": false, + "isSlot": false, + "src": "43032:7:11", + "valueSize": 1 + }, + { + "declaration": 6132, + "isOffset": false, + "isSlot": false, + "src": "43139:7:11", + "valueSize": 1 + }, + { + "declaration": 6132, + "isOffset": false, + "isSlot": false, + "src": "43265:7:11", + "valueSize": 1 + }, + { + "declaration": 6132, + "isOffset": false, + "isSlot": false, + "src": "43457:7:11", + "valueSize": 1 + }, + { + "declaration": 6132, + "isOffset": false, + "isSlot": false, + "src": "43479:7:11", + "valueSize": 1 + } + ], + "id": 6134, + "nodeType": "InlineAssembly", + "src": "42783:719:11" + } + ] + }, + "documentation": { + "id": 6125, + "nodeType": "StructuredDocumentation", + "src": "42397:196:11", + "text": "@dev Unpacks strings packed using {packTwo}.\n Returns the empty strings if `packed` is `bytes32(0)`.\n If `packed` is not an output of {packTwo}, the output behavior is undefined." + }, + "id": 6136, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "unpackTwo", + "nameLocation": "42607:9:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6128, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6127, + "mutability": "mutable", + "name": "packed", + "nameLocation": "42625:6:11", + "nodeType": "VariableDeclaration", + "scope": 6136, + "src": "42617:14:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6126, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "42617:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "42616:16:11" + }, + "returnParameters": { + "id": 6133, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6130, + "mutability": "mutable", + "name": "resultA", + "nameLocation": "42694:7:11", + "nodeType": "VariableDeclaration", + "scope": 6136, + "src": "42680:21:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6129, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "42680:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6132, + "mutability": "mutable", + "name": "resultB", + "nameLocation": "42717:7:11", + "nodeType": "VariableDeclaration", + "scope": 6136, + "src": "42703:21:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6131, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "42703:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "42679:46:11" + }, + "scope": 6145, + "src": "42598:910:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6143, + "nodeType": "Block", + "src": "43618:631:11", + "statements": [ + { + "AST": { + "nativeSrc": "43680:563:11", + "nodeType": "YulBlock", + "src": "43680:563:11", + "statements": [ + { + "nativeSrc": "43772:28:11", + "nodeType": "YulVariableDeclaration", + "src": "43772:28:11", + "value": { + "arguments": [ + { + "name": "a", + "nativeSrc": "43792:1:11", + "nodeType": "YulIdentifier", + "src": "43792:1:11" + }, + { + "kind": "number", + "nativeSrc": "43795:4:11", + "nodeType": "YulLiteral", + "src": "43795:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "43788:3:11", + "nodeType": "YulIdentifier", + "src": "43788:3:11" + }, + "nativeSrc": "43788:12:11", + "nodeType": "YulFunctionCall", + "src": "43788:12:11" + }, + "variables": [ + { + "name": "retStart", + "nativeSrc": "43776:8:11", + "nodeType": "YulTypedName", + "src": "43776:8:11", + "type": "" + } + ] + }, + { + "nativeSrc": "43813:42:11", + "nodeType": "YulVariableDeclaration", + "src": "43813:42:11", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "a", + "nativeSrc": "43846:1:11", + "nodeType": "YulIdentifier", + "src": "43846:1:11" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "43840:5:11", + "nodeType": "YulIdentifier", + "src": "43840:5:11" + }, + "nativeSrc": "43840:8:11", + "nodeType": "YulFunctionCall", + "src": "43840:8:11" + }, + { + "kind": "number", + "nativeSrc": "43850:4:11", + "nodeType": "YulLiteral", + "src": "43850:4:11", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "43836:3:11", + "nodeType": "YulIdentifier", + "src": "43836:3:11" + }, + "nativeSrc": "43836:19:11", + "nodeType": "YulFunctionCall", + "src": "43836:19:11" + }, + "variables": [ + { + "name": "retUnpaddedSize", + "nativeSrc": "43817:15:11", + "nodeType": "YulTypedName", + "src": "43817:15:11", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "retStart", + "nativeSrc": "44009:8:11", + "nodeType": "YulIdentifier", + "src": "44009:8:11" + }, + { + "name": "retUnpaddedSize", + "nativeSrc": "44019:15:11", + "nodeType": "YulIdentifier", + "src": "44019:15:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "44005:3:11", + "nodeType": "YulIdentifier", + "src": "44005:3:11" + }, + "nativeSrc": "44005:30:11", + "nodeType": "YulFunctionCall", + "src": "44005:30:11" + }, + { + "kind": "number", + "nativeSrc": "44037:1:11", + "nodeType": "YulLiteral", + "src": "44037:1:11", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "43998:6:11", + "nodeType": "YulIdentifier", + "src": "43998:6:11" + }, + "nativeSrc": "43998:41:11", + "nodeType": "YulFunctionCall", + "src": "43998:41:11" + }, + "nativeSrc": "43998:41:11", + "nodeType": "YulExpressionStatement", + "src": "43998:41:11" + }, + { + "expression": { + "arguments": [ + { + "name": "retStart", + "nativeSrc": "44059:8:11", + "nodeType": "YulIdentifier", + "src": "44059:8:11" + }, + { + "kind": "number", + "nativeSrc": "44069:4:11", + "nodeType": "YulLiteral", + "src": "44069:4:11", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "44052:6:11", + "nodeType": "YulIdentifier", + "src": "44052:6:11" + }, + "nativeSrc": "44052:22:11", + "nodeType": "YulFunctionCall", + "src": "44052:22:11" + }, + "nativeSrc": "44052:22:11", + "nodeType": "YulExpressionStatement", + "src": "44052:22:11" + }, + { + "expression": { + "arguments": [ + { + "name": "retStart", + "nativeSrc": "44180:8:11", + "nodeType": "YulIdentifier", + "src": "44180:8:11" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "44198:4:11", + "nodeType": "YulLiteral", + "src": "44198:4:11", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "44194:3:11", + "nodeType": "YulIdentifier", + "src": "44194:3:11" + }, + "nativeSrc": "44194:9:11", + "nodeType": "YulFunctionCall", + "src": "44194:9:11" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "44209:4:11", + "nodeType": "YulLiteral", + "src": "44209:4:11", + "type": "", + "value": "0x1f" + }, + { + "name": "retUnpaddedSize", + "nativeSrc": "44215:15:11", + "nodeType": "YulIdentifier", + "src": "44215:15:11" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "44205:3:11", + "nodeType": "YulIdentifier", + "src": "44205:3:11" + }, + "nativeSrc": "44205:26:11", + "nodeType": "YulFunctionCall", + "src": "44205:26:11" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "44190:3:11", + "nodeType": "YulIdentifier", + "src": "44190:3:11" + }, + "nativeSrc": "44190:42:11", + "nodeType": "YulFunctionCall", + "src": "44190:42:11" + } + ], + "functionName": { + "name": "return", + "nativeSrc": "44173:6:11", + "nodeType": "YulIdentifier", + "src": "44173:6:11" + }, + "nativeSrc": "44173:60:11", + "nodeType": "YulFunctionCall", + "src": "44173:60:11" + }, + "nativeSrc": "44173:60:11", + "nodeType": "YulExpressionStatement", + "src": "44173:60:11" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6139, + "isOffset": false, + "isSlot": false, + "src": "43792:1:11", + "valueSize": 1 + }, + { + "declaration": 6139, + "isOffset": false, + "isSlot": false, + "src": "43846:1:11", + "valueSize": 1 + } + ], + "id": 6142, + "nodeType": "InlineAssembly", + "src": "43671:572:11" + } + ] + }, + "documentation": { + "id": 6137, + "nodeType": "StructuredDocumentation", + "src": "43514:46:11", + "text": "@dev Directly returns `a` without copying." + }, + "id": 6144, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "directReturn", + "nameLocation": "43574:12:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6140, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6139, + "mutability": "mutable", + "name": "a", + "nameLocation": "43601:1:11", + "nodeType": "VariableDeclaration", + "scope": 6144, + "src": "43587:15:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6138, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "43587:6:11", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "43586:17:11" + }, + "returnParameters": { + "id": 6141, + "nodeType": "ParameterList", + "parameters": [], + "src": "43618:0:11" + }, + "scope": 6145, + "src": "43565:684:11", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 6146, + "src": "690:43561:11", + "usedErrors": [ + 5116, + 5119, + 5122 + ], + "usedEvents": [] + } + ], + "src": "32:44220:11" + }, + "id": 11 + }, + "solady/utils/SignatureCheckerLib.sol": { + "ast": { + "absolutePath": "solady/utils/SignatureCheckerLib.sol", + "exportedSymbols": { + "SignatureCheckerLib": [ + 6365 + ] + }, + "id": 6366, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6147, + "literals": [ + "solidity", + "^", + "0.8", + ".4" + ], + "nodeType": "PragmaDirective", + "src": "32:23:12" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "SignatureCheckerLib", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 6148, + "nodeType": "StructuredDocumentation", + "src": "57:1381:12", + "text": "@notice Signature verification helper that supports both ECDSA signatures from EOAs\n and ERC1271 signatures from smart contract wallets like Argent and Gnosis safe.\n @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/SignatureCheckerLib.sol)\n @author Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/SignatureChecker.sol)\n @dev Note:\n - The signature checking functions use the ecrecover precompile (0x1).\n - The `bytes memory signature` variants use the identity precompile (0x4)\n to copy memory internally.\n - Unlike ECDSA signatures, contract signatures are revocable.\n - As of Solady version 0.0.134, all `bytes signature` variants accept both\n regular 65-byte `(r, s, v)` and EIP-2098 `(r, vs)` short form signatures.\n See: https://eips.ethereum.org/EIPS/eip-2098\n This is for calldata efficiency on smart accounts prevalent on L2s.\n WARNING! Do NOT use signatures as unique identifiers:\n - Use a nonce in the digest to prevent replay attacks on the same contract.\n - Use EIP-712 for the digest to prevent replay attacks across different chains and contracts.\n EIP-712 also enables readable signing of typed data for better user safety.\n This implementation does NOT check if a signature is non-malleable." + }, + "fullyImplemented": true, + "id": 6365, + "linearizedBaseContracts": [ + 6365 + ], + "name": "SignatureCheckerLib", + "nameLocation": "1446:19:12", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 6170, + "nodeType": "Block", + "src": "2104:1914:12", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 6165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6160, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6151, + "src": "2118:6:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 6163, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2136:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 6162, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2128:7:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 6161, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2128:7:12", + "typeDescriptions": {} + } + }, + "id": 6164, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2128:10:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2118:20:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6168, + "nodeType": "IfStatement", + "src": "2114:40:12", + "trueBody": { + "expression": { + "id": 6166, + "name": "isValid", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6158, + "src": "2147:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 6159, + "id": 6167, + "nodeType": "Return", + "src": "2140:14:12" + } + }, + { + "AST": { + "nativeSrc": "2216:1796:12", + "nodeType": "YulBlock", + "src": "2216:1796:12", + "statements": [ + { + "nativeSrc": "2230:20:12", + "nodeType": "YulVariableDeclaration", + "src": "2230:20:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2245:4:12", + "nodeType": "YulLiteral", + "src": "2245:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2239:5:12", + "nodeType": "YulIdentifier", + "src": "2239:5:12" + }, + "nativeSrc": "2239:11:12", + "nodeType": "YulFunctionCall", + "src": "2239:11:12" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "2234:1:12", + "nodeType": "YulTypedName", + "src": "2234:1:12", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "2275:1727:12", + "nodeType": "YulBlock", + "src": "2275:1727:12", + "statements": [ + { + "body": { + "nativeSrc": "2324:1000:12", + "nodeType": "YulBlock", + "src": "2324:1000:12", + "statements": [ + { + "cases": [ + { + "body": { + "nativeSrc": "2398:218:12", + "nodeType": "YulBlock", + "src": "2398:218:12", + "statements": [ + { + "nativeSrc": "2424:37:12", + "nodeType": "YulVariableDeclaration", + "src": "2424:37:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "2444:9:12", + "nodeType": "YulIdentifier", + "src": "2444:9:12" + }, + { + "kind": "number", + "nativeSrc": "2455:4:12", + "nodeType": "YulLiteral", + "src": "2455:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2440:3:12", + "nodeType": "YulIdentifier", + "src": "2440:3:12" + }, + "nativeSrc": "2440:20:12", + "nodeType": "YulFunctionCall", + "src": "2440:20:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2434:5:12", + "nodeType": "YulIdentifier", + "src": "2434:5:12" + }, + "nativeSrc": "2434:27:12", + "nodeType": "YulFunctionCall", + "src": "2434:27:12" + }, + "variables": [ + { + "name": "vs", + "nativeSrc": "2428:2:12", + "nodeType": "YulTypedName", + "src": "2428:2:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2493:4:12", + "nodeType": "YulLiteral", + "src": "2493:4:12", + "type": "", + "value": "0x20" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2507:3:12", + "nodeType": "YulLiteral", + "src": "2507:3:12", + "type": "", + "value": "255" + }, + { + "name": "vs", + "nativeSrc": "2512:2:12", + "nodeType": "YulIdentifier", + "src": "2512:2:12" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "2503:3:12", + "nodeType": "YulIdentifier", + "src": "2503:3:12" + }, + "nativeSrc": "2503:12:12", + "nodeType": "YulFunctionCall", + "src": "2503:12:12" + }, + { + "kind": "number", + "nativeSrc": "2517:2:12", + "nodeType": "YulLiteral", + "src": "2517:2:12", + "type": "", + "value": "27" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2499:3:12", + "nodeType": "YulIdentifier", + "src": "2499:3:12" + }, + "nativeSrc": "2499:21:12", + "nodeType": "YulFunctionCall", + "src": "2499:21:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2486:6:12", + "nodeType": "YulIdentifier", + "src": "2486:6:12" + }, + "nativeSrc": "2486:35:12", + "nodeType": "YulFunctionCall", + "src": "2486:35:12" + }, + "nativeSrc": "2486:35:12", + "nodeType": "YulExpressionStatement", + "src": "2486:35:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2561:4:12", + "nodeType": "YulLiteral", + "src": "2561:4:12", + "type": "", + "value": "0x60" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2571:1:12", + "nodeType": "YulLiteral", + "src": "2571:1:12", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2578:1:12", + "nodeType": "YulLiteral", + "src": "2578:1:12", + "type": "", + "value": "1" + }, + { + "name": "vs", + "nativeSrc": "2581:2:12", + "nodeType": "YulIdentifier", + "src": "2581:2:12" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "2574:3:12", + "nodeType": "YulIdentifier", + "src": "2574:3:12" + }, + "nativeSrc": "2574:10:12", + "nodeType": "YulFunctionCall", + "src": "2574:10:12" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "2567:3:12", + "nodeType": "YulIdentifier", + "src": "2567:3:12" + }, + "nativeSrc": "2567:18:12", + "nodeType": "YulFunctionCall", + "src": "2567:18:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2554:6:12", + "nodeType": "YulIdentifier", + "src": "2554:6:12" + }, + "nativeSrc": "2554:32:12", + "nodeType": "YulFunctionCall", + "src": "2554:32:12" + }, + "nativeSrc": "2554:32:12", + "nodeType": "YulExpressionStatement", + "src": "2554:32:12" + } + ] + }, + "nativeSrc": "2390:226:12", + "nodeType": "YulCase", + "src": "2390:226:12", + "value": { + "kind": "number", + "nativeSrc": "2395:2:12", + "nodeType": "YulLiteral", + "src": "2395:2:12", + "type": "", + "value": "64" + } + }, + { + "body": { + "nativeSrc": "2645:180:12", + "nodeType": "YulBlock", + "src": "2645:180:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2678:4:12", + "nodeType": "YulLiteral", + "src": "2678:4:12", + "type": "", + "value": "0x20" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2689:1:12", + "nodeType": "YulLiteral", + "src": "2689:1:12", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "2702:9:12", + "nodeType": "YulIdentifier", + "src": "2702:9:12" + }, + { + "kind": "number", + "nativeSrc": "2713:4:12", + "nodeType": "YulLiteral", + "src": "2713:4:12", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2698:3:12", + "nodeType": "YulIdentifier", + "src": "2698:3:12" + }, + "nativeSrc": "2698:20:12", + "nodeType": "YulFunctionCall", + "src": "2698:20:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2692:5:12", + "nodeType": "YulIdentifier", + "src": "2692:5:12" + }, + "nativeSrc": "2692:27:12", + "nodeType": "YulFunctionCall", + "src": "2692:27:12" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "2684:4:12", + "nodeType": "YulIdentifier", + "src": "2684:4:12" + }, + "nativeSrc": "2684:36:12", + "nodeType": "YulFunctionCall", + "src": "2684:36:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2671:6:12", + "nodeType": "YulIdentifier", + "src": "2671:6:12" + }, + "nativeSrc": "2671:50:12", + "nodeType": "YulFunctionCall", + "src": "2671:50:12" + }, + "nativeSrc": "2671:50:12", + "nodeType": "YulExpressionStatement", + "src": "2671:50:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2761:4:12", + "nodeType": "YulLiteral", + "src": "2761:4:12", + "type": "", + "value": "0x60" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "2777:9:12", + "nodeType": "YulIdentifier", + "src": "2777:9:12" + }, + { + "kind": "number", + "nativeSrc": "2788:4:12", + "nodeType": "YulLiteral", + "src": "2788:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2773:3:12", + "nodeType": "YulIdentifier", + "src": "2773:3:12" + }, + "nativeSrc": "2773:20:12", + "nodeType": "YulFunctionCall", + "src": "2773:20:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2767:5:12", + "nodeType": "YulIdentifier", + "src": "2767:5:12" + }, + "nativeSrc": "2767:27:12", + "nodeType": "YulFunctionCall", + "src": "2767:27:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2754:6:12", + "nodeType": "YulIdentifier", + "src": "2754:6:12" + }, + "nativeSrc": "2754:41:12", + "nodeType": "YulFunctionCall", + "src": "2754:41:12" + }, + "nativeSrc": "2754:41:12", + "nodeType": "YulExpressionStatement", + "src": "2754:41:12" + } + ] + }, + "nativeSrc": "2637:188:12", + "nodeType": "YulCase", + "src": "2637:188:12", + "value": { + "kind": "number", + "nativeSrc": "2642:2:12", + "nodeType": "YulLiteral", + "src": "2642:2:12", + "type": "", + "value": "65" + } + }, + { + "body": { + "nativeSrc": "2854:9:12", + "nodeType": "YulBlock", + "src": "2854:9:12", + "statements": [ + { + "nativeSrc": "2856:5:12", + "nodeType": "YulBreak", + "src": "2856:5:12" + } + ] + }, + "nativeSrc": "2846:17:12", + "nodeType": "YulCase", + "src": "2846:17:12", + "value": "default" + } + ], + "expression": { + "arguments": [ + { + "name": "signature", + "nativeSrc": "2359:9:12", + "nodeType": "YulIdentifier", + "src": "2359:9:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2353:5:12", + "nodeType": "YulIdentifier", + "src": "2353:5:12" + }, + "nativeSrc": "2353:16:12", + "nodeType": "YulFunctionCall", + "src": "2353:16:12" + }, + "nativeSrc": "2346:517:12", + "nodeType": "YulSwitch", + "src": "2346:517:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2891:4:12", + "nodeType": "YulLiteral", + "src": "2891:4:12", + "type": "", + "value": "0x00" + }, + { + "name": "hash", + "nativeSrc": "2897:4:12", + "nodeType": "YulIdentifier", + "src": "2897:4:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2884:6:12", + "nodeType": "YulIdentifier", + "src": "2884:6:12" + }, + "nativeSrc": "2884:18:12", + "nodeType": "YulFunctionCall", + "src": "2884:18:12" + }, + "nativeSrc": "2884:18:12", + "nodeType": "YulExpressionStatement", + "src": "2884:18:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2930:4:12", + "nodeType": "YulLiteral", + "src": "2930:4:12", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "2946:9:12", + "nodeType": "YulIdentifier", + "src": "2946:9:12" + }, + { + "kind": "number", + "nativeSrc": "2957:4:12", + "nodeType": "YulLiteral", + "src": "2957:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2942:3:12", + "nodeType": "YulIdentifier", + "src": "2942:3:12" + }, + "nativeSrc": "2942:20:12", + "nodeType": "YulFunctionCall", + "src": "2942:20:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2936:5:12", + "nodeType": "YulIdentifier", + "src": "2936:5:12" + }, + "nativeSrc": "2936:27:12", + "nodeType": "YulFunctionCall", + "src": "2936:27:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2923:6:12", + "nodeType": "YulIdentifier", + "src": "2923:6:12" + }, + "nativeSrc": "2923:41:12", + "nodeType": "YulFunctionCall", + "src": "2923:41:12" + }, + "nativeSrc": "2923:41:12", + "nodeType": "YulExpressionStatement", + "src": "2923:41:12" + }, + { + "nativeSrc": "2993:68:12", + "nodeType": "YulVariableDeclaration", + "src": "2993:68:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "3027:3:12", + "nodeType": "YulIdentifier", + "src": "3027:3:12" + }, + "nativeSrc": "3027:5:12", + "nodeType": "YulFunctionCall", + "src": "3027:5:12" + }, + { + "kind": "number", + "nativeSrc": "3034:1:12", + "nodeType": "YulLiteral", + "src": "3034:1:12", + "type": "", + "value": "1" + }, + { + "kind": "number", + "nativeSrc": "3037:4:12", + "nodeType": "YulLiteral", + "src": "3037:4:12", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "3043:4:12", + "nodeType": "YulLiteral", + "src": "3043:4:12", + "type": "", + "value": "0x80" + }, + { + "kind": "number", + "nativeSrc": "3049:4:12", + "nodeType": "YulLiteral", + "src": "3049:4:12", + "type": "", + "value": "0x01" + }, + { + "kind": "number", + "nativeSrc": "3055:4:12", + "nodeType": "YulLiteral", + "src": "3055:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "3016:10:12", + "nodeType": "YulIdentifier", + "src": "3016:10:12" + }, + "nativeSrc": "3016:44:12", + "nodeType": "YulFunctionCall", + "src": "3016:44:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "3010:5:12", + "nodeType": "YulIdentifier", + "src": "3010:5:12" + }, + "nativeSrc": "3010:51:12", + "nodeType": "YulFunctionCall", + "src": "3010:51:12" + }, + "variables": [ + { + "name": "recovered", + "nativeSrc": "2997:9:12", + "nodeType": "YulTypedName", + "src": "2997:9:12", + "type": "" + } + ] + }, + { + "nativeSrc": "3082:64:12", + "nodeType": "YulAssignment", + "src": "3082:64:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "3096:14:12", + "nodeType": "YulIdentifier", + "src": "3096:14:12" + }, + "nativeSrc": "3096:16:12", + "nodeType": "YulFunctionCall", + "src": "3096:16:12" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3118:2:12", + "nodeType": "YulLiteral", + "src": "3118:2:12", + "type": "", + "value": "96" + }, + { + "arguments": [ + { + "name": "signer", + "nativeSrc": "3126:6:12", + "nodeType": "YulIdentifier", + "src": "3126:6:12" + }, + { + "name": "recovered", + "nativeSrc": "3134:9:12", + "nodeType": "YulIdentifier", + "src": "3134:9:12" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "3122:3:12", + "nodeType": "YulIdentifier", + "src": "3122:3:12" + }, + "nativeSrc": "3122:22:12", + "nodeType": "YulFunctionCall", + "src": "3122:22:12" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "3114:3:12", + "nodeType": "YulIdentifier", + "src": "3114:3:12" + }, + "nativeSrc": "3114:31:12", + "nodeType": "YulFunctionCall", + "src": "3114:31:12" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "3093:2:12", + "nodeType": "YulIdentifier", + "src": "3093:2:12" + }, + "nativeSrc": "3093:53:12", + "nodeType": "YulFunctionCall", + "src": "3093:53:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "3082:7:12", + "nodeType": "YulIdentifier", + "src": "3082:7:12" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3174:4:12", + "nodeType": "YulLiteral", + "src": "3174:4:12", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "3180:1:12", + "nodeType": "YulLiteral", + "src": "3180:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3167:6:12", + "nodeType": "YulIdentifier", + "src": "3167:6:12" + }, + "nativeSrc": "3167:15:12", + "nodeType": "YulFunctionCall", + "src": "3167:15:12" + }, + "nativeSrc": "3167:15:12", + "nodeType": "YulExpressionStatement", + "src": "3167:15:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3236:4:12", + "nodeType": "YulLiteral", + "src": "3236:4:12", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "3242:1:12", + "nodeType": "YulIdentifier", + "src": "3242:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3229:6:12", + "nodeType": "YulIdentifier", + "src": "3229:6:12" + }, + "nativeSrc": "3229:15:12", + "nodeType": "YulFunctionCall", + "src": "3229:15:12" + }, + "nativeSrc": "3229:15:12", + "nodeType": "YulExpressionStatement", + "src": "3229:15:12" + }, + { + "nativeSrc": "3301:5:12", + "nodeType": "YulBreak", + "src": "3301:5:12" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "signer", + "nativeSrc": "2315:6:12", + "nodeType": "YulIdentifier", + "src": "2315:6:12" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "2303:11:12", + "nodeType": "YulIdentifier", + "src": "2303:11:12" + }, + "nativeSrc": "2303:19:12", + "nodeType": "YulFunctionCall", + "src": "2303:19:12" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "2296:6:12", + "nodeType": "YulIdentifier", + "src": "2296:6:12" + }, + "nativeSrc": "2296:27:12", + "nodeType": "YulFunctionCall", + "src": "2296:27:12" + }, + "nativeSrc": "2293:1031:12", + "nodeType": "YulIf", + "src": "2293:1031:12" + }, + { + "nativeSrc": "3341:29:12", + "nodeType": "YulVariableDeclaration", + "src": "3341:29:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3354:3:12", + "nodeType": "YulLiteral", + "src": "3354:3:12", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "3359:10:12", + "nodeType": "YulLiteral", + "src": "3359:10:12", + "type": "", + "value": "0x1626ba7e" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "3350:3:12", + "nodeType": "YulIdentifier", + "src": "3350:3:12" + }, + "nativeSrc": "3350:20:12", + "nodeType": "YulFunctionCall", + "src": "3350:20:12" + }, + "variables": [ + { + "name": "f", + "nativeSrc": "3345:1:12", + "nodeType": "YulTypedName", + "src": "3345:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "3394:1:12", + "nodeType": "YulIdentifier", + "src": "3394:1:12" + }, + { + "name": "f", + "nativeSrc": "3397:1:12", + "nodeType": "YulIdentifier", + "src": "3397:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3387:6:12", + "nodeType": "YulIdentifier", + "src": "3387:6:12" + }, + "nativeSrc": "3387:12:12", + "nodeType": "YulFunctionCall", + "src": "3387:12:12" + }, + "nativeSrc": "3387:12:12", + "nodeType": "YulExpressionStatement", + "src": "3387:12:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "3486:1:12", + "nodeType": "YulIdentifier", + "src": "3486:1:12" + }, + { + "kind": "number", + "nativeSrc": "3489:4:12", + "nodeType": "YulLiteral", + "src": "3489:4:12", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3482:3:12", + "nodeType": "YulIdentifier", + "src": "3482:3:12" + }, + "nativeSrc": "3482:12:12", + "nodeType": "YulFunctionCall", + "src": "3482:12:12" + }, + { + "name": "hash", + "nativeSrc": "3496:4:12", + "nodeType": "YulIdentifier", + "src": "3496:4:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3475:6:12", + "nodeType": "YulIdentifier", + "src": "3475:6:12" + }, + "nativeSrc": "3475:26:12", + "nodeType": "YulFunctionCall", + "src": "3475:26:12" + }, + "nativeSrc": "3475:26:12", + "nodeType": "YulExpressionStatement", + "src": "3475:26:12" + }, + { + "nativeSrc": "3518:21:12", + "nodeType": "YulVariableDeclaration", + "src": "3518:21:12", + "value": { + "arguments": [ + { + "name": "m", + "nativeSrc": "3531:1:12", + "nodeType": "YulIdentifier", + "src": "3531:1:12" + }, + { + "kind": "number", + "nativeSrc": "3534:4:12", + "nodeType": "YulLiteral", + "src": "3534:4:12", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3527:3:12", + "nodeType": "YulIdentifier", + "src": "3527:3:12" + }, + "nativeSrc": "3527:12:12", + "nodeType": "YulFunctionCall", + "src": "3527:12:12" + }, + "variables": [ + { + "name": "d", + "nativeSrc": "3522:1:12", + "nodeType": "YulTypedName", + "src": "3522:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "d", + "nativeSrc": "3563:1:12", + "nodeType": "YulIdentifier", + "src": "3563:1:12" + }, + { + "kind": "number", + "nativeSrc": "3566:4:12", + "nodeType": "YulLiteral", + "src": "3566:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3556:6:12", + "nodeType": "YulIdentifier", + "src": "3556:6:12" + }, + "nativeSrc": "3556:15:12", + "nodeType": "YulFunctionCall", + "src": "3556:15:12" + }, + "nativeSrc": "3556:15:12", + "nodeType": "YulExpressionStatement", + "src": "3556:15:12" + }, + { + "nativeSrc": "3684:36:12", + "nodeType": "YulVariableDeclaration", + "src": "3684:36:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3697:4:12", + "nodeType": "YulLiteral", + "src": "3697:4:12", + "type": "", + "value": "0x20" + }, + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "3709:9:12", + "nodeType": "YulIdentifier", + "src": "3709:9:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "3703:5:12", + "nodeType": "YulIdentifier", + "src": "3703:5:12" + }, + "nativeSrc": "3703:16:12", + "nodeType": "YulFunctionCall", + "src": "3703:16:12" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3693:3:12", + "nodeType": "YulIdentifier", + "src": "3693:3:12" + }, + "nativeSrc": "3693:27:12", + "nodeType": "YulFunctionCall", + "src": "3693:27:12" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "3688:1:12", + "nodeType": "YulTypedName", + "src": "3688:1:12", + "type": "" + } + ] + }, + { + "nativeSrc": "3737:65:12", + "nodeType": "YulVariableDeclaration", + "src": "3737:65:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "3762:3:12", + "nodeType": "YulIdentifier", + "src": "3762:3:12" + }, + "nativeSrc": "3762:5:12", + "nodeType": "YulFunctionCall", + "src": "3762:5:12" + }, + { + "kind": "number", + "nativeSrc": "3769:1:12", + "nodeType": "YulLiteral", + "src": "3769:1:12", + "type": "", + "value": "4" + }, + { + "name": "signature", + "nativeSrc": "3772:9:12", + "nodeType": "YulIdentifier", + "src": "3772:9:12" + }, + { + "name": "n", + "nativeSrc": "3783:1:12", + "nodeType": "YulIdentifier", + "src": "3783:1:12" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "3790:1:12", + "nodeType": "YulIdentifier", + "src": "3790:1:12" + }, + { + "kind": "number", + "nativeSrc": "3793:4:12", + "nodeType": "YulLiteral", + "src": "3793:4:12", + "type": "", + "value": "0x44" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3786:3:12", + "nodeType": "YulIdentifier", + "src": "3786:3:12" + }, + "nativeSrc": "3786:12:12", + "nodeType": "YulFunctionCall", + "src": "3786:12:12" + }, + { + "name": "n", + "nativeSrc": "3800:1:12", + "nodeType": "YulIdentifier", + "src": "3800:1:12" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "3751:10:12", + "nodeType": "YulIdentifier", + "src": "3751:10:12" + }, + "nativeSrc": "3751:51:12", + "nodeType": "YulFunctionCall", + "src": "3751:51:12" + }, + "variables": [ + { + "name": "copied", + "nativeSrc": "3741:6:12", + "nodeType": "YulTypedName", + "src": "3741:6:12", + "type": "" + } + ] + }, + { + "nativeSrc": "3819:77:12", + "nodeType": "YulAssignment", + "src": "3819:77:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "3841:3:12", + "nodeType": "YulIdentifier", + "src": "3841:3:12" + }, + "nativeSrc": "3841:5:12", + "nodeType": "YulFunctionCall", + "src": "3841:5:12" + }, + { + "name": "signer", + "nativeSrc": "3848:6:12", + "nodeType": "YulIdentifier", + "src": "3848:6:12" + }, + { + "name": "m", + "nativeSrc": "3856:1:12", + "nodeType": "YulIdentifier", + "src": "3856:1:12" + }, + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "3863:14:12", + "nodeType": "YulIdentifier", + "src": "3863:14:12" + }, + "nativeSrc": "3863:16:12", + "nodeType": "YulFunctionCall", + "src": "3863:16:12" + }, + { + "kind": "number", + "nativeSrc": "3881:4:12", + "nodeType": "YulLiteral", + "src": "3881:4:12", + "type": "", + "value": "0x44" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3859:3:12", + "nodeType": "YulIdentifier", + "src": "3859:3:12" + }, + "nativeSrc": "3859:27:12", + "nodeType": "YulFunctionCall", + "src": "3859:27:12" + }, + { + "name": "d", + "nativeSrc": "3888:1:12", + "nodeType": "YulIdentifier", + "src": "3888:1:12" + }, + { + "kind": "number", + "nativeSrc": "3891:4:12", + "nodeType": "YulLiteral", + "src": "3891:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "3830:10:12", + "nodeType": "YulIdentifier", + "src": "3830:10:12" + }, + "nativeSrc": "3830:66:12", + "nodeType": "YulFunctionCall", + "src": "3830:66:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "3819:7:12", + "nodeType": "YulIdentifier", + "src": "3819:7:12" + } + ] + }, + { + "nativeSrc": "3913:53:12", + "nodeType": "YulAssignment", + "src": "3913:53:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "d", + "nativeSrc": "3937:1:12", + "nodeType": "YulIdentifier", + "src": "3937:1:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "3931:5:12", + "nodeType": "YulIdentifier", + "src": "3931:5:12" + }, + "nativeSrc": "3931:8:12", + "nodeType": "YulFunctionCall", + "src": "3931:8:12" + }, + { + "name": "f", + "nativeSrc": "3941:1:12", + "nodeType": "YulIdentifier", + "src": "3941:1:12" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "3928:2:12", + "nodeType": "YulIdentifier", + "src": "3928:2:12" + }, + "nativeSrc": "3928:15:12", + "nodeType": "YulFunctionCall", + "src": "3928:15:12" + }, + { + "arguments": [ + { + "name": "isValid", + "nativeSrc": "3949:7:12", + "nodeType": "YulIdentifier", + "src": "3949:7:12" + }, + { + "name": "copied", + "nativeSrc": "3958:6:12", + "nodeType": "YulIdentifier", + "src": "3958:6:12" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "3945:3:12", + "nodeType": "YulIdentifier", + "src": "3945:3:12" + }, + "nativeSrc": "3945:20:12", + "nodeType": "YulFunctionCall", + "src": "3945:20:12" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "3924:3:12", + "nodeType": "YulIdentifier", + "src": "3924:3:12" + }, + "nativeSrc": "3924:42:12", + "nodeType": "YulFunctionCall", + "src": "3924:42:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "3913:7:12", + "nodeType": "YulIdentifier", + "src": "3913:7:12" + } + ] + }, + { + "nativeSrc": "3983:5:12", + "nodeType": "YulBreak", + "src": "3983:5:12" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "2270:1:12", + "nodeType": "YulLiteral", + "src": "2270:1:12", + "type": "", + "value": "1" + }, + "nativeSrc": "2263:1739:12", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "2272:2:12", + "nodeType": "YulBlock", + "src": "2272:2:12", + "statements": [] + }, + "pre": { + "nativeSrc": "2267:2:12", + "nodeType": "YulBlock", + "src": "2267:2:12", + "statements": [] + }, + "src": "2263:1739:12" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6153, + "isOffset": false, + "isSlot": false, + "src": "2897:4:12", + "valueSize": 1 + }, + { + "declaration": 6153, + "isOffset": false, + "isSlot": false, + "src": "3496:4:12", + "valueSize": 1 + }, + { + "declaration": 6158, + "isOffset": false, + "isSlot": false, + "src": "3082:7:12", + "valueSize": 1 + }, + { + "declaration": 6158, + "isOffset": false, + "isSlot": false, + "src": "3819:7:12", + "valueSize": 1 + }, + { + "declaration": 6158, + "isOffset": false, + "isSlot": false, + "src": "3913:7:12", + "valueSize": 1 + }, + { + "declaration": 6158, + "isOffset": false, + "isSlot": false, + "src": "3949:7:12", + "valueSize": 1 + }, + { + "declaration": 6155, + "isOffset": false, + "isSlot": false, + "src": "2359:9:12", + "valueSize": 1 + }, + { + "declaration": 6155, + "isOffset": false, + "isSlot": false, + "src": "2444:9:12", + "valueSize": 1 + }, + { + "declaration": 6155, + "isOffset": false, + "isSlot": false, + "src": "2702:9:12", + "valueSize": 1 + }, + { + "declaration": 6155, + "isOffset": false, + "isSlot": false, + "src": "2777:9:12", + "valueSize": 1 + }, + { + "declaration": 6155, + "isOffset": false, + "isSlot": false, + "src": "2946:9:12", + "valueSize": 1 + }, + { + "declaration": 6155, + "isOffset": false, + "isSlot": false, + "src": "3709:9:12", + "valueSize": 1 + }, + { + "declaration": 6155, + "isOffset": false, + "isSlot": false, + "src": "3772:9:12", + "valueSize": 1 + }, + { + "declaration": 6151, + "isOffset": false, + "isSlot": false, + "src": "2315:6:12", + "valueSize": 1 + }, + { + "declaration": 6151, + "isOffset": false, + "isSlot": false, + "src": "3126:6:12", + "valueSize": 1 + }, + { + "declaration": 6151, + "isOffset": false, + "isSlot": false, + "src": "3848:6:12", + "valueSize": 1 + } + ], + "id": 6169, + "nodeType": "InlineAssembly", + "src": "2207:1805:12" + } + ] + }, + "documentation": { + "id": 6149, + "nodeType": "StructuredDocumentation", + "src": "1755:196:12", + "text": "@dev Returns whether `signature` is valid for `signer` and `hash`.\n If `signer.code.length == 0`, then validate with `ecrecover`, else\n it will validate with ERC1271 on `signer`." + }, + "id": 6171, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isValidSignatureNow", + "nameLocation": "1965:19:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6156, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6151, + "mutability": "mutable", + "name": "signer", + "nameLocation": "1993:6:12", + "nodeType": "VariableDeclaration", + "scope": 6171, + "src": "1985:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6150, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1985:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6153, + "mutability": "mutable", + "name": "hash", + "nameLocation": "2009:4:12", + "nodeType": "VariableDeclaration", + "scope": 6171, + "src": "2001:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6152, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2001:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6155, + "mutability": "mutable", + "name": "signature", + "nameLocation": "2028:9:12", + "nodeType": "VariableDeclaration", + "scope": 6171, + "src": "2015:22:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6154, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2015:5:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "1984:54:12" + }, + "returnParameters": { + "id": 6159, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6158, + "mutability": "mutable", + "name": "isValid", + "nameLocation": "2091:7:12", + "nodeType": "VariableDeclaration", + "scope": 6171, + "src": "2086:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6157, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2086:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2085:14:12" + }, + "scope": 6365, + "src": "1956:2062:12", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6193, + "nodeType": "Block", + "src": "4383:1941:12", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 6188, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6183, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6174, + "src": "4397:6:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 6186, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4415:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 6185, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4407:7:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 6184, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4407:7:12", + "typeDescriptions": {} + } + }, + "id": 6187, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4407:10:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4397:20:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6191, + "nodeType": "IfStatement", + "src": "4393:40:12", + "trueBody": { + "expression": { + "id": 6189, + "name": "isValid", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6181, + "src": "4426:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 6182, + "id": 6190, + "nodeType": "Return", + "src": "4419:14:12" + } + }, + { + "AST": { + "nativeSrc": "4495:1823:12", + "nodeType": "YulBlock", + "src": "4495:1823:12", + "statements": [ + { + "nativeSrc": "4509:20:12", + "nodeType": "YulVariableDeclaration", + "src": "4509:20:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4524:4:12", + "nodeType": "YulLiteral", + "src": "4524:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "4518:5:12", + "nodeType": "YulIdentifier", + "src": "4518:5:12" + }, + "nativeSrc": "4518:11:12", + "nodeType": "YulFunctionCall", + "src": "4518:11:12" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "4513:1:12", + "nodeType": "YulTypedName", + "src": "4513:1:12", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "4554:1754:12", + "nodeType": "YulBlock", + "src": "4554:1754:12", + "statements": [ + { + "body": { + "nativeSrc": "4603:1041:12", + "nodeType": "YulBlock", + "src": "4603:1041:12", + "statements": [ + { + "cases": [ + { + "body": { + "nativeSrc": "4677:309:12", + "nodeType": "YulBlock", + "src": "4677:309:12", + "statements": [ + { + "nativeSrc": "4703:51:12", + "nodeType": "YulVariableDeclaration", + "src": "4703:51:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "signature.offset", + "nativeSrc": "4730:16:12", + "nodeType": "YulIdentifier", + "src": "4730:16:12" + }, + { + "kind": "number", + "nativeSrc": "4748:4:12", + "nodeType": "YulLiteral", + "src": "4748:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4726:3:12", + "nodeType": "YulIdentifier", + "src": "4726:3:12" + }, + "nativeSrc": "4726:27:12", + "nodeType": "YulFunctionCall", + "src": "4726:27:12" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "4713:12:12", + "nodeType": "YulIdentifier", + "src": "4713:12:12" + }, + "nativeSrc": "4713:41:12", + "nodeType": "YulFunctionCall", + "src": "4713:41:12" + }, + "variables": [ + { + "name": "vs", + "nativeSrc": "4707:2:12", + "nodeType": "YulTypedName", + "src": "4707:2:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4786:4:12", + "nodeType": "YulLiteral", + "src": "4786:4:12", + "type": "", + "value": "0x20" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4800:3:12", + "nodeType": "YulLiteral", + "src": "4800:3:12", + "type": "", + "value": "255" + }, + { + "name": "vs", + "nativeSrc": "4805:2:12", + "nodeType": "YulIdentifier", + "src": "4805:2:12" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "4796:3:12", + "nodeType": "YulIdentifier", + "src": "4796:3:12" + }, + "nativeSrc": "4796:12:12", + "nodeType": "YulFunctionCall", + "src": "4796:12:12" + }, + { + "kind": "number", + "nativeSrc": "4810:2:12", + "nodeType": "YulLiteral", + "src": "4810:2:12", + "type": "", + "value": "27" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4792:3:12", + "nodeType": "YulIdentifier", + "src": "4792:3:12" + }, + "nativeSrc": "4792:21:12", + "nodeType": "YulFunctionCall", + "src": "4792:21:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4779:6:12", + "nodeType": "YulIdentifier", + "src": "4779:6:12" + }, + "nativeSrc": "4779:35:12", + "nodeType": "YulFunctionCall", + "src": "4779:35:12" + }, + "nativeSrc": "4779:35:12", + "nodeType": "YulExpressionStatement", + "src": "4779:35:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4854:4:12", + "nodeType": "YulLiteral", + "src": "4854:4:12", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "signature.offset", + "nativeSrc": "4873:16:12", + "nodeType": "YulIdentifier", + "src": "4873:16:12" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "4860:12:12", + "nodeType": "YulIdentifier", + "src": "4860:12:12" + }, + "nativeSrc": "4860:30:12", + "nodeType": "YulFunctionCall", + "src": "4860:30:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4847:6:12", + "nodeType": "YulIdentifier", + "src": "4847:6:12" + }, + "nativeSrc": "4847:44:12", + "nodeType": "YulFunctionCall", + "src": "4847:44:12" + }, + "nativeSrc": "4847:44:12", + "nodeType": "YulExpressionStatement", + "src": "4847:44:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4931:4:12", + "nodeType": "YulLiteral", + "src": "4931:4:12", + "type": "", + "value": "0x60" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4941:1:12", + "nodeType": "YulLiteral", + "src": "4941:1:12", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4948:1:12", + "nodeType": "YulLiteral", + "src": "4948:1:12", + "type": "", + "value": "1" + }, + { + "name": "vs", + "nativeSrc": "4951:2:12", + "nodeType": "YulIdentifier", + "src": "4951:2:12" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "4944:3:12", + "nodeType": "YulIdentifier", + "src": "4944:3:12" + }, + "nativeSrc": "4944:10:12", + "nodeType": "YulFunctionCall", + "src": "4944:10:12" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "4937:3:12", + "nodeType": "YulIdentifier", + "src": "4937:3:12" + }, + "nativeSrc": "4937:18:12", + "nodeType": "YulFunctionCall", + "src": "4937:18:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4924:6:12", + "nodeType": "YulIdentifier", + "src": "4924:6:12" + }, + "nativeSrc": "4924:32:12", + "nodeType": "YulFunctionCall", + "src": "4924:32:12" + }, + "nativeSrc": "4924:32:12", + "nodeType": "YulExpressionStatement", + "src": "4924:32:12" + } + ] + }, + "nativeSrc": "4669:317:12", + "nodeType": "YulCase", + "src": "4669:317:12", + "value": { + "kind": "number", + "nativeSrc": "4674:2:12", + "nodeType": "YulLiteral", + "src": "4674:2:12", + "type": "", + "value": "64" + } + }, + { + "body": { + "nativeSrc": "5015:200:12", + "nodeType": "YulBlock", + "src": "5015:200:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5048:4:12", + "nodeType": "YulLiteral", + "src": "5048:4:12", + "type": "", + "value": "0x20" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5059:1:12", + "nodeType": "YulLiteral", + "src": "5059:1:12", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "signature.offset", + "nativeSrc": "5079:16:12", + "nodeType": "YulIdentifier", + "src": "5079:16:12" + }, + { + "kind": "number", + "nativeSrc": "5097:4:12", + "nodeType": "YulLiteral", + "src": "5097:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5075:3:12", + "nodeType": "YulIdentifier", + "src": "5075:3:12" + }, + "nativeSrc": "5075:27:12", + "nodeType": "YulFunctionCall", + "src": "5075:27:12" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "5062:12:12", + "nodeType": "YulIdentifier", + "src": "5062:12:12" + }, + "nativeSrc": "5062:41:12", + "nodeType": "YulFunctionCall", + "src": "5062:41:12" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "5054:4:12", + "nodeType": "YulIdentifier", + "src": "5054:4:12" + }, + "nativeSrc": "5054:50:12", + "nodeType": "YulFunctionCall", + "src": "5054:50:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5041:6:12", + "nodeType": "YulIdentifier", + "src": "5041:6:12" + }, + "nativeSrc": "5041:64:12", + "nodeType": "YulFunctionCall", + "src": "5041:64:12" + }, + "nativeSrc": "5041:64:12", + "nodeType": "YulExpressionStatement", + "src": "5041:64:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5151:4:12", + "nodeType": "YulLiteral", + "src": "5151:4:12", + "type": "", + "value": "0x40" + }, + { + "name": "signature.offset", + "nativeSrc": "5157:16:12", + "nodeType": "YulIdentifier", + "src": "5157:16:12" + }, + { + "kind": "number", + "nativeSrc": "5175:4:12", + "nodeType": "YulLiteral", + "src": "5175:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "calldatacopy", + "nativeSrc": "5138:12:12", + "nodeType": "YulIdentifier", + "src": "5138:12:12" + }, + "nativeSrc": "5138:42:12", + "nodeType": "YulFunctionCall", + "src": "5138:42:12" + }, + "nativeSrc": "5138:42:12", + "nodeType": "YulExpressionStatement", + "src": "5138:42:12" + } + ] + }, + "nativeSrc": "5007:208:12", + "nodeType": "YulCase", + "src": "5007:208:12", + "value": { + "kind": "number", + "nativeSrc": "5012:2:12", + "nodeType": "YulLiteral", + "src": "5012:2:12", + "type": "", + "value": "65" + } + }, + { + "body": { + "nativeSrc": "5244:9:12", + "nodeType": "YulBlock", + "src": "5244:9:12", + "statements": [ + { + "nativeSrc": "5246:5:12", + "nodeType": "YulBreak", + "src": "5246:5:12" + } + ] + }, + "nativeSrc": "5236:17:12", + "nodeType": "YulCase", + "src": "5236:17:12", + "value": "default" + } + ], + "expression": { + "name": "signature.length", + "nativeSrc": "4632:16:12", + "nodeType": "YulIdentifier", + "src": "4632:16:12" + }, + "nativeSrc": "4625:628:12", + "nodeType": "YulSwitch", + "src": "4625:628:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5281:4:12", + "nodeType": "YulLiteral", + "src": "5281:4:12", + "type": "", + "value": "0x00" + }, + { + "name": "hash", + "nativeSrc": "5287:4:12", + "nodeType": "YulIdentifier", + "src": "5287:4:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5274:6:12", + "nodeType": "YulIdentifier", + "src": "5274:6:12" + }, + "nativeSrc": "5274:18:12", + "nodeType": "YulFunctionCall", + "src": "5274:18:12" + }, + "nativeSrc": "5274:18:12", + "nodeType": "YulExpressionStatement", + "src": "5274:18:12" + }, + { + "nativeSrc": "5313:68:12", + "nodeType": "YulVariableDeclaration", + "src": "5313:68:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "5347:3:12", + "nodeType": "YulIdentifier", + "src": "5347:3:12" + }, + "nativeSrc": "5347:5:12", + "nodeType": "YulFunctionCall", + "src": "5347:5:12" + }, + { + "kind": "number", + "nativeSrc": "5354:1:12", + "nodeType": "YulLiteral", + "src": "5354:1:12", + "type": "", + "value": "1" + }, + { + "kind": "number", + "nativeSrc": "5357:4:12", + "nodeType": "YulLiteral", + "src": "5357:4:12", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "5363:4:12", + "nodeType": "YulLiteral", + "src": "5363:4:12", + "type": "", + "value": "0x80" + }, + { + "kind": "number", + "nativeSrc": "5369:4:12", + "nodeType": "YulLiteral", + "src": "5369:4:12", + "type": "", + "value": "0x01" + }, + { + "kind": "number", + "nativeSrc": "5375:4:12", + "nodeType": "YulLiteral", + "src": "5375:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "5336:10:12", + "nodeType": "YulIdentifier", + "src": "5336:10:12" + }, + "nativeSrc": "5336:44:12", + "nodeType": "YulFunctionCall", + "src": "5336:44:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "5330:5:12", + "nodeType": "YulIdentifier", + "src": "5330:5:12" + }, + "nativeSrc": "5330:51:12", + "nodeType": "YulFunctionCall", + "src": "5330:51:12" + }, + "variables": [ + { + "name": "recovered", + "nativeSrc": "5317:9:12", + "nodeType": "YulTypedName", + "src": "5317:9:12", + "type": "" + } + ] + }, + { + "nativeSrc": "5402:64:12", + "nodeType": "YulAssignment", + "src": "5402:64:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "5416:14:12", + "nodeType": "YulIdentifier", + "src": "5416:14:12" + }, + "nativeSrc": "5416:16:12", + "nodeType": "YulFunctionCall", + "src": "5416:16:12" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5438:2:12", + "nodeType": "YulLiteral", + "src": "5438:2:12", + "type": "", + "value": "96" + }, + { + "arguments": [ + { + "name": "signer", + "nativeSrc": "5446:6:12", + "nodeType": "YulIdentifier", + "src": "5446:6:12" + }, + { + "name": "recovered", + "nativeSrc": "5454:9:12", + "nodeType": "YulIdentifier", + "src": "5454:9:12" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "5442:3:12", + "nodeType": "YulIdentifier", + "src": "5442:3:12" + }, + "nativeSrc": "5442:22:12", + "nodeType": "YulFunctionCall", + "src": "5442:22:12" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "5434:3:12", + "nodeType": "YulIdentifier", + "src": "5434:3:12" + }, + "nativeSrc": "5434:31:12", + "nodeType": "YulFunctionCall", + "src": "5434:31:12" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "5413:2:12", + "nodeType": "YulIdentifier", + "src": "5413:2:12" + }, + "nativeSrc": "5413:53:12", + "nodeType": "YulFunctionCall", + "src": "5413:53:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "5402:7:12", + "nodeType": "YulIdentifier", + "src": "5402:7:12" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5494:4:12", + "nodeType": "YulLiteral", + "src": "5494:4:12", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "5500:1:12", + "nodeType": "YulLiteral", + "src": "5500:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5487:6:12", + "nodeType": "YulIdentifier", + "src": "5487:6:12" + }, + "nativeSrc": "5487:15:12", + "nodeType": "YulFunctionCall", + "src": "5487:15:12" + }, + "nativeSrc": "5487:15:12", + "nodeType": "YulExpressionStatement", + "src": "5487:15:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5556:4:12", + "nodeType": "YulLiteral", + "src": "5556:4:12", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "5562:1:12", + "nodeType": "YulIdentifier", + "src": "5562:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5549:6:12", + "nodeType": "YulIdentifier", + "src": "5549:6:12" + }, + "nativeSrc": "5549:15:12", + "nodeType": "YulFunctionCall", + "src": "5549:15:12" + }, + "nativeSrc": "5549:15:12", + "nodeType": "YulExpressionStatement", + "src": "5549:15:12" + }, + { + "nativeSrc": "5621:5:12", + "nodeType": "YulBreak", + "src": "5621:5:12" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "signer", + "nativeSrc": "4594:6:12", + "nodeType": "YulIdentifier", + "src": "4594:6:12" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "4582:11:12", + "nodeType": "YulIdentifier", + "src": "4582:11:12" + }, + "nativeSrc": "4582:19:12", + "nodeType": "YulFunctionCall", + "src": "4582:19:12" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "4575:6:12", + "nodeType": "YulIdentifier", + "src": "4575:6:12" + }, + "nativeSrc": "4575:27:12", + "nodeType": "YulFunctionCall", + "src": "4575:27:12" + }, + "nativeSrc": "4572:1072:12", + "nodeType": "YulIf", + "src": "4572:1072:12" + }, + { + "nativeSrc": "5661:29:12", + "nodeType": "YulVariableDeclaration", + "src": "5661:29:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5674:3:12", + "nodeType": "YulLiteral", + "src": "5674:3:12", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "5679:10:12", + "nodeType": "YulLiteral", + "src": "5679:10:12", + "type": "", + "value": "0x1626ba7e" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "5670:3:12", + "nodeType": "YulIdentifier", + "src": "5670:3:12" + }, + "nativeSrc": "5670:20:12", + "nodeType": "YulFunctionCall", + "src": "5670:20:12" + }, + "variables": [ + { + "name": "f", + "nativeSrc": "5665:1:12", + "nodeType": "YulTypedName", + "src": "5665:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "5714:1:12", + "nodeType": "YulIdentifier", + "src": "5714:1:12" + }, + { + "name": "f", + "nativeSrc": "5717:1:12", + "nodeType": "YulIdentifier", + "src": "5717:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5707:6:12", + "nodeType": "YulIdentifier", + "src": "5707:6:12" + }, + "nativeSrc": "5707:12:12", + "nodeType": "YulFunctionCall", + "src": "5707:12:12" + }, + "nativeSrc": "5707:12:12", + "nodeType": "YulExpressionStatement", + "src": "5707:12:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "5806:1:12", + "nodeType": "YulIdentifier", + "src": "5806:1:12" + }, + { + "kind": "number", + "nativeSrc": "5809:4:12", + "nodeType": "YulLiteral", + "src": "5809:4:12", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5802:3:12", + "nodeType": "YulIdentifier", + "src": "5802:3:12" + }, + "nativeSrc": "5802:12:12", + "nodeType": "YulFunctionCall", + "src": "5802:12:12" + }, + { + "name": "hash", + "nativeSrc": "5816:4:12", + "nodeType": "YulIdentifier", + "src": "5816:4:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5795:6:12", + "nodeType": "YulIdentifier", + "src": "5795:6:12" + }, + "nativeSrc": "5795:26:12", + "nodeType": "YulFunctionCall", + "src": "5795:26:12" + }, + "nativeSrc": "5795:26:12", + "nodeType": "YulExpressionStatement", + "src": "5795:26:12" + }, + { + "nativeSrc": "5838:21:12", + "nodeType": "YulVariableDeclaration", + "src": "5838:21:12", + "value": { + "arguments": [ + { + "name": "m", + "nativeSrc": "5851:1:12", + "nodeType": "YulIdentifier", + "src": "5851:1:12" + }, + { + "kind": "number", + "nativeSrc": "5854:4:12", + "nodeType": "YulLiteral", + "src": "5854:4:12", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5847:3:12", + "nodeType": "YulIdentifier", + "src": "5847:3:12" + }, + "nativeSrc": "5847:12:12", + "nodeType": "YulFunctionCall", + "src": "5847:12:12" + }, + "variables": [ + { + "name": "d", + "nativeSrc": "5842:1:12", + "nodeType": "YulTypedName", + "src": "5842:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "d", + "nativeSrc": "5883:1:12", + "nodeType": "YulIdentifier", + "src": "5883:1:12" + }, + { + "kind": "number", + "nativeSrc": "5886:4:12", + "nodeType": "YulLiteral", + "src": "5886:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5876:6:12", + "nodeType": "YulIdentifier", + "src": "5876:6:12" + }, + "nativeSrc": "5876:15:12", + "nodeType": "YulFunctionCall", + "src": "5876:15:12" + }, + "nativeSrc": "5876:15:12", + "nodeType": "YulExpressionStatement", + "src": "5876:15:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "5969:1:12", + "nodeType": "YulIdentifier", + "src": "5969:1:12" + }, + { + "kind": "number", + "nativeSrc": "5972:4:12", + "nodeType": "YulLiteral", + "src": "5972:4:12", + "type": "", + "value": "0x44" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5965:3:12", + "nodeType": "YulIdentifier", + "src": "5965:3:12" + }, + "nativeSrc": "5965:12:12", + "nodeType": "YulFunctionCall", + "src": "5965:12:12" + }, + { + "name": "signature.length", + "nativeSrc": "5979:16:12", + "nodeType": "YulIdentifier", + "src": "5979:16:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5958:6:12", + "nodeType": "YulIdentifier", + "src": "5958:6:12" + }, + "nativeSrc": "5958:38:12", + "nodeType": "YulFunctionCall", + "src": "5958:38:12" + }, + "nativeSrc": "5958:38:12", + "nodeType": "YulExpressionStatement", + "src": "5958:38:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "6076:1:12", + "nodeType": "YulIdentifier", + "src": "6076:1:12" + }, + { + "kind": "number", + "nativeSrc": "6079:4:12", + "nodeType": "YulLiteral", + "src": "6079:4:12", + "type": "", + "value": "0x64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6072:3:12", + "nodeType": "YulIdentifier", + "src": "6072:3:12" + }, + "nativeSrc": "6072:12:12", + "nodeType": "YulFunctionCall", + "src": "6072:12:12" + }, + { + "name": "signature.offset", + "nativeSrc": "6086:16:12", + "nodeType": "YulIdentifier", + "src": "6086:16:12" + }, + { + "name": "signature.length", + "nativeSrc": "6104:16:12", + "nodeType": "YulIdentifier", + "src": "6104:16:12" + } + ], + "functionName": { + "name": "calldatacopy", + "nativeSrc": "6059:12:12", + "nodeType": "YulIdentifier", + "src": "6059:12:12" + }, + "nativeSrc": "6059:62:12", + "nodeType": "YulFunctionCall", + "src": "6059:62:12" + }, + "nativeSrc": "6059:62:12", + "nodeType": "YulExpressionStatement", + "src": "6059:62:12" + }, + { + "nativeSrc": "6138:77:12", + "nodeType": "YulAssignment", + "src": "6138:77:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "6160:3:12", + "nodeType": "YulIdentifier", + "src": "6160:3:12" + }, + "nativeSrc": "6160:5:12", + "nodeType": "YulFunctionCall", + "src": "6160:5:12" + }, + { + "name": "signer", + "nativeSrc": "6167:6:12", + "nodeType": "YulIdentifier", + "src": "6167:6:12" + }, + { + "name": "m", + "nativeSrc": "6175:1:12", + "nodeType": "YulIdentifier", + "src": "6175:1:12" + }, + { + "arguments": [ + { + "name": "signature.length", + "nativeSrc": "6182:16:12", + "nodeType": "YulIdentifier", + "src": "6182:16:12" + }, + { + "kind": "number", + "nativeSrc": "6200:4:12", + "nodeType": "YulLiteral", + "src": "6200:4:12", + "type": "", + "value": "0x64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6178:3:12", + "nodeType": "YulIdentifier", + "src": "6178:3:12" + }, + "nativeSrc": "6178:27:12", + "nodeType": "YulFunctionCall", + "src": "6178:27:12" + }, + { + "name": "d", + "nativeSrc": "6207:1:12", + "nodeType": "YulIdentifier", + "src": "6207:1:12" + }, + { + "kind": "number", + "nativeSrc": "6210:4:12", + "nodeType": "YulLiteral", + "src": "6210:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "6149:10:12", + "nodeType": "YulIdentifier", + "src": "6149:10:12" + }, + "nativeSrc": "6149:66:12", + "nodeType": "YulFunctionCall", + "src": "6149:66:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "6138:7:12", + "nodeType": "YulIdentifier", + "src": "6138:7:12" + } + ] + }, + { + "nativeSrc": "6232:40:12", + "nodeType": "YulAssignment", + "src": "6232:40:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "d", + "nativeSrc": "6256:1:12", + "nodeType": "YulIdentifier", + "src": "6256:1:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "6250:5:12", + "nodeType": "YulIdentifier", + "src": "6250:5:12" + }, + "nativeSrc": "6250:8:12", + "nodeType": "YulFunctionCall", + "src": "6250:8:12" + }, + { + "name": "f", + "nativeSrc": "6260:1:12", + "nodeType": "YulIdentifier", + "src": "6260:1:12" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "6247:2:12", + "nodeType": "YulIdentifier", + "src": "6247:2:12" + }, + "nativeSrc": "6247:15:12", + "nodeType": "YulFunctionCall", + "src": "6247:15:12" + }, + { + "name": "isValid", + "nativeSrc": "6264:7:12", + "nodeType": "YulIdentifier", + "src": "6264:7:12" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "6243:3:12", + "nodeType": "YulIdentifier", + "src": "6243:3:12" + }, + "nativeSrc": "6243:29:12", + "nodeType": "YulFunctionCall", + "src": "6243:29:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "6232:7:12", + "nodeType": "YulIdentifier", + "src": "6232:7:12" + } + ] + }, + { + "nativeSrc": "6289:5:12", + "nodeType": "YulBreak", + "src": "6289:5:12" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "4549:1:12", + "nodeType": "YulLiteral", + "src": "4549:1:12", + "type": "", + "value": "1" + }, + "nativeSrc": "4542:1766:12", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "4551:2:12", + "nodeType": "YulBlock", + "src": "4551:2:12", + "statements": [] + }, + "pre": { + "nativeSrc": "4546:2:12", + "nodeType": "YulBlock", + "src": "4546:2:12", + "statements": [] + }, + "src": "4542:1766:12" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6176, + "isOffset": false, + "isSlot": false, + "src": "5287:4:12", + "valueSize": 1 + }, + { + "declaration": 6176, + "isOffset": false, + "isSlot": false, + "src": "5816:4:12", + "valueSize": 1 + }, + { + "declaration": 6181, + "isOffset": false, + "isSlot": false, + "src": "5402:7:12", + "valueSize": 1 + }, + { + "declaration": 6181, + "isOffset": false, + "isSlot": false, + "src": "6138:7:12", + "valueSize": 1 + }, + { + "declaration": 6181, + "isOffset": false, + "isSlot": false, + "src": "6232:7:12", + "valueSize": 1 + }, + { + "declaration": 6181, + "isOffset": false, + "isSlot": false, + "src": "6264:7:12", + "valueSize": 1 + }, + { + "declaration": 6178, + "isOffset": false, + "isSlot": false, + "src": "4632:16:12", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 6178, + "isOffset": false, + "isSlot": false, + "src": "5979:16:12", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 6178, + "isOffset": false, + "isSlot": false, + "src": "6104:16:12", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 6178, + "isOffset": false, + "isSlot": false, + "src": "6182:16:12", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 6178, + "isOffset": true, + "isSlot": false, + "src": "4730:16:12", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 6178, + "isOffset": true, + "isSlot": false, + "src": "4873:16:12", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 6178, + "isOffset": true, + "isSlot": false, + "src": "5079:16:12", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 6178, + "isOffset": true, + "isSlot": false, + "src": "5157:16:12", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 6178, + "isOffset": true, + "isSlot": false, + "src": "6086:16:12", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 6174, + "isOffset": false, + "isSlot": false, + "src": "4594:6:12", + "valueSize": 1 + }, + { + "declaration": 6174, + "isOffset": false, + "isSlot": false, + "src": "5446:6:12", + "valueSize": 1 + }, + { + "declaration": 6174, + "isOffset": false, + "isSlot": false, + "src": "6167:6:12", + "valueSize": 1 + } + ], + "id": 6192, + "nodeType": "InlineAssembly", + "src": "4486:1832:12" + } + ] + }, + "documentation": { + "id": 6172, + "nodeType": "StructuredDocumentation", + "src": "4024:196:12", + "text": "@dev Returns whether `signature` is valid for `signer` and `hash`.\n If `signer.code.length == 0`, then validate with `ecrecover`, else\n it will validate with ERC1271 on `signer`." + }, + "id": 6194, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isValidSignatureNowCalldata", + "nameLocation": "4234:27:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6179, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6174, + "mutability": "mutable", + "name": "signer", + "nameLocation": "4270:6:12", + "nodeType": "VariableDeclaration", + "scope": 6194, + "src": "4262:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6173, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4262:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6176, + "mutability": "mutable", + "name": "hash", + "nameLocation": "4286:4:12", + "nodeType": "VariableDeclaration", + "scope": 6194, + "src": "4278:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6175, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4278:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6178, + "mutability": "mutable", + "name": "signature", + "nameLocation": "4307:9:12", + "nodeType": "VariableDeclaration", + "scope": 6194, + "src": "4292:24:12", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6177, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4292:5:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4261:56:12" + }, + "returnParameters": { + "id": 6182, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6181, + "mutability": "mutable", + "name": "isValid", + "nameLocation": "4370:7:12", + "nodeType": "VariableDeclaration", + "scope": 6194, + "src": "4365:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6180, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4365:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4364:14:12" + }, + "scope": 6365, + "src": "4225:2099:12", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6218, + "nodeType": "Block", + "src": "6692:1509:12", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 6213, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6208, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6197, + "src": "6706:6:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 6211, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6724:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 6210, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6716:7:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 6209, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6716:7:12", + "typeDescriptions": {} + } + }, + "id": 6212, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6716:10:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "6706:20:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6216, + "nodeType": "IfStatement", + "src": "6702:40:12", + "trueBody": { + "expression": { + "id": 6214, + "name": "isValid", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6206, + "src": "6735:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 6207, + "id": 6215, + "nodeType": "Return", + "src": "6728:14:12" + } + }, + { + "AST": { + "nativeSrc": "6804:1391:12", + "nodeType": "YulBlock", + "src": "6804:1391:12", + "statements": [ + { + "nativeSrc": "6818:20:12", + "nodeType": "YulVariableDeclaration", + "src": "6818:20:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6833:4:12", + "nodeType": "YulLiteral", + "src": "6833:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "6827:5:12", + "nodeType": "YulIdentifier", + "src": "6827:5:12" + }, + "nativeSrc": "6827:11:12", + "nodeType": "YulFunctionCall", + "src": "6827:11:12" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "6822:1:12", + "nodeType": "YulTypedName", + "src": "6822:1:12", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "6863:1322:12", + "nodeType": "YulBlock", + "src": "6863:1322:12", + "statements": [ + { + "body": { + "nativeSrc": "6912:561:12", + "nodeType": "YulBlock", + "src": "6912:561:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6941:4:12", + "nodeType": "YulLiteral", + "src": "6941:4:12", + "type": "", + "value": "0x00" + }, + { + "name": "hash", + "nativeSrc": "6947:4:12", + "nodeType": "YulIdentifier", + "src": "6947:4:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6934:6:12", + "nodeType": "YulIdentifier", + "src": "6934:6:12" + }, + "nativeSrc": "6934:18:12", + "nodeType": "YulFunctionCall", + "src": "6934:18:12" + }, + "nativeSrc": "6934:18:12", + "nodeType": "YulExpressionStatement", + "src": "6934:18:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6980:4:12", + "nodeType": "YulLiteral", + "src": "6980:4:12", + "type": "", + "value": "0x20" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6994:3:12", + "nodeType": "YulLiteral", + "src": "6994:3:12", + "type": "", + "value": "255" + }, + { + "name": "vs", + "nativeSrc": "6999:2:12", + "nodeType": "YulIdentifier", + "src": "6999:2:12" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "6990:3:12", + "nodeType": "YulIdentifier", + "src": "6990:3:12" + }, + "nativeSrc": "6990:12:12", + "nodeType": "YulFunctionCall", + "src": "6990:12:12" + }, + { + "kind": "number", + "nativeSrc": "7004:2:12", + "nodeType": "YulLiteral", + "src": "7004:2:12", + "type": "", + "value": "27" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6986:3:12", + "nodeType": "YulIdentifier", + "src": "6986:3:12" + }, + "nativeSrc": "6986:21:12", + "nodeType": "YulFunctionCall", + "src": "6986:21:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6973:6:12", + "nodeType": "YulIdentifier", + "src": "6973:6:12" + }, + "nativeSrc": "6973:35:12", + "nodeType": "YulFunctionCall", + "src": "6973:35:12" + }, + "nativeSrc": "6973:35:12", + "nodeType": "YulExpressionStatement", + "src": "6973:35:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7044:4:12", + "nodeType": "YulLiteral", + "src": "7044:4:12", + "type": "", + "value": "0x40" + }, + { + "name": "r", + "nativeSrc": "7050:1:12", + "nodeType": "YulIdentifier", + "src": "7050:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7037:6:12", + "nodeType": "YulIdentifier", + "src": "7037:6:12" + }, + "nativeSrc": "7037:15:12", + "nodeType": "YulFunctionCall", + "src": "7037:15:12" + }, + "nativeSrc": "7037:15:12", + "nodeType": "YulExpressionStatement", + "src": "7037:15:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7088:4:12", + "nodeType": "YulLiteral", + "src": "7088:4:12", + "type": "", + "value": "0x60" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7098:1:12", + "nodeType": "YulLiteral", + "src": "7098:1:12", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7105:1:12", + "nodeType": "YulLiteral", + "src": "7105:1:12", + "type": "", + "value": "1" + }, + { + "name": "vs", + "nativeSrc": "7108:2:12", + "nodeType": "YulIdentifier", + "src": "7108:2:12" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "7101:3:12", + "nodeType": "YulIdentifier", + "src": "7101:3:12" + }, + "nativeSrc": "7101:10:12", + "nodeType": "YulFunctionCall", + "src": "7101:10:12" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "7094:3:12", + "nodeType": "YulIdentifier", + "src": "7094:3:12" + }, + "nativeSrc": "7094:18:12", + "nodeType": "YulFunctionCall", + "src": "7094:18:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7081:6:12", + "nodeType": "YulIdentifier", + "src": "7081:6:12" + }, + "nativeSrc": "7081:32:12", + "nodeType": "YulFunctionCall", + "src": "7081:32:12" + }, + "nativeSrc": "7081:32:12", + "nodeType": "YulExpressionStatement", + "src": "7081:32:12" + }, + { + "nativeSrc": "7142:68:12", + "nodeType": "YulVariableDeclaration", + "src": "7142:68:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "7176:3:12", + "nodeType": "YulIdentifier", + "src": "7176:3:12" + }, + "nativeSrc": "7176:5:12", + "nodeType": "YulFunctionCall", + "src": "7176:5:12" + }, + { + "kind": "number", + "nativeSrc": "7183:1:12", + "nodeType": "YulLiteral", + "src": "7183:1:12", + "type": "", + "value": "1" + }, + { + "kind": "number", + "nativeSrc": "7186:4:12", + "nodeType": "YulLiteral", + "src": "7186:4:12", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "7192:4:12", + "nodeType": "YulLiteral", + "src": "7192:4:12", + "type": "", + "value": "0x80" + }, + { + "kind": "number", + "nativeSrc": "7198:4:12", + "nodeType": "YulLiteral", + "src": "7198:4:12", + "type": "", + "value": "0x01" + }, + { + "kind": "number", + "nativeSrc": "7204:4:12", + "nodeType": "YulLiteral", + "src": "7204:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "7165:10:12", + "nodeType": "YulIdentifier", + "src": "7165:10:12" + }, + "nativeSrc": "7165:44:12", + "nodeType": "YulFunctionCall", + "src": "7165:44:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "7159:5:12", + "nodeType": "YulIdentifier", + "src": "7159:5:12" + }, + "nativeSrc": "7159:51:12", + "nodeType": "YulFunctionCall", + "src": "7159:51:12" + }, + "variables": [ + { + "name": "recovered", + "nativeSrc": "7146:9:12", + "nodeType": "YulTypedName", + "src": "7146:9:12", + "type": "" + } + ] + }, + { + "nativeSrc": "7231:64:12", + "nodeType": "YulAssignment", + "src": "7231:64:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "7245:14:12", + "nodeType": "YulIdentifier", + "src": "7245:14:12" + }, + "nativeSrc": "7245:16:12", + "nodeType": "YulFunctionCall", + "src": "7245:16:12" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7267:2:12", + "nodeType": "YulLiteral", + "src": "7267:2:12", + "type": "", + "value": "96" + }, + { + "arguments": [ + { + "name": "signer", + "nativeSrc": "7275:6:12", + "nodeType": "YulIdentifier", + "src": "7275:6:12" + }, + { + "name": "recovered", + "nativeSrc": "7283:9:12", + "nodeType": "YulIdentifier", + "src": "7283:9:12" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "7271:3:12", + "nodeType": "YulIdentifier", + "src": "7271:3:12" + }, + "nativeSrc": "7271:22:12", + "nodeType": "YulFunctionCall", + "src": "7271:22:12" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "7263:3:12", + "nodeType": "YulIdentifier", + "src": "7263:3:12" + }, + "nativeSrc": "7263:31:12", + "nodeType": "YulFunctionCall", + "src": "7263:31:12" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "7242:2:12", + "nodeType": "YulIdentifier", + "src": "7242:2:12" + }, + "nativeSrc": "7242:53:12", + "nodeType": "YulFunctionCall", + "src": "7242:53:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "7231:7:12", + "nodeType": "YulIdentifier", + "src": "7231:7:12" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7323:4:12", + "nodeType": "YulLiteral", + "src": "7323:4:12", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "7329:1:12", + "nodeType": "YulLiteral", + "src": "7329:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7316:6:12", + "nodeType": "YulIdentifier", + "src": "7316:6:12" + }, + "nativeSrc": "7316:15:12", + "nodeType": "YulFunctionCall", + "src": "7316:15:12" + }, + "nativeSrc": "7316:15:12", + "nodeType": "YulExpressionStatement", + "src": "7316:15:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7385:4:12", + "nodeType": "YulLiteral", + "src": "7385:4:12", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "7391:1:12", + "nodeType": "YulIdentifier", + "src": "7391:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7378:6:12", + "nodeType": "YulIdentifier", + "src": "7378:6:12" + }, + "nativeSrc": "7378:15:12", + "nodeType": "YulFunctionCall", + "src": "7378:15:12" + }, + "nativeSrc": "7378:15:12", + "nodeType": "YulExpressionStatement", + "src": "7378:15:12" + }, + { + "nativeSrc": "7450:5:12", + "nodeType": "YulBreak", + "src": "7450:5:12" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "signer", + "nativeSrc": "6903:6:12", + "nodeType": "YulIdentifier", + "src": "6903:6:12" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "6891:11:12", + "nodeType": "YulIdentifier", + "src": "6891:11:12" + }, + "nativeSrc": "6891:19:12", + "nodeType": "YulFunctionCall", + "src": "6891:19:12" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "6884:6:12", + "nodeType": "YulIdentifier", + "src": "6884:6:12" + }, + "nativeSrc": "6884:27:12", + "nodeType": "YulFunctionCall", + "src": "6884:27:12" + }, + "nativeSrc": "6881:592:12", + "nodeType": "YulIf", + "src": "6881:592:12" + }, + { + "nativeSrc": "7490:29:12", + "nodeType": "YulVariableDeclaration", + "src": "7490:29:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7503:3:12", + "nodeType": "YulLiteral", + "src": "7503:3:12", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "7508:10:12", + "nodeType": "YulLiteral", + "src": "7508:10:12", + "type": "", + "value": "0x1626ba7e" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "7499:3:12", + "nodeType": "YulIdentifier", + "src": "7499:3:12" + }, + "nativeSrc": "7499:20:12", + "nodeType": "YulFunctionCall", + "src": "7499:20:12" + }, + "variables": [ + { + "name": "f", + "nativeSrc": "7494:1:12", + "nodeType": "YulTypedName", + "src": "7494:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "7543:1:12", + "nodeType": "YulIdentifier", + "src": "7543:1:12" + }, + { + "name": "f", + "nativeSrc": "7546:1:12", + "nodeType": "YulIdentifier", + "src": "7546:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7536:6:12", + "nodeType": "YulIdentifier", + "src": "7536:6:12" + }, + "nativeSrc": "7536:12:12", + "nodeType": "YulFunctionCall", + "src": "7536:12:12" + }, + "nativeSrc": "7536:12:12", + "nodeType": "YulExpressionStatement", + "src": "7536:12:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "7635:1:12", + "nodeType": "YulIdentifier", + "src": "7635:1:12" + }, + { + "kind": "number", + "nativeSrc": "7638:4:12", + "nodeType": "YulLiteral", + "src": "7638:4:12", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7631:3:12", + "nodeType": "YulIdentifier", + "src": "7631:3:12" + }, + "nativeSrc": "7631:12:12", + "nodeType": "YulFunctionCall", + "src": "7631:12:12" + }, + { + "name": "hash", + "nativeSrc": "7645:4:12", + "nodeType": "YulIdentifier", + "src": "7645:4:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7624:6:12", + "nodeType": "YulIdentifier", + "src": "7624:6:12" + }, + "nativeSrc": "7624:26:12", + "nodeType": "YulFunctionCall", + "src": "7624:26:12" + }, + "nativeSrc": "7624:26:12", + "nodeType": "YulExpressionStatement", + "src": "7624:26:12" + }, + { + "nativeSrc": "7667:21:12", + "nodeType": "YulVariableDeclaration", + "src": "7667:21:12", + "value": { + "arguments": [ + { + "name": "m", + "nativeSrc": "7680:1:12", + "nodeType": "YulIdentifier", + "src": "7680:1:12" + }, + { + "kind": "number", + "nativeSrc": "7683:4:12", + "nodeType": "YulLiteral", + "src": "7683:4:12", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7676:3:12", + "nodeType": "YulIdentifier", + "src": "7676:3:12" + }, + "nativeSrc": "7676:12:12", + "nodeType": "YulFunctionCall", + "src": "7676:12:12" + }, + "variables": [ + { + "name": "d", + "nativeSrc": "7671:1:12", + "nodeType": "YulTypedName", + "src": "7671:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "d", + "nativeSrc": "7712:1:12", + "nodeType": "YulIdentifier", + "src": "7712:1:12" + }, + { + "kind": "number", + "nativeSrc": "7715:4:12", + "nodeType": "YulLiteral", + "src": "7715:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7705:6:12", + "nodeType": "YulIdentifier", + "src": "7705:6:12" + }, + "nativeSrc": "7705:15:12", + "nodeType": "YulFunctionCall", + "src": "7705:15:12" + }, + "nativeSrc": "7705:15:12", + "nodeType": "YulExpressionStatement", + "src": "7705:15:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "7798:1:12", + "nodeType": "YulIdentifier", + "src": "7798:1:12" + }, + { + "kind": "number", + "nativeSrc": "7801:4:12", + "nodeType": "YulLiteral", + "src": "7801:4:12", + "type": "", + "value": "0x44" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7794:3:12", + "nodeType": "YulIdentifier", + "src": "7794:3:12" + }, + "nativeSrc": "7794:12:12", + "nodeType": "YulFunctionCall", + "src": "7794:12:12" + }, + { + "kind": "number", + "nativeSrc": "7808:2:12", + "nodeType": "YulLiteral", + "src": "7808:2:12", + "type": "", + "value": "65" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7787:6:12", + "nodeType": "YulIdentifier", + "src": "7787:6:12" + }, + "nativeSrc": "7787:24:12", + "nodeType": "YulFunctionCall", + "src": "7787:24:12" + }, + "nativeSrc": "7787:24:12", + "nodeType": "YulExpressionStatement", + "src": "7787:24:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "7867:1:12", + "nodeType": "YulIdentifier", + "src": "7867:1:12" + }, + { + "kind": "number", + "nativeSrc": "7870:4:12", + "nodeType": "YulLiteral", + "src": "7870:4:12", + "type": "", + "value": "0x64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7863:3:12", + "nodeType": "YulIdentifier", + "src": "7863:3:12" + }, + "nativeSrc": "7863:12:12", + "nodeType": "YulFunctionCall", + "src": "7863:12:12" + }, + { + "name": "r", + "nativeSrc": "7877:1:12", + "nodeType": "YulIdentifier", + "src": "7877:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7856:6:12", + "nodeType": "YulIdentifier", + "src": "7856:6:12" + }, + "nativeSrc": "7856:23:12", + "nodeType": "YulFunctionCall", + "src": "7856:23:12" + }, + "nativeSrc": "7856:23:12", + "nodeType": "YulExpressionStatement", + "src": "7856:23:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "7915:1:12", + "nodeType": "YulIdentifier", + "src": "7915:1:12" + }, + { + "kind": "number", + "nativeSrc": "7918:4:12", + "nodeType": "YulLiteral", + "src": "7918:4:12", + "type": "", + "value": "0x84" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7911:3:12", + "nodeType": "YulIdentifier", + "src": "7911:3:12" + }, + "nativeSrc": "7911:12:12", + "nodeType": "YulFunctionCall", + "src": "7911:12:12" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7929:1:12", + "nodeType": "YulLiteral", + "src": "7929:1:12", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7936:1:12", + "nodeType": "YulLiteral", + "src": "7936:1:12", + "type": "", + "value": "1" + }, + { + "name": "vs", + "nativeSrc": "7939:2:12", + "nodeType": "YulIdentifier", + "src": "7939:2:12" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "7932:3:12", + "nodeType": "YulIdentifier", + "src": "7932:3:12" + }, + "nativeSrc": "7932:10:12", + "nodeType": "YulFunctionCall", + "src": "7932:10:12" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "7925:3:12", + "nodeType": "YulIdentifier", + "src": "7925:3:12" + }, + "nativeSrc": "7925:18:12", + "nodeType": "YulFunctionCall", + "src": "7925:18:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7904:6:12", + "nodeType": "YulIdentifier", + "src": "7904:6:12" + }, + "nativeSrc": "7904:40:12", + "nodeType": "YulFunctionCall", + "src": "7904:40:12" + }, + "nativeSrc": "7904:40:12", + "nodeType": "YulExpressionStatement", + "src": "7904:40:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "7981:1:12", + "nodeType": "YulIdentifier", + "src": "7981:1:12" + }, + { + "kind": "number", + "nativeSrc": "7984:4:12", + "nodeType": "YulLiteral", + "src": "7984:4:12", + "type": "", + "value": "0xa4" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7977:3:12", + "nodeType": "YulIdentifier", + "src": "7977:3:12" + }, + "nativeSrc": "7977:12:12", + "nodeType": "YulFunctionCall", + "src": "7977:12:12" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7999:3:12", + "nodeType": "YulLiteral", + "src": "7999:3:12", + "type": "", + "value": "255" + }, + { + "name": "vs", + "nativeSrc": "8004:2:12", + "nodeType": "YulIdentifier", + "src": "8004:2:12" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "7995:3:12", + "nodeType": "YulIdentifier", + "src": "7995:3:12" + }, + "nativeSrc": "7995:12:12", + "nodeType": "YulFunctionCall", + "src": "7995:12:12" + }, + { + "kind": "number", + "nativeSrc": "8009:2:12", + "nodeType": "YulLiteral", + "src": "8009:2:12", + "type": "", + "value": "27" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7991:3:12", + "nodeType": "YulIdentifier", + "src": "7991:3:12" + }, + "nativeSrc": "7991:21:12", + "nodeType": "YulFunctionCall", + "src": "7991:21:12" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "7969:7:12", + "nodeType": "YulIdentifier", + "src": "7969:7:12" + }, + "nativeSrc": "7969:44:12", + "nodeType": "YulFunctionCall", + "src": "7969:44:12" + }, + "nativeSrc": "7969:44:12", + "nodeType": "YulExpressionStatement", + "src": "7969:44:12" + }, + { + "nativeSrc": "8038:54:12", + "nodeType": "YulAssignment", + "src": "8038:54:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "8060:3:12", + "nodeType": "YulIdentifier", + "src": "8060:3:12" + }, + "nativeSrc": "8060:5:12", + "nodeType": "YulFunctionCall", + "src": "8060:5:12" + }, + { + "name": "signer", + "nativeSrc": "8067:6:12", + "nodeType": "YulIdentifier", + "src": "8067:6:12" + }, + { + "name": "m", + "nativeSrc": "8075:1:12", + "nodeType": "YulIdentifier", + "src": "8075:1:12" + }, + { + "kind": "number", + "nativeSrc": "8078:4:12", + "nodeType": "YulLiteral", + "src": "8078:4:12", + "type": "", + "value": "0xa5" + }, + { + "name": "d", + "nativeSrc": "8084:1:12", + "nodeType": "YulIdentifier", + "src": "8084:1:12" + }, + { + "kind": "number", + "nativeSrc": "8087:4:12", + "nodeType": "YulLiteral", + "src": "8087:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "8049:10:12", + "nodeType": "YulIdentifier", + "src": "8049:10:12" + }, + "nativeSrc": "8049:43:12", + "nodeType": "YulFunctionCall", + "src": "8049:43:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "8038:7:12", + "nodeType": "YulIdentifier", + "src": "8038:7:12" + } + ] + }, + { + "nativeSrc": "8109:40:12", + "nodeType": "YulAssignment", + "src": "8109:40:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "d", + "nativeSrc": "8133:1:12", + "nodeType": "YulIdentifier", + "src": "8133:1:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "8127:5:12", + "nodeType": "YulIdentifier", + "src": "8127:5:12" + }, + "nativeSrc": "8127:8:12", + "nodeType": "YulFunctionCall", + "src": "8127:8:12" + }, + { + "name": "f", + "nativeSrc": "8137:1:12", + "nodeType": "YulIdentifier", + "src": "8137:1:12" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "8124:2:12", + "nodeType": "YulIdentifier", + "src": "8124:2:12" + }, + "nativeSrc": "8124:15:12", + "nodeType": "YulFunctionCall", + "src": "8124:15:12" + }, + { + "name": "isValid", + "nativeSrc": "8141:7:12", + "nodeType": "YulIdentifier", + "src": "8141:7:12" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "8120:3:12", + "nodeType": "YulIdentifier", + "src": "8120:3:12" + }, + "nativeSrc": "8120:29:12", + "nodeType": "YulFunctionCall", + "src": "8120:29:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "8109:7:12", + "nodeType": "YulIdentifier", + "src": "8109:7:12" + } + ] + }, + { + "nativeSrc": "8166:5:12", + "nodeType": "YulBreak", + "src": "8166:5:12" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "6858:1:12", + "nodeType": "YulLiteral", + "src": "6858:1:12", + "type": "", + "value": "1" + }, + "nativeSrc": "6851:1334:12", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "6860:2:12", + "nodeType": "YulBlock", + "src": "6860:2:12", + "statements": [] + }, + "pre": { + "nativeSrc": "6855:2:12", + "nodeType": "YulBlock", + "src": "6855:2:12", + "statements": [] + }, + "src": "6851:1334:12" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6199, + "isOffset": false, + "isSlot": false, + "src": "6947:4:12", + "valueSize": 1 + }, + { + "declaration": 6199, + "isOffset": false, + "isSlot": false, + "src": "7645:4:12", + "valueSize": 1 + }, + { + "declaration": 6206, + "isOffset": false, + "isSlot": false, + "src": "7231:7:12", + "valueSize": 1 + }, + { + "declaration": 6206, + "isOffset": false, + "isSlot": false, + "src": "8038:7:12", + "valueSize": 1 + }, + { + "declaration": 6206, + "isOffset": false, + "isSlot": false, + "src": "8109:7:12", + "valueSize": 1 + }, + { + "declaration": 6206, + "isOffset": false, + "isSlot": false, + "src": "8141:7:12", + "valueSize": 1 + }, + { + "declaration": 6201, + "isOffset": false, + "isSlot": false, + "src": "7050:1:12", + "valueSize": 1 + }, + { + "declaration": 6201, + "isOffset": false, + "isSlot": false, + "src": "7877:1:12", + "valueSize": 1 + }, + { + "declaration": 6197, + "isOffset": false, + "isSlot": false, + "src": "6903:6:12", + "valueSize": 1 + }, + { + "declaration": 6197, + "isOffset": false, + "isSlot": false, + "src": "7275:6:12", + "valueSize": 1 + }, + { + "declaration": 6197, + "isOffset": false, + "isSlot": false, + "src": "8067:6:12", + "valueSize": 1 + }, + { + "declaration": 6203, + "isOffset": false, + "isSlot": false, + "src": "6999:2:12", + "valueSize": 1 + }, + { + "declaration": 6203, + "isOffset": false, + "isSlot": false, + "src": "7108:2:12", + "valueSize": 1 + }, + { + "declaration": 6203, + "isOffset": false, + "isSlot": false, + "src": "7939:2:12", + "valueSize": 1 + }, + { + "declaration": 6203, + "isOffset": false, + "isSlot": false, + "src": "8004:2:12", + "valueSize": 1 + } + ], + "id": 6217, + "nodeType": "InlineAssembly", + "src": "6795:1400:12" + } + ] + }, + "documentation": { + "id": 6195, + "nodeType": "StructuredDocumentation", + "src": "6330:210:12", + "text": "@dev Returns whether the signature (`r`, `vs`) is valid for `signer` and `hash`.\n If `signer.code.length == 0`, then validate with `ecrecover`, else\n it will validate with ERC1271 on `signer`." + }, + "id": 6219, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isValidSignatureNow", + "nameLocation": "6554:19:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6204, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6197, + "mutability": "mutable", + "name": "signer", + "nameLocation": "6582:6:12", + "nodeType": "VariableDeclaration", + "scope": 6219, + "src": "6574:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6196, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6574:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6199, + "mutability": "mutable", + "name": "hash", + "nameLocation": "6598:4:12", + "nodeType": "VariableDeclaration", + "scope": 6219, + "src": "6590:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6198, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6590:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6201, + "mutability": "mutable", + "name": "r", + "nameLocation": "6612:1:12", + "nodeType": "VariableDeclaration", + "scope": 6219, + "src": "6604:9:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6200, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6604:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6203, + "mutability": "mutable", + "name": "vs", + "nameLocation": "6623:2:12", + "nodeType": "VariableDeclaration", + "scope": 6219, + "src": "6615:10:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6202, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6615:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "6573:53:12" + }, + "returnParameters": { + "id": 6207, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6206, + "mutability": "mutable", + "name": "isValid", + "nameLocation": "6679:7:12", + "nodeType": "VariableDeclaration", + "scope": 6219, + "src": "6674:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6205, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6674:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "6673:14:12" + }, + "scope": 6365, + "src": "6545:1656:12", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6245, + "nodeType": "Block", + "src": "8581:1446:12", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 6240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6235, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6222, + "src": "8595:6:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 6238, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8613:1:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 6237, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8605:7:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 6236, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8605:7:12", + "typeDescriptions": {} + } + }, + "id": 6239, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8605:10:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8595:20:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6243, + "nodeType": "IfStatement", + "src": "8591:40:12", + "trueBody": { + "expression": { + "id": 6241, + "name": "isValid", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6233, + "src": "8624:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 6234, + "id": 6242, + "nodeType": "Return", + "src": "8617:14:12" + } + }, + { + "AST": { + "nativeSrc": "8693:1328:12", + "nodeType": "YulBlock", + "src": "8693:1328:12", + "statements": [ + { + "nativeSrc": "8707:20:12", + "nodeType": "YulVariableDeclaration", + "src": "8707:20:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8722:4:12", + "nodeType": "YulLiteral", + "src": "8722:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "8716:5:12", + "nodeType": "YulIdentifier", + "src": "8716:5:12" + }, + "nativeSrc": "8716:11:12", + "nodeType": "YulFunctionCall", + "src": "8716:11:12" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "8711:1:12", + "nodeType": "YulTypedName", + "src": "8711:1:12", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "8752:1259:12", + "nodeType": "YulBlock", + "src": "8752:1259:12", + "statements": [ + { + "body": { + "nativeSrc": "8801:535:12", + "nodeType": "YulBlock", + "src": "8801:535:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8830:4:12", + "nodeType": "YulLiteral", + "src": "8830:4:12", + "type": "", + "value": "0x00" + }, + { + "name": "hash", + "nativeSrc": "8836:4:12", + "nodeType": "YulIdentifier", + "src": "8836:4:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8823:6:12", + "nodeType": "YulIdentifier", + "src": "8823:6:12" + }, + "nativeSrc": "8823:18:12", + "nodeType": "YulFunctionCall", + "src": "8823:18:12" + }, + "nativeSrc": "8823:18:12", + "nodeType": "YulExpressionStatement", + "src": "8823:18:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8869:4:12", + "nodeType": "YulLiteral", + "src": "8869:4:12", + "type": "", + "value": "0x20" + }, + { + "arguments": [ + { + "name": "v", + "nativeSrc": "8879:1:12", + "nodeType": "YulIdentifier", + "src": "8879:1:12" + }, + { + "kind": "number", + "nativeSrc": "8882:4:12", + "nodeType": "YulLiteral", + "src": "8882:4:12", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "8875:3:12", + "nodeType": "YulIdentifier", + "src": "8875:3:12" + }, + "nativeSrc": "8875:12:12", + "nodeType": "YulFunctionCall", + "src": "8875:12:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8862:6:12", + "nodeType": "YulIdentifier", + "src": "8862:6:12" + }, + "nativeSrc": "8862:26:12", + "nodeType": "YulFunctionCall", + "src": "8862:26:12" + }, + "nativeSrc": "8862:26:12", + "nodeType": "YulExpressionStatement", + "src": "8862:26:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8924:4:12", + "nodeType": "YulLiteral", + "src": "8924:4:12", + "type": "", + "value": "0x40" + }, + { + "name": "r", + "nativeSrc": "8930:1:12", + "nodeType": "YulIdentifier", + "src": "8930:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8917:6:12", + "nodeType": "YulIdentifier", + "src": "8917:6:12" + }, + "nativeSrc": "8917:15:12", + "nodeType": "YulFunctionCall", + "src": "8917:15:12" + }, + "nativeSrc": "8917:15:12", + "nodeType": "YulExpressionStatement", + "src": "8917:15:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8968:4:12", + "nodeType": "YulLiteral", + "src": "8968:4:12", + "type": "", + "value": "0x60" + }, + { + "name": "s", + "nativeSrc": "8974:1:12", + "nodeType": "YulIdentifier", + "src": "8974:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8961:6:12", + "nodeType": "YulIdentifier", + "src": "8961:6:12" + }, + "nativeSrc": "8961:15:12", + "nodeType": "YulFunctionCall", + "src": "8961:15:12" + }, + "nativeSrc": "8961:15:12", + "nodeType": "YulExpressionStatement", + "src": "8961:15:12" + }, + { + "nativeSrc": "9005:68:12", + "nodeType": "YulVariableDeclaration", + "src": "9005:68:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "9039:3:12", + "nodeType": "YulIdentifier", + "src": "9039:3:12" + }, + "nativeSrc": "9039:5:12", + "nodeType": "YulFunctionCall", + "src": "9039:5:12" + }, + { + "kind": "number", + "nativeSrc": "9046:1:12", + "nodeType": "YulLiteral", + "src": "9046:1:12", + "type": "", + "value": "1" + }, + { + "kind": "number", + "nativeSrc": "9049:4:12", + "nodeType": "YulLiteral", + "src": "9049:4:12", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "9055:4:12", + "nodeType": "YulLiteral", + "src": "9055:4:12", + "type": "", + "value": "0x80" + }, + { + "kind": "number", + "nativeSrc": "9061:4:12", + "nodeType": "YulLiteral", + "src": "9061:4:12", + "type": "", + "value": "0x01" + }, + { + "kind": "number", + "nativeSrc": "9067:4:12", + "nodeType": "YulLiteral", + "src": "9067:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "9028:10:12", + "nodeType": "YulIdentifier", + "src": "9028:10:12" + }, + "nativeSrc": "9028:44:12", + "nodeType": "YulFunctionCall", + "src": "9028:44:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "9022:5:12", + "nodeType": "YulIdentifier", + "src": "9022:5:12" + }, + "nativeSrc": "9022:51:12", + "nodeType": "YulFunctionCall", + "src": "9022:51:12" + }, + "variables": [ + { + "name": "recovered", + "nativeSrc": "9009:9:12", + "nodeType": "YulTypedName", + "src": "9009:9:12", + "type": "" + } + ] + }, + { + "nativeSrc": "9094:64:12", + "nodeType": "YulAssignment", + "src": "9094:64:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "9108:14:12", + "nodeType": "YulIdentifier", + "src": "9108:14:12" + }, + "nativeSrc": "9108:16:12", + "nodeType": "YulFunctionCall", + "src": "9108:16:12" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9130:2:12", + "nodeType": "YulLiteral", + "src": "9130:2:12", + "type": "", + "value": "96" + }, + { + "arguments": [ + { + "name": "signer", + "nativeSrc": "9138:6:12", + "nodeType": "YulIdentifier", + "src": "9138:6:12" + }, + { + "name": "recovered", + "nativeSrc": "9146:9:12", + "nodeType": "YulIdentifier", + "src": "9146:9:12" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "9134:3:12", + "nodeType": "YulIdentifier", + "src": "9134:3:12" + }, + "nativeSrc": "9134:22:12", + "nodeType": "YulFunctionCall", + "src": "9134:22:12" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "9126:3:12", + "nodeType": "YulIdentifier", + "src": "9126:3:12" + }, + "nativeSrc": "9126:31:12", + "nodeType": "YulFunctionCall", + "src": "9126:31:12" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "9105:2:12", + "nodeType": "YulIdentifier", + "src": "9105:2:12" + }, + "nativeSrc": "9105:53:12", + "nodeType": "YulFunctionCall", + "src": "9105:53:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "9094:7:12", + "nodeType": "YulIdentifier", + "src": "9094:7:12" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9186:4:12", + "nodeType": "YulLiteral", + "src": "9186:4:12", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "9192:1:12", + "nodeType": "YulLiteral", + "src": "9192:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9179:6:12", + "nodeType": "YulIdentifier", + "src": "9179:6:12" + }, + "nativeSrc": "9179:15:12", + "nodeType": "YulFunctionCall", + "src": "9179:15:12" + }, + "nativeSrc": "9179:15:12", + "nodeType": "YulExpressionStatement", + "src": "9179:15:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9248:4:12", + "nodeType": "YulLiteral", + "src": "9248:4:12", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "9254:1:12", + "nodeType": "YulIdentifier", + "src": "9254:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9241:6:12", + "nodeType": "YulIdentifier", + "src": "9241:6:12" + }, + "nativeSrc": "9241:15:12", + "nodeType": "YulFunctionCall", + "src": "9241:15:12" + }, + "nativeSrc": "9241:15:12", + "nodeType": "YulExpressionStatement", + "src": "9241:15:12" + }, + { + "nativeSrc": "9313:5:12", + "nodeType": "YulBreak", + "src": "9313:5:12" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "signer", + "nativeSrc": "8792:6:12", + "nodeType": "YulIdentifier", + "src": "8792:6:12" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "8780:11:12", + "nodeType": "YulIdentifier", + "src": "8780:11:12" + }, + "nativeSrc": "8780:19:12", + "nodeType": "YulFunctionCall", + "src": "8780:19:12" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "8773:6:12", + "nodeType": "YulIdentifier", + "src": "8773:6:12" + }, + "nativeSrc": "8773:27:12", + "nodeType": "YulFunctionCall", + "src": "8773:27:12" + }, + "nativeSrc": "8770:566:12", + "nodeType": "YulIf", + "src": "8770:566:12" + }, + { + "nativeSrc": "9353:29:12", + "nodeType": "YulVariableDeclaration", + "src": "9353:29:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9366:3:12", + "nodeType": "YulLiteral", + "src": "9366:3:12", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "9371:10:12", + "nodeType": "YulLiteral", + "src": "9371:10:12", + "type": "", + "value": "0x1626ba7e" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "9362:3:12", + "nodeType": "YulIdentifier", + "src": "9362:3:12" + }, + "nativeSrc": "9362:20:12", + "nodeType": "YulFunctionCall", + "src": "9362:20:12" + }, + "variables": [ + { + "name": "f", + "nativeSrc": "9357:1:12", + "nodeType": "YulTypedName", + "src": "9357:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "9406:1:12", + "nodeType": "YulIdentifier", + "src": "9406:1:12" + }, + { + "name": "f", + "nativeSrc": "9409:1:12", + "nodeType": "YulIdentifier", + "src": "9409:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9399:6:12", + "nodeType": "YulIdentifier", + "src": "9399:6:12" + }, + "nativeSrc": "9399:12:12", + "nodeType": "YulFunctionCall", + "src": "9399:12:12" + }, + "nativeSrc": "9399:12:12", + "nodeType": "YulExpressionStatement", + "src": "9399:12:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "9498:1:12", + "nodeType": "YulIdentifier", + "src": "9498:1:12" + }, + { + "kind": "number", + "nativeSrc": "9501:4:12", + "nodeType": "YulLiteral", + "src": "9501:4:12", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9494:3:12", + "nodeType": "YulIdentifier", + "src": "9494:3:12" + }, + "nativeSrc": "9494:12:12", + "nodeType": "YulFunctionCall", + "src": "9494:12:12" + }, + { + "name": "hash", + "nativeSrc": "9508:4:12", + "nodeType": "YulIdentifier", + "src": "9508:4:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9487:6:12", + "nodeType": "YulIdentifier", + "src": "9487:6:12" + }, + "nativeSrc": "9487:26:12", + "nodeType": "YulFunctionCall", + "src": "9487:26:12" + }, + "nativeSrc": "9487:26:12", + "nodeType": "YulExpressionStatement", + "src": "9487:26:12" + }, + { + "nativeSrc": "9530:21:12", + "nodeType": "YulVariableDeclaration", + "src": "9530:21:12", + "value": { + "arguments": [ + { + "name": "m", + "nativeSrc": "9543:1:12", + "nodeType": "YulIdentifier", + "src": "9543:1:12" + }, + { + "kind": "number", + "nativeSrc": "9546:4:12", + "nodeType": "YulLiteral", + "src": "9546:4:12", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9539:3:12", + "nodeType": "YulIdentifier", + "src": "9539:3:12" + }, + "nativeSrc": "9539:12:12", + "nodeType": "YulFunctionCall", + "src": "9539:12:12" + }, + "variables": [ + { + "name": "d", + "nativeSrc": "9534:1:12", + "nodeType": "YulTypedName", + "src": "9534:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "d", + "nativeSrc": "9575:1:12", + "nodeType": "YulIdentifier", + "src": "9575:1:12" + }, + { + "kind": "number", + "nativeSrc": "9578:4:12", + "nodeType": "YulLiteral", + "src": "9578:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9568:6:12", + "nodeType": "YulIdentifier", + "src": "9568:6:12" + }, + "nativeSrc": "9568:15:12", + "nodeType": "YulFunctionCall", + "src": "9568:15:12" + }, + "nativeSrc": "9568:15:12", + "nodeType": "YulExpressionStatement", + "src": "9568:15:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "9661:1:12", + "nodeType": "YulIdentifier", + "src": "9661:1:12" + }, + { + "kind": "number", + "nativeSrc": "9664:4:12", + "nodeType": "YulLiteral", + "src": "9664:4:12", + "type": "", + "value": "0x44" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9657:3:12", + "nodeType": "YulIdentifier", + "src": "9657:3:12" + }, + "nativeSrc": "9657:12:12", + "nodeType": "YulFunctionCall", + "src": "9657:12:12" + }, + { + "kind": "number", + "nativeSrc": "9671:2:12", + "nodeType": "YulLiteral", + "src": "9671:2:12", + "type": "", + "value": "65" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9650:6:12", + "nodeType": "YulIdentifier", + "src": "9650:6:12" + }, + "nativeSrc": "9650:24:12", + "nodeType": "YulFunctionCall", + "src": "9650:24:12" + }, + "nativeSrc": "9650:24:12", + "nodeType": "YulExpressionStatement", + "src": "9650:24:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "9730:1:12", + "nodeType": "YulIdentifier", + "src": "9730:1:12" + }, + { + "kind": "number", + "nativeSrc": "9733:4:12", + "nodeType": "YulLiteral", + "src": "9733:4:12", + "type": "", + "value": "0x64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9726:3:12", + "nodeType": "YulIdentifier", + "src": "9726:3:12" + }, + "nativeSrc": "9726:12:12", + "nodeType": "YulFunctionCall", + "src": "9726:12:12" + }, + { + "name": "r", + "nativeSrc": "9740:1:12", + "nodeType": "YulIdentifier", + "src": "9740:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9719:6:12", + "nodeType": "YulIdentifier", + "src": "9719:6:12" + }, + "nativeSrc": "9719:23:12", + "nodeType": "YulFunctionCall", + "src": "9719:23:12" + }, + "nativeSrc": "9719:23:12", + "nodeType": "YulExpressionStatement", + "src": "9719:23:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "9778:1:12", + "nodeType": "YulIdentifier", + "src": "9778:1:12" + }, + { + "kind": "number", + "nativeSrc": "9781:4:12", + "nodeType": "YulLiteral", + "src": "9781:4:12", + "type": "", + "value": "0x84" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9774:3:12", + "nodeType": "YulIdentifier", + "src": "9774:3:12" + }, + "nativeSrc": "9774:12:12", + "nodeType": "YulFunctionCall", + "src": "9774:12:12" + }, + { + "name": "s", + "nativeSrc": "9788:1:12", + "nodeType": "YulIdentifier", + "src": "9788:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9767:6:12", + "nodeType": "YulIdentifier", + "src": "9767:6:12" + }, + "nativeSrc": "9767:23:12", + "nodeType": "YulFunctionCall", + "src": "9767:23:12" + }, + "nativeSrc": "9767:23:12", + "nodeType": "YulExpressionStatement", + "src": "9767:23:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "9827:1:12", + "nodeType": "YulIdentifier", + "src": "9827:1:12" + }, + { + "kind": "number", + "nativeSrc": "9830:4:12", + "nodeType": "YulLiteral", + "src": "9830:4:12", + "type": "", + "value": "0xa4" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9823:3:12", + "nodeType": "YulIdentifier", + "src": "9823:3:12" + }, + "nativeSrc": "9823:12:12", + "nodeType": "YulFunctionCall", + "src": "9823:12:12" + }, + { + "name": "v", + "nativeSrc": "9837:1:12", + "nodeType": "YulIdentifier", + "src": "9837:1:12" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "9815:7:12", + "nodeType": "YulIdentifier", + "src": "9815:7:12" + }, + "nativeSrc": "9815:24:12", + "nodeType": "YulFunctionCall", + "src": "9815:24:12" + }, + "nativeSrc": "9815:24:12", + "nodeType": "YulExpressionStatement", + "src": "9815:24:12" + }, + { + "nativeSrc": "9864:54:12", + "nodeType": "YulAssignment", + "src": "9864:54:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "9886:3:12", + "nodeType": "YulIdentifier", + "src": "9886:3:12" + }, + "nativeSrc": "9886:5:12", + "nodeType": "YulFunctionCall", + "src": "9886:5:12" + }, + { + "name": "signer", + "nativeSrc": "9893:6:12", + "nodeType": "YulIdentifier", + "src": "9893:6:12" + }, + { + "name": "m", + "nativeSrc": "9901:1:12", + "nodeType": "YulIdentifier", + "src": "9901:1:12" + }, + { + "kind": "number", + "nativeSrc": "9904:4:12", + "nodeType": "YulLiteral", + "src": "9904:4:12", + "type": "", + "value": "0xa5" + }, + { + "name": "d", + "nativeSrc": "9910:1:12", + "nodeType": "YulIdentifier", + "src": "9910:1:12" + }, + { + "kind": "number", + "nativeSrc": "9913:4:12", + "nodeType": "YulLiteral", + "src": "9913:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "9875:10:12", + "nodeType": "YulIdentifier", + "src": "9875:10:12" + }, + "nativeSrc": "9875:43:12", + "nodeType": "YulFunctionCall", + "src": "9875:43:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "9864:7:12", + "nodeType": "YulIdentifier", + "src": "9864:7:12" + } + ] + }, + { + "nativeSrc": "9935:40:12", + "nodeType": "YulAssignment", + "src": "9935:40:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "d", + "nativeSrc": "9959:1:12", + "nodeType": "YulIdentifier", + "src": "9959:1:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "9953:5:12", + "nodeType": "YulIdentifier", + "src": "9953:5:12" + }, + "nativeSrc": "9953:8:12", + "nodeType": "YulFunctionCall", + "src": "9953:8:12" + }, + { + "name": "f", + "nativeSrc": "9963:1:12", + "nodeType": "YulIdentifier", + "src": "9963:1:12" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "9950:2:12", + "nodeType": "YulIdentifier", + "src": "9950:2:12" + }, + "nativeSrc": "9950:15:12", + "nodeType": "YulFunctionCall", + "src": "9950:15:12" + }, + { + "name": "isValid", + "nativeSrc": "9967:7:12", + "nodeType": "YulIdentifier", + "src": "9967:7:12" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "9946:3:12", + "nodeType": "YulIdentifier", + "src": "9946:3:12" + }, + "nativeSrc": "9946:29:12", + "nodeType": "YulFunctionCall", + "src": "9946:29:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "9935:7:12", + "nodeType": "YulIdentifier", + "src": "9935:7:12" + } + ] + }, + { + "nativeSrc": "9992:5:12", + "nodeType": "YulBreak", + "src": "9992:5:12" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "8747:1:12", + "nodeType": "YulLiteral", + "src": "8747:1:12", + "type": "", + "value": "1" + }, + "nativeSrc": "8740:1271:12", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "8749:2:12", + "nodeType": "YulBlock", + "src": "8749:2:12", + "statements": [] + }, + "pre": { + "nativeSrc": "8744:2:12", + "nodeType": "YulBlock", + "src": "8744:2:12", + "statements": [] + }, + "src": "8740:1271:12" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6224, + "isOffset": false, + "isSlot": false, + "src": "8836:4:12", + "valueSize": 1 + }, + { + "declaration": 6224, + "isOffset": false, + "isSlot": false, + "src": "9508:4:12", + "valueSize": 1 + }, + { + "declaration": 6233, + "isOffset": false, + "isSlot": false, + "src": "9094:7:12", + "valueSize": 1 + }, + { + "declaration": 6233, + "isOffset": false, + "isSlot": false, + "src": "9864:7:12", + "valueSize": 1 + }, + { + "declaration": 6233, + "isOffset": false, + "isSlot": false, + "src": "9935:7:12", + "valueSize": 1 + }, + { + "declaration": 6233, + "isOffset": false, + "isSlot": false, + "src": "9967:7:12", + "valueSize": 1 + }, + { + "declaration": 6228, + "isOffset": false, + "isSlot": false, + "src": "8930:1:12", + "valueSize": 1 + }, + { + "declaration": 6228, + "isOffset": false, + "isSlot": false, + "src": "9740:1:12", + "valueSize": 1 + }, + { + "declaration": 6230, + "isOffset": false, + "isSlot": false, + "src": "8974:1:12", + "valueSize": 1 + }, + { + "declaration": 6230, + "isOffset": false, + "isSlot": false, + "src": "9788:1:12", + "valueSize": 1 + }, + { + "declaration": 6222, + "isOffset": false, + "isSlot": false, + "src": "8792:6:12", + "valueSize": 1 + }, + { + "declaration": 6222, + "isOffset": false, + "isSlot": false, + "src": "9138:6:12", + "valueSize": 1 + }, + { + "declaration": 6222, + "isOffset": false, + "isSlot": false, + "src": "9893:6:12", + "valueSize": 1 + }, + { + "declaration": 6226, + "isOffset": false, + "isSlot": false, + "src": "8879:1:12", + "valueSize": 1 + }, + { + "declaration": 6226, + "isOffset": false, + "isSlot": false, + "src": "9837:1:12", + "valueSize": 1 + } + ], + "id": 6244, + "nodeType": "InlineAssembly", + "src": "8684:1337:12" + } + ] + }, + "documentation": { + "id": 6220, + "nodeType": "StructuredDocumentation", + "src": "8207:214:12", + "text": "@dev Returns whether the signature (`v`, `r`, `s`) is valid for `signer` and `hash`.\n If `signer.code.length == 0`, then validate with `ecrecover`, else\n it will validate with ERC1271 on `signer`." + }, + "id": 6246, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isValidSignatureNow", + "nameLocation": "8435:19:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6231, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6222, + "mutability": "mutable", + "name": "signer", + "nameLocation": "8463:6:12", + "nodeType": "VariableDeclaration", + "scope": 6246, + "src": "8455:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6221, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8455:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6224, + "mutability": "mutable", + "name": "hash", + "nameLocation": "8479:4:12", + "nodeType": "VariableDeclaration", + "scope": 6246, + "src": "8471:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6223, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8471:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6226, + "mutability": "mutable", + "name": "v", + "nameLocation": "8491:1:12", + "nodeType": "VariableDeclaration", + "scope": 6246, + "src": "8485:7:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 6225, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "8485:5:12", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6228, + "mutability": "mutable", + "name": "r", + "nameLocation": "8502:1:12", + "nodeType": "VariableDeclaration", + "scope": 6246, + "src": "8494:9:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6227, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8494:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6230, + "mutability": "mutable", + "name": "s", + "nameLocation": "8513:1:12", + "nodeType": "VariableDeclaration", + "scope": 6246, + "src": "8505:9:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6229, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8505:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "8454:61:12" + }, + "returnParameters": { + "id": 6234, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6233, + "mutability": "mutable", + "name": "isValid", + "nameLocation": "8568:7:12", + "nodeType": "VariableDeclaration", + "scope": 6246, + "src": "8563:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6232, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8563:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "8562:14:12" + }, + "scope": 6365, + "src": "8426:1601:12", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6259, + "nodeType": "Block", + "src": "10636:714:12", + "statements": [ + { + "AST": { + "nativeSrc": "10698:646:12", + "nodeType": "YulBlock", + "src": "10698:646:12", + "statements": [ + { + "nativeSrc": "10712:20:12", + "nodeType": "YulVariableDeclaration", + "src": "10712:20:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10727:4:12", + "nodeType": "YulLiteral", + "src": "10727:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "10721:5:12", + "nodeType": "YulIdentifier", + "src": "10721:5:12" + }, + "nativeSrc": "10721:11:12", + "nodeType": "YulFunctionCall", + "src": "10721:11:12" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "10716:1:12", + "nodeType": "YulTypedName", + "src": "10716:1:12", + "type": "" + } + ] + }, + { + "nativeSrc": "10745:29:12", + "nodeType": "YulVariableDeclaration", + "src": "10745:29:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10758:3:12", + "nodeType": "YulLiteral", + "src": "10758:3:12", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "10763:10:12", + "nodeType": "YulLiteral", + "src": "10763:10:12", + "type": "", + "value": "0x1626ba7e" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "10754:3:12", + "nodeType": "YulIdentifier", + "src": "10754:3:12" + }, + "nativeSrc": "10754:20:12", + "nodeType": "YulFunctionCall", + "src": "10754:20:12" + }, + "variables": [ + { + "name": "f", + "nativeSrc": "10749:1:12", + "nodeType": "YulTypedName", + "src": "10749:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "10794:1:12", + "nodeType": "YulIdentifier", + "src": "10794:1:12" + }, + { + "name": "f", + "nativeSrc": "10797:1:12", + "nodeType": "YulIdentifier", + "src": "10797:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "10787:6:12", + "nodeType": "YulIdentifier", + "src": "10787:6:12" + }, + "nativeSrc": "10787:12:12", + "nodeType": "YulFunctionCall", + "src": "10787:12:12" + }, + "nativeSrc": "10787:12:12", + "nodeType": "YulExpressionStatement", + "src": "10787:12:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "10882:1:12", + "nodeType": "YulIdentifier", + "src": "10882:1:12" + }, + { + "kind": "number", + "nativeSrc": "10885:4:12", + "nodeType": "YulLiteral", + "src": "10885:4:12", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10878:3:12", + "nodeType": "YulIdentifier", + "src": "10878:3:12" + }, + "nativeSrc": "10878:12:12", + "nodeType": "YulFunctionCall", + "src": "10878:12:12" + }, + { + "name": "hash", + "nativeSrc": "10892:4:12", + "nodeType": "YulIdentifier", + "src": "10892:4:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "10871:6:12", + "nodeType": "YulIdentifier", + "src": "10871:6:12" + }, + "nativeSrc": "10871:26:12", + "nodeType": "YulFunctionCall", + "src": "10871:26:12" + }, + "nativeSrc": "10871:26:12", + "nodeType": "YulExpressionStatement", + "src": "10871:26:12" + }, + { + "nativeSrc": "10910:21:12", + "nodeType": "YulVariableDeclaration", + "src": "10910:21:12", + "value": { + "arguments": [ + { + "name": "m", + "nativeSrc": "10923:1:12", + "nodeType": "YulIdentifier", + "src": "10923:1:12" + }, + { + "kind": "number", + "nativeSrc": "10926:4:12", + "nodeType": "YulLiteral", + "src": "10926:4:12", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10919:3:12", + "nodeType": "YulIdentifier", + "src": "10919:3:12" + }, + "nativeSrc": "10919:12:12", + "nodeType": "YulFunctionCall", + "src": "10919:12:12" + }, + "variables": [ + { + "name": "d", + "nativeSrc": "10914:1:12", + "nodeType": "YulTypedName", + "src": "10914:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "d", + "nativeSrc": "10951:1:12", + "nodeType": "YulIdentifier", + "src": "10951:1:12" + }, + { + "kind": "number", + "nativeSrc": "10954:4:12", + "nodeType": "YulLiteral", + "src": "10954:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "10944:6:12", + "nodeType": "YulIdentifier", + "src": "10944:6:12" + }, + "nativeSrc": "10944:15:12", + "nodeType": "YulFunctionCall", + "src": "10944:15:12" + }, + "nativeSrc": "10944:15:12", + "nodeType": "YulExpressionStatement", + "src": "10944:15:12" + }, + { + "nativeSrc": "11064:36:12", + "nodeType": "YulVariableDeclaration", + "src": "11064:36:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "11077:4:12", + "nodeType": "YulLiteral", + "src": "11077:4:12", + "type": "", + "value": "0x20" + }, + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "11089:9:12", + "nodeType": "YulIdentifier", + "src": "11089:9:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "11083:5:12", + "nodeType": "YulIdentifier", + "src": "11083:5:12" + }, + "nativeSrc": "11083:16:12", + "nodeType": "YulFunctionCall", + "src": "11083:16:12" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11073:3:12", + "nodeType": "YulIdentifier", + "src": "11073:3:12" + }, + "nativeSrc": "11073:27:12", + "nodeType": "YulFunctionCall", + "src": "11073:27:12" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "11068:1:12", + "nodeType": "YulTypedName", + "src": "11068:1:12", + "type": "" + } + ] + }, + { + "nativeSrc": "11113:65:12", + "nodeType": "YulVariableDeclaration", + "src": "11113:65:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "11138:3:12", + "nodeType": "YulIdentifier", + "src": "11138:3:12" + }, + "nativeSrc": "11138:5:12", + "nodeType": "YulFunctionCall", + "src": "11138:5:12" + }, + { + "kind": "number", + "nativeSrc": "11145:1:12", + "nodeType": "YulLiteral", + "src": "11145:1:12", + "type": "", + "value": "4" + }, + { + "name": "signature", + "nativeSrc": "11148:9:12", + "nodeType": "YulIdentifier", + "src": "11148:9:12" + }, + { + "name": "n", + "nativeSrc": "11159:1:12", + "nodeType": "YulIdentifier", + "src": "11159:1:12" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "11166:1:12", + "nodeType": "YulIdentifier", + "src": "11166:1:12" + }, + { + "kind": "number", + "nativeSrc": "11169:4:12", + "nodeType": "YulLiteral", + "src": "11169:4:12", + "type": "", + "value": "0x44" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11162:3:12", + "nodeType": "YulIdentifier", + "src": "11162:3:12" + }, + "nativeSrc": "11162:12:12", + "nodeType": "YulFunctionCall", + "src": "11162:12:12" + }, + { + "name": "n", + "nativeSrc": "11176:1:12", + "nodeType": "YulIdentifier", + "src": "11176:1:12" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "11127:10:12", + "nodeType": "YulIdentifier", + "src": "11127:10:12" + }, + "nativeSrc": "11127:51:12", + "nodeType": "YulFunctionCall", + "src": "11127:51:12" + }, + "variables": [ + { + "name": "copied", + "nativeSrc": "11117:6:12", + "nodeType": "YulTypedName", + "src": "11117:6:12", + "type": "" + } + ] + }, + { + "nativeSrc": "11191:77:12", + "nodeType": "YulAssignment", + "src": "11191:77:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "11213:3:12", + "nodeType": "YulIdentifier", + "src": "11213:3:12" + }, + "nativeSrc": "11213:5:12", + "nodeType": "YulFunctionCall", + "src": "11213:5:12" + }, + { + "name": "signer", + "nativeSrc": "11220:6:12", + "nodeType": "YulIdentifier", + "src": "11220:6:12" + }, + { + "name": "m", + "nativeSrc": "11228:1:12", + "nodeType": "YulIdentifier", + "src": "11228:1:12" + }, + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "11235:14:12", + "nodeType": "YulIdentifier", + "src": "11235:14:12" + }, + "nativeSrc": "11235:16:12", + "nodeType": "YulFunctionCall", + "src": "11235:16:12" + }, + { + "kind": "number", + "nativeSrc": "11253:4:12", + "nodeType": "YulLiteral", + "src": "11253:4:12", + "type": "", + "value": "0x44" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11231:3:12", + "nodeType": "YulIdentifier", + "src": "11231:3:12" + }, + "nativeSrc": "11231:27:12", + "nodeType": "YulFunctionCall", + "src": "11231:27:12" + }, + { + "name": "d", + "nativeSrc": "11260:1:12", + "nodeType": "YulIdentifier", + "src": "11260:1:12" + }, + { + "kind": "number", + "nativeSrc": "11263:4:12", + "nodeType": "YulLiteral", + "src": "11263:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "11202:10:12", + "nodeType": "YulIdentifier", + "src": "11202:10:12" + }, + "nativeSrc": "11202:66:12", + "nodeType": "YulFunctionCall", + "src": "11202:66:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "11191:7:12", + "nodeType": "YulIdentifier", + "src": "11191:7:12" + } + ] + }, + { + "nativeSrc": "11281:53:12", + "nodeType": "YulAssignment", + "src": "11281:53:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "d", + "nativeSrc": "11305:1:12", + "nodeType": "YulIdentifier", + "src": "11305:1:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "11299:5:12", + "nodeType": "YulIdentifier", + "src": "11299:5:12" + }, + "nativeSrc": "11299:8:12", + "nodeType": "YulFunctionCall", + "src": "11299:8:12" + }, + { + "name": "f", + "nativeSrc": "11309:1:12", + "nodeType": "YulIdentifier", + "src": "11309:1:12" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "11296:2:12", + "nodeType": "YulIdentifier", + "src": "11296:2:12" + }, + "nativeSrc": "11296:15:12", + "nodeType": "YulFunctionCall", + "src": "11296:15:12" + }, + { + "arguments": [ + { + "name": "isValid", + "nativeSrc": "11317:7:12", + "nodeType": "YulIdentifier", + "src": "11317:7:12" + }, + { + "name": "copied", + "nativeSrc": "11326:6:12", + "nodeType": "YulIdentifier", + "src": "11326:6:12" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "11313:3:12", + "nodeType": "YulIdentifier", + "src": "11313:3:12" + }, + "nativeSrc": "11313:20:12", + "nodeType": "YulFunctionCall", + "src": "11313:20:12" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "11292:3:12", + "nodeType": "YulIdentifier", + "src": "11292:3:12" + }, + "nativeSrc": "11292:42:12", + "nodeType": "YulFunctionCall", + "src": "11292:42:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "11281:7:12", + "nodeType": "YulIdentifier", + "src": "11281:7:12" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6251, + "isOffset": false, + "isSlot": false, + "src": "10892:4:12", + "valueSize": 1 + }, + { + "declaration": 6256, + "isOffset": false, + "isSlot": false, + "src": "11191:7:12", + "valueSize": 1 + }, + { + "declaration": 6256, + "isOffset": false, + "isSlot": false, + "src": "11281:7:12", + "valueSize": 1 + }, + { + "declaration": 6256, + "isOffset": false, + "isSlot": false, + "src": "11317:7:12", + "valueSize": 1 + }, + { + "declaration": 6253, + "isOffset": false, + "isSlot": false, + "src": "11089:9:12", + "valueSize": 1 + }, + { + "declaration": 6253, + "isOffset": false, + "isSlot": false, + "src": "11148:9:12", + "valueSize": 1 + }, + { + "declaration": 6249, + "isOffset": false, + "isSlot": false, + "src": "11220:6:12", + "valueSize": 1 + } + ], + "id": 6258, + "nodeType": "InlineAssembly", + "src": "10689:655:12" + } + ] + }, + "documentation": { + "id": 6247, + "nodeType": "StructuredDocumentation", + "src": "10386:90:12", + "text": "@dev Returns whether `signature` is valid for `hash` for an ERC1271 `signer` contract." + }, + "id": 6260, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isValidERC1271SignatureNow", + "nameLocation": "10490:26:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6254, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6249, + "mutability": "mutable", + "name": "signer", + "nameLocation": "10525:6:12", + "nodeType": "VariableDeclaration", + "scope": 6260, + "src": "10517:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6248, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10517:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6251, + "mutability": "mutable", + "name": "hash", + "nameLocation": "10541:4:12", + "nodeType": "VariableDeclaration", + "scope": 6260, + "src": "10533:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6250, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10533:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6253, + "mutability": "mutable", + "name": "signature", + "nameLocation": "10560:9:12", + "nodeType": "VariableDeclaration", + "scope": 6260, + "src": "10547:22:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6252, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "10547:5:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "10516:54:12" + }, + "returnParameters": { + "id": 6257, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6256, + "mutability": "mutable", + "name": "isValid", + "nameLocation": "10623:7:12", + "nodeType": "VariableDeclaration", + "scope": 6260, + "src": "10618:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6255, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "10618:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "10617:14:12" + }, + "scope": 6365, + "src": "10481:869:12", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6273, + "nodeType": "Block", + "src": "11618:700:12", + "statements": [ + { + "AST": { + "nativeSrc": "11680:632:12", + "nodeType": "YulBlock", + "src": "11680:632:12", + "statements": [ + { + "nativeSrc": "11694:20:12", + "nodeType": "YulVariableDeclaration", + "src": "11694:20:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "11709:4:12", + "nodeType": "YulLiteral", + "src": "11709:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "11703:5:12", + "nodeType": "YulIdentifier", + "src": "11703:5:12" + }, + "nativeSrc": "11703:11:12", + "nodeType": "YulFunctionCall", + "src": "11703:11:12" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "11698:1:12", + "nodeType": "YulTypedName", + "src": "11698:1:12", + "type": "" + } + ] + }, + { + "nativeSrc": "11727:29:12", + "nodeType": "YulVariableDeclaration", + "src": "11727:29:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "11740:3:12", + "nodeType": "YulLiteral", + "src": "11740:3:12", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "11745:10:12", + "nodeType": "YulLiteral", + "src": "11745:10:12", + "type": "", + "value": "0x1626ba7e" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "11736:3:12", + "nodeType": "YulIdentifier", + "src": "11736:3:12" + }, + "nativeSrc": "11736:20:12", + "nodeType": "YulFunctionCall", + "src": "11736:20:12" + }, + "variables": [ + { + "name": "f", + "nativeSrc": "11731:1:12", + "nodeType": "YulTypedName", + "src": "11731:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "11776:1:12", + "nodeType": "YulIdentifier", + "src": "11776:1:12" + }, + { + "name": "f", + "nativeSrc": "11779:1:12", + "nodeType": "YulIdentifier", + "src": "11779:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11769:6:12", + "nodeType": "YulIdentifier", + "src": "11769:6:12" + }, + "nativeSrc": "11769:12:12", + "nodeType": "YulFunctionCall", + "src": "11769:12:12" + }, + "nativeSrc": "11769:12:12", + "nodeType": "YulExpressionStatement", + "src": "11769:12:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "11864:1:12", + "nodeType": "YulIdentifier", + "src": "11864:1:12" + }, + { + "kind": "number", + "nativeSrc": "11867:4:12", + "nodeType": "YulLiteral", + "src": "11867:4:12", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11860:3:12", + "nodeType": "YulIdentifier", + "src": "11860:3:12" + }, + "nativeSrc": "11860:12:12", + "nodeType": "YulFunctionCall", + "src": "11860:12:12" + }, + { + "name": "hash", + "nativeSrc": "11874:4:12", + "nodeType": "YulIdentifier", + "src": "11874:4:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11853:6:12", + "nodeType": "YulIdentifier", + "src": "11853:6:12" + }, + "nativeSrc": "11853:26:12", + "nodeType": "YulFunctionCall", + "src": "11853:26:12" + }, + "nativeSrc": "11853:26:12", + "nodeType": "YulExpressionStatement", + "src": "11853:26:12" + }, + { + "nativeSrc": "11892:21:12", + "nodeType": "YulVariableDeclaration", + "src": "11892:21:12", + "value": { + "arguments": [ + { + "name": "m", + "nativeSrc": "11905:1:12", + "nodeType": "YulIdentifier", + "src": "11905:1:12" + }, + { + "kind": "number", + "nativeSrc": "11908:4:12", + "nodeType": "YulLiteral", + "src": "11908:4:12", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11901:3:12", + "nodeType": "YulIdentifier", + "src": "11901:3:12" + }, + "nativeSrc": "11901:12:12", + "nodeType": "YulFunctionCall", + "src": "11901:12:12" + }, + "variables": [ + { + "name": "d", + "nativeSrc": "11896:1:12", + "nodeType": "YulTypedName", + "src": "11896:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "d", + "nativeSrc": "11933:1:12", + "nodeType": "YulIdentifier", + "src": "11933:1:12" + }, + { + "kind": "number", + "nativeSrc": "11936:4:12", + "nodeType": "YulLiteral", + "src": "11936:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11926:6:12", + "nodeType": "YulIdentifier", + "src": "11926:6:12" + }, + "nativeSrc": "11926:15:12", + "nodeType": "YulFunctionCall", + "src": "11926:15:12" + }, + "nativeSrc": "11926:15:12", + "nodeType": "YulExpressionStatement", + "src": "11926:15:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "12015:1:12", + "nodeType": "YulIdentifier", + "src": "12015:1:12" + }, + { + "kind": "number", + "nativeSrc": "12018:4:12", + "nodeType": "YulLiteral", + "src": "12018:4:12", + "type": "", + "value": "0x44" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12011:3:12", + "nodeType": "YulIdentifier", + "src": "12011:3:12" + }, + "nativeSrc": "12011:12:12", + "nodeType": "YulFunctionCall", + "src": "12011:12:12" + }, + { + "name": "signature.length", + "nativeSrc": "12025:16:12", + "nodeType": "YulIdentifier", + "src": "12025:16:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12004:6:12", + "nodeType": "YulIdentifier", + "src": "12004:6:12" + }, + "nativeSrc": "12004:38:12", + "nodeType": "YulFunctionCall", + "src": "12004:38:12" + }, + "nativeSrc": "12004:38:12", + "nodeType": "YulExpressionStatement", + "src": "12004:38:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "12114:1:12", + "nodeType": "YulIdentifier", + "src": "12114:1:12" + }, + { + "kind": "number", + "nativeSrc": "12117:4:12", + "nodeType": "YulLiteral", + "src": "12117:4:12", + "type": "", + "value": "0x64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12110:3:12", + "nodeType": "YulIdentifier", + "src": "12110:3:12" + }, + "nativeSrc": "12110:12:12", + "nodeType": "YulFunctionCall", + "src": "12110:12:12" + }, + { + "name": "signature.offset", + "nativeSrc": "12124:16:12", + "nodeType": "YulIdentifier", + "src": "12124:16:12" + }, + { + "name": "signature.length", + "nativeSrc": "12142:16:12", + "nodeType": "YulIdentifier", + "src": "12142:16:12" + } + ], + "functionName": { + "name": "calldatacopy", + "nativeSrc": "12097:12:12", + "nodeType": "YulIdentifier", + "src": "12097:12:12" + }, + "nativeSrc": "12097:62:12", + "nodeType": "YulFunctionCall", + "src": "12097:62:12" + }, + "nativeSrc": "12097:62:12", + "nodeType": "YulExpressionStatement", + "src": "12097:62:12" + }, + { + "nativeSrc": "12172:77:12", + "nodeType": "YulAssignment", + "src": "12172:77:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "12194:3:12", + "nodeType": "YulIdentifier", + "src": "12194:3:12" + }, + "nativeSrc": "12194:5:12", + "nodeType": "YulFunctionCall", + "src": "12194:5:12" + }, + { + "name": "signer", + "nativeSrc": "12201:6:12", + "nodeType": "YulIdentifier", + "src": "12201:6:12" + }, + { + "name": "m", + "nativeSrc": "12209:1:12", + "nodeType": "YulIdentifier", + "src": "12209:1:12" + }, + { + "arguments": [ + { + "name": "signature.length", + "nativeSrc": "12216:16:12", + "nodeType": "YulIdentifier", + "src": "12216:16:12" + }, + { + "kind": "number", + "nativeSrc": "12234:4:12", + "nodeType": "YulLiteral", + "src": "12234:4:12", + "type": "", + "value": "0x64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12212:3:12", + "nodeType": "YulIdentifier", + "src": "12212:3:12" + }, + "nativeSrc": "12212:27:12", + "nodeType": "YulFunctionCall", + "src": "12212:27:12" + }, + { + "name": "d", + "nativeSrc": "12241:1:12", + "nodeType": "YulIdentifier", + "src": "12241:1:12" + }, + { + "kind": "number", + "nativeSrc": "12244:4:12", + "nodeType": "YulLiteral", + "src": "12244:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "12183:10:12", + "nodeType": "YulIdentifier", + "src": "12183:10:12" + }, + "nativeSrc": "12183:66:12", + "nodeType": "YulFunctionCall", + "src": "12183:66:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "12172:7:12", + "nodeType": "YulIdentifier", + "src": "12172:7:12" + } + ] + }, + { + "nativeSrc": "12262:40:12", + "nodeType": "YulAssignment", + "src": "12262:40:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "d", + "nativeSrc": "12286:1:12", + "nodeType": "YulIdentifier", + "src": "12286:1:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "12280:5:12", + "nodeType": "YulIdentifier", + "src": "12280:5:12" + }, + "nativeSrc": "12280:8:12", + "nodeType": "YulFunctionCall", + "src": "12280:8:12" + }, + { + "name": "f", + "nativeSrc": "12290:1:12", + "nodeType": "YulIdentifier", + "src": "12290:1:12" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "12277:2:12", + "nodeType": "YulIdentifier", + "src": "12277:2:12" + }, + "nativeSrc": "12277:15:12", + "nodeType": "YulFunctionCall", + "src": "12277:15:12" + }, + { + "name": "isValid", + "nativeSrc": "12294:7:12", + "nodeType": "YulIdentifier", + "src": "12294:7:12" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "12273:3:12", + "nodeType": "YulIdentifier", + "src": "12273:3:12" + }, + "nativeSrc": "12273:29:12", + "nodeType": "YulFunctionCall", + "src": "12273:29:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "12262:7:12", + "nodeType": "YulIdentifier", + "src": "12262:7:12" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6265, + "isOffset": false, + "isSlot": false, + "src": "11874:4:12", + "valueSize": 1 + }, + { + "declaration": 6270, + "isOffset": false, + "isSlot": false, + "src": "12172:7:12", + "valueSize": 1 + }, + { + "declaration": 6270, + "isOffset": false, + "isSlot": false, + "src": "12262:7:12", + "valueSize": 1 + }, + { + "declaration": 6270, + "isOffset": false, + "isSlot": false, + "src": "12294:7:12", + "valueSize": 1 + }, + { + "declaration": 6267, + "isOffset": false, + "isSlot": false, + "src": "12025:16:12", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 6267, + "isOffset": false, + "isSlot": false, + "src": "12142:16:12", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 6267, + "isOffset": false, + "isSlot": false, + "src": "12216:16:12", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 6267, + "isOffset": true, + "isSlot": false, + "src": "12124:16:12", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 6263, + "isOffset": false, + "isSlot": false, + "src": "12201:6:12", + "valueSize": 1 + } + ], + "id": 6272, + "nodeType": "InlineAssembly", + "src": "11671:641:12" + } + ] + }, + "documentation": { + "id": 6261, + "nodeType": "StructuredDocumentation", + "src": "11356:90:12", + "text": "@dev Returns whether `signature` is valid for `hash` for an ERC1271 `signer` contract." + }, + "id": 6274, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isValidERC1271SignatureNowCalldata", + "nameLocation": "11460:34:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6268, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6263, + "mutability": "mutable", + "name": "signer", + "nameLocation": "11512:6:12", + "nodeType": "VariableDeclaration", + "scope": 6274, + "src": "11504:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6262, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11504:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6265, + "mutability": "mutable", + "name": "hash", + "nameLocation": "11536:4:12", + "nodeType": "VariableDeclaration", + "scope": 6274, + "src": "11528:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6264, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11528:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6267, + "mutability": "mutable", + "name": "signature", + "nameLocation": "11565:9:12", + "nodeType": "VariableDeclaration", + "scope": 6274, + "src": "11550:24:12", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6266, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "11550:5:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "11494:86:12" + }, + "returnParameters": { + "id": 6271, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6270, + "mutability": "mutable", + "name": "isValid", + "nameLocation": "11609:7:12", + "nodeType": "VariableDeclaration", + "scope": 6274, + "src": "11604:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6269, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "11604:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "11603:14:12" + }, + "scope": 6365, + "src": "11451:867:12", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6289, + "nodeType": "Block", + "src": "12595:744:12", + "statements": [ + { + "AST": { + "nativeSrc": "12657:676:12", + "nodeType": "YulBlock", + "src": "12657:676:12", + "statements": [ + { + "nativeSrc": "12671:20:12", + "nodeType": "YulVariableDeclaration", + "src": "12671:20:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12686:4:12", + "nodeType": "YulLiteral", + "src": "12686:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "12680:5:12", + "nodeType": "YulIdentifier", + "src": "12680:5:12" + }, + "nativeSrc": "12680:11:12", + "nodeType": "YulFunctionCall", + "src": "12680:11:12" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "12675:1:12", + "nodeType": "YulTypedName", + "src": "12675:1:12", + "type": "" + } + ] + }, + { + "nativeSrc": "12704:29:12", + "nodeType": "YulVariableDeclaration", + "src": "12704:29:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12717:3:12", + "nodeType": "YulLiteral", + "src": "12717:3:12", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "12722:10:12", + "nodeType": "YulLiteral", + "src": "12722:10:12", + "type": "", + "value": "0x1626ba7e" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "12713:3:12", + "nodeType": "YulIdentifier", + "src": "12713:3:12" + }, + "nativeSrc": "12713:20:12", + "nodeType": "YulFunctionCall", + "src": "12713:20:12" + }, + "variables": [ + { + "name": "f", + "nativeSrc": "12708:1:12", + "nodeType": "YulTypedName", + "src": "12708:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "12753:1:12", + "nodeType": "YulIdentifier", + "src": "12753:1:12" + }, + { + "name": "f", + "nativeSrc": "12756:1:12", + "nodeType": "YulIdentifier", + "src": "12756:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12746:6:12", + "nodeType": "YulIdentifier", + "src": "12746:6:12" + }, + "nativeSrc": "12746:12:12", + "nodeType": "YulFunctionCall", + "src": "12746:12:12" + }, + "nativeSrc": "12746:12:12", + "nodeType": "YulExpressionStatement", + "src": "12746:12:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "12841:1:12", + "nodeType": "YulIdentifier", + "src": "12841:1:12" + }, + { + "kind": "number", + "nativeSrc": "12844:4:12", + "nodeType": "YulLiteral", + "src": "12844:4:12", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12837:3:12", + "nodeType": "YulIdentifier", + "src": "12837:3:12" + }, + "nativeSrc": "12837:12:12", + "nodeType": "YulFunctionCall", + "src": "12837:12:12" + }, + { + "name": "hash", + "nativeSrc": "12851:4:12", + "nodeType": "YulIdentifier", + "src": "12851:4:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12830:6:12", + "nodeType": "YulIdentifier", + "src": "12830:6:12" + }, + "nativeSrc": "12830:26:12", + "nodeType": "YulFunctionCall", + "src": "12830:26:12" + }, + "nativeSrc": "12830:26:12", + "nodeType": "YulExpressionStatement", + "src": "12830:26:12" + }, + { + "nativeSrc": "12869:21:12", + "nodeType": "YulVariableDeclaration", + "src": "12869:21:12", + "value": { + "arguments": [ + { + "name": "m", + "nativeSrc": "12882:1:12", + "nodeType": "YulIdentifier", + "src": "12882:1:12" + }, + { + "kind": "number", + "nativeSrc": "12885:4:12", + "nodeType": "YulLiteral", + "src": "12885:4:12", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12878:3:12", + "nodeType": "YulIdentifier", + "src": "12878:3:12" + }, + "nativeSrc": "12878:12:12", + "nodeType": "YulFunctionCall", + "src": "12878:12:12" + }, + "variables": [ + { + "name": "d", + "nativeSrc": "12873:1:12", + "nodeType": "YulTypedName", + "src": "12873:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "d", + "nativeSrc": "12910:1:12", + "nodeType": "YulIdentifier", + "src": "12910:1:12" + }, + { + "kind": "number", + "nativeSrc": "12913:4:12", + "nodeType": "YulLiteral", + "src": "12913:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12903:6:12", + "nodeType": "YulIdentifier", + "src": "12903:6:12" + }, + "nativeSrc": "12903:15:12", + "nodeType": "YulFunctionCall", + "src": "12903:15:12" + }, + "nativeSrc": "12903:15:12", + "nodeType": "YulExpressionStatement", + "src": "12903:15:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "12992:1:12", + "nodeType": "YulIdentifier", + "src": "12992:1:12" + }, + { + "kind": "number", + "nativeSrc": "12995:4:12", + "nodeType": "YulLiteral", + "src": "12995:4:12", + "type": "", + "value": "0x44" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12988:3:12", + "nodeType": "YulIdentifier", + "src": "12988:3:12" + }, + "nativeSrc": "12988:12:12", + "nodeType": "YulFunctionCall", + "src": "12988:12:12" + }, + { + "kind": "number", + "nativeSrc": "13002:2:12", + "nodeType": "YulLiteral", + "src": "13002:2:12", + "type": "", + "value": "65" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12981:6:12", + "nodeType": "YulIdentifier", + "src": "12981:6:12" + }, + "nativeSrc": "12981:24:12", + "nodeType": "YulFunctionCall", + "src": "12981:24:12" + }, + "nativeSrc": "12981:24:12", + "nodeType": "YulExpressionStatement", + "src": "12981:24:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "13057:1:12", + "nodeType": "YulIdentifier", + "src": "13057:1:12" + }, + { + "kind": "number", + "nativeSrc": "13060:4:12", + "nodeType": "YulLiteral", + "src": "13060:4:12", + "type": "", + "value": "0x64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13053:3:12", + "nodeType": "YulIdentifier", + "src": "13053:3:12" + }, + "nativeSrc": "13053:12:12", + "nodeType": "YulFunctionCall", + "src": "13053:12:12" + }, + { + "name": "r", + "nativeSrc": "13067:1:12", + "nodeType": "YulIdentifier", + "src": "13067:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13046:6:12", + "nodeType": "YulIdentifier", + "src": "13046:6:12" + }, + "nativeSrc": "13046:23:12", + "nodeType": "YulFunctionCall", + "src": "13046:23:12" + }, + "nativeSrc": "13046:23:12", + "nodeType": "YulExpressionStatement", + "src": "13046:23:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "13101:1:12", + "nodeType": "YulIdentifier", + "src": "13101:1:12" + }, + { + "kind": "number", + "nativeSrc": "13104:4:12", + "nodeType": "YulLiteral", + "src": "13104:4:12", + "type": "", + "value": "0x84" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13097:3:12", + "nodeType": "YulIdentifier", + "src": "13097:3:12" + }, + "nativeSrc": "13097:12:12", + "nodeType": "YulFunctionCall", + "src": "13097:12:12" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13115:1:12", + "nodeType": "YulLiteral", + "src": "13115:1:12", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13122:1:12", + "nodeType": "YulLiteral", + "src": "13122:1:12", + "type": "", + "value": "1" + }, + { + "name": "vs", + "nativeSrc": "13125:2:12", + "nodeType": "YulIdentifier", + "src": "13125:2:12" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "13118:3:12", + "nodeType": "YulIdentifier", + "src": "13118:3:12" + }, + "nativeSrc": "13118:10:12", + "nodeType": "YulFunctionCall", + "src": "13118:10:12" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "13111:3:12", + "nodeType": "YulIdentifier", + "src": "13111:3:12" + }, + "nativeSrc": "13111:18:12", + "nodeType": "YulFunctionCall", + "src": "13111:18:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13090:6:12", + "nodeType": "YulIdentifier", + "src": "13090:6:12" + }, + "nativeSrc": "13090:40:12", + "nodeType": "YulFunctionCall", + "src": "13090:40:12" + }, + "nativeSrc": "13090:40:12", + "nodeType": "YulExpressionStatement", + "src": "13090:40:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "13163:1:12", + "nodeType": "YulIdentifier", + "src": "13163:1:12" + }, + { + "kind": "number", + "nativeSrc": "13166:4:12", + "nodeType": "YulLiteral", + "src": "13166:4:12", + "type": "", + "value": "0xa4" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13159:3:12", + "nodeType": "YulIdentifier", + "src": "13159:3:12" + }, + "nativeSrc": "13159:12:12", + "nodeType": "YulFunctionCall", + "src": "13159:12:12" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13181:3:12", + "nodeType": "YulLiteral", + "src": "13181:3:12", + "type": "", + "value": "255" + }, + { + "name": "vs", + "nativeSrc": "13186:2:12", + "nodeType": "YulIdentifier", + "src": "13186:2:12" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "13177:3:12", + "nodeType": "YulIdentifier", + "src": "13177:3:12" + }, + "nativeSrc": "13177:12:12", + "nodeType": "YulFunctionCall", + "src": "13177:12:12" + }, + { + "kind": "number", + "nativeSrc": "13191:2:12", + "nodeType": "YulLiteral", + "src": "13191:2:12", + "type": "", + "value": "27" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13173:3:12", + "nodeType": "YulIdentifier", + "src": "13173:3:12" + }, + "nativeSrc": "13173:21:12", + "nodeType": "YulFunctionCall", + "src": "13173:21:12" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "13151:7:12", + "nodeType": "YulIdentifier", + "src": "13151:7:12" + }, + "nativeSrc": "13151:44:12", + "nodeType": "YulFunctionCall", + "src": "13151:44:12" + }, + "nativeSrc": "13151:44:12", + "nodeType": "YulExpressionStatement", + "src": "13151:44:12" + }, + { + "nativeSrc": "13216:54:12", + "nodeType": "YulAssignment", + "src": "13216:54:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "13238:3:12", + "nodeType": "YulIdentifier", + "src": "13238:3:12" + }, + "nativeSrc": "13238:5:12", + "nodeType": "YulFunctionCall", + "src": "13238:5:12" + }, + { + "name": "signer", + "nativeSrc": "13245:6:12", + "nodeType": "YulIdentifier", + "src": "13245:6:12" + }, + { + "name": "m", + "nativeSrc": "13253:1:12", + "nodeType": "YulIdentifier", + "src": "13253:1:12" + }, + { + "kind": "number", + "nativeSrc": "13256:4:12", + "nodeType": "YulLiteral", + "src": "13256:4:12", + "type": "", + "value": "0xa5" + }, + { + "name": "d", + "nativeSrc": "13262:1:12", + "nodeType": "YulIdentifier", + "src": "13262:1:12" + }, + { + "kind": "number", + "nativeSrc": "13265:4:12", + "nodeType": "YulLiteral", + "src": "13265:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "13227:10:12", + "nodeType": "YulIdentifier", + "src": "13227:10:12" + }, + "nativeSrc": "13227:43:12", + "nodeType": "YulFunctionCall", + "src": "13227:43:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "13216:7:12", + "nodeType": "YulIdentifier", + "src": "13216:7:12" + } + ] + }, + { + "nativeSrc": "13283:40:12", + "nodeType": "YulAssignment", + "src": "13283:40:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "d", + "nativeSrc": "13307:1:12", + "nodeType": "YulIdentifier", + "src": "13307:1:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "13301:5:12", + "nodeType": "YulIdentifier", + "src": "13301:5:12" + }, + "nativeSrc": "13301:8:12", + "nodeType": "YulFunctionCall", + "src": "13301:8:12" + }, + { + "name": "f", + "nativeSrc": "13311:1:12", + "nodeType": "YulIdentifier", + "src": "13311:1:12" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "13298:2:12", + "nodeType": "YulIdentifier", + "src": "13298:2:12" + }, + "nativeSrc": "13298:15:12", + "nodeType": "YulFunctionCall", + "src": "13298:15:12" + }, + { + "name": "isValid", + "nativeSrc": "13315:7:12", + "nodeType": "YulIdentifier", + "src": "13315:7:12" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "13294:3:12", + "nodeType": "YulIdentifier", + "src": "13294:3:12" + }, + "nativeSrc": "13294:29:12", + "nodeType": "YulFunctionCall", + "src": "13294:29:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "13283:7:12", + "nodeType": "YulIdentifier", + "src": "13283:7:12" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6279, + "isOffset": false, + "isSlot": false, + "src": "12851:4:12", + "valueSize": 1 + }, + { + "declaration": 6286, + "isOffset": false, + "isSlot": false, + "src": "13216:7:12", + "valueSize": 1 + }, + { + "declaration": 6286, + "isOffset": false, + "isSlot": false, + "src": "13283:7:12", + "valueSize": 1 + }, + { + "declaration": 6286, + "isOffset": false, + "isSlot": false, + "src": "13315:7:12", + "valueSize": 1 + }, + { + "declaration": 6281, + "isOffset": false, + "isSlot": false, + "src": "13067:1:12", + "valueSize": 1 + }, + { + "declaration": 6277, + "isOffset": false, + "isSlot": false, + "src": "13245:6:12", + "valueSize": 1 + }, + { + "declaration": 6283, + "isOffset": false, + "isSlot": false, + "src": "13125:2:12", + "valueSize": 1 + }, + { + "declaration": 6283, + "isOffset": false, + "isSlot": false, + "src": "13186:2:12", + "valueSize": 1 + } + ], + "id": 6288, + "nodeType": "InlineAssembly", + "src": "12648:685:12" + } + ] + }, + "documentation": { + "id": 6275, + "nodeType": "StructuredDocumentation", + "src": "12324:112:12", + "text": "@dev Returns whether the signature (`r`, `vs`) is valid for `hash`\n for an ERC1271 `signer` contract." + }, + "id": 6290, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isValidERC1271SignatureNow", + "nameLocation": "12450:26:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6284, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6277, + "mutability": "mutable", + "name": "signer", + "nameLocation": "12485:6:12", + "nodeType": "VariableDeclaration", + "scope": 6290, + "src": "12477:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6276, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12477:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6279, + "mutability": "mutable", + "name": "hash", + "nameLocation": "12501:4:12", + "nodeType": "VariableDeclaration", + "scope": 6290, + "src": "12493:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6278, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12493:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6281, + "mutability": "mutable", + "name": "r", + "nameLocation": "12515:1:12", + "nodeType": "VariableDeclaration", + "scope": 6290, + "src": "12507:9:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6280, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12507:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6283, + "mutability": "mutable", + "name": "vs", + "nameLocation": "12526:2:12", + "nodeType": "VariableDeclaration", + "scope": 6290, + "src": "12518:10:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6282, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12518:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "12476:53:12" + }, + "returnParameters": { + "id": 6287, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6286, + "mutability": "mutable", + "name": "isValid", + "nameLocation": "12582:7:12", + "nodeType": "VariableDeclaration", + "scope": 6290, + "src": "12577:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6285, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "12577:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "12576:14:12" + }, + "scope": 6365, + "src": "12441:898:12", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6307, + "nodeType": "Block", + "src": "13628:707:12", + "statements": [ + { + "AST": { + "nativeSrc": "13690:639:12", + "nodeType": "YulBlock", + "src": "13690:639:12", + "statements": [ + { + "nativeSrc": "13704:20:12", + "nodeType": "YulVariableDeclaration", + "src": "13704:20:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13719:4:12", + "nodeType": "YulLiteral", + "src": "13719:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "13713:5:12", + "nodeType": "YulIdentifier", + "src": "13713:5:12" + }, + "nativeSrc": "13713:11:12", + "nodeType": "YulFunctionCall", + "src": "13713:11:12" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "13708:1:12", + "nodeType": "YulTypedName", + "src": "13708:1:12", + "type": "" + } + ] + }, + { + "nativeSrc": "13737:29:12", + "nodeType": "YulVariableDeclaration", + "src": "13737:29:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13750:3:12", + "nodeType": "YulLiteral", + "src": "13750:3:12", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "13755:10:12", + "nodeType": "YulLiteral", + "src": "13755:10:12", + "type": "", + "value": "0x1626ba7e" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "13746:3:12", + "nodeType": "YulIdentifier", + "src": "13746:3:12" + }, + "nativeSrc": "13746:20:12", + "nodeType": "YulFunctionCall", + "src": "13746:20:12" + }, + "variables": [ + { + "name": "f", + "nativeSrc": "13741:1:12", + "nodeType": "YulTypedName", + "src": "13741:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "13786:1:12", + "nodeType": "YulIdentifier", + "src": "13786:1:12" + }, + { + "name": "f", + "nativeSrc": "13789:1:12", + "nodeType": "YulIdentifier", + "src": "13789:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13779:6:12", + "nodeType": "YulIdentifier", + "src": "13779:6:12" + }, + "nativeSrc": "13779:12:12", + "nodeType": "YulFunctionCall", + "src": "13779:12:12" + }, + "nativeSrc": "13779:12:12", + "nodeType": "YulExpressionStatement", + "src": "13779:12:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "13874:1:12", + "nodeType": "YulIdentifier", + "src": "13874:1:12" + }, + { + "kind": "number", + "nativeSrc": "13877:4:12", + "nodeType": "YulLiteral", + "src": "13877:4:12", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13870:3:12", + "nodeType": "YulIdentifier", + "src": "13870:3:12" + }, + "nativeSrc": "13870:12:12", + "nodeType": "YulFunctionCall", + "src": "13870:12:12" + }, + { + "name": "hash", + "nativeSrc": "13884:4:12", + "nodeType": "YulIdentifier", + "src": "13884:4:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13863:6:12", + "nodeType": "YulIdentifier", + "src": "13863:6:12" + }, + "nativeSrc": "13863:26:12", + "nodeType": "YulFunctionCall", + "src": "13863:26:12" + }, + "nativeSrc": "13863:26:12", + "nodeType": "YulExpressionStatement", + "src": "13863:26:12" + }, + { + "nativeSrc": "13902:21:12", + "nodeType": "YulVariableDeclaration", + "src": "13902:21:12", + "value": { + "arguments": [ + { + "name": "m", + "nativeSrc": "13915:1:12", + "nodeType": "YulIdentifier", + "src": "13915:1:12" + }, + { + "kind": "number", + "nativeSrc": "13918:4:12", + "nodeType": "YulLiteral", + "src": "13918:4:12", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13911:3:12", + "nodeType": "YulIdentifier", + "src": "13911:3:12" + }, + "nativeSrc": "13911:12:12", + "nodeType": "YulFunctionCall", + "src": "13911:12:12" + }, + "variables": [ + { + "name": "d", + "nativeSrc": "13906:1:12", + "nodeType": "YulTypedName", + "src": "13906:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "d", + "nativeSrc": "13943:1:12", + "nodeType": "YulIdentifier", + "src": "13943:1:12" + }, + { + "kind": "number", + "nativeSrc": "13946:4:12", + "nodeType": "YulLiteral", + "src": "13946:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13936:6:12", + "nodeType": "YulIdentifier", + "src": "13936:6:12" + }, + "nativeSrc": "13936:15:12", + "nodeType": "YulFunctionCall", + "src": "13936:15:12" + }, + "nativeSrc": "13936:15:12", + "nodeType": "YulExpressionStatement", + "src": "13936:15:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "14025:1:12", + "nodeType": "YulIdentifier", + "src": "14025:1:12" + }, + { + "kind": "number", + "nativeSrc": "14028:4:12", + "nodeType": "YulLiteral", + "src": "14028:4:12", + "type": "", + "value": "0x44" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14021:3:12", + "nodeType": "YulIdentifier", + "src": "14021:3:12" + }, + "nativeSrc": "14021:12:12", + "nodeType": "YulFunctionCall", + "src": "14021:12:12" + }, + { + "kind": "number", + "nativeSrc": "14035:2:12", + "nodeType": "YulLiteral", + "src": "14035:2:12", + "type": "", + "value": "65" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "14014:6:12", + "nodeType": "YulIdentifier", + "src": "14014:6:12" + }, + "nativeSrc": "14014:24:12", + "nodeType": "YulFunctionCall", + "src": "14014:24:12" + }, + "nativeSrc": "14014:24:12", + "nodeType": "YulExpressionStatement", + "src": "14014:24:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "14090:1:12", + "nodeType": "YulIdentifier", + "src": "14090:1:12" + }, + { + "kind": "number", + "nativeSrc": "14093:4:12", + "nodeType": "YulLiteral", + "src": "14093:4:12", + "type": "", + "value": "0x64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14086:3:12", + "nodeType": "YulIdentifier", + "src": "14086:3:12" + }, + "nativeSrc": "14086:12:12", + "nodeType": "YulFunctionCall", + "src": "14086:12:12" + }, + { + "name": "r", + "nativeSrc": "14100:1:12", + "nodeType": "YulIdentifier", + "src": "14100:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "14079:6:12", + "nodeType": "YulIdentifier", + "src": "14079:6:12" + }, + "nativeSrc": "14079:23:12", + "nodeType": "YulFunctionCall", + "src": "14079:23:12" + }, + "nativeSrc": "14079:23:12", + "nodeType": "YulExpressionStatement", + "src": "14079:23:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "14134:1:12", + "nodeType": "YulIdentifier", + "src": "14134:1:12" + }, + { + "kind": "number", + "nativeSrc": "14137:4:12", + "nodeType": "YulLiteral", + "src": "14137:4:12", + "type": "", + "value": "0x84" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14130:3:12", + "nodeType": "YulIdentifier", + "src": "14130:3:12" + }, + "nativeSrc": "14130:12:12", + "nodeType": "YulFunctionCall", + "src": "14130:12:12" + }, + { + "name": "s", + "nativeSrc": "14144:1:12", + "nodeType": "YulIdentifier", + "src": "14144:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "14123:6:12", + "nodeType": "YulIdentifier", + "src": "14123:6:12" + }, + "nativeSrc": "14123:23:12", + "nodeType": "YulFunctionCall", + "src": "14123:23:12" + }, + "nativeSrc": "14123:23:12", + "nodeType": "YulExpressionStatement", + "src": "14123:23:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "14179:1:12", + "nodeType": "YulIdentifier", + "src": "14179:1:12" + }, + { + "kind": "number", + "nativeSrc": "14182:4:12", + "nodeType": "YulLiteral", + "src": "14182:4:12", + "type": "", + "value": "0xa4" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14175:3:12", + "nodeType": "YulIdentifier", + "src": "14175:3:12" + }, + "nativeSrc": "14175:12:12", + "nodeType": "YulFunctionCall", + "src": "14175:12:12" + }, + { + "name": "v", + "nativeSrc": "14189:1:12", + "nodeType": "YulIdentifier", + "src": "14189:1:12" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "14167:7:12", + "nodeType": "YulIdentifier", + "src": "14167:7:12" + }, + "nativeSrc": "14167:24:12", + "nodeType": "YulFunctionCall", + "src": "14167:24:12" + }, + "nativeSrc": "14167:24:12", + "nodeType": "YulExpressionStatement", + "src": "14167:24:12" + }, + { + "nativeSrc": "14212:54:12", + "nodeType": "YulAssignment", + "src": "14212:54:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "14234:3:12", + "nodeType": "YulIdentifier", + "src": "14234:3:12" + }, + "nativeSrc": "14234:5:12", + "nodeType": "YulFunctionCall", + "src": "14234:5:12" + }, + { + "name": "signer", + "nativeSrc": "14241:6:12", + "nodeType": "YulIdentifier", + "src": "14241:6:12" + }, + { + "name": "m", + "nativeSrc": "14249:1:12", + "nodeType": "YulIdentifier", + "src": "14249:1:12" + }, + { + "kind": "number", + "nativeSrc": "14252:4:12", + "nodeType": "YulLiteral", + "src": "14252:4:12", + "type": "", + "value": "0xa5" + }, + { + "name": "d", + "nativeSrc": "14258:1:12", + "nodeType": "YulIdentifier", + "src": "14258:1:12" + }, + { + "kind": "number", + "nativeSrc": "14261:4:12", + "nodeType": "YulLiteral", + "src": "14261:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "14223:10:12", + "nodeType": "YulIdentifier", + "src": "14223:10:12" + }, + "nativeSrc": "14223:43:12", + "nodeType": "YulFunctionCall", + "src": "14223:43:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "14212:7:12", + "nodeType": "YulIdentifier", + "src": "14212:7:12" + } + ] + }, + { + "nativeSrc": "14279:40:12", + "nodeType": "YulAssignment", + "src": "14279:40:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "d", + "nativeSrc": "14303:1:12", + "nodeType": "YulIdentifier", + "src": "14303:1:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "14297:5:12", + "nodeType": "YulIdentifier", + "src": "14297:5:12" + }, + "nativeSrc": "14297:8:12", + "nodeType": "YulFunctionCall", + "src": "14297:8:12" + }, + { + "name": "f", + "nativeSrc": "14307:1:12", + "nodeType": "YulIdentifier", + "src": "14307:1:12" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "14294:2:12", + "nodeType": "YulIdentifier", + "src": "14294:2:12" + }, + "nativeSrc": "14294:15:12", + "nodeType": "YulFunctionCall", + "src": "14294:15:12" + }, + { + "name": "isValid", + "nativeSrc": "14311:7:12", + "nodeType": "YulIdentifier", + "src": "14311:7:12" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "14290:3:12", + "nodeType": "YulIdentifier", + "src": "14290:3:12" + }, + "nativeSrc": "14290:29:12", + "nodeType": "YulFunctionCall", + "src": "14290:29:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "14279:7:12", + "nodeType": "YulIdentifier", + "src": "14279:7:12" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6295, + "isOffset": false, + "isSlot": false, + "src": "13884:4:12", + "valueSize": 1 + }, + { + "declaration": 6304, + "isOffset": false, + "isSlot": false, + "src": "14212:7:12", + "valueSize": 1 + }, + { + "declaration": 6304, + "isOffset": false, + "isSlot": false, + "src": "14279:7:12", + "valueSize": 1 + }, + { + "declaration": 6304, + "isOffset": false, + "isSlot": false, + "src": "14311:7:12", + "valueSize": 1 + }, + { + "declaration": 6299, + "isOffset": false, + "isSlot": false, + "src": "14100:1:12", + "valueSize": 1 + }, + { + "declaration": 6301, + "isOffset": false, + "isSlot": false, + "src": "14144:1:12", + "valueSize": 1 + }, + { + "declaration": 6293, + "isOffset": false, + "isSlot": false, + "src": "14241:6:12", + "valueSize": 1 + }, + { + "declaration": 6297, + "isOffset": false, + "isSlot": false, + "src": "14189:1:12", + "valueSize": 1 + } + ], + "id": 6306, + "nodeType": "InlineAssembly", + "src": "13681:648:12" + } + ] + }, + "documentation": { + "id": 6291, + "nodeType": "StructuredDocumentation", + "src": "13345:116:12", + "text": "@dev Returns whether the signature (`v`, `r`, `s`) is valid for `hash`\n for an ERC1271 `signer` contract." + }, + "id": 6308, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isValidERC1271SignatureNow", + "nameLocation": "13475:26:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6302, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6293, + "mutability": "mutable", + "name": "signer", + "nameLocation": "13510:6:12", + "nodeType": "VariableDeclaration", + "scope": 6308, + "src": "13502:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6292, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13502:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6295, + "mutability": "mutable", + "name": "hash", + "nameLocation": "13526:4:12", + "nodeType": "VariableDeclaration", + "scope": 6308, + "src": "13518:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6294, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "13518:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6297, + "mutability": "mutable", + "name": "v", + "nameLocation": "13538:1:12", + "nodeType": "VariableDeclaration", + "scope": 6308, + "src": "13532:7:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 6296, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "13532:5:12", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6299, + "mutability": "mutable", + "name": "r", + "nameLocation": "13549:1:12", + "nodeType": "VariableDeclaration", + "scope": 6308, + "src": "13541:9:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6298, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "13541:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6301, + "mutability": "mutable", + "name": "s", + "nameLocation": "13560:1:12", + "nodeType": "VariableDeclaration", + "scope": 6308, + "src": "13552:9:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6300, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "13552:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "13501:61:12" + }, + "returnParameters": { + "id": 6305, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6304, + "mutability": "mutable", + "name": "isValid", + "nameLocation": "13615:7:12", + "nodeType": "VariableDeclaration", + "scope": 6308, + "src": "13610:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6303, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "13610:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "13609:14:12" + }, + "scope": 6365, + "src": "13466:869:12", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6321, + "nodeType": "Block", + "src": "15568:3267:12", + "statements": [ + { + "AST": { + "nativeSrc": "15630:3199:12", + "nodeType": "YulBlock", + "src": "15630:3199:12", + "statements": [ + { + "body": { + "nativeSrc": "15714:673:12", + "nodeType": "YulBlock", + "src": "15714:673:12", + "statements": [ + { + "nativeSrc": "15732:21:12", + "nodeType": "YulVariableDeclaration", + "src": "15732:21:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "15748:4:12", + "nodeType": "YulLiteral", + "src": "15748:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "15742:5:12", + "nodeType": "YulIdentifier", + "src": "15742:5:12" + }, + "nativeSrc": "15742:11:12", + "nodeType": "YulFunctionCall", + "src": "15742:11:12" + }, + "variables": [ + { + "name": "m_", + "nativeSrc": "15736:2:12", + "nodeType": "YulTypedName", + "src": "15736:2:12", + "type": "" + } + ] + }, + { + "nativeSrc": "15770:30:12", + "nodeType": "YulVariableDeclaration", + "src": "15770:30:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "15784:3:12", + "nodeType": "YulLiteral", + "src": "15784:3:12", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "15789:10:12", + "nodeType": "YulLiteral", + "src": "15789:10:12", + "type": "", + "value": "0x1626ba7e" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "15780:3:12", + "nodeType": "YulIdentifier", + "src": "15780:3:12" + }, + "nativeSrc": "15780:20:12", + "nodeType": "YulFunctionCall", + "src": "15780:20:12" + }, + "variables": [ + { + "name": "f_", + "nativeSrc": "15774:2:12", + "nodeType": "YulTypedName", + "src": "15774:2:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "m_", + "nativeSrc": "15824:2:12", + "nodeType": "YulIdentifier", + "src": "15824:2:12" + }, + { + "name": "f_", + "nativeSrc": "15828:2:12", + "nodeType": "YulIdentifier", + "src": "15828:2:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "15817:6:12", + "nodeType": "YulIdentifier", + "src": "15817:6:12" + }, + "nativeSrc": "15817:14:12", + "nodeType": "YulFunctionCall", + "src": "15817:14:12" + }, + "nativeSrc": "15817:14:12", + "nodeType": "YulExpressionStatement", + "src": "15817:14:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m_", + "nativeSrc": "15918:2:12", + "nodeType": "YulIdentifier", + "src": "15918:2:12" + }, + { + "kind": "number", + "nativeSrc": "15922:4:12", + "nodeType": "YulLiteral", + "src": "15922:4:12", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15914:3:12", + "nodeType": "YulIdentifier", + "src": "15914:3:12" + }, + "nativeSrc": "15914:13:12", + "nodeType": "YulFunctionCall", + "src": "15914:13:12" + }, + { + "name": "hash_", + "nativeSrc": "15929:5:12", + "nodeType": "YulIdentifier", + "src": "15929:5:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "15907:6:12", + "nodeType": "YulIdentifier", + "src": "15907:6:12" + }, + "nativeSrc": "15907:28:12", + "nodeType": "YulFunctionCall", + "src": "15907:28:12" + }, + "nativeSrc": "15907:28:12", + "nodeType": "YulExpressionStatement", + "src": "15907:28:12" + }, + { + "nativeSrc": "15952:23:12", + "nodeType": "YulVariableDeclaration", + "src": "15952:23:12", + "value": { + "arguments": [ + { + "name": "m_", + "nativeSrc": "15966:2:12", + "nodeType": "YulIdentifier", + "src": "15966:2:12" + }, + { + "kind": "number", + "nativeSrc": "15970:4:12", + "nodeType": "YulLiteral", + "src": "15970:4:12", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15962:3:12", + "nodeType": "YulIdentifier", + "src": "15962:3:12" + }, + "nativeSrc": "15962:13:12", + "nodeType": "YulFunctionCall", + "src": "15962:13:12" + }, + "variables": [ + { + "name": "d_", + "nativeSrc": "15956:2:12", + "nodeType": "YulTypedName", + "src": "15956:2:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "d_", + "nativeSrc": "15999:2:12", + "nodeType": "YulIdentifier", + "src": "15999:2:12" + }, + { + "kind": "number", + "nativeSrc": "16003:4:12", + "nodeType": "YulLiteral", + "src": "16003:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "15992:6:12", + "nodeType": "YulIdentifier", + "src": "15992:6:12" + }, + "nativeSrc": "15992:16:12", + "nodeType": "YulFunctionCall", + "src": "15992:16:12" + }, + "nativeSrc": "15992:16:12", + "nodeType": "YulExpressionStatement", + "src": "15992:16:12" + }, + { + "nativeSrc": "16075:38:12", + "nodeType": "YulVariableDeclaration", + "src": "16075:38:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "16089:4:12", + "nodeType": "YulLiteral", + "src": "16089:4:12", + "type": "", + "value": "0x20" + }, + { + "arguments": [ + { + "name": "signature_", + "nativeSrc": "16101:10:12", + "nodeType": "YulIdentifier", + "src": "16101:10:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "16095:5:12", + "nodeType": "YulIdentifier", + "src": "16095:5:12" + }, + "nativeSrc": "16095:17:12", + "nodeType": "YulFunctionCall", + "src": "16095:17:12" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16085:3:12", + "nodeType": "YulIdentifier", + "src": "16085:3:12" + }, + "nativeSrc": "16085:28:12", + "nodeType": "YulFunctionCall", + "src": "16085:28:12" + }, + "variables": [ + { + "name": "n_", + "nativeSrc": "16079:2:12", + "nodeType": "YulTypedName", + "src": "16079:2:12", + "type": "" + } + ] + }, + { + "nativeSrc": "16130:70:12", + "nodeType": "YulVariableDeclaration", + "src": "16130:70:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "16156:3:12", + "nodeType": "YulIdentifier", + "src": "16156:3:12" + }, + "nativeSrc": "16156:5:12", + "nodeType": "YulFunctionCall", + "src": "16156:5:12" + }, + { + "kind": "number", + "nativeSrc": "16163:1:12", + "nodeType": "YulLiteral", + "src": "16163:1:12", + "type": "", + "value": "4" + }, + { + "name": "signature_", + "nativeSrc": "16166:10:12", + "nodeType": "YulIdentifier", + "src": "16166:10:12" + }, + { + "name": "n_", + "nativeSrc": "16178:2:12", + "nodeType": "YulIdentifier", + "src": "16178:2:12" + }, + { + "arguments": [ + { + "name": "m_", + "nativeSrc": "16186:2:12", + "nodeType": "YulIdentifier", + "src": "16186:2:12" + }, + { + "kind": "number", + "nativeSrc": "16190:4:12", + "nodeType": "YulLiteral", + "src": "16190:4:12", + "type": "", + "value": "0x44" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16182:3:12", + "nodeType": "YulIdentifier", + "src": "16182:3:12" + }, + "nativeSrc": "16182:13:12", + "nodeType": "YulFunctionCall", + "src": "16182:13:12" + }, + { + "name": "n_", + "nativeSrc": "16197:2:12", + "nodeType": "YulIdentifier", + "src": "16197:2:12" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "16145:10:12", + "nodeType": "YulIdentifier", + "src": "16145:10:12" + }, + "nativeSrc": "16145:55:12", + "nodeType": "YulFunctionCall", + "src": "16145:55:12" + }, + "variables": [ + { + "name": "copied_", + "nativeSrc": "16134:7:12", + "nodeType": "YulTypedName", + "src": "16134:7:12", + "type": "" + } + ] + }, + { + "nativeSrc": "16217:81:12", + "nodeType": "YulAssignment", + "src": "16217:81:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "16240:3:12", + "nodeType": "YulIdentifier", + "src": "16240:3:12" + }, + "nativeSrc": "16240:5:12", + "nodeType": "YulFunctionCall", + "src": "16240:5:12" + }, + { + "name": "signer_", + "nativeSrc": "16247:7:12", + "nodeType": "YulIdentifier", + "src": "16247:7:12" + }, + { + "name": "m_", + "nativeSrc": "16256:2:12", + "nodeType": "YulIdentifier", + "src": "16256:2:12" + }, + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "16264:14:12", + "nodeType": "YulIdentifier", + "src": "16264:14:12" + }, + "nativeSrc": "16264:16:12", + "nodeType": "YulFunctionCall", + "src": "16264:16:12" + }, + { + "kind": "number", + "nativeSrc": "16282:4:12", + "nodeType": "YulLiteral", + "src": "16282:4:12", + "type": "", + "value": "0x44" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16260:3:12", + "nodeType": "YulIdentifier", + "src": "16260:3:12" + }, + "nativeSrc": "16260:27:12", + "nodeType": "YulFunctionCall", + "src": "16260:27:12" + }, + { + "name": "d_", + "nativeSrc": "16289:2:12", + "nodeType": "YulIdentifier", + "src": "16289:2:12" + }, + { + "kind": "number", + "nativeSrc": "16293:4:12", + "nodeType": "YulLiteral", + "src": "16293:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "16229:10:12", + "nodeType": "YulIdentifier", + "src": "16229:10:12" + }, + "nativeSrc": "16229:69:12", + "nodeType": "YulFunctionCall", + "src": "16229:69:12" + }, + "variableNames": [ + { + "name": "_isValid", + "nativeSrc": "16217:8:12", + "nodeType": "YulIdentifier", + "src": "16217:8:12" + } + ] + }, + { + "nativeSrc": "16315:58:12", + "nodeType": "YulAssignment", + "src": "16315:58:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "d_", + "nativeSrc": "16340:2:12", + "nodeType": "YulIdentifier", + "src": "16340:2:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "16334:5:12", + "nodeType": "YulIdentifier", + "src": "16334:5:12" + }, + "nativeSrc": "16334:9:12", + "nodeType": "YulFunctionCall", + "src": "16334:9:12" + }, + { + "name": "f_", + "nativeSrc": "16345:2:12", + "nodeType": "YulIdentifier", + "src": "16345:2:12" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "16331:2:12", + "nodeType": "YulIdentifier", + "src": "16331:2:12" + }, + "nativeSrc": "16331:17:12", + "nodeType": "YulFunctionCall", + "src": "16331:17:12" + }, + { + "arguments": [ + { + "name": "_isValid", + "nativeSrc": "16354:8:12", + "nodeType": "YulIdentifier", + "src": "16354:8:12" + }, + { + "name": "copied_", + "nativeSrc": "16364:7:12", + "nodeType": "YulIdentifier", + "src": "16364:7:12" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "16350:3:12", + "nodeType": "YulIdentifier", + "src": "16350:3:12" + }, + "nativeSrc": "16350:22:12", + "nodeType": "YulFunctionCall", + "src": "16350:22:12" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "16327:3:12", + "nodeType": "YulIdentifier", + "src": "16327:3:12" + }, + "nativeSrc": "16327:46:12", + "nodeType": "YulFunctionCall", + "src": "16327:46:12" + }, + "variableNames": [ + { + "name": "_isValid", + "nativeSrc": "16315:8:12", + "nodeType": "YulIdentifier", + "src": "16315:8:12" + } + ] + } + ] + }, + "name": "callIsValidSignature", + "nativeSrc": "15644:743:12", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "signer_", + "nativeSrc": "15674:7:12", + "nodeType": "YulTypedName", + "src": "15674:7:12", + "type": "" + }, + { + "name": "hash_", + "nativeSrc": "15683:5:12", + "nodeType": "YulTypedName", + "src": "15683:5:12", + "type": "" + }, + { + "name": "signature_", + "nativeSrc": "15690:10:12", + "nodeType": "YulTypedName", + "src": "15690:10:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "_isValid", + "nativeSrc": "15705:8:12", + "nodeType": "YulTypedName", + "src": "15705:8:12", + "type": "" + } + ], + "src": "15644:743:12" + }, + { + "nativeSrc": "16400:41:12", + "nodeType": "YulVariableDeclaration", + "src": "16400:41:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "signer", + "nativeSrc": "16433:6:12", + "nodeType": "YulIdentifier", + "src": "16433:6:12" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "16421:11:12", + "nodeType": "YulIdentifier", + "src": "16421:11:12" + }, + "nativeSrc": "16421:19:12", + "nodeType": "YulFunctionCall", + "src": "16421:19:12" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "16414:6:12", + "nodeType": "YulIdentifier", + "src": "16414:6:12" + }, + "nativeSrc": "16414:27:12", + "nodeType": "YulFunctionCall", + "src": "16414:27:12" + }, + "variables": [ + { + "name": "noCode", + "nativeSrc": "16404:6:12", + "nodeType": "YulTypedName", + "src": "16404:6:12", + "type": "" + } + ] + }, + { + "nativeSrc": "16454:25:12", + "nodeType": "YulVariableDeclaration", + "src": "16454:25:12", + "value": { + "arguments": [ + { + "name": "signature", + "nativeSrc": "16469:9:12", + "nodeType": "YulIdentifier", + "src": "16469:9:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "16463:5:12", + "nodeType": "YulIdentifier", + "src": "16463:5:12" + }, + "nativeSrc": "16463:16:12", + "nodeType": "YulFunctionCall", + "src": "16463:16:12" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "16458:1:12", + "nodeType": "YulTypedName", + "src": "16458:1:12", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "16504:1262:12", + "nodeType": "YulBlock", + "src": "16504:1262:12", + "statements": [ + { + "body": { + "nativeSrc": "16602:144:12", + "nodeType": "YulBlock", + "src": "16602:144:12", + "statements": [ + { + "body": { + "nativeSrc": "16642:60:12", + "nodeType": "YulBlock", + "src": "16642:60:12", + "statements": [ + { + "nativeSrc": "16644:56:12", + "nodeType": "YulAssignment", + "src": "16644:56:12", + "value": { + "arguments": [ + { + "name": "signer", + "nativeSrc": "16676:6:12", + "nodeType": "YulIdentifier", + "src": "16676:6:12" + }, + { + "name": "hash", + "nativeSrc": "16684:4:12", + "nodeType": "YulIdentifier", + "src": "16684:4:12" + }, + { + "name": "signature", + "nativeSrc": "16690:9:12", + "nodeType": "YulIdentifier", + "src": "16690:9:12" + } + ], + "functionName": { + "name": "callIsValidSignature", + "nativeSrc": "16655:20:12", + "nodeType": "YulIdentifier", + "src": "16655:20:12" + }, + "nativeSrc": "16655:45:12", + "nodeType": "YulFunctionCall", + "src": "16655:45:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "16644:7:12", + "nodeType": "YulIdentifier", + "src": "16644:7:12" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "noCode", + "nativeSrc": "16634:6:12", + "nodeType": "YulIdentifier", + "src": "16634:6:12" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "16627:6:12", + "nodeType": "YulIdentifier", + "src": "16627:6:12" + }, + "nativeSrc": "16627:14:12", + "nodeType": "YulFunctionCall", + "src": "16627:14:12" + }, + "nativeSrc": "16624:78:12", + "nodeType": "YulIf", + "src": "16624:78:12" + }, + { + "nativeSrc": "16723:5:12", + "nodeType": "YulBreak", + "src": "16723:5:12" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "16545:9:12", + "nodeType": "YulIdentifier", + "src": "16545:9:12" + }, + { + "name": "n", + "nativeSrc": "16556:1:12", + "nodeType": "YulIdentifier", + "src": "16556:1:12" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16541:3:12", + "nodeType": "YulIdentifier", + "src": "16541:3:12" + }, + "nativeSrc": "16541:17:12", + "nodeType": "YulFunctionCall", + "src": "16541:17:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "16535:5:12", + "nodeType": "YulIdentifier", + "src": "16535:5:12" + }, + "nativeSrc": "16535:24:12", + "nodeType": "YulFunctionCall", + "src": "16535:24:12" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "16565:6:12", + "nodeType": "YulLiteral", + "src": "16565:6:12", + "type": "", + "value": "0x6492" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "isValid", + "nativeSrc": "16581:7:12", + "nodeType": "YulIdentifier", + "src": "16581:7:12" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "16577:3:12", + "nodeType": "YulIdentifier", + "src": "16577:3:12" + }, + "nativeSrc": "16577:12:12", + "nodeType": "YulFunctionCall", + "src": "16577:12:12" + }, + { + "kind": "number", + "nativeSrc": "16591:6:12", + "nodeType": "YulLiteral", + "src": "16591:6:12", + "type": "", + "value": "0xffff" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "16573:3:12", + "nodeType": "YulIdentifier", + "src": "16573:3:12" + }, + "nativeSrc": "16573:25:12", + "nodeType": "YulFunctionCall", + "src": "16573:25:12" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "16561:3:12", + "nodeType": "YulIdentifier", + "src": "16561:3:12" + }, + "nativeSrc": "16561:38:12", + "nodeType": "YulFunctionCall", + "src": "16561:38:12" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "16532:2:12", + "nodeType": "YulIdentifier", + "src": "16532:2:12" + }, + "nativeSrc": "16532:68:12", + "nodeType": "YulFunctionCall", + "src": "16532:68:12" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "16525:6:12", + "nodeType": "YulIdentifier", + "src": "16525:6:12" + }, + "nativeSrc": "16525:76:12", + "nodeType": "YulFunctionCall", + "src": "16525:76:12" + }, + "nativeSrc": "16522:224:12", + "nodeType": "YulIf", + "src": "16522:224:12" + }, + { + "body": { + "nativeSrc": "16781:225:12", + "nodeType": "YulBlock", + "src": "16781:225:12", + "statements": [ + { + "nativeSrc": "16803:29:12", + "nodeType": "YulVariableDeclaration", + "src": "16803:29:12", + "value": { + "arguments": [ + { + "name": "signature", + "nativeSrc": "16816:9:12", + "nodeType": "YulIdentifier", + "src": "16816:9:12" + }, + { + "kind": "number", + "nativeSrc": "16827:4:12", + "nodeType": "YulLiteral", + "src": "16827:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16812:3:12", + "nodeType": "YulIdentifier", + "src": "16812:3:12" + }, + "nativeSrc": "16812:20:12", + "nodeType": "YulFunctionCall", + "src": "16812:20:12" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "16807:1:12", + "nodeType": "YulTypedName", + "src": "16807:1:12", + "type": "" + } + ] + }, + { + "nativeSrc": "16873:74:12", + "nodeType": "YulAssignment", + "src": "16873:74:12", + "value": { + "arguments": [ + { + "name": "signer", + "nativeSrc": "16905:6:12", + "nodeType": "YulIdentifier", + "src": "16905:6:12" + }, + { + "name": "hash", + "nativeSrc": "16913:4:12", + "nodeType": "YulIdentifier", + "src": "16913:4:12" + }, + { + "arguments": [ + { + "name": "o", + "nativeSrc": "16923:1:12", + "nodeType": "YulIdentifier", + "src": "16923:1:12" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "16936:1:12", + "nodeType": "YulIdentifier", + "src": "16936:1:12" + }, + { + "kind": "number", + "nativeSrc": "16939:4:12", + "nodeType": "YulLiteral", + "src": "16939:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16932:3:12", + "nodeType": "YulIdentifier", + "src": "16932:3:12" + }, + "nativeSrc": "16932:12:12", + "nodeType": "YulFunctionCall", + "src": "16932:12:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "16926:5:12", + "nodeType": "YulIdentifier", + "src": "16926:5:12" + }, + "nativeSrc": "16926:19:12", + "nodeType": "YulFunctionCall", + "src": "16926:19:12" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16919:3:12", + "nodeType": "YulIdentifier", + "src": "16919:3:12" + }, + "nativeSrc": "16919:27:12", + "nodeType": "YulFunctionCall", + "src": "16919:27:12" + } + ], + "functionName": { + "name": "callIsValidSignature", + "nativeSrc": "16884:20:12", + "nodeType": "YulIdentifier", + "src": "16884:20:12" + }, + "nativeSrc": "16884:63:12", + "nodeType": "YulFunctionCall", + "src": "16884:63:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "16873:7:12", + "nodeType": "YulIdentifier", + "src": "16873:7:12" + } + ] + }, + { + "body": { + "nativeSrc": "16979:9:12", + "nodeType": "YulBlock", + "src": "16979:9:12", + "statements": [ + { + "nativeSrc": "16981:5:12", + "nodeType": "YulBreak", + "src": "16981:5:12" + } + ] + }, + "condition": { + "name": "isValid", + "nativeSrc": "16971:7:12", + "nodeType": "YulIdentifier", + "src": "16971:7:12" + }, + "nativeSrc": "16968:20:12", + "nodeType": "YulIf", + "src": "16968:20:12" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "noCode", + "nativeSrc": "16773:6:12", + "nodeType": "YulIdentifier", + "src": "16773:6:12" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "16766:6:12", + "nodeType": "YulIdentifier", + "src": "16766:6:12" + }, + "nativeSrc": "16766:14:12", + "nodeType": "YulFunctionCall", + "src": "16766:14:12" + }, + "nativeSrc": "16763:243:12", + "nodeType": "YulIf", + "src": "16763:243:12" + }, + { + "nativeSrc": "17023:20:12", + "nodeType": "YulVariableDeclaration", + "src": "17023:20:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "17038:4:12", + "nodeType": "YulLiteral", + "src": "17038:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "17032:5:12", + "nodeType": "YulIdentifier", + "src": "17032:5:12" + }, + "nativeSrc": "17032:11:12", + "nodeType": "YulFunctionCall", + "src": "17032:11:12" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "17027:1:12", + "nodeType": "YulTypedName", + "src": "17027:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "17067:1:12", + "nodeType": "YulIdentifier", + "src": "17067:1:12" + }, + { + "name": "signer", + "nativeSrc": "17070:6:12", + "nodeType": "YulIdentifier", + "src": "17070:6:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "17060:6:12", + "nodeType": "YulIdentifier", + "src": "17060:6:12" + }, + "nativeSrc": "17060:17:12", + "nodeType": "YulFunctionCall", + "src": "17060:17:12" + }, + "nativeSrc": "17060:17:12", + "nodeType": "YulExpressionStatement", + "src": "17060:17:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "17105:1:12", + "nodeType": "YulIdentifier", + "src": "17105:1:12" + }, + { + "kind": "number", + "nativeSrc": "17108:4:12", + "nodeType": "YulLiteral", + "src": "17108:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17101:3:12", + "nodeType": "YulIdentifier", + "src": "17101:3:12" + }, + "nativeSrc": "17101:12:12", + "nodeType": "YulFunctionCall", + "src": "17101:12:12" + }, + { + "name": "hash", + "nativeSrc": "17115:4:12", + "nodeType": "YulIdentifier", + "src": "17115:4:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "17094:6:12", + "nodeType": "YulIdentifier", + "src": "17094:6:12" + }, + "nativeSrc": "17094:26:12", + "nodeType": "YulFunctionCall", + "src": "17094:26:12" + }, + "nativeSrc": "17094:26:12", + "nodeType": "YulExpressionStatement", + "src": "17094:26:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "17192:3:12", + "nodeType": "YulIdentifier", + "src": "17192:3:12" + }, + "nativeSrc": "17192:5:12", + "nodeType": "YulFunctionCall", + "src": "17192:5:12" + }, + { + "kind": "number", + "nativeSrc": "17241:42:12", + "nodeType": "YulLiteral", + "src": "17241:42:12", + "type": "", + "value": "0x0000bc370E4DC924F427d84e2f4B9Ec81626ba7E" + }, + { + "kind": "number", + "nativeSrc": "17336:1:12", + "nodeType": "YulLiteral", + "src": "17336:1:12", + "type": "", + "value": "0" + }, + { + "name": "m", + "nativeSrc": "17381:1:12", + "nodeType": "YulIdentifier", + "src": "17381:1:12" + }, + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "17432:14:12", + "nodeType": "YulIdentifier", + "src": "17432:14:12" + }, + "nativeSrc": "17432:16:12", + "nodeType": "YulFunctionCall", + "src": "17432:16:12" + }, + { + "kind": "number", + "nativeSrc": "17450:4:12", + "nodeType": "YulLiteral", + "src": "17450:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17428:3:12", + "nodeType": "YulIdentifier", + "src": "17428:3:12" + }, + "nativeSrc": "17428:27:12", + "nodeType": "YulFunctionCall", + "src": "17428:27:12" + }, + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "17525:3:12", + "nodeType": "YulIdentifier", + "src": "17525:3:12" + }, + "nativeSrc": "17525:5:12", + "nodeType": "YulFunctionCall", + "src": "17525:5:12" + }, + { + "kind": "number", + "nativeSrc": "17532:1:12", + "nodeType": "YulLiteral", + "src": "17532:1:12", + "type": "", + "value": "4" + }, + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "17539:9:12", + "nodeType": "YulIdentifier", + "src": "17539:9:12" + }, + { + "kind": "number", + "nativeSrc": "17550:4:12", + "nodeType": "YulLiteral", + "src": "17550:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17535:3:12", + "nodeType": "YulIdentifier", + "src": "17535:3:12" + }, + "nativeSrc": "17535:20:12", + "nodeType": "YulFunctionCall", + "src": "17535:20:12" + }, + { + "name": "n", + "nativeSrc": "17557:1:12", + "nodeType": "YulIdentifier", + "src": "17557:1:12" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "17564:1:12", + "nodeType": "YulIdentifier", + "src": "17564:1:12" + }, + { + "kind": "number", + "nativeSrc": "17567:4:12", + "nodeType": "YulLiteral", + "src": "17567:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17560:3:12", + "nodeType": "YulIdentifier", + "src": "17560:3:12" + }, + "nativeSrc": "17560:12:12", + "nodeType": "YulFunctionCall", + "src": "17560:12:12" + }, + { + "name": "n", + "nativeSrc": "17574:1:12", + "nodeType": "YulIdentifier", + "src": "17574:1:12" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "17514:10:12", + "nodeType": "YulIdentifier", + "src": "17514:10:12" + }, + "nativeSrc": "17514:62:12", + "nodeType": "YulFunctionCall", + "src": "17514:62:12" + }, + { + "kind": "number", + "nativeSrc": "17608:4:12", + "nodeType": "YulLiteral", + "src": "17608:4:12", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "call", + "nativeSrc": "17162:4:12", + "nodeType": "YulIdentifier", + "src": "17162:4:12" + }, + "nativeSrc": "17162:506:12", + "nodeType": "YulFunctionCall", + "src": "17162:506:12" + } + ], + "functionName": { + "name": "pop", + "nativeSrc": "17137:3:12", + "nodeType": "YulIdentifier", + "src": "17137:3:12" + }, + "nativeSrc": "17137:549:12", + "nodeType": "YulFunctionCall", + "src": "17137:549:12" + }, + "nativeSrc": "17137:549:12", + "nodeType": "YulExpressionStatement", + "src": "17137:549:12" + }, + { + "nativeSrc": "17703:27:12", + "nodeType": "YulAssignment", + "src": "17703:27:12", + "value": { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "17714:14:12", + "nodeType": "YulIdentifier", + "src": "17714:14:12" + }, + "nativeSrc": "17714:16:12", + "nodeType": "YulFunctionCall", + "src": "17714:16:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "17703:7:12", + "nodeType": "YulIdentifier", + "src": "17703:7:12" + } + ] + }, + { + "nativeSrc": "17747:5:12", + "nodeType": "YulBreak", + "src": "17747:5:12" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "16499:1:12", + "nodeType": "YulLiteral", + "src": "16499:1:12", + "type": "", + "value": "1" + }, + "nativeSrc": "16492:1274:12", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "16501:2:12", + "nodeType": "YulBlock", + "src": "16501:2:12", + "statements": [] + }, + "pre": { + "nativeSrc": "16496:2:12", + "nodeType": "YulBlock", + "src": "16496:2:12", + "statements": [] + }, + "src": "16492:1274:12" + }, + { + "body": { + "nativeSrc": "17873:946:12", + "nodeType": "YulBlock", + "src": "17873:946:12", + "statements": [ + { + "cases": [ + { + "body": { + "nativeSrc": "17924:202:12", + "nodeType": "YulBlock", + "src": "17924:202:12", + "statements": [ + { + "nativeSrc": "17946:37:12", + "nodeType": "YulVariableDeclaration", + "src": "17946:37:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "17966:9:12", + "nodeType": "YulIdentifier", + "src": "17966:9:12" + }, + { + "kind": "number", + "nativeSrc": "17977:4:12", + "nodeType": "YulLiteral", + "src": "17977:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17962:3:12", + "nodeType": "YulIdentifier", + "src": "17962:3:12" + }, + "nativeSrc": "17962:20:12", + "nodeType": "YulFunctionCall", + "src": "17962:20:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "17956:5:12", + "nodeType": "YulIdentifier", + "src": "17956:5:12" + }, + "nativeSrc": "17956:27:12", + "nodeType": "YulFunctionCall", + "src": "17956:27:12" + }, + "variables": [ + { + "name": "vs", + "nativeSrc": "17950:2:12", + "nodeType": "YulTypedName", + "src": "17950:2:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18011:4:12", + "nodeType": "YulLiteral", + "src": "18011:4:12", + "type": "", + "value": "0x20" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18025:3:12", + "nodeType": "YulLiteral", + "src": "18025:3:12", + "type": "", + "value": "255" + }, + { + "name": "vs", + "nativeSrc": "18030:2:12", + "nodeType": "YulIdentifier", + "src": "18030:2:12" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "18021:3:12", + "nodeType": "YulIdentifier", + "src": "18021:3:12" + }, + "nativeSrc": "18021:12:12", + "nodeType": "YulFunctionCall", + "src": "18021:12:12" + }, + { + "kind": "number", + "nativeSrc": "18035:2:12", + "nodeType": "YulLiteral", + "src": "18035:2:12", + "type": "", + "value": "27" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18017:3:12", + "nodeType": "YulIdentifier", + "src": "18017:3:12" + }, + "nativeSrc": "18017:21:12", + "nodeType": "YulFunctionCall", + "src": "18017:21:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18004:6:12", + "nodeType": "YulIdentifier", + "src": "18004:6:12" + }, + "nativeSrc": "18004:35:12", + "nodeType": "YulFunctionCall", + "src": "18004:35:12" + }, + "nativeSrc": "18004:35:12", + "nodeType": "YulExpressionStatement", + "src": "18004:35:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18075:4:12", + "nodeType": "YulLiteral", + "src": "18075:4:12", + "type": "", + "value": "0x60" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18085:1:12", + "nodeType": "YulLiteral", + "src": "18085:1:12", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18092:1:12", + "nodeType": "YulLiteral", + "src": "18092:1:12", + "type": "", + "value": "1" + }, + { + "name": "vs", + "nativeSrc": "18095:2:12", + "nodeType": "YulIdentifier", + "src": "18095:2:12" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "18088:3:12", + "nodeType": "YulIdentifier", + "src": "18088:3:12" + }, + "nativeSrc": "18088:10:12", + "nodeType": "YulFunctionCall", + "src": "18088:10:12" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "18081:3:12", + "nodeType": "YulIdentifier", + "src": "18081:3:12" + }, + "nativeSrc": "18081:18:12", + "nodeType": "YulFunctionCall", + "src": "18081:18:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18068:6:12", + "nodeType": "YulIdentifier", + "src": "18068:6:12" + }, + "nativeSrc": "18068:32:12", + "nodeType": "YulFunctionCall", + "src": "18068:32:12" + }, + "nativeSrc": "18068:32:12", + "nodeType": "YulExpressionStatement", + "src": "18068:32:12" + } + ] + }, + "nativeSrc": "17916:210:12", + "nodeType": "YulCase", + "src": "17916:210:12", + "value": { + "kind": "number", + "nativeSrc": "17921:2:12", + "nodeType": "YulLiteral", + "src": "17921:2:12", + "type": "", + "value": "64" + } + }, + { + "body": { + "nativeSrc": "18151:168:12", + "nodeType": "YulBlock", + "src": "18151:168:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18180:4:12", + "nodeType": "YulLiteral", + "src": "18180:4:12", + "type": "", + "value": "0x20" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18191:1:12", + "nodeType": "YulLiteral", + "src": "18191:1:12", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "18204:9:12", + "nodeType": "YulIdentifier", + "src": "18204:9:12" + }, + { + "kind": "number", + "nativeSrc": "18215:4:12", + "nodeType": "YulLiteral", + "src": "18215:4:12", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18200:3:12", + "nodeType": "YulIdentifier", + "src": "18200:3:12" + }, + "nativeSrc": "18200:20:12", + "nodeType": "YulFunctionCall", + "src": "18200:20:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "18194:5:12", + "nodeType": "YulIdentifier", + "src": "18194:5:12" + }, + "nativeSrc": "18194:27:12", + "nodeType": "YulFunctionCall", + "src": "18194:27:12" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "18186:4:12", + "nodeType": "YulIdentifier", + "src": "18186:4:12" + }, + "nativeSrc": "18186:36:12", + "nodeType": "YulFunctionCall", + "src": "18186:36:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18173:6:12", + "nodeType": "YulIdentifier", + "src": "18173:6:12" + }, + "nativeSrc": "18173:50:12", + "nodeType": "YulFunctionCall", + "src": "18173:50:12" + }, + "nativeSrc": "18173:50:12", + "nodeType": "YulExpressionStatement", + "src": "18173:50:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18259:4:12", + "nodeType": "YulLiteral", + "src": "18259:4:12", + "type": "", + "value": "0x60" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "18275:9:12", + "nodeType": "YulIdentifier", + "src": "18275:9:12" + }, + { + "kind": "number", + "nativeSrc": "18286:4:12", + "nodeType": "YulLiteral", + "src": "18286:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18271:3:12", + "nodeType": "YulIdentifier", + "src": "18271:3:12" + }, + "nativeSrc": "18271:20:12", + "nodeType": "YulFunctionCall", + "src": "18271:20:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "18265:5:12", + "nodeType": "YulIdentifier", + "src": "18265:5:12" + }, + "nativeSrc": "18265:27:12", + "nodeType": "YulFunctionCall", + "src": "18265:27:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18252:6:12", + "nodeType": "YulIdentifier", + "src": "18252:6:12" + }, + "nativeSrc": "18252:41:12", + "nodeType": "YulFunctionCall", + "src": "18252:41:12" + }, + "nativeSrc": "18252:41:12", + "nodeType": "YulExpressionStatement", + "src": "18252:41:12" + } + ] + }, + "nativeSrc": "18143:176:12", + "nodeType": "YulCase", + "src": "18143:176:12", + "value": { + "kind": "number", + "nativeSrc": "18148:2:12", + "nodeType": "YulLiteral", + "src": "18148:2:12", + "type": "", + "value": "65" + } + }, + { + "body": { + "nativeSrc": "18344:9:12", + "nodeType": "YulBlock", + "src": "18344:9:12", + "statements": [ + { + "nativeSrc": "18346:5:12", + "nodeType": "YulBreak", + "src": "18346:5:12" + } + ] + }, + "nativeSrc": "18336:17:12", + "nodeType": "YulCase", + "src": "18336:17:12", + "value": "default" + } + ], + "expression": { + "name": "n", + "nativeSrc": "17898:1:12", + "nodeType": "YulIdentifier", + "src": "17898:1:12" + }, + "nativeSrc": "17891:462:12", + "nodeType": "YulSwitch", + "src": "17891:462:12" + }, + { + "nativeSrc": "18370:20:12", + "nodeType": "YulVariableDeclaration", + "src": "18370:20:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18385:4:12", + "nodeType": "YulLiteral", + "src": "18385:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "18379:5:12", + "nodeType": "YulIdentifier", + "src": "18379:5:12" + }, + "nativeSrc": "18379:11:12", + "nodeType": "YulFunctionCall", + "src": "18379:11:12" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "18374:1:12", + "nodeType": "YulTypedName", + "src": "18374:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18414:4:12", + "nodeType": "YulLiteral", + "src": "18414:4:12", + "type": "", + "value": "0x00" + }, + { + "name": "hash", + "nativeSrc": "18420:4:12", + "nodeType": "YulIdentifier", + "src": "18420:4:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18407:6:12", + "nodeType": "YulIdentifier", + "src": "18407:6:12" + }, + "nativeSrc": "18407:18:12", + "nodeType": "YulFunctionCall", + "src": "18407:18:12" + }, + "nativeSrc": "18407:18:12", + "nodeType": "YulExpressionStatement", + "src": "18407:18:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18449:4:12", + "nodeType": "YulLiteral", + "src": "18449:4:12", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "18465:9:12", + "nodeType": "YulIdentifier", + "src": "18465:9:12" + }, + { + "kind": "number", + "nativeSrc": "18476:4:12", + "nodeType": "YulLiteral", + "src": "18476:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18461:3:12", + "nodeType": "YulIdentifier", + "src": "18461:3:12" + }, + "nativeSrc": "18461:20:12", + "nodeType": "YulFunctionCall", + "src": "18461:20:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "18455:5:12", + "nodeType": "YulIdentifier", + "src": "18455:5:12" + }, + "nativeSrc": "18455:27:12", + "nodeType": "YulFunctionCall", + "src": "18455:27:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18442:6:12", + "nodeType": "YulIdentifier", + "src": "18442:6:12" + }, + "nativeSrc": "18442:41:12", + "nodeType": "YulFunctionCall", + "src": "18442:41:12" + }, + "nativeSrc": "18442:41:12", + "nodeType": "YulExpressionStatement", + "src": "18442:41:12" + }, + { + "nativeSrc": "18508:68:12", + "nodeType": "YulVariableDeclaration", + "src": "18508:68:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "18542:3:12", + "nodeType": "YulIdentifier", + "src": "18542:3:12" + }, + "nativeSrc": "18542:5:12", + "nodeType": "YulFunctionCall", + "src": "18542:5:12" + }, + { + "kind": "number", + "nativeSrc": "18549:1:12", + "nodeType": "YulLiteral", + "src": "18549:1:12", + "type": "", + "value": "1" + }, + { + "kind": "number", + "nativeSrc": "18552:4:12", + "nodeType": "YulLiteral", + "src": "18552:4:12", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "18558:4:12", + "nodeType": "YulLiteral", + "src": "18558:4:12", + "type": "", + "value": "0x80" + }, + { + "kind": "number", + "nativeSrc": "18564:4:12", + "nodeType": "YulLiteral", + "src": "18564:4:12", + "type": "", + "value": "0x01" + }, + { + "kind": "number", + "nativeSrc": "18570:4:12", + "nodeType": "YulLiteral", + "src": "18570:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "18531:10:12", + "nodeType": "YulIdentifier", + "src": "18531:10:12" + }, + "nativeSrc": "18531:44:12", + "nodeType": "YulFunctionCall", + "src": "18531:44:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "18525:5:12", + "nodeType": "YulIdentifier", + "src": "18525:5:12" + }, + "nativeSrc": "18525:51:12", + "nodeType": "YulFunctionCall", + "src": "18525:51:12" + }, + "variables": [ + { + "name": "recovered", + "nativeSrc": "18512:9:12", + "nodeType": "YulTypedName", + "src": "18512:9:12", + "type": "" + } + ] + }, + { + "nativeSrc": "18593:64:12", + "nodeType": "YulAssignment", + "src": "18593:64:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "18607:14:12", + "nodeType": "YulIdentifier", + "src": "18607:14:12" + }, + "nativeSrc": "18607:16:12", + "nodeType": "YulFunctionCall", + "src": "18607:16:12" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18629:2:12", + "nodeType": "YulLiteral", + "src": "18629:2:12", + "type": "", + "value": "96" + }, + { + "arguments": [ + { + "name": "signer", + "nativeSrc": "18637:6:12", + "nodeType": "YulIdentifier", + "src": "18637:6:12" + }, + { + "name": "recovered", + "nativeSrc": "18645:9:12", + "nodeType": "YulIdentifier", + "src": "18645:9:12" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "18633:3:12", + "nodeType": "YulIdentifier", + "src": "18633:3:12" + }, + "nativeSrc": "18633:22:12", + "nodeType": "YulFunctionCall", + "src": "18633:22:12" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "18625:3:12", + "nodeType": "YulIdentifier", + "src": "18625:3:12" + }, + "nativeSrc": "18625:31:12", + "nodeType": "YulFunctionCall", + "src": "18625:31:12" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "18604:2:12", + "nodeType": "YulIdentifier", + "src": "18604:2:12" + }, + "nativeSrc": "18604:53:12", + "nodeType": "YulFunctionCall", + "src": "18604:53:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "18593:7:12", + "nodeType": "YulIdentifier", + "src": "18593:7:12" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18681:4:12", + "nodeType": "YulLiteral", + "src": "18681:4:12", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "18687:1:12", + "nodeType": "YulLiteral", + "src": "18687:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18674:6:12", + "nodeType": "YulIdentifier", + "src": "18674:6:12" + }, + "nativeSrc": "18674:15:12", + "nodeType": "YulFunctionCall", + "src": "18674:15:12" + }, + "nativeSrc": "18674:15:12", + "nodeType": "YulExpressionStatement", + "src": "18674:15:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18739:4:12", + "nodeType": "YulLiteral", + "src": "18739:4:12", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "18745:1:12", + "nodeType": "YulIdentifier", + "src": "18745:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18732:6:12", + "nodeType": "YulIdentifier", + "src": "18732:6:12" + }, + "nativeSrc": "18732:15:12", + "nodeType": "YulFunctionCall", + "src": "18732:15:12" + }, + "nativeSrc": "18732:15:12", + "nodeType": "YulExpressionStatement", + "src": "18732:15:12" + }, + { + "nativeSrc": "18800:5:12", + "nodeType": "YulBreak", + "src": "18800:5:12" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "noCode", + "nativeSrc": "17853:6:12", + "nodeType": "YulIdentifier", + "src": "17853:6:12" + }, + { + "name": "isValid", + "nativeSrc": "17861:7:12", + "nodeType": "YulIdentifier", + "src": "17861:7:12" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "17850:2:12", + "nodeType": "YulIdentifier", + "src": "17850:2:12" + }, + "nativeSrc": "17850:19:12", + "nodeType": "YulFunctionCall", + "src": "17850:19:12" + }, + "nativeSrc": "17843:976:12", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "17870:2:12", + "nodeType": "YulBlock", + "src": "17870:2:12", + "statements": [] + }, + "pre": { + "nativeSrc": "17847:2:12", + "nodeType": "YulBlock", + "src": "17847:2:12", + "statements": [] + }, + "src": "17843:976:12" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6313, + "isOffset": false, + "isSlot": false, + "src": "16684:4:12", + "valueSize": 1 + }, + { + "declaration": 6313, + "isOffset": false, + "isSlot": false, + "src": "16913:4:12", + "valueSize": 1 + }, + { + "declaration": 6313, + "isOffset": false, + "isSlot": false, + "src": "17115:4:12", + "valueSize": 1 + }, + { + "declaration": 6313, + "isOffset": false, + "isSlot": false, + "src": "18420:4:12", + "valueSize": 1 + }, + { + "declaration": 6318, + "isOffset": false, + "isSlot": false, + "src": "16581:7:12", + "valueSize": 1 + }, + { + "declaration": 6318, + "isOffset": false, + "isSlot": false, + "src": "16644:7:12", + "valueSize": 1 + }, + { + "declaration": 6318, + "isOffset": false, + "isSlot": false, + "src": "16873:7:12", + "valueSize": 1 + }, + { + "declaration": 6318, + "isOffset": false, + "isSlot": false, + "src": "16971:7:12", + "valueSize": 1 + }, + { + "declaration": 6318, + "isOffset": false, + "isSlot": false, + "src": "17703:7:12", + "valueSize": 1 + }, + { + "declaration": 6318, + "isOffset": false, + "isSlot": false, + "src": "17861:7:12", + "valueSize": 1 + }, + { + "declaration": 6318, + "isOffset": false, + "isSlot": false, + "src": "18593:7:12", + "valueSize": 1 + }, + { + "declaration": 6315, + "isOffset": false, + "isSlot": false, + "src": "16469:9:12", + "valueSize": 1 + }, + { + "declaration": 6315, + "isOffset": false, + "isSlot": false, + "src": "16545:9:12", + "valueSize": 1 + }, + { + "declaration": 6315, + "isOffset": false, + "isSlot": false, + "src": "16690:9:12", + "valueSize": 1 + }, + { + "declaration": 6315, + "isOffset": false, + "isSlot": false, + "src": "16816:9:12", + "valueSize": 1 + }, + { + "declaration": 6315, + "isOffset": false, + "isSlot": false, + "src": "17539:9:12", + "valueSize": 1 + }, + { + "declaration": 6315, + "isOffset": false, + "isSlot": false, + "src": "17966:9:12", + "valueSize": 1 + }, + { + "declaration": 6315, + "isOffset": false, + "isSlot": false, + "src": "18204:9:12", + "valueSize": 1 + }, + { + "declaration": 6315, + "isOffset": false, + "isSlot": false, + "src": "18275:9:12", + "valueSize": 1 + }, + { + "declaration": 6315, + "isOffset": false, + "isSlot": false, + "src": "18465:9:12", + "valueSize": 1 + }, + { + "declaration": 6311, + "isOffset": false, + "isSlot": false, + "src": "16433:6:12", + "valueSize": 1 + }, + { + "declaration": 6311, + "isOffset": false, + "isSlot": false, + "src": "16676:6:12", + "valueSize": 1 + }, + { + "declaration": 6311, + "isOffset": false, + "isSlot": false, + "src": "16905:6:12", + "valueSize": 1 + }, + { + "declaration": 6311, + "isOffset": false, + "isSlot": false, + "src": "17070:6:12", + "valueSize": 1 + }, + { + "declaration": 6311, + "isOffset": false, + "isSlot": false, + "src": "18637:6:12", + "valueSize": 1 + } + ], + "id": 6320, + "nodeType": "InlineAssembly", + "src": "15621:3208:12" + } + ] + }, + "documentation": { + "id": 6309, + "nodeType": "StructuredDocumentation", + "src": "14765:630:12", + "text": "@dev Returns whether `signature` is valid for `hash`.\n If the signature is postfixed with the ERC6492 magic number, it will attempt to\n deploy / prepare the `signer` smart account before doing a regular ERC1271 check.\n Note: This function is NOT reentrancy safe.\n The verifier must be deployed.\n Otherwise, the function will return false if `signer` is not yet deployed / prepared.\n See: https://gist.github.com/Vectorized/011d6becff6e0a73e42fe100f8d7ef04\n With a dedicated verifier, this function is safe to use in contracts\n that have been granted special permissions." + }, + "id": 6322, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isValidERC6492SignatureNowAllowSideEffects", + "nameLocation": "15409:42:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6316, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6311, + "mutability": "mutable", + "name": "signer", + "nameLocation": "15469:6:12", + "nodeType": "VariableDeclaration", + "scope": 6322, + "src": "15461:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6310, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15461:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6313, + "mutability": "mutable", + "name": "hash", + "nameLocation": "15493:4:12", + "nodeType": "VariableDeclaration", + "scope": 6322, + "src": "15485:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6312, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "15485:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6315, + "mutability": "mutable", + "name": "signature", + "nameLocation": "15520:9:12", + "nodeType": "VariableDeclaration", + "scope": 6322, + "src": "15507:22:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6314, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "15507:5:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "15451:84:12" + }, + "returnParameters": { + "id": 6319, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6318, + "mutability": "mutable", + "name": "isValid", + "nameLocation": "15559:7:12", + "nodeType": "VariableDeclaration", + "scope": 6322, + "src": "15554:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6317, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "15554:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "15553:14:12" + }, + "scope": 6365, + "src": "15400:3435:12", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6335, + "nodeType": "Block", + "src": "19555:3324:12", + "statements": [ + { + "AST": { + "nativeSrc": "19617:3256:12", + "nodeType": "YulBlock", + "src": "19617:3256:12", + "statements": [ + { + "body": { + "nativeSrc": "19701:673:12", + "nodeType": "YulBlock", + "src": "19701:673:12", + "statements": [ + { + "nativeSrc": "19719:21:12", + "nodeType": "YulVariableDeclaration", + "src": "19719:21:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "19735:4:12", + "nodeType": "YulLiteral", + "src": "19735:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "19729:5:12", + "nodeType": "YulIdentifier", + "src": "19729:5:12" + }, + "nativeSrc": "19729:11:12", + "nodeType": "YulFunctionCall", + "src": "19729:11:12" + }, + "variables": [ + { + "name": "m_", + "nativeSrc": "19723:2:12", + "nodeType": "YulTypedName", + "src": "19723:2:12", + "type": "" + } + ] + }, + { + "nativeSrc": "19757:30:12", + "nodeType": "YulVariableDeclaration", + "src": "19757:30:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "19771:3:12", + "nodeType": "YulLiteral", + "src": "19771:3:12", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "19776:10:12", + "nodeType": "YulLiteral", + "src": "19776:10:12", + "type": "", + "value": "0x1626ba7e" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "19767:3:12", + "nodeType": "YulIdentifier", + "src": "19767:3:12" + }, + "nativeSrc": "19767:20:12", + "nodeType": "YulFunctionCall", + "src": "19767:20:12" + }, + "variables": [ + { + "name": "f_", + "nativeSrc": "19761:2:12", + "nodeType": "YulTypedName", + "src": "19761:2:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "m_", + "nativeSrc": "19811:2:12", + "nodeType": "YulIdentifier", + "src": "19811:2:12" + }, + { + "name": "f_", + "nativeSrc": "19815:2:12", + "nodeType": "YulIdentifier", + "src": "19815:2:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "19804:6:12", + "nodeType": "YulIdentifier", + "src": "19804:6:12" + }, + "nativeSrc": "19804:14:12", + "nodeType": "YulFunctionCall", + "src": "19804:14:12" + }, + "nativeSrc": "19804:14:12", + "nodeType": "YulExpressionStatement", + "src": "19804:14:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m_", + "nativeSrc": "19905:2:12", + "nodeType": "YulIdentifier", + "src": "19905:2:12" + }, + { + "kind": "number", + "nativeSrc": "19909:4:12", + "nodeType": "YulLiteral", + "src": "19909:4:12", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19901:3:12", + "nodeType": "YulIdentifier", + "src": "19901:3:12" + }, + "nativeSrc": "19901:13:12", + "nodeType": "YulFunctionCall", + "src": "19901:13:12" + }, + { + "name": "hash_", + "nativeSrc": "19916:5:12", + "nodeType": "YulIdentifier", + "src": "19916:5:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "19894:6:12", + "nodeType": "YulIdentifier", + "src": "19894:6:12" + }, + "nativeSrc": "19894:28:12", + "nodeType": "YulFunctionCall", + "src": "19894:28:12" + }, + "nativeSrc": "19894:28:12", + "nodeType": "YulExpressionStatement", + "src": "19894:28:12" + }, + { + "nativeSrc": "19939:23:12", + "nodeType": "YulVariableDeclaration", + "src": "19939:23:12", + "value": { + "arguments": [ + { + "name": "m_", + "nativeSrc": "19953:2:12", + "nodeType": "YulIdentifier", + "src": "19953:2:12" + }, + { + "kind": "number", + "nativeSrc": "19957:4:12", + "nodeType": "YulLiteral", + "src": "19957:4:12", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19949:3:12", + "nodeType": "YulIdentifier", + "src": "19949:3:12" + }, + "nativeSrc": "19949:13:12", + "nodeType": "YulFunctionCall", + "src": "19949:13:12" + }, + "variables": [ + { + "name": "d_", + "nativeSrc": "19943:2:12", + "nodeType": "YulTypedName", + "src": "19943:2:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "d_", + "nativeSrc": "19986:2:12", + "nodeType": "YulIdentifier", + "src": "19986:2:12" + }, + { + "kind": "number", + "nativeSrc": "19990:4:12", + "nodeType": "YulLiteral", + "src": "19990:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "19979:6:12", + "nodeType": "YulIdentifier", + "src": "19979:6:12" + }, + "nativeSrc": "19979:16:12", + "nodeType": "YulFunctionCall", + "src": "19979:16:12" + }, + "nativeSrc": "19979:16:12", + "nodeType": "YulExpressionStatement", + "src": "19979:16:12" + }, + { + "nativeSrc": "20062:38:12", + "nodeType": "YulVariableDeclaration", + "src": "20062:38:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20076:4:12", + "nodeType": "YulLiteral", + "src": "20076:4:12", + "type": "", + "value": "0x20" + }, + { + "arguments": [ + { + "name": "signature_", + "nativeSrc": "20088:10:12", + "nodeType": "YulIdentifier", + "src": "20088:10:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "20082:5:12", + "nodeType": "YulIdentifier", + "src": "20082:5:12" + }, + "nativeSrc": "20082:17:12", + "nodeType": "YulFunctionCall", + "src": "20082:17:12" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20072:3:12", + "nodeType": "YulIdentifier", + "src": "20072:3:12" + }, + "nativeSrc": "20072:28:12", + "nodeType": "YulFunctionCall", + "src": "20072:28:12" + }, + "variables": [ + { + "name": "n_", + "nativeSrc": "20066:2:12", + "nodeType": "YulTypedName", + "src": "20066:2:12", + "type": "" + } + ] + }, + { + "nativeSrc": "20117:70:12", + "nodeType": "YulVariableDeclaration", + "src": "20117:70:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "20143:3:12", + "nodeType": "YulIdentifier", + "src": "20143:3:12" + }, + "nativeSrc": "20143:5:12", + "nodeType": "YulFunctionCall", + "src": "20143:5:12" + }, + { + "kind": "number", + "nativeSrc": "20150:1:12", + "nodeType": "YulLiteral", + "src": "20150:1:12", + "type": "", + "value": "4" + }, + { + "name": "signature_", + "nativeSrc": "20153:10:12", + "nodeType": "YulIdentifier", + "src": "20153:10:12" + }, + { + "name": "n_", + "nativeSrc": "20165:2:12", + "nodeType": "YulIdentifier", + "src": "20165:2:12" + }, + { + "arguments": [ + { + "name": "m_", + "nativeSrc": "20173:2:12", + "nodeType": "YulIdentifier", + "src": "20173:2:12" + }, + { + "kind": "number", + "nativeSrc": "20177:4:12", + "nodeType": "YulLiteral", + "src": "20177:4:12", + "type": "", + "value": "0x44" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20169:3:12", + "nodeType": "YulIdentifier", + "src": "20169:3:12" + }, + "nativeSrc": "20169:13:12", + "nodeType": "YulFunctionCall", + "src": "20169:13:12" + }, + { + "name": "n_", + "nativeSrc": "20184:2:12", + "nodeType": "YulIdentifier", + "src": "20184:2:12" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "20132:10:12", + "nodeType": "YulIdentifier", + "src": "20132:10:12" + }, + "nativeSrc": "20132:55:12", + "nodeType": "YulFunctionCall", + "src": "20132:55:12" + }, + "variables": [ + { + "name": "copied_", + "nativeSrc": "20121:7:12", + "nodeType": "YulTypedName", + "src": "20121:7:12", + "type": "" + } + ] + }, + { + "nativeSrc": "20204:81:12", + "nodeType": "YulAssignment", + "src": "20204:81:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "20227:3:12", + "nodeType": "YulIdentifier", + "src": "20227:3:12" + }, + "nativeSrc": "20227:5:12", + "nodeType": "YulFunctionCall", + "src": "20227:5:12" + }, + { + "name": "signer_", + "nativeSrc": "20234:7:12", + "nodeType": "YulIdentifier", + "src": "20234:7:12" + }, + { + "name": "m_", + "nativeSrc": "20243:2:12", + "nodeType": "YulIdentifier", + "src": "20243:2:12" + }, + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "20251:14:12", + "nodeType": "YulIdentifier", + "src": "20251:14:12" + }, + "nativeSrc": "20251:16:12", + "nodeType": "YulFunctionCall", + "src": "20251:16:12" + }, + { + "kind": "number", + "nativeSrc": "20269:4:12", + "nodeType": "YulLiteral", + "src": "20269:4:12", + "type": "", + "value": "0x44" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20247:3:12", + "nodeType": "YulIdentifier", + "src": "20247:3:12" + }, + "nativeSrc": "20247:27:12", + "nodeType": "YulFunctionCall", + "src": "20247:27:12" + }, + { + "name": "d_", + "nativeSrc": "20276:2:12", + "nodeType": "YulIdentifier", + "src": "20276:2:12" + }, + { + "kind": "number", + "nativeSrc": "20280:4:12", + "nodeType": "YulLiteral", + "src": "20280:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "20216:10:12", + "nodeType": "YulIdentifier", + "src": "20216:10:12" + }, + "nativeSrc": "20216:69:12", + "nodeType": "YulFunctionCall", + "src": "20216:69:12" + }, + "variableNames": [ + { + "name": "_isValid", + "nativeSrc": "20204:8:12", + "nodeType": "YulIdentifier", + "src": "20204:8:12" + } + ] + }, + { + "nativeSrc": "20302:58:12", + "nodeType": "YulAssignment", + "src": "20302:58:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "d_", + "nativeSrc": "20327:2:12", + "nodeType": "YulIdentifier", + "src": "20327:2:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "20321:5:12", + "nodeType": "YulIdentifier", + "src": "20321:5:12" + }, + "nativeSrc": "20321:9:12", + "nodeType": "YulFunctionCall", + "src": "20321:9:12" + }, + { + "name": "f_", + "nativeSrc": "20332:2:12", + "nodeType": "YulIdentifier", + "src": "20332:2:12" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "20318:2:12", + "nodeType": "YulIdentifier", + "src": "20318:2:12" + }, + "nativeSrc": "20318:17:12", + "nodeType": "YulFunctionCall", + "src": "20318:17:12" + }, + { + "arguments": [ + { + "name": "_isValid", + "nativeSrc": "20341:8:12", + "nodeType": "YulIdentifier", + "src": "20341:8:12" + }, + { + "name": "copied_", + "nativeSrc": "20351:7:12", + "nodeType": "YulIdentifier", + "src": "20351:7:12" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "20337:3:12", + "nodeType": "YulIdentifier", + "src": "20337:3:12" + }, + "nativeSrc": "20337:22:12", + "nodeType": "YulFunctionCall", + "src": "20337:22:12" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "20314:3:12", + "nodeType": "YulIdentifier", + "src": "20314:3:12" + }, + "nativeSrc": "20314:46:12", + "nodeType": "YulFunctionCall", + "src": "20314:46:12" + }, + "variableNames": [ + { + "name": "_isValid", + "nativeSrc": "20302:8:12", + "nodeType": "YulIdentifier", + "src": "20302:8:12" + } + ] + } + ] + }, + "name": "callIsValidSignature", + "nativeSrc": "19631:743:12", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "signer_", + "nativeSrc": "19661:7:12", + "nodeType": "YulTypedName", + "src": "19661:7:12", + "type": "" + }, + { + "name": "hash_", + "nativeSrc": "19670:5:12", + "nodeType": "YulTypedName", + "src": "19670:5:12", + "type": "" + }, + { + "name": "signature_", + "nativeSrc": "19677:10:12", + "nodeType": "YulTypedName", + "src": "19677:10:12", + "type": "" + } + ], + "returnVariables": [ + { + "name": "_isValid", + "nativeSrc": "19692:8:12", + "nodeType": "YulTypedName", + "src": "19692:8:12", + "type": "" + } + ], + "src": "19631:743:12" + }, + { + "nativeSrc": "20387:41:12", + "nodeType": "YulVariableDeclaration", + "src": "20387:41:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "signer", + "nativeSrc": "20420:6:12", + "nodeType": "YulIdentifier", + "src": "20420:6:12" + } + ], + "functionName": { + "name": "extcodesize", + "nativeSrc": "20408:11:12", + "nodeType": "YulIdentifier", + "src": "20408:11:12" + }, + "nativeSrc": "20408:19:12", + "nodeType": "YulFunctionCall", + "src": "20408:19:12" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "20401:6:12", + "nodeType": "YulIdentifier", + "src": "20401:6:12" + }, + "nativeSrc": "20401:27:12", + "nodeType": "YulFunctionCall", + "src": "20401:27:12" + }, + "variables": [ + { + "name": "noCode", + "nativeSrc": "20391:6:12", + "nodeType": "YulTypedName", + "src": "20391:6:12", + "type": "" + } + ] + }, + { + "nativeSrc": "20441:25:12", + "nodeType": "YulVariableDeclaration", + "src": "20441:25:12", + "value": { + "arguments": [ + { + "name": "signature", + "nativeSrc": "20456:9:12", + "nodeType": "YulIdentifier", + "src": "20456:9:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "20450:5:12", + "nodeType": "YulIdentifier", + "src": "20450:5:12" + }, + "nativeSrc": "20450:16:12", + "nodeType": "YulFunctionCall", + "src": "20450:16:12" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "20445:1:12", + "nodeType": "YulTypedName", + "src": "20445:1:12", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "20491:1319:12", + "nodeType": "YulBlock", + "src": "20491:1319:12", + "statements": [ + { + "body": { + "nativeSrc": "20589:144:12", + "nodeType": "YulBlock", + "src": "20589:144:12", + "statements": [ + { + "body": { + "nativeSrc": "20629:60:12", + "nodeType": "YulBlock", + "src": "20629:60:12", + "statements": [ + { + "nativeSrc": "20631:56:12", + "nodeType": "YulAssignment", + "src": "20631:56:12", + "value": { + "arguments": [ + { + "name": "signer", + "nativeSrc": "20663:6:12", + "nodeType": "YulIdentifier", + "src": "20663:6:12" + }, + { + "name": "hash", + "nativeSrc": "20671:4:12", + "nodeType": "YulIdentifier", + "src": "20671:4:12" + }, + { + "name": "signature", + "nativeSrc": "20677:9:12", + "nodeType": "YulIdentifier", + "src": "20677:9:12" + } + ], + "functionName": { + "name": "callIsValidSignature", + "nativeSrc": "20642:20:12", + "nodeType": "YulIdentifier", + "src": "20642:20:12" + }, + "nativeSrc": "20642:45:12", + "nodeType": "YulFunctionCall", + "src": "20642:45:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "20631:7:12", + "nodeType": "YulIdentifier", + "src": "20631:7:12" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "noCode", + "nativeSrc": "20621:6:12", + "nodeType": "YulIdentifier", + "src": "20621:6:12" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "20614:6:12", + "nodeType": "YulIdentifier", + "src": "20614:6:12" + }, + "nativeSrc": "20614:14:12", + "nodeType": "YulFunctionCall", + "src": "20614:14:12" + }, + "nativeSrc": "20611:78:12", + "nodeType": "YulIf", + "src": "20611:78:12" + }, + { + "nativeSrc": "20710:5:12", + "nodeType": "YulBreak", + "src": "20710:5:12" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "20532:9:12", + "nodeType": "YulIdentifier", + "src": "20532:9:12" + }, + { + "name": "n", + "nativeSrc": "20543:1:12", + "nodeType": "YulIdentifier", + "src": "20543:1:12" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20528:3:12", + "nodeType": "YulIdentifier", + "src": "20528:3:12" + }, + "nativeSrc": "20528:17:12", + "nodeType": "YulFunctionCall", + "src": "20528:17:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "20522:5:12", + "nodeType": "YulIdentifier", + "src": "20522:5:12" + }, + "nativeSrc": "20522:24:12", + "nodeType": "YulFunctionCall", + "src": "20522:24:12" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20552:6:12", + "nodeType": "YulLiteral", + "src": "20552:6:12", + "type": "", + "value": "0x6492" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "isValid", + "nativeSrc": "20568:7:12", + "nodeType": "YulIdentifier", + "src": "20568:7:12" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "20564:3:12", + "nodeType": "YulIdentifier", + "src": "20564:3:12" + }, + "nativeSrc": "20564:12:12", + "nodeType": "YulFunctionCall", + "src": "20564:12:12" + }, + { + "kind": "number", + "nativeSrc": "20578:6:12", + "nodeType": "YulLiteral", + "src": "20578:6:12", + "type": "", + "value": "0xffff" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "20560:3:12", + "nodeType": "YulIdentifier", + "src": "20560:3:12" + }, + "nativeSrc": "20560:25:12", + "nodeType": "YulFunctionCall", + "src": "20560:25:12" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "20548:3:12", + "nodeType": "YulIdentifier", + "src": "20548:3:12" + }, + "nativeSrc": "20548:38:12", + "nodeType": "YulFunctionCall", + "src": "20548:38:12" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "20519:2:12", + "nodeType": "YulIdentifier", + "src": "20519:2:12" + }, + "nativeSrc": "20519:68:12", + "nodeType": "YulFunctionCall", + "src": "20519:68:12" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "20512:6:12", + "nodeType": "YulIdentifier", + "src": "20512:6:12" + }, + "nativeSrc": "20512:76:12", + "nodeType": "YulFunctionCall", + "src": "20512:76:12" + }, + "nativeSrc": "20509:224:12", + "nodeType": "YulIf", + "src": "20509:224:12" + }, + { + "body": { + "nativeSrc": "20768:225:12", + "nodeType": "YulBlock", + "src": "20768:225:12", + "statements": [ + { + "nativeSrc": "20790:29:12", + "nodeType": "YulVariableDeclaration", + "src": "20790:29:12", + "value": { + "arguments": [ + { + "name": "signature", + "nativeSrc": "20803:9:12", + "nodeType": "YulIdentifier", + "src": "20803:9:12" + }, + { + "kind": "number", + "nativeSrc": "20814:4:12", + "nodeType": "YulLiteral", + "src": "20814:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20799:3:12", + "nodeType": "YulIdentifier", + "src": "20799:3:12" + }, + "nativeSrc": "20799:20:12", + "nodeType": "YulFunctionCall", + "src": "20799:20:12" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "20794:1:12", + "nodeType": "YulTypedName", + "src": "20794:1:12", + "type": "" + } + ] + }, + { + "nativeSrc": "20860:74:12", + "nodeType": "YulAssignment", + "src": "20860:74:12", + "value": { + "arguments": [ + { + "name": "signer", + "nativeSrc": "20892:6:12", + "nodeType": "YulIdentifier", + "src": "20892:6:12" + }, + { + "name": "hash", + "nativeSrc": "20900:4:12", + "nodeType": "YulIdentifier", + "src": "20900:4:12" + }, + { + "arguments": [ + { + "name": "o", + "nativeSrc": "20910:1:12", + "nodeType": "YulIdentifier", + "src": "20910:1:12" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "o", + "nativeSrc": "20923:1:12", + "nodeType": "YulIdentifier", + "src": "20923:1:12" + }, + { + "kind": "number", + "nativeSrc": "20926:4:12", + "nodeType": "YulLiteral", + "src": "20926:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20919:3:12", + "nodeType": "YulIdentifier", + "src": "20919:3:12" + }, + "nativeSrc": "20919:12:12", + "nodeType": "YulFunctionCall", + "src": "20919:12:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "20913:5:12", + "nodeType": "YulIdentifier", + "src": "20913:5:12" + }, + "nativeSrc": "20913:19:12", + "nodeType": "YulFunctionCall", + "src": "20913:19:12" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20906:3:12", + "nodeType": "YulIdentifier", + "src": "20906:3:12" + }, + "nativeSrc": "20906:27:12", + "nodeType": "YulFunctionCall", + "src": "20906:27:12" + } + ], + "functionName": { + "name": "callIsValidSignature", + "nativeSrc": "20871:20:12", + "nodeType": "YulIdentifier", + "src": "20871:20:12" + }, + "nativeSrc": "20871:63:12", + "nodeType": "YulFunctionCall", + "src": "20871:63:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "20860:7:12", + "nodeType": "YulIdentifier", + "src": "20860:7:12" + } + ] + }, + { + "body": { + "nativeSrc": "20966:9:12", + "nodeType": "YulBlock", + "src": "20966:9:12", + "statements": [ + { + "nativeSrc": "20968:5:12", + "nodeType": "YulBreak", + "src": "20968:5:12" + } + ] + }, + "condition": { + "name": "isValid", + "nativeSrc": "20958:7:12", + "nodeType": "YulIdentifier", + "src": "20958:7:12" + }, + "nativeSrc": "20955:20:12", + "nodeType": "YulIf", + "src": "20955:20:12" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "noCode", + "nativeSrc": "20760:6:12", + "nodeType": "YulIdentifier", + "src": "20760:6:12" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "20753:6:12", + "nodeType": "YulIdentifier", + "src": "20753:6:12" + }, + "nativeSrc": "20753:14:12", + "nodeType": "YulFunctionCall", + "src": "20753:14:12" + }, + "nativeSrc": "20750:243:12", + "nodeType": "YulIf", + "src": "20750:243:12" + }, + { + "nativeSrc": "21010:20:12", + "nodeType": "YulVariableDeclaration", + "src": "21010:20:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21025:4:12", + "nodeType": "YulLiteral", + "src": "21025:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "21019:5:12", + "nodeType": "YulIdentifier", + "src": "21019:5:12" + }, + "nativeSrc": "21019:11:12", + "nodeType": "YulFunctionCall", + "src": "21019:11:12" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "21014:1:12", + "nodeType": "YulTypedName", + "src": "21014:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "21054:1:12", + "nodeType": "YulIdentifier", + "src": "21054:1:12" + }, + { + "name": "signer", + "nativeSrc": "21057:6:12", + "nodeType": "YulIdentifier", + "src": "21057:6:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "21047:6:12", + "nodeType": "YulIdentifier", + "src": "21047:6:12" + }, + "nativeSrc": "21047:17:12", + "nodeType": "YulFunctionCall", + "src": "21047:17:12" + }, + "nativeSrc": "21047:17:12", + "nodeType": "YulExpressionStatement", + "src": "21047:17:12" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "m", + "nativeSrc": "21092:1:12", + "nodeType": "YulIdentifier", + "src": "21092:1:12" + }, + { + "kind": "number", + "nativeSrc": "21095:4:12", + "nodeType": "YulLiteral", + "src": "21095:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21088:3:12", + "nodeType": "YulIdentifier", + "src": "21088:3:12" + }, + "nativeSrc": "21088:12:12", + "nodeType": "YulFunctionCall", + "src": "21088:12:12" + }, + { + "name": "hash", + "nativeSrc": "21102:4:12", + "nodeType": "YulIdentifier", + "src": "21102:4:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "21081:6:12", + "nodeType": "YulIdentifier", + "src": "21081:6:12" + }, + "nativeSrc": "21081:26:12", + "nodeType": "YulFunctionCall", + "src": "21081:26:12" + }, + "nativeSrc": "21081:26:12", + "nodeType": "YulExpressionStatement", + "src": "21081:26:12" + }, + { + "nativeSrc": "21124:565:12", + "nodeType": "YulVariableDeclaration", + "src": "21124:565:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "21217:3:12", + "nodeType": "YulIdentifier", + "src": "21217:3:12" + }, + "nativeSrc": "21217:5:12", + "nodeType": "YulFunctionCall", + "src": "21217:5:12" + }, + { + "kind": "number", + "nativeSrc": "21266:42:12", + "nodeType": "YulLiteral", + "src": "21266:42:12", + "type": "", + "value": "0x00007bd799e4A591FeA53f8A8a3E9f931626Ba7e" + }, + { + "kind": "number", + "nativeSrc": "21357:1:12", + "nodeType": "YulLiteral", + "src": "21357:1:12", + "type": "", + "value": "0" + }, + { + "name": "m", + "nativeSrc": "21402:1:12", + "nodeType": "YulIdentifier", + "src": "21402:1:12" + }, + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "21453:14:12", + "nodeType": "YulIdentifier", + "src": "21453:14:12" + }, + "nativeSrc": "21453:16:12", + "nodeType": "YulFunctionCall", + "src": "21453:16:12" + }, + { + "kind": "number", + "nativeSrc": "21471:4:12", + "nodeType": "YulLiteral", + "src": "21471:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21449:3:12", + "nodeType": "YulIdentifier", + "src": "21449:3:12" + }, + "nativeSrc": "21449:27:12", + "nodeType": "YulFunctionCall", + "src": "21449:27:12" + }, + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "21546:3:12", + "nodeType": "YulIdentifier", + "src": "21546:3:12" + }, + "nativeSrc": "21546:5:12", + "nodeType": "YulFunctionCall", + "src": "21546:5:12" + }, + { + "kind": "number", + "nativeSrc": "21553:1:12", + "nodeType": "YulLiteral", + "src": "21553:1:12", + "type": "", + "value": "4" + }, + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "21560:9:12", + "nodeType": "YulIdentifier", + "src": "21560:9:12" + }, + { + "kind": "number", + "nativeSrc": "21571:4:12", + "nodeType": "YulLiteral", + "src": "21571:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21556:3:12", + "nodeType": "YulIdentifier", + "src": "21556:3:12" + }, + "nativeSrc": "21556:20:12", + "nodeType": "YulFunctionCall", + "src": "21556:20:12" + }, + { + "name": "n", + "nativeSrc": "21578:1:12", + "nodeType": "YulIdentifier", + "src": "21578:1:12" + }, + { + "arguments": [ + { + "name": "m", + "nativeSrc": "21585:1:12", + "nodeType": "YulIdentifier", + "src": "21585:1:12" + }, + { + "kind": "number", + "nativeSrc": "21588:4:12", + "nodeType": "YulLiteral", + "src": "21588:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21581:3:12", + "nodeType": "YulIdentifier", + "src": "21581:3:12" + }, + "nativeSrc": "21581:12:12", + "nodeType": "YulFunctionCall", + "src": "21581:12:12" + }, + { + "name": "n", + "nativeSrc": "21595:1:12", + "nodeType": "YulIdentifier", + "src": "21595:1:12" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "21535:10:12", + "nodeType": "YulIdentifier", + "src": "21535:10:12" + }, + "nativeSrc": "21535:62:12", + "nodeType": "YulFunctionCall", + "src": "21535:62:12" + }, + { + "kind": "number", + "nativeSrc": "21629:4:12", + "nodeType": "YulLiteral", + "src": "21629:4:12", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "call", + "nativeSrc": "21187:4:12", + "nodeType": "YulIdentifier", + "src": "21187:4:12" + }, + "nativeSrc": "21187:502:12", + "nodeType": "YulFunctionCall", + "src": "21187:502:12" + }, + "variables": [ + { + "name": "willBeZeroIfRevertingVerifierExists", + "nativeSrc": "21128:35:12", + "nodeType": "YulTypedName", + "src": "21128:35:12", + "type": "" + } + ] + }, + { + "nativeSrc": "21706:68:12", + "nodeType": "YulAssignment", + "src": "21706:68:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "21720:14:12", + "nodeType": "YulIdentifier", + "src": "21720:14:12" + }, + "nativeSrc": "21720:16:12", + "nodeType": "YulFunctionCall", + "src": "21720:16:12" + }, + { + "name": "willBeZeroIfRevertingVerifierExists", + "nativeSrc": "21738:35:12", + "nodeType": "YulIdentifier", + "src": "21738:35:12" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "21717:2:12", + "nodeType": "YulIdentifier", + "src": "21717:2:12" + }, + "nativeSrc": "21717:57:12", + "nodeType": "YulFunctionCall", + "src": "21717:57:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "21706:7:12", + "nodeType": "YulIdentifier", + "src": "21706:7:12" + } + ] + }, + { + "nativeSrc": "21791:5:12", + "nodeType": "YulBreak", + "src": "21791:5:12" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "20486:1:12", + "nodeType": "YulLiteral", + "src": "20486:1:12", + "type": "", + "value": "1" + }, + "nativeSrc": "20479:1331:12", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "20488:2:12", + "nodeType": "YulBlock", + "src": "20488:2:12", + "statements": [] + }, + "pre": { + "nativeSrc": "20483:2:12", + "nodeType": "YulBlock", + "src": "20483:2:12", + "statements": [] + }, + "src": "20479:1331:12" + }, + { + "body": { + "nativeSrc": "21917:946:12", + "nodeType": "YulBlock", + "src": "21917:946:12", + "statements": [ + { + "cases": [ + { + "body": { + "nativeSrc": "21968:202:12", + "nodeType": "YulBlock", + "src": "21968:202:12", + "statements": [ + { + "nativeSrc": "21990:37:12", + "nodeType": "YulVariableDeclaration", + "src": "21990:37:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "22010:9:12", + "nodeType": "YulIdentifier", + "src": "22010:9:12" + }, + { + "kind": "number", + "nativeSrc": "22021:4:12", + "nodeType": "YulLiteral", + "src": "22021:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22006:3:12", + "nodeType": "YulIdentifier", + "src": "22006:3:12" + }, + "nativeSrc": "22006:20:12", + "nodeType": "YulFunctionCall", + "src": "22006:20:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "22000:5:12", + "nodeType": "YulIdentifier", + "src": "22000:5:12" + }, + "nativeSrc": "22000:27:12", + "nodeType": "YulFunctionCall", + "src": "22000:27:12" + }, + "variables": [ + { + "name": "vs", + "nativeSrc": "21994:2:12", + "nodeType": "YulTypedName", + "src": "21994:2:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22055:4:12", + "nodeType": "YulLiteral", + "src": "22055:4:12", + "type": "", + "value": "0x20" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22069:3:12", + "nodeType": "YulLiteral", + "src": "22069:3:12", + "type": "", + "value": "255" + }, + { + "name": "vs", + "nativeSrc": "22074:2:12", + "nodeType": "YulIdentifier", + "src": "22074:2:12" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "22065:3:12", + "nodeType": "YulIdentifier", + "src": "22065:3:12" + }, + "nativeSrc": "22065:12:12", + "nodeType": "YulFunctionCall", + "src": "22065:12:12" + }, + { + "kind": "number", + "nativeSrc": "22079:2:12", + "nodeType": "YulLiteral", + "src": "22079:2:12", + "type": "", + "value": "27" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22061:3:12", + "nodeType": "YulIdentifier", + "src": "22061:3:12" + }, + "nativeSrc": "22061:21:12", + "nodeType": "YulFunctionCall", + "src": "22061:21:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22048:6:12", + "nodeType": "YulIdentifier", + "src": "22048:6:12" + }, + "nativeSrc": "22048:35:12", + "nodeType": "YulFunctionCall", + "src": "22048:35:12" + }, + "nativeSrc": "22048:35:12", + "nodeType": "YulExpressionStatement", + "src": "22048:35:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22119:4:12", + "nodeType": "YulLiteral", + "src": "22119:4:12", + "type": "", + "value": "0x60" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22129:1:12", + "nodeType": "YulLiteral", + "src": "22129:1:12", + "type": "", + "value": "1" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22136:1:12", + "nodeType": "YulLiteral", + "src": "22136:1:12", + "type": "", + "value": "1" + }, + { + "name": "vs", + "nativeSrc": "22139:2:12", + "nodeType": "YulIdentifier", + "src": "22139:2:12" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "22132:3:12", + "nodeType": "YulIdentifier", + "src": "22132:3:12" + }, + "nativeSrc": "22132:10:12", + "nodeType": "YulFunctionCall", + "src": "22132:10:12" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "22125:3:12", + "nodeType": "YulIdentifier", + "src": "22125:3:12" + }, + "nativeSrc": "22125:18:12", + "nodeType": "YulFunctionCall", + "src": "22125:18:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22112:6:12", + "nodeType": "YulIdentifier", + "src": "22112:6:12" + }, + "nativeSrc": "22112:32:12", + "nodeType": "YulFunctionCall", + "src": "22112:32:12" + }, + "nativeSrc": "22112:32:12", + "nodeType": "YulExpressionStatement", + "src": "22112:32:12" + } + ] + }, + "nativeSrc": "21960:210:12", + "nodeType": "YulCase", + "src": "21960:210:12", + "value": { + "kind": "number", + "nativeSrc": "21965:2:12", + "nodeType": "YulLiteral", + "src": "21965:2:12", + "type": "", + "value": "64" + } + }, + { + "body": { + "nativeSrc": "22195:168:12", + "nodeType": "YulBlock", + "src": "22195:168:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22224:4:12", + "nodeType": "YulLiteral", + "src": "22224:4:12", + "type": "", + "value": "0x20" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22235:1:12", + "nodeType": "YulLiteral", + "src": "22235:1:12", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "22248:9:12", + "nodeType": "YulIdentifier", + "src": "22248:9:12" + }, + { + "kind": "number", + "nativeSrc": "22259:4:12", + "nodeType": "YulLiteral", + "src": "22259:4:12", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22244:3:12", + "nodeType": "YulIdentifier", + "src": "22244:3:12" + }, + "nativeSrc": "22244:20:12", + "nodeType": "YulFunctionCall", + "src": "22244:20:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "22238:5:12", + "nodeType": "YulIdentifier", + "src": "22238:5:12" + }, + "nativeSrc": "22238:27:12", + "nodeType": "YulFunctionCall", + "src": "22238:27:12" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "22230:4:12", + "nodeType": "YulIdentifier", + "src": "22230:4:12" + }, + "nativeSrc": "22230:36:12", + "nodeType": "YulFunctionCall", + "src": "22230:36:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22217:6:12", + "nodeType": "YulIdentifier", + "src": "22217:6:12" + }, + "nativeSrc": "22217:50:12", + "nodeType": "YulFunctionCall", + "src": "22217:50:12" + }, + "nativeSrc": "22217:50:12", + "nodeType": "YulExpressionStatement", + "src": "22217:50:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22303:4:12", + "nodeType": "YulLiteral", + "src": "22303:4:12", + "type": "", + "value": "0x60" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "22319:9:12", + "nodeType": "YulIdentifier", + "src": "22319:9:12" + }, + { + "kind": "number", + "nativeSrc": "22330:4:12", + "nodeType": "YulLiteral", + "src": "22330:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22315:3:12", + "nodeType": "YulIdentifier", + "src": "22315:3:12" + }, + "nativeSrc": "22315:20:12", + "nodeType": "YulFunctionCall", + "src": "22315:20:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "22309:5:12", + "nodeType": "YulIdentifier", + "src": "22309:5:12" + }, + "nativeSrc": "22309:27:12", + "nodeType": "YulFunctionCall", + "src": "22309:27:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22296:6:12", + "nodeType": "YulIdentifier", + "src": "22296:6:12" + }, + "nativeSrc": "22296:41:12", + "nodeType": "YulFunctionCall", + "src": "22296:41:12" + }, + "nativeSrc": "22296:41:12", + "nodeType": "YulExpressionStatement", + "src": "22296:41:12" + } + ] + }, + "nativeSrc": "22187:176:12", + "nodeType": "YulCase", + "src": "22187:176:12", + "value": { + "kind": "number", + "nativeSrc": "22192:2:12", + "nodeType": "YulLiteral", + "src": "22192:2:12", + "type": "", + "value": "65" + } + }, + { + "body": { + "nativeSrc": "22388:9:12", + "nodeType": "YulBlock", + "src": "22388:9:12", + "statements": [ + { + "nativeSrc": "22390:5:12", + "nodeType": "YulBreak", + "src": "22390:5:12" + } + ] + }, + "nativeSrc": "22380:17:12", + "nodeType": "YulCase", + "src": "22380:17:12", + "value": "default" + } + ], + "expression": { + "name": "n", + "nativeSrc": "21942:1:12", + "nodeType": "YulIdentifier", + "src": "21942:1:12" + }, + "nativeSrc": "21935:462:12", + "nodeType": "YulSwitch", + "src": "21935:462:12" + }, + { + "nativeSrc": "22414:20:12", + "nodeType": "YulVariableDeclaration", + "src": "22414:20:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22429:4:12", + "nodeType": "YulLiteral", + "src": "22429:4:12", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "22423:5:12", + "nodeType": "YulIdentifier", + "src": "22423:5:12" + }, + "nativeSrc": "22423:11:12", + "nodeType": "YulFunctionCall", + "src": "22423:11:12" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "22418:1:12", + "nodeType": "YulTypedName", + "src": "22418:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22458:4:12", + "nodeType": "YulLiteral", + "src": "22458:4:12", + "type": "", + "value": "0x00" + }, + { + "name": "hash", + "nativeSrc": "22464:4:12", + "nodeType": "YulIdentifier", + "src": "22464:4:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22451:6:12", + "nodeType": "YulIdentifier", + "src": "22451:6:12" + }, + "nativeSrc": "22451:18:12", + "nodeType": "YulFunctionCall", + "src": "22451:18:12" + }, + "nativeSrc": "22451:18:12", + "nodeType": "YulExpressionStatement", + "src": "22451:18:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22493:4:12", + "nodeType": "YulLiteral", + "src": "22493:4:12", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "22509:9:12", + "nodeType": "YulIdentifier", + "src": "22509:9:12" + }, + { + "kind": "number", + "nativeSrc": "22520:4:12", + "nodeType": "YulLiteral", + "src": "22520:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22505:3:12", + "nodeType": "YulIdentifier", + "src": "22505:3:12" + }, + "nativeSrc": "22505:20:12", + "nodeType": "YulFunctionCall", + "src": "22505:20:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "22499:5:12", + "nodeType": "YulIdentifier", + "src": "22499:5:12" + }, + "nativeSrc": "22499:27:12", + "nodeType": "YulFunctionCall", + "src": "22499:27:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22486:6:12", + "nodeType": "YulIdentifier", + "src": "22486:6:12" + }, + "nativeSrc": "22486:41:12", + "nodeType": "YulFunctionCall", + "src": "22486:41:12" + }, + "nativeSrc": "22486:41:12", + "nodeType": "YulExpressionStatement", + "src": "22486:41:12" + }, + { + "nativeSrc": "22552:68:12", + "nodeType": "YulVariableDeclaration", + "src": "22552:68:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "22586:3:12", + "nodeType": "YulIdentifier", + "src": "22586:3:12" + }, + "nativeSrc": "22586:5:12", + "nodeType": "YulFunctionCall", + "src": "22586:5:12" + }, + { + "kind": "number", + "nativeSrc": "22593:1:12", + "nodeType": "YulLiteral", + "src": "22593:1:12", + "type": "", + "value": "1" + }, + { + "kind": "number", + "nativeSrc": "22596:4:12", + "nodeType": "YulLiteral", + "src": "22596:4:12", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "22602:4:12", + "nodeType": "YulLiteral", + "src": "22602:4:12", + "type": "", + "value": "0x80" + }, + { + "kind": "number", + "nativeSrc": "22608:4:12", + "nodeType": "YulLiteral", + "src": "22608:4:12", + "type": "", + "value": "0x01" + }, + { + "kind": "number", + "nativeSrc": "22614:4:12", + "nodeType": "YulLiteral", + "src": "22614:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "22575:10:12", + "nodeType": "YulIdentifier", + "src": "22575:10:12" + }, + "nativeSrc": "22575:44:12", + "nodeType": "YulFunctionCall", + "src": "22575:44:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "22569:5:12", + "nodeType": "YulIdentifier", + "src": "22569:5:12" + }, + "nativeSrc": "22569:51:12", + "nodeType": "YulFunctionCall", + "src": "22569:51:12" + }, + "variables": [ + { + "name": "recovered", + "nativeSrc": "22556:9:12", + "nodeType": "YulTypedName", + "src": "22556:9:12", + "type": "" + } + ] + }, + { + "nativeSrc": "22637:64:12", + "nodeType": "YulAssignment", + "src": "22637:64:12", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "22651:14:12", + "nodeType": "YulIdentifier", + "src": "22651:14:12" + }, + "nativeSrc": "22651:16:12", + "nodeType": "YulFunctionCall", + "src": "22651:16:12" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22673:2:12", + "nodeType": "YulLiteral", + "src": "22673:2:12", + "type": "", + "value": "96" + }, + { + "arguments": [ + { + "name": "signer", + "nativeSrc": "22681:6:12", + "nodeType": "YulIdentifier", + "src": "22681:6:12" + }, + { + "name": "recovered", + "nativeSrc": "22689:9:12", + "nodeType": "YulIdentifier", + "src": "22689:9:12" + } + ], + "functionName": { + "name": "xor", + "nativeSrc": "22677:3:12", + "nodeType": "YulIdentifier", + "src": "22677:3:12" + }, + "nativeSrc": "22677:22:12", + "nodeType": "YulFunctionCall", + "src": "22677:22:12" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "22669:3:12", + "nodeType": "YulIdentifier", + "src": "22669:3:12" + }, + "nativeSrc": "22669:31:12", + "nodeType": "YulFunctionCall", + "src": "22669:31:12" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "22648:2:12", + "nodeType": "YulIdentifier", + "src": "22648:2:12" + }, + "nativeSrc": "22648:53:12", + "nodeType": "YulFunctionCall", + "src": "22648:53:12" + }, + "variableNames": [ + { + "name": "isValid", + "nativeSrc": "22637:7:12", + "nodeType": "YulIdentifier", + "src": "22637:7:12" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22725:4:12", + "nodeType": "YulLiteral", + "src": "22725:4:12", + "type": "", + "value": "0x60" + }, + { + "kind": "number", + "nativeSrc": "22731:1:12", + "nodeType": "YulLiteral", + "src": "22731:1:12", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22718:6:12", + "nodeType": "YulIdentifier", + "src": "22718:6:12" + }, + "nativeSrc": "22718:15:12", + "nodeType": "YulFunctionCall", + "src": "22718:15:12" + }, + "nativeSrc": "22718:15:12", + "nodeType": "YulExpressionStatement", + "src": "22718:15:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22783:4:12", + "nodeType": "YulLiteral", + "src": "22783:4:12", + "type": "", + "value": "0x40" + }, + { + "name": "m", + "nativeSrc": "22789:1:12", + "nodeType": "YulIdentifier", + "src": "22789:1:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22776:6:12", + "nodeType": "YulIdentifier", + "src": "22776:6:12" + }, + "nativeSrc": "22776:15:12", + "nodeType": "YulFunctionCall", + "src": "22776:15:12" + }, + "nativeSrc": "22776:15:12", + "nodeType": "YulExpressionStatement", + "src": "22776:15:12" + }, + { + "nativeSrc": "22844:5:12", + "nodeType": "YulBreak", + "src": "22844:5:12" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "noCode", + "nativeSrc": "21897:6:12", + "nodeType": "YulIdentifier", + "src": "21897:6:12" + }, + { + "name": "isValid", + "nativeSrc": "21905:7:12", + "nodeType": "YulIdentifier", + "src": "21905:7:12" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "21894:2:12", + "nodeType": "YulIdentifier", + "src": "21894:2:12" + }, + "nativeSrc": "21894:19:12", + "nodeType": "YulFunctionCall", + "src": "21894:19:12" + }, + "nativeSrc": "21887:976:12", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "21914:2:12", + "nodeType": "YulBlock", + "src": "21914:2:12", + "statements": [] + }, + "pre": { + "nativeSrc": "21891:2:12", + "nodeType": "YulBlock", + "src": "21891:2:12", + "statements": [] + }, + "src": "21887:976:12" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6327, + "isOffset": false, + "isSlot": false, + "src": "20671:4:12", + "valueSize": 1 + }, + { + "declaration": 6327, + "isOffset": false, + "isSlot": false, + "src": "20900:4:12", + "valueSize": 1 + }, + { + "declaration": 6327, + "isOffset": false, + "isSlot": false, + "src": "21102:4:12", + "valueSize": 1 + }, + { + "declaration": 6327, + "isOffset": false, + "isSlot": false, + "src": "22464:4:12", + "valueSize": 1 + }, + { + "declaration": 6332, + "isOffset": false, + "isSlot": false, + "src": "20568:7:12", + "valueSize": 1 + }, + { + "declaration": 6332, + "isOffset": false, + "isSlot": false, + "src": "20631:7:12", + "valueSize": 1 + }, + { + "declaration": 6332, + "isOffset": false, + "isSlot": false, + "src": "20860:7:12", + "valueSize": 1 + }, + { + "declaration": 6332, + "isOffset": false, + "isSlot": false, + "src": "20958:7:12", + "valueSize": 1 + }, + { + "declaration": 6332, + "isOffset": false, + "isSlot": false, + "src": "21706:7:12", + "valueSize": 1 + }, + { + "declaration": 6332, + "isOffset": false, + "isSlot": false, + "src": "21905:7:12", + "valueSize": 1 + }, + { + "declaration": 6332, + "isOffset": false, + "isSlot": false, + "src": "22637:7:12", + "valueSize": 1 + }, + { + "declaration": 6329, + "isOffset": false, + "isSlot": false, + "src": "20456:9:12", + "valueSize": 1 + }, + { + "declaration": 6329, + "isOffset": false, + "isSlot": false, + "src": "20532:9:12", + "valueSize": 1 + }, + { + "declaration": 6329, + "isOffset": false, + "isSlot": false, + "src": "20677:9:12", + "valueSize": 1 + }, + { + "declaration": 6329, + "isOffset": false, + "isSlot": false, + "src": "20803:9:12", + "valueSize": 1 + }, + { + "declaration": 6329, + "isOffset": false, + "isSlot": false, + "src": "21560:9:12", + "valueSize": 1 + }, + { + "declaration": 6329, + "isOffset": false, + "isSlot": false, + "src": "22010:9:12", + "valueSize": 1 + }, + { + "declaration": 6329, + "isOffset": false, + "isSlot": false, + "src": "22248:9:12", + "valueSize": 1 + }, + { + "declaration": 6329, + "isOffset": false, + "isSlot": false, + "src": "22319:9:12", + "valueSize": 1 + }, + { + "declaration": 6329, + "isOffset": false, + "isSlot": false, + "src": "22509:9:12", + "valueSize": 1 + }, + { + "declaration": 6325, + "isOffset": false, + "isSlot": false, + "src": "20420:6:12", + "valueSize": 1 + }, + { + "declaration": 6325, + "isOffset": false, + "isSlot": false, + "src": "20663:6:12", + "valueSize": 1 + }, + { + "declaration": 6325, + "isOffset": false, + "isSlot": false, + "src": "20892:6:12", + "valueSize": 1 + }, + { + "declaration": 6325, + "isOffset": false, + "isSlot": false, + "src": "21057:6:12", + "valueSize": 1 + }, + { + "declaration": 6325, + "isOffset": false, + "isSlot": false, + "src": "22681:6:12", + "valueSize": 1 + } + ], + "id": 6334, + "nodeType": "InlineAssembly", + "src": "19608:3265:12" + } + ] + }, + "documentation": { + "id": 6323, + "nodeType": "StructuredDocumentation", + "src": "18841:567:12", + "text": "@dev Returns whether `signature` is valid for `hash`.\n If the signature is postfixed with the ERC6492 magic number, it will attempt\n to use a reverting verifier to deploy / prepare the `signer` smart account\n and do a `isValidSignature` check via the reverting verifier.\n Note: This function is reentrancy safe.\n The reverting verifier must be deployed.\n Otherwise, the function will return false if `signer` is not yet deployed / prepared.\n See: https://gist.github.com/Vectorized/846a474c855eee9e441506676800a9ad" + }, + "id": 6336, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isValidERC6492SignatureNow", + "nameLocation": "19422:26:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6330, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6325, + "mutability": "mutable", + "name": "signer", + "nameLocation": "19457:6:12", + "nodeType": "VariableDeclaration", + "scope": 6336, + "src": "19449:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6324, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "19449:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6327, + "mutability": "mutable", + "name": "hash", + "nameLocation": "19473:4:12", + "nodeType": "VariableDeclaration", + "scope": 6336, + "src": "19465:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6326, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "19465:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6329, + "mutability": "mutable", + "name": "signature", + "nameLocation": "19492:9:12", + "nodeType": "VariableDeclaration", + "scope": 6336, + "src": "19479:22:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6328, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "19479:5:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "19448:54:12" + }, + "returnParameters": { + "id": 6333, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6332, + "mutability": "mutable", + "name": "isValid", + "nameLocation": "19542:7:12", + "nodeType": "VariableDeclaration", + "scope": 6336, + "src": "19537:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6331, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "19537:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "19536:14:12" + }, + "scope": 6365, + "src": "19413:3466:12", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6345, + "nodeType": "Block", + "src": "23500:324:12", + "statements": [ + { + "AST": { + "nativeSrc": "23562:256:12", + "nodeType": "YulBlock", + "src": "23562:256:12", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23583:4:12", + "nodeType": "YulLiteral", + "src": "23583:4:12", + "type": "", + "value": "0x20" + }, + { + "name": "hash", + "nativeSrc": "23589:4:12", + "nodeType": "YulIdentifier", + "src": "23589:4:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "23576:6:12", + "nodeType": "YulIdentifier", + "src": "23576:6:12" + }, + "nativeSrc": "23576:18:12", + "nodeType": "YulFunctionCall", + "src": "23576:18:12" + }, + "nativeSrc": "23576:18:12", + "nodeType": "YulExpressionStatement", + "src": "23576:18:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23657:4:12", + "nodeType": "YulLiteral", + "src": "23657:4:12", + "type": "", + "value": "0x00" + }, + { + "hexValue": "0000000019457468657265756d205369676e6564204d6573736167653a0a3332", + "kind": "string", + "nativeSrc": "23663:50:12", + "nodeType": "YulLiteral", + "src": "23663:50:12", + "type": "", + "value": "\u0000\u0000\u0000\u0000\u0019Ethereum Signed Message:\n32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "23650:6:12", + "nodeType": "YulIdentifier", + "src": "23650:6:12" + }, + "nativeSrc": "23650:64:12", + "nodeType": "YulFunctionCall", + "src": "23650:64:12" + }, + "nativeSrc": "23650:64:12", + "nodeType": "YulExpressionStatement", + "src": "23650:64:12" + }, + { + "nativeSrc": "23740:31:12", + "nodeType": "YulAssignment", + "src": "23740:31:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23760:4:12", + "nodeType": "YulLiteral", + "src": "23760:4:12", + "type": "", + "value": "0x04" + }, + { + "kind": "number", + "nativeSrc": "23766:4:12", + "nodeType": "YulLiteral", + "src": "23766:4:12", + "type": "", + "value": "0x3c" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "23750:9:12", + "nodeType": "YulIdentifier", + "src": "23750:9:12" + }, + "nativeSrc": "23750:21:12", + "nodeType": "YulFunctionCall", + "src": "23750:21:12" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "23740:6:12", + "nodeType": "YulIdentifier", + "src": "23740:6:12" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6339, + "isOffset": false, + "isSlot": false, + "src": "23589:4:12", + "valueSize": 1 + }, + { + "declaration": 6342, + "isOffset": false, + "isSlot": false, + "src": "23740:6:12", + "valueSize": 1 + } + ], + "id": 6344, + "nodeType": "InlineAssembly", + "src": "23553:265:12" + } + ] + }, + "documentation": { + "id": 6337, + "nodeType": "StructuredDocumentation", + "src": "23168:242:12", + "text": "@dev Returns an Ethereum Signed Message, created from a `hash`.\n This produces a hash corresponding to the one signed with the\n [`eth_sign`](https://eth.wiki/json-rpc/API#eth_sign)\n JSON-RPC method as part of EIP-191." + }, + "id": 6346, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toEthSignedMessageHash", + "nameLocation": "23424:22:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6340, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6339, + "mutability": "mutable", + "name": "hash", + "nameLocation": "23455:4:12", + "nodeType": "VariableDeclaration", + "scope": 6346, + "src": "23447:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6338, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "23447:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "23446:14:12" + }, + "returnParameters": { + "id": 6343, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6342, + "mutability": "mutable", + "name": "result", + "nameLocation": "23492:6:12", + "nodeType": "VariableDeclaration", + "scope": 6346, + "src": "23484:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6341, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "23484:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "23483:16:12" + }, + "scope": 6365, + "src": "23415:409:12", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6355, + "nodeType": "Block", + "src": "24217:1019:12", + "statements": [ + { + "AST": { + "nativeSrc": "24279:951:12", + "nodeType": "YulBlock", + "src": "24279:951:12", + "statements": [ + { + "nativeSrc": "24293:23:12", + "nodeType": "YulVariableDeclaration", + "src": "24293:23:12", + "value": { + "arguments": [ + { + "name": "s", + "nativeSrc": "24314:1:12", + "nodeType": "YulIdentifier", + "src": "24314:1:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "24308:5:12", + "nodeType": "YulIdentifier", + "src": "24308:5:12" + }, + "nativeSrc": "24308:8:12", + "nodeType": "YulFunctionCall", + "src": "24308:8:12" + }, + "variables": [ + { + "name": "sLength", + "nativeSrc": "24297:7:12", + "nodeType": "YulTypedName", + "src": "24297:7:12", + "type": "" + } + ] + }, + { + "nativeSrc": "24329:13:12", + "nodeType": "YulVariableDeclaration", + "src": "24329:13:12", + "value": { + "kind": "number", + "nativeSrc": "24338:4:12", + "nodeType": "YulLiteral", + "src": "24338:4:12", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "o", + "nativeSrc": "24333:1:12", + "nodeType": "YulTypedName", + "src": "24333:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "24362:1:12", + "nodeType": "YulIdentifier", + "src": "24362:1:12" + }, + { + "hexValue": "19457468657265756d205369676e6564204d6573736167653a0a", + "kind": "string", + "nativeSrc": "24365:32:12", + "nodeType": "YulLiteral", + "src": "24365:32:12", + "type": "", + "value": "\u0019Ethereum Signed Message:\n" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "24355:6:12", + "nodeType": "YulIdentifier", + "src": "24355:6:12" + }, + "nativeSrc": "24355:43:12", + "nodeType": "YulFunctionCall", + "src": "24355:43:12" + }, + "nativeSrc": "24355:43:12", + "nodeType": "YulExpressionStatement", + "src": "24355:43:12" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "24450:4:12", + "nodeType": "YulLiteral", + "src": "24450:4:12", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "24456:4:12", + "nodeType": "YulLiteral", + "src": "24456:4:12", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "24443:6:12", + "nodeType": "YulIdentifier", + "src": "24443:6:12" + }, + "nativeSrc": "24443:18:12", + "nodeType": "YulFunctionCall", + "src": "24443:18:12" + }, + "nativeSrc": "24443:18:12", + "nodeType": "YulExpressionStatement", + "src": "24443:18:12" + }, + { + "body": { + "nativeSrc": "24598:177:12", + "nodeType": "YulBlock", + "src": "24598:177:12", + "statements": [ + { + "nativeSrc": "24616:14:12", + "nodeType": "YulAssignment", + "src": "24616:14:12", + "value": { + "arguments": [ + { + "name": "o", + "nativeSrc": "24625:1:12", + "nodeType": "YulIdentifier", + "src": "24625:1:12" + }, + { + "kind": "number", + "nativeSrc": "24628:1:12", + "nodeType": "YulLiteral", + "src": "24628:1:12", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "24621:3:12", + "nodeType": "YulIdentifier", + "src": "24621:3:12" + }, + "nativeSrc": "24621:9:12", + "nodeType": "YulFunctionCall", + "src": "24621:9:12" + }, + "variableNames": [ + { + "name": "o", + "nativeSrc": "24616:1:12", + "nodeType": "YulIdentifier", + "src": "24616:1:12" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "o", + "nativeSrc": "24655:1:12", + "nodeType": "YulIdentifier", + "src": "24655:1:12" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "24662:2:12", + "nodeType": "YulLiteral", + "src": "24662:2:12", + "type": "", + "value": "48" + }, + { + "arguments": [ + { + "name": "temp", + "nativeSrc": "24670:4:12", + "nodeType": "YulIdentifier", + "src": "24670:4:12" + }, + { + "kind": "number", + "nativeSrc": "24676:2:12", + "nodeType": "YulLiteral", + "src": "24676:2:12", + "type": "", + "value": "10" + } + ], + "functionName": { + "name": "mod", + "nativeSrc": "24666:3:12", + "nodeType": "YulIdentifier", + "src": "24666:3:12" + }, + "nativeSrc": "24666:13:12", + "nodeType": "YulFunctionCall", + "src": "24666:13:12" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24658:3:12", + "nodeType": "YulIdentifier", + "src": "24658:3:12" + }, + "nativeSrc": "24658:22:12", + "nodeType": "YulFunctionCall", + "src": "24658:22:12" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "24647:7:12", + "nodeType": "YulIdentifier", + "src": "24647:7:12" + }, + "nativeSrc": "24647:34:12", + "nodeType": "YulFunctionCall", + "src": "24647:34:12" + }, + "nativeSrc": "24647:34:12", + "nodeType": "YulExpressionStatement", + "src": "24647:34:12" + }, + { + "nativeSrc": "24698:21:12", + "nodeType": "YulAssignment", + "src": "24698:21:12", + "value": { + "arguments": [ + { + "name": "temp", + "nativeSrc": "24710:4:12", + "nodeType": "YulIdentifier", + "src": "24710:4:12" + }, + { + "kind": "number", + "nativeSrc": "24716:2:12", + "nodeType": "YulLiteral", + "src": "24716:2:12", + "type": "", + "value": "10" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "24706:3:12", + "nodeType": "YulIdentifier", + "src": "24706:3:12" + }, + "nativeSrc": "24706:13:12", + "nodeType": "YulFunctionCall", + "src": "24706:13:12" + }, + "variableNames": [ + { + "name": "temp", + "nativeSrc": "24698:4:12", + "nodeType": "YulIdentifier", + "src": "24698:4:12" + } + ] + }, + { + "body": { + "nativeSrc": "24752:9:12", + "nodeType": "YulBlock", + "src": "24752:9:12", + "statements": [ + { + "nativeSrc": "24754:5:12", + "nodeType": "YulBreak", + "src": "24754:5:12" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "temp", + "nativeSrc": "24746:4:12", + "nodeType": "YulIdentifier", + "src": "24746:4:12" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "24739:6:12", + "nodeType": "YulIdentifier", + "src": "24739:6:12" + }, + "nativeSrc": "24739:12:12", + "nodeType": "YulFunctionCall", + "src": "24739:12:12" + }, + "nativeSrc": "24736:25:12", + "nodeType": "YulIf", + "src": "24736:25:12" + } + ] + }, + "condition": { + "kind": "number", + "nativeSrc": "24593:1:12", + "nodeType": "YulLiteral", + "src": "24593:1:12", + "type": "", + "value": "1" + }, + "nativeSrc": "24565:210:12", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "24595:2:12", + "nodeType": "YulBlock", + "src": "24595:2:12", + "statements": [] + }, + "pre": { + "nativeSrc": "24569:23:12", + "nodeType": "YulBlock", + "src": "24569:23:12", + "statements": [ + { + "nativeSrc": "24571:19:12", + "nodeType": "YulVariableDeclaration", + "src": "24571:19:12", + "value": { + "name": "sLength", + "nativeSrc": "24583:7:12", + "nodeType": "YulIdentifier", + "src": "24583:7:12" + }, + "variables": [ + { + "name": "temp", + "nativeSrc": "24575:4:12", + "nodeType": "YulTypedName", + "src": "24575:4:12", + "type": "" + } + ] + } + ] + }, + "src": "24565:210:12" + }, + { + "nativeSrc": "24788:21:12", + "nodeType": "YulVariableDeclaration", + "src": "24788:21:12", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "24801:4:12", + "nodeType": "YulLiteral", + "src": "24801:4:12", + "type": "", + "value": "0x3a" + }, + { + "name": "o", + "nativeSrc": "24807:1:12", + "nodeType": "YulIdentifier", + "src": "24807:1:12" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "24797:3:12", + "nodeType": "YulIdentifier", + "src": "24797:3:12" + }, + "nativeSrc": "24797:12:12", + "nodeType": "YulFunctionCall", + "src": "24797:12:12" + }, + "variables": [ + { + "name": "n", + "nativeSrc": "24792:1:12", + "nodeType": "YulTypedName", + "src": "24792:1:12", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "24965:14:12", + "nodeType": "YulIdentifier", + "src": "24965:14:12" + }, + "nativeSrc": "24965:16:12", + "nodeType": "YulFunctionCall", + "src": "24965:16:12" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "24983:14:12", + "nodeType": "YulIdentifier", + "src": "24983:14:12" + }, + "nativeSrc": "24983:16:12", + "nodeType": "YulFunctionCall", + "src": "24983:16:12" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "25004:1:12", + "nodeType": "YulIdentifier", + "src": "25004:1:12" + }, + { + "kind": "number", + "nativeSrc": "25007:4:12", + "nodeType": "YulLiteral", + "src": "25007:4:12", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "25001:2:12", + "nodeType": "YulIdentifier", + "src": "25001:2:12" + }, + "nativeSrc": "25001:11:12", + "nodeType": "YulFunctionCall", + "src": "25001:11:12" + } + ], + "functionName": { + "name": "returndatacopy", + "nativeSrc": "24950:14:12", + "nodeType": "YulIdentifier", + "src": "24950:14:12" + }, + "nativeSrc": "24950:63:12", + "nodeType": "YulFunctionCall", + "src": "24950:63:12" + }, + "nativeSrc": "24950:63:12", + "nodeType": "YulExpressionStatement", + "src": "24950:63:12" + }, + { + "expression": { + "arguments": [ + { + "name": "s", + "nativeSrc": "25033:1:12", + "nodeType": "YulIdentifier", + "src": "25033:1:12" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "25045:4:12", + "nodeType": "YulLiteral", + "src": "25045:4:12", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "25039:5:12", + "nodeType": "YulIdentifier", + "src": "25039:5:12" + }, + "nativeSrc": "25039:11:12", + "nodeType": "YulFunctionCall", + "src": "25039:11:12" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "25058:1:12", + "nodeType": "YulIdentifier", + "src": "25058:1:12" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "25052:5:12", + "nodeType": "YulIdentifier", + "src": "25052:5:12" + }, + "nativeSrc": "25052:8:12", + "nodeType": "YulFunctionCall", + "src": "25052:8:12" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "25036:2:12", + "nodeType": "YulIdentifier", + "src": "25036:2:12" + }, + "nativeSrc": "25036:25:12", + "nodeType": "YulFunctionCall", + "src": "25036:25:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "25026:6:12", + "nodeType": "YulIdentifier", + "src": "25026:6:12" + }, + "nativeSrc": "25026:36:12", + "nodeType": "YulFunctionCall", + "src": "25026:36:12" + }, + "nativeSrc": "25026:36:12", + "nodeType": "YulExpressionStatement", + "src": "25026:36:12" + }, + { + "nativeSrc": "25108:58:12", + "nodeType": "YulAssignment", + "src": "25108:58:12", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "s", + "nativeSrc": "25132:1:12", + "nodeType": "YulIdentifier", + "src": "25132:1:12" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "25139:4:12", + "nodeType": "YulLiteral", + "src": "25139:4:12", + "type": "", + "value": "0x20" + }, + { + "name": "n", + "nativeSrc": "25145:1:12", + "nodeType": "YulIdentifier", + "src": "25145:1:12" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "25135:3:12", + "nodeType": "YulIdentifier", + "src": "25135:3:12" + }, + "nativeSrc": "25135:12:12", + "nodeType": "YulFunctionCall", + "src": "25135:12:12" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "25128:3:12", + "nodeType": "YulIdentifier", + "src": "25128:3:12" + }, + "nativeSrc": "25128:20:12", + "nodeType": "YulFunctionCall", + "src": "25128:20:12" + }, + { + "arguments": [ + { + "name": "n", + "nativeSrc": "25154:1:12", + "nodeType": "YulIdentifier", + "src": "25154:1:12" + }, + { + "name": "sLength", + "nativeSrc": "25157:7:12", + "nodeType": "YulIdentifier", + "src": "25157:7:12" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "25150:3:12", + "nodeType": "YulIdentifier", + "src": "25150:3:12" + }, + "nativeSrc": "25150:15:12", + "nodeType": "YulFunctionCall", + "src": "25150:15:12" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "25118:9:12", + "nodeType": "YulIdentifier", + "src": "25118:9:12" + }, + "nativeSrc": "25118:48:12", + "nodeType": "YulFunctionCall", + "src": "25118:48:12" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "25108:6:12", + "nodeType": "YulIdentifier", + "src": "25108:6:12" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "s", + "nativeSrc": "25186:1:12", + "nodeType": "YulIdentifier", + "src": "25186:1:12" + }, + { + "name": "sLength", + "nativeSrc": "25189:7:12", + "nodeType": "YulIdentifier", + "src": "25189:7:12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "25179:6:12", + "nodeType": "YulIdentifier", + "src": "25179:6:12" + }, + "nativeSrc": "25179:18:12", + "nodeType": "YulFunctionCall", + "src": "25179:18:12" + }, + "nativeSrc": "25179:18:12", + "nodeType": "YulExpressionStatement", + "src": "25179:18:12" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6352, + "isOffset": false, + "isSlot": false, + "src": "25108:6:12", + "valueSize": 1 + }, + { + "declaration": 6349, + "isOffset": false, + "isSlot": false, + "src": "24314:1:12", + "valueSize": 1 + }, + { + "declaration": 6349, + "isOffset": false, + "isSlot": false, + "src": "25033:1:12", + "valueSize": 1 + }, + { + "declaration": 6349, + "isOffset": false, + "isSlot": false, + "src": "25132:1:12", + "valueSize": 1 + }, + { + "declaration": 6349, + "isOffset": false, + "isSlot": false, + "src": "25186:1:12", + "valueSize": 1 + } + ], + "id": 6354, + "nodeType": "InlineAssembly", + "src": "24270:960:12" + } + ] + }, + "documentation": { + "id": 6347, + "nodeType": "StructuredDocumentation", + "src": "23830:295:12", + "text": "@dev Returns an Ethereum Signed Message, created from `s`.\n This produces a hash corresponding to the one signed with the\n [`eth_sign`](https://eth.wiki/json-rpc/API#eth_sign)\n JSON-RPC method as part of EIP-191.\n Note: Supports lengths of `s` up to 999999 bytes." + }, + "id": 6356, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toEthSignedMessageHash", + "nameLocation": "24139:22:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6350, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6349, + "mutability": "mutable", + "name": "s", + "nameLocation": "24175:1:12", + "nodeType": "VariableDeclaration", + "scope": 6356, + "src": "24162:14:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6348, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "24162:5:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "24161:16:12" + }, + "returnParameters": { + "id": 6353, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6352, + "mutability": "mutable", + "name": "result", + "nameLocation": "24209:6:12", + "nodeType": "VariableDeclaration", + "scope": 6356, + "src": "24201:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6351, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "24201:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "24200:16:12" + }, + "scope": 6365, + "src": "24130:1106:12", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6363, + "nodeType": "Block", + "src": "25646:113:12", + "statements": [ + { + "AST": { + "nativeSrc": "25708:45:12", + "nodeType": "YulBlock", + "src": "25708:45:12", + "statements": [ + { + "nativeSrc": "25722:21:12", + "nodeType": "YulAssignment", + "src": "25722:21:12", + "value": { + "kind": "number", + "nativeSrc": "25742:1:12", + "nodeType": "YulLiteral", + "src": "25742:1:12", + "type": "", + "value": "0" + }, + "variableNames": [ + { + "name": "signature.length", + "nativeSrc": "25722:16:12", + "nodeType": "YulIdentifier", + "src": "25722:16:12" + } + ] + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6360, + "isOffset": false, + "isSlot": false, + "src": "25722:16:12", + "suffix": "length", + "valueSize": 1 + } + ], + "id": 6362, + "nodeType": "InlineAssembly", + "src": "25699:54:12" + } + ] + }, + "documentation": { + "id": 6357, + "nodeType": "StructuredDocumentation", + "src": "25525:41:12", + "text": "@dev Returns an empty calldata bytes." + }, + "id": 6364, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "emptySignature", + "nameLocation": "25580:14:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6358, + "nodeType": "ParameterList", + "parameters": [], + "src": "25594:2:12" + }, + "returnParameters": { + "id": 6361, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6360, + "mutability": "mutable", + "name": "signature", + "nameLocation": "25635:9:12", + "nodeType": "VariableDeclaration", + "scope": 6364, + "src": "25620:24:12", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6359, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "25620:5:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "25619:26:12" + }, + "scope": 6365, + "src": "25571:188:12", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 6366, + "src": "1438:24323:12", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "32:25730:12" + }, + "id": 12 + }, + "solady/utils/UUPSUpgradeable.sol": { + "ast": { + "absolutePath": "solady/utils/UUPSUpgradeable.sol", + "exportedSymbols": { + "CallContextChecker": [ + 2583 + ], + "UUPSUpgradeable": [ + 6422 + ] + }, + "id": 6423, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6367, + "literals": [ + "solidity", + "^", + "0.8", + ".4" + ], + "nodeType": "PragmaDirective", + "src": "32:23:13" + }, + { + "absolutePath": "solady/utils/CallContextChecker.sol", + "file": "./CallContextChecker.sol", + "id": 6369, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6423, + "sourceUnit": 2584, + "src": "57:60:13", + "symbolAliases": [ + { + "foreign": { + "id": 6368, + "name": "CallContextChecker", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2583, + "src": "65:18:13", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 6371, + "name": "CallContextChecker", + "nameLocations": [ + "739:18:13" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2583, + "src": "739:18:13" + }, + "id": 6372, + "nodeType": "InheritanceSpecifier", + "src": "739:18:13" + } + ], + "canonicalName": "UUPSUpgradeable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 6370, + "nodeType": "StructuredDocumentation", + "src": "119:583:13", + "text": "@notice UUPS proxy mixin.\n @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/UUPSUpgradeable.sol)\n @author Modified from OpenZeppelin\n (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/proxy/utils/UUPSUpgradeable.sol)\n @dev Note:\n - This implementation is intended to be used with ERC1967 proxies.\n See: `LibClone.deployERC1967` and related functions.\n - This implementation is NOT compatible with legacy OpenZeppelin proxies\n which do not store the implementation at `_ERC1967_IMPLEMENTATION_SLOT`." + }, + "fullyImplemented": false, + "id": 6422, + "linearizedBaseContracts": [ + 6422, + 2583 + ], + "name": "UUPSUpgradeable", + "nameLocation": "720:15:13", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 6373, + "nodeType": "StructuredDocumentation", + "src": "1047:28:13", + "text": "@dev The upgrade failed." + }, + "errorSelector": "55299b49", + "id": 6375, + "name": "UpgradeFailed", + "nameLocation": "1086:13:13", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6374, + "nodeType": "ParameterList", + "parameters": [], + "src": "1099:2:13" + }, + "src": "1080:22:13" + }, + { + "anonymous": false, + "documentation": { + "id": 6376, + "nodeType": "StructuredDocumentation", + "src": "1391:61:13", + "text": "@dev Emitted when the proxy's implementation is upgraded." + }, + "eventSelector": "bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "id": 6380, + "name": "Upgraded", + "nameLocation": "1463:8:13", + "nodeType": "EventDefinition", + "parameters": { + "id": 6379, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6378, + "indexed": true, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "1488:14:13", + "nodeType": "VariableDeclaration", + "scope": 6380, + "src": "1472:30:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6377, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1472:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1471:32:13" + }, + "src": "1457:47:13" + }, + { + "constant": true, + "documentation": { + "id": 6381, + "nodeType": "StructuredDocumentation", + "src": "1510:49:13", + "text": "@dev `keccak256(bytes(\"Upgraded(address)\"))`." + }, + "id": 6384, + "mutability": "constant", + "name": "_UPGRADED_EVENT_SIGNATURE", + "nameLocation": "1589:25:13", + "nodeType": "VariableDeclaration", + "scope": 6422, + "src": "1564:127:13", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6382, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1564:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "307862633763643735613230656532376664396164656261623332303431663735353231346462633662666661393063633032323562333964613265356332643362", + "id": 6383, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1625:66:13", + "typeDescriptions": { + "typeIdentifier": "t_rational_85255390875014325802867460126659607941379558699672153012307716606304121007419_by_1", + "typeString": "int_const 8525...(69 digits omitted)...7419" + }, + "value": "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b" + }, + "visibility": "private" + }, + { + "constant": true, + "documentation": { + "id": 6385, + "nodeType": "StructuredDocumentation", + "src": "1981:137:13", + "text": "@dev The ERC-1967 storage slot for the implementation in the proxy.\n `uint256(keccak256(\"eip1967.proxy.implementation\")) - 1`." + }, + "id": 6388, + "mutability": "constant", + "name": "_ERC1967_IMPLEMENTATION_SLOT", + "nameLocation": "2149:28:13", + "nodeType": "VariableDeclaration", + "scope": 6422, + "src": "2123:131:13", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6386, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2123:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307833363038393461313362613161333231303636376338323834393264623938646361336532303736636333373335613932306133636135303564333832626263", + "id": 6387, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2188:66:13", + "typeDescriptions": { + "typeIdentifier": "t_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by_1", + "typeString": "int_const 2444...(69 digits omitted)...5612" + }, + "value": "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc" + }, + "visibility": "internal" + }, + { + "documentation": { + "id": 6389, + "nodeType": "StructuredDocumentation", + "src": "2544:251:13", + "text": "@dev Please override this function to check if `msg.sender` is authorized\n to upgrade the proxy to `newImplementation`, reverting if not.\n ```\n function _authorizeUpgrade(address) internal override onlyOwner {}\n ```" + }, + "id": 6394, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "_authorizeUpgrade", + "nameLocation": "2809:17:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6392, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6391, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "2835:17:13", + "nodeType": "VariableDeclaration", + "scope": 6394, + "src": "2827:25:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6390, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2827:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2826:27:13" + }, + "returnParameters": { + "id": 6393, + "nodeType": "ParameterList", + "parameters": [], + "src": "2870:0:13" + }, + "scope": 6422, + "src": "2800:71:13", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 6404, + "nodeType": "Block", + "src": "3229:151:13", + "statements": [ + { + "expression": { + "id": 6402, + "name": "_ERC1967_IMPLEMENTATION_SLOT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6388, + "src": "3345:28:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 6401, + "id": 6403, + "nodeType": "Return", + "src": "3338:35:13" + } + ] + }, + "documentation": { + "id": 6395, + "nodeType": "StructuredDocumentation", + "src": "2877:271:13", + "text": "@dev Returns the storage slot used by the implementation,\n as specified in [ERC1822](https://eips.ethereum.org/EIPS/eip-1822).\n Note: The `notDelegated` modifier prevents accidental upgrades to\n an implementation that is a proxy contract." + }, + "functionSelector": "52d1902d", + "id": 6405, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 6398, + "kind": "modifierInvocation", + "modifierName": { + "id": 6397, + "name": "notDelegated", + "nameLocations": [ + "3198:12:13" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2577, + "src": "3198:12:13" + }, + "nodeType": "ModifierInvocation", + "src": "3198:12:13" + } + ], + "name": "proxiableUUID", + "nameLocation": "3162:13:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6396, + "nodeType": "ParameterList", + "parameters": [], + "src": "3175:2:13" + }, + "returnParameters": { + "id": 6401, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6400, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6405, + "src": "3220:7:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6399, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3220:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3219:9:13" + }, + "scope": 6422, + "src": "3153:227:13", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 6420, + "nodeType": "Block", + "src": "3729:1475:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 6416, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6408, + "src": "3757:17:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6415, + "name": "_authorizeUpgrade", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6394, + "src": "3739:17:13", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 6417, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3739:36:13", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6418, + "nodeType": "ExpressionStatement", + "src": "3739:36:13" + }, + { + "AST": { + "nativeSrc": "3837:1361:13", + "nodeType": "YulBlock", + "src": "3837:1361:13", + "statements": [ + { + "nativeSrc": "3851:56:13", + "nodeType": "YulAssignment", + "src": "3851:56:13", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3876:2:13", + "nodeType": "YulLiteral", + "src": "3876:2:13", + "type": "", + "value": "96" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3884:2:13", + "nodeType": "YulLiteral", + "src": "3884:2:13", + "type": "", + "value": "96" + }, + { + "name": "newImplementation", + "nativeSrc": "3888:17:13", + "nodeType": "YulIdentifier", + "src": "3888:17:13" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "3880:3:13", + "nodeType": "YulIdentifier", + "src": "3880:3:13" + }, + "nativeSrc": "3880:26:13", + "nodeType": "YulFunctionCall", + "src": "3880:26:13" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "3872:3:13", + "nodeType": "YulIdentifier", + "src": "3872:3:13" + }, + "nativeSrc": "3872:35:13", + "nodeType": "YulFunctionCall", + "src": "3872:35:13" + }, + "variableNames": [ + { + "name": "newImplementation", + "nativeSrc": "3851:17:13", + "nodeType": "YulIdentifier", + "src": "3851:17:13" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3952:4:13", + "nodeType": "YulLiteral", + "src": "3952:4:13", + "type": "", + "value": "0x00" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "3958:14:13", + "nodeType": "YulIdentifier", + "src": "3958:14:13" + }, + "nativeSrc": "3958:16:13", + "nodeType": "YulFunctionCall", + "src": "3958:16:13" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3945:6:13", + "nodeType": "YulIdentifier", + "src": "3945:6:13" + }, + "nativeSrc": "3945:30:13", + "nodeType": "YulFunctionCall", + "src": "3945:30:13" + }, + "nativeSrc": "3945:30:13", + "nodeType": "YulExpressionStatement", + "src": "3945:30:13" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3995:4:13", + "nodeType": "YulLiteral", + "src": "3995:4:13", + "type": "", + "value": "0x01" + }, + { + "kind": "number", + "nativeSrc": "4001:10:13", + "nodeType": "YulLiteral", + "src": "4001:10:13", + "type": "", + "value": "0x52d1902d" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3988:6:13", + "nodeType": "YulIdentifier", + "src": "3988:6:13" + }, + "nativeSrc": "3988:24:13", + "nodeType": "YulFunctionCall", + "src": "3988:24:13" + }, + "nativeSrc": "3988:24:13", + "nodeType": "YulExpressionStatement", + "src": "3988:24:13" + }, + { + "nativeSrc": "4047:37:13", + "nodeType": "YulVariableDeclaration", + "src": "4047:37:13", + "value": { + "name": "_ERC1967_IMPLEMENTATION_SLOT", + "nativeSrc": "4056:28:13", + "nodeType": "YulIdentifier", + "src": "4056:28:13" + }, + "variables": [ + { + "name": "s", + "nativeSrc": "4051:1:13", + "nodeType": "YulTypedName", + "src": "4051:1:13", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "4265:113:13", + "nodeType": "YulBlock", + "src": "4265:113:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4290:4:13", + "nodeType": "YulLiteral", + "src": "4290:4:13", + "type": "", + "value": "0x01" + }, + { + "kind": "number", + "nativeSrc": "4296:10:13", + "nodeType": "YulLiteral", + "src": "4296:10:13", + "type": "", + "value": "0x55299b49" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4283:6:13", + "nodeType": "YulIdentifier", + "src": "4283:6:13" + }, + "nativeSrc": "4283:24:13", + "nodeType": "YulFunctionCall", + "src": "4283:24:13" + }, + "nativeSrc": "4283:24:13", + "nodeType": "YulExpressionStatement", + "src": "4283:24:13" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4353:4:13", + "nodeType": "YulLiteral", + "src": "4353:4:13", + "type": "", + "value": "0x1d" + }, + { + "kind": "number", + "nativeSrc": "4359:4:13", + "nodeType": "YulLiteral", + "src": "4359:4:13", + "type": "", + "value": "0x04" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "4346:6:13", + "nodeType": "YulIdentifier", + "src": "4346:6:13" + }, + "nativeSrc": "4346:18:13", + "nodeType": "YulFunctionCall", + "src": "4346:18:13" + }, + "nativeSrc": "4346:18:13", + "nodeType": "YulExpressionStatement", + "src": "4346:18:13" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "4209:3:13", + "nodeType": "YulIdentifier", + "src": "4209:3:13" + }, + "nativeSrc": "4209:5:13", + "nodeType": "YulFunctionCall", + "src": "4209:5:13" + }, + { + "name": "newImplementation", + "nativeSrc": "4216:17:13", + "nodeType": "YulIdentifier", + "src": "4216:17:13" + }, + { + "kind": "number", + "nativeSrc": "4235:4:13", + "nodeType": "YulLiteral", + "src": "4235:4:13", + "type": "", + "value": "0x1d" + }, + { + "kind": "number", + "nativeSrc": "4241:4:13", + "nodeType": "YulLiteral", + "src": "4241:4:13", + "type": "", + "value": "0x04" + }, + { + "kind": "number", + "nativeSrc": "4247:4:13", + "nodeType": "YulLiteral", + "src": "4247:4:13", + "type": "", + "value": "0x01" + }, + { + "kind": "number", + "nativeSrc": "4253:4:13", + "nodeType": "YulLiteral", + "src": "4253:4:13", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "4198:10:13", + "nodeType": "YulIdentifier", + "src": "4198:10:13" + }, + "nativeSrc": "4198:60:13", + "nodeType": "YulFunctionCall", + "src": "4198:60:13" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "4192:5:13", + "nodeType": "YulIdentifier", + "src": "4192:5:13" + }, + "nativeSrc": "4192:67:13", + "nodeType": "YulFunctionCall", + "src": "4192:67:13" + }, + { + "name": "s", + "nativeSrc": "4261:1:13", + "nodeType": "YulIdentifier", + "src": "4261:1:13" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "4189:2:13", + "nodeType": "YulIdentifier", + "src": "4189:2:13" + }, + "nativeSrc": "4189:74:13", + "nodeType": "YulFunctionCall", + "src": "4189:74:13" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "4182:6:13", + "nodeType": "YulIdentifier", + "src": "4182:6:13" + }, + "nativeSrc": "4182:82:13", + "nodeType": "YulFunctionCall", + "src": "4182:82:13" + }, + "nativeSrc": "4179:199:13", + "nodeType": "YulIf", + "src": "4179:199:13" + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "4438:8:13", + "nodeType": "YulIdentifier", + "src": "4438:8:13" + }, + "nativeSrc": "4438:10:13", + "nodeType": "YulFunctionCall", + "src": "4438:10:13" + }, + { + "kind": "number", + "nativeSrc": "4450:4:13", + "nodeType": "YulLiteral", + "src": "4450:4:13", + "type": "", + "value": "0x00" + }, + { + "name": "_UPGRADED_EVENT_SIGNATURE", + "nativeSrc": "4456:25:13", + "nodeType": "YulIdentifier", + "src": "4456:25:13" + }, + { + "name": "newImplementation", + "nativeSrc": "4483:17:13", + "nodeType": "YulIdentifier", + "src": "4483:17:13" + } + ], + "functionName": { + "name": "log2", + "nativeSrc": "4433:4:13", + "nodeType": "YulIdentifier", + "src": "4433:4:13" + }, + "nativeSrc": "4433:68:13", + "nodeType": "YulFunctionCall", + "src": "4433:68:13" + }, + "nativeSrc": "4433:68:13", + "nodeType": "YulExpressionStatement", + "src": "4433:68:13" + }, + { + "expression": { + "arguments": [ + { + "name": "s", + "nativeSrc": "4521:1:13", + "nodeType": "YulIdentifier", + "src": "4521:1:13" + }, + { + "name": "newImplementation", + "nativeSrc": "4524:17:13", + "nodeType": "YulIdentifier", + "src": "4524:17:13" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "4514:6:13", + "nodeType": "YulIdentifier", + "src": "4514:6:13" + }, + "nativeSrc": "4514:28:13", + "nodeType": "YulFunctionCall", + "src": "4514:28:13" + }, + "nativeSrc": "4514:28:13", + "nodeType": "YulExpressionStatement", + "src": "4514:28:13" + }, + { + "body": { + "nativeSrc": "4687:501:13", + "nodeType": "YulBlock", + "src": "4687:501:13", + "statements": [ + { + "nativeSrc": "4785:20:13", + "nodeType": "YulVariableDeclaration", + "src": "4785:20:13", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4800:4:13", + "nodeType": "YulLiteral", + "src": "4800:4:13", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "4794:5:13", + "nodeType": "YulIdentifier", + "src": "4794:5:13" + }, + "nativeSrc": "4794:11:13", + "nodeType": "YulFunctionCall", + "src": "4794:11:13" + }, + "variables": [ + { + "name": "m", + "nativeSrc": "4789:1:13", + "nodeType": "YulTypedName", + "src": "4789:1:13", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "4835:1:13", + "nodeType": "YulIdentifier", + "src": "4835:1:13" + }, + { + "name": "data.offset", + "nativeSrc": "4838:11:13", + "nodeType": "YulIdentifier", + "src": "4838:11:13" + }, + { + "name": "data.length", + "nativeSrc": "4851:11:13", + "nodeType": "YulIdentifier", + "src": "4851:11:13" + } + ], + "functionName": { + "name": "calldatacopy", + "nativeSrc": "4822:12:13", + "nodeType": "YulIdentifier", + "src": "4822:12:13" + }, + "nativeSrc": "4822:41:13", + "nodeType": "YulFunctionCall", + "src": "4822:41:13" + }, + "nativeSrc": "4822:41:13", + "nodeType": "YulExpressionStatement", + "src": "4822:41:13" + }, + { + "body": { + "nativeSrc": "4980:194:13", + "nodeType": "YulBlock", + "src": "4980:194:13", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "5082:1:13", + "nodeType": "YulIdentifier", + "src": "5082:1:13" + }, + { + "kind": "number", + "nativeSrc": "5085:4:13", + "nodeType": "YulLiteral", + "src": "5085:4:13", + "type": "", + "value": "0x00" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "5091:14:13", + "nodeType": "YulIdentifier", + "src": "5091:14:13" + }, + "nativeSrc": "5091:16:13", + "nodeType": "YulFunctionCall", + "src": "5091:16:13" + } + ], + "functionName": { + "name": "returndatacopy", + "nativeSrc": "5067:14:13", + "nodeType": "YulIdentifier", + "src": "5067:14:13" + }, + "nativeSrc": "5067:41:13", + "nodeType": "YulFunctionCall", + "src": "5067:41:13" + }, + "nativeSrc": "5067:41:13", + "nodeType": "YulExpressionStatement", + "src": "5067:41:13" + }, + { + "expression": { + "arguments": [ + { + "name": "m", + "nativeSrc": "5136:1:13", + "nodeType": "YulIdentifier", + "src": "5136:1:13" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "5139:14:13", + "nodeType": "YulIdentifier", + "src": "5139:14:13" + }, + "nativeSrc": "5139:16:13", + "nodeType": "YulFunctionCall", + "src": "5139:16:13" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "5129:6:13", + "nodeType": "YulIdentifier", + "src": "5129:6:13" + }, + "nativeSrc": "5129:27:13", + "nodeType": "YulFunctionCall", + "src": "5129:27:13" + }, + "nativeSrc": "5129:27:13", + "nodeType": "YulExpressionStatement", + "src": "5129:27:13" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "4903:3:13", + "nodeType": "YulIdentifier", + "src": "4903:3:13" + }, + "nativeSrc": "4903:5:13", + "nodeType": "YulFunctionCall", + "src": "4903:5:13" + }, + { + "name": "newImplementation", + "nativeSrc": "4910:17:13", + "nodeType": "YulIdentifier", + "src": "4910:17:13" + }, + { + "name": "m", + "nativeSrc": "4929:1:13", + "nodeType": "YulIdentifier", + "src": "4929:1:13" + }, + { + "name": "data.length", + "nativeSrc": "4932:11:13", + "nodeType": "YulIdentifier", + "src": "4932:11:13" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "4945:8:13", + "nodeType": "YulIdentifier", + "src": "4945:8:13" + }, + "nativeSrc": "4945:10:13", + "nodeType": "YulFunctionCall", + "src": "4945:10:13" + }, + { + "kind": "number", + "nativeSrc": "4957:4:13", + "nodeType": "YulLiteral", + "src": "4957:4:13", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "delegatecall", + "nativeSrc": "4890:12:13", + "nodeType": "YulIdentifier", + "src": "4890:12:13" + }, + "nativeSrc": "4890:72:13", + "nodeType": "YulFunctionCall", + "src": "4890:72:13" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "4883:6:13", + "nodeType": "YulIdentifier", + "src": "4883:6:13" + }, + "nativeSrc": "4883:80:13", + "nodeType": "YulFunctionCall", + "src": "4883:80:13" + }, + "nativeSrc": "4880:294:13", + "nodeType": "YulIf", + "src": "4880:294:13" + } + ] + }, + "condition": { + "name": "data.length", + "nativeSrc": "4675:11:13", + "nodeType": "YulIdentifier", + "src": "4675:11:13" + }, + "nativeSrc": "4672:516:13", + "nodeType": "YulIf", + "src": "4672:516:13" + } + ] + }, + "documentation": "@solidity memory-safe-assembly", + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6388, + "isOffset": false, + "isSlot": false, + "src": "4056:28:13", + "valueSize": 1 + }, + { + "declaration": 6384, + "isOffset": false, + "isSlot": false, + "src": "4456:25:13", + "valueSize": 1 + }, + { + "declaration": 6410, + "isOffset": false, + "isSlot": false, + "src": "4675:11:13", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 6410, + "isOffset": false, + "isSlot": false, + "src": "4851:11:13", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 6410, + "isOffset": false, + "isSlot": false, + "src": "4932:11:13", + "suffix": "length", + "valueSize": 1 + }, + { + "declaration": 6410, + "isOffset": true, + "isSlot": false, + "src": "4838:11:13", + "suffix": "offset", + "valueSize": 1 + }, + { + "declaration": 6408, + "isOffset": false, + "isSlot": false, + "src": "3851:17:13", + "valueSize": 1 + }, + { + "declaration": 6408, + "isOffset": false, + "isSlot": false, + "src": "3888:17:13", + "valueSize": 1 + }, + { + "declaration": 6408, + "isOffset": false, + "isSlot": false, + "src": "4216:17:13", + "valueSize": 1 + }, + { + "declaration": 6408, + "isOffset": false, + "isSlot": false, + "src": "4483:17:13", + "valueSize": 1 + }, + { + "declaration": 6408, + "isOffset": false, + "isSlot": false, + "src": "4524:17:13", + "valueSize": 1 + }, + { + "declaration": 6408, + "isOffset": false, + "isSlot": false, + "src": "4910:17:13", + "valueSize": 1 + } + ], + "id": 6419, + "nodeType": "InlineAssembly", + "src": "3828:1370:13" + } + ] + }, + "documentation": { + "id": 6406, + "nodeType": "StructuredDocumentation", + "src": "3386:195:13", + "text": "@dev Upgrades the proxy's implementation to `newImplementation`.\n Emits a {Upgraded} event.\n Note: Passing in empty `data` skips the delegatecall to `newImplementation`." + }, + "functionSelector": "4f1ef286", + "id": 6421, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 6413, + "kind": "modifierInvocation", + "modifierName": { + "id": 6412, + "name": "onlyProxy", + "nameLocations": [ + "3715:9:13" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2569, + "src": "3715:9:13" + }, + "nodeType": "ModifierInvocation", + "src": "3715:9:13" + } + ], + "name": "upgradeToAndCall", + "nameLocation": "3595:16:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6411, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6408, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "3620:17:13", + "nodeType": "VariableDeclaration", + "scope": 6421, + "src": "3612:25:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6407, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3612:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6410, + "mutability": "mutable", + "name": "data", + "nameLocation": "3654:4:13", + "nodeType": "VariableDeclaration", + "scope": 6421, + "src": "3639:19:13", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6409, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3639:5:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3611:48:13" + }, + "returnParameters": { + "id": 6414, + "nodeType": "ParameterList", + "parameters": [], + "src": "3729:0:13" + }, + "scope": 6422, + "src": "3586:1618:13", + "stateMutability": "payable", + "virtual": true, + "visibility": "public" + } + ], + "scope": 6423, + "src": "702:4504:13", + "usedErrors": [ + 2465, + 6375 + ], + "usedEvents": [ + 6380 + ] + } + ], + "src": "32:5175:13" + }, + "id": 13 + }, + "src/AuthenticatedStaticCaller.sol": { + "ast": { + "absolutePath": "src/AuthenticatedStaticCaller.sol", + "exportedSymbols": { + "AuthenticatedStaticCaller": [ + 6532 + ], + "ERC1271": [ + 6726 + ], + "StaticCall": [ + 6435 + ] + }, + "id": 6533, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6424, + "literals": [ + "solidity", + "^", + "0.8", + ".28" + ], + "nodeType": "PragmaDirective", + "src": "32:24:14" + }, + { + "absolutePath": "src/ERC1271.sol", + "file": "./ERC1271.sol", + "id": 6426, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6533, + "sourceUnit": 6727, + "src": "57:38:14", + "symbolAliases": [ + { + "foreign": { + "id": 6425, + "name": "ERC1271", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6726, + "src": "65:7:14", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "canonicalName": "StaticCall", + "id": 6435, + "members": [ + { + "constant": false, + "id": 6428, + "mutability": "mutable", + "name": "target", + "nameLocation": "129:6:14", + "nodeType": "VariableDeclaration", + "scope": 6435, + "src": "121:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6427, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "121:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6430, + "mutability": "mutable", + "name": "data", + "nameLocation": "147:4:14", + "nodeType": "VariableDeclaration", + "scope": 6435, + "src": "141:10:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6429, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "141:5:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6432, + "mutability": "mutable", + "name": "signedAt", + "nameLocation": "165:8:14", + "nodeType": "VariableDeclaration", + "scope": 6435, + "src": "157:16:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6431, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "157:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6434, + "mutability": "mutable", + "name": "signature", + "nameLocation": "185:9:14", + "nodeType": "VariableDeclaration", + "scope": 6435, + "src": "179:15:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6433, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "179:5:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "name": "StaticCall", + "nameLocation": "104:10:14", + "nodeType": "StructDefinition", + "scope": 6533, + "src": "97:100:14", + "visibility": "public" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 6436, + "name": "ERC1271", + "nameLocations": [ + "246:7:14" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6726, + "src": "246:7:14" + }, + "id": 6437, + "nodeType": "InheritanceSpecifier", + "src": "246:7:14" + } + ], + "canonicalName": "AuthenticatedStaticCaller", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": false, + "id": 6532, + "linearizedBaseContracts": [ + 6532, + 6726 + ], + "name": "AuthenticatedStaticCaller", + "nameLocation": "217:25:14", + "nodeType": "ContractDefinition", + "nodes": [ + { + "errorSelector": "f88f0490", + "id": 6443, + "name": "SignatureExpired", + "nameLocation": "266:16:14", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6442, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6439, + "mutability": "mutable", + "name": "expiredAt", + "nameLocation": "291:9:14", + "nodeType": "VariableDeclaration", + "scope": 6443, + "src": "283:17:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6438, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "283:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6441, + "mutability": "mutable", + "name": "currentTimestamp", + "nameLocation": "310:16:14", + "nodeType": "VariableDeclaration", + "scope": 6443, + "src": "302:24:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6440, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "302:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "282:45:14" + }, + "src": "260:68:14" + }, + { + "errorSelector": "8baa579f", + "id": 6445, + "name": "InvalidSignature", + "nameLocation": "339:16:14", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6444, + "nodeType": "ParameterList", + "parameters": [], + "src": "355:2:14" + }, + "src": "333:25:14" + }, + { + "constant": true, + "id": 6448, + "mutability": "constant", + "name": "signatureLifetime", + "nameLocation": "417:17:14", + "nodeType": "VariableDeclaration", + "scope": 6532, + "src": "400:47:14", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6446, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "400:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "3330", + "id": 6447, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "437:10:14", + "subdenomination": "minutes", + "typeDescriptions": { + "typeIdentifier": "t_rational_1800_by_1", + "typeString": "int_const 1800" + }, + "value": "30" + }, + "visibility": "internal" + }, + { + "body": { + "id": 6455, + "nodeType": "Block", + "src": "518:41:14", + "statements": [ + { + "expression": { + "id": 6453, + "name": "signatureLifetime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6448, + "src": "535:17:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6452, + "id": 6454, + "nodeType": "Return", + "src": "528:24:14" + } + ] + }, + "functionSelector": "17452caa", + "id": 6456, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getSignatureLifetime", + "nameLocation": "463:20:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6449, + "nodeType": "ParameterList", + "parameters": [], + "src": "483:2:14" + }, + "returnParameters": { + "id": 6452, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6451, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6456, + "src": "509:7:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6450, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "509:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "508:9:14" + }, + "scope": 6532, + "src": "454:105:14", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 6530, + "nodeType": "Block", + "src": "654:628:14", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6470, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6467, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 6464, + "name": "call", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6459, + "src": "668:4:14", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StaticCall_$6435_calldata_ptr", + "typeString": "struct StaticCall calldata" + } + }, + "id": 6465, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "673:8:14", + "memberName": "signedAt", + "nodeType": "MemberAccess", + "referencedDeclaration": 6432, + "src": "668:13:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 6466, + "name": "signatureLifetime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6448, + "src": "684:17:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "668:33:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 6468, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "704:5:14", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 6469, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "710:9:14", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "704:15:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "668:51:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6481, + "nodeType": "IfStatement", + "src": "664:157:14", + "trueBody": { + "id": 6480, + "nodeType": "Block", + "src": "721:100:14", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6475, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 6472, + "name": "call", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6459, + "src": "759:4:14", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StaticCall_$6435_calldata_ptr", + "typeString": "struct StaticCall calldata" + } + }, + "id": 6473, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "764:8:14", + "memberName": "signedAt", + "nodeType": "MemberAccess", + "referencedDeclaration": 6432, + "src": "759:13:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 6474, + "name": "signatureLifetime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6448, + "src": "775:17:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "759:33:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 6476, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "794:5:14", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 6477, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "800:9:14", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "794:15:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6471, + "name": "SignatureExpired", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6443, + "src": "742:16:14", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$", + "typeString": "function (uint256,uint256) pure returns (error)" + } + }, + "id": 6478, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "742:68:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 6479, + "nodeType": "RevertStatement", + "src": "735:75:14" + } + ] + } + }, + { + "assignments": [ + 6483 + ], + "declarations": [ + { + "constant": false, + "id": 6483, + "mutability": "mutable", + "name": "hash", + "nameLocation": "838:4:14", + "nodeType": "VariableDeclaration", + "scope": 6530, + "src": "830:12:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6482, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "830:7:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 6498, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "expression": { + "id": 6488, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "868:4:14", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AuthenticatedStaticCaller_$6532", + "typeString": "contract AuthenticatedStaticCaller" + } + }, + "id": 6489, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "873:16:14", + "memberName": "signedStaticCall", + "nodeType": "MemberAccess", + "referencedDeclaration": 6531, + "src": "868:21:14", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_struct$_StaticCall_$6435_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (struct StaticCall memory) view external returns (bytes memory)" + } + }, + "id": 6490, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "890:8:14", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "868:30:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "arguments": [ + { + "expression": { + "id": 6493, + "name": "call", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6459, + "src": "908:4:14", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StaticCall_$6435_calldata_ptr", + "typeString": "struct StaticCall calldata" + } + }, + "id": 6494, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "913:8:14", + "memberName": "signedAt", + "nodeType": "MemberAccess", + "referencedDeclaration": 6432, + "src": "908:13:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6492, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "900:7:14", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 6491, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "900:7:14", + "typeDescriptions": {} + } + }, + "id": 6495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "900:22:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 6486, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "855:5:14", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 6485, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "855:5:14", + "typeDescriptions": {} + } + }, + "id": 6487, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "861:6:14", + "memberName": "concat", + "nodeType": "MemberAccess", + "src": "855:12:14", + "typeDescriptions": { + "typeIdentifier": "t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 6496, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "855:68:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 6484, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "845:9:14", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 6497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "845:79:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "830:94:14" + }, + { + "condition": { + "id": 6506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "938:56:14", + "subExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 6501, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6483, + "src": "972:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 6500, + "name": "replaySafeHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6628, + "src": "957:14:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32) view returns (bytes32)" + } + }, + "id": 6502, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "957:20:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 6503, + "name": "call", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6459, + "src": "979:4:14", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StaticCall_$6435_calldata_ptr", + "typeString": "struct StaticCall calldata" + } + }, + "id": 6504, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "984:9:14", + "memberName": "signature", + "nodeType": "MemberAccess", + "referencedDeclaration": 6434, + "src": "979:14:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 6499, + "name": "_isValidSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6725, + "src": "939:17:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_bool_$", + "typeString": "function (bytes32,bytes calldata) view returns (bool)" + } + }, + "id": 6505, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "939:55:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6511, + "nodeType": "IfStatement", + "src": "934:112:14", + "trueBody": { + "id": 6510, + "nodeType": "Block", + "src": "996:50:14", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6507, + "name": "InvalidSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6445, + "src": "1017:16:14", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" + } + }, + "id": 6508, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1017:18:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 6509, + "nodeType": "RevertStatement", + "src": "1010:25:14" + } + ] + } + }, + { + "assignments": [ + 6513, + 6515 + ], + "declarations": [ + { + "constant": false, + "id": 6513, + "mutability": "mutable", + "name": "success", + "nameLocation": "1061:7:14", + "nodeType": "VariableDeclaration", + "scope": 6530, + "src": "1056:12:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6512, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1056:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6515, + "mutability": "mutable", + "name": "result", + "nameLocation": "1083:6:14", + "nodeType": "VariableDeclaration", + "scope": 6530, + "src": "1070:19:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6514, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1070:5:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 6522, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 6519, + "name": "call", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6459, + "src": "1116:4:14", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StaticCall_$6435_calldata_ptr", + "typeString": "struct StaticCall calldata" + } + }, + "id": 6520, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1121:4:14", + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": 6430, + "src": "1116:9:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "expression": { + "expression": { + "id": 6516, + "name": "call", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6459, + "src": "1093:4:14", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StaticCall_$6435_calldata_ptr", + "typeString": "struct StaticCall calldata" + } + }, + "id": 6517, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1098:6:14", + "memberName": "target", + "nodeType": "MemberAccess", + "referencedDeclaration": 6428, + "src": "1093:11:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 6518, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1105:10:14", + "memberName": "staticcall", + "nodeType": "MemberAccess", + "src": "1093:22:14", + "typeDescriptions": { + "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) view returns (bool,bytes memory)" + } + }, + "id": 6521, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1093:33:14", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1055:71:14" + }, + { + "condition": { + "id": 6524, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1140:8:14", + "subExpression": { + "id": 6523, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6513, + "src": "1141:7:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6527, + "nodeType": "IfStatement", + "src": "1136:117:14", + "trueBody": { + "id": 6526, + "nodeType": "Block", + "src": "1150:103:14", + "statements": [ + { + "AST": { + "nativeSrc": "1173:70:14", + "nodeType": "YulBlock", + "src": "1173:70:14", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "1202:6:14", + "nodeType": "YulIdentifier", + "src": "1202:6:14" + }, + { + "kind": "number", + "nativeSrc": "1210:2:14", + "nodeType": "YulLiteral", + "src": "1210:2:14", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1198:3:14", + "nodeType": "YulIdentifier", + "src": "1198:3:14" + }, + "nativeSrc": "1198:15:14", + "nodeType": "YulFunctionCall", + "src": "1198:15:14" + }, + { + "arguments": [ + { + "name": "result", + "nativeSrc": "1221:6:14", + "nodeType": "YulIdentifier", + "src": "1221:6:14" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "1215:5:14", + "nodeType": "YulIdentifier", + "src": "1215:5:14" + }, + "nativeSrc": "1215:13:14", + "nodeType": "YulFunctionCall", + "src": "1215:13:14" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1191:6:14", + "nodeType": "YulIdentifier", + "src": "1191:6:14" + }, + "nativeSrc": "1191:38:14", + "nodeType": "YulFunctionCall", + "src": "1191:38:14" + }, + "nativeSrc": "1191:38:14", + "nodeType": "YulExpressionStatement", + "src": "1191:38:14" + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6515, + "isOffset": false, + "isSlot": false, + "src": "1202:6:14", + "valueSize": 1 + }, + { + "declaration": 6515, + "isOffset": false, + "isSlot": false, + "src": "1221:6:14", + "valueSize": 1 + } + ], + "id": 6525, + "nodeType": "InlineAssembly", + "src": "1164:79:14" + } + ] + } + }, + { + "expression": { + "id": 6528, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6515, + "src": "1269:6:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 6463, + "id": 6529, + "nodeType": "Return", + "src": "1262:13:14" + } + ] + }, + "functionSelector": "737bebdd", + "id": 6531, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "signedStaticCall", + "nameLocation": "574:16:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6460, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6459, + "mutability": "mutable", + "name": "call", + "nameLocation": "611:4:14", + "nodeType": "VariableDeclaration", + "scope": 6531, + "src": "591:24:14", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StaticCall_$6435_calldata_ptr", + "typeString": "struct StaticCall" + }, + "typeName": { + "id": 6458, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6457, + "name": "StaticCall", + "nameLocations": [ + "591:10:14" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6435, + "src": "591:10:14" + }, + "referencedDeclaration": 6435, + "src": "591:10:14", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StaticCall_$6435_storage_ptr", + "typeString": "struct StaticCall" + } + }, + "visibility": "internal" + } + ], + "src": "590:26:14" + }, + "returnParameters": { + "id": 6463, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6462, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6531, + "src": "640:12:14", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6461, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "640:5:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "639:14:14" + }, + "scope": 6532, + "src": "565:717:14", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 6533, + "src": "199:1085:14", + "usedErrors": [ + 6443, + 6445 + ], + "usedEvents": [] + } + ], + "src": "32:1253:14" + }, + "id": 14 + }, + "src/ERC1271.sol": { + "ast": { + "absolutePath": "src/ERC1271.sol", + "exportedSymbols": { + "ERC1271": [ + 6726 + ] + }, + "id": 6727, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6534, + "literals": [ + "solidity", + "^", + "0.8", + ".4" + ], + "nodeType": "PragmaDirective", + "src": "32:23:15" + }, + { + "abstract": true, + "baseContracts": [], + "canonicalName": "ERC1271", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 6535, + "nodeType": "StructuredDocumentation", + "src": "57:851:15", + "text": "@title ERC-1271\n @notice Abstract ERC-1271 implementation (based on Solady's) with guards to handle the same\n signer being used on multiple accounts.\n @dev To prevent the same signature from being validated on different accounts owned by the samer signer,\n we introduce an anti cross-account-replay layer: the original hash is input into a new EIP-712 compliant\n hash. The domain separator of this outer hash contains the chain id and address of this contract, so that\n it cannot be used on two accounts (see `replaySafeHash()` for the implementation details).\n @author Applied Blockchain (https://github.com/appliedblockchain/giano)\n @author Coinbase (https://github.com/coinbase/smart-wallet)\n @author Solady (https://github.com/vectorized/solady/blob/main/src/accounts/ERC1271.sol)" + }, + "fullyImplemented": false, + "id": 6726, + "linearizedBaseContracts": [ + 6726 + ], + "name": "ERC1271", + "nameLocation": "926:7:15", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "documentation": { + "id": 6536, + "nodeType": "StructuredDocumentation", + "src": "940:409:15", + "text": "@dev Precomputed `typeHash` used to produce EIP-712 compliant hash when applying the anti\n cross-account-replay layer.\n The original hash must either be:\n - An EIP-191 hash: keccak256(\"\\x19Ethereum Signed Message:\\n\" || len(someMessage) || someMessage)\n - An EIP-712 hash: keccak256(\"\\x19\\x01\" || someDomainSeparator || hashStruct(someStruct))" + }, + "id": 6541, + "mutability": "constant", + "name": "_MESSAGE_TYPEHASH", + "nameLocation": "1379:17:15", + "nodeType": "VariableDeclaration", + "scope": 6726, + "src": "1354:95:15", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6537, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1354:7:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "4769616e6f536d61727457616c6c65744d6573736167652862797465733332206861736829", + "id": 6539, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1409:39:15", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_37f248f492286ab572e2a1ee0bd5315f2aae54a08b5871b294d657f3a1f1d007", + "typeString": "literal_string \"GianoSmartWalletMessage(bytes32 hash)\"" + }, + "value": "GianoSmartWalletMessage(bytes32 hash)" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_37f248f492286ab572e2a1ee0bd5315f2aae54a08b5871b294d657f3a1f1d007", + "typeString": "literal_string \"GianoSmartWalletMessage(bytes32 hash)\"" + } + ], + "id": 6538, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "1399:9:15", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 6540, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1399:50:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "private" + }, + { + "body": { + "id": 6591, + "nodeType": "Block", + "src": "2491:267:15", + "statements": [ + { + "expression": { + "id": 6562, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6560, + "name": "fields", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6545, + "src": "2501:6:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "0f", + "id": 6561, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "hexString", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2510:7:15", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3d725c5ee53025f027da36bea8d3af3b6a3e9d2d1542d47c162631de48e66c1c", + "typeString": "literal_string hex\"0f\"" + }, + "value": "\u000f" + }, + "src": "2501:16:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "id": 6563, + "nodeType": "ExpressionStatement", + "src": "2501:16:15" + }, + { + "expression": { + "id": 6569, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "components": [ + { + "id": 6564, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6547, + "src": "2541:4:15", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "id": 6565, + "name": "version", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6549, + "src": "2547:7:15", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "id": 6566, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "2540:15:15", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_string_memory_ptr_$_t_string_memory_ptr_$", + "typeString": "tuple(string memory,string memory)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6567, + "name": "_domainNameAndVersion", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6715, + "src": "2558:21:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$_t_string_memory_ptr_$", + "typeString": "function () view returns (string memory,string memory)" + } + }, + "id": 6568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2558:23:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_string_memory_ptr_$_t_string_memory_ptr_$", + "typeString": "tuple(string memory,string memory)" + } + }, + "src": "2540:41:15", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6570, + "nodeType": "ExpressionStatement", + "src": "2540:41:15" + }, + { + "expression": { + "id": 6574, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6571, + "name": "chainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6551, + "src": "2591:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 6572, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "2601:5:15", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 6573, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2607:7:15", + "memberName": "chainid", + "nodeType": "MemberAccess", + "src": "2601:13:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2591:23:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6575, + "nodeType": "ExpressionStatement", + "src": "2591:23:15" + }, + { + "expression": { + "id": 6581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6576, + "name": "verifyingContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6553, + "src": "2624:17:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 6579, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "2652:4:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1271_$6726", + "typeString": "contract ERC1271" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC1271_$6726", + "typeString": "contract ERC1271" + } + ], + "id": 6578, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2644:7:15", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 6577, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2644:7:15", + "typeDescriptions": {} + } + }, + "id": 6580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2644:13:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2624:33:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 6582, + "nodeType": "ExpressionStatement", + "src": "2624:33:15" + }, + { + "expression": { + "id": 6585, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6583, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6555, + "src": "2667:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 6584, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6555, + "src": "2674:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "2667:11:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 6586, + "nodeType": "ExpressionStatement", + "src": "2667:11:15" + }, + { + "expression": { + "id": 6589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6587, + "name": "extensions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6558, + "src": "2705:10:15", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 6588, + "name": "extensions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6558, + "src": "2718:10:15", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "src": "2705:23:15", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 6590, + "nodeType": "ExpressionStatement", + "src": "2705:23:15" + } + ] + }, + "documentation": { + "id": 6542, + "nodeType": "StructuredDocumentation", + "src": "1456:700:15", + "text": "@notice Returns information about the `EIP712Domain` used to create EIP-712 compliant hashes.\n @dev Follows ERC-5267 (see https://eips.ethereum.org/EIPS/eip-5267).\n @return fields The bitmap of used fields.\n @return name The value of the `EIP712Domain.name` field.\n @return version The value of the `EIP712Domain.version` field.\n @return chainId The value of the `EIP712Domain.chainId` field.\n @return verifyingContract The value of the `EIP712Domain.verifyingContract` field.\n @return salt The value of the `EIP712Domain.salt` field.\n @return extensions The list of EIP numbers, that extends EIP-712 with new domain fields." + }, + "functionSelector": "84b0196e", + "id": 6592, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "eip712Domain", + "nameLocation": "2170:12:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6543, + "nodeType": "ParameterList", + "parameters": [], + "src": "2182:2:15" + }, + "returnParameters": { + "id": 6559, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6545, + "mutability": "mutable", + "name": "fields", + "nameLocation": "2268:6:15", + "nodeType": "VariableDeclaration", + "scope": 6592, + "src": "2261:13:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + "typeName": { + "id": 6544, + "name": "bytes1", + "nodeType": "ElementaryTypeName", + "src": "2261:6:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6547, + "mutability": "mutable", + "name": "name", + "nameLocation": "2302:4:15", + "nodeType": "VariableDeclaration", + "scope": 6592, + "src": "2288:18:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6546, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2288:6:15", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6549, + "mutability": "mutable", + "name": "version", + "nameLocation": "2334:7:15", + "nodeType": "VariableDeclaration", + "scope": 6592, + "src": "2320:21:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6548, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2320:6:15", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6551, + "mutability": "mutable", + "name": "chainId", + "nameLocation": "2363:7:15", + "nodeType": "VariableDeclaration", + "scope": 6592, + "src": "2355:15:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6550, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2355:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6553, + "mutability": "mutable", + "name": "verifyingContract", + "nameLocation": "2392:17:15", + "nodeType": "VariableDeclaration", + "scope": 6592, + "src": "2384:25:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6552, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2384:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6555, + "mutability": "mutable", + "name": "salt", + "nameLocation": "2431:4:15", + "nodeType": "VariableDeclaration", + "scope": 6592, + "src": "2423:12:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6554, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2423:7:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6558, + "mutability": "mutable", + "name": "extensions", + "nameLocation": "2466:10:15", + "nodeType": "VariableDeclaration", + "scope": 6592, + "src": "2449:27:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 6556, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2449:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6557, + "nodeType": "ArrayTypeName", + "src": "2449:9:15", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "2247:239:15" + }, + "scope": 6726, + "src": "2161:597:15", + "stateMutability": "view", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 6614, + "nodeType": "Block", + "src": "3501:229:15", + "statements": [ + { + "condition": { + "arguments": [ + { + "arguments": [ + { + "id": 6604, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6595, + "src": "3555:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 6603, + "name": "replaySafeHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6628, + "src": "3540:14:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32) view returns (bytes32)" + } + }, + "id": 6605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3540:20:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 6606, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6597, + "src": "3573:9:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 6602, + "name": "_isValidSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6725, + "src": "3515:17:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_bool_$", + "typeString": "function (bytes32,bytes calldata) view returns (bool)" + } + }, + "id": 6607, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [ + "3534:4:15", + "3562:9:15" + ], + "names": [ + "hash", + "signature" + ], + "nodeType": "FunctionCall", + "src": "3515:69:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6611, + "nodeType": "IfStatement", + "src": "3511:185:15", + "trueBody": { + "id": 6610, + "nodeType": "Block", + "src": "3586:110:15", + "statements": [ + { + "expression": { + "hexValue": "30783136323662613765", + "id": 6608, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3675:10:15", + "typeDescriptions": { + "typeIdentifier": "t_rational_371636862_by_1", + "typeString": "int_const 371636862" + }, + "value": "0x1626ba7e" + }, + "functionReturnParameters": 6601, + "id": 6609, + "nodeType": "Return", + "src": "3668:17:15" + } + ] + } + }, + { + "expression": { + "hexValue": "30786666666666666666", + "id": 6612, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3713:10:15", + "typeDescriptions": { + "typeIdentifier": "t_rational_4294967295_by_1", + "typeString": "int_const 4294967295" + }, + "value": "0xffffffff" + }, + "functionReturnParameters": 6601, + "id": 6613, + "nodeType": "Return", + "src": "3706:17:15" + } + ] + }, + "documentation": { + "id": 6593, + "nodeType": "StructuredDocumentation", + "src": "2764:622:15", + "text": "@notice Validates the `signature` against the given `hash`.\n @dev This implementation follows ERC-1271. See https://eips.ethereum.org/EIPS/eip-1271.\n @dev IMPORTANT: Signature verification is performed on the hash produced AFTER applying the anti\n cross-account-replay layer on the given `hash` (i.e., verification is run on the replay-safe\n hash version).\n @param hash The original hash.\n @param signature The signature of the replay-safe hash to validate.\n @return result `0x1626ba7e` if validation succeeded, else `0xffffffff`." + }, + "functionSelector": "1626ba7e", + "id": 6615, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isValidSignature", + "nameLocation": "3400:16:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6598, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6595, + "mutability": "mutable", + "name": "hash", + "nameLocation": "3425:4:15", + "nodeType": "VariableDeclaration", + "scope": 6615, + "src": "3417:12:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6594, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3417:7:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6597, + "mutability": "mutable", + "name": "signature", + "nameLocation": "3446:9:15", + "nodeType": "VariableDeclaration", + "scope": 6615, + "src": "3431:24:15", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6596, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3431:5:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3416:40:15" + }, + "returnParameters": { + "id": 6601, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6600, + "mutability": "mutable", + "name": "result", + "nameLocation": "3493:6:15", + "nodeType": "VariableDeclaration", + "scope": 6615, + "src": "3486:13:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 6599, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "3486:6:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "3485:15:15" + }, + "scope": 6726, + "src": "3391:339:15", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 6627, + "nodeType": "Block", + "src": "4282:41:15", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 6624, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6618, + "src": "4311:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 6623, + "name": "_eip712Hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6690, + "src": "4299:11:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32) view returns (bytes32)" + } + }, + "id": 6625, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4299:17:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 6622, + "id": 6626, + "nodeType": "Return", + "src": "4292:24:15" + } + ] + }, + "documentation": { + "id": 6616, + "nodeType": "StructuredDocumentation", + "src": "3736:465:15", + "text": "@notice Wrapper around `_eip712Hash()` to produce a replay-safe hash fron the given `hash`.\n @dev The returned EIP-712 compliant replay-safe hash is the result of:\n keccak256(\n \\x19\\x01 ||\n this.domainSeparator ||\n hashStruct(GianoSmartWalletMessage({ hash: `hash`}))\n )\n @param hash The original hash.\n @return The corresponding replay-safe hash." + }, + "functionSelector": "ce1506be", + "id": 6628, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "replaySafeHash", + "nameLocation": "4215:14:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6619, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6618, + "mutability": "mutable", + "name": "hash", + "nameLocation": "4238:4:15", + "nodeType": "VariableDeclaration", + "scope": 6628, + "src": "4230:12:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6617, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4230:7:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4229:14:15" + }, + "returnParameters": { + "id": 6622, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6621, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6628, + "src": "4273:7:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6620, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4273:7:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4272:9:15" + }, + "scope": 6726, + "src": "4206:117:15", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 6668, + "nodeType": "Block", + "src": "4698:418:15", + "statements": [ + { + "assignments": [ + 6635, + 6637 + ], + "declarations": [ + { + "constant": false, + "id": 6635, + "mutability": "mutable", + "name": "name", + "nameLocation": "4723:4:15", + "nodeType": "VariableDeclaration", + "scope": 6668, + "src": "4709:18:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6634, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4709:6:15", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6637, + "mutability": "mutable", + "name": "version", + "nameLocation": "4743:7:15", + "nodeType": "VariableDeclaration", + "scope": 6668, + "src": "4729:21:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6636, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4729:6:15", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "id": 6640, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6638, + "name": "_domainNameAndVersion", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6715, + "src": "4754:21:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$_t_string_memory_ptr_$", + "typeString": "function () view returns (string memory,string memory)" + } + }, + "id": 6639, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4754:23:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_string_memory_ptr_$_t_string_memory_ptr_$", + "typeString": "tuple(string memory,string memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4708:69:15" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "hexValue": "454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429", + "id": 6645, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4855:84:15", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f", + "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"" + }, + "value": "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f", + "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"" + } + ], + "id": 6644, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "4845:9:15", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 6646, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4845:95:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "id": 6650, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6635, + "src": "4974:4:15", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 6649, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4968:5:15", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 6648, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4968:5:15", + "typeDescriptions": {} + } + }, + "id": 6651, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4968:11:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 6647, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "4958:9:15", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 6652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4958:22:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "id": 6656, + "name": "version", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6637, + "src": "5014:7:15", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 6655, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5008:5:15", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 6654, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5008:5:15", + "typeDescriptions": {} + } + }, + "id": 6657, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5008:14:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 6653, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "4998:9:15", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 6658, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4998:25:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 6659, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "5041:5:15", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 6660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5047:7:15", + "memberName": "chainid", + "nodeType": "MemberAccess", + "src": "5041:13:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 6663, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "5080:4:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1271_$6726", + "typeString": "contract ERC1271" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC1271_$6726", + "typeString": "contract ERC1271" + } + ], + "id": 6662, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5072:7:15", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 6661, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5072:7:15", + "typeDescriptions": {} + } + }, + "id": 6664, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5072:13:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 6642, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "4817:3:15", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 6643, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4821:6:15", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "4817:10:15", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 6665, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4817:282:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 6641, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "4794:9:15", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 6666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4794:315:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 6633, + "id": 6667, + "nodeType": "Return", + "src": "4787:322:15" + } + ] + }, + "documentation": { + "id": 6629, + "nodeType": "StructuredDocumentation", + "src": "4329:307:15", + "text": "@notice Returns the `domainSeparator` used to create EIP-712 compliant hashes.\n @dev Implements domainSeparator = hashStruct(eip712Domain).\n See https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator.\n @return The 32 bytes domain separator result." + }, + "functionSelector": "f698da25", + "id": 6669, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "domainSeparator", + "nameLocation": "4650:15:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6630, + "nodeType": "ParameterList", + "parameters": [], + "src": "4665:2:15" + }, + "returnParameters": { + "id": 6633, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6632, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6669, + "src": "4689:7:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6631, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4689:7:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4688:9:15" + }, + "scope": 6726, + "src": "4641:475:15", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 6689, + "nodeType": "Block", + "src": "5665:101:15", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "1901", + "id": 6680, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5709:10:15", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541", + "typeString": "literal_string hex\"1901\"" + }, + "value": "\u0019\u0001" + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6681, + "name": "domainSeparator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6669, + "src": "5721:15:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$", + "typeString": "function () view returns (bytes32)" + } + }, + "id": 6682, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5721:17:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "id": 6684, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6672, + "src": "5752:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 6683, + "name": "_hashStruct", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6707, + "src": "5740:11:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32) view returns (bytes32)" + } + }, + "id": 6685, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5740:17:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541", + "typeString": "literal_string hex\"1901\"" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 6678, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "5692:3:15", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 6679, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "5696:12:15", + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "5692:16:15", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 6686, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5692:66:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 6677, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "5682:9:15", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 6687, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5682:77:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 6676, + "id": 6688, + "nodeType": "Return", + "src": "5675:84:15" + } + ] + }, + "documentation": { + "id": 6670, + "nodeType": "StructuredDocumentation", + "src": "5546:39:15", + "text": "@return The resulting EIP-712 hash." + }, + "id": 6690, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_eip712Hash", + "nameLocation": "5599:11:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6673, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6672, + "mutability": "mutable", + "name": "hash", + "nameLocation": "5619:4:15", + "nodeType": "VariableDeclaration", + "scope": 6690, + "src": "5611:12:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6671, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5611:7:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5610:14:15" + }, + "returnParameters": { + "id": 6676, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6675, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6690, + "src": "5656:7:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6674, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5656:7:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5655:9:15" + }, + "scope": 6726, + "src": "5590:176:15", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 6706, + "nodeType": "Block", + "src": "6284:70:15", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 6701, + "name": "_MESSAGE_TYPEHASH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6541, + "src": "6322:17:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 6702, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6693, + "src": "6341:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 6699, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "6311:3:15", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 6700, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6315:6:15", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "6311:10:15", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 6703, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6311:35:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 6698, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "6301:9:15", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 6704, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6301:46:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 6697, + "id": 6705, + "nodeType": "Return", + "src": "6294:53:15" + } + ] + }, + "documentation": { + "id": 6691, + "nodeType": "StructuredDocumentation", + "src": "5772:432:15", + "text": "@notice Returns the EIP-712 `hashStruct` result of the `GianoSmartWalletMessage(bytes32 hash)` data\n structure.\n @dev Implements hashStruct(s : 𝕊) = keccak256(typeHash || encodeData(s)).\n @dev See https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct.\n @param hash The `GianoSmartWalletMessage.hash` field.\n @return The EIP-712 `hashStruct` result." + }, + "id": 6707, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_hashStruct", + "nameLocation": "6218:11:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6694, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6693, + "mutability": "mutable", + "name": "hash", + "nameLocation": "6238:4:15", + "nodeType": "VariableDeclaration", + "scope": 6707, + "src": "6230:12:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6692, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6230:7:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "6229:14:15" + }, + "returnParameters": { + "id": 6697, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6696, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6707, + "src": "6275:7:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6695, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6275:7:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "6274:9:15" + }, + "scope": 6726, + "src": "6209:145:15", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "documentation": { + "id": 6708, + "nodeType": "StructuredDocumentation", + "src": "6360:295:15", + "text": "@notice Returns the domain name and version to use when creating EIP-712 signatures.\n @dev MUST be defined by the implementation.\n @return name The user readable name of signing domain.\n @return version The current major version of the signing domain." + }, + "id": 6715, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "_domainNameAndVersion", + "nameLocation": "6669:21:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6709, + "nodeType": "ParameterList", + "parameters": [], + "src": "6690:2:15" + }, + "returnParameters": { + "id": 6714, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6711, + "mutability": "mutable", + "name": "name", + "nameLocation": "6738:4:15", + "nodeType": "VariableDeclaration", + "scope": 6715, + "src": "6724:18:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6710, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "6724:6:15", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6713, + "mutability": "mutable", + "name": "version", + "nameLocation": "6758:7:15", + "nodeType": "VariableDeclaration", + "scope": 6715, + "src": "6744:21:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6712, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "6744:6:15", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "6723:43:15" + }, + "scope": 6726, + "src": "6660:107:15", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "documentation": { + "id": 6716, + "nodeType": "StructuredDocumentation", + "src": "6773:339:15", + "text": "@notice Validates the `signature` against the given `hash`.\n @dev MUST be defined by the implementation.\n @param hash The hash whose signature has been performed on.\n @param signature The signature associated with `hash`.\n @return `true` is the signature is valid, else `false`." + }, + "id": 6725, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "_isValidSignature", + "nameLocation": "7126:17:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6721, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6718, + "mutability": "mutable", + "name": "hash", + "nameLocation": "7152:4:15", + "nodeType": "VariableDeclaration", + "scope": 6725, + "src": "7144:12:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6717, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7144:7:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6720, + "mutability": "mutable", + "name": "signature", + "nameLocation": "7173:9:15", + "nodeType": "VariableDeclaration", + "scope": 6725, + "src": "7158:24:15", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6719, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7158:5:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "7143:40:15" + }, + "returnParameters": { + "id": 6724, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6723, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6725, + "src": "7215:4:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6722, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7215:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "7214:6:15" + }, + "scope": 6726, + "src": "7117:104:15", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 6727, + "src": "908:6315:15", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "32:7192:15" + }, + "id": 15 + }, + "src/GianoSmartWallet.sol": { + "ast": { + "absolutePath": "src/GianoSmartWallet.sol", + "exportedSymbols": { + "AuthenticatedStaticCaller": [ + 6532 + ], + "ERC1271": [ + 6726 + ], + "GianoSmartWallet": [ + 7398 + ], + "IAccount": [ + 552 + ], + "MultiOwnable": [ + 8101 + ], + "PackedUserOperation": [ + 574 + ], + "Receiver": [ + 2459 + ], + "SignatureCheckerLib": [ + 6365 + ], + "UUPSUpgradeable": [ + 6422 + ], + "UserOperationLib": [ + 535 + ], + "WebAuthn": [ + 8478 + ] + }, + "id": 7399, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6728, + "literals": [ + "solidity", + "0.8", + ".28" + ], + "nodeType": "PragmaDirective", + "src": "32:23:16" + }, + { + "absolutePath": "@account-abstraction/contracts/interfaces/IAccount.sol", + "file": "@account-abstraction/contracts/interfaces/IAccount.sol", + "id": 6730, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7399, + "sourceUnit": 553, + "src": "57:80:16", + "symbolAliases": [ + { + "foreign": { + "id": 6729, + "name": "IAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 552, + "src": "65:8:16", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@account-abstraction/contracts/interfaces/PackedUserOperation.sol", + "file": "@account-abstraction/contracts/interfaces/PackedUserOperation.sol", + "id": 6732, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7399, + "sourceUnit": 575, + "src": "139:102:16", + "symbolAliases": [ + { + "foreign": { + "id": 6731, + "name": "PackedUserOperation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 574, + "src": "147:19:16", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@account-abstraction/contracts/core/UserOperationLib.sol", + "file": "@account-abstraction/contracts/core/UserOperationLib.sol", + "id": 6734, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7399, + "sourceUnit": 536, + "src": "242:90:16", + "symbolAliases": [ + { + "foreign": { + "id": 6733, + "name": "UserOperationLib", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 535, + "src": "250:16:16", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "solady/accounts/Receiver.sol", + "file": "solady/accounts/Receiver.sol", + "id": 6736, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7399, + "sourceUnit": 2460, + "src": "333:54:16", + "symbolAliases": [ + { + "foreign": { + "id": 6735, + "name": "Receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2459, + "src": "341:8:16", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "solady/utils/SignatureCheckerLib.sol", + "file": "solady/utils/SignatureCheckerLib.sol", + "id": 6738, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7399, + "sourceUnit": 6366, + "src": "388:73:16", + "symbolAliases": [ + { + "foreign": { + "id": 6737, + "name": "SignatureCheckerLib", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6365, + "src": "396:19:16", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "solady/utils/UUPSUpgradeable.sol", + "file": "solady/utils/UUPSUpgradeable.sol", + "id": 6740, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7399, + "sourceUnit": 6423, + "src": "462:65:16", + "symbolAliases": [ + { + "foreign": { + "id": 6739, + "name": "UUPSUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6422, + "src": "470:15:16", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "webauthn-sol/WebAuthn.sol", + "file": "webauthn-sol/WebAuthn.sol", + "id": 6742, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7399, + "sourceUnit": 8479, + "src": "528:51:16", + "symbolAliases": [ + { + "foreign": { + "id": 6741, + "name": "WebAuthn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8478, + "src": "536:8:16", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/AuthenticatedStaticCaller.sol", + "file": "./AuthenticatedStaticCaller.sol", + "id": 6744, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7399, + "sourceUnit": 6533, + "src": "580:74:16", + "symbolAliases": [ + { + "foreign": { + "id": 6743, + "name": "AuthenticatedStaticCaller", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6532, + "src": "588:25:16", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/ERC1271.sol", + "file": "./ERC1271.sol", + "id": 6746, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7399, + "sourceUnit": 6727, + "src": "656:38:16", + "symbolAliases": [ + { + "foreign": { + "id": 6745, + "name": "ERC1271", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6726, + "src": "664:7:16", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/MultiOwnable.sol", + "file": "./MultiOwnable.sol", + "id": 6748, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7399, + "sourceUnit": 8102, + "src": "695:48:16", + "symbolAliases": [ + { + "foreign": { + "id": 6747, + "name": "MultiOwnable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8101, + "src": "703:12:16", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 6750, + "name": "ERC1271", + "nameLocations": [ + "1224:7:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6726, + "src": "1224:7:16" + }, + "id": 6751, + "nodeType": "InheritanceSpecifier", + "src": "1224:7:16" + }, + { + "baseName": { + "id": 6752, + "name": "IAccount", + "nameLocations": [ + "1233:8:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 552, + "src": "1233:8:16" + }, + "id": 6753, + "nodeType": "InheritanceSpecifier", + "src": "1233:8:16" + }, + { + "baseName": { + "id": 6754, + "name": "MultiOwnable", + "nameLocations": [ + "1243:12:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 8101, + "src": "1243:12:16" + }, + "id": 6755, + "nodeType": "InheritanceSpecifier", + "src": "1243:12:16" + }, + { + "baseName": { + "id": 6756, + "name": "UUPSUpgradeable", + "nameLocations": [ + "1257:15:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6422, + "src": "1257:15:16" + }, + "id": 6757, + "nodeType": "InheritanceSpecifier", + "src": "1257:15:16" + }, + { + "baseName": { + "id": 6758, + "name": "Receiver", + "nameLocations": [ + "1274:8:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2459, + "src": "1274:8:16" + }, + "id": 6759, + "nodeType": "InheritanceSpecifier", + "src": "1274:8:16" + }, + { + "baseName": { + "id": 6760, + "name": "AuthenticatedStaticCaller", + "nameLocations": [ + "1284:25:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6532, + "src": "1284:25:16" + }, + "id": 6761, + "nodeType": "InheritanceSpecifier", + "src": "1284:25:16" + } + ], + "canonicalName": "GianoSmartWallet", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 6749, + "nodeType": "StructuredDocumentation", + "src": "745:450:16", + "text": "@title Giano Smart Wallet\n @notice ERC-4337-compatible smart account, based on Solady's ERC4337 account implementation\n with inspiration from Alchemy's LightAccount and Daimo's DaimoAccount.\n @author Applied Blockchain (https://github.com/appliedblockchain/giano)\n @author Coinbase (https://github.com/coinbase/smart-wallet)\n @author Solady (https://github.com/vectorized/solady/blob/main/src/accounts/ERC4337.sol)" + }, + "fullyImplemented": true, + "id": 7398, + "internalFunctionIDs": { + "6421": 1 + }, + "linearizedBaseContracts": [ + 7398, + 6532, + 2459, + 6422, + 2583, + 8101, + 552, + 6726 + ], + "name": "GianoSmartWallet", + "nameLocation": "1204:16:16", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "GianoSmartWallet.SignatureWrapper", + "documentation": { + "id": 6762, + "nodeType": "StructuredDocumentation", + "src": "1316:126:16", + "text": "@notice A wrapper struct used for signature validation so that callers\n can identify the owner that signed." + }, + "id": 6769, + "members": [ + { + "constant": false, + "id": 6765, + "mutability": "mutable", + "name": "ownerBytes", + "nameLocation": "1599:10:16", + "nodeType": "VariableDeclaration", + "scope": 6769, + "src": "1593:16:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6764, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1593:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6768, + "mutability": "mutable", + "name": "signatureData", + "nameLocation": "1818:13:16", + "nodeType": "VariableDeclaration", + "scope": 6769, + "src": "1812:19:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6767, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1812:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "name": "SignatureWrapper", + "nameLocation": "1454:16:16", + "nodeType": "StructDefinition", + "scope": 7398, + "src": "1447:391:16", + "visibility": "public" + }, + { + "canonicalName": "GianoSmartWallet.Call", + "documentation": { + "id": 6770, + "nodeType": "StructuredDocumentation", + "src": "1844:38:16", + "text": "@notice Represents a call to make." + }, + "id": 6780, + "members": [ + { + "constant": false, + "id": 6773, + "mutability": "mutable", + "name": "target", + "nameLocation": "1955:6:16", + "nodeType": "VariableDeclaration", + "scope": 6780, + "src": "1947:14:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6772, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1947:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6776, + "mutability": "mutable", + "name": "value", + "nameLocation": "2036:5:16", + "nodeType": "VariableDeclaration", + "scope": 6780, + "src": "2028:13:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6775, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2028:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6779, + "mutability": "mutable", + "name": "data", + "nameLocation": "2096:4:16", + "nodeType": "VariableDeclaration", + "scope": 6780, + "src": "2090:10:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6778, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2090:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "name": "Call", + "nameLocation": "1894:4:16", + "nodeType": "StructDefinition", + "scope": 7398, + "src": "1887:220:16", + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 6781, + "nodeType": "StructuredDocumentation", + "src": "2113:495:16", + "text": "@notice Reserved nonce key (upper 192 bits of `UserOperation.nonce`) for cross-chain replayable\n transactions.\n @dev MUST BE the `UserOperation.nonce` key when `UserOperation.calldata` is calling\n `executeWithoutChainIdValidation`and MUST NOT BE `UserOperation.nonce` key when `UserOperation.calldata` is\n NOT calling `executeWithoutChainIdValidation`.\n @dev Helps enforce sequential sequencing of replayable transactions." + }, + "functionSelector": "88ce4c7c", + "id": 6784, + "mutability": "constant", + "name": "REPLAYABLE_NONCE_KEY", + "nameLocation": "2637:20:16", + "nodeType": "VariableDeclaration", + "scope": 7398, + "src": "2613:51:16", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6782, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2613:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "38343533", + "id": 6783, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2660:4:16", + "typeDescriptions": { + "typeIdentifier": "t_rational_8453_by_1", + "typeString": "int_const 8453" + }, + "value": "8453" + }, + "visibility": "public" + }, + { + "documentation": { + "id": 6785, + "nodeType": "StructuredDocumentation", + "src": "2671:98:16", + "text": "@notice Thrown when `initialize` is called but the account already has had at least one owner." + }, + "errorSelector": "5daa87a0", + "id": 6787, + "name": "Initialized", + "nameLocation": "2780:11:16", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6786, + "nodeType": "ParameterList", + "parameters": [], + "src": "2791:2:16" + }, + "src": "2774:20:16" + }, + { + "documentation": { + "id": 6788, + "nodeType": "StructuredDocumentation", + "src": "2800:201:16", + "text": "@notice Thrown when a call is passed to `executeWithoutChainIdValidation` that is not allowed by\n `canSkipChainIdValidation`\n @param selector The selector of the call." + }, + "errorSelector": "3b06e146", + "id": 6792, + "name": "SelectorNotAllowed", + "nameLocation": "3012:18:16", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6791, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6790, + "mutability": "mutable", + "name": "selector", + "nameLocation": "3038:8:16", + "nodeType": "VariableDeclaration", + "scope": 6792, + "src": "3031:15:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 6789, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "3031:6:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "3030:17:16" + }, + "src": "3006:42:16" + }, + { + "documentation": { + "id": 6793, + "nodeType": "StructuredDocumentation", + "src": "3054:374:16", + "text": "@notice Thrown in validateUserOp if the key of `UserOperation.nonce` does not match the calldata.\n @dev Calls to `this.executeWithoutChainIdValidation` MUST use `REPLAYABLE_NONCE_KEY` and\n calls NOT to `this.executeWithoutChainIdValidation` MUST NOT use `REPLAYABLE_NONCE_KEY`.\n @param key The invalid `UserOperation.nonce` key." + }, + "errorSelector": "2ef37813", + "id": 6797, + "name": "InvalidNonceKey", + "nameLocation": "3439:15:16", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6796, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6795, + "mutability": "mutable", + "name": "key", + "nameLocation": "3463:3:16", + "nodeType": "VariableDeclaration", + "scope": 6797, + "src": "3455:11:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6794, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3455:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3454:13:16" + }, + "src": "3433:35:16" + }, + { + "documentation": { + "id": 6798, + "nodeType": "StructuredDocumentation", + "src": "3474:179:16", + "text": "@notice Thrown when an upgrade is attempted to an implementation that does not exist.\n @param implementation The address of the implementation that has no code." + }, + "errorSelector": "0c760937", + "id": 6802, + "name": "InvalidImplementation", + "nameLocation": "3664:21:16", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6801, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6800, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "3694:14:16", + "nodeType": "VariableDeclaration", + "scope": 6802, + "src": "3686:22:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6799, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3686:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3685:24:16" + }, + "src": "3658:52:16" + }, + { + "body": { + "id": 6816, + "nodeType": "Block", + "src": "3811:106:16", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 6809, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 6805, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "3825:3:16", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 6806, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3829:6:16", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "3825:10:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6807, + "name": "entryPoint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7148, + "src": "3839:10:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 6808, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3839:12:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3825:26:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6814, + "nodeType": "IfStatement", + "src": "3821:78:16", + "trueBody": { + "id": 6813, + "nodeType": "Block", + "src": "3853:46:16", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6810, + "name": "Unauthorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7593, + "src": "3874:12:16", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" + } + }, + "id": 6811, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3874:14:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 6812, + "nodeType": "RevertStatement", + "src": "3867:21:16" + } + ] + } + }, + { + "id": 6815, + "nodeType": "PlaceholderStatement", + "src": "3909:1:16" + } + ] + }, + "documentation": { + "id": 6803, + "nodeType": "StructuredDocumentation", + "src": "3716:56:16", + "text": "@notice Reverts if the caller is not the EntryPoint." + }, + "id": 6817, + "name": "onlyEntryPoint", + "nameLocation": "3786:14:16", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 6804, + "nodeType": "ParameterList", + "parameters": [], + "src": "3800:2:16" + }, + "src": "3777:140:16", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 6831, + "nodeType": "Block", + "src": "4064:98:16", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 6824, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 6820, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4078:3:16", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 6821, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4082:6:16", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "4078:10:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6822, + "name": "entryPoint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7148, + "src": "4092:10:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 6823, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4092:12:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4078:26:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6829, + "nodeType": "IfStatement", + "src": "4074:70:16", + "trueBody": { + "id": 6828, + "nodeType": "Block", + "src": "4106:38:16", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6825, + "name": "_checkOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8091, + "src": "4120:11:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$__$", + "typeString": "function () view" + } + }, + "id": 6826, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4120:13:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6827, + "nodeType": "ExpressionStatement", + "src": "4120:13:16" + } + ] + } + }, + { + "id": 6830, + "nodeType": "PlaceholderStatement", + "src": "4154:1:16" + } + ] + }, + "documentation": { + "id": 6818, + "nodeType": "StructuredDocumentation", + "src": "3923:95:16", + "text": "@notice Reverts if the caller is neither the EntryPoint, the owner, nor the account itself." + }, + "id": 6832, + "name": "onlyEntryPointOrOwner", + "nameLocation": "4032:21:16", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 6819, + "nodeType": "ParameterList", + "parameters": [], + "src": "4053:2:16" + }, + "src": "4023:139:16", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 6839, + "nodeType": "Block", + "src": "4823:303:16", + "statements": [ + { + "id": 6837, + "nodeType": "PlaceholderStatement", + "src": "4833:1:16" + }, + { + "AST": { + "nativeSrc": "4870:250:16", + "nodeType": "YulBlock", + "src": "4870:250:16", + "statements": [ + { + "body": { + "nativeSrc": "4907:203:16", + "nodeType": "YulBlock", + "src": "4907:203:16", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "5022:3:16", + "nodeType": "YulIdentifier", + "src": "5022:3:16" + }, + "nativeSrc": "5022:5:16", + "nodeType": "YulFunctionCall", + "src": "5022:5:16" + }, + { + "arguments": [], + "functionName": { + "name": "caller", + "nativeSrc": "5029:6:16", + "nodeType": "YulIdentifier", + "src": "5029:6:16" + }, + "nativeSrc": "5029:8:16", + "nodeType": "YulFunctionCall", + "src": "5029:8:16" + }, + { + "name": "missingAccountFunds", + "nativeSrc": "5039:19:16", + "nodeType": "YulIdentifier", + "src": "5039:19:16" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "5060:8:16", + "nodeType": "YulIdentifier", + "src": "5060:8:16" + }, + "nativeSrc": "5060:10:16", + "nodeType": "YulFunctionCall", + "src": "5060:10:16" + }, + { + "kind": "number", + "nativeSrc": "5072:4:16", + "nodeType": "YulLiteral", + "src": "5072:4:16", + "type": "", + "value": "0x00" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "5078:8:16", + "nodeType": "YulIdentifier", + "src": "5078:8:16" + }, + "nativeSrc": "5078:10:16", + "nodeType": "YulFunctionCall", + "src": "5078:10:16" + }, + { + "kind": "number", + "nativeSrc": "5090:4:16", + "nodeType": "YulLiteral", + "src": "5090:4:16", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "call", + "nativeSrc": "5017:4:16", + "nodeType": "YulIdentifier", + "src": "5017:4:16" + }, + "nativeSrc": "5017:78:16", + "nodeType": "YulFunctionCall", + "src": "5017:78:16" + } + ], + "functionName": { + "name": "pop", + "nativeSrc": "5013:3:16", + "nodeType": "YulIdentifier", + "src": "5013:3:16" + }, + "nativeSrc": "5013:83:16", + "nodeType": "YulFunctionCall", + "src": "5013:83:16" + }, + "nativeSrc": "5013:83:16", + "nodeType": "YulExpressionStatement", + "src": "5013:83:16" + } + ] + }, + "condition": { + "name": "missingAccountFunds", + "nativeSrc": "4887:19:16", + "nodeType": "YulIdentifier", + "src": "4887:19:16" + }, + "nativeSrc": "4884:226:16", + "nodeType": "YulIf", + "src": "4884:226:16" + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6835, + "isOffset": false, + "isSlot": false, + "src": "4887:19:16", + "valueSize": 1 + }, + { + "declaration": 6835, + "isOffset": false, + "isSlot": false, + "src": "5039:19:16", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 6838, + "nodeType": "InlineAssembly", + "src": "4845:275:16" + } + ] + }, + "documentation": { + "id": 6833, + "nodeType": "StructuredDocumentation", + "src": "4168:593:16", + "text": "@notice Sends to the EntryPoint (i.e. `msg.sender`) the missing funds for this transaction.\n @dev Subclass MAY override this modifier for better funds management (e.g. send to the\n EntryPoint more than the minimum required, so that in future transactions it will not\n be required to send again).\n @param missingAccountFunds The minimum value this modifier should send the EntryPoint which\n MAY be zero, in case there is enough deposit, or the userOp has a\n paymaster." + }, + "id": 6840, + "name": "payPrefund", + "nameLocation": "4775:10:16", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 6836, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6835, + "mutability": "mutable", + "name": "missingAccountFunds", + "nameLocation": "4794:19:16", + "nodeType": "VariableDeclaration", + "scope": 6840, + "src": "4786:27:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6834, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4786:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4785:29:16" + }, + "src": "4766:360:16", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 6870, + "nodeType": "Block", + "src": "5146:243:16", + "statements": [ + { + "assignments": [ + 6847 + ], + "declarations": [ + { + "constant": false, + "id": 6847, + "mutability": "mutable", + "name": "owners", + "nameLocation": "5280:6:16", + "nodeType": "VariableDeclaration", + "scope": 6870, + "src": "5265:21:16", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 6845, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5265:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 6846, + "nodeType": "ArrayTypeName", + "src": "5265:7:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + } + ], + "id": 6853, + "initialValue": { + "arguments": [ + { + "hexValue": "31", + "id": 6851, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5301:1:16", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "id": 6850, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "5289:11:16", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (bytes memory[] memory)" + }, + "typeName": { + "baseType": { + "id": 6848, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5293:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 6849, + "nodeType": "ArrayTypeName", + "src": "5293:7:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + } + }, + "id": 6852, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5289:14:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5265:38:16" + }, + { + "expression": { + "id": 6864, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 6854, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6847, + "src": "5313:6:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + "id": 6856, + "indexExpression": { + "hexValue": "30", + "id": 6855, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5320:1:16", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5313:9:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 6861, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5344:1:16", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 6860, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5336:7:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 6859, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5336:7:16", + "typeDescriptions": {} + } + }, + "id": 6862, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5336:10:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 6857, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "5325:3:16", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 6858, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "5329:6:16", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "5325:10:16", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 6863, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5325:22:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "src": "5313:34:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 6865, + "nodeType": "ExpressionStatement", + "src": "5313:34:16" + }, + { + "expression": { + "arguments": [ + { + "id": 6867, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6847, + "src": "5375:6:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + ], + "id": 6866, + "name": "_initializeOwners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7956, + "src": "5357:17:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$__$", + "typeString": "function (bytes memory[] memory)" + } + }, + "id": 6868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5357:25:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6869, + "nodeType": "ExpressionStatement", + "src": "5357:25:16" + } + ] + }, + "id": 6871, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6841, + "nodeType": "ParameterList", + "parameters": [], + "src": "5143:2:16" + }, + "returnParameters": { + "id": 6842, + "nodeType": "ParameterList", + "parameters": [], + "src": "5146:0:16" + }, + "scope": 7398, + "src": "5132:257:16", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 6891, + "nodeType": "Block", + "src": "5856:124:16", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6881, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6878, + "name": "nextOwnerIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7830, + "src": "5870:14:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 6879, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5870:16:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 6880, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5890:1:16", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5870:21:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6886, + "nodeType": "IfStatement", + "src": "5866:72:16", + "trueBody": { + "id": 6885, + "nodeType": "Block", + "src": "5893:45:16", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6882, + "name": "Initialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6787, + "src": "5914:11:16", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" + } + }, + "id": 6883, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5914:13:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 6884, + "nodeType": "RevertStatement", + "src": "5907:20:16" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 6888, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6875, + "src": "5966:6:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + ], + "id": 6887, + "name": "_initializeOwners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7956, + "src": "5948:17:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$__$", + "typeString": "function (bytes memory[] memory)" + } + }, + "id": 6889, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5948:25:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6890, + "nodeType": "ExpressionStatement", + "src": "5948:25:16" + } + ] + }, + "documentation": { + "id": 6872, + "nodeType": "StructuredDocumentation", + "src": "5395:386:16", + "text": "@notice Initializes the account with the `owners`.\n @dev Reverts if the account has had at least one owner, i.e. has been initialized.\n @param owners Array of initial owners for this account. Each item should be\n an ABI encoded Ethereum address, i.e. 32 bytes with 12 leading 0 bytes,\n or a 64 byte public key." + }, + "functionSelector": "6f2de70e", + "id": 6892, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initialize", + "nameLocation": "5795:10:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6876, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6875, + "mutability": "mutable", + "name": "owners", + "nameLocation": "5823:6:16", + "nodeType": "VariableDeclaration", + "scope": 6892, + "src": "5806:23:16", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 6873, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5806:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 6874, + "nodeType": "ArrayTypeName", + "src": "5806:7:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + } + ], + "src": "5805:25:16" + }, + "returnParameters": { + "id": 6877, + "nodeType": "ParameterList", + "parameters": [], + "src": "5856:0:16" + }, + "scope": 7398, + "src": "5786:194:16", + "stateMutability": "payable", + "virtual": true, + "visibility": "external" + }, + { + "baseFunctions": [ + 551 + ], + "body": { + "id": 7027, + "nodeType": "Block", + "src": "7522:1461:16", + "statements": [ + { + "assignments": [ + 6911 + ], + "declarations": [ + { + "constant": false, + "id": 6911, + "mutability": "mutable", + "name": "key", + "nameLocation": "7540:3:16", + "nodeType": "VariableDeclaration", + "scope": 7027, + "src": "7532:11:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6910, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7532:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 6916, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6915, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 6912, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6896, + "src": "7546:6:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + }, + "id": 6913, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7553:5:16", + "memberName": "nonce", + "nodeType": "MemberAccess", + "referencedDeclaration": 559, + "src": "7546:12:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "3634", + "id": 6914, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7562:2:16", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "7546:18:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7532:32:16" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 6925, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "expression": { + "id": 6919, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6896, + "src": "7586:6:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + }, + "id": 6920, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7593:8:16", + "memberName": "callData", + "nodeType": "MemberAccess", + "referencedDeclaration": 563, + "src": "7586:15:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 6918, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7579:6:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes4_$", + "typeString": "type(bytes4)" + }, + "typeName": { + "id": 6917, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "7579:6:16", + "typeDescriptions": {} + } + }, + "id": 6921, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7579:23:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "expression": { + "id": 6922, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "7606:4:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + } + }, + "id": 6923, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7611:31:16", + "memberName": "executeWithoutChainIdValidation", + "nodeType": "MemberAccess", + "referencedDeclaration": 7082, + "src": "7606:36:16", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$__$", + "typeString": "function (bytes memory[] memory) payable external" + } + }, + "id": 6924, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "7643:8:16", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "7606:45:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "7579:72:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 7014, + "nodeType": "Block", + "src": "8656:117:16", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7007, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7005, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6911, + "src": "8674:3:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 7006, + "name": "REPLAYABLE_NONCE_KEY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6784, + "src": "8681:20:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8674:27:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7013, + "nodeType": "IfStatement", + "src": "8670:93:16", + "trueBody": { + "id": 7012, + "nodeType": "Block", + "src": "8703:60:16", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 7009, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6911, + "src": "8744:3:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7008, + "name": "InvalidNonceKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6797, + "src": "8728:15:16", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$_t_error_$", + "typeString": "function (uint256) pure returns (error)" + } + }, + "id": 7010, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8728:20:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 7011, + "nodeType": "RevertStatement", + "src": "8721:27:16" + } + ] + } + } + ] + }, + "id": 7015, + "nodeType": "IfStatement", + "src": "7575:1198:16", + "trueBody": { + "id": 7004, + "nodeType": "Block", + "src": "7653:997:16", + "statements": [ + { + "expression": { + "id": 6930, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6926, + "name": "userOpHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6898, + "src": "7667:10:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 6928, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6896, + "src": "7708:6:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + ], + "id": 6927, + "name": "getUserOpHashWithoutChainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7170, + "src": "7680:27:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_PackedUserOperation_$574_calldata_ptr_$returns$_t_bytes32_$", + "typeString": "function (struct PackedUserOperation calldata) view returns (bytes32)" + } + }, + "id": 6929, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7680:35:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "7667:48:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 6931, + "nodeType": "ExpressionStatement", + "src": "7667:48:16" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6934, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6932, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6911, + "src": "7733:3:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 6933, + "name": "REPLAYABLE_NONCE_KEY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6784, + "src": "7740:20:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7733:27:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6940, + "nodeType": "IfStatement", + "src": "7729:93:16", + "trueBody": { + "id": 6939, + "nodeType": "Block", + "src": "7762:60:16", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 6936, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6911, + "src": "7803:3:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6935, + "name": "InvalidNonceKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6797, + "src": "7787:15:16", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$_t_error_$", + "typeString": "function (uint256) pure returns (error)" + } + }, + "id": 6937, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7787:20:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 6938, + "nodeType": "RevertStatement", + "src": "7780:27:16" + } + ] + } + }, + { + "assignments": [ + 6945 + ], + "declarations": [ + { + "constant": false, + "id": 6945, + "mutability": "mutable", + "name": "calls", + "nameLocation": "7940:5:16", + "nodeType": "VariableDeclaration", + "scope": 7004, + "src": "7925:20:16", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 6943, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7925:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 6944, + "nodeType": "ArrayTypeName", + "src": "7925:7:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + } + ], + "id": 6957, + "initialValue": { + "arguments": [ + { + "baseExpression": { + "expression": { + "id": 6948, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6896, + "src": "7959:6:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + }, + "id": 6949, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7966:8:16", + "memberName": "callData", + "nodeType": "MemberAccess", + "referencedDeclaration": 563, + "src": "7959:15:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 6951, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexRangeAccess", + "src": "7959:19:16", + "startExpression": { + "hexValue": "34", + "id": 6950, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7975:1:16", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr_slice", + "typeString": "bytes calldata slice" + } + }, + { + "components": [ + { + "baseExpression": { + "id": 6953, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7981:5:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 6952, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7981:5:16", + "typeDescriptions": {} + } + }, + "id": 6954, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7981:7:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$", + "typeString": "type(bytes memory[] memory)" + } + } + ], + "id": 6955, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7980:9:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$", + "typeString": "type(bytes memory[] memory)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr_slice", + "typeString": "bytes calldata slice" + }, + { + "typeIdentifier": "t_type$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$", + "typeString": "type(bytes memory[] memory)" + } + ], + "expression": { + "id": 6946, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "7948:3:16", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 6947, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "7952:6:16", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "7948:10:16", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 6956, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7948:42:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7925:65:16" + }, + { + "body": { + "id": 7002, + "nodeType": "Block", + "src": "8043:597:16", + "statements": [ + { + "assignments": [ + 6969 + ], + "declarations": [ + { + "constant": false, + "id": 6969, + "mutability": "mutable", + "name": "callData", + "nameLocation": "8074:8:16", + "nodeType": "VariableDeclaration", + "scope": 7002, + "src": "8061:21:16", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6968, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8061:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 6973, + "initialValue": { + "baseExpression": { + "id": 6970, + "name": "calls", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6945, + "src": "8085:5:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + "id": 6972, + "indexExpression": { + "id": 6971, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6959, + "src": "8091:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8085:8:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8061:32:16" + }, + { + "assignments": [ + 6975 + ], + "declarations": [ + { + "constant": false, + "id": 6975, + "mutability": "mutable", + "name": "selector", + "nameLocation": "8118:8:16", + "nodeType": "VariableDeclaration", + "scope": 7002, + "src": "8111:15:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 6974, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "8111:6:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "id": 6980, + "initialValue": { + "arguments": [ + { + "id": 6978, + "name": "callData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6969, + "src": "8136:8:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 6977, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8129:6:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes4_$", + "typeString": "type(bytes4)" + }, + "typeName": { + "id": 6976, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "8129:6:16", + "typeDescriptions": {} + } + }, + "id": 6979, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8129:16:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8111:34:16" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 6985, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6981, + "name": "selector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6975, + "src": "8168:8:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "expression": { + "id": 6982, + "name": "UUPSUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6422, + "src": "8180:15:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UUPSUpgradeable_$6422_$", + "typeString": "type(contract UUPSUpgradeable)" + } + }, + "id": 6983, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8196:16:16", + "memberName": "upgradeToAndCall", + "nodeType": "MemberAccess", + "referencedDeclaration": 6421, + "src": "8180:32:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_calldata_ptr_$returns$__$", + "typeString": "function (address,bytes calldata)" + } + }, + "id": 6984, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "8213:8:16", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "8180:41:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "8168:53:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7001, + "nodeType": "IfStatement", + "src": "8164:462:16", + "trueBody": { + "id": 7000, + "nodeType": "Block", + "src": "8223:403:16", + "statements": [ + { + "assignments": [ + 6987 + ], + "declarations": [ + { + "constant": false, + "id": 6987, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "8253:17:16", + "nodeType": "VariableDeclaration", + "scope": 7000, + "src": "8245:25:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6986, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8245:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 6988, + "nodeType": "VariableDeclarationStatement", + "src": "8245:25:16" + }, + { + "AST": { + "nativeSrc": "8301:198:16", + "nodeType": "YulBlock", + "src": "8301:198:16", + "statements": [ + { + "nativeSrc": "8432:45:16", + "nodeType": "YulAssignment", + "src": "8432:45:16", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "callData", + "nativeSrc": "8463:8:16", + "nodeType": "YulIdentifier", + "src": "8463:8:16" + }, + { + "kind": "number", + "nativeSrc": "8473:2:16", + "nodeType": "YulLiteral", + "src": "8473:2:16", + "type": "", + "value": "36" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8459:3:16", + "nodeType": "YulIdentifier", + "src": "8459:3:16" + }, + "nativeSrc": "8459:17:16", + "nodeType": "YulFunctionCall", + "src": "8459:17:16" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "8453:5:16", + "nodeType": "YulIdentifier", + "src": "8453:5:16" + }, + "nativeSrc": "8453:24:16", + "nodeType": "YulFunctionCall", + "src": "8453:24:16" + }, + "variableNames": [ + { + "name": "newImplementation", + "nativeSrc": "8432:17:16", + "nodeType": "YulIdentifier", + "src": "8432:17:16" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6969, + "isOffset": false, + "isSlot": false, + "src": "8463:8:16", + "valueSize": 1 + }, + { + "declaration": 6987, + "isOffset": false, + "isSlot": false, + "src": "8432:17:16", + "valueSize": 1 + } + ], + "id": 6989, + "nodeType": "InlineAssembly", + "src": "8292:207:16" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6994, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 6990, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6987, + "src": "8524:17:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 6991, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8542:4:16", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "8524:22:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 6992, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8547:6:16", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "8524:29:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 6993, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8557:1:16", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8524:34:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6999, + "nodeType": "IfStatement", + "src": "8520:87:16", + "trueBody": { + "errorCall": { + "arguments": [ + { + "id": 6996, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6987, + "src": "8589:17:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6995, + "name": "InvalidImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6802, + "src": "8567:21:16", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$_t_error_$", + "typeString": "function (address) pure returns (error)" + } + }, + "id": 6997, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8567:40:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 6998, + "nodeType": "RevertStatement", + "src": "8560:47:16" + } + } + ] + } + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6964, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6961, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6959, + "src": "8020:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 6962, + "name": "calls", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6945, + "src": "8024:5:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + "id": 6963, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8030:6:16", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "8024:12:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8020:16:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7003, + "initializationExpression": { + "assignments": [ + 6959 + ], + "declarations": [ + { + "constant": false, + "id": 6959, + "mutability": "mutable", + "name": "i", + "nameLocation": "8017:1:16", + "nodeType": "VariableDeclaration", + "scope": 7003, + "src": "8009:9:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6958, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8009:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 6960, + "nodeType": "VariableDeclarationStatement", + "src": "8009:9:16" + }, + "isSimpleCounterLoop": true, + "loopExpression": { + "expression": { + "id": 6966, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "8038:3:16", + "subExpression": { + "id": 6965, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6959, + "src": "8038:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6967, + "nodeType": "ExpressionStatement", + "src": "8038:3:16" + }, + "nodeType": "ForStatement", + "src": "8004:636:16" + } + ] + } + }, + { + "condition": { + "arguments": [ + { + "id": 7017, + "name": "userOpHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6898, + "src": "8869:10:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 7018, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6896, + "src": "8881:6:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + }, + "id": 7019, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8888:9:16", + "memberName": "signature", + "nodeType": "MemberAccess", + "referencedDeclaration": 573, + "src": "8881:16:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 7016, + "name": "_isValidSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 7371 + ], + "referencedDeclaration": 7371, + "src": "8851:17:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_bool_$", + "typeString": "function (bytes32,bytes calldata) view returns (bool)" + } + }, + "id": 7020, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8851:47:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7024, + "nodeType": "IfStatement", + "src": "8847:86:16", + "trueBody": { + "id": 7023, + "nodeType": "Block", + "src": "8900:33:16", + "statements": [ + { + "expression": { + "hexValue": "30", + "id": 7021, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8921:1:16", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 6909, + "id": 7022, + "nodeType": "Return", + "src": "8914:8:16" + } + ] + } + }, + { + "expression": { + "hexValue": "31", + "id": 7025, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8975:1:16", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "functionReturnParameters": 6909, + "id": 7026, + "nodeType": "Return", + "src": "8968:8:16" + } + ] + }, + "documentation": { + "id": 6893, + "nodeType": "StructuredDocumentation", + "src": "5986:1294:16", + "text": "@inheritdoc IAccount\n @notice ERC-4337 `validateUserOp` method. The EntryPoint will\n call `UserOperation.sender.call(UserOperation.callData)` only if this validation call returns\n successfully.\n @dev Signature failure should be reported by returning 1 (see: `this._isValidSignature`). This\n allows making a \"simulation call\" without a valid signature. Other failures (e.g. invalid signature format)\n should still revert to signal failure.\n @dev Reverts if the `UserOperation.nonce` key is invalid for `UserOperation.calldata`.\n @dev Reverts if the signature format is incorrect or invalid for owner type.\n @param userOp The `UserOperation` to validate.\n @param userOpHash The `UserOperation` hash, as computed by `EntryPoint.getUserOpHash(UserOperation)`.\n @param missingAccountFunds The missing account funds that must be deposited on the Entrypoint.\n @return validationData The encoded `ValidationData` structure:\n `(uint256(validAfter) << (160 + 48)) | (uint256(validUntil) << 160) | (success ? 0 : 1)`\n where `validUntil` is 0 (indefinite) and `validAfter` is 0." + }, + "functionSelector": "19822f7c", + "id": 7028, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 6903, + "kind": "modifierInvocation", + "modifierName": { + "id": 6902, + "name": "onlyEntryPoint", + "nameLocations": [ + "7442:14:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6817, + "src": "7442:14:16" + }, + "nodeType": "ModifierInvocation", + "src": "7442:14:16" + }, + { + "arguments": [ + { + "id": 6905, + "name": "missingAccountFunds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6900, + "src": "7468:19:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 6906, + "kind": "modifierInvocation", + "modifierName": { + "id": 6904, + "name": "payPrefund", + "nameLocations": [ + "7457:10:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6840, + "src": "7457:10:16" + }, + "nodeType": "ModifierInvocation", + "src": "7457:31:16" + } + ], + "name": "validateUserOp", + "nameLocation": "7294:14:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6901, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6896, + "mutability": "mutable", + "name": "userOp", + "nameLocation": "7347:6:16", + "nodeType": "VariableDeclaration", + "scope": 7028, + "src": "7318:35:16", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation" + }, + "typeName": { + "id": 6895, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6894, + "name": "PackedUserOperation", + "nameLocations": [ + "7318:19:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 574, + "src": "7318:19:16" + }, + "referencedDeclaration": 574, + "src": "7318:19:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_storage_ptr", + "typeString": "struct PackedUserOperation" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6898, + "mutability": "mutable", + "name": "userOpHash", + "nameLocation": "7371:10:16", + "nodeType": "VariableDeclaration", + "scope": 7028, + "src": "7363:18:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6897, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7363:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6900, + "mutability": "mutable", + "name": "missingAccountFunds", + "nameLocation": "7399:19:16", + "nodeType": "VariableDeclaration", + "scope": 7028, + "src": "7391:27:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6899, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7391:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7308:116:16" + }, + "returnParameters": { + "id": 6909, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6908, + "mutability": "mutable", + "name": "validationData", + "nameLocation": "7506:14:16", + "nodeType": "VariableDeclaration", + "scope": 7028, + "src": "7498:22:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6907, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7498:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7497:24:16" + }, + "scope": 7398, + "src": "7285:1698:16", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 7081, + "nodeType": "Block", + "src": "9752:320:16", + "statements": [ + { + "body": { + "id": 7079, + "nodeType": "Block", + "src": "9801:265:16", + "statements": [ + { + "assignments": [ + 7048 + ], + "declarations": [ + { + "constant": false, + "id": 7048, + "mutability": "mutable", + "name": "call", + "nameLocation": "9830:4:16", + "nodeType": "VariableDeclaration", + "scope": 7079, + "src": "9815:19:16", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7047, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "9815:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 7052, + "initialValue": { + "baseExpression": { + "id": 7049, + "name": "calls", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7032, + "src": "9837:5:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + }, + "id": 7051, + "indexExpression": { + "id": 7050, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7038, + "src": "9843:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9837:8:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9815:30:16" + }, + { + "assignments": [ + 7054 + ], + "declarations": [ + { + "constant": false, + "id": 7054, + "mutability": "mutable", + "name": "selector", + "nameLocation": "9866:8:16", + "nodeType": "VariableDeclaration", + "scope": 7079, + "src": "9859:15:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 7053, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "9859:6:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "id": 7059, + "initialValue": { + "arguments": [ + { + "id": 7057, + "name": "call", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7048, + "src": "9884:4:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 7056, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9877:6:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes4_$", + "typeString": "type(bytes4)" + }, + "typeName": { + "id": 7055, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "9877:6:16", + "typeDescriptions": {} + } + }, + "id": 7058, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9877:12:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9859:30:16" + }, + { + "condition": { + "id": 7063, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "9907:35:16", + "subExpression": { + "arguments": [ + { + "id": 7061, + "name": "selector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7054, + "src": "9933:8:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 7060, + "name": "canSkipChainIdValidation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7222, + "src": "9908:24:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes4_$returns$_t_bool_$", + "typeString": "function (bytes4) pure returns (bool)" + } + }, + "id": 7062, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9908:34:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7069, + "nodeType": "IfStatement", + "src": "9903:109:16", + "trueBody": { + "id": 7068, + "nodeType": "Block", + "src": "9944:68:16", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 7065, + "name": "selector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7054, + "src": "9988:8:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 7064, + "name": "SelectorNotAllowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6792, + "src": "9969:18:16", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_bytes4_$returns$_t_error_$", + "typeString": "function (bytes4) pure returns (error)" + } + }, + "id": 7066, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9969:28:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 7067, + "nodeType": "RevertStatement", + "src": "9962:35:16" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 7073, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "10040:4:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + } + ], + "id": 7072, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10032:7:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 7071, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10032:7:16", + "typeDescriptions": {} + } + }, + "id": 7074, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10032:13:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "hexValue": "30", + "id": 7075, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10047:1:16", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 7076, + "name": "call", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7048, + "src": "10050:4:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 7070, + "name": "_call", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7249, + "src": "10026:5:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,bytes memory)" + } + }, + "id": 7077, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10026:29:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7078, + "nodeType": "ExpressionStatement", + "src": "10026:29:16" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7043, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7040, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7038, + "src": "9778:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 7041, + "name": "calls", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7032, + "src": "9782:5:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + }, + "id": 7042, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9788:6:16", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "9782:12:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9778:16:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7080, + "initializationExpression": { + "assignments": [ + 7038 + ], + "declarations": [ + { + "constant": false, + "id": 7038, + "mutability": "mutable", + "name": "i", + "nameLocation": "9775:1:16", + "nodeType": "VariableDeclaration", + "scope": 7080, + "src": "9767:9:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7037, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9767:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7039, + "nodeType": "VariableDeclarationStatement", + "src": "9767:9:16" + }, + "isSimpleCounterLoop": true, + "loopExpression": { + "expression": { + "id": 7045, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "9796:3:16", + "subExpression": { + "id": 7044, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7038, + "src": "9796:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7046, + "nodeType": "ExpressionStatement", + "src": "9796:3:16" + }, + "nodeType": "ForStatement", + "src": "9762:304:16" + } + ] + }, + "documentation": { + "id": 7029, + "nodeType": "StructuredDocumentation", + "src": "8989:653:16", + "text": "@notice Executes `calls` on this account (i.e. self call).\n @dev Can only be called by the Entrypoint.\n @dev Reverts if the given call is not authorized to skip the chain ID validtion.\n @dev `validateUserOp()` will recompute the `userOpHash` without the chain ID before validating\n it if the `UserOperation.calldata` is calling this function. This allows certain UserOperations\n to be replayed for all accounts sharing the same address across chains. E.g. This may be\n useful for syncing owner changes.\n @param calls An array of calldata to use for separate self calls." + }, + "functionSelector": "2c2abd1e", + "id": 7082, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 7035, + "kind": "modifierInvocation", + "modifierName": { + "id": 7034, + "name": "onlyEntryPoint", + "nameLocations": [ + "9737:14:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6817, + "src": "9737:14:16" + }, + "nodeType": "ModifierInvocation", + "src": "9737:14:16" + } + ], + "name": "executeWithoutChainIdValidation", + "nameLocation": "9656:31:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7033, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7032, + "mutability": "mutable", + "name": "calls", + "nameLocation": "9705:5:16", + "nodeType": "VariableDeclaration", + "scope": 7082, + "src": "9688:22:16", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 7030, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "9688:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 7031, + "nodeType": "ArrayTypeName", + "src": "9688:7:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + } + ], + "src": "9687:24:16" + }, + "returnParameters": { + "id": 7036, + "nodeType": "ParameterList", + "parameters": [], + "src": "9752:0:16" + }, + "scope": 7398, + "src": "9647:425:16", + "stateMutability": "payable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 7100, + "nodeType": "Block", + "src": "10509:43:16", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 7095, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7085, + "src": "10525:6:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 7096, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7087, + "src": "10533:5:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 7097, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7089, + "src": "10540:4:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 7094, + "name": "_call", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7249, + "src": "10519:5:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,bytes memory)" + } + }, + "id": 7098, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10519:26:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7099, + "nodeType": "ExpressionStatement", + "src": "10519:26:16" + } + ] + }, + "documentation": { + "id": 7083, + "nodeType": "StructuredDocumentation", + "src": "10078:310:16", + "text": "@notice Executes the given call from this account.\n @dev Can only be called by the Entrypoint or an owner of this account (including itself).\n @param target The address to call.\n @param value The value to send with the call.\n @param data The data of the call." + }, + "functionSelector": "b61d27f6", + "id": 7101, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 7092, + "kind": "modifierInvocation", + "modifierName": { + "id": 7091, + "name": "onlyEntryPointOrOwner", + "nameLocations": [ + "10487:21:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6832, + "src": "10487:21:16" + }, + "nodeType": "ModifierInvocation", + "src": "10487:21:16" + } + ], + "name": "execute", + "nameLocation": "10402:7:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7090, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7085, + "mutability": "mutable", + "name": "target", + "nameLocation": "10418:6:16", + "nodeType": "VariableDeclaration", + "scope": 7101, + "src": "10410:14:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7084, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10410:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7087, + "mutability": "mutable", + "name": "value", + "nameLocation": "10434:5:16", + "nodeType": "VariableDeclaration", + "scope": 7101, + "src": "10426:13:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7086, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10426:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7089, + "mutability": "mutable", + "name": "data", + "nameLocation": "10456:4:16", + "nodeType": "VariableDeclaration", + "scope": 7101, + "src": "10441:19:16", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7088, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "10441:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "10409:52:16" + }, + "returnParameters": { + "id": 7093, + "nodeType": "ParameterList", + "parameters": [], + "src": "10509:0:16" + }, + "scope": 7398, + "src": "10393:159:16", + "stateMutability": "payable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 7138, + "nodeType": "Block", + "src": "10860:133:16", + "statements": [ + { + "body": { + "id": 7136, + "nodeType": "Block", + "src": "10909:78:16", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "baseExpression": { + "id": 7122, + "name": "calls", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7106, + "src": "10929:5:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Call_$6780_calldata_ptr_$dyn_calldata_ptr", + "typeString": "struct GianoSmartWallet.Call calldata[] calldata" + } + }, + "id": 7124, + "indexExpression": { + "id": 7123, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7112, + "src": "10935:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10929:8:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Call_$6780_calldata_ptr", + "typeString": "struct GianoSmartWallet.Call calldata" + } + }, + "id": 7125, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10938:6:16", + "memberName": "target", + "nodeType": "MemberAccess", + "referencedDeclaration": 6773, + "src": "10929:15:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "baseExpression": { + "id": 7126, + "name": "calls", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7106, + "src": "10946:5:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Call_$6780_calldata_ptr_$dyn_calldata_ptr", + "typeString": "struct GianoSmartWallet.Call calldata[] calldata" + } + }, + "id": 7128, + "indexExpression": { + "id": 7127, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7112, + "src": "10952:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10946:8:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Call_$6780_calldata_ptr", + "typeString": "struct GianoSmartWallet.Call calldata" + } + }, + "id": 7129, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10955:5:16", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 6776, + "src": "10946:14:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "baseExpression": { + "id": 7130, + "name": "calls", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7106, + "src": "10962:5:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Call_$6780_calldata_ptr_$dyn_calldata_ptr", + "typeString": "struct GianoSmartWallet.Call calldata[] calldata" + } + }, + "id": 7132, + "indexExpression": { + "id": 7131, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7112, + "src": "10968:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10962:8:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Call_$6780_calldata_ptr", + "typeString": "struct GianoSmartWallet.Call calldata" + } + }, + "id": 7133, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10971:4:16", + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": 6779, + "src": "10962:13:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 7121, + "name": "_call", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7249, + "src": "10923:5:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,bytes memory)" + } + }, + "id": 7134, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10923:53:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7135, + "nodeType": "ExpressionStatement", + "src": "10923:53:16" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7117, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7114, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7112, + "src": "10886:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 7115, + "name": "calls", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7106, + "src": "10890:5:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Call_$6780_calldata_ptr_$dyn_calldata_ptr", + "typeString": "struct GianoSmartWallet.Call calldata[] calldata" + } + }, + "id": 7116, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10896:6:16", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "10890:12:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10886:16:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7137, + "initializationExpression": { + "assignments": [ + 7112 + ], + "declarations": [ + { + "constant": false, + "id": 7112, + "mutability": "mutable", + "name": "i", + "nameLocation": "10883:1:16", + "nodeType": "VariableDeclaration", + "scope": 7137, + "src": "10875:9:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7111, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10875:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7113, + "nodeType": "VariableDeclarationStatement", + "src": "10875:9:16" + }, + "isSimpleCounterLoop": true, + "loopExpression": { + "expression": { + "id": 7119, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "10904:3:16", + "subExpression": { + "id": 7118, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7112, + "src": "10904:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7120, + "nodeType": "ExpressionStatement", + "src": "10904:3:16" + }, + "nodeType": "ForStatement", + "src": "10870:117:16" + } + ] + }, + "documentation": { + "id": 7102, + "nodeType": "StructuredDocumentation", + "src": "10558:205:16", + "text": "@notice Executes batch of `Call`s.\n @dev Can only be called by the Entrypoint or an owner of this account (including itself).\n @param calls The list of `Call`s to execute." + }, + "functionSelector": "34fcd5be", + "id": 7139, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 7109, + "kind": "modifierInvocation", + "modifierName": { + "id": 7108, + "name": "onlyEntryPointOrOwner", + "nameLocations": [ + "10838:21:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6832, + "src": "10838:21:16" + }, + "nodeType": "ModifierInvocation", + "src": "10838:21:16" + } + ], + "name": "executeBatch", + "nameLocation": "10777:12:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7107, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7106, + "mutability": "mutable", + "name": "calls", + "nameLocation": "10806:5:16", + "nodeType": "VariableDeclaration", + "scope": 7139, + "src": "10790:21:16", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Call_$6780_calldata_ptr_$dyn_calldata_ptr", + "typeString": "struct GianoSmartWallet.Call[]" + }, + "typeName": { + "baseType": { + "id": 7104, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7103, + "name": "Call", + "nameLocations": [ + "10790:4:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6780, + "src": "10790:4:16" + }, + "referencedDeclaration": 6780, + "src": "10790:4:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Call_$6780_storage_ptr", + "typeString": "struct GianoSmartWallet.Call" + } + }, + "id": 7105, + "nodeType": "ArrayTypeName", + "src": "10790:6:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Call_$6780_storage_$dyn_storage_ptr", + "typeString": "struct GianoSmartWallet.Call[]" + } + }, + "visibility": "internal" + } + ], + "src": "10789:23:16" + }, + "returnParameters": { + "id": 7110, + "nodeType": "ParameterList", + "parameters": [], + "src": "10860:0:16" + }, + "scope": 7398, + "src": "10768:225:16", + "stateMutability": "payable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 7147, + "nodeType": "Block", + "src": "11178:66:16", + "statements": [ + { + "expression": { + "hexValue": "307830303030303030303731373237446532324535453964384241663065644163366633376461303332", + "id": 7145, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11195:42:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "value": "0x0000000071727De22E5E9d8BAf0edAc6f37da032" + }, + "functionReturnParameters": 7144, + "id": 7146, + "nodeType": "Return", + "src": "11188:49:16" + } + ] + }, + "documentation": { + "id": 7140, + "nodeType": "StructuredDocumentation", + "src": "10999:114:16", + "text": "@notice Returns the address of the EntryPoint v0.7.\n @return The address of the EntryPoint v0.7" + }, + "functionSelector": "b0d691fe", + "id": 7148, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "entryPoint", + "nameLocation": "11127:10:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7141, + "nodeType": "ParameterList", + "parameters": [], + "src": "11137:2:16" + }, + "returnParameters": { + "id": 7144, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7143, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7148, + "src": "11169:7:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7142, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11169:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "11168:9:16" + }, + "scope": 7398, + "src": "11118:126:16", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 7169, + "nodeType": "Block", + "src": "11750:90:16", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 7162, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7152, + "src": "11810:6:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation calldata" + } + ], + "expression": { + "id": 7160, + "name": "UserOperationLib", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 535, + "src": "11788:16:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UserOperationLib_$535_$", + "typeString": "type(library UserOperationLib)" + } + }, + "id": 7161, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11805:4:16", + "memberName": "hash", + "nodeType": "MemberAccess", + "referencedDeclaration": 534, + "src": "11788:21:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_PackedUserOperation_$574_calldata_ptr_$returns$_t_bytes32_$", + "typeString": "function (struct PackedUserOperation calldata) pure returns (bytes32)" + } + }, + "id": 7163, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11788:29:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7164, + "name": "entryPoint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7148, + "src": "11819:10:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 7165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11819:12:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 7158, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "11777:3:16", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 7159, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "11781:6:16", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "11777:10:16", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 7166, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11777:55:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 7157, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "11767:9:16", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 7167, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11767:66:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 7156, + "id": 7168, + "nodeType": "Return", + "src": "11760:73:16" + } + ] + }, + "documentation": { + "id": 7149, + "nodeType": "StructuredDocumentation", + "src": "11250:383:16", + "text": "@notice Computes the hash of the `UserOperation` in the same way as EntryPoint v0.6, but\n leaves out the chain ID.\n @dev This allows accounts to sign a hash that can be used on many chains.\n @param userOp The `UserOperation` to compute the hash for.\n @return The `UserOperation` hash, which does not depend on chain ID." + }, + "functionSelector": "a05bd44e", + "id": 7170, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getUserOpHashWithoutChainId", + "nameLocation": "11647:27:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7153, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7152, + "mutability": "mutable", + "name": "userOp", + "nameLocation": "11704:6:16", + "nodeType": "VariableDeclaration", + "scope": 7170, + "src": "11675:35:16", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_calldata_ptr", + "typeString": "struct PackedUserOperation" + }, + "typeName": { + "id": 7151, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7150, + "name": "PackedUserOperation", + "nameLocations": [ + "11675:19:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 574, + "src": "11675:19:16" + }, + "referencedDeclaration": 574, + "src": "11675:19:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PackedUserOperation_$574_storage_ptr", + "typeString": "struct PackedUserOperation" + } + }, + "visibility": "internal" + } + ], + "src": "11674:37:16" + }, + "returnParameters": { + "id": 7156, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7155, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7170, + "src": "11741:7:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7154, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11741:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "11740:9:16" + }, + "scope": 7398, + "src": "11638:202:16", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 7177, + "nodeType": "Block", + "src": "12035:89:16", + "statements": [ + { + "AST": { + "nativeSrc": "12054:64:16", + "nodeType": "YulBlock", + "src": "12054:64:16", + "statements": [ + { + "nativeSrc": "12068:40:16", + "nodeType": "YulAssignment", + "src": "12068:40:16", + "value": { + "arguments": [ + { + "name": "_ERC1967_IMPLEMENTATION_SLOT", + "nativeSrc": "12079:28:16", + "nodeType": "YulIdentifier", + "src": "12079:28:16" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "12073:5:16", + "nodeType": "YulIdentifier", + "src": "12073:5:16" + }, + "nativeSrc": "12073:35:16", + "nodeType": "YulFunctionCall", + "src": "12073:35:16" + }, + "variableNames": [ + { + "name": "$", + "nativeSrc": "12068:1:16", + "nodeType": "YulIdentifier", + "src": "12068:1:16" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 7174, + "isOffset": false, + "isSlot": false, + "src": "12068:1:16", + "valueSize": 1 + }, + { + "declaration": 6388, + "isOffset": false, + "isSlot": false, + "src": "12079:28:16", + "valueSize": 1 + } + ], + "id": 7176, + "nodeType": "InlineAssembly", + "src": "12045:73:16" + } + ] + }, + "documentation": { + "id": 7171, + "nodeType": "StructuredDocumentation", + "src": "11846:126:16", + "text": "@notice Returns the implementation of the ERC1967 proxy.\n @return $ The address of implementation contract." + }, + "functionSelector": "5c60da1b", + "id": 7178, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "implementation", + "nameLocation": "11986:14:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7172, + "nodeType": "ParameterList", + "parameters": [], + "src": "12000:2:16" + }, + "returnParameters": { + "id": 7175, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7174, + "mutability": "mutable", + "name": "$", + "nameLocation": "12032:1:16", + "nodeType": "VariableDeclaration", + "scope": 7178, + "src": "12024:9:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7173, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12024:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "12023:11:16" + }, + "scope": 7398, + "src": "11977:147:16", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 7221, + "nodeType": "Block", + "src": "12506:460:16", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 7214, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 7208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 7202, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 7196, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 7190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7186, + "name": "functionSelector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7181, + "src": "12533:16:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "expression": { + "id": 7187, + "name": "MultiOwnable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8101, + "src": "12553:12:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_MultiOwnable_$8101_$", + "typeString": "type(contract MultiOwnable)" + } + }, + "id": 7188, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "12566:17:16", + "memberName": "addOwnerPublicKey", + "nodeType": "MemberAccess", + "referencedDeclaration": 7695, + "src": "12553:30:16", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function MultiOwnable.addOwnerPublicKey(bytes32,bytes32)" + } + }, + "id": 7189, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "12584:8:16", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "12553:39:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "12533:59:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 7195, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7191, + "name": "functionSelector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7181, + "src": "12608:16:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "expression": { + "id": 7192, + "name": "MultiOwnable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8101, + "src": "12628:12:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_MultiOwnable_$8101_$", + "typeString": "type(contract MultiOwnable)" + } + }, + "id": 7193, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "12641:15:16", + "memberName": "addOwnerAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 7672, + "src": "12628:28:16", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$returns$__$", + "typeString": "function MultiOwnable.addOwnerAddress(address)" + } + }, + "id": 7194, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "12657:8:16", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "12628:37:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "12608:57:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "12533:132:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 7201, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7197, + "name": "functionSelector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7181, + "src": "12681:16:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "expression": { + "id": 7198, + "name": "MultiOwnable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8101, + "src": "12701:12:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_MultiOwnable_$8101_$", + "typeString": "type(contract MultiOwnable)" + } + }, + "id": 7199, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "12714:18:16", + "memberName": "removeOwnerAtIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 7720, + "src": "12701:31:16", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_uint256_$_t_bytes_calldata_ptr_$returns$__$", + "typeString": "function MultiOwnable.removeOwnerAtIndex(uint256,bytes calldata)" + } + }, + "id": 7200, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "12733:8:16", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "12701:40:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "12681:60:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "12533:208:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 7207, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7203, + "name": "functionSelector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7181, + "src": "12757:16:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "expression": { + "id": 7204, + "name": "MultiOwnable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8101, + "src": "12777:12:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_MultiOwnable_$8101_$", + "typeString": "type(contract MultiOwnable)" + } + }, + "id": 7205, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "12790:15:16", + "memberName": "removeLastOwner", + "nodeType": "MemberAccess", + "referencedDeclaration": 7750, + "src": "12777:28:16", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_uint256_$_t_bytes_calldata_ptr_$returns$__$", + "typeString": "function MultiOwnable.removeLastOwner(uint256,bytes calldata)" + } + }, + "id": 7206, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "12806:8:16", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "12777:37:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "12757:57:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "12533:281:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 7213, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7209, + "name": "functionSelector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7181, + "src": "12830:16:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "expression": { + "id": 7210, + "name": "UUPSUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6422, + "src": "12850:15:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UUPSUpgradeable_$6422_$", + "typeString": "type(contract UUPSUpgradeable)" + } + }, + "id": 7211, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12866:16:16", + "memberName": "upgradeToAndCall", + "nodeType": "MemberAccess", + "referencedDeclaration": 6421, + "src": "12850:32:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_calldata_ptr_$returns$__$", + "typeString": "function (address,bytes calldata)" + } + }, + "id": 7212, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "12883:8:16", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "12850:41:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "12830:61:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "12533:358:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7218, + "nodeType": "IfStatement", + "src": "12516:422:16", + "trueBody": { + "id": 7217, + "nodeType": "Block", + "src": "12902:36:16", + "statements": [ + { + "expression": { + "hexValue": "74727565", + "id": 7215, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12923:4:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 7185, + "id": 7216, + "nodeType": "Return", + "src": "12916:11:16" + } + ] + } + }, + { + "expression": { + "hexValue": "66616c7365", + "id": 7219, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12954:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 7185, + "id": 7220, + "nodeType": "Return", + "src": "12947:12:16" + } + ] + }, + "documentation": { + "id": 7179, + "nodeType": "StructuredDocumentation", + "src": "12314:101:16", + "text": "@return `true` is the function selector is allowed to skip the chain ID validation, else `false`." + }, + "functionSelector": "9f9bcb34", + "id": 7222, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "canSkipChainIdValidation", + "nameLocation": "12429:24:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7182, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7181, + "mutability": "mutable", + "name": "functionSelector", + "nameLocation": "12461:16:16", + "nodeType": "VariableDeclaration", + "scope": 7222, + "src": "12454:23:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 7180, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "12454:6:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "12453:25:16" + }, + "returnParameters": { + "id": 7185, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7184, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7222, + "src": "12500:4:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7183, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "12500:4:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "12499:6:16" + }, + "scope": 7398, + "src": "12420:546:16", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 7248, + "nodeType": "Block", + "src": "13477:228:16", + "statements": [ + { + "assignments": [ + 7233, + 7235 + ], + "declarations": [ + { + "constant": false, + "id": 7233, + "mutability": "mutable", + "name": "success", + "nameLocation": "13493:7:16", + "nodeType": "VariableDeclaration", + "scope": 7248, + "src": "13488:12:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7232, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "13488:4:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7235, + "mutability": "mutable", + "name": "result", + "nameLocation": "13515:6:16", + "nodeType": "VariableDeclaration", + "scope": 7248, + "src": "13502:19:16", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7234, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "13502:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 7242, + "initialValue": { + "arguments": [ + { + "id": 7240, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7229, + "src": "13551:4:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 7236, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7225, + "src": "13525:6:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 7237, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13532:4:16", + "memberName": "call", + "nodeType": "MemberAccess", + "src": "13525:11:16", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 7239, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": [ + "value" + ], + "nodeType": "FunctionCallOptions", + "options": [ + { + "id": 7238, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7227, + "src": "13544:5:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "13525:25:16", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 7241, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13525:31:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13487:69:16" + }, + { + "condition": { + "id": 7244, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "13570:8:16", + "subExpression": { + "id": 7243, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7233, + "src": "13571:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7247, + "nodeType": "IfStatement", + "src": "13566:133:16", + "trueBody": { + "id": 7246, + "nodeType": "Block", + "src": "13580:119:16", + "statements": [ + { + "AST": { + "nativeSrc": "13619:70:16", + "nodeType": "YulBlock", + "src": "13619:70:16", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "13648:6:16", + "nodeType": "YulIdentifier", + "src": "13648:6:16" + }, + { + "kind": "number", + "nativeSrc": "13656:2:16", + "nodeType": "YulLiteral", + "src": "13656:2:16", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13644:3:16", + "nodeType": "YulIdentifier", + "src": "13644:3:16" + }, + "nativeSrc": "13644:15:16", + "nodeType": "YulFunctionCall", + "src": "13644:15:16" + }, + { + "arguments": [ + { + "name": "result", + "nativeSrc": "13667:6:16", + "nodeType": "YulIdentifier", + "src": "13667:6:16" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "13661:5:16", + "nodeType": "YulIdentifier", + "src": "13661:5:16" + }, + "nativeSrc": "13661:13:16", + "nodeType": "YulFunctionCall", + "src": "13661:13:16" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "13637:6:16", + "nodeType": "YulIdentifier", + "src": "13637:6:16" + }, + "nativeSrc": "13637:38:16", + "nodeType": "YulFunctionCall", + "src": "13637:38:16" + }, + "nativeSrc": "13637:38:16", + "nodeType": "YulExpressionStatement", + "src": "13637:38:16" + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 7235, + "isOffset": false, + "isSlot": false, + "src": "13648:6:16", + "valueSize": 1 + }, + { + "declaration": 7235, + "isOffset": false, + "isSlot": false, + "src": "13667:6:16", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 7245, + "nodeType": "InlineAssembly", + "src": "13594:95:16" + } + ] + } + } + ] + }, + "documentation": { + "id": 7223, + "nodeType": "StructuredDocumentation", + "src": "12972:426:16", + "text": "@notice Executes the given call from this account.\n @dev Reverts if the call reverted.\n @dev Implementation taken from\n https://github.com/alchemyplatform/light-account/blob/43f625afdda544d5e5af9c370c9f4be0943e4e90/src/common/BaseLightAccount.sol#L125\n @param target The target call address.\n @param value The call value to user.\n @param data The raw call data." + }, + "id": 7249, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_call", + "nameLocation": "13412:5:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7230, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7225, + "mutability": "mutable", + "name": "target", + "nameLocation": "13426:6:16", + "nodeType": "VariableDeclaration", + "scope": 7249, + "src": "13418:14:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7224, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13418:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7227, + "mutability": "mutable", + "name": "value", + "nameLocation": "13442:5:16", + "nodeType": "VariableDeclaration", + "scope": 7249, + "src": "13434:13:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7226, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13434:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7229, + "mutability": "mutable", + "name": "data", + "nameLocation": "13462:4:16", + "nodeType": "VariableDeclaration", + "scope": 7249, + "src": "13449:17:16", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7228, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "13449:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "13417:50:16" + }, + "returnParameters": { + "id": 7231, + "nodeType": "ParameterList", + "parameters": [], + "src": "13477:0:16" + }, + "scope": 7398, + "src": "13403:302:16", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 6725 + ], + "body": { + "id": 7370, + "nodeType": "Block", + "src": "14110:1336:16", + "statements": [ + { + "assignments": [ + 7262 + ], + "declarations": [ + { + "constant": false, + "id": 7262, + "mutability": "mutable", + "name": "sigWrapper", + "nameLocation": "14144:10:16", + "nodeType": "VariableDeclaration", + "scope": 7370, + "src": "14120:34:16", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignatureWrapper_$6769_memory_ptr", + "typeString": "struct GianoSmartWallet.SignatureWrapper" + }, + "typeName": { + "id": 7261, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7260, + "name": "SignatureWrapper", + "nameLocations": [ + "14120:16:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6769, + "src": "14120:16:16" + }, + "referencedDeclaration": 6769, + "src": "14120:16:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignatureWrapper_$6769_storage_ptr", + "typeString": "struct GianoSmartWallet.SignatureWrapper" + } + }, + "visibility": "internal" + } + ], + "id": 7269, + "initialValue": { + "arguments": [ + { + "id": 7265, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7254, + "src": "14168:9:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + { + "components": [ + { + "id": 7266, + "name": "SignatureWrapper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6769, + "src": "14180:16:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_SignatureWrapper_$6769_storage_ptr_$", + "typeString": "type(struct GianoSmartWallet.SignatureWrapper storage pointer)" + } + } + ], + "id": 7267, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "14179:18:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_SignatureWrapper_$6769_storage_ptr_$", + "typeString": "type(struct GianoSmartWallet.SignatureWrapper storage pointer)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + }, + { + "typeIdentifier": "t_type$_t_struct$_SignatureWrapper_$6769_storage_ptr_$", + "typeString": "type(struct GianoSmartWallet.SignatureWrapper storage pointer)" + } + ], + "expression": { + "id": 7263, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "14157:3:16", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 7264, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "14161:6:16", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "14157:10:16", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 7268, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14157:41:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignatureWrapper_$6769_memory_ptr", + "typeString": "struct GianoSmartWallet.SignatureWrapper memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14120:78:16" + }, + { + "assignments": [ + 7271 + ], + "declarations": [ + { + "constant": false, + "id": 7271, + "mutability": "mutable", + "name": "ownerBytes", + "nameLocation": "14221:10:16", + "nodeType": "VariableDeclaration", + "scope": 7370, + "src": "14208:23:16", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7270, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "14208:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 7274, + "initialValue": { + "expression": { + "id": 7272, + "name": "sigWrapper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7262, + "src": "14234:10:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignatureWrapper_$6769_memory_ptr", + "typeString": "struct GianoSmartWallet.SignatureWrapper memory" + } + }, + "id": 7273, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14245:10:16", + "memberName": "ownerBytes", + "nodeType": "MemberAccess", + "referencedDeclaration": 6765, + "src": "14234:21:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14208:47:16" + }, + { + "condition": { + "id": 7278, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "14348:25:16", + "subExpression": { + "arguments": [ + { + "id": 7276, + "name": "ownerBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7271, + "src": "14362:10:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 7275, + "name": "isOwnerBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7804, + "src": "14349:12:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (bytes memory) view returns (bool)" + } + }, + "id": 7277, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14349:24:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7282, + "nodeType": "IfStatement", + "src": "14344:68:16", + "trueBody": { + "id": 7281, + "nodeType": "Block", + "src": "14375:37:16", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 7279, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14396:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 7259, + "id": 7280, + "nodeType": "Return", + "src": "14389:12:16" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 7283, + "name": "ownerBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7271, + "src": "14426:10:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 7284, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14437:6:16", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "14426:17:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "3332", + "id": 7285, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14447:2:16", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "14426:23:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7319, + "nodeType": "IfStatement", + "src": "14422:604:16", + "trueBody": { + "id": 7318, + "nodeType": "Block", + "src": "14451:575:16", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7299, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 7291, + "name": "ownerBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7271, + "src": "14485:10:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 7290, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14477:7:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 7289, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14477:7:16", + "typeDescriptions": {} + } + }, + "id": 7292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14477:19:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 7288, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14469:7:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 7287, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14469:7:16", + "typeDescriptions": {} + } + }, + "id": 7293, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14469:28:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 7296, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14505:7:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 7295, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "14505:7:16", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + } + ], + "id": 7294, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "14500:4:16", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 7297, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14500:13:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint160", + "typeString": "type(uint160)" + } + }, + "id": 7298, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "14514:3:16", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "14500:17:16", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "src": "14469:48:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7305, + "nodeType": "IfStatement", + "src": "14465:318:16", + "trueBody": { + "id": 7304, + "nodeType": "Block", + "src": "14519:264:16", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 7301, + "name": "ownerBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7271, + "src": "14757:10:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 7300, + "name": "InvalidEthereumAddressOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7622, + "src": "14729:27:16", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_bytes_memory_ptr_$returns$_t_error_$", + "typeString": "function (bytes memory) pure returns (error)" + } + }, + "id": 7302, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14729:39:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 7303, + "nodeType": "RevertStatement", + "src": "14722:46:16" + } + ] + } + }, + { + "assignments": [ + 7307 + ], + "declarations": [ + { + "constant": false, + "id": 7307, + "mutability": "mutable", + "name": "owner", + "nameLocation": "14805:5:16", + "nodeType": "VariableDeclaration", + "scope": 7318, + "src": "14797:13:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7306, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14797:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 7308, + "nodeType": "VariableDeclarationStatement", + "src": "14797:13:16" + }, + { + "AST": { + "nativeSrc": "14849:67:16", + "nodeType": "YulBlock", + "src": "14849:67:16", + "statements": [ + { + "nativeSrc": "14867:35:16", + "nodeType": "YulAssignment", + "src": "14867:35:16", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "ownerBytes", + "nativeSrc": "14886:10:16", + "nodeType": "YulIdentifier", + "src": "14886:10:16" + }, + { + "kind": "number", + "nativeSrc": "14898:2:16", + "nodeType": "YulLiteral", + "src": "14898:2:16", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14882:3:16", + "nodeType": "YulIdentifier", + "src": "14882:3:16" + }, + "nativeSrc": "14882:19:16", + "nodeType": "YulFunctionCall", + "src": "14882:19:16" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "14876:5:16", + "nodeType": "YulIdentifier", + "src": "14876:5:16" + }, + "nativeSrc": "14876:26:16", + "nodeType": "YulFunctionCall", + "src": "14876:26:16" + }, + "variableNames": [ + { + "name": "owner", + "nativeSrc": "14867:5:16", + "nodeType": "YulIdentifier", + "src": "14867:5:16" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 7307, + "isOffset": false, + "isSlot": false, + "src": "14867:5:16", + "valueSize": 1 + }, + { + "declaration": 7271, + "isOffset": false, + "isSlot": false, + "src": "14886:10:16", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 7309, + "nodeType": "InlineAssembly", + "src": "14824:92:16" + }, + { + "expression": { + "arguments": [ + { + "id": 7312, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7307, + "src": "14977:5:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 7313, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7252, + "src": "14984:4:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 7314, + "name": "sigWrapper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7262, + "src": "14990:10:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignatureWrapper_$6769_memory_ptr", + "typeString": "struct GianoSmartWallet.SignatureWrapper memory" + } + }, + "id": 7315, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15001:13:16", + "memberName": "signatureData", + "nodeType": "MemberAccess", + "referencedDeclaration": 6768, + "src": "14990:24:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 7310, + "name": "SignatureCheckerLib", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6365, + "src": "14937:19:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SignatureCheckerLib_$6365_$", + "typeString": "type(library SignatureCheckerLib)" + } + }, + "id": 7311, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14957:19:16", + "memberName": "isValidSignatureNow", + "nodeType": "MemberAccess", + "referencedDeclaration": 6171, + "src": "14937:39:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,bytes32,bytes memory) view returns (bool)" + } + }, + "id": 7316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14937:78:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 7259, + "id": 7317, + "nodeType": "Return", + "src": "14930:85:16" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 7320, + "name": "ownerBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7271, + "src": "15040:10:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 7321, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15051:6:16", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "15040:17:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "3634", + "id": 7322, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15061:2:16", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "15040:23:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7365, + "nodeType": "IfStatement", + "src": "15036:351:16", + "trueBody": { + "id": 7364, + "nodeType": "Block", + "src": "15065:322:16", + "statements": [ + { + "assignments": [ + 7325, + 7327 + ], + "declarations": [ + { + "constant": false, + "id": 7325, + "mutability": "mutable", + "name": "x", + "nameLocation": "15088:1:16", + "nodeType": "VariableDeclaration", + "scope": 7364, + "src": "15080:9:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7324, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15080:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7327, + "mutability": "mutable", + "name": "y", + "nameLocation": "15099:1:16", + "nodeType": "VariableDeclaration", + "scope": 7364, + "src": "15091:9:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7326, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15091:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7337, + "initialValue": { + "arguments": [ + { + "id": 7330, + "name": "ownerBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7271, + "src": "15115:10:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 7332, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15128:7:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 7331, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15128:7:16", + "typeDescriptions": {} + } + }, + { + "id": 7334, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15137:7:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 7333, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15137:7:16", + "typeDescriptions": {} + } + } + ], + "id": 7335, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "15127:18:16", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$", + "typeString": "tuple(type(uint256),type(uint256))" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_tuple$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$", + "typeString": "tuple(type(uint256),type(uint256))" + } + ], + "expression": { + "id": 7328, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "15104:3:16", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 7329, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "15108:6:16", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "15104:10:16", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 7336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15104:42:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15079:67:16" + }, + { + "assignments": [ + 7342 + ], + "declarations": [ + { + "constant": false, + "id": 7342, + "mutability": "mutable", + "name": "auth", + "nameLocation": "15190:4:16", + "nodeType": "VariableDeclaration", + "scope": 7364, + "src": "15161:33:16", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth" + }, + "typeName": { + "id": 7341, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7340, + "name": "WebAuthn.WebAuthnAuth", + "nameLocations": [ + "15161:8:16", + "15170:12:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 8252, + "src": "15161:21:16" + }, + "referencedDeclaration": 8252, + "src": "15161:21:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_storage_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth" + } + }, + "visibility": "internal" + } + ], + "id": 7351, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 7345, + "name": "sigWrapper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7262, + "src": "15208:10:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignatureWrapper_$6769_memory_ptr", + "typeString": "struct GianoSmartWallet.SignatureWrapper memory" + } + }, + "id": 7346, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15219:13:16", + "memberName": "signatureData", + "nodeType": "MemberAccess", + "referencedDeclaration": 6768, + "src": "15208:24:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "expression": { + "id": 7347, + "name": "WebAuthn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8478, + "src": "15235:8:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_WebAuthn_$8478_$", + "typeString": "type(library WebAuthn)" + } + }, + "id": 7348, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15244:12:16", + "memberName": "WebAuthnAuth", + "nodeType": "MemberAccess", + "referencedDeclaration": 8252, + "src": "15235:21:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_WebAuthnAuth_$8252_storage_ptr_$", + "typeString": "type(struct WebAuthn.WebAuthnAuth storage pointer)" + } + } + ], + "id": 7349, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "15234:23:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_WebAuthnAuth_$8252_storage_ptr_$", + "typeString": "type(struct WebAuthn.WebAuthnAuth storage pointer)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_struct$_WebAuthnAuth_$8252_storage_ptr_$", + "typeString": "type(struct WebAuthn.WebAuthnAuth storage pointer)" + } + ], + "expression": { + "id": 7343, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "15197:3:16", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 7344, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "15201:6:16", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "15197:10:16", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 7350, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15197:61:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15161:97:16" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 7356, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7252, + "src": "15319:4:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 7354, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "15308:3:16", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 7355, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "15312:6:16", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "15308:10:16", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 7357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15308:16:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "hexValue": "66616c7365", + "id": 7358, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15337:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + { + "id": 7359, + "name": "auth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7342, + "src": "15358:4:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth memory" + } + }, + { + "id": 7360, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7325, + "src": "15367:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 7361, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7327, + "src": "15373:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 7352, + "name": "WebAuthn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8478, + "src": "15280:8:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_WebAuthn_$8478_$", + "typeString": "type(library WebAuthn)" + } + }, + "id": 7353, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15289:6:16", + "memberName": "verify", + "nodeType": "MemberAccess", + "referencedDeclaration": 8477, + "src": "15280:15:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$_t_bool_$_t_struct$_WebAuthnAuth_$8252_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (bytes memory,bool,struct WebAuthn.WebAuthnAuth memory,uint256,uint256) view returns (bool)" + } + }, + "id": 7362, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [ + "15297:9:16", + "15326:9:16", + "15344:12:16", + "15364:1:16", + "15370:1:16" + ], + "names": [ + "challenge", + "requireUV", + "webAuthnAuth", + "x", + "y" + ], + "nodeType": "FunctionCall", + "src": "15280:96:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 7259, + "id": 7363, + "nodeType": "Return", + "src": "15273:103:16" + } + ] + } + }, + { + "errorCall": { + "arguments": [ + { + "id": 7367, + "name": "ownerBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7271, + "src": "15428:10:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 7366, + "name": "InvalidOwnerBytesLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7617, + "src": "15404:23:16", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_bytes_memory_ptr_$returns$_t_error_$", + "typeString": "function (bytes memory) pure returns (error)" + } + }, + "id": 7368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15404:35:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 7369, + "nodeType": "RevertStatement", + "src": "15397:42:16" + } + ] + }, + "documentation": { + "id": 7250, + "nodeType": "StructuredDocumentation", + "src": "13711:281:16", + "text": "@inheritdoc ERC1271\n @dev Used by both `ERC1271.isValidSignature` AND `IAccount.validateUserOp` signature validation.\n @dev Reverts if `ownerBytes` is not compatible with `signature` format.\n @param signature ABI encoded `SignatureWrapper`." + }, + "id": 7371, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_isValidSignature", + "nameLocation": "14006:17:16", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 7256, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "14086:8:16" + }, + "parameters": { + "id": 7255, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7252, + "mutability": "mutable", + "name": "hash", + "nameLocation": "14032:4:16", + "nodeType": "VariableDeclaration", + "scope": 7371, + "src": "14024:12:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7251, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14024:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7254, + "mutability": "mutable", + "name": "signature", + "nameLocation": "14053:9:16", + "nodeType": "VariableDeclaration", + "scope": 7371, + "src": "14038:24:16", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7253, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "14038:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "14023:40:16" + }, + "returnParameters": { + "id": 7259, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7258, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7371, + "src": "14104:4:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7257, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "14104:4:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "14103:6:16" + }, + "scope": 7398, + "src": "13997:1449:16", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "baseFunctions": [ + 6394 + ], + "body": { + "id": 7381, + "nodeType": "Block", + "src": "15722:2:16", + "statements": [] + }, + "documentation": { + "id": 7372, + "nodeType": "StructuredDocumentation", + "src": "15452:171:16", + "text": "@inheritdoc UUPSUpgradeable\n @dev Authorization logic is only based on the `msg.sender` being an owner of this account,\n or `address(this)`." + }, + "id": 7382, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 7379, + "kind": "modifierInvocation", + "modifierName": { + "id": 7378, + "name": "onlyOwner", + "nameLocations": [ + "15712:9:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7652, + "src": "15712:9:16" + }, + "nodeType": "ModifierInvocation", + "src": "15712:9:16" + } + ], + "name": "_authorizeUpgrade", + "nameLocation": "15637:17:16", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 7377, + "nodeType": "OverrideSpecifier", + "overrides": [ + { + "id": 7376, + "name": "UUPSUpgradeable", + "nameLocations": [ + "15695:15:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6422, + "src": "15695:15:16" + } + ], + "src": "15686:25:16" + }, + "parameters": { + "id": 7375, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7374, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7382, + "src": "15655:7:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7373, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15655:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "15654:9:16" + }, + "returnParameters": { + "id": 7380, + "nodeType": "ParameterList", + "parameters": [], + "src": "15722:0:16" + }, + "scope": 7398, + "src": "15628:96:16", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "baseFunctions": [ + 6715 + ], + "body": { + "id": 7396, + "nodeType": "Block", + "src": "15862:51:16", + "statements": [ + { + "expression": { + "components": [ + { + "hexValue": "4769616e6f20536d6172742057616c6c6574", + "id": 7392, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15880:20:16", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_321a444b6eee393fdfbee13e3222c9c543be2342dd1ac24e520dc15d09993511", + "typeString": "literal_string \"Giano Smart Wallet\"" + }, + "value": "Giano Smart Wallet" + }, + { + "hexValue": "31", + "id": 7393, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15902:3:16", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6", + "typeString": "literal_string \"1\"" + }, + "value": "1" + } + ], + "id": 7394, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "15879:27:16", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_stringliteral_321a444b6eee393fdfbee13e3222c9c543be2342dd1ac24e520dc15d09993511_$_t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6_$", + "typeString": "tuple(literal_string \"Giano Smart Wallet\",literal_string \"1\")" + } + }, + "functionReturnParameters": 7391, + "id": 7395, + "nodeType": "Return", + "src": "15872:34:16" + } + ] + }, + "documentation": { + "id": 7383, + "nodeType": "StructuredDocumentation", + "src": "15730:23:16", + "text": "@inheritdoc ERC1271" + }, + "id": 7397, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_domainNameAndVersion", + "nameLocation": "15767:21:16", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 7386, + "nodeType": "OverrideSpecifier", + "overrides": [ + { + "id": 7385, + "name": "ERC1271", + "nameLocations": [ + "15814:7:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6726, + "src": "15814:7:16" + } + ], + "src": "15805:17:16" + }, + "parameters": { + "id": 7384, + "nodeType": "ParameterList", + "parameters": [], + "src": "15788:2:16" + }, + "returnParameters": { + "id": 7391, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7388, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7397, + "src": "15832:13:16", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 7387, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "15832:6:16", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7390, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7397, + "src": "15847:13:16", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 7389, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "15847:6:16", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "15831:30:16" + }, + "scope": 7398, + "src": "15758:155:16", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 7399, + "src": "1195:14720:16", + "usedErrors": [ + 2410, + 2465, + 6375, + 6443, + 6445, + 6787, + 6792, + 6797, + 6802, + 7593, + 7598, + 7603, + 7612, + 7617, + 7622, + 7625, + 7630 + ], + "usedEvents": [ + 6380, + 7637, + 7644 + ] + } + ], + "src": "32:15884:16" + }, + "id": 16 + }, + "src/GianoSmartWalletFactory.sol": { + "ast": { + "absolutePath": "src/GianoSmartWalletFactory.sol", + "exportedSymbols": { + "GianoSmartWallet": [ + 7398 + ], + "GianoSmartWalletFactory": [ + 7565 + ], + "LibClone": [ + 5104 + ] + }, + "id": 7566, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 7400, + "literals": [ + "solidity", + "^", + "0.8", + ".4" + ], + "nodeType": "PragmaDirective", + "src": "32:23:17" + }, + { + "absolutePath": "src/GianoSmartWallet.sol", + "file": "./GianoSmartWallet.sol", + "id": 7402, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7566, + "sourceUnit": 7399, + "src": "57:56:17", + "symbolAliases": [ + { + "foreign": { + "id": 7401, + "name": "GianoSmartWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7398, + "src": "65:16:17", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "solady/utils/LibClone.sol", + "file": "solady/utils/LibClone.sol", + "id": 7404, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7566, + "sourceUnit": 5105, + "src": "114:51:17", + "symbolAliases": [ + { + "foreign": { + "id": 7403, + "name": "LibClone", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5104, + "src": "122:8:17", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "GianoSmartWalletFactory", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 7405, + "nodeType": "StructuredDocumentation", + "src": "167:358:17", + "text": "@title Giano Smart Wallet Factory\n @notice GianoSmartWallet factory, based on Solady's ERC4337Factory.\n @author Applied Blockchain (https://github.com/appliedblockchain/giano)\n @author Coinbase (https://github.com/coinbase/smart-wallet)\n @author Solady (https://github.com/vectorized/solady/blob/main/src/accounts/ERC4337Factory.sol)" + }, + "fullyImplemented": true, + "id": 7565, + "linearizedBaseContracts": [ + 7565 + ], + "name": "GianoSmartWalletFactory", + "nameLocation": "534:23:17", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "documentation": { + "id": 7406, + "nodeType": "StructuredDocumentation", + "src": "564:91:17", + "text": "@notice Address of the ERC-4337 implementation used as implementation for new accounts." + }, + "functionSelector": "5c60da1b", + "id": 7408, + "mutability": "immutable", + "name": "implementation", + "nameLocation": "685:14:17", + "nodeType": "VariableDeclaration", + "scope": 7565, + "src": "660:39:17", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7407, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "660:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": { + "id": 7409, + "nodeType": "StructuredDocumentation", + "src": "706:219:17", + "text": "@notice Emitted when a new account is created.\n @param account The address of the created account.\n @param owners Array of initial owners.\n @param nonce The nonce of the created account." + }, + "eventSelector": "f8e246d8281c915feaf5c1ffd75d9a144f6dbdbbf545e286088661b19d8028f4", + "id": 7418, + "name": "AccountCreated", + "nameLocation": "936:14:17", + "nodeType": "EventDefinition", + "parameters": { + "id": 7417, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7411, + "indexed": true, + "mutability": "mutable", + "name": "account", + "nameLocation": "967:7:17", + "nodeType": "VariableDeclaration", + "scope": 7418, + "src": "951:23:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7410, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "951:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7414, + "indexed": false, + "mutability": "mutable", + "name": "owners", + "nameLocation": "984:6:17", + "nodeType": "VariableDeclaration", + "scope": 7418, + "src": "976:14:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 7412, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "976:5:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 7413, + "nodeType": "ArrayTypeName", + "src": "976:7:17", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7416, + "indexed": false, + "mutability": "mutable", + "name": "nonce", + "nameLocation": "1000:5:17", + "nodeType": "VariableDeclaration", + "scope": 7418, + "src": "992:13:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7415, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "992:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "950:56:17" + }, + "src": "930:77:17" + }, + { + "documentation": { + "id": 7419, + "nodeType": "StructuredDocumentation", + "src": "1013:88:17", + "text": "@notice Thrown when trying to construct with an implementation that is not deployed." + }, + "errorSelector": "870dfeb7", + "id": 7421, + "name": "ImplementationUndeployed", + "nameLocation": "1112:24:17", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7420, + "nodeType": "ParameterList", + "parameters": [], + "src": "1136:2:17" + }, + "src": "1106:33:17" + }, + { + "documentation": { + "id": 7422, + "nodeType": "StructuredDocumentation", + "src": "1146:92:17", + "text": "@notice Thrown when trying to create a new `GianoSmartWallet` account without any owner." + }, + "errorSelector": "3c776be1", + "id": 7424, + "name": "OwnerRequired", + "nameLocation": "1249:13:17", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7423, + "nodeType": "ParameterList", + "parameters": [], + "src": "1262:2:17" + }, + "src": "1243:22:17" + }, + { + "body": { + "id": 7443, + "nodeType": "Block", + "src": "1586:130:17", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7434, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 7430, + "name": "implementation_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7427, + "src": "1600:15:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 7431, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1616:4:17", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "1600:20:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 7432, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1621:6:17", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "1600:27:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 7433, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1631:1:17", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1600:32:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7438, + "nodeType": "IfStatement", + "src": "1596:71:17", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7435, + "name": "ImplementationUndeployed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7421, + "src": "1641:24:17", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" + } + }, + "id": 7436, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1641:26:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 7437, + "nodeType": "RevertStatement", + "src": "1634:33:17" + } + }, + { + "expression": { + "id": 7441, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7439, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7408, + "src": "1677:14:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 7440, + "name": "implementation_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7427, + "src": "1694:15:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1677:32:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 7442, + "nodeType": "ExpressionStatement", + "src": "1677:32:17" + } + ] + }, + "documentation": { + "id": 7425, + "nodeType": "StructuredDocumentation", + "src": "1271:265:17", + "text": "@notice Factory constructor used to initialize the implementation address to use for future\n GianoSmartWallet deployments.\n @param implementation_ The address of the GianoSmartWallet implementation which new accounts will proxy to." + }, + "id": 7444, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7428, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7427, + "mutability": "mutable", + "name": "implementation_", + "nameLocation": "1561:15:17", + "nodeType": "VariableDeclaration", + "scope": 7444, + "src": "1553:23:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7426, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1553:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1552:25:17" + }, + "returnParameters": { + "id": 7429, + "nodeType": "ParameterList", + "parameters": [], + "src": "1586:0:17" + }, + "scope": 7565, + "src": "1541:175:17", + "stateMutability": "payable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 7505, + "nodeType": "Block", + "src": "2588:443:17", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7459, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 7456, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7448, + "src": "2602:6:17", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + }, + "id": 7457, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2609:6:17", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2602:13:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 7458, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2619:1:17", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2602:18:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7464, + "nodeType": "IfStatement", + "src": "2598:71:17", + "trueBody": { + "id": 7463, + "nodeType": "Block", + "src": "2622:47:17", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7460, + "name": "OwnerRequired", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7424, + "src": "2643:13:17", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" + } + }, + "id": 7461, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2643:15:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 7462, + "nodeType": "RevertStatement", + "src": "2636:22:17" + } + ] + } + }, + { + "assignments": [ + 7466, + 7468 + ], + "declarations": [ + { + "constant": false, + "id": 7466, + "mutability": "mutable", + "name": "alreadyDeployed", + "nameLocation": "2685:15:17", + "nodeType": "VariableDeclaration", + "scope": 7505, + "src": "2680:20:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7465, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2680:4:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7468, + "mutability": "mutable", + "name": "accountAddress", + "nameLocation": "2710:14:17", + "nodeType": "VariableDeclaration", + "scope": 7505, + "src": "2702:22:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7467, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2702:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 7479, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 7471, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2764:3:17", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 7472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2768:5:17", + "memberName": "value", + "nodeType": "MemberAccess", + "src": "2764:9:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 7473, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7408, + "src": "2775:14:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 7475, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7448, + "src": "2800:6:17", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + }, + { + "id": 7476, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7450, + "src": "2808:5:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7474, + "name": "_getSalt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7564, + "src": "2791:8:17", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (bytes calldata[] calldata,uint256) pure returns (bytes32)" + } + }, + "id": 7477, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2791:23:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 7469, + "name": "LibClone", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5104, + "src": "2728:8:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibClone_$5104_$", + "typeString": "type(library LibClone)" + } + }, + "id": 7470, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2737:26:17", + "memberName": "createDeterministicERC1967", + "nodeType": "MemberAccess", + "referencedDeclaration": 3642, + "src": "2728:35:17", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$_t_bool_$_t_address_$", + "typeString": "function (uint256,address,bytes32) returns (bool,address)" + } + }, + "id": 7478, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2728:87:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_address_$", + "typeString": "tuple(bool,address)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2679:136:17" + }, + { + "expression": { + "id": 7487, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7480, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7454, + "src": "2826:7:17", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 7484, + "name": "accountAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7468, + "src": "2861:14:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 7483, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2853:8:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_payable_$", + "typeString": "type(address payable)" + }, + "typeName": { + "id": 7482, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2853:8:17", + "stateMutability": "payable", + "typeDescriptions": {} + } + }, + "id": 7485, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2853:23:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 7481, + "name": "GianoSmartWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7398, + "src": "2836:16:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_GianoSmartWallet_$7398_$", + "typeString": "type(contract GianoSmartWallet)" + } + }, + "id": 7486, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2836:41:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + } + }, + "src": "2826:51:17", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + } + }, + "id": 7488, + "nodeType": "ExpressionStatement", + "src": "2826:51:17" + }, + { + "condition": { + "id": 7490, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2892:16:17", + "subExpression": { + "id": 7489, + "name": "alreadyDeployed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7466, + "src": "2893:15:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7504, + "nodeType": "IfStatement", + "src": "2888:137:17", + "trueBody": { + "id": 7503, + "nodeType": "Block", + "src": "2910:115:17", + "statements": [ + { + "eventCall": { + "arguments": [ + { + "id": 7492, + "name": "accountAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7468, + "src": "2944:14:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 7493, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7448, + "src": "2960:6:17", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + }, + { + "id": 7494, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7450, + "src": "2968:5:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7491, + "name": "AccountCreated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7418, + "src": "2929:14:17", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$returns$__$", + "typeString": "function (address,bytes memory[] memory,uint256)" + } + }, + "id": 7495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2929:45:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7496, + "nodeType": "EmitStatement", + "src": "2924:50:17" + }, + { + "expression": { + "arguments": [ + { + "id": 7500, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7448, + "src": "3007:6:17", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + ], + "expression": { + "id": 7497, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7454, + "src": "2988:7:17", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + } + }, + "id": 7499, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2996:10:17", + "memberName": "initialize", + "nodeType": "MemberAccess", + "referencedDeclaration": 6892, + "src": "2988:18:17", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$__$", + "typeString": "function (bytes memory[] memory) payable external" + } + }, + "id": 7501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2988:26:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7502, + "nodeType": "ExpressionStatement", + "src": "2988:26:17" + } + ] + } + } + ] + }, + "documentation": { + "id": 7445, + "nodeType": "StructuredDocumentation", + "src": "1722:738:17", + "text": "@notice Returns the deterministic address for a GianoSmartWallet created with `owners` and `nonce`\n deploys and initializes contract if it has not yet been created.\n @dev Deployed as a ERC-1967 proxy that's implementation is `this.implementation`.\n @param owners Array of initial owners. Each item should be an ABI encoded address or 64 byte public key.\n @param nonce The nonce of the account, a caller defined value which allows multiple accounts\n with the same `owners` to exist at different addresses.\n @return account The address of the ERC-1967 proxy created with inputs `owners`, `nonce`, and\n `this.implementation`." + }, + "functionSelector": "3ffba36f", + "id": 7506, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createAccount", + "nameLocation": "2474:13:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7451, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7448, + "mutability": "mutable", + "name": "owners", + "nameLocation": "2505:6:17", + "nodeType": "VariableDeclaration", + "scope": 7506, + "src": "2488:23:17", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 7446, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2488:5:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 7447, + "nodeType": "ArrayTypeName", + "src": "2488:7:17", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7450, + "mutability": "mutable", + "name": "nonce", + "nameLocation": "2521:5:17", + "nodeType": "VariableDeclaration", + "scope": 7506, + "src": "2513:13:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7449, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2513:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2487:40:17" + }, + "returnParameters": { + "id": 7455, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7454, + "mutability": "mutable", + "name": "account", + "nameLocation": "2579:7:17", + "nodeType": "VariableDeclaration", + "scope": 7506, + "src": "2562:24:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + }, + "typeName": { + "id": 7453, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7452, + "name": "GianoSmartWallet", + "nameLocations": [ + "2562:16:17" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7398, + "src": "2562:16:17" + }, + "referencedDeclaration": 7398, + "src": "2562:16:17", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + } + }, + "visibility": "internal" + } + ], + "src": "2561:26:17" + }, + "scope": 7565, + "src": "2465:566:17", + "stateMutability": "payable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 7531, + "nodeType": "Block", + "src": "3486:116:17", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7519, + "name": "initCodeHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7544, + "src": "3540:12:17", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$", + "typeString": "function () view returns (bytes32)" + } + }, + "id": 7520, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3540:14:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "id": 7522, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7510, + "src": "3565:6:17", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + }, + { + "id": 7523, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7512, + "src": "3573:5:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7521, + "name": "_getSalt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7564, + "src": "3556:8:17", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (bytes calldata[] calldata,uint256) pure returns (bytes32)" + } + }, + "id": 7524, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3556:23:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "id": 7527, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "3589:4:17", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GianoSmartWalletFactory_$7565", + "typeString": "contract GianoSmartWalletFactory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_GianoSmartWalletFactory_$7565", + "typeString": "contract GianoSmartWalletFactory" + } + ], + "id": 7526, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3581:7:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 7525, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3581:7:17", + "typeDescriptions": {} + } + }, + "id": 7528, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3581:13:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 7517, + "name": "LibClone", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5104, + "src": "3503:8:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibClone_$5104_$", + "typeString": "type(library LibClone)" + } + }, + "id": 7518, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3512:27:17", + "memberName": "predictDeterministicAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 5081, + "src": "3503:36:17", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_address_$", + "typeString": "function (bytes32,bytes32,address) pure returns (address)" + } + }, + "id": 7529, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3503:92:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 7516, + "id": 7530, + "nodeType": "Return", + "src": "3496:99:17" + } + ] + }, + "documentation": { + "id": 7507, + "nodeType": "StructuredDocumentation", + "src": "3037:352:17", + "text": "@notice Returns the deterministic address of the account that would be created by `createAccount`.\n @param owners Array of initial owners. Each item should be an ABI encoded address or 64 byte public key.\n @param nonce The nonce provided to `createAccount()`.\n @return The predicted account deployment address." + }, + "functionSelector": "250b1b41", + "id": 7532, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAddress", + "nameLocation": "3403:10:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7513, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7510, + "mutability": "mutable", + "name": "owners", + "nameLocation": "3431:6:17", + "nodeType": "VariableDeclaration", + "scope": 7532, + "src": "3414:23:17", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 7508, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3414:5:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 7509, + "nodeType": "ArrayTypeName", + "src": "3414:7:17", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7512, + "mutability": "mutable", + "name": "nonce", + "nameLocation": "3447:5:17", + "nodeType": "VariableDeclaration", + "scope": 7532, + "src": "3439:13:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7511, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3439:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3413:40:17" + }, + "returnParameters": { + "id": 7516, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7515, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7532, + "src": "3477:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7514, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3477:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3476:9:17" + }, + "scope": 7565, + "src": "3394:208:17", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 7543, + "nodeType": "Block", + "src": "3873:68:17", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 7540, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7408, + "src": "3919:14:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 7538, + "name": "LibClone", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5104, + "src": "3890:8:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibClone_$5104_$", + "typeString": "type(library LibClone)" + } + }, + "id": 7539, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3899:19:17", + "memberName": "initCodeHashERC1967", + "nodeType": "MemberAccess", + "referencedDeclaration": 3662, + "src": "3890:28:17", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_bytes32_$", + "typeString": "function (address) pure returns (bytes32)" + } + }, + "id": 7541, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3890:44:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 7537, + "id": 7542, + "nodeType": "Return", + "src": "3883:51:17" + } + ] + }, + "documentation": { + "id": 7533, + "nodeType": "StructuredDocumentation", + "src": "3608:198:17", + "text": "@notice Returns the initialization code hash of the account:\n a ERC1967 proxy that's implementation is `this.implementation`.\n @return The initialization code hash." + }, + "functionSelector": "db4c545e", + "id": 7544, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeHash", + "nameLocation": "3820:12:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7534, + "nodeType": "ParameterList", + "parameters": [], + "src": "3832:2:17" + }, + "returnParameters": { + "id": 7537, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7536, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7544, + "src": "3864:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7535, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3864:7:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3863:9:17" + }, + "scope": 7565, + "src": "3811:130:17", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 7563, + "nodeType": "Block", + "src": "4348:60:17", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 7558, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7548, + "src": "4386:6:17", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + }, + { + "id": 7559, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7550, + "src": "4394:5:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 7556, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "4375:3:17", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 7557, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4379:6:17", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "4375:10:17", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 7560, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4375:25:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 7555, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "4365:9:17", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 7561, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4365:36:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 7554, + "id": 7562, + "nodeType": "Return", + "src": "4358:43:17" + } + ] + }, + "documentation": { + "id": 7545, + "nodeType": "StructuredDocumentation", + "src": "3947:306:17", + "text": "@notice Returns the create2 salt for `LibClone.predictDeterministicAddress`\n @param owners Array of initial owners. Each item should be an ABI encoded address or 64 byte public key.\n @param nonce The nonce provided to `createAccount()`.\n @return The computed salt." + }, + "id": 7564, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getSalt", + "nameLocation": "4267:8:17", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7551, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7548, + "mutability": "mutable", + "name": "owners", + "nameLocation": "4293:6:17", + "nodeType": "VariableDeclaration", + "scope": 7564, + "src": "4276:23:17", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 7546, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4276:5:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 7547, + "nodeType": "ArrayTypeName", + "src": "4276:7:17", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7550, + "mutability": "mutable", + "name": "nonce", + "nameLocation": "4309:5:17", + "nodeType": "VariableDeclaration", + "scope": 7564, + "src": "4301:13:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7549, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4301:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4275:40:17" + }, + "returnParameters": { + "id": 7554, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7553, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7564, + "src": "4339:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7552, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4339:7:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4338:9:17" + }, + "scope": 7565, + "src": "4258:150:17", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 7566, + "src": "525:3885:17", + "usedErrors": [ + 7421, + 7424 + ], + "usedEvents": [ + 7418 + ] + } + ], + "src": "32:4379:17" + }, + "id": 17 + }, + "src/MultiOwnable.sol": { + "ast": { + "absolutePath": "src/MultiOwnable.sol", + "exportedSymbols": { + "MultiOwnable": [ + 8101 + ], + "MultiOwnableStorage": [ + 7585 + ] + }, + "id": 8102, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 7567, + "literals": [ + "solidity", + "^", + "0.8", + ".18" + ], + "nodeType": "PragmaDirective", + "src": "32:24:18" + }, + { + "canonicalName": "MultiOwnableStorage", + "documentation": { + "id": 7568, + "nodeType": "StructuredDocumentation", + "src": "58:130:18", + "text": "@notice Storage layout used by this contract.\n @custom:storage-location erc7201:appliedblockchain.storage.MultiOwnable" + }, + "id": 7585, + "members": [ + { + "constant": false, + "id": 7571, + "mutability": "mutable", + "name": "nextOwnerIndex", + "nameLocation": "285:14:18", + "nodeType": "VariableDeclaration", + "scope": 7585, + "src": "277:22:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7570, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "277:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7574, + "mutability": "mutable", + "name": "removedOwnersCount", + "nameLocation": "374:18:18", + "nodeType": "VariableDeclaration", + "scope": 7585, + "src": "366:26:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7573, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "366:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7579, + "mutability": "mutable", + "name": "ownerAtIndex", + "nameLocation": "989:12:18", + "nodeType": "VariableDeclaration", + "scope": 7585, + "src": "951:50:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$", + "typeString": "mapping(uint256 => bytes)" + }, + "typeName": { + "id": 7578, + "keyName": "index", + "keyNameLocation": "967:5:18", + "keyType": { + "id": 7576, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "959:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "951:37:18", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$", + "typeString": "mapping(uint256 => bytes)" + }, + "valueName": "owner", + "valueNameLocation": "982:5:18", + "valueType": { + "id": 7577, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "976:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7584, + "mutability": "mutable", + "name": "isOwner", + "nameLocation": "1164:7:18", + "nodeType": "VariableDeclaration", + "scope": 7585, + "src": "1125:46:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_bool_$", + "typeString": "mapping(bytes => bool)" + }, + "typeName": { + "id": 7583, + "keyName": "bytes_", + "keyNameLocation": "1139:6:18", + "keyType": { + "id": 7581, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1133:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "nodeType": "Mapping", + "src": "1125:38:18", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_bool_$", + "typeString": "mapping(bytes => bool)" + }, + "valueName": "isOwner_", + "valueNameLocation": "1154:8:18", + "valueType": { + "id": 7582, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1149:4:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "visibility": "internal" + } + ], + "name": "MultiOwnableStorage", + "nameLocation": "195:19:18", + "nodeType": "StructDefinition", + "scope": 8102, + "src": "188:986:18", + "visibility": "public" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "MultiOwnable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 7586, + "nodeType": "StructuredDocumentation", + "src": "1176:251:18", + "text": "@title Multi Ownable\n @notice Auth contract allowing multiple owners, each identified as bytes.\n @author Applied Blockchain (https://github.com/appliedblockchain/giano)\n @author Coinbase (https://github.com/coinbase/smart-wallet)" + }, + "fullyImplemented": true, + "id": 8101, + "linearizedBaseContracts": [ + 8101 + ], + "name": "MultiOwnable", + "nameLocation": "1436:12:18", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "documentation": { + "id": 7587, + "nodeType": "StructuredDocumentation", + "src": "1455:293:18", + "text": "@dev Slot for the `MultiOwnableStorage` struct in storage.\n Computed from\n keccak256(abi.encode(uint256(keccak256(\"appliedblockchain.storage.MultiOwnable\")) - 1)) & ~bytes32(uint256(0xff))\n Follows ERC-7201 (see https://eips.ethereum.org/EIPS/eip-7201)." + }, + "id": 7590, + "mutability": "constant", + "name": "MUTLI_OWNABLE_STORAGE_LOCATION", + "nameLocation": "1778:30:18", + "nodeType": "VariableDeclaration", + "scope": 8101, + "src": "1753:132:18", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7588, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1753:7:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307830363237663732616630653666343132313935623064386163626534333862323830393064643534356237643233333166636366373737323335363166353030", + "id": 7589, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1819:66:18", + "typeDescriptions": { + "typeIdentifier": "t_rational_2784490016061331327668105261358156012958660789088861839901469404483232593152_by_1", + "typeString": "int_const 2784...(68 digits omitted)...3152" + }, + "value": "0x0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f500" + }, + "visibility": "private" + }, + { + "documentation": { + "id": 7591, + "nodeType": "StructuredDocumentation", + "src": "1892:101:18", + "text": "@notice Thrown when the `msg.sender` is not an owner and is trying to call a privileged function." + }, + "errorSelector": "82b42900", + "id": 7593, + "name": "Unauthorized", + "nameLocation": "2004:12:18", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7592, + "nodeType": "ParameterList", + "parameters": [], + "src": "2016:2:18" + }, + "src": "1998:21:18" + }, + { + "documentation": { + "id": 7594, + "nodeType": "StructuredDocumentation", + "src": "2025:112:18", + "text": "@notice Thrown when trying to add an already registered owner.\n @param owner The owner bytes." + }, + "errorSelector": "8d16255a", + "id": 7598, + "name": "AlreadyOwner", + "nameLocation": "2148:12:18", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7597, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7596, + "mutability": "mutable", + "name": "owner", + "nameLocation": "2167:5:18", + "nodeType": "VariableDeclaration", + "scope": 7598, + "src": "2161:11:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7595, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2161:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "2160:13:18" + }, + "src": "2142:32:18" + }, + { + "documentation": { + "id": 7599, + "nodeType": "StructuredDocumentation", + "src": "2180:139:18", + "text": "@notice Thrown when trying to remove an owner from an index that is empty.\n @param index The targeted index for removal." + }, + "errorSelector": "68188e7a", + "id": 7603, + "name": "NoOwnerAtIndex", + "nameLocation": "2330:14:18", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7602, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7601, + "mutability": "mutable", + "name": "index", + "nameLocation": "2353:5:18", + "nodeType": "VariableDeclaration", + "scope": 7603, + "src": "2345:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7600, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2345:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2344:15:18" + }, + "src": "2324:36:18" + }, + { + "documentation": { + "id": 7604, + "nodeType": "StructuredDocumentation", + "src": "2366:276:18", + "text": "@notice Thrown when `owner` argument does not match owner found at index.\n @param index The index of the owner to be removed.\n @param expectedOwner The owner passed in the remove call.\n @param actualOwner The actual owner at `index`." + }, + "errorSelector": "781f2e39", + "id": 7612, + "name": "WrongOwnerAtIndex", + "nameLocation": "2653:17:18", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7611, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7606, + "mutability": "mutable", + "name": "index", + "nameLocation": "2679:5:18", + "nodeType": "VariableDeclaration", + "scope": 7612, + "src": "2671:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7605, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2671:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7608, + "mutability": "mutable", + "name": "expectedOwner", + "nameLocation": "2692:13:18", + "nodeType": "VariableDeclaration", + "scope": 7612, + "src": "2686:19:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7607, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2686:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7610, + "mutability": "mutable", + "name": "actualOwner", + "nameLocation": "2713:11:18", + "nodeType": "VariableDeclaration", + "scope": 7612, + "src": "2707:17:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7609, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2707:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "2670:55:18" + }, + "src": "2647:79:18" + }, + { + "documentation": { + "id": 7613, + "nodeType": "StructuredDocumentation", + "src": "2732:173:18", + "text": "@notice Thrown when a provided owner is neither 64 bytes long (for public key)\n nor a ABI encoded address.\n @param owner The invalid owner." + }, + "errorSelector": "4eeab722", + "id": 7617, + "name": "InvalidOwnerBytesLength", + "nameLocation": "2916:23:18", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7616, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7615, + "mutability": "mutable", + "name": "owner", + "nameLocation": "2946:5:18", + "nodeType": "VariableDeclaration", + "scope": 7617, + "src": "2940:11:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7614, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2940:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "2939:13:18" + }, + "src": "2910:43:18" + }, + { + "documentation": { + "id": 7618, + "nodeType": "StructuredDocumentation", + "src": "2959:142:18", + "text": "@notice Thrown if a provided owner is 32 bytes long but does not fit in an `address` type.\n @param owner The invalid owner." + }, + "errorSelector": "bff1ac65", + "id": 7622, + "name": "InvalidEthereumAddressOwner", + "nameLocation": "3112:27:18", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7621, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7620, + "mutability": "mutable", + "name": "owner", + "nameLocation": "3146:5:18", + "nodeType": "VariableDeclaration", + "scope": 7622, + "src": "3140:11:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7619, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3140:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3139:13:18" + }, + "src": "3106:47:18" + }, + { + "documentation": { + "id": 7623, + "nodeType": "StructuredDocumentation", + "src": "3159:89:18", + "text": "@notice Thrown when removeOwnerAtIndex is called and there is only one current owner." + }, + "errorSelector": "948bf897", + "id": 7625, + "name": "LastOwner", + "nameLocation": "3259:9:18", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7624, + "nodeType": "ParameterList", + "parameters": [], + "src": "3268:2:18" + }, + "src": "3253:18:18" + }, + { + "documentation": { + "id": 7626, + "nodeType": "StructuredDocumentation", + "src": "3277:160:18", + "text": "@notice Thrown when removeLastOwner is called and there is more than one current owner.\n @param ownersRemaining The number of current owners." + }, + "errorSelector": "823f1aa8", + "id": 7630, + "name": "NotLastOwner", + "nameLocation": "3448:12:18", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 7629, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7628, + "mutability": "mutable", + "name": "ownersRemaining", + "nameLocation": "3469:15:18", + "nodeType": "VariableDeclaration", + "scope": 7630, + "src": "3461:23:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7627, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3461:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3460:25:18" + }, + "src": "3442:44:18" + }, + { + "anonymous": false, + "documentation": { + "id": 7631, + "nodeType": "StructuredDocumentation", + "src": "3492:154:18", + "text": "@notice Emitted when a new owner is registered.\n @param index The owner index of the owner added.\n @param owner The owner added." + }, + "eventSelector": "38109edc26e166b5579352ce56a50813177eb25208fd90d61f2f378386220220", + "id": 7637, + "name": "AddOwner", + "nameLocation": "3657:8:18", + "nodeType": "EventDefinition", + "parameters": { + "id": 7636, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7633, + "indexed": true, + "mutability": "mutable", + "name": "index", + "nameLocation": "3682:5:18", + "nodeType": "VariableDeclaration", + "scope": 7637, + "src": "3666:21:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7632, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3666:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7635, + "indexed": false, + "mutability": "mutable", + "name": "owner", + "nameLocation": "3695:5:18", + "nodeType": "VariableDeclaration", + "scope": 7637, + "src": "3689:11:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7634, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3689:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3665:36:18" + }, + "src": "3651:51:18" + }, + { + "anonymous": false, + "documentation": { + "id": 7638, + "nodeType": "StructuredDocumentation", + "src": "3708:152:18", + "text": "@notice Emitted when an owner is removed.\n @param index The owner index of the owner removed.\n @param owner The owner removed." + }, + "eventSelector": "cf95bbfe6f870f8cc40482dc3dccdafd268f0e9ce0a4f24ea1bea9be64e505ff", + "id": 7644, + "name": "RemoveOwner", + "nameLocation": "3871:11:18", + "nodeType": "EventDefinition", + "parameters": { + "id": 7643, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7640, + "indexed": true, + "mutability": "mutable", + "name": "index", + "nameLocation": "3899:5:18", + "nodeType": "VariableDeclaration", + "scope": 7644, + "src": "3883:21:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7639, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3883:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7642, + "indexed": false, + "mutability": "mutable", + "name": "owner", + "nameLocation": "3912:5:18", + "nodeType": "VariableDeclaration", + "scope": 7644, + "src": "3906:11:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7641, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3906:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3882:36:18" + }, + "src": "3865:54:18" + }, + { + "body": { + "id": 7651, + "nodeType": "Block", + "src": "4037:41:18", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7647, + "name": "_checkOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8091, + "src": "4047:11:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$__$", + "typeString": "function () view" + } + }, + "id": 7648, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4047:13:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7649, + "nodeType": "ExpressionStatement", + "src": "4047:13:18" + }, + { + "id": 7650, + "nodeType": "PlaceholderStatement", + "src": "4070:1:18" + } + ] + }, + "documentation": { + "id": 7645, + "nodeType": "StructuredDocumentation", + "src": "3925:78:18", + "text": "@notice Access control modifier ensuring the caller is an authorized owner" + }, + "id": 7652, + "name": "onlyOwner", + "nameLocation": "4017:9:18", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 7646, + "nodeType": "ParameterList", + "parameters": [], + "src": "4026:2:18" + }, + "src": "4008:70:18", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 7671, + "nodeType": "Block", + "src": "4250:96:18", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 7663, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7655, + "src": "4288:5:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 7661, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "4277:3:18", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 7662, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4281:6:18", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "4277:10:18", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 7664, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4277:17:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 7668, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "4296:42:18", + "subExpression": { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7665, + "name": "_getMultiOwnableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8100, + "src": "4296:23:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_MultiOwnableStorage_$7585_storage_ptr_$", + "typeString": "function () pure returns (struct MultiOwnableStorage storage pointer)" + } + }, + "id": 7666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4296:25:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage storage pointer" + } + }, + "id": 7667, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "4322:14:18", + "memberName": "nextOwnerIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 7571, + "src": "4296:40:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7660, + "name": "_addOwnerAtIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8000, + "src": "4260:16:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_uint256_$returns$__$", + "typeString": "function (bytes memory,uint256)" + } + }, + "id": 7669, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4260:79:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7670, + "nodeType": "ExpressionStatement", + "src": "4260:79:18" + } + ] + }, + "documentation": { + "id": 7653, + "nodeType": "StructuredDocumentation", + "src": "4084:94:18", + "text": "@notice Adds a new Ethereum-address owner.\n @param owner The owner address." + }, + "functionSelector": "0f0f3f24", + "id": 7672, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 7658, + "kind": "modifierInvocation", + "modifierName": { + "id": 7657, + "name": "onlyOwner", + "nameLocations": [ + "4240:9:18" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7652, + "src": "4240:9:18" + }, + "nodeType": "ModifierInvocation", + "src": "4240:9:18" + } + ], + "name": "addOwnerAddress", + "nameLocation": "4192:15:18", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7656, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7655, + "mutability": "mutable", + "name": "owner", + "nameLocation": "4216:5:18", + "nodeType": "VariableDeclaration", + "scope": 7672, + "src": "4208:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7654, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4208:7:18", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4207:15:18" + }, + "returnParameters": { + "id": 7659, + "nodeType": "ParameterList", + "parameters": [], + "src": "4250:0:18" + }, + "scope": 8101, + "src": "4183:163:18", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 7694, + "nodeType": "Block", + "src": "4585:95:18", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 7685, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7675, + "src": "4623:1:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 7686, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7677, + "src": "4626:1:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 7683, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "4612:3:18", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 7684, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4616:6:18", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "4612:10:18", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 7687, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4612:16:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 7691, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "4630:42:18", + "subExpression": { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7688, + "name": "_getMultiOwnableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8100, + "src": "4630:23:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_MultiOwnableStorage_$7585_storage_ptr_$", + "typeString": "function () pure returns (struct MultiOwnableStorage storage pointer)" + } + }, + "id": 7689, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4630:25:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage storage pointer" + } + }, + "id": 7690, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "4656:14:18", + "memberName": "nextOwnerIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 7571, + "src": "4630:40:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7682, + "name": "_addOwnerAtIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8000, + "src": "4595:16:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_uint256_$returns$__$", + "typeString": "function (bytes memory,uint256)" + } + }, + "id": 7692, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4595:78:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7693, + "nodeType": "ExpressionStatement", + "src": "4595:78:18" + } + ] + }, + "documentation": { + "id": 7673, + "nodeType": "StructuredDocumentation", + "src": "4352:152:18", + "text": "@notice Adds a new public-key owner.\n @param x The owner public key x coordinate.\n @param y The owner public key y coordinate." + }, + "functionSelector": "29565e3b", + "id": 7695, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 7680, + "kind": "modifierInvocation", + "modifierName": { + "id": 7679, + "name": "onlyOwner", + "nameLocations": [ + "4575:9:18" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7652, + "src": "4575:9:18" + }, + "nodeType": "ModifierInvocation", + "src": "4575:9:18" + } + ], + "name": "addOwnerPublicKey", + "nameLocation": "4518:17:18", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7678, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7675, + "mutability": "mutable", + "name": "x", + "nameLocation": "4544:1:18", + "nodeType": "VariableDeclaration", + "scope": 7695, + "src": "4536:9:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7674, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4536:7:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7677, + "mutability": "mutable", + "name": "y", + "nameLocation": "4555:1:18", + "nodeType": "VariableDeclaration", + "scope": 7695, + "src": "4547:9:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7676, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4547:7:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4535:22:18" + }, + "returnParameters": { + "id": 7681, + "nodeType": "ParameterList", + "parameters": [], + "src": "4585:0:18" + }, + "scope": 8101, + "src": "4509:171:18", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 7719, + "nodeType": "Block", + "src": "5170:126:18", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7708, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7705, + "name": "ownerCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7849, + "src": "5184:10:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 7706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5184:12:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "31", + "id": 7707, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5200:1:18", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "5184:17:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7713, + "nodeType": "IfStatement", + "src": "5180:66:18", + "trueBody": { + "id": 7712, + "nodeType": "Block", + "src": "5203:43:18", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7709, + "name": "LastOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7625, + "src": "5224:9:18", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" + } + }, + "id": 7710, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5224:11:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 7711, + "nodeType": "RevertStatement", + "src": "5217:18:18" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 7715, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7698, + "src": "5276:5:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 7716, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7700, + "src": "5283:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 7714, + "name": "_removeOwnerAtIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8067, + "src": "5256:19:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bytes_calldata_ptr_$returns$__$", + "typeString": "function (uint256,bytes calldata)" + } + }, + "id": 7717, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5256:33:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7718, + "nodeType": "ExpressionStatement", + "src": "5256:33:18" + } + ] + }, + "documentation": { + "id": 7696, + "nodeType": "StructuredDocumentation", + "src": "4686:387:18", + "text": "@notice Removes owner at the given `index`.\n @dev Reverts if the owner is not registered at `index`.\n @dev Reverts if there is currently only one owner.\n @dev Reverts if `owner` does not match bytes found at `index`.\n @param index The index of the owner to be removed.\n @param owner The ABI encoded bytes of the owner to be removed." + }, + "functionSelector": "89625b57", + "id": 7720, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 7703, + "kind": "modifierInvocation", + "modifierName": { + "id": 7702, + "name": "onlyOwner", + "nameLocations": [ + "5160:9:18" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7652, + "src": "5160:9:18" + }, + "nodeType": "ModifierInvocation", + "src": "5160:9:18" + } + ], + "name": "removeOwnerAtIndex", + "nameLocation": "5087:18:18", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7701, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7698, + "mutability": "mutable", + "name": "index", + "nameLocation": "5114:5:18", + "nodeType": "VariableDeclaration", + "scope": 7720, + "src": "5106:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7697, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5106:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7700, + "mutability": "mutable", + "name": "owner", + "nameLocation": "5136:5:18", + "nodeType": "VariableDeclaration", + "scope": 7720, + "src": "5121:20:18", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7699, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5121:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5105:37:18" + }, + "returnParameters": { + "id": 7704, + "nodeType": "ParameterList", + "parameters": [], + "src": "5170:0:18" + }, + "scope": 8101, + "src": "5078:218:18", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 7749, + "nodeType": "Block", + "src": "5828:194:18", + "statements": [ + { + "assignments": [ + 7731 + ], + "declarations": [ + { + "constant": false, + "id": 7731, + "mutability": "mutable", + "name": "ownersRemaining", + "nameLocation": "5846:15:18", + "nodeType": "VariableDeclaration", + "scope": 7749, + "src": "5838:23:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7730, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5838:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7734, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7732, + "name": "ownerCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7849, + "src": "5864:10:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 7733, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5864:12:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5838:38:18" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7737, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7735, + "name": "ownersRemaining", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7731, + "src": "5890:15:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "31", + "id": 7736, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5908:1:18", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "5890:19:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7743, + "nodeType": "IfStatement", + "src": "5886:86:18", + "trueBody": { + "id": 7742, + "nodeType": "Block", + "src": "5911:61:18", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 7739, + "name": "ownersRemaining", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7731, + "src": "5945:15:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7738, + "name": "NotLastOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7630, + "src": "5932:12:18", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$_t_error_$", + "typeString": "function (uint256) pure returns (error)" + } + }, + "id": 7740, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5932:29:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 7741, + "nodeType": "RevertStatement", + "src": "5925:36:18" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 7745, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7723, + "src": "6002:5:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 7746, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7725, + "src": "6009:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 7744, + "name": "_removeOwnerAtIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8067, + "src": "5982:19:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bytes_calldata_ptr_$returns$__$", + "typeString": "function (uint256,bytes calldata)" + } + }, + "id": 7747, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5982:33:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7748, + "nodeType": "ExpressionStatement", + "src": "5982:33:18" + } + ] + }, + "documentation": { + "id": 7721, + "nodeType": "StructuredDocumentation", + "src": "5302:432:18", + "text": "@notice Removes owner at the given `index`, which should be the only current owner.\n @dev Reverts if the owner is not registered at `index`.\n @dev Reverts if there is currently more than one owner.\n @dev Reverts if `owner` does not match bytes found at `index`.\n @param index The index of the owner to be removed.\n @param owner The ABI encoded bytes of the owner to be removed." + }, + "functionSelector": "b8197367", + "id": 7750, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 7728, + "kind": "modifierInvocation", + "modifierName": { + "id": 7727, + "name": "onlyOwner", + "nameLocations": [ + "5818:9:18" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7652, + "src": "5818:9:18" + }, + "nodeType": "ModifierInvocation", + "src": "5818:9:18" + } + ], + "name": "removeLastOwner", + "nameLocation": "5748:15:18", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7726, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7723, + "mutability": "mutable", + "name": "index", + "nameLocation": "5772:5:18", + "nodeType": "VariableDeclaration", + "scope": 7750, + "src": "5764:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7722, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5764:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7725, + "mutability": "mutable", + "name": "owner", + "nameLocation": "5794:5:18", + "nodeType": "VariableDeclaration", + "scope": 7750, + "src": "5779:20:18", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7724, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5779:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5763:37:18" + }, + "returnParameters": { + "id": 7729, + "nodeType": "ParameterList", + "parameters": [], + "src": "5828:0:18" + }, + "scope": 8101, + "src": "5739:283:18", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 7767, + "nodeType": "Block", + "src": "6315:78:18", + "statements": [ + { + "expression": { + "baseExpression": { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7758, + "name": "_getMultiOwnableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8100, + "src": "6332:23:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_MultiOwnableStorage_$7585_storage_ptr_$", + "typeString": "function () pure returns (struct MultiOwnableStorage storage pointer)" + } + }, + "id": 7759, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6332:25:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage storage pointer" + } + }, + "id": 7760, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6358:7:18", + "memberName": "isOwner", + "nodeType": "MemberAccess", + "referencedDeclaration": 7584, + "src": "6332:33:18", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_bool_$", + "typeString": "mapping(bytes memory => bool)" + } + }, + "id": 7765, + "indexExpression": { + "arguments": [ + { + "id": 7763, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7753, + "src": "6377:7:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 7761, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "6366:3:18", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 7762, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6370:6:18", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "6366:10:18", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 7764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6366:19:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6332:54:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 7757, + "id": 7766, + "nodeType": "Return", + "src": "6325:61:18" + } + ] + }, + "documentation": { + "id": 7751, + "nodeType": "StructuredDocumentation", + "src": "6028:206:18", + "text": "@notice Checks if the given `account` address is registered as owner.\n @param account The account address to check.\n @return `true` if the account is an owner else `false`." + }, + "functionSelector": "a2e1a8d8", + "id": 7768, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isOwnerAddress", + "nameLocation": "6248:14:18", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7754, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7753, + "mutability": "mutable", + "name": "account", + "nameLocation": "6271:7:18", + "nodeType": "VariableDeclaration", + "scope": 7768, + "src": "6263:15:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7752, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6263:7:18", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6262:17:18" + }, + "returnParameters": { + "id": 7757, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7756, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7768, + "src": "6309:4:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7755, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6309:4:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "6308:6:18" + }, + "scope": 8101, + "src": "6239:154:18", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 7788, + "nodeType": "Block", + "src": "6734:75:18", + "statements": [ + { + "expression": { + "baseExpression": { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7778, + "name": "_getMultiOwnableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8100, + "src": "6751:23:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_MultiOwnableStorage_$7585_storage_ptr_$", + "typeString": "function () pure returns (struct MultiOwnableStorage storage pointer)" + } + }, + "id": 7779, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6751:25:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage storage pointer" + } + }, + "id": 7780, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6777:7:18", + "memberName": "isOwner", + "nodeType": "MemberAccess", + "referencedDeclaration": 7584, + "src": "6751:33:18", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_bool_$", + "typeString": "mapping(bytes memory => bool)" + } + }, + "id": 7786, + "indexExpression": { + "arguments": [ + { + "id": 7783, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7771, + "src": "6796:1:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 7784, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7773, + "src": "6799:1:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 7781, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "6785:3:18", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 7782, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6789:6:18", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "6785:10:18", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 7785, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6785:16:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6751:51:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 7777, + "id": 7787, + "nodeType": "Return", + "src": "6744:58:18" + } + ] + }, + "documentation": { + "id": 7769, + "nodeType": "StructuredDocumentation", + "src": "6399:247:18", + "text": "@notice Checks if the given `x`, `y` public key is registered as owner.\n @param x The public key x coordinate.\n @param y The public key y coordinate.\n @return `true` if the account is an owner else `false`." + }, + "functionSelector": "066a1eb7", + "id": 7789, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isOwnerPublicKey", + "nameLocation": "6660:16:18", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7774, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7771, + "mutability": "mutable", + "name": "x", + "nameLocation": "6685:1:18", + "nodeType": "VariableDeclaration", + "scope": 7789, + "src": "6677:9:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7770, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6677:7:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7773, + "mutability": "mutable", + "name": "y", + "nameLocation": "6696:1:18", + "nodeType": "VariableDeclaration", + "scope": 7789, + "src": "6688:9:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 7772, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6688:7:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "6676:22:18" + }, + "returnParameters": { + "id": 7777, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7776, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7789, + "src": "6728:4:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7775, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6728:4:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "6727:6:18" + }, + "scope": 8101, + "src": "6651:158:18", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 7803, + "nodeType": "Block", + "src": "7131:66:18", + "statements": [ + { + "expression": { + "baseExpression": { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7797, + "name": "_getMultiOwnableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8100, + "src": "7148:23:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_MultiOwnableStorage_$7585_storage_ptr_$", + "typeString": "function () pure returns (struct MultiOwnableStorage storage pointer)" + } + }, + "id": 7798, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7148:25:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage storage pointer" + } + }, + "id": 7799, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7174:7:18", + "memberName": "isOwner", + "nodeType": "MemberAccess", + "referencedDeclaration": 7584, + "src": "7148:33:18", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_bool_$", + "typeString": "mapping(bytes memory => bool)" + } + }, + "id": 7801, + "indexExpression": { + "id": 7800, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7792, + "src": "7182:7:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7148:42:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 7796, + "id": 7802, + "nodeType": "Return", + "src": "7141:49:18" + } + ] + }, + "documentation": { + "id": 7790, + "nodeType": "StructuredDocumentation", + "src": "6815:232:18", + "text": "@notice Checks if the given `account` bytes is registered as owner.\n @param account The account, should be ABI encoded address or public key.\n @return `true` if the account is an owner else `false`." + }, + "functionSelector": "1ca5393f", + "id": 7804, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isOwnerBytes", + "nameLocation": "7061:12:18", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7793, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7792, + "mutability": "mutable", + "name": "account", + "nameLocation": "7087:7:18", + "nodeType": "VariableDeclaration", + "scope": 7804, + "src": "7074:20:18", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7791, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7074:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "7073:22:18" + }, + "returnParameters": { + "id": 7796, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7795, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7804, + "src": "7125:4:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7794, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7125:4:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "7124:6:18" + }, + "scope": 8101, + "src": "7052:145:18", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 7818, + "nodeType": "Block", + "src": "7486:69:18", + "statements": [ + { + "expression": { + "baseExpression": { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7812, + "name": "_getMultiOwnableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8100, + "src": "7503:23:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_MultiOwnableStorage_$7585_storage_ptr_$", + "typeString": "function () pure returns (struct MultiOwnableStorage storage pointer)" + } + }, + "id": 7813, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7503:25:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage storage pointer" + } + }, + "id": 7814, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7529:12:18", + "memberName": "ownerAtIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 7579, + "src": "7503:38:18", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$", + "typeString": "mapping(uint256 => bytes storage ref)" + } + }, + "id": 7816, + "indexExpression": { + "id": 7815, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7807, + "src": "7542:5:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7503:45:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "functionReturnParameters": 7811, + "id": 7817, + "nodeType": "Return", + "src": "7496:52:18" + } + ] + }, + "documentation": { + "id": 7805, + "nodeType": "StructuredDocumentation", + "src": "7203:198:18", + "text": "@notice Returns the owner bytes at the given `index`.\n @param index The index to lookup.\n @return The owner bytes (empty if no owner is registered at this `index`)." + }, + "functionSelector": "8ea69029", + "id": 7819, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ownerAtIndex", + "nameLocation": "7415:12:18", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7808, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7807, + "mutability": "mutable", + "name": "index", + "nameLocation": "7436:5:18", + "nodeType": "VariableDeclaration", + "scope": 7819, + "src": "7428:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7806, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7428:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7427:15:18" + }, + "returnParameters": { + "id": 7811, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7810, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7819, + "src": "7472:12:18", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7809, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7472:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "7471:14:18" + }, + "scope": 8101, + "src": "7406:149:18", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 7829, + "nodeType": "Block", + "src": "7779:64:18", + "statements": [ + { + "expression": { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7825, + "name": "_getMultiOwnableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8100, + "src": "7796:23:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_MultiOwnableStorage_$7585_storage_ptr_$", + "typeString": "function () pure returns (struct MultiOwnableStorage storage pointer)" + } + }, + "id": 7826, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7796:25:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage storage pointer" + } + }, + "id": 7827, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7822:14:18", + "memberName": "nextOwnerIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 7571, + "src": "7796:40:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 7824, + "id": 7828, + "nodeType": "Return", + "src": "7789:47:18" + } + ] + }, + "documentation": { + "id": 7820, + "nodeType": "StructuredDocumentation", + "src": "7561:149:18", + "text": "@notice Returns the next index that will be used to add a new owner.\n @return The next index that will be used to add a new owner." + }, + "functionSelector": "d948fd2e", + "id": 7830, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "nextOwnerIndex", + "nameLocation": "7724:14:18", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7821, + "nodeType": "ParameterList", + "parameters": [], + "src": "7738:2:18" + }, + "returnParameters": { + "id": 7824, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7823, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7830, + "src": "7770:7:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7822, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7770:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7769:9:18" + }, + "scope": 8101, + "src": "7715:128:18", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 7848, + "nodeType": "Block", + "src": "8010:130:18", + "statements": [ + { + "assignments": [ + 7838 + ], + "declarations": [ + { + "constant": false, + "id": 7838, + "mutability": "mutable", + "name": "$", + "nameLocation": "8048:1:18", + "nodeType": "VariableDeclaration", + "scope": 7848, + "src": "8020:29:18", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage" + }, + "typeName": { + "id": 7837, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7836, + "name": "MultiOwnableStorage", + "nameLocations": [ + "8020:19:18" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7585, + "src": "8020:19:18" + }, + "referencedDeclaration": 7585, + "src": "8020:19:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 7841, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7839, + "name": "_getMultiOwnableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8100, + "src": "8052:23:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_MultiOwnableStorage_$7585_storage_ptr_$", + "typeString": "function () pure returns (struct MultiOwnableStorage storage pointer)" + } + }, + "id": 7840, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8052:25:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8020:57:18" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7846, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 7842, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7838, + "src": "8094:1:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage storage pointer" + } + }, + "id": 7843, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8096:14:18", + "memberName": "nextOwnerIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 7571, + "src": "8094:16:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "expression": { + "id": 7844, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7838, + "src": "8113:1:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage storage pointer" + } + }, + "id": 7845, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8115:18:18", + "memberName": "removedOwnersCount", + "nodeType": "MemberAccess", + "referencedDeclaration": 7574, + "src": "8113:20:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8094:39:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 7835, + "id": 7847, + "nodeType": "Return", + "src": "8087:46:18" + } + ] + }, + "documentation": { + "id": 7831, + "nodeType": "StructuredDocumentation", + "src": "7849:96:18", + "text": "@notice Returns the current number of owners\n @return The current owner count" + }, + "functionSelector": "0db02622", + "id": 7849, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ownerCount", + "nameLocation": "7959:10:18", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7832, + "nodeType": "ParameterList", + "parameters": [], + "src": "7969:2:18" + }, + "returnParameters": { + "id": 7835, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7834, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7849, + "src": "8001:7:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7833, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8001:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8000:9:18" + }, + "scope": 8101, + "src": "7950:190:18", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 7859, + "nodeType": "Block", + "src": "8417:68:18", + "statements": [ + { + "expression": { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7855, + "name": "_getMultiOwnableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8100, + "src": "8434:23:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_MultiOwnableStorage_$7585_storage_ptr_$", + "typeString": "function () pure returns (struct MultiOwnableStorage storage pointer)" + } + }, + "id": 7856, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8434:25:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage storage pointer" + } + }, + "id": 7857, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8460:18:18", + "memberName": "removedOwnersCount", + "nodeType": "MemberAccess", + "referencedDeclaration": 7574, + "src": "8434:44:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 7854, + "id": 7858, + "nodeType": "Return", + "src": "8427:51:18" + } + ] + }, + "documentation": { + "id": 7850, + "nodeType": "StructuredDocumentation", + "src": "8146:198:18", + "text": "@notice Tracks the number of owners removed\n @dev Used with `this.nextOwnerIndex` to avoid removing all owners\n @return The number of owners that have been removed." + }, + "functionSelector": "36d9cf9b", + "id": 7860, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "removedOwnersCount", + "nameLocation": "8358:18:18", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7851, + "nodeType": "ParameterList", + "parameters": [], + "src": "8376:2:18" + }, + "returnParameters": { + "id": 7854, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7853, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7860, + "src": "8408:7:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7852, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8408:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8407:9:18" + }, + "scope": 8101, + "src": "8349:136:18", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 7955, + "nodeType": "Block", + "src": "8862:603:18", + "statements": [ + { + "assignments": [ + 7869 + ], + "declarations": [ + { + "constant": false, + "id": 7869, + "mutability": "mutable", + "name": "$", + "nameLocation": "8900:1:18", + "nodeType": "VariableDeclaration", + "scope": 7955, + "src": "8872:29:18", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage" + }, + "typeName": { + "id": 7868, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7867, + "name": "MultiOwnableStorage", + "nameLocations": [ + "8872:19:18" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7585, + "src": "8872:19:18" + }, + "referencedDeclaration": 7585, + "src": "8872:19:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 7872, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7870, + "name": "_getMultiOwnableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8100, + "src": "8904:23:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_MultiOwnableStorage_$7585_storage_ptr_$", + "typeString": "function () pure returns (struct MultiOwnableStorage storage pointer)" + } + }, + "id": 7871, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8904:25:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8872:57:18" + }, + { + "assignments": [ + 7874 + ], + "declarations": [ + { + "constant": false, + "id": 7874, + "mutability": "mutable", + "name": "nextOwnerIndex_", + "nameLocation": "8947:15:18", + "nodeType": "VariableDeclaration", + "scope": 7955, + "src": "8939:23:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7873, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8939:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7877, + "initialValue": { + "expression": { + "id": 7875, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7869, + "src": "8965:1:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage storage pointer" + } + }, + "id": 7876, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8967:14:18", + "memberName": "nextOwnerIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 7571, + "src": "8965:16:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8939:42:18" + }, + { + "body": { + "id": 7947, + "nodeType": "Block", + "src": "9031:384:18", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 7900, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7893, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "baseExpression": { + "id": 7888, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7864, + "src": "9049:6:18", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + "id": 7890, + "indexExpression": { + "id": 7889, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7879, + "src": "9056:1:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9049:9:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 7891, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9059:6:18", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "9049:16:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "3332", + "id": 7892, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9069:2:18", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "9049:22:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7899, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "baseExpression": { + "id": 7894, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7864, + "src": "9075:6:18", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + "id": 7896, + "indexExpression": { + "id": 7895, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7879, + "src": "9082:1:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9075:9:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 7897, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9085:6:18", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "9075:16:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "3634", + "id": 7898, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9095:2:18", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "9075:22:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "9049:48:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7908, + "nodeType": "IfStatement", + "src": "9045:128:18", + "trueBody": { + "id": 7907, + "nodeType": "Block", + "src": "9099:74:18", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "baseExpression": { + "id": 7902, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7864, + "src": "9148:6:18", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + "id": 7904, + "indexExpression": { + "id": 7903, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7879, + "src": "9155:1:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9148:9:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 7901, + "name": "InvalidOwnerBytesLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7617, + "src": "9124:23:18", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_bytes_memory_ptr_$returns$_t_error_$", + "typeString": "function (bytes memory) pure returns (error)" + } + }, + "id": 7905, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9124:34:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 7906, + "nodeType": "RevertStatement", + "src": "9117:41:18" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 7930, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7914, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "baseExpression": { + "id": 7909, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7864, + "src": "9191:6:18", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + "id": 7911, + "indexExpression": { + "id": 7910, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7879, + "src": "9198:1:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9191:9:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 7912, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9201:6:18", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "9191:16:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "3332", + "id": 7913, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9211:2:18", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "9191:22:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7929, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "baseExpression": { + "id": 7919, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7864, + "src": "9233:6:18", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + "id": 7921, + "indexExpression": { + "id": 7920, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7879, + "src": "9240:1:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9233:9:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 7918, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9225:7:18", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 7917, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9225:7:18", + "typeDescriptions": {} + } + }, + "id": 7922, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9225:18:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 7916, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9217:7:18", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 7915, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9217:7:18", + "typeDescriptions": {} + } + }, + "id": 7923, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9217:27:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 7926, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9252:7:18", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 7925, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "9252:7:18", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + } + ], + "id": 7924, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "9247:4:18", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 7927, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9247:13:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint160", + "typeString": "type(uint160)" + } + }, + "id": 7928, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "9261:3:18", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "9247:17:18", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "src": "9217:47:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "9191:73:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7938, + "nodeType": "IfStatement", + "src": "9187:157:18", + "trueBody": { + "id": 7937, + "nodeType": "Block", + "src": "9266:78:18", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "baseExpression": { + "id": 7932, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7864, + "src": "9319:6:18", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + "id": 7934, + "indexExpression": { + "id": 7933, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7879, + "src": "9326:1:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9319:9:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 7931, + "name": "InvalidEthereumAddressOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7622, + "src": "9291:27:18", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_bytes_memory_ptr_$returns$_t_error_$", + "typeString": "function (bytes memory) pure returns (error)" + } + }, + "id": 7935, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9291:38:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 7936, + "nodeType": "RevertStatement", + "src": "9284:45:18" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "baseExpression": { + "id": 7940, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7864, + "src": "9375:6:18", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + "id": 7942, + "indexExpression": { + "id": 7941, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7879, + "src": "9382:1:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9375:9:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 7944, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "9386:17:18", + "subExpression": { + "id": 7943, + "name": "nextOwnerIndex_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7874, + "src": "9386:15:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7939, + "name": "_addOwnerAtIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8000, + "src": "9358:16:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_uint256_$returns$__$", + "typeString": "function (bytes memory,uint256)" + } + }, + "id": 7945, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9358:46:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7946, + "nodeType": "ExpressionStatement", + "src": "9358:46:18" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7884, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7881, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7879, + "src": "9007:1:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 7882, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7864, + "src": "9011:6:18", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + "id": 7883, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9018:6:18", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "9011:13:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9007:17:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7948, + "initializationExpression": { + "assignments": [ + 7879 + ], + "declarations": [ + { + "constant": false, + "id": 7879, + "mutability": "mutable", + "name": "i", + "nameLocation": "9004:1:18", + "nodeType": "VariableDeclaration", + "scope": 7948, + "src": "8996:9:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7878, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8996:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7880, + "nodeType": "VariableDeclarationStatement", + "src": "8996:9:18" + }, + "isSimpleCounterLoop": true, + "loopExpression": { + "expression": { + "id": 7886, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "9026:3:18", + "subExpression": { + "id": 7885, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7879, + "src": "9026:1:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7887, + "nodeType": "ExpressionStatement", + "src": "9026:3:18" + }, + "nodeType": "ForStatement", + "src": "8991:424:18" + }, + { + "expression": { + "id": 7953, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 7949, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7869, + "src": "9424:1:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage storage pointer" + } + }, + "id": 7951, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "9426:14:18", + "memberName": "nextOwnerIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 7571, + "src": "9424:16:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 7952, + "name": "nextOwnerIndex_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7874, + "src": "9443:15:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9424:34:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7954, + "nodeType": "ExpressionStatement", + "src": "9424:34:18" + } + ] + }, + "documentation": { + "id": 7861, + "nodeType": "StructuredDocumentation", + "src": "8491:299:18", + "text": "@notice Initialize the owners of this contract.\n @dev Intended to be called contract is first deployed and never again.\n @dev Reverts if a provided owner is neither 64 bytes long (for public key) nor a valid address.\n @param owners The initial set of owners." + }, + "id": 7956, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_initializeOwners", + "nameLocation": "8804:17:18", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7865, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7864, + "mutability": "mutable", + "name": "owners", + "nameLocation": "8837:6:18", + "nodeType": "VariableDeclaration", + "scope": 7956, + "src": "8822:21:18", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 7862, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8822:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 7863, + "nodeType": "ArrayTypeName", + "src": "8822:7:18", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + } + ], + "src": "8821:23:18" + }, + "returnParameters": { + "id": 7866, + "nodeType": "ParameterList", + "parameters": [], + "src": "8862:0:18" + }, + "scope": 8101, + "src": "8795:670:18", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 7999, + "nodeType": "Block", + "src": "9782:246:18", + "statements": [ + { + "condition": { + "arguments": [ + { + "id": 7965, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7959, + "src": "9809:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 7964, + "name": "isOwnerBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7804, + "src": "9796:12:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (bytes memory) view returns (bool)" + } + }, + "id": 7966, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9796:19:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7971, + "nodeType": "IfStatement", + "src": "9792:51:18", + "trueBody": { + "errorCall": { + "arguments": [ + { + "id": 7968, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7959, + "src": "9837:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 7967, + "name": "AlreadyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7598, + "src": "9824:12:18", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_bytes_memory_ptr_$returns$_t_error_$", + "typeString": "function (bytes memory) pure returns (error)" + } + }, + "id": 7969, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9824:19:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 7970, + "nodeType": "RevertStatement", + "src": "9817:26:18" + } + }, + { + "assignments": [ + 7974 + ], + "declarations": [ + { + "constant": false, + "id": 7974, + "mutability": "mutable", + "name": "$", + "nameLocation": "9882:1:18", + "nodeType": "VariableDeclaration", + "scope": 7999, + "src": "9854:29:18", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage" + }, + "typeName": { + "id": 7973, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7972, + "name": "MultiOwnableStorage", + "nameLocations": [ + "9854:19:18" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7585, + "src": "9854:19:18" + }, + "referencedDeclaration": 7585, + "src": "9854:19:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 7977, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 7975, + "name": "_getMultiOwnableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8100, + "src": "9886:23:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_MultiOwnableStorage_$7585_storage_ptr_$", + "typeString": "function () pure returns (struct MultiOwnableStorage storage pointer)" + } + }, + "id": 7976, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9886:25:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9854:57:18" + }, + { + "expression": { + "id": 7984, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 7978, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7974, + "src": "9921:1:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage storage pointer" + } + }, + "id": 7981, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9923:7:18", + "memberName": "isOwner", + "nodeType": "MemberAccess", + "referencedDeclaration": 7584, + "src": "9921:9:18", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_bool_$", + "typeString": "mapping(bytes memory => bool)" + } + }, + "id": 7982, + "indexExpression": { + "id": 7980, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7959, + "src": "9931:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "9921:16:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 7983, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9940:4:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "9921:23:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7985, + "nodeType": "ExpressionStatement", + "src": "9921:23:18" + }, + { + "expression": { + "id": 7992, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 7986, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7974, + "src": "9954:1:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage storage pointer" + } + }, + "id": 7989, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9956:12:18", + "memberName": "ownerAtIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 7579, + "src": "9954:14:18", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$", + "typeString": "mapping(uint256 => bytes storage ref)" + } + }, + "id": 7990, + "indexExpression": { + "id": 7988, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7961, + "src": "9969:5:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "9954:21:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 7991, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7959, + "src": "9978:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "src": "9954:29:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "id": 7993, + "nodeType": "ExpressionStatement", + "src": "9954:29:18" + }, + { + "eventCall": { + "arguments": [ + { + "id": 7995, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7961, + "src": "10008:5:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 7996, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7959, + "src": "10015:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 7994, + "name": "AddOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7637, + "src": "9999:8:18", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (uint256,bytes memory)" + } + }, + "id": 7997, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9999:22:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7998, + "nodeType": "EmitStatement", + "src": "9994:27:18" + } + ] + }, + "documentation": { + "id": 7957, + "nodeType": "StructuredDocumentation", + "src": "9471:228:18", + "text": "@notice Adds an owner at the given `index`.\n @dev Reverts if `owner` is already registered as an owner.\n @param owner The owner raw bytes to register.\n @param index The index to write to." + }, + "id": 8000, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addOwnerAtIndex", + "nameLocation": "9713:16:18", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7962, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7959, + "mutability": "mutable", + "name": "owner", + "nameLocation": "9743:5:18", + "nodeType": "VariableDeclaration", + "scope": 8000, + "src": "9730:18:18", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7958, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "9730:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7961, + "mutability": "mutable", + "name": "index", + "nameLocation": "9758:5:18", + "nodeType": "VariableDeclaration", + "scope": 8000, + "src": "9750:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7960, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9750:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9729:35:18" + }, + "returnParameters": { + "id": 7963, + "nodeType": "ParameterList", + "parameters": [], + "src": "9782:0:18" + }, + "scope": 8101, + "src": "9704:324:18", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 8066, + "nodeType": "Block", + "src": "10450:492:18", + "statements": [ + { + "assignments": [ + 8009 + ], + "declarations": [ + { + "constant": false, + "id": 8009, + "mutability": "mutable", + "name": "owner_", + "nameLocation": "10473:6:18", + "nodeType": "VariableDeclaration", + "scope": 8066, + "src": "10460:19:18", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 8008, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "10460:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 8013, + "initialValue": { + "arguments": [ + { + "id": 8011, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8003, + "src": "10495:5:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8010, + "name": "ownerAtIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7819, + "src": "10482:12:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (uint256) view returns (bytes memory)" + } + }, + "id": 8012, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10482:19:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10460:41:18" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8017, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 8014, + "name": "owner_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8009, + "src": "10515:6:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 8015, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10522:6:18", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "10515:13:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 8016, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10532:1:18", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "10515:18:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8022, + "nodeType": "IfStatement", + "src": "10511:52:18", + "trueBody": { + "errorCall": { + "arguments": [ + { + "id": 8019, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8003, + "src": "10557:5:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8018, + "name": "NoOwnerAtIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7603, + "src": "10542:14:18", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$_t_error_$", + "typeString": "function (uint256) pure returns (error)" + } + }, + "id": 8020, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10542:21:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 8021, + "nodeType": "RevertStatement", + "src": "10535:28:18" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8029, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 8024, + "name": "owner_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8009, + "src": "10587:6:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 8023, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "10577:9:18", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 8025, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10577:17:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "id": 8027, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8005, + "src": "10608:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 8026, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "10598:9:18", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 8028, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10598:16:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "10577:37:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8037, + "nodeType": "IfStatement", + "src": "10573:151:18", + "trueBody": { + "id": 8036, + "nodeType": "Block", + "src": "10616:108:18", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 8031, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8003, + "src": "10663:5:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 8032, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8005, + "src": "10685:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + { + "id": 8033, + "name": "owner_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8009, + "src": "10705:6:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 8030, + "name": "WrongOwnerAtIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7612, + "src": "10637:17:18", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_error_$", + "typeString": "function (uint256,bytes memory,bytes memory) pure returns (error)" + } + }, + "id": 8034, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [ + "10656:5:18", + "10670:13:18", + "10692:11:18" + ], + "names": [ + "index", + "expectedOwner", + "actualOwner" + ], + "nodeType": "FunctionCall", + "src": "10637:76:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 8035, + "nodeType": "RevertStatement", + "src": "10630:83:18" + } + ] + } + }, + { + "assignments": [ + 8040 + ], + "declarations": [ + { + "constant": false, + "id": 8040, + "mutability": "mutable", + "name": "$", + "nameLocation": "10762:1:18", + "nodeType": "VariableDeclaration", + "scope": 8066, + "src": "10734:29:18", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage" + }, + "typeName": { + "id": 8039, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 8038, + "name": "MultiOwnableStorage", + "nameLocations": [ + "10734:19:18" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7585, + "src": "10734:19:18" + }, + "referencedDeclaration": 7585, + "src": "10734:19:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 8043, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 8041, + "name": "_getMultiOwnableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8100, + "src": "10766:23:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_MultiOwnableStorage_$7585_storage_ptr_$", + "typeString": "function () pure returns (struct MultiOwnableStorage storage pointer)" + } + }, + "id": 8042, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10766:25:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10734:57:18" + }, + { + "expression": { + "id": 8048, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "10801:23:18", + "subExpression": { + "baseExpression": { + "expression": { + "id": 8044, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8040, + "src": "10808:1:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage storage pointer" + } + }, + "id": 8045, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10810:7:18", + "memberName": "isOwner", + "nodeType": "MemberAccess", + "referencedDeclaration": 7584, + "src": "10808:9:18", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_bool_$", + "typeString": "mapping(bytes memory => bool)" + } + }, + "id": 8047, + "indexExpression": { + "id": 8046, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8005, + "src": "10818:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10808:16:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8049, + "nodeType": "ExpressionStatement", + "src": "10801:23:18" + }, + { + "expression": { + "id": 8054, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "10834:28:18", + "subExpression": { + "baseExpression": { + "expression": { + "id": 8050, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8040, + "src": "10841:1:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage storage pointer" + } + }, + "id": 8051, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10843:12:18", + "memberName": "ownerAtIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 7579, + "src": "10841:14:18", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$", + "typeString": "mapping(uint256 => bytes storage ref)" + } + }, + "id": 8053, + "indexExpression": { + "id": 8052, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8003, + "src": "10856:5:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10841:21:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8055, + "nodeType": "ExpressionStatement", + "src": "10834:28:18" + }, + { + "expression": { + "id": 8059, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "10872:22:18", + "subExpression": { + "expression": { + "id": 8056, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8040, + "src": "10872:1:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage storage pointer" + } + }, + "id": 8058, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "10874:18:18", + "memberName": "removedOwnersCount", + "nodeType": "MemberAccess", + "referencedDeclaration": 7574, + "src": "10872:20:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 8060, + "nodeType": "ExpressionStatement", + "src": "10872:22:18" + }, + { + "eventCall": { + "arguments": [ + { + "id": 8062, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8003, + "src": "10922:5:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 8063, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8005, + "src": "10929:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 8061, + "name": "RemoveOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7644, + "src": "10910:11:18", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (uint256,bytes memory)" + } + }, + "id": 8064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10910:25:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8065, + "nodeType": "EmitStatement", + "src": "10905:30:18" + } + ] + }, + "documentation": { + "id": 8001, + "nodeType": "StructuredDocumentation", + "src": "10034:328:18", + "text": "@notice Removes owner at the given `index`.\n @dev Reverts if the owner is not registered at `index`.\n @dev Reverts if `owner` does not match bytes found at `index`.\n @param index The index of the owner to be removed.\n @param owner The ABI encoded bytes of the owner to be removed." + }, + "id": 8067, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeOwnerAtIndex", + "nameLocation": "10376:19:18", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8006, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8003, + "mutability": "mutable", + "name": "index", + "nameLocation": "10404:5:18", + "nodeType": "VariableDeclaration", + "scope": 8067, + "src": "10396:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8002, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10396:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8005, + "mutability": "mutable", + "name": "owner", + "nameLocation": "10426:5:18", + "nodeType": "VariableDeclaration", + "scope": 8067, + "src": "10411:20:18", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 8004, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "10411:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "10395:37:18" + }, + "returnParameters": { + "id": 8007, + "nodeType": "ParameterList", + "parameters": [], + "src": "10450:0:18" + }, + "scope": 8101, + "src": "10367:575:18", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 8090, + "nodeType": "Block", + "src": "11165:144:18", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 8083, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "expression": { + "id": 8072, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "11194:3:18", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 8073, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11198:6:18", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "11194:10:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 8071, + "name": "isOwnerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7768, + "src": "11179:14:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 8074, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11179:26:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 8081, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 8075, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "11210:3:18", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 8076, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11214:6:18", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "11210:10:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "id": 8079, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "11232:4:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MultiOwnable_$8101", + "typeString": "contract MultiOwnable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_MultiOwnable_$8101", + "typeString": "contract MultiOwnable" + } + ], + "id": 8078, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11224:7:18", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 8077, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11224:7:18", + "typeDescriptions": {} + } + }, + "id": 8080, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11224:13:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "11210:27:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 8082, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11209:29:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "11179:59:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8086, + "nodeType": "IfStatement", + "src": "11175:96:18", + "trueBody": { + "id": 8085, + "nodeType": "Block", + "src": "11240:31:18", + "statements": [ + { + "functionReturnParameters": 8070, + "id": 8084, + "nodeType": "Return", + "src": "11254:7:18" + } + ] + } + }, + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 8087, + "name": "Unauthorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7593, + "src": "11288:12:18", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" + } + }, + "id": 8088, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11288:14:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 8089, + "nodeType": "RevertStatement", + "src": "11281:21:18" + } + ] + }, + "documentation": { + "id": 8068, + "nodeType": "StructuredDocumentation", + "src": "10948:167:18", + "text": "@notice Checks if the sender is an owner of this contract or the contract itself.\n @dev Revert if the sender is not an owner fo the contract itself." + }, + "id": 8091, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkOwner", + "nameLocation": "11129:11:18", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8069, + "nodeType": "ParameterList", + "parameters": [], + "src": "11140:2:18" + }, + "returnParameters": { + "id": 8070, + "nodeType": "ParameterList", + "parameters": [], + "src": "11165:0:18" + }, + "scope": 8101, + "src": "11120:189:18", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 8099, + "nodeType": "Block", + "src": "11583:105:18", + "statements": [ + { + "AST": { + "nativeSrc": "11618:64:18", + "nodeType": "YulBlock", + "src": "11618:64:18", + "statements": [ + { + "nativeSrc": "11632:40:18", + "nodeType": "YulAssignment", + "src": "11632:40:18", + "value": { + "name": "MUTLI_OWNABLE_STORAGE_LOCATION", + "nativeSrc": "11642:30:18", + "nodeType": "YulIdentifier", + "src": "11642:30:18" + }, + "variableNames": [ + { + "name": "$.slot", + "nativeSrc": "11632:6:18", + "nodeType": "YulIdentifier", + "src": "11632:6:18" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 8096, + "isOffset": false, + "isSlot": true, + "src": "11632:6:18", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 7590, + "isOffset": false, + "isSlot": false, + "src": "11642:30:18", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 8098, + "nodeType": "InlineAssembly", + "src": "11593:89:18" + } + ] + }, + "documentation": { + "id": 8092, + "nodeType": "StructuredDocumentation", + "src": "11315:174:18", + "text": "@notice Helper function to get a storage reference to the `MultiOwnableStorage` struct.\n @return $ A storage reference to the `MultiOwnableStorage` struct." + }, + "id": 8100, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getMultiOwnableStorage", + "nameLocation": "11503:23:18", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8093, + "nodeType": "ParameterList", + "parameters": [], + "src": "11526:2:18" + }, + "returnParameters": { + "id": 8097, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8096, + "mutability": "mutable", + "name": "$", + "nameLocation": "11580:1:18", + "nodeType": "VariableDeclaration", + "scope": 8100, + "src": "11552:29:18", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage" + }, + "typeName": { + "id": 8095, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 8094, + "name": "MultiOwnableStorage", + "nameLocations": [ + "11552:19:18" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7585, + "src": "11552:19:18" + }, + "referencedDeclaration": 7585, + "src": "11552:19:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MultiOwnableStorage_$7585_storage_ptr", + "typeString": "struct MultiOwnableStorage" + } + }, + "visibility": "internal" + } + ], + "src": "11551:31:18" + }, + "scope": 8101, + "src": "11494:194:18", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 8102, + "src": "1427:10263:18", + "usedErrors": [ + 7593, + 7598, + 7603, + 7612, + 7617, + 7622, + 7625, + 7630 + ], + "usedEvents": [ + 7637, + 7644 + ] + } + ], + "src": "32:11659:18" + }, + "id": 18 + }, + "src/utils/ERC1271InputGenerator.sol": { + "ast": { + "absolutePath": "src/utils/ERC1271InputGenerator.sol", + "exportedSymbols": { + "ERC1271InputGenerator": [ + 8219 + ], + "GianoSmartWallet": [ + 7398 + ] + }, + "id": 8220, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 8103, + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "32:23:19" + }, + { + "absolutePath": "src/GianoSmartWallet.sol", + "file": "../GianoSmartWallet.sol", + "id": 8105, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 8220, + "sourceUnit": 7399, + "src": "57:57:19", + "symbolAliases": [ + { + "foreign": { + "id": 8104, + "name": "GianoSmartWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7398, + "src": "65:16:19", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "ERC1271InputGenerator", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 8106, + "nodeType": "StructuredDocumentation", + "src": "116:716:19", + "text": "@title ERC1271 Input Generator\n @notice Helper contract for generating an ERC-1271 input hash to sign for deployed and undeployed\n GianoSmartWallet. May be useful for generating ERC-6492 compliant signatures.\n Inspired by Ambire's DeploylessUniversalSigValidator\n https://github.com/AmbireTech/signature-validator/blob/d5f84f5fc00bfdf79b80205b983a8258b6d1b3ea/contracts/DeploylessUniversalSigValidator.sol.\n @dev This contract is not meant to ever actually be deployed, only mock deployed and used via a static eth_call.\n @author Applied Blockchain (https://github.com/appliedblockchain/giano)\n @author Coinbase (https://github.com/coinbase/smart-wallet)" + }, + "fullyImplemented": true, + "id": 8219, + "linearizedBaseContracts": [ + 8219 + ], + "name": "ERC1271InputGenerator", + "nameLocation": "841:21:19", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 8107, + "nodeType": "StructuredDocumentation", + "src": "869:78:19", + "text": "@notice Thrown when call to `accountFactory` with `factoryCalldata` fails." + }, + "errorSelector": "128aaaa0", + "id": 8109, + "name": "AccountDeploymentFailed", + "nameLocation": "958:23:19", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 8108, + "nodeType": "ParameterList", + "parameters": [], + "src": "981:2:19" + }, + "src": "952:32:19" + }, + { + "documentation": { + "id": 8110, + "nodeType": "StructuredDocumentation", + "src": "990:216:19", + "text": "@notice Thrown when the address returned from call to `accountFactory` does not\n match passed account\n @param account The passed account\n @param returned The returned account" + }, + "errorSelector": "c8624383", + "id": 8116, + "name": "ReturnedAddressDoesNotMatchAccount", + "nameLocation": "1217:34:19", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 8115, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8112, + "mutability": "mutable", + "name": "account", + "nameLocation": "1260:7:19", + "nodeType": "VariableDeclaration", + "scope": 8116, + "src": "1252:15:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8111, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1252:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8114, + "mutability": "mutable", + "name": "returned", + "nameLocation": "1277:8:19", + "nodeType": "VariableDeclaration", + "scope": 8116, + "src": "1269:16:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8113, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1269:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1251:35:19" + }, + "src": "1211:76:19" + }, + { + "body": { + "id": 8139, + "nodeType": "Block", + "src": "2162:632:19", + "statements": [ + { + "assignments": [ + 8130 + ], + "declarations": [ + { + "constant": false, + "id": 8130, + "mutability": "mutable", + "name": "replaySafeHash", + "nameLocation": "2518:14:19", + "nodeType": "VariableDeclaration", + "scope": 8139, + "src": "2510:22:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8129, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2510:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 8137, + "initialValue": { + "arguments": [ + { + "id": 8132, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8120, + "src": "2562:7:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + } + }, + { + "id": 8133, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8122, + "src": "2571:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 8134, + "name": "accountFactory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8124, + "src": "2577:14:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8135, + "name": "factoryCalldata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8126, + "src": "2593:15:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 8131, + "name": "_gianoSmartWallet1271Input", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8218, + "src": "2535:26:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_GianoSmartWallet_$7398_$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (contract GianoSmartWallet,bytes32,address,bytes memory) returns (bytes32)" + } + }, + "id": 8136, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2535:74:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2510:99:19" + }, + { + "AST": { + "nativeSrc": "2628:160:19", + "nodeType": "YulBlock", + "src": "2628:160:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2687:4:19", + "nodeType": "YulLiteral", + "src": "2687:4:19", + "type": "", + "value": "0x80" + }, + { + "name": "replaySafeHash", + "nativeSrc": "2693:14:19", + "nodeType": "YulIdentifier", + "src": "2693:14:19" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2680:6:19", + "nodeType": "YulIdentifier", + "src": "2680:6:19" + }, + "nativeSrc": "2680:28:19", + "nodeType": "YulFunctionCall", + "src": "2680:28:19" + }, + "nativeSrc": "2680:28:19", + "nodeType": "YulExpressionStatement", + "src": "2680:28:19" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2767:4:19", + "nodeType": "YulLiteral", + "src": "2767:4:19", + "type": "", + "value": "0x80" + }, + { + "kind": "number", + "nativeSrc": "2773:4:19", + "nodeType": "YulLiteral", + "src": "2773:4:19", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "return", + "nativeSrc": "2760:6:19", + "nodeType": "YulIdentifier", + "src": "2760:6:19" + }, + "nativeSrc": "2760:18:19", + "nodeType": "YulFunctionCall", + "src": "2760:18:19" + }, + "nativeSrc": "2760:18:19", + "nodeType": "YulExpressionStatement", + "src": "2760:18:19" + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 8130, + "isOffset": false, + "isSlot": false, + "src": "2693:14:19", + "valueSize": 1 + } + ], + "id": 8138, + "nodeType": "InlineAssembly", + "src": "2619:169:19" + } + ] + }, + "documentation": { + "id": 8117, + "nodeType": "StructuredDocumentation", + "src": "1293:758:19", + "text": "@notice Computes and returns the expected ERC-1271 replay-safe hash for a GianoSmartWallet.\n @dev `accountFactory` can be any address if the account is already deployed.\n @dev `factoryCalldata` can be 0x if the account is already deployed.\n @dev If calling with solidity, the `replaySafeHash` will be `.code`.\n @param account The account that will receive the ERC-1271 `isValidSignature` call.\n @param hash The hash the wallet was asked to sign.\n @param accountFactory The factory that will be used to deploy the account (if not already deployed).\n @param factoryCalldata The calldata that will be used to deploy the account (if not already deployed)." + }, + "id": 8140, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8127, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8120, + "mutability": "mutable", + "name": "account", + "nameLocation": "2085:7:19", + "nodeType": "VariableDeclaration", + "scope": 8140, + "src": "2068:24:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + }, + "typeName": { + "id": 8119, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 8118, + "name": "GianoSmartWallet", + "nameLocations": [ + "2068:16:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7398, + "src": "2068:16:19" + }, + "referencedDeclaration": 7398, + "src": "2068:16:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8122, + "mutability": "mutable", + "name": "hash", + "nameLocation": "2102:4:19", + "nodeType": "VariableDeclaration", + "scope": 8140, + "src": "2094:12:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8121, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2094:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8124, + "mutability": "mutable", + "name": "accountFactory", + "nameLocation": "2116:14:19", + "nodeType": "VariableDeclaration", + "scope": 8140, + "src": "2108:22:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8123, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2108:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8126, + "mutability": "mutable", + "name": "factoryCalldata", + "nameLocation": "2145:15:19", + "nodeType": "VariableDeclaration", + "scope": 8140, + "src": "2132:28:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 8125, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2132:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "2067:94:19" + }, + "returnParameters": { + "id": 8128, + "nodeType": "ParameterList", + "parameters": [], + "src": "2162:0:19" + }, + "scope": 8219, + "src": "2056:738:19", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 8217, + "nodeType": "Block", + "src": "3769:717:19", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8162, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "arguments": [ + { + "id": 8157, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8144, + "src": "3870:7:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + } + ], + "id": 8156, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3862:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 8155, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3862:7:19", + "typeDescriptions": {} + } + }, + "id": 8158, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3862:16:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 8159, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3879:4:19", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "3862:21:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 8160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3884:6:19", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "3862:28:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 8161, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3893:1:19", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3862:32:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8169, + "nodeType": "IfStatement", + "src": "3858:98:19", + "trueBody": { + "id": 8168, + "nodeType": "Block", + "src": "3896:60:19", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 8165, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8146, + "src": "3940:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 8163, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8144, + "src": "3917:7:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + } + }, + "id": 8164, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3925:14:19", + "memberName": "replaySafeHash", + "nodeType": "MemberAccess", + "referencedDeclaration": 6628, + "src": "3917:22:19", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32) view external returns (bytes32)" + } + }, + "id": 8166, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3917:28:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 8154, + "id": 8167, + "nodeType": "Return", + "src": "3910:35:19" + } + ] + } + }, + { + "assignments": [ + 8171, + 8173 + ], + "declarations": [ + { + "constant": false, + "id": 8171, + "mutability": "mutable", + "name": "success", + "nameLocation": "4003:7:19", + "nodeType": "VariableDeclaration", + "scope": 8217, + "src": "3998:12:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8170, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3998:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8173, + "mutability": "mutable", + "name": "result", + "nameLocation": "4025:6:19", + "nodeType": "VariableDeclaration", + "scope": 8217, + "src": "4012:19:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 8172, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4012:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 8178, + "initialValue": { + "arguments": [ + { + "id": 8176, + "name": "factoryCalldata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8150, + "src": "4055:15:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 8174, + "name": "accountFactory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8148, + "src": "4035:14:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 8175, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4050:4:19", + "memberName": "call", + "nodeType": "MemberAccess", + "src": "4035:19:19", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 8177, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4035:36:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3997:74:19" + }, + { + "condition": { + "id": 8180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4085:8:19", + "subExpression": { + "id": 8179, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8171, + "src": "4086:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8185, + "nodeType": "IfStatement", + "src": "4081:71:19", + "trueBody": { + "id": 8184, + "nodeType": "Block", + "src": "4095:57:19", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 8181, + "name": "AccountDeploymentFailed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8109, + "src": "4116:23:19", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$", + "typeString": "function () pure returns (error)" + } + }, + "id": 8182, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4116:25:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 8183, + "nodeType": "RevertStatement", + "src": "4109:32:19" + } + ] + } + }, + { + "assignments": [ + 8187 + ], + "declarations": [ + { + "constant": false, + "id": 8187, + "mutability": "mutable", + "name": "returnAddress", + "nameLocation": "4170:13:19", + "nodeType": "VariableDeclaration", + "scope": 8217, + "src": "4162:21:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8186, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4162:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 8195, + "initialValue": { + "arguments": [ + { + "id": 8190, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8173, + "src": "4197:6:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 8192, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4206:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 8191, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4206:7:19", + "typeDescriptions": {} + } + } + ], + "id": 8193, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4205:9:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + } + ], + "expression": { + "id": 8188, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "4186:3:19", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 8189, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4190:6:19", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "4186:10:19", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 8194, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4186:29:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4162:53:19" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 8201, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8196, + "name": "returnAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8187, + "src": "4229:13:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "id": 8199, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8144, + "src": "4254:7:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + } + ], + "id": 8198, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4246:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 8197, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4246:7:19", + "typeDescriptions": {} + } + }, + "id": 8200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4246:16:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4229:33:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8211, + "nodeType": "IfStatement", + "src": "4225:138:19", + "trueBody": { + "id": 8210, + "nodeType": "Block", + "src": "4264:99:19", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "id": 8205, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8144, + "src": "4328:7:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + } + ], + "id": 8204, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4320:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 8203, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4320:7:19", + "typeDescriptions": {} + } + }, + "id": 8206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4320:16:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 8207, + "name": "returnAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8187, + "src": "4338:13:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 8202, + "name": "ReturnedAddressDoesNotMatchAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8116, + "src": "4285:34:19", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_address_$returns$_t_error_$", + "typeString": "function (address,address) pure returns (error)" + } + }, + "id": 8208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4285:67:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 8209, + "nodeType": "RevertStatement", + "src": "4278:74:19" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 8214, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8146, + "src": "4474:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 8212, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8144, + "src": "4451:7:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + } + }, + "id": 8213, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4459:14:19", + "memberName": "replaySafeHash", + "nodeType": "MemberAccess", + "referencedDeclaration": 6628, + "src": "4451:22:19", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32) view external returns (bytes32)" + } + }, + "id": 8215, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4451:28:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 8154, + "id": 8216, + "nodeType": "Return", + "src": "4444:35:19" + } + ] + }, + "documentation": { + "id": 8141, + "nodeType": "StructuredDocumentation", + "src": "2800:769:19", + "text": "@notice Helper method to get a replay-safe hash from the given `account` by calling its `replaySafeHash()`\n method.\n @dev Deploys the account if not already deployed before calling `replaySafeHash` on it.\n @dev Implements ERC-6492, see https://eips.ethereum.org/EIPS/eip-6492.\n @param account The account that will receive the ERC-1271 `isValidSignature` call.\n @param hash The hash the wallet was asked to sign.\n @param accountFactory The factory that will be used to deploy the account (if not already deployed).\n @param factoryCalldata The calldata that will be used to deploy the account (if not already deployed).\n @return The replay-safe hash." + }, + "id": 8218, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_gianoSmartWallet1271Input", + "nameLocation": "3583:26:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8151, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8144, + "mutability": "mutable", + "name": "account", + "nameLocation": "3636:7:19", + "nodeType": "VariableDeclaration", + "scope": 8218, + "src": "3619:24:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + }, + "typeName": { + "id": 8143, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 8142, + "name": "GianoSmartWallet", + "nameLocations": [ + "3619:16:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7398, + "src": "3619:16:19" + }, + "referencedDeclaration": 7398, + "src": "3619:16:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GianoSmartWallet_$7398", + "typeString": "contract GianoSmartWallet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8146, + "mutability": "mutable", + "name": "hash", + "nameLocation": "3661:4:19", + "nodeType": "VariableDeclaration", + "scope": 8218, + "src": "3653:12:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8145, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3653:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8148, + "mutability": "mutable", + "name": "accountFactory", + "nameLocation": "3683:14:19", + "nodeType": "VariableDeclaration", + "scope": 8218, + "src": "3675:22:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8147, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3675:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8150, + "mutability": "mutable", + "name": "factoryCalldata", + "nameLocation": "3720:15:19", + "nodeType": "VariableDeclaration", + "scope": 8218, + "src": "3707:28:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 8149, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3707:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3609:132:19" + }, + "returnParameters": { + "id": 8154, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8153, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8218, + "src": "3760:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8152, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3760:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3759:9:19" + }, + "scope": 8219, + "src": "3574:912:19", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 8220, + "src": "832:3656:19", + "usedErrors": [ + 8109, + 8116 + ], + "usedEvents": [] + } + ], + "src": "32:4457:19" + }, + "id": 19 + }, + "webauthn-sol/WebAuthn.sol": { + "ast": { + "absolutePath": "webauthn-sol/WebAuthn.sol", + "exportedSymbols": { + "Base64": [ + 2404 + ], + "FCL_Elliptic_ZZ": [ + 2309 + ], + "FCL_ecdsa": [ + 968 + ], + "LibString": [ + 6145 + ], + "WebAuthn": [ + 8478 + ] + }, + "id": 8479, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 8221, + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "32:23:20" + }, + { + "absolutePath": "FreshCryptoLib/FCL_ecdsa.sol", + "file": "FreshCryptoLib/FCL_ecdsa.sol", + "id": 8223, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 8479, + "sourceUnit": 969, + "src": "57:55:20", + "symbolAliases": [ + { + "foreign": { + "id": 8222, + "name": "FCL_ecdsa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 968, + "src": "65:9:20", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "FreshCryptoLib/FCL_elliptic.sol", + "file": "FreshCryptoLib/FCL_elliptic.sol", + "id": 8225, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 8479, + "sourceUnit": 2310, + "src": "113:64:20", + "symbolAliases": [ + { + "foreign": { + "id": 8224, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "121:15:20", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "openzeppelin-contracts/contracts/utils/Base64.sol", + "file": "openzeppelin-contracts/contracts/utils/Base64.sol", + "id": 8227, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 8479, + "sourceUnit": 2405, + "src": "178:73:20", + "symbolAliases": [ + { + "foreign": { + "id": 8226, + "name": "Base64", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2404, + "src": "186:6:20", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "solady/utils/LibString.sol", + "file": "solady/utils/LibString.sol", + "id": 8229, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 8479, + "sourceUnit": 6146, + "src": "252:53:20", + "symbolAliases": [ + { + "foreign": { + "id": 8228, + "name": "LibString", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6145, + "src": "260:9:20", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "WebAuthn", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 8230, + "nodeType": "StructuredDocumentation", + "src": "307:454:20", + "text": "@title WebAuthn\n @notice A library for verifying WebAuthn Authentication Assertions, built off the work\n of Daimo.\n @dev Attempts to use the RIP-7212 precompile for signature verification.\n If precompile verification fails, it falls back to FreshCryptoLib.\n @author Coinbase (https://github.com/base-org/webauthn-sol)\n @author Daimo (https://github.com/daimo-eth/p256-verifier/blob/master/src/WebAuthn.sol)" + }, + "fullyImplemented": true, + "id": 8478, + "linearizedBaseContracts": [ + 8478 + ], + "name": "WebAuthn", + "nameLocation": "769:8:20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 8233, + "libraryName": { + "id": 8231, + "name": "LibString", + "nameLocations": [ + "790:9:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6145, + "src": "790:9:20" + }, + "nodeType": "UsingForDirective", + "src": "784:27:20", + "typeName": { + "id": 8232, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "804:6:20", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + } + }, + { + "canonicalName": "WebAuthn.WebAuthnAuth", + "id": 8252, + "members": [ + { + "constant": false, + "id": 8236, + "mutability": "mutable", + "name": "authenticatorData", + "nameLocation": "1012:17:20", + "nodeType": "VariableDeclaration", + "scope": 8252, + "src": "1006:23:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 8235, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1006:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8239, + "mutability": "mutable", + "name": "clientDataJSON", + "nameLocation": "1191:14:20", + "nodeType": "VariableDeclaration", + "scope": 8252, + "src": "1184:21:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + }, + "typeName": { + "id": 8238, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1184:6:20", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8242, + "mutability": "mutable", + "name": "challengeIndex", + "nameLocation": "1305:14:20", + "nodeType": "VariableDeclaration", + "scope": 8252, + "src": "1297:22:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8241, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1297:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8245, + "mutability": "mutable", + "name": "typeIndex", + "nameLocation": "1414:9:20", + "nodeType": "VariableDeclaration", + "scope": 8252, + "src": "1406:17:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8244, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1406:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8248, + "mutability": "mutable", + "name": "r", + "nameLocation": "1493:1:20", + "nodeType": "VariableDeclaration", + "scope": 8252, + "src": "1485:9:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8247, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1485:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8251, + "mutability": "mutable", + "name": "s", + "nameLocation": "1564:1:20", + "nodeType": "VariableDeclaration", + "scope": 8252, + "src": "1556:9:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8250, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1556:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "WebAuthnAuth", + "nameLocation": "824:12:20", + "nodeType": "StructDefinition", + "scope": 8478, + "src": "817:755:20", + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 8253, + "nodeType": "StructuredDocumentation", + "src": "1578:147:20", + "text": "@dev Bit 0 of the authenticator data struct, corresponding to the \"User Present\" bit.\n See https://www.w3.org/TR/webauthn-2/#flags." + }, + "id": 8256, + "mutability": "constant", + "name": "_AUTH_DATA_FLAGS_UP", + "nameLocation": "1754:19:20", + "nodeType": "VariableDeclaration", + "scope": 8478, + "src": "1730:50:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + "typeName": { + "id": 8254, + "name": "bytes1", + "nodeType": "ElementaryTypeName", + "src": "1730:6:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "value": { + "hexValue": "30783031", + "id": 8255, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1776:4:20", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "0x01" + }, + "visibility": "private" + }, + { + "constant": true, + "documentation": { + "id": 8257, + "nodeType": "StructuredDocumentation", + "src": "1787:148:20", + "text": "@dev Bit 2 of the authenticator data struct, corresponding to the \"User Verified\" bit.\n See https://www.w3.org/TR/webauthn-2/#flags." + }, + "id": 8260, + "mutability": "constant", + "name": "_AUTH_DATA_FLAGS_UV", + "nameLocation": "1964:19:20", + "nodeType": "VariableDeclaration", + "scope": 8478, + "src": "1940:50:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + "typeName": { + "id": 8258, + "name": "bytes1", + "nodeType": "ElementaryTypeName", + "src": "1940:6:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "value": { + "hexValue": "30783034", + "id": 8259, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1986:4:20", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "0x04" + }, + "visibility": "private" + }, + { + "constant": true, + "documentation": { + "id": 8261, + "nodeType": "StructuredDocumentation", + "src": "1997:89:20", + "text": "@dev Secp256r1 curve order / 2 used as guard to prevent signature malleability issue." + }, + "id": 8267, + "mutability": "constant", + "name": "_P256_N_DIV_2", + "nameLocation": "2116:13:20", + "nodeType": "VariableDeclaration", + "scope": 8478, + "src": "2091:62:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8262, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2091:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8266, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 8263, + "name": "FCL_Elliptic_ZZ", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2309, + "src": "2132:15:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_Elliptic_ZZ_$2309_$", + "typeString": "type(library FCL_Elliptic_ZZ)" + } + }, + "id": 8264, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2148:1:20", + "memberName": "n", + "nodeType": "MemberAccess", + "referencedDeclaration": 991, + "src": "2132:17:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "hexValue": "32", + "id": 8265, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2152:1:20", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "2132:21:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "private" + }, + { + "constant": true, + "documentation": { + "id": 8268, + "nodeType": "StructuredDocumentation", + "src": "2160:194:20", + "text": "@dev The precompiled contract address to use for signature verification in the “secp256r1” elliptic curve.\n See https://github.com/ethereum/RIPs/blob/master/RIPS/rip-7212.md." + }, + "id": 8274, + "mutability": "constant", + "name": "_VERIFIER", + "nameLocation": "2384:9:20", + "nodeType": "VariableDeclaration", + "scope": 8478, + "src": "2359:51:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8269, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2359:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": { + "arguments": [ + { + "hexValue": "3078313030", + "id": 8272, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2404:5:20", + "typeDescriptions": { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + }, + "value": "0x100" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + } + ], + "id": 8271, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2396:7:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 8270, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2396:7:20", + "typeDescriptions": {} + } + }, + "id": 8273, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2396:14:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "private" + }, + { + "constant": true, + "documentation": { + "id": 8275, + "nodeType": "StructuredDocumentation", + "src": "2417:174:20", + "text": "@dev The expected type (hash) in the client data JSON when verifying assertion signatures.\n See https://www.w3.org/TR/webauthn-2/#dom-collectedclientdata-type" + }, + "id": 8280, + "mutability": "constant", + "name": "_EXPECTED_TYPE_HASH", + "nameLocation": "2621:19:20", + "nodeType": "VariableDeclaration", + "scope": 8478, + "src": "2596:81:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8276, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2596:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "2274797065223a22776562617574686e2e67657422", + "id": 8278, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2653:23:20", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ff1a2a9176d650e4a99dedb58f1793003935130579fe17b5a3f698ac5b00e634", + "typeString": "literal_string \"\"type\":\"webauthn.get\"\"" + }, + "value": "\"type\":\"webauthn.get\"" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_ff1a2a9176d650e4a99dedb58f1793003935130579fe17b5a3f698ac5b00e634", + "typeString": "literal_string \"\"type\":\"webauthn.get\"\"" + } + ], + "id": 8277, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "2643:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 8279, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2643:34:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "private" + }, + { + "body": { + "id": 8476, + "nodeType": "Block", + "src": "6880:2765:20", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8300, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 8297, + "name": "webAuthnAuth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8288, + "src": "6894:12:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth memory" + } + }, + "id": 8298, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6907:1:20", + "memberName": "s", + "nodeType": "MemberAccess", + "referencedDeclaration": 8251, + "src": "6894:14:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 8299, + "name": "_P256_N_DIV_2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8267, + "src": "6911:13:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6894:30:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8304, + "nodeType": "IfStatement", + "src": "6890:125:20", + "trueBody": { + "id": 8303, + "nodeType": "Block", + "src": "6926:89:20", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 8301, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6999:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 8296, + "id": 8302, + "nodeType": "Return", + "src": "6992:12:20" + } + ] + } + }, + { + "assignments": [ + 8306 + ], + "declarations": [ + { + "constant": false, + "id": 8306, + "mutability": "mutable", + "name": "_type", + "nameLocation": "7170:5:20", + "nodeType": "VariableDeclaration", + "scope": 8476, + "src": "7156:19:20", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 8305, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "7156:6:20", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "id": 8317, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 8310, + "name": "webAuthnAuth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8288, + "src": "7212:12:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth memory" + } + }, + "id": 8311, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7225:9:20", + "memberName": "typeIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 8245, + "src": "7212:22:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 8312, + "name": "webAuthnAuth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8288, + "src": "7236:12:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth memory" + } + }, + "id": 8313, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7249:9:20", + "memberName": "typeIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 8245, + "src": "7236:22:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "3231", + "id": 8314, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7261:2:20", + "typeDescriptions": { + "typeIdentifier": "t_rational_21_by_1", + "typeString": "int_const 21" + }, + "value": "21" + }, + "src": "7236:27:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "expression": { + "id": 8307, + "name": "webAuthnAuth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8288, + "src": "7178:12:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth memory" + } + }, + "id": 8308, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7191:14:20", + "memberName": "clientDataJSON", + "nodeType": "MemberAccess", + "referencedDeclaration": 8239, + "src": "7178:27:20", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "id": 8309, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7206:5:20", + "memberName": "slice", + "nodeType": "MemberAccess", + "referencedDeclaration": 5815, + "src": "7178:33:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_string_memory_ptr_$", + "typeString": "function (string memory,uint256,uint256) pure returns (string memory)" + } + }, + "id": 8316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7178:86:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7156:108:20" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 8321, + "name": "_type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8306, + "src": "7294:5:20", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 8320, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7288:5:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 8319, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7288:5:20", + "typeDescriptions": {} + } + }, + "id": 8322, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7288:12:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 8318, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "7278:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 8323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7278:23:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 8324, + "name": "_EXPECTED_TYPE_HASH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8280, + "src": "7305:19:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "7278:46:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8329, + "nodeType": "IfStatement", + "src": "7274:89:20", + "trueBody": { + "id": 8328, + "nodeType": "Block", + "src": "7326:37:20", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 8326, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7347:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 8296, + "id": 8327, + "nodeType": "Return", + "src": "7340:12:20" + } + ] + } + }, + { + "assignments": [ + 8331 + ], + "declarations": [ + { + "constant": false, + "id": 8331, + "mutability": "mutable", + "name": "expectedChallenge", + "nameLocation": "7490:17:20", + "nodeType": "VariableDeclaration", + "scope": 8476, + "src": "7477:30:20", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 8330, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7477:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 8345, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "226368616c6c656e6765223a22", + "id": 8337, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7530:15:20", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_113c04afa71755a4031625b892f63ab93216801f92d9b727f651dde51622cc9b", + "typeString": "literal_string \"\"challenge\":\"\"" + }, + "value": "\"challenge\":\"" + }, + { + "arguments": [ + { + "id": 8340, + "name": "challenge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8283, + "src": "7564:9:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 8338, + "name": "Base64", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2404, + "src": "7547:6:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Base64_$2404_$", + "typeString": "type(library Base64)" + } + }, + "id": 8339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7554:9:20", + "memberName": "encodeURL", + "nodeType": "MemberAccess", + "referencedDeclaration": 2349, + "src": "7547:16:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_string_memory_ptr_$", + "typeString": "function (bytes memory) pure returns (string memory)" + } + }, + "id": 8341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7547:27:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "hexValue": "22", + "id": 8342, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7576:3:20", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6e9f33448a4153023cdaf3eb759f1afdc24aba433a3e18b683f8c04a6eaa69f0", + "typeString": "literal_string \"\"\"" + }, + "value": "\"" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_113c04afa71755a4031625b892f63ab93216801f92d9b727f651dde51622cc9b", + "typeString": "literal_string \"\"challenge\":\"\"" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_stringliteral_6e9f33448a4153023cdaf3eb759f1afdc24aba433a3e18b683f8c04a6eaa69f0", + "typeString": "literal_string \"\"\"" + } + ], + "expression": { + "id": 8335, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7516:6:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 8334, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "7516:6:20", + "typeDescriptions": {} + } + }, + "id": 8336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7523:6:20", + "memberName": "concat", + "nodeType": "MemberAccess", + "src": "7516:13:20", + "typeDescriptions": { + "typeIdentifier": "t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$", + "typeString": "function () pure returns (string memory)" + } + }, + "id": 8343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7516:64:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 8333, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7510:5:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 8332, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7510:5:20", + "typeDescriptions": {} + } + }, + "id": 8344, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7510:71:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7477:104:20" + }, + { + "assignments": [ + 8347 + ], + "declarations": [ + { + "constant": false, + "id": 8347, + "mutability": "mutable", + "name": "actualChallenge", + "nameLocation": "7605:15:20", + "nodeType": "VariableDeclaration", + "scope": 8476, + "src": "7591:29:20", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 8346, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "7591:6:20", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "id": 8359, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 8351, + "name": "webAuthnAuth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8288, + "src": "7669:12:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth memory" + } + }, + "id": 8352, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7682:14:20", + "memberName": "challengeIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 8242, + "src": "7669:27:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 8353, + "name": "webAuthnAuth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8288, + "src": "7698:12:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth memory" + } + }, + "id": 8354, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7711:14:20", + "memberName": "challengeIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 8242, + "src": "7698:27:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "expression": { + "id": 8355, + "name": "expectedChallenge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8331, + "src": "7728:17:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 8356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7746:6:20", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "7728:24:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7698:54:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "expression": { + "id": 8348, + "name": "webAuthnAuth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8288, + "src": "7635:12:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth memory" + } + }, + "id": 8349, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7648:14:20", + "memberName": "clientDataJSON", + "nodeType": "MemberAccess", + "referencedDeclaration": 8239, + "src": "7635:27:20", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "id": 8350, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7663:5:20", + "memberName": "slice", + "nodeType": "MemberAccess", + "referencedDeclaration": 5815, + "src": "7635:33:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_string_memory_ptr_$", + "typeString": "function (string memory,uint256,uint256) pure returns (string memory)" + } + }, + "id": 8358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7635:118:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7591:162:20" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 8369, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 8363, + "name": "actualChallenge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8347, + "src": "7783:15:20", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 8362, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7777:5:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 8361, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7777:5:20", + "typeDescriptions": {} + } + }, + "id": 8364, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7777:22:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 8360, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "7767:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 8365, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7767:33:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "id": 8367, + "name": "expectedChallenge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8331, + "src": "7814:17:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 8366, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "7804:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 8368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7804:28:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "7767:65:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8373, + "nodeType": "IfStatement", + "src": "7763:108:20", + "trueBody": { + "id": 8372, + "nodeType": "Block", + "src": "7834:37:20", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 8370, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7855:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 8296, + "id": 8371, + "nodeType": "Return", + "src": "7848:12:20" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + "id": 8381, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + "id": 8379, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "expression": { + "id": 8374, + "name": "webAuthnAuth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8288, + "src": "7987:12:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth memory" + } + }, + "id": 8375, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8000:17:20", + "memberName": "authenticatorData", + "nodeType": "MemberAccess", + "referencedDeclaration": 8236, + "src": "7987:30:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 8377, + "indexExpression": { + "hexValue": "3332", + "id": 8376, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8018:2:20", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7987:34:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 8378, + "name": "_AUTH_DATA_FLAGS_UP", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8256, + "src": "8024:19:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "src": "7987:56:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 8380, + "name": "_AUTH_DATA_FLAGS_UP", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8256, + "src": "8047:19:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "src": "7987:79:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8385, + "nodeType": "IfStatement", + "src": "7983:122:20", + "trueBody": { + "id": 8384, + "nodeType": "Block", + "src": "8068:37:20", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 8382, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8089:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 8296, + "id": 8383, + "nodeType": "Return", + "src": "8082:12:20" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 8396, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8386, + "name": "requireUV", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8285, + "src": "8269:9:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + "id": 8395, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + "id": 8392, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "expression": { + "id": 8387, + "name": "webAuthnAuth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8288, + "src": "8283:12:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth memory" + } + }, + "id": 8388, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8296:17:20", + "memberName": "authenticatorData", + "nodeType": "MemberAccess", + "referencedDeclaration": 8236, + "src": "8283:30:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 8390, + "indexExpression": { + "hexValue": "3332", + "id": 8389, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8314:2:20", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8283:34:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 8391, + "name": "_AUTH_DATA_FLAGS_UV", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8260, + "src": "8320:19:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "src": "8283:56:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + } + ], + "id": 8393, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8282:58:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 8394, + "name": "_AUTH_DATA_FLAGS_UV", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8260, + "src": "8344:19:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "src": "8282:81:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8269:94:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8400, + "nodeType": "IfStatement", + "src": "8265:137:20", + "trueBody": { + "id": 8399, + "nodeType": "Block", + "src": "8365:37:20", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 8397, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8386:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 8296, + "id": 8398, + "nodeType": "Return", + "src": "8379:12:20" + } + ] + } + }, + { + "assignments": [ + 8402 + ], + "declarations": [ + { + "constant": false, + "id": 8402, + "mutability": "mutable", + "name": "clientDataJSONHash", + "nameLocation": "8529:18:20", + "nodeType": "VariableDeclaration", + "scope": 8476, + "src": "8521:26:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8401, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8521:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 8410, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 8406, + "name": "webAuthnAuth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8288, + "src": "8563:12:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth memory" + } + }, + "id": 8407, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8576:14:20", + "memberName": "clientDataJSON", + "nodeType": "MemberAccess", + "referencedDeclaration": 8239, + "src": "8563:27:20", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 8405, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8557:5:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 8404, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8557:5:20", + "typeDescriptions": {} + } + }, + "id": 8408, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8557:34:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 8403, + "name": "sha256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -22, + "src": "8550:6:20", + "typeDescriptions": { + "typeIdentifier": "t_function_sha256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 8409, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8550:42:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8521:71:20" + }, + { + "assignments": [ + 8412 + ], + "declarations": [ + { + "constant": false, + "id": 8412, + "mutability": "mutable", + "name": "messageHash", + "nameLocation": "8757:11:20", + "nodeType": "VariableDeclaration", + "scope": 8476, + "src": "8749:19:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 8411, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8749:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 8421, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 8416, + "name": "webAuthnAuth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8288, + "src": "8795:12:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth memory" + } + }, + "id": 8417, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8808:17:20", + "memberName": "authenticatorData", + "nodeType": "MemberAccess", + "referencedDeclaration": 8236, + "src": "8795:30:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 8418, + "name": "clientDataJSONHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8402, + "src": "8827:18:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 8414, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "8778:3:20", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 8415, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "8782:12:20", + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "8778:16:20", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 8419, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8778:68:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 8413, + "name": "sha256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -22, + "src": "8771:6:20", + "typeDescriptions": { + "typeIdentifier": "t_function_sha256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 8420, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8771:76:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8749:98:20" + }, + { + "assignments": [ + 8423 + ], + "declarations": [ + { + "constant": false, + "id": 8423, + "mutability": "mutable", + "name": "args", + "nameLocation": "8870:4:20", + "nodeType": "VariableDeclaration", + "scope": 8476, + "src": "8857:17:20", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 8422, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8857:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 8434, + "initialValue": { + "arguments": [ + { + "id": 8426, + "name": "messageHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8412, + "src": "8888:11:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 8427, + "name": "webAuthnAuth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8288, + "src": "8901:12:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth memory" + } + }, + "id": 8428, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8914:1:20", + "memberName": "r", + "nodeType": "MemberAccess", + "referencedDeclaration": 8248, + "src": "8901:14:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 8429, + "name": "webAuthnAuth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8288, + "src": "8917:12:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth memory" + } + }, + "id": 8430, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8930:1:20", + "memberName": "s", + "nodeType": "MemberAccess", + "referencedDeclaration": 8251, + "src": "8917:14:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 8431, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8290, + "src": "8933:1:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 8432, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8292, + "src": "8936:1:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 8424, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "8877:3:20", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 8425, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "8881:6:20", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "8877:10:20", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 8433, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8877:61:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8857:81:20" + }, + { + "assignments": [ + 8436, + 8438 + ], + "declarations": [ + { + "constant": false, + "id": 8436, + "mutability": "mutable", + "name": "success", + "nameLocation": "9001:7:20", + "nodeType": "VariableDeclaration", + "scope": 8476, + "src": "8996:12:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8435, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8996:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8438, + "mutability": "mutable", + "name": "ret", + "nameLocation": "9023:3:20", + "nodeType": "VariableDeclaration", + "scope": 8476, + "src": "9010:16:20", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 8437, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "9010:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 8443, + "initialValue": { + "arguments": [ + { + "id": 8441, + "name": "args", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8423, + "src": "9051:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 8439, + "name": "_VERIFIER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8274, + "src": "9030:9:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 8440, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9040:10:20", + "memberName": "staticcall", + "nodeType": "MemberAccess", + "src": "9030:20:20", + "typeDescriptions": { + "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) view returns (bool,bytes memory)" + } + }, + "id": 8442, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9030:26:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8995:61:20" + }, + { + "assignments": [ + 8445 + ], + "declarations": [ + { + "constant": false, + "id": 8445, + "mutability": "mutable", + "name": "valid", + "nameLocation": "9455:5:20", + "nodeType": "VariableDeclaration", + "scope": 8476, + "src": "9450:10:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8444, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "9450:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 8450, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8449, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 8446, + "name": "ret", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8438, + "src": "9463:3:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 8447, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9467:6:20", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "9463:10:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 8448, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9476:1:20", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9463:14:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9450:27:20" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 8453, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8451, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8436, + "src": "9491:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "id": 8452, + "name": "valid", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8445, + "src": "9502:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "9491:16:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8464, + "nodeType": "IfStatement", + "src": "9487:60:20", + "trueBody": { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8462, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 8456, + "name": "ret", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8438, + "src": "9527:3:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 8458, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9533:7:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 8457, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9533:7:20", + "typeDescriptions": {} + } + } + ], + "id": 8459, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9532:9:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "expression": { + "id": 8454, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "9516:3:20", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 8455, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "9520:6:20", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "9516:10:20", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 8460, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9516:26:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "31", + "id": 8461, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9546:1:20", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "9516:31:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 8296, + "id": 8463, + "nodeType": "Return", + "src": "9509:38:20" + } + }, + { + "expression": { + "arguments": [ + { + "id": 8467, + "name": "messageHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8412, + "src": "9588:11:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 8468, + "name": "webAuthnAuth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8288, + "src": "9601:12:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth memory" + } + }, + "id": 8469, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9614:1:20", + "memberName": "r", + "nodeType": "MemberAccess", + "referencedDeclaration": 8248, + "src": "9601:14:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 8470, + "name": "webAuthnAuth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8288, + "src": "9617:12:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth memory" + } + }, + "id": 8471, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9630:1:20", + "memberName": "s", + "nodeType": "MemberAccess", + "referencedDeclaration": 8251, + "src": "9617:14:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 8472, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8290, + "src": "9633:1:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 8473, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8292, + "src": "9636:1:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 8465, + "name": "FCL_ecdsa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 968, + "src": "9565:9:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FCL_ecdsa_$968_$", + "typeString": "type(library FCL_ecdsa)" + } + }, + "id": 8466, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9575:12:20", + "memberName": "ecdsa_verify", + "nodeType": "MemberAccess", + "referencedDeclaration": 685, + "src": "9565:22:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (bytes32,uint256,uint256,uint256,uint256) view returns (bool)" + } + }, + "id": 8474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9565:73:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 8296, + "id": 8475, + "nodeType": "Return", + "src": "9558:80:20" + } + ] + }, + "documentation": { + "id": 8281, + "nodeType": "StructuredDocumentation", + "src": "2684:4022:20", + "text": "\n @notice Verifies a Webauthn Authentication Assertion as described\n in https://www.w3.org/TR/webauthn-2/#sctn-verifying-assertion.\n @dev We do not verify all the steps as described in the specification, only ones relevant to our context.\n Please carefully read through this list before usage.\n Specifically, we do verify the following:\n - Verify that authenticatorData (which comes from the authenticator, such as iCloud Keychain) indicates\n a well-formed assertion with the user present bit set. If `requireUV` is set, checks that the authenticator\n enforced user verification. User verification should be required if, and only if, options.userVerification\n is set to required in the request.\n - Verifies that the client JSON is of type \"webauthn.get\", i.e. the client was responding to a request to\n assert authentication.\n - Verifies that the client JSON contains the requested challenge.\n - Verifies that (r, s) constitute a valid signature over both the authenicatorData and client JSON, for public\n key (x, y).\n We make some assumptions about the particular use case of this verifier, so we do NOT verify the following:\n - Does NOT verify that the origin in the `clientDataJSON` matches the Relying Party's origin: tt is considered\n the authenticator's responsibility to ensure that the user is interacting with the correct RP. This is\n enforced by most high quality authenticators properly, particularly the iCloud Keychain and Google Password\n Manager were tested.\n - Does NOT verify That `topOrigin` in `clientDataJSON` is well-formed: We assume it would never be present, i.e.\n the credentials are never used in a cross-origin/iframe context. The website/app set up should disallow\n cross-origin usage of the credentials. This is the default behaviour for created credentials in common settings.\n - Does NOT verify that the `rpIdHash` in `authenticatorData` is the SHA-256 hash of the RP ID expected by the Relying\n Party: this means that we rely on the authenticator to properly enforce credentials to be used only by the correct RP.\n This is generally enforced with features like Apple App Site Association and Google Asset Links. To protect from\n edge cases in which a previously-linked RP ID is removed from the authorised RP IDs, we recommend that messages\n signed by the authenticator include some expiry mechanism.\n - Does NOT verify the credential backup state: this assumes the credential backup state is NOT used as part of Relying\n Party business logic or policy.\n - Does NOT verify the values of the client extension outputs: this assumes that the Relying Party does not use client\n extension outputs.\n - Does NOT verify the signature counter: signature counters are intended to enable risk scoring for the Relying Party.\n This assumes risk scoring is not used as part of Relying Party business logic or policy.\n - Does NOT verify the attestation object: this assumes that response.attestationObject is NOT present in the response,\n i.e. the RP does not intend to verify an attestation.\n @param challenge The challenge that was provided by the relying party.\n @param requireUV A boolean indicating whether user verification is required.\n @param webAuthnAuth The `WebAuthnAuth` struct.\n @param x The x coordinate of the public key.\n @param y The y coordinate of the public key.\n @return `true` if the authentication assertion passed validation, else `false`." + }, + "id": 8477, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "verify", + "nameLocation": "6720:6:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8293, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8283, + "mutability": "mutable", + "name": "challenge", + "nameLocation": "6740:9:20", + "nodeType": "VariableDeclaration", + "scope": 8477, + "src": "6727:22:20", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 8282, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6727:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8285, + "mutability": "mutable", + "name": "requireUV", + "nameLocation": "6756:9:20", + "nodeType": "VariableDeclaration", + "scope": 8477, + "src": "6751:14:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8284, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6751:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8288, + "mutability": "mutable", + "name": "webAuthnAuth", + "nameLocation": "6787:12:20", + "nodeType": "VariableDeclaration", + "scope": 8477, + "src": "6767:32:20", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth" + }, + "typeName": { + "id": 8287, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 8286, + "name": "WebAuthnAuth", + "nameLocations": [ + "6767:12:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 8252, + "src": "6767:12:20" + }, + "referencedDeclaration": 8252, + "src": "6767:12:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$8252_storage_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8290, + "mutability": "mutable", + "name": "x", + "nameLocation": "6809:1:20", + "nodeType": "VariableDeclaration", + "scope": 8477, + "src": "6801:9:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8289, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6801:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8292, + "mutability": "mutable", + "name": "y", + "nameLocation": "6820:1:20", + "nodeType": "VariableDeclaration", + "scope": 8477, + "src": "6812:9:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8291, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6812:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6726:96:20" + }, + "returnParameters": { + "id": 8296, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8295, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8477, + "src": "6870:4:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 8294, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6870:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "6869:6:20" + }, + "scope": 8478, + "src": "6711:2934:20", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 8479, + "src": "761:8886:20", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "32:9616:20" + }, + "id": 20 + } + }, + "contracts": { + "@account-abstraction/contracts/core/UserOperationLib.sol": { + "UserOperationLib": { + "abi": [ + { + "inputs": [], + "name": "PAYMASTER_DATA_OFFSET", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PAYMASTER_POSTOP_GAS_OFFSET", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PAYMASTER_VALIDATION_GAS_OFFSET", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6080806040523460175760b79081601d823930815050f35b600080fdfe6080806040526004361015601257600080fd5b60003560e01c90816325093e1b14606d57508063b29a8ff41460575763ede3150214603c57600080fd5b6000366003190112605257602060405160348152f35b600080fd5b6000366003190112605257602060405160148152f35b600036600319011260525780602460209252f3fea2646970667358221220166b7ff4ece83787ecc206c6105839c9ad1f5fdfa666c52d9b16237a82630bcf64736f6c634300081c0033", + "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0xB7 SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH1 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x25093E1B EQ PUSH1 0x6D JUMPI POP DUP1 PUSH4 0xB29A8FF4 EQ PUSH1 0x57 JUMPI PUSH4 0xEDE31502 EQ PUSH1 0x3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH1 0x52 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x34 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH1 0x52 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x14 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH1 0x52 JUMPI DUP1 PUSH1 0x24 PUSH1 0x20 SWAP3 MSTORE RETURN INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 AND PUSH12 0x7FF4ECE83787ECC206C61058 CODECOPY 0xC9 0xAD 0x1F PUSH0 0xDF 0xA6 PUSH7 0xC52D9B16237A82 PUSH4 0xBCF6473 PUSH16 0x6C634300081C00330000000000000000 ", + "sourceMap": "282:4714:1:-:0;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "6080806040526004361015601257600080fd5b60003560e01c90816325093e1b14606d57508063b29a8ff41460575763ede3150214603c57600080fd5b6000366003190112605257602060405160348152f35b600080fd5b6000366003190112605257602060405160148152f35b600036600319011260525780602460209252f3fea2646970667358221220166b7ff4ece83787ecc206c6105839c9ad1f5fdfa666c52d9b16237a82630bcf64736f6c634300081c0033", + "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH1 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x25093E1B EQ PUSH1 0x6D JUMPI POP DUP1 PUSH4 0xB29A8FF4 EQ PUSH1 0x57 JUMPI PUSH4 0xEDE31502 EQ PUSH1 0x3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH1 0x52 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x34 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH1 0x52 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x14 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH1 0x52 JUMPI DUP1 PUSH1 0x24 PUSH1 0x20 SWAP3 MSTORE RETURN INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 AND PUSH12 0x7FF4ECE83787ECC206C61058 CODECOPY 0xC9 0xAD 0x1F PUSH0 0xDF 0xA6 PUSH7 0xC52D9B16237A82 PUSH4 0xBCF6473 PUSH16 0x6C634300081C00330000000000000000 ", + "sourceMap": "282:4714:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;282:4714:1;;;;;;;490:2;282:4714;;;;;;;;;;-1:-1:-1;;282:4714:1;;;;;;;372:2;282:4714;;;;;;-1:-1:-1;;282:4714:1;;;;;434:2;282:4714;;;" + }, + "methodIdentifiers": { + "PAYMASTER_DATA_OFFSET()": "ede31502", + "PAYMASTER_POSTOP_GAS_OFFSET()": "25093e1b", + "PAYMASTER_VALIDATION_GAS_OFFSET()": "b29a8ff4" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"PAYMASTER_DATA_OFFSET\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PAYMASTER_POSTOP_GAS_OFFSET\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PAYMASTER_VALIDATION_GAS_OFFSET\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Utility functions helpful when working with UserOperation structs.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@account-abstraction/contracts/core/UserOperationLib.sol\":\"UserOperationLib\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@account-abstraction/contracts/core/Helpers.sol\":{\"keccak256\":\"0x6247e011a6cb0b263b3aa098822977181674d91b62e5bdfe04c6e66f72da25d6\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ca829a69b3fbc74fec8e140d42a2bf93bc3512609272f031c846470f61f0ab7e\",\"dweb:/ipfs/QmP3r3MBgAN39KeVB1rCGJWwcBcotNt26ALtAR54poQ1Jc\"]},\"@account-abstraction/contracts/core/UserOperationLib.sol\":{\"keccak256\":\"0x9d50ece985d35f82e33e5da417595c86fac10449e3d10895d08363d33aad454b\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b1d11cc364c8bf7ed5388268c895b5ffed16e87dfbcb320ddeeba5e7974315dc\",\"dweb:/ipfs/QmYSpvjxEjweietQrYZagwQ52ipy7eXx4rwvnTzXKeGeMS\"]},\"@account-abstraction/contracts/interfaces/PackedUserOperation.sol\":{\"keccak256\":\"0x1129b46381db68eddbc5cb49e50664667b66b03c480453858e7b25eabe444359\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://499a948aba60480dba6e25c763b8d918f1c246eb7a3302e04f493e080f3295be\",\"dweb:/ipfs/QmeRhhswf4NACcBKam2PyjpTP2ddSm648kah5kkQJsvwz3\"]}},\"version\":1}" + } + }, + "@account-abstraction/contracts/interfaces/IAccount.sol": { + "IAccount": { + "abi": [ + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "callData", + "type": "bytes" + }, + { + "internalType": "bytes32", + "name": "accountGasLimits", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "preVerificationGas", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "gasFees", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "paymasterAndData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "internalType": "struct PackedUserOperation", + "name": "userOp", + "type": "tuple" + }, + { + "internalType": "bytes32", + "name": "userOpHash", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "missingAccountFunds", + "type": "uint256" + } + ], + "name": "validateUserOp", + "outputs": [ + { + "internalType": "uint256", + "name": "validationData", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)": "19822f7c" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"accountGasLimits\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"gasFees\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct PackedUserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"missingAccountFunds\",\"type\":\"uint256\"}],\"name\":\"validateUserOp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"validationData\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)\":{\"details\":\"Must validate caller is the entryPoint. Must validate the signature and nonce\",\"params\":{\"missingAccountFunds\":\"- Missing funds on the account's deposit in the entrypoint. This is the minimum amount to transfer to the sender(entryPoint) to be able to make the call. The excess is left as a deposit in the entrypoint for future calls. Can be withdrawn anytime using \\\"entryPoint.withdrawTo()\\\". In case there is a paymaster in the request (or the current deposit is high enough), this value will be zero.\",\"userOp\":\"- The operation that is about to be executed.\",\"userOpHash\":\"- Hash of the user's request data. can be used as the basis for signature.\"},\"returns\":{\"validationData\":\" - Packaged ValidationData structure. use `_packValidationData` and `_unpackValidationData` to encode and decode. <20-byte> sigAuthorizer - 0 for valid signature, 1 to mark signature failure, otherwise, an address of an \\\"authorizer\\\" contract. <6-byte> validUntil - Last timestamp this operation is valid. 0 for \\\"indefinite\\\" <6-byte> validAfter - First timestamp this operation is valid If an account doesn't use time-range, it is enough to return SIG_VALIDATION_FAILED value (1) for signature failure. Note that the validation code cannot use block.timestamp (or block.number) directly.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)\":{\"notice\":\"Validate user's signature and nonce the entryPoint will make the call to the recipient only if this validation call returns successfully. signature failure should be reported by returning SIG_VALIDATION_FAILED (1). This allows making a \\\"simulation call\\\" without a valid signature Other failures (e.g. nonce mismatch, or invalid signature format) should still revert to signal failure.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@account-abstraction/contracts/interfaces/IAccount.sol\":\"IAccount\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@account-abstraction/contracts/interfaces/IAccount.sol\":{\"keccak256\":\"0x38710bec0cb20ff4ceef46a80475b5bdabc27b7efd2687fd473db68332f61b78\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://dea7a723e1ef852e8764e69914a345d2e8bc5e13facfc9d5c29d791cb4ab0020\",\"dweb:/ipfs/QmU8dYgyF4DBJXFqjwLAtnE3q8q259ChfoEk9a6wyhHzEP\"]},\"@account-abstraction/contracts/interfaces/PackedUserOperation.sol\":{\"keccak256\":\"0x1129b46381db68eddbc5cb49e50664667b66b03c480453858e7b25eabe444359\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://499a948aba60480dba6e25c763b8d918f1c246eb7a3302e04f493e080f3295be\",\"dweb:/ipfs/QmeRhhswf4NACcBKam2PyjpTP2ddSm648kah5kkQJsvwz3\"]}},\"version\":1}" + } + }, + "FreshCryptoLib/FCL_ecdsa.sol": { + "FCL_ecdsa": { + "abi": [], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea26469706673582212209ea5b5661beb1be2f69808caf876e8831b38da425ca3fcec62ec3c6b664e4af664736f6c634300081c0033", + "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x3A SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP15 0xA5 0xB5 PUSH7 0x1BEB1BE2F69808 0xCA 0xF8 PUSH23 0xE8831B38DA425CA3FCEC62EC3C6B664E4AF664736F6C63 NUMBER STOP ADDMOD SHR STOP CALLER ", + "sourceMap": "1217:3244:4:-:0;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "600080fdfea26469706673582212209ea5b5661beb1be2f69808caf876e8831b38da425ca3fcec62ec3c6b664e4af664736f6c634300081c0033", + "opcodes": "PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP15 0xA5 0xB5 PUSH7 0x1BEB1BE2F69808 0xCA 0xF8 PUSH23 0xE8831B38DA425CA3FCEC62EC3C6B664E4AF664736F6C63 NUMBER STOP ADDMOD SHR STOP CALLER ", + "sourceMap": "1217:3244:4:-:0;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"FreshCryptoLib/FCL_ecdsa.sol\":\"FCL_ecdsa\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"FreshCryptoLib/FCL_ecdsa.sol\":{\"keccak256\":\"0x679d2e9a655cd7e156a0cfc24de0aca88d4e0b34a8e0dfe6a599f23af092f5a2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db31eb84c6f854f076d2501e3d8b5a606fb4924168bdfc6fc3de84e67ed8a80d\",\"dweb:/ipfs/QmWGAmc7B4aT6Ki52uF9QmPQKWipaptit7r3JknBHjUGfe\"]},\"FreshCryptoLib/FCL_elliptic.sol\":{\"keccak256\":\"0xac7bb3260a446851f45b8cb71e31d64ca469d7711ed04662092a9554f1283a38\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f9b0dc5a2306ad3f3a0ff4a5b947fe49422181e97c163ea237fc8bfc6736429d\",\"dweb:/ipfs/QmeruF7BvG5BNnqwqwdshoVXuXqXtajbUYB19KwPynHrQE\"]}},\"version\":1}" + } + }, + "FreshCryptoLib/FCL_elliptic.sol": { + "FCL_Elliptic_ZZ": { + "abi": [], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea2646970667358221220a3d696919b263b7170c2483d35c375e2cb8a7aa6ef6f80d531af5adc504c3d6164736f6c634300081c0033", + "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x3A SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG3 0xD6 SWAP7 SWAP2 SWAP12 0x26 EXTCODESIZE PUSH18 0x70C2483D35C375E2CB8A7AA6EF6F80D531AF GAS 0xDC POP 0x4C RETURNDATASIZE PUSH2 0x6473 PUSH16 0x6C634300081C00330000000000000000 ", + "sourceMap": "1220:39313:5:-:0;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "600080fdfea2646970667358221220a3d696919b263b7170c2483d35c375e2cb8a7aa6ef6f80d531af5adc504c3d6164736f6c634300081c0033", + "opcodes": "PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG3 0xD6 SWAP7 SWAP2 SWAP12 0x26 EXTCODESIZE PUSH18 0x70C2483D35C375E2CB8A7AA6EF6F80D531AF GAS 0xDC POP 0x4C RETURNDATASIZE PUSH2 0x6473 PUSH16 0x6C634300081C00330000000000000000 ", + "sourceMap": "1220:39313:5:-:0;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"FreshCryptoLib/FCL_elliptic.sol\":\"FCL_Elliptic_ZZ\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"FreshCryptoLib/FCL_elliptic.sol\":{\"keccak256\":\"0xac7bb3260a446851f45b8cb71e31d64ca469d7711ed04662092a9554f1283a38\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f9b0dc5a2306ad3f3a0ff4a5b947fe49422181e97c163ea237fc8bfc6736429d\",\"dweb:/ipfs/QmeruF7BvG5BNnqwqwdshoVXuXqXtajbUYB19KwPynHrQE\"]}},\"version\":1}" + } + }, + "openzeppelin-contracts/contracts/utils/Base64.sol": { + "Base64": { + "abi": [], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea2646970667358221220a185923cc00d2e855a2c4d8df49b7da5249b20dbdbc30f0f6c2ef410b239ff4364736f6c634300081c0033", + "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x3A SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG1 DUP6 SWAP3 EXTCODECOPY 0xC0 0xD 0x2E DUP6 GAS 0x2C 0x4D DUP14 DELEGATECALL SWAP12 PUSH30 0xA5249B20DBDBC30F0F6C2EF410B239FF4364736F6C634300081C00330000 ", + "sourceMap": "202:5008:6:-:0;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "600080fdfea2646970667358221220a185923cc00d2e855a2c4d8df49b7da5249b20dbdbc30f0f6c2ef410b239ff4364736f6c634300081c0033", + "opcodes": "PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG1 DUP6 SWAP3 EXTCODECOPY 0xC0 0xD 0x2E DUP6 GAS 0x2C 0x4D DUP14 DELEGATECALL SWAP12 PUSH30 0xA5249B20DBDBC30F0F6C2EF410B239FF4364736F6C634300081C00330000 ", + "sourceMap": "202:5008:6:-:0;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides a set of functions to operate with Base64 strings.\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"_TABLE\":{\"details\":\"Base64 Encoding/Decoding Table See sections 4 and 5 of https://datatracker.ietf.org/doc/html/rfc4648\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"openzeppelin-contracts/contracts/utils/Base64.sol\":\"Base64\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"openzeppelin-contracts/contracts/utils/Base64.sol\":{\"keccak256\":\"0xbee2b819e1b4bf569ffc1b1b9d560b4abd6a589575f3093edaab9244de18a0c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e478c0e9bbf3eb8cd3b7784f9b397603e34747f9ffd16571ed1d89ce102de389\",\"dweb:/ipfs/QmZ6zXpwy5xRxx9RkodJmDZSUTeEqPQUanAC5TUoYqW2VR\"]}},\"version\":1}" + } + }, + "solady/accounts/Receiver.sol": { + "Receiver": { + "abi": [ + { + "inputs": [], + "name": "FnSelectorNotRecognized", + "type": "error" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"FnSelectorNotRecognized\",\"type\":\"error\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"author\":\"Solady (https://github.com/Vectorized/solady/blob/main/src/accounts/Receiver.sol)\",\"details\":\"Note: - Handles all ERC721 and ERC1155 token safety callbacks. - Collapses function table gas overhead and code size. - Utilizes fallback so unknown calldata will pass on.\",\"errors\":{\"FnSelectorNotRecognized()\":[{\"details\":\"The function selector is not recognized.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Receiver mixin for ETH and safe-transferred ERC721 and ERC1155 tokens.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"solady/accounts/Receiver.sol\":\"Receiver\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"solady/accounts/Receiver.sol\":{\"keccak256\":\"0xc879aa81dd5639f5fd97b31acd91658ffe33ae4b72b70ed7bd701c37addce43b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2e03a8d37d48644857d94f7432c1e2272bfd19649dfe80aba8f979f157f71f00\",\"dweb:/ipfs/QmWWS34bNWhiZgLXS9gtD8N2dxreRsVXxhvQRKqd4wKUuU\"]}},\"version\":1}" + } + }, + "solady/utils/CallContextChecker.sol": { + "CallContextChecker": { + "abi": [ + { + "inputs": [], + "name": "UnauthorizedCallContext", + "type": "error" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60a08060405234601d5730608052603a908160238239608051815050f35b600080fdfe600080fdfea26469706673582212200f4e22115b69c9ec60462a11c134d045c14a77c159e554c3267a594e8774d8b864736f6c634300081c0033", + "opcodes": "PUSH1 0xA0 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x1D JUMPI ADDRESS PUSH1 0x80 MSTORE PUSH1 0x3A SWAP1 DUP2 PUSH1 0x23 DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF 0x4E 0x22 GT JUMPDEST PUSH10 0xC9EC60462A11C134D045 0xC1 BLOBBASEFEE PUSH24 0xC159E554C3267A594E8774D8B864736F6C634300081C0033 ", + "sourceMap": "198:4295:8:-:0;;;;;;;1279:4;1255:31;;198:4295;;;;;;1255:31;198:4295;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "600080fdfea26469706673582212200f4e22115b69c9ec60462a11c134d045c14a77c159e554c3267a594e8774d8b864736f6c634300081c0033", + "opcodes": "PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF 0x4E 0x22 GT JUMPDEST PUSH10 0xC9EC60462A11C134D045 0xC1 BLOBBASEFEE PUSH24 0xC159E554C3267A594E8774D8B864736F6C634300081C0033 ", + "sourceMap": "198:4295:8:-:0;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"UnauthorizedCallContext\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"Solady (https://github.com/vectorized/solady/blob/main/src/utils/CallContextChecker.sol)\",\"errors\":{\"UnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized call context.\"}]},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"__self\":{\"details\":\"For checking if the context is a delegate call. Note: To enable use cases with an immutable default implementation in the bytecode, (see: ERC6551Proxy), we don't require that the proxy address must match the value stored in the implementation slot, which may not be initialized.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Call context checker mixin.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"solady/utils/CallContextChecker.sol\":\"CallContextChecker\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"solady/utils/CallContextChecker.sol\":{\"keccak256\":\"0xc54c743a03f4909826712e9c6b683ca95e8b0c120c55284a9e3572621ebd734b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3d3138009aba3d2fd310636f3cc1d6029e970c57ddb74693bebf2a02d3e6f12d\",\"dweb:/ipfs/QmauMpcVDyQqVnAUF75DXy831LvtxyFS7GND7kge1Zgw55\"]}},\"version\":1}" + } + }, + "solady/utils/LibBytes.sol": { + "LibBytes": { + "abi": [], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea264697066735822122013509f86b48312e9cc2deb4bb3f58fdca22930db1d63f87d97ed75ad3f4f232564736f6c634300081c0033", + "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x3A SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SGT POP SWAP16 DUP7 0xB4 DUP4 SLT 0xE9 0xCC 0x2D 0xEB 0x4B 0xB3 CREATE2 DUP16 0xDC LOG2 0x29 ADDRESS 0xDB SAR PUSH4 0xF87D97ED PUSH22 0xAD3F4F232564736F6C634300081C0033000000000000 ", + "sourceMap": "197:34035:9:-:0;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "600080fdfea264697066735822122013509f86b48312e9cc2deb4bb3f58fdca22930db1d63f87d97ed75ad3f4f232564736f6c634300081c0033", + "opcodes": "PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SGT POP SWAP16 DUP7 0xB4 DUP4 SLT 0xE9 0xCC 0x2D 0xEB 0x4B 0xB3 CREATE2 DUP16 0xDC LOG2 0x29 ADDRESS 0xDB SAR PUSH4 0xF87D97ED PUSH22 0xAD3F4F232564736F6C634300081C0033000000000000 ", + "sourceMap": "197:34035:9:-:0;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Solady (https://github.com/vectorized/solady/blob/main/src/utils/LibBytes.sol)\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"NOT_FOUND\":{\"details\":\"The constant returned when the `search` is not found in the bytes.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Library for byte related operations.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"solady/utils/LibBytes.sol\":\"LibBytes\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"solady/utils/LibBytes.sol\":{\"keccak256\":\"0x320c3c933df51e8fd6f1fc96de721c8cc6f1be1d4c586c11f1c472a23b86eba5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cec71f42247eda74535c6e695a2ac194268a342594a26c090bafd04434698b20\",\"dweb:/ipfs/QmXA8Qaw6DdWujdrNHMHpDLNGG4QCgC859ozivrxkxp7Ea\"]}},\"version\":1}" + } + }, + "solady/utils/LibClone.sol": { + "LibClone": { + "abi": [ + { + "inputs": [], + "name": "DeploymentFailed", + "type": "error" + }, + { + "inputs": [], + "name": "ETHTransferFailed", + "type": "error" + }, + { + "inputs": [], + "name": "SaltDoesNotStartWith", + "type": "error" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea264697066735822122021078c0b40a1425b0f70cdb7636626a7af628dc05a74c92015d6ae21574421ea64736f6c634300081c0033", + "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x3A SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x21 SMOD DUP13 SIGNEXTEND BLOCKHASH LOG1 TIMESTAMP JUMPDEST 0xF PUSH17 0xCDB7636626A7AF628DC05A74C92015D6AE 0x21 JUMPI PREVRANDAO 0x21 0xEA PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ", + "sourceMap": "3756:152678:10:-:0;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "600080fdfea264697066735822122021078c0b40a1425b0f70cdb7636626a7af628dc05a74c92015d6ae21574421ea64736f6c634300081c0033", + "opcodes": "PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x21 SMOD DUP13 SIGNEXTEND BLOCKHASH LOG1 TIMESTAMP JUMPDEST 0xF PUSH17 0xCDB7636626A7AF628DC05A74C92015D6AE 0x21 JUMPI PREVRANDAO 0x21 0xEA PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ", + "sourceMap": "3756:152678:10:-:0;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"DeploymentFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ETHTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SaltDoesNotStartWith\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"Solady (https://github.com/vectorized/solady/blob/main/src/utils/LibClone.sol)Minimal proxy by 0age (https://github.com/0age)Clones with immutable args by wighawag, zefram.eth, Saw-mon & Natalie (https://github.com/Saw-mon-and-Natalie/clones-with-immutable-args)Minimal ERC1967 proxy by jtriley-eth (https://github.com/jtriley-eth/minimum-viable-proxy)\",\"details\":\"Minimal proxy: Although the sw0nt pattern saves 5 gas over the ERC1167 pattern during runtime, it is not supported out-of-the-box on Etherscan. Hence, we choose to use the 0age pattern, which saves 4 gas over the ERC1167 pattern during runtime, and has the smallest bytecode. - Automatically verified on Etherscan.Minimal proxy (PUSH0 variant): This is a new minimal proxy that uses the PUSH0 opcode introduced during Shanghai. It is optimized first for minimal runtime gas, then for minimal bytecode. The PUSH0 clone functions are intentionally postfixed with a jarring \\\"_PUSH0\\\" as many EVM chains may not support the PUSH0 opcode in the early months after Shanghai. Please use with caution. - Automatically verified on Etherscan.Clones with immutable args (CWIA): The implementation of CWIA here does NOT append the immutable args into the calldata passed into delegatecall. It is simply an ERC1167 minimal proxy with the immutable arguments appended to the back of the runtime bytecode. - Uses the identity precompile (0x4) to copy args during deployment.Minimal ERC1967 proxy: A minimal ERC1967 proxy, intended to be upgraded with UUPS. This is NOT the same as ERC1967Factory's transparent proxy, which includes admin logic. - Automatically verified on Etherscan.Minimal ERC1967 proxy with immutable args: - Uses the identity precompile (0x4) to copy args during deployment. - Automatically verified on Etherscan.ERC1967I proxy: A variant of the minimal ERC1967 proxy, with a special code path that activates if `calldatasize() == 1`. This code path skips the delegatecall and directly returns the `implementation` address. The returned implementation is guaranteed to be valid if the keccak256 of the proxy's code is equal to `ERC1967I_CODE_HASH`.ERC1967I proxy with immutable args: A variant of the minimal ERC1967 proxy, with a special code path that activates if `calldatasize() == 1`. This code path skips the delegatecall and directly returns the - Uses the identity precompile (0x4) to copy args during deployment.Minimal ERC1967 beacon proxy: A minimal beacon proxy, intended to be upgraded with an upgradable beacon. - Automatically verified on Etherscan.Minimal ERC1967 beacon proxy with immutable args: - Uses the identity precompile (0x4) to copy args during deployment. - Automatically verified on Etherscan.ERC1967I beacon proxy: A variant of the minimal ERC1967 beacon proxy, with a special code path that activates if `calldatasize() == 1`. This code path skips the delegatecall and directly returns the `implementation` address. The returned implementation is guaranteed to be valid if the keccak256 of the proxy's code is equal to `ERC1967I_CODE_HASH`.ERC1967I proxy with immutable args: A variant of the minimal ERC1967 beacon proxy, with a special code path that activates if `calldatasize() == 1`. This code path skips the delegatecall and directly returns the - Uses the identity precompile (0x4) to copy args during deployment.\",\"errors\":{\"DeploymentFailed()\":[{\"details\":\"Unable to deploy the clone.\"}],\"ETHTransferFailed()\":[{\"details\":\"The ETH transfer has failed.\"}],\"SaltDoesNotStartWith()\":[{\"details\":\"The salt must start with either the zero address or `by`.\"}]},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"CLONE_CODE_HASH\":{\"details\":\"The keccak256 of deployed code for the clone proxy, with the implementation set to `address(0)`.\"},\"CWIA_CODE_HASH\":{\"details\":\"The keccak256 of deployed code for the ERC-1167 CWIA proxy, with the implementation set to `address(0)`.\"},\"ERC1967I_BEACON_PROXY_CODE_HASH\":{\"details\":\"The keccak256 of the deployed code for the ERC1967 beacon proxy.\"},\"ERC1967I_CODE_HASH\":{\"details\":\"The keccak256 of the deployed code for the ERC1967I proxy.\"},\"ERC1967_BEACON_PROXY_CODE_HASH\":{\"details\":\"The keccak256 of the deployed code for the ERC1967 beacon proxy.\"},\"ERC1967_CODE_HASH\":{\"details\":\"The keccak256 of the deployed code for the ERC1967 proxy.\"},\"PUSH0_CLONE_CODE_HASH\":{\"details\":\"The keccak256 of deployed code for the PUSH0 proxy, with the implementation set to `address(0)`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Minimal proxy library.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"solady/utils/LibClone.sol\":\"LibClone\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"solady/utils/LibClone.sol\":{\"keccak256\":\"0x1b96fd03a3948155bd2fe95dc4980930c759b174026e18f11bc8e88d55ae030e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://64998d16472a127031ee6a796ed9afcf13dd662afd30eb4d3e2a42c2bc9fd204\",\"dweb:/ipfs/QmTXHGy9t8YTW96tjiZ8RBqmijXUTqc1JznEBqHv8Duc4A\"]}},\"version\":1}" + } + }, + "solady/utils/LibString.sol": { + "LibString": { + "abi": [ + { + "inputs": [], + "name": "HexLengthInsufficient", + "type": "error" + }, + { + "inputs": [], + "name": "StringNot7BitASCII", + "type": "error" + }, + { + "inputs": [], + "name": "TooBigForSmallString", + "type": "error" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea2646970667358221220ab6cad7b68e06ba2d4d7a3b774278f60527efe5ba94662a3757478eb084700a364736f6c634300081c0033", + "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x3A SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAB PUSH13 0xAD7B68E06BA2D4D7A3B774278F PUSH1 0x52 PUSH31 0xFE5BA94662A3757478EB084700A364736F6C634300081C0033000000000000 ", + "sourceMap": "690:43561:11:-:0;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "600080fdfea2646970667358221220ab6cad7b68e06ba2d4d7a3b774278f60527efe5ba94662a3757478eb084700a364736f6c634300081c0033", + "opcodes": "PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAB PUSH13 0xAD7B68E06BA2D4D7A3B774278F PUSH1 0x52 PUSH31 0xFE5BA94662A3757478EB084700A364736F6C634300081C0033000000000000 ", + "sourceMap": "690:43561:11:-:0;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"HexLengthInsufficient\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StringNot7BitASCII\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooBigForSmallString\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"Solady (https://github.com/vectorized/solady/blob/main/src/utils/LibString.sol)Modified from Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/LibString.sol)\",\"details\":\"Note: For performance and bytecode compactness, most of the string operations are restricted to byte strings (7-bit ASCII), except where otherwise specified. Usage of byte string operations on charsets with runes spanning two or more bytes can lead to undefined behavior.\",\"errors\":{\"HexLengthInsufficient()\":[{\"details\":\"The length of the output is too small to contain all the hex digits.\"}],\"StringNot7BitASCII()\":[{\"details\":\"The input string must be a 7-bit ASCII.\"}],\"TooBigForSmallString()\":[{\"details\":\"The length of the string is more than 32 bytes.\"}]},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"ALPHANUMERIC_7_BIT_ASCII\":{\"details\":\"Lookup for '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.\"},\"DIGITS_7_BIT_ASCII\":{\"details\":\"Lookup for '0123456789'.\"},\"HEXDIGITS_7_BIT_ASCII\":{\"details\":\"Lookup for '0123456789abcdefABCDEF'.\"},\"LETTERS_7_BIT_ASCII\":{\"details\":\"Lookup for 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.\"},\"LOWERCASE_7_BIT_ASCII\":{\"details\":\"Lookup for 'abcdefghijklmnopqrstuvwxyz'.\"},\"NOT_FOUND\":{\"details\":\"The constant returned when the `search` is not found in the string.\"},\"OCTDIGITS_7_BIT_ASCII\":{\"details\":\"Lookup for '01234567'.\"},\"PRINTABLE_7_BIT_ASCII\":{\"details\":\"Lookup for '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!\\\"#$%&\\\\'()*+,-./:;<=>?@[\\\\\\\\]^_`{|}~ \\\\t\\\\n\\\\r\\\\x0b\\\\x0c'.\"},\"PUNCTUATION_7_BIT_ASCII\":{\"details\":\"Lookup for '!\\\"#$%&\\\\'()*+,-./:;<=>?@[\\\\\\\\]^_`{|}~'.\"},\"UPPERCASE_7_BIT_ASCII\":{\"details\":\"Lookup for 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.\"},\"WHITESPACE_7_BIT_ASCII\":{\"details\":\"Lookup for ' \\\\t\\\\n\\\\r\\\\x0b\\\\x0c'.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Library for converting numbers into strings and other string operations.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"solady/utils/LibString.sol\":\"LibString\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"solady/utils/LibBytes.sol\":{\"keccak256\":\"0x320c3c933df51e8fd6f1fc96de721c8cc6f1be1d4c586c11f1c472a23b86eba5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cec71f42247eda74535c6e695a2ac194268a342594a26c090bafd04434698b20\",\"dweb:/ipfs/QmXA8Qaw6DdWujdrNHMHpDLNGG4QCgC859ozivrxkxp7Ea\"]},\"solady/utils/LibString.sol\":{\"keccak256\":\"0x8a6b219f6ccda90c08e2debae62618d78d6f0cef086eb6c9503793d7f12815dd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d1301acbf7371cb51ab01fe3bee8a9b732ee0bcf6cc0db20ed5a3fb9241d675e\",\"dweb:/ipfs/QmXuM4tSfPDeFRvP3nEQmuezp1yEm4HxyWtU41FjiCdxAG\"]}},\"version\":1}" + } + }, + "solady/utils/SignatureCheckerLib.sol": { + "SignatureCheckerLib": { + "abi": [], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea26469706673582212205e6a4e99a3a11eaf2dc5391896d7dc787d8d403a88150a42c9eec17c4322cc3064736f6c634300081c0033", + "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x3A SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MCOPY PUSH11 0x4E99A3A11EAF2DC5391896 0xD7 0xDC PUSH25 0x7D8D403A88150A42C9EEC17C4322CC3064736F6C634300081C STOP CALLER ", + "sourceMap": "1438:24323:12:-:0;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "600080fdfea26469706673582212205e6a4e99a3a11eaf2dc5391896d7dc787d8d403a88150a42c9eec17c4322cc3064736f6c634300081c0033", + "opcodes": "PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MCOPY PUSH11 0x4E99A3A11EAF2DC5391896 0xD7 0xDC PUSH25 0x7D8D403A88150A42C9EEC17C4322CC3064736F6C634300081C STOP CALLER ", + "sourceMap": "1438:24323:12:-:0;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Solady (https://github.com/vectorized/solady/blob/main/src/utils/SignatureCheckerLib.sol)Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/SignatureChecker.sol)\",\"details\":\"Note: - The signature checking functions use the ecrecover precompile (0x1). - The `bytes memory signature` variants use the identity precompile (0x4) to copy memory internally. - Unlike ECDSA signatures, contract signatures are revocable. - As of Solady version 0.0.134, all `bytes signature` variants accept both regular 65-byte `(r, s, v)` and EIP-2098 `(r, vs)` short form signatures. See: https://eips.ethereum.org/EIPS/eip-2098 This is for calldata efficiency on smart accounts prevalent on L2s. WARNING! Do NOT use signatures as unique identifiers: - Use a nonce in the digest to prevent replay attacks on the same contract. - Use EIP-712 for the digest to prevent replay attacks across different chains and contracts. EIP-712 also enables readable signing of typed data for better user safety. This implementation does NOT check if a signature is non-malleable.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Signature verification helper that supports both ECDSA signatures from EOAs and ERC1271 signatures from smart contract wallets like Argent and Gnosis safe.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"solady/utils/SignatureCheckerLib.sol\":\"SignatureCheckerLib\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"solady/utils/SignatureCheckerLib.sol\":{\"keccak256\":\"0x098c7eb88b3048f227b240e0e5bf1da4a8f7622b30f6d7c06416bfcab3225e77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://50c2766f652916c5d6433665fb1c3b2f04c3d9292a35c12e0f8d7c71dd6438cb\",\"dweb:/ipfs/QmWTMwN2RDZUUPg7KkH1qFBjTSh84Zw8bbYwRBCQUtLN2h\"]}},\"version\":1}" + } + }, + "solady/utils/UUPSUpgradeable.sol": { + "UUPSUpgradeable": { + "abi": [ + { + "inputs": [], + "name": "UnauthorizedCallContext", + "type": "error" + }, + { + "inputs": [], + "name": "UpgradeFailed", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "proxiableUUID()": "52d1902d", + "upgradeToAndCall(address,bytes)": "4f1ef286" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"UnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpgradeFailed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Solady (https://github.com/vectorized/solady/blob/main/src/utils/UUPSUpgradeable.sol)Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/proxy/utils/UUPSUpgradeable.sol)\",\"details\":\"Note: - This implementation is intended to be used with ERC1967 proxies. See: `LibClone.deployERC1967` and related functions. - This implementation is NOT compatible with legacy OpenZeppelin proxies which do not store the implementation at `_ERC1967_IMPLEMENTATION_SLOT`.\",\"errors\":{\"UnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized call context.\"}],\"UpgradeFailed()\":[{\"details\":\"The upgrade failed.\"}]},\"events\":{\"Upgraded(address)\":{\"details\":\"Emitted when the proxy's implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"proxiableUUID()\":{\"details\":\"Returns the storage slot used by the implementation, as specified in [ERC1822](https://eips.ethereum.org/EIPS/eip-1822). Note: The `notDelegated` modifier prevents accidental upgrades to an implementation that is a proxy contract.\"},\"upgradeToAndCall(address,bytes)\":{\"details\":\"Upgrades the proxy's implementation to `newImplementation`. Emits a {Upgraded} event. Note: Passing in empty `data` skips the delegatecall to `newImplementation`.\"}},\"stateVariables\":{\"_ERC1967_IMPLEMENTATION_SLOT\":{\"details\":\"The ERC-1967 storage slot for the implementation in the proxy. `uint256(keccak256(\\\"eip1967.proxy.implementation\\\")) - 1`.\"},\"_UPGRADED_EVENT_SIGNATURE\":{\"details\":\"`keccak256(bytes(\\\"Upgraded(address)\\\"))`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"UUPS proxy mixin.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"solady/utils/UUPSUpgradeable.sol\":\"UUPSUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"solady/utils/CallContextChecker.sol\":{\"keccak256\":\"0xc54c743a03f4909826712e9c6b683ca95e8b0c120c55284a9e3572621ebd734b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3d3138009aba3d2fd310636f3cc1d6029e970c57ddb74693bebf2a02d3e6f12d\",\"dweb:/ipfs/QmauMpcVDyQqVnAUF75DXy831LvtxyFS7GND7kge1Zgw55\"]},\"solady/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x63899eaf1a24713464b8084ada33a83c4b7db789fe83ae22f016e39646bee361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://617fa735ffa8ba31051745614a508abd69d2cfc1b1bc1eb3c772865db5f7ce65\",\"dweb:/ipfs/QmR1pQbHPyXcLbFm2vHrXBs1qRFrGC22gF7wWYamYy8aaE\"]}},\"version\":1}" + } + }, + "src/AuthenticatedStaticCaller.sol": { + "AuthenticatedStaticCaller": { + "abi": [ + { + "inputs": [], + "name": "InvalidSignature", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "expiredAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "currentTimestamp", + "type": "uint256" + } + ], + "name": "SignatureExpired", + "type": "error" + }, + { + "inputs": [], + "name": "domainSeparator", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "eip712Domain", + "outputs": [ + { + "internalType": "bytes1", + "name": "fields", + "type": "bytes1" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "version", + "type": "string" + }, + { + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "verifyingContract", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "uint256[]", + "name": "extensions", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getSignatureLifetime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "isValidSignature", + "outputs": [ + { + "internalType": "bytes4", + "name": "result", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + } + ], + "name": "replaySafeHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "signedAt", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "internalType": "struct StaticCall", + "name": "call", + "type": "tuple" + } + ], + "name": "signedStaticCall", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "domainSeparator()": "f698da25", + "eip712Domain()": "84b0196e", + "getSignatureLifetime()": "17452caa", + "isValidSignature(bytes32,bytes)": "1626ba7e", + "replaySafeHash(bytes32)": "ce1506be", + "signedStaticCall((address,bytes,uint256,bytes))": "737bebdd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expiredAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentTimestamp\",\"type\":\"uint256\"}],\"name\":\"SignatureExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"domainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSignatureLifetime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"result\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"replaySafeHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"signedAt\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct StaticCall\",\"name\":\"call\",\"type\":\"tuple\"}],\"name\":\"signedStaticCall\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"domainSeparator()\":{\"details\":\"Implements domainSeparator = hashStruct(eip712Domain). See https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator.\",\"returns\":{\"_0\":\"The 32 bytes domain separator result.\"}},\"eip712Domain()\":{\"details\":\"Follows ERC-5267 (see https://eips.ethereum.org/EIPS/eip-5267).\",\"returns\":{\"chainId\":\"The value of the `EIP712Domain.chainId` field.\",\"extensions\":\"The list of EIP numbers, that extends EIP-712 with new domain fields.\",\"fields\":\"The bitmap of used fields.\",\"name\":\"The value of the `EIP712Domain.name` field.\",\"salt\":\"The value of the `EIP712Domain.salt` field.\",\"verifyingContract\":\"The value of the `EIP712Domain.verifyingContract` field.\",\"version\":\"The value of the `EIP712Domain.version` field.\"}},\"isValidSignature(bytes32,bytes)\":{\"details\":\"This implementation follows ERC-1271. See https://eips.ethereum.org/EIPS/eip-1271.IMPORTANT: Signature verification is performed on the hash produced AFTER applying the anti cross-account-replay layer on the given `hash` (i.e., verification is run on the replay-safe hash version).\",\"params\":{\"hash\":\"The original hash.\",\"signature\":\"The signature of the replay-safe hash to validate.\"},\"returns\":{\"result\":\"`0x1626ba7e` if validation succeeded, else `0xffffffff`.\"}},\"replaySafeHash(bytes32)\":{\"details\":\"The returned EIP-712 compliant replay-safe hash is the result of: keccak256( \\\\x19\\\\x01 || this.domainSeparator || hashStruct(GianoSmartWalletMessage({ hash: `hash`})) )\",\"params\":{\"hash\":\"The original hash.\"},\"returns\":{\"_0\":\"The corresponding replay-safe hash.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"domainSeparator()\":{\"notice\":\"Returns the `domainSeparator` used to create EIP-712 compliant hashes.\"},\"eip712Domain()\":{\"notice\":\"Returns information about the `EIP712Domain` used to create EIP-712 compliant hashes.\"},\"isValidSignature(bytes32,bytes)\":{\"notice\":\"Validates the `signature` against the given `hash`.\"},\"replaySafeHash(bytes32)\":{\"notice\":\"Wrapper around `_eip712Hash()` to produce a replay-safe hash fron the given `hash`.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/AuthenticatedStaticCaller.sol\":\"AuthenticatedStaticCaller\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"src/AuthenticatedStaticCaller.sol\":{\"keccak256\":\"0x06bb6bea86630eda0e5920c4fe4a5d51e89d18072faf7c4b5d7ae8ca82b87b94\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2920f02558ea8bbe8ca21cbe1bcbbea7d3c4d7f0d3e812cde706f95c53b399aa\",\"dweb:/ipfs/QmaNpbMazUf1n6hpXSMq7RDJix7ipPiALKE93fMmBtbS4A\"]},\"src/ERC1271.sol\":{\"keccak256\":\"0x75c3fe08b6e1789dab7714196704f425d1afea21d725fcb6c418a70ef5bf6fad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd292bcf9b1891abb517323636493499dbdd00bebc1f759c07fb26e103a1b71d\",\"dweb:/ipfs/QmWMT3C54pakfUCTkcPzFQAvE8nRnPqDDpFaDhY5A9fpEp\"]}},\"version\":1}" + } + }, + "src/ERC1271.sol": { + "ERC1271": { + "abi": [ + { + "inputs": [], + "name": "domainSeparator", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "eip712Domain", + "outputs": [ + { + "internalType": "bytes1", + "name": "fields", + "type": "bytes1" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "version", + "type": "string" + }, + { + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "verifyingContract", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "uint256[]", + "name": "extensions", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "isValidSignature", + "outputs": [ + { + "internalType": "bytes4", + "name": "result", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + } + ], + "name": "replaySafeHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "domainSeparator()": "f698da25", + "eip712Domain()": "84b0196e", + "isValidSignature(bytes32,bytes)": "1626ba7e", + "replaySafeHash(bytes32)": "ce1506be" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"domainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"result\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"replaySafeHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Applied Blockchain (https://github.com/appliedblockchain/giano)Coinbase (https://github.com/coinbase/smart-wallet)Solady (https://github.com/vectorized/solady/blob/main/src/accounts/ERC1271.sol)\",\"details\":\"To prevent the same signature from being validated on different accounts owned by the samer signer, we introduce an anti cross-account-replay layer: the original hash is input into a new EIP-712 compliant hash. The domain separator of this outer hash contains the chain id and address of this contract, so that it cannot be used on two accounts (see `replaySafeHash()` for the implementation details).\",\"kind\":\"dev\",\"methods\":{\"domainSeparator()\":{\"details\":\"Implements domainSeparator = hashStruct(eip712Domain). See https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator.\",\"returns\":{\"_0\":\"The 32 bytes domain separator result.\"}},\"eip712Domain()\":{\"details\":\"Follows ERC-5267 (see https://eips.ethereum.org/EIPS/eip-5267).\",\"returns\":{\"chainId\":\"The value of the `EIP712Domain.chainId` field.\",\"extensions\":\"The list of EIP numbers, that extends EIP-712 with new domain fields.\",\"fields\":\"The bitmap of used fields.\",\"name\":\"The value of the `EIP712Domain.name` field.\",\"salt\":\"The value of the `EIP712Domain.salt` field.\",\"verifyingContract\":\"The value of the `EIP712Domain.verifyingContract` field.\",\"version\":\"The value of the `EIP712Domain.version` field.\"}},\"isValidSignature(bytes32,bytes)\":{\"details\":\"This implementation follows ERC-1271. See https://eips.ethereum.org/EIPS/eip-1271.IMPORTANT: Signature verification is performed on the hash produced AFTER applying the anti cross-account-replay layer on the given `hash` (i.e., verification is run on the replay-safe hash version).\",\"params\":{\"hash\":\"The original hash.\",\"signature\":\"The signature of the replay-safe hash to validate.\"},\"returns\":{\"result\":\"`0x1626ba7e` if validation succeeded, else `0xffffffff`.\"}},\"replaySafeHash(bytes32)\":{\"details\":\"The returned EIP-712 compliant replay-safe hash is the result of: keccak256( \\\\x19\\\\x01 || this.domainSeparator || hashStruct(GianoSmartWalletMessage({ hash: `hash`})) )\",\"params\":{\"hash\":\"The original hash.\"},\"returns\":{\"_0\":\"The corresponding replay-safe hash.\"}}},\"stateVariables\":{\"_MESSAGE_TYPEHASH\":{\"details\":\"Precomputed `typeHash` used to produce EIP-712 compliant hash when applying the anti cross-account-replay layer. The original hash must either be: - An EIP-191 hash: keccak256(\\\"\\\\x19Ethereum Signed Message:\\\\n\\\" || len(someMessage) || someMessage) - An EIP-712 hash: keccak256(\\\"\\\\x19\\\\x01\\\" || someDomainSeparator || hashStruct(someStruct))\"}},\"title\":\"ERC-1271\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"domainSeparator()\":{\"notice\":\"Returns the `domainSeparator` used to create EIP-712 compliant hashes.\"},\"eip712Domain()\":{\"notice\":\"Returns information about the `EIP712Domain` used to create EIP-712 compliant hashes.\"},\"isValidSignature(bytes32,bytes)\":{\"notice\":\"Validates the `signature` against the given `hash`.\"},\"replaySafeHash(bytes32)\":{\"notice\":\"Wrapper around `_eip712Hash()` to produce a replay-safe hash fron the given `hash`.\"}},\"notice\":\"Abstract ERC-1271 implementation (based on Solady's) with guards to handle the same signer being used on multiple accounts.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/ERC1271.sol\":\"ERC1271\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"src/ERC1271.sol\":{\"keccak256\":\"0x75c3fe08b6e1789dab7714196704f425d1afea21d725fcb6c418a70ef5bf6fad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd292bcf9b1891abb517323636493499dbdd00bebc1f759c07fb26e103a1b71d\",\"dweb:/ipfs/QmWMT3C54pakfUCTkcPzFQAvE8nRnPqDDpFaDhY5A9fpEp\"]}},\"version\":1}" + } + }, + "src/GianoSmartWallet.sol": { + "GianoSmartWallet": { + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "owner", + "type": "bytes" + } + ], + "name": "AlreadyOwner", + "type": "error" + }, + { + "inputs": [], + "name": "FnSelectorNotRecognized", + "type": "error" + }, + { + "inputs": [], + "name": "Initialized", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "owner", + "type": "bytes" + } + ], + "name": "InvalidEthereumAddressOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "InvalidImplementation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "key", + "type": "uint256" + } + ], + "name": "InvalidNonceKey", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "owner", + "type": "bytes" + } + ], + "name": "InvalidOwnerBytesLength", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidSignature", + "type": "error" + }, + { + "inputs": [], + "name": "LastOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "NoOwnerAtIndex", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "ownersRemaining", + "type": "uint256" + } + ], + "name": "NotLastOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "selector", + "type": "bytes4" + } + ], + "name": "SelectorNotAllowed", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "expiredAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "currentTimestamp", + "type": "uint256" + } + ], + "name": "SignatureExpired", + "type": "error" + }, + { + "inputs": [], + "name": "Unauthorized", + "type": "error" + }, + { + "inputs": [], + "name": "UnauthorizedCallContext", + "type": "error" + }, + { + "inputs": [], + "name": "UpgradeFailed", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "expectedOwner", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "actualOwner", + "type": "bytes" + } + ], + "name": "WrongOwnerAtIndex", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "owner", + "type": "bytes" + } + ], + "name": "AddOwner", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "owner", + "type": "bytes" + } + ], + "name": "RemoveOwner", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "inputs": [], + "name": "REPLAYABLE_NONCE_KEY", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "addOwnerAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "x", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "y", + "type": "bytes32" + } + ], + "name": "addOwnerPublicKey", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "functionSelector", + "type": "bytes4" + } + ], + "name": "canSkipChainIdValidation", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "domainSeparator", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "eip712Domain", + "outputs": [ + { + "internalType": "bytes1", + "name": "fields", + "type": "bytes1" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "version", + "type": "string" + }, + { + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "verifyingContract", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "uint256[]", + "name": "extensions", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "entryPoint", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "execute", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct GianoSmartWallet.Call[]", + "name": "calls", + "type": "tuple[]" + } + ], + "name": "executeBatch", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes[]", + "name": "calls", + "type": "bytes[]" + } + ], + "name": "executeWithoutChainIdValidation", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "getSignatureLifetime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "callData", + "type": "bytes" + }, + { + "internalType": "bytes32", + "name": "accountGasLimits", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "preVerificationGas", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "gasFees", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "paymasterAndData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "internalType": "struct PackedUserOperation", + "name": "userOp", + "type": "tuple" + } + ], + "name": "getUserOpHashWithoutChainId", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "implementation", + "outputs": [ + { + "internalType": "address", + "name": "$", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes[]", + "name": "owners", + "type": "bytes[]" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isOwnerAddress", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "account", + "type": "bytes" + } + ], + "name": "isOwnerBytes", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "x", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "y", + "type": "bytes32" + } + ], + "name": "isOwnerPublicKey", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "isValidSignature", + "outputs": [ + { + "internalType": "bytes4", + "name": "result", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "nextOwnerIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "ownerAtIndex", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "ownerCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "owner", + "type": "bytes" + } + ], + "name": "removeLastOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "owner", + "type": "bytes" + } + ], + "name": "removeOwnerAtIndex", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "removedOwnersCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + } + ], + "name": "replaySafeHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "signedAt", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "internalType": "struct StaticCall", + "name": "call", + "type": "tuple" + } + ], + "name": "signedStaticCall", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "callData", + "type": "bytes" + }, + { + "internalType": "bytes32", + "name": "accountGasLimits", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "preVerificationGas", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "gasFees", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "paymasterAndData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "internalType": "struct PackedUserOperation", + "name": "userOp", + "type": "tuple" + }, + { + "internalType": "bytes32", + "name": "userOpHash", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "missingAccountFunds", + "type": "uint256" + } + ], + "name": "validateUserOp", + "outputs": [ + { + "internalType": "uint256", + "name": "validationData", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "evm": { + "bytecode": { + "functionDebugData": { + "abi_encode_bytes": { + "entryPoint": 1120, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "copy_memory_to_memory_with_cleanup": { + "entryPoint": 1085, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "finalize_allocation": { + "entryPoint": 995, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "memory_array_index_access_bytes_dyn": { + "entryPoint": 1065, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "memory_array_index_access_bytes_dyn_3226": { + "entryPoint": 1030, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "packed_hashed_bytes_uint256_to_bytes_uint": { + "entryPoint": 1164, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + } + }, + "generatedSources": [], + "linkReferences": {}, + "object": "60a0604052346103de57306080526040805161001b82826103e3565b60018152601f19820160005b8181106103cd5750508151600060208201526020815261004783826103e3565b61005082610406565b5261005a81610406565b507f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f5005460005b825181101561038c5760206100958285610429565b5151141580610377575b6103505760206100af8285610429565b51511480610312575b6102eb576100c68184610429565b51918060001981146102d5576001019260ff6100e18261048c565b54166102b5576100f08161048c565b805460ff1916600117905560008281527f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f50260205286902081516001600160401b03811161029f578154600181811c91168015610295575b602082101461027f57601f8111610237575b506020601f82116001146101bc579260008051602061346683398151915292826101a89360019897966000916101b1575b50600019600383901b1c191690881b1790555b885191829182610460565b0390a201610080565b90508301513861018a565b601f1982169083600052806000209160005b81811061021f57508360019897969360008051602061346683398151915296936101a8968b9410610206575b5050811b01905561019d565b85015160001960f88460031b161c1916905538806101fa565b9192602060018192868a0151815501940192016101ce565b826000526020600020601f830160051c81019160208410610275575b601f0160051c01905b8181106102695750610159565b6000815560010161025c565b9091508190610253565b634e487b7160e01b600052602260045260246000fd5b90607f1690610147565b634e487b7160e01b600052604160045260246000fd5b855163468b12ad60e11b81529081906102d19060048301610460565b0390fd5b634e487b7160e01b600052601160045260246000fd5b836102f96102d19285610429565b51905163bff1ac6560e01b815291829160048301610460565b5061031d8184610429565b5160208151910151906020811061033e575b506001600160a01b03106100b8565b6000199060200360031b1b163861032f565b8361035e6102d19285610429565b5190516327755b9160e11b815291829160048301610460565b50836103838285610429565b5151141561009f565b83827f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f5005551612f9490816104d2823960805181818161076c015261085a0152f35b806060602080938601015201610027565b600080fd5b601f909101601f19168101906001600160401b0382119082101761029f57604052565b8051156104135760200190565b634e487b7160e01b600052603260045260246000fd5b80518210156104135760209160051b010190565b60005b8381106104505750506000910152565b8181015183820152602001610440565b60409160208252610480815180928160208601526020868601910161043d565b601f01601f1916010190565b60206104a591816040519382858094519384920161043d565b81017f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f5038152030190209056fe60806040526004361015610015575b3661165f57005b60003560e01c8063066a1eb7146101e55780630db02622146101e05780630f0f3f24146101db5780631626ba7e146101d657806317452caa146101d157806319822f7c146101cc5780631ca5393f146101c757806329565e3b146101c25780632c2abd1e146101bd57806334fcd5be146101b857806336d9cf9b146101b35780634f1ef286146101ae57806352d1902d146101a95780635c60da1b146101a45780636f2de70e1461019f578063737bebdd1461019a57806384b0196e1461019557806388ce4c7c1461019057806389625b571461018b5780638ea69029146101865780639f9bcb3414610181578063a05bd44e1461017c578063a2e1a8d814610177578063b0d691fe14610172578063b61d27f61461016d578063b819736714610168578063ce1506be14610163578063d948fd2e1461015e5763f698da250361000e57610e93565b610e68565b610e4a565b610e03565b610d97565b610d6c565b610d45565b610d0b565b610cd1565b610c9e565b610c5e565b610c0e565b610b6d565b610a67565b6108cc565b610896565b610846565b610731565b610706565b610673565b6105cb565b61052d565b6104f6565b6103a1565b610375565b610323565b61027d565b610249565b3461024457604036600319011261024457602060ff6102386004356102336024359161022560405193849288840160209093929193604081019481520152565b03601f19810183528261044f565b610ec5565b54166040519015158152f35b600080fd5b34610244576000366003190112610244576020610264610f4d565b604051908152f35b6001600160a01b0381160361024457565b34610244576020366003190112610244576102f460043561029d8161026c565b6102a5611697565b6040519060018060a01b03166020820152602081526102c560408261044f565b600080516020612edf83398151915254906102df82610f79565b600080516020612edf83398151915255611720565b005b9181601f84011215610244578235916001600160401b038311610244576020838186019501011161024457565b34610244576040366003190112610244576004356024356001600160401b0381116102445760209161035c6103629236906004016102f6565b91610f88565b6040516001600160e01b03199091168152f35b346102445760003660031901126102445760206040516107088152f35b90816101209103126102445790565b34610244576060366003190112610244576004356001600160401b038111610244576103d1903690600401610392565b6044356024356f71727de22e5e9d8baf0edac6f37da031193301610429576103fd829161041494611137565b91610418575b506040519081529081906020820190565b0390f35b60009081803892335af15038610403565b6282b42960e81b60005260046000fd5b634e487b7160e01b600052604160045260246000fd5b90601f801991011681019081106001600160401b0382111761047057604052565b610439565b6040519061048460c08361044f565b565b6001600160401b03811161047057601f01601f191660200190565b9291926104ad82610486565b916104bb604051938461044f565b829481845281830111610244578281602093846000960137010152565b9080601f83011215610244578160206104f3933591016104a1565b90565b34610244576020366003190112610244576004356001600160401b0381116102445760ff61023861023360209336906004016104d8565b34610244576040366003190112610244576102f46024356102c5600435610552611697565b6040805160208101929092528101929092528160608101610225565b906020600319830112610244576004356001600160401b0381116102445760040160009280601f830112156105c7578135936001600160401b0385116105c457506020808301928560051b010111610244579190565b80fd5b8380fd5b6105d43661056e565b906f71727de22e5e9d8baf0edac6f37da03233036104295760005b828110156102f45760006106088260051b840184610fb6565b6106128183610fe8565b61061b81611460565b156106575750829161062e9136916104a1565b60208151910182305af1610640611329565b901561064f57506001016105ef565b602081519101fd5b631d8370a360e11b84526001600160e01b031916600452602483fd5b61067c3661056e565b906f71727de22e5e9d8baf0edac6f37da03233036106f9575b60005b8281106106a157005b806106f36106b2600193868661127c565b356106bc8161026c565b60206106c984888861127c565b01356106ed6106e66106dc868a8a61127c565b6040810190610fb6565b36916104a1565b91611b43565b01610698565b610701611697565b610695565b34610244576000366003190112610244576020600080516020612f3f83398151915254604051908152f35b6040366003190112610244576004356107498161026c565b6024356001600160401b038111610244576107689036906004016102f6565b90917f0000000000000000000000000000000000000000000000000000000000000000301461083857610799611697565b60018060a01b03163d6000526352d1902d600152600080516020612f1f833981519152602060016004601d855afa510361082a57807fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a28181600080516020612f1f8339815191525561080b57005b816000926040519485378338925af41561082157005b3d6000823e3d90fd5b6355299b496001526004601dfd5b639f03a0266000526004601cfd5b3461024457600036600319011261024457307f000000000000000000000000000000000000000000000000000000000000000003610838576020604051600080516020612f1f8339815191528152f35b3461024457600036600319011261024457600080516020612f1f833981519152546040516001600160a01b039091168152602090f35b6108d53661056e565b600080516020612edf8339815191525491826109fd576108f691369161103b565b9060005b82518110156109e757602061090f82856110fc565b51511415806109d1575b6109aa57602061092982856110fc565b51511480610988575b61095d5780610957610946600193866110fc565b519361095181610f79565b94611720565b016108fa565b61096a61098491846110fc565b5160405163bff1ac6560e01b815291829160048301610a56565b0390fd5b506001600160a01b036109a461099e83866110fc565b5161193a565b11610932565b6109b761098491846110fc565b516040516327755b9160e11b815291829160048301610a56565b5060406109de82856110fc565b51511415610919565b6102f482600080516020612edf83398151915255565b6302ed543d60e51b60005260046000fd5b60005b838110610a215750506000910152565b8181015183820152602001610a11565b90602091610a4a81518092818552858086019101610a0e565b601f01601f1916010190565b9060206104f3928181520190610a31565b34610244576020366003190112610244576004356001600160401b038111610244578060040160806003198336030112610244576044820135610aa9816112a8565b4211610b4657610ae0610acd610ac1610ae4936112e0565b60208151910120611dd4565b610ada6064860185610fb6565b91611a51565b1590565b610b3557600091610b03826024610afb869561129e565b930190610fb6565b90610b1360405180938193611306565b03915afa610b1f611329565b901561064f576104149060405191829182610a56565b638baa579f60e01b60005260046000fd5b610b52610b69916112a8565b630f88f04960e41b60005260045242602452604490565b6000fd5b3461024457600036600319011261024457610bad610bbb610b8c611b63565b604092919251938493600f60f81b855260e0602086015260e0850190610a31565b908382036040850152610a31565b466060830152306080830152600060a083015281810360c0830152602060605191828152019060809060005b818110610bf5575050500390f35b8251845285945060209384019390920191600101610be7565b346102445760003660031901126102445760206040516121058152f35b9060406003198301126102445760043591602435906001600160401b03821161024457610c5a916004016102f6565b9091565b3461024457610c6c36610c2b565b90610c75611697565b6001610c7f610f4d565b14610c8d576102f492611cbd565b63948bf89760e01b60005260046000fd5b3461024457602036600319011261024457610414610cbd600435611393565b604051918291602083526020830190610a31565b34610244576020366003190112610244576004356001600160e01b03198116810361024457610d01602091611460565b6040519015158152f35b34610244576020366003190112610244576004356001600160401b03811161024457610264610d406020923690600401610392565b6114e3565b34610244576020366003190112610244576020610d01600435610d678161026c565b6115d0565b346102445760003660031901126102445760206040516f71727de22e5e9d8baf0edac6f37da0328152f35b606036600319011261024457600435610daf8161026c565b604435906024356001600160401b038311610244576106ed610dd86102f49436906004016102f6565b6f71727de22e5e9d8baf0edac6f37da0323303610df65736916104a1565b610dfe611697565b6106e6565b3461024457610e1136610c2b565b90610e1a611697565b610e22610f4d565b9260018411610e35576102f49350611cbd565b83631047e35560e31b60005260045260246000fd5b34610244576020366003190112610244576020610264600435611dd4565b34610244576000366003190112610244576020600080516020612edf83398151915254604051908152f35b346102445760003660031901126102445760206102646115f6565b90610ec160209282815194859201610a0e565b0190565b6020610ede918160405193828580945193849201610a0e565b81017f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f50381520301902090565b634e487b7160e01b600052601160045260246000fd5b600080516020612eff8339815191520390600080516020612eff8339815191528211610f4857565b610f0a565b600080516020612edf83398151915254600080516020612f3f833981519152548103908111610f485790565b6000198114610f485760010190565b90610f96610f9b9392611dd4565b611a51565b610fab576001600160e01b031990565b630b135d3f60e11b90565b903590601e198136030182121561024457018035906001600160401b0382116102445760200191813603831361024457565b356001600160e01b0319811692919060048210611003575050565b6001600160e01b031960049290920360031b82901b16169150565b909291928360041161024457831161024457600401916003190190565b929190926001600160401b038411610470578360051b9060206040516110638285018261044f565b8096815201918101918383116102445781905b838210611084575050505050565b81356001600160401b038111610244576020916110a487849387016104d8565b815201910190611076565b602081830312610244578035906001600160401b03821161024457019080601f83011215610244578160206104f39335910161103b565b634e487b7160e01b600052603260045260246000fd5b80518210156111105760209160051b010190565b6110e6565b80516020909101516001600160e01b0319811692919060048210611003575050565b91602083013560401c9160608401906111508286610fb6565b6316155e8f60e11b916001600160e01b03199161116c91610fe8565b160361124f575061117c846114e3565b92612105810361123b575061119e6111976111a69286610fb6565b809161101e565b8101906110af565b9160005b8351811015611215576111bd81856110fc565b5163278f794360e11b6111df6111d283611115565b6001600160e01b03191690565b146111ee575b506001016111aa565b60240151803b6111e557630c76093760e01b6000526001600160a01b031660045260246000fd5b50909261122d9250610ada905b610100810190610fb6565b61123657600190565b600090565b632ef3781360e01b60005260045260246000fd5b929050612105819492941461123b575090610ada61122d92611222565b61127760ff91610ec5565b541690565b91908110156111105760051b81013590605e1981360301821215610244570190565b356104f38161026c565b906107088201809211610f4857565b9060158201809211610f4857565b9060028201809211610f4857565b91908201809211610f4857565b906040519163737bebdd60e01b602084015260248301526024825261048460448361044f565b908092918237016000815290565b6040519061132360208361044f565b60008252565b3d15611354573d9061133a82610486565b91611348604051938461044f565b82523d6000602084013e565b606090565b90600182811c92168015611389575b602083101461137357565b634e487b7160e01b600052602260045260246000fd5b91607f1691611368565b6000527f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f5026020526040600020604051908160008254926113d284611359565b808452936001811690811561143e57506001146113f7575b506104f39250038261044f565b90506000929192526020600020906000915b8183106114225750509060206104f392820101386113ea565b6020919350806001915483858801015201910190918392611409565b9050602092506104f394915060ff191682840152151560051b820101386113ea565b63ffffffff60e01b166329565e3b60e01b81149081156114d2575b81156114c1575b81156114b0575b811561149f575b5061149a57600090565b600190565b63278f794360e11b14905038611490565b63b819736760e01b81149150611489565b6389625b5760e01b81149150611482565b6303c3cfc960e21b8114915061147b565b60208101356115976114f86040840184610fb6565b908160405191823720916102256115126060860186610fb6565b90816040519182372060c086013560a0870135608088013561154061153a60e08b018b610fb6565b90612335565b604080519a356001600160a01b031660208c01908152908b019790975260608a0198909852608089019390935260a088019290925260c087019190915260e086015261010085019390935292918290610120820190565b51902060408051602081019283526f71727de22e5e9d8baf0edac6f37da032918101919091526115ca8160608101610225565b51902090565b61127760ff916040519060018060a01b031660208201526020815261023360408261044f565b6115fe611b63565b906020815191012090602081519101206040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a081526115ca60c08261044f565b60003560e01c63bc197c81811463f23a6e6182141763150b7a0282141761168e57633c10b94e6000526004601cfd5b6020526020603cf35b6116a0336115d0565b80156116bb575b610484576282b42960e81b60005260046000fd5b503033146116a7565b8181106116cf575050565b600081556001016116c4565b9190601f81116116ea57505050565b610484926000526020600020906020601f840160051c83019310611716575b601f0160051c01906116c4565b9091508190611709565b6117298161126c565b6118975761173681610ec5565b600160ff19825416179055816000527f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f502602052604060002081516001600160401b038111610470576117928161178c8454611359565b846116db565b6020601f821160011461180657916117e7827f38109edc26e166b5579352ce56a50813177eb25208fd90d61f2f37838622022095936117f6956000916117fb575b508160011b916000199060031b1c19161790565b90555b60405191829182610a56565b0390a2565b9050840151386117d3565b601f1982169061181b84600052602060002090565b9160005b81811061187f5750926117f69492600192827f38109edc26e166b5579352ce56a50813177eb25208fd90d61f2f378386220220989610611866575b5050811b0190556117ea565b85015160001960f88460031b161c19169055388061185a565b9192602060018192868a01518155019401920161181f565b60405163468b12ad60e11b81529081906109849060048301610a56565b602081830312610244578035906001600160401b03821161024457016040818303126102445760405191604083018381106001600160401b038211176104705760405281356001600160401b03811161024457816119139184016104d8565b835260208201356001600160401b0381116102445761193292016104d8565b602082015290565b60208151910151906020811061194e575090565b6000199060200360031b1b1690565b9190826040910312610244576020825192015190565b81601f82011215610244576020815191019061198e81610486565b9261199c604051948561044f565b81845281830111610244576104f3916020840190610a0e565b602081830312610244578051906001600160401b03821161024457019060c082820312610244576119e4610475565b9180516001600160401b0381116102445782611a01918301611973565b835260208101516001600160401b0381116102445760a092611a24918301611973565b6020840152604081015160408401526060810151606084015260808101516080840152015160a082015290565b929190611a60918101906118b4565b90815191611a70610ae08461126c565b611b3a576020835114611af15782519360408514611aa3576040516327755b9160e11b8152806109848660048301610a56565b610225611aec611ad7611ac38760208080999b6104f39b0101910161195d565b9690950151602080825183010191016119b5565b92604051928391602083019190602083019252565b611fd6565b91929091906001600160a01b03611b078561193a565b11611b1f576020806104f39495015192015191611e49565b60405163bff1ac6560e01b8152806109848660048301610a56565b50915050600090565b916000928392602083519301915af1611b5a611329565b901561064f5750565b6040908151611b72838261044f565b601281527111da585b9bc814db585c9d0815d85b1b195d60721b602082015291611b9e8151918261044f565b60018152603160f81b602082015290565b908060209392818452848401376000828201840152601f01601f1916010190565b92916104f39492611bee928552606060208601526060850191611baf565b916040818403910152610a31565b60209082604051938492833781017f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f50381520301902090565b600281901b91906001600160fe1b03811603610f4857565b611c568154611359565b9081611c60575050565b81601f60009311600114611c72575055565b81835260208320611c8e91601f0160051c8101906001016116c4565b808252602082209081548360011b9084198560031b1c191617905555565b9160206104f3938181520191611baf565b9190611cc883611393565b805115611dbe5780516020820120611ce13685856104a1565b6020815191012003611d9f57509081611d28611d1e837fcf95bbfe6f870f8cc40482dc3dccdafd268f0e9ce0a4f24ea1bea9be64e505ff95611bfc565b805460ff19169055565b611d63611d5e856000527f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f502602052604060002090565b611c4c565b611d90611d7e600080516020612f3f83398151915254610f79565b600080516020612f3f83398151915255565b6117f660405192839283611cac565b60405163781f2e3960e01b815293849361098493909160048601611bd0565b63340c473d60e11b600052600484905260246000fd5b611ddc6115f6565b9060405160208101917f37f248f492286ab572e2a1ee0bd5315f2aae54a08b5871b294d657f3a1f1d0078352604082015260408152611e1c60608261044f565b51902060405190602082019261190160f01b845260228301526042820152604281526115ca60628261044f565b9091600091906001600160a01b03821615611f335760405192600484019460248501956044860192853b15611eb357509186939160209593630b135d3f60e11b8852526040845281518501809260045afa9360443d01915afa9151630b135d3f60e11b1491161690565b979650509050815180604014611f0e57604114611ed05750505050565b602092939550606082015160001a835260408201516060525b60005201516040526020600160806000825afa511860601b3d11916000606052604052565b506020929395506040820151601b8160ff1c01845260018060ff1b0316606052611ee9565b50505050600090565b906104846001602d60405180956c1131b430b63632b733b2911d1160991b6020830152611f728151809260208686019101610a0e565b8101601160f91b838201520301601e1981018552018361044f565b8051602010156111105760400190565b6040513d6000823e3d90fd5b6020929190611fbf849282815194859201610a0e565b019081520190565b90816020910312610244575190565b92919060009360a082019485517f7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8106121b35760208301917fff1a2a9176d650e4a99dedb58f1793003935130579fe17b5a3f698ac5b00e63461204884516060870151612042816112b7565b91612340565b60208151910120036121bc57612060612065916121c6565b611f3c565b61207a835160408601516120428451826112d3565b602081519101209060208151910120036121b357600160f81b600160f81b6120b36120a58651611f8d565b516001600160f81b03191690565b16036121b3576120d0602092600092505160405191828092610eae565b039060025afa156121ae576020600061210681516120fa8551610225604051938492888401611fa9565b60405191828092610eae565b039060025afa156121ae57608060005191019360008086518561215985516102258a60405194859360208501978c899192608093969594919660a084019784526020840152604083015260608201520152565b51906101005afa94612169611329565b805196806121a5575b61218557506104f395505190519161222d565b6001966121a19650810160209081019550019250611fc7915050565b1490565b50861515612172565b611f9d565b94505050505090565b5094505050505090565b6040516104f3916121d860608361044f565b604082527f4142434445464748494a4b4c4d4e4f505152535455565758595a61626364656660208301527f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f60408301526123ec565b93919092938315801561231d575b8015612315575b80156122fd575b6122f3576122578386612494565b156122f35760405191602083526020808401526020604084015260608301527fffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254f6080830152600080516020612eff83398151915260a083015260208260c0816005600019fa1561024457600080516020612eff833981519152946122ed93866122e794518181890994099161256f565b91610f20565b90081590565b5050505050600090565b50600080516020612eff833981519152821015612249565b508115612242565b50600080516020612eff83398151915284101561223b565b816040519182372090565b8051606094939290838111156123b2575b818111156123aa575b5082811061236757505050565b6040519450918290039101601f8201601f19165b8181015185820152601f1901908115612394579061237b565b5050604081840160006020820152016040528252565b90503861235a565b925082612351565b906123c482610486565b6123d1604051918261044f565b82815280926123e2601f1991610486565b0190602036910137565b9081511561248a579061241961241461240d6124088451611c34565b6112c5565b6003900490565b6123ba565b91602083019082805101906020820192835194600085525b83811061244057505050505290565b600360049101916001603f845182828260121c16880101518453828282600c1c16880101518385015382828260061c16880101516002850153168501015160038201530190612431565b50506104f3611314565b600160601b63ffffffff60c01b03198110801590612557575b8015612546575b61253f57600160601b63ffffffff60c01b0319907f5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b908290817fffffffff00000001000000000000000000000000fffffffffffffffffffffffc820990600160601b63ffffffff60c01b0319908181800909080890600160601b63ffffffff60c01b03199080091490565b5050600090565b50801580156124b4575081156124b4565b50600160601b63ffffffff60c01b03198210156124ad565b9092600092908360ff81841580612b66575b612b5b5761258f8887612b6e565b929091821580612b53575b612b18575b5085811c60028660fe1c16015b15612aff57600186821c16600286831c60011b160160018114612ab4575b60028114612aa7575b600314612a9a575b600198600019919091019694959489949392915b886000191161266d5750505050505050505060405191606083015260208252602080830152602060408301526002600160601b0363ffffffff60c01b03196080830152600163ffffffff60601b0360601b1960a083015260208260c0816005600019fa15610244579051600160601b63ffffffff60c01b0319910990565b909192939495969798600163ffffffff60601b0360601b198660020990600160601b63ffffffff60c01b0319828009600160601b63ffffffff60c01b031981830992600160601b63ffffffff60c01b03199082900991600160601b63ffffffff60c01b03199081908f8281830891600160601b63ffffffff60c01b031991820390080960030998600160601b63ffffffff60c01b03199083099c600160601b63ffffffff60c01b0319910991600160601b63ffffffff60c01b031980826002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b03198b80090898600160601b63ffffffff60c01b031991829081038b08900996600160601b63ffffffff60c01b03199088908290840908968b60028c60018d841c16921c60011b16018015612a7d5760018114612a32575b60028114612a27575b600314612a1e575b8215612a0b57600160601b63ffffffff60c01b031990889082908f90090890600160601b63ffffffff60c01b031990898203908290859009089781156128d1575b600160601b63ffffffff60c01b031989800998600160601b63ffffffff60c01b0319908a0992600160601b63ffffffff60c01b0319908a90099c600160601b63ffffffff60c01b03199084900998600160601b63ffffffff60c01b03199109600160601b63ffffffff60c01b031980826002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b031985810381868009080897600160601b63ffffffff60c01b03199384910991600160601b63ffffffff60c01b03199182908a82039008090894985b6000190197969594939291906125ef565b886127f4579a91975090959050600160601b63ffffffff60c01b0319816002600160601b0363ffffffff60c01b0319099a600160601b63ffffffff60c01b03198c8009600160601b63ffffffff60c01b0319818d099c600160601b63ffffffff60c01b0319908290099b600160601b63ffffffff60c01b031990818b8103820890600160601b63ffffffff60c01b0319908c900809600160601b63ffffffff60c01b03199060030991600160601b63ffffffff60c01b0319908d0998600160601b63ffffffff60c01b031991099b600160601b63ffffffff60c01b031980826002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b0319848009089b600160601b63ffffffff60c01b03199384910991600160601b63ffffffff60c01b03199182908e82039008900908946128c0565b60019c50909a8c985090965090506128c0565b505083856127b3565b8592508491506127ab565b7f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c29692507f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f591506127a2565b50505099959894600163ffffffff60601b0360601b1903946128c0565b92508096509581926125db565b96975087968994506125d3565b7f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c29698507f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f594506125ca565b60001901600186821c16600286831c60011b16016125ac565b9495600080516020612eff8339815191529196820390089484861580612b4b575b1561259f579850505050505050505090565b506001612b39565b50831561259a565b965050505050505090565b508315612581565b91907f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c2967f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5918015612d225784610c5a9495831480612d19575b15612d045750600160601b63ffffffff60c01b0319905082600209600160601b63ffffffff60c01b031981800992600160601b63ffffffff60c01b031984840991600160601b63ffffffff60c01b03199085900992600160601b63ffffffff60c01b0319908190816001820890600160601b63ffffffff60c01b0319907fffffffff00000001000000000000000000000000fffffffffffffffffffffffe900809600309600160601b63ffffffff60c01b031980846002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b03198380090892600160601b63ffffffff60c01b03196001860995600160601b63ffffffff60c01b0319906001900994600160601b63ffffffff60c01b031993849109600160601b63ffffffff60c01b03199081039290918290868203900890090890612e44565b909192612d1093612d28565b92909190612e44565b50818414612bc7565b50925090565b9193908015612e3b57600160601b63ffffffff60c01b03199081039384908290600190090893600160601b63ffffffff60c01b031990838203908290600190090892600160601b63ffffffff60c01b031984800993600160601b63ffffffff60c01b031990850992600160601b63ffffffff60c01b03199085900994600160601b63ffffffff60c01b031980876002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b031986810381858009080895600160601b63ffffffff60c01b031992839086900991600160601b63ffffffff60c01b03199182908982039008090892600160601b63ffffffff60c01b03199060010991600160601b63ffffffff60c01b03199060010990565b50600191508190565b91909260405190602082526020808301526020604083015260608201526002600160601b0363ffffffff60c01b03196080820152600163ffffffff60601b0360601b1960a082015260208160c0816005600019fa15610244575192600160601b63ffffffff60c01b03199084900992600160601b63ffffffff60c01b03199109600160601b63ffffffff60c01b031991908290800990099156fe0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f500ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f501a2646970667358221220890c9d20b5fc4df99bded2544912158a1d933f168e2e843d0c1a15a2ff32ce8c64736f6c634300081c003338109edc26e166b5579352ce56a50813177eb25208fd90d61f2f378386220220", + "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE PUSH2 0x3DE JUMPI ADDRESS PUSH1 0x80 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH2 0x1B DUP3 DUP3 PUSH2 0x3E3 JUMP JUMPDEST PUSH1 0x1 DUP2 MSTORE PUSH1 0x1F NOT DUP3 ADD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0x3CD JUMPI POP POP DUP2 MLOAD PUSH1 0x0 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x20 DUP2 MSTORE PUSH2 0x47 DUP4 DUP3 PUSH2 0x3E3 JUMP JUMPDEST PUSH2 0x50 DUP3 PUSH2 0x406 JUMP JUMPDEST MSTORE PUSH2 0x5A DUP2 PUSH2 0x406 JUMP JUMPDEST POP PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F500 SLOAD PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x38C JUMPI PUSH1 0x20 PUSH2 0x95 DUP3 DUP6 PUSH2 0x429 JUMP JUMPDEST MLOAD MLOAD EQ ISZERO DUP1 PUSH2 0x377 JUMPI JUMPDEST PUSH2 0x350 JUMPI PUSH1 0x20 PUSH2 0xAF DUP3 DUP6 PUSH2 0x429 JUMP JUMPDEST MLOAD MLOAD EQ DUP1 PUSH2 0x312 JUMPI JUMPDEST PUSH2 0x2EB JUMPI PUSH2 0xC6 DUP2 DUP5 PUSH2 0x429 JUMP JUMPDEST MLOAD SWAP2 DUP1 PUSH1 0x0 NOT DUP2 EQ PUSH2 0x2D5 JUMPI PUSH1 0x1 ADD SWAP3 PUSH1 0xFF PUSH2 0xE1 DUP3 PUSH2 0x48C JUMP JUMPDEST SLOAD AND PUSH2 0x2B5 JUMPI PUSH2 0xF0 DUP2 PUSH2 0x48C JUMP JUMPDEST DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x0 DUP3 DUP2 MSTORE PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F502 PUSH1 0x20 MSTORE DUP7 SWAP1 KECCAK256 DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x29F JUMPI DUP2 SLOAD PUSH1 0x1 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0x295 JUMPI JUMPDEST PUSH1 0x20 DUP3 LT EQ PUSH2 0x27F JUMPI PUSH1 0x1F DUP2 GT PUSH2 0x237 JUMPI JUMPDEST POP PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 EQ PUSH2 0x1BC JUMPI SWAP3 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3466 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP3 DUP3 PUSH2 0x1A8 SWAP4 PUSH1 0x1 SWAP9 SWAP8 SWAP7 PUSH1 0x0 SWAP2 PUSH2 0x1B1 JUMPI JUMPDEST POP PUSH1 0x0 NOT PUSH1 0x3 DUP4 SWAP1 SHL SHR NOT AND SWAP1 DUP9 SHL OR SWAP1 SSTORE JUMPDEST DUP9 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x460 JUMP JUMPDEST SUB SWAP1 LOG2 ADD PUSH2 0x80 JUMP JUMPDEST SWAP1 POP DUP4 ADD MLOAD CODESIZE PUSH2 0x18A JUMP JUMPDEST PUSH1 0x1F NOT DUP3 AND SWAP1 DUP4 PUSH1 0x0 MSTORE DUP1 PUSH1 0x0 KECCAK256 SWAP2 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0x21F JUMPI POP DUP4 PUSH1 0x1 SWAP9 SWAP8 SWAP7 SWAP4 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3466 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP7 SWAP4 PUSH2 0x1A8 SWAP7 DUP12 SWAP5 LT PUSH2 0x206 JUMPI JUMPDEST POP POP DUP2 SHL ADD SWAP1 SSTORE PUSH2 0x19D JUMP JUMPDEST DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE CODESIZE DUP1 PUSH2 0x1FA JUMP JUMPDEST SWAP2 SWAP3 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP7 DUP11 ADD MLOAD DUP2 SSTORE ADD SWAP5 ADD SWAP3 ADD PUSH2 0x1CE JUMP JUMPDEST DUP3 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP4 ADD PUSH1 0x5 SHR DUP2 ADD SWAP2 PUSH1 0x20 DUP5 LT PUSH2 0x275 JUMPI JUMPDEST PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP1 JUMPDEST DUP2 DUP2 LT PUSH2 0x269 JUMPI POP PUSH2 0x159 JUMP JUMPDEST PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x25C JUMP JUMPDEST SWAP1 SWAP2 POP DUP2 SWAP1 PUSH2 0x253 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0x147 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP6 MLOAD PUSH4 0x468B12AD PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 DUP2 SWAP1 PUSH2 0x2D1 SWAP1 PUSH1 0x4 DUP4 ADD PUSH2 0x460 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 PUSH2 0x2F9 PUSH2 0x2D1 SWAP3 DUP6 PUSH2 0x429 JUMP JUMPDEST MLOAD SWAP1 MLOAD PUSH4 0xBFF1AC65 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 DUP3 SWAP2 PUSH1 0x4 DUP4 ADD PUSH2 0x460 JUMP JUMPDEST POP PUSH2 0x31D DUP2 DUP5 PUSH2 0x429 JUMP JUMPDEST MLOAD PUSH1 0x20 DUP2 MLOAD SWAP2 ADD MLOAD SWAP1 PUSH1 0x20 DUP2 LT PUSH2 0x33E JUMPI JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB LT PUSH2 0xB8 JUMP JUMPDEST PUSH1 0x0 NOT SWAP1 PUSH1 0x20 SUB PUSH1 0x3 SHL SHL AND CODESIZE PUSH2 0x32F JUMP JUMPDEST DUP4 PUSH2 0x35E PUSH2 0x2D1 SWAP3 DUP6 PUSH2 0x429 JUMP JUMPDEST MLOAD SWAP1 MLOAD PUSH4 0x27755B91 PUSH1 0xE1 SHL DUP2 MSTORE SWAP2 DUP3 SWAP2 PUSH1 0x4 DUP4 ADD PUSH2 0x460 JUMP JUMPDEST POP DUP4 PUSH2 0x383 DUP3 DUP6 PUSH2 0x429 JUMP JUMPDEST MLOAD MLOAD EQ ISZERO PUSH2 0x9F JUMP JUMPDEST DUP4 DUP3 PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F500 SSTORE MLOAD PUSH2 0x2F94 SWAP1 DUP2 PUSH2 0x4D2 DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 DUP2 DUP2 PUSH2 0x76C ADD MSTORE PUSH2 0x85A ADD MSTORE RETURN JUMPDEST DUP1 PUSH1 0x60 PUSH1 0x20 DUP1 SWAP4 DUP7 ADD ADD MSTORE ADD PUSH2 0x27 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND DUP2 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT SWAP1 DUP3 LT OR PUSH2 0x29F JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x413 JUMPI PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x413 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT PUSH2 0x450 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x440 JUMP JUMPDEST PUSH1 0x40 SWAP2 PUSH1 0x20 DUP3 MSTORE PUSH2 0x480 DUP2 MLOAD DUP1 SWAP3 DUP2 PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x20 DUP7 DUP7 ADD SWAP2 ADD PUSH2 0x43D JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x4A5 SWAP2 DUP2 PUSH1 0x40 MLOAD SWAP4 DUP3 DUP6 DUP1 SWAP5 MLOAD SWAP4 DUP5 SWAP3 ADD PUSH2 0x43D JUMP JUMPDEST DUP2 ADD PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F503 DUP2 MSTORE SUB ADD SWAP1 KECCAK256 SWAP1 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x15 JUMPI JUMPDEST CALLDATASIZE PUSH2 0x165F JUMPI STOP JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x66A1EB7 EQ PUSH2 0x1E5 JUMPI DUP1 PUSH4 0xDB02622 EQ PUSH2 0x1E0 JUMPI DUP1 PUSH4 0xF0F3F24 EQ PUSH2 0x1DB JUMPI DUP1 PUSH4 0x1626BA7E EQ PUSH2 0x1D6 JUMPI DUP1 PUSH4 0x17452CAA EQ PUSH2 0x1D1 JUMPI DUP1 PUSH4 0x19822F7C EQ PUSH2 0x1CC JUMPI DUP1 PUSH4 0x1CA5393F EQ PUSH2 0x1C7 JUMPI DUP1 PUSH4 0x29565E3B EQ PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x2C2ABD1E EQ PUSH2 0x1BD JUMPI DUP1 PUSH4 0x34FCD5BE EQ PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x36D9CF9B EQ PUSH2 0x1B3 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x1AE JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x1A9 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x1A4 JUMPI DUP1 PUSH4 0x6F2DE70E EQ PUSH2 0x19F JUMPI DUP1 PUSH4 0x737BEBDD EQ PUSH2 0x19A JUMPI DUP1 PUSH4 0x84B0196E EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0x88CE4C7C EQ PUSH2 0x190 JUMPI DUP1 PUSH4 0x89625B57 EQ PUSH2 0x18B JUMPI DUP1 PUSH4 0x8EA69029 EQ PUSH2 0x186 JUMPI DUP1 PUSH4 0x9F9BCB34 EQ PUSH2 0x181 JUMPI DUP1 PUSH4 0xA05BD44E EQ PUSH2 0x17C JUMPI DUP1 PUSH4 0xA2E1A8D8 EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0xB0D691FE EQ PUSH2 0x172 JUMPI DUP1 PUSH4 0xB61D27F6 EQ PUSH2 0x16D JUMPI DUP1 PUSH4 0xB8197367 EQ PUSH2 0x168 JUMPI DUP1 PUSH4 0xCE1506BE EQ PUSH2 0x163 JUMPI DUP1 PUSH4 0xD948FD2E EQ PUSH2 0x15E JUMPI PUSH4 0xF698DA25 SUB PUSH2 0xE JUMPI PUSH2 0xE93 JUMP JUMPDEST PUSH2 0xE68 JUMP JUMPDEST PUSH2 0xE4A JUMP JUMPDEST PUSH2 0xE03 JUMP JUMPDEST PUSH2 0xD97 JUMP JUMPDEST PUSH2 0xD6C JUMP JUMPDEST PUSH2 0xD45 JUMP JUMPDEST PUSH2 0xD0B JUMP JUMPDEST PUSH2 0xCD1 JUMP JUMPDEST PUSH2 0xC9E JUMP JUMPDEST PUSH2 0xC5E JUMP JUMPDEST PUSH2 0xC0E JUMP JUMPDEST PUSH2 0xB6D JUMP JUMPDEST PUSH2 0xA67 JUMP JUMPDEST PUSH2 0x8CC JUMP JUMPDEST PUSH2 0x896 JUMP JUMPDEST PUSH2 0x846 JUMP JUMPDEST PUSH2 0x731 JUMP JUMPDEST PUSH2 0x706 JUMP JUMPDEST PUSH2 0x673 JUMP JUMPDEST PUSH2 0x5CB JUMP JUMPDEST PUSH2 0x52D JUMP JUMPDEST PUSH2 0x4F6 JUMP JUMPDEST PUSH2 0x3A1 JUMP JUMPDEST PUSH2 0x375 JUMP JUMPDEST PUSH2 0x323 JUMP JUMPDEST PUSH2 0x27D JUMP JUMPDEST PUSH2 0x249 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x20 PUSH1 0xFF PUSH2 0x238 PUSH1 0x4 CALLDATALOAD PUSH2 0x233 PUSH1 0x24 CALLDATALOAD SWAP2 PUSH2 0x225 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 DUP9 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x40 DUP2 ADD SWAP5 DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x44F JUMP JUMPDEST PUSH2 0xEC5 JUMP JUMPDEST SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x20 PUSH2 0x264 PUSH2 0xF4D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SUB PUSH2 0x244 JUMPI JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH2 0x2F4 PUSH1 0x4 CALLDATALOAD PUSH2 0x29D DUP2 PUSH2 0x26C JUMP JUMPDEST PUSH2 0x2A5 PUSH2 0x1697 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x20 DUP2 MSTORE PUSH2 0x2C5 PUSH1 0x40 DUP3 PUSH2 0x44F JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EDF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD SWAP1 PUSH2 0x2DF DUP3 PUSH2 0xF79 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EDF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE PUSH2 0x1720 JUMP JUMPDEST STOP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x244 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT PUSH2 0x244 JUMPI PUSH1 0x20 DUP4 DUP2 DUP7 ADD SWAP6 ADD ADD GT PUSH2 0x244 JUMPI JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x24 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI PUSH1 0x20 SWAP2 PUSH2 0x35C PUSH2 0x362 SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x2F6 JUMP JUMPDEST SWAP2 PUSH2 0xF88 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH2 0x708 DUP2 MSTORE RETURN JUMPDEST SWAP1 DUP2 PUSH2 0x120 SWAP2 SUB SLT PUSH2 0x244 JUMPI SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x60 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI PUSH2 0x3D1 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x392 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD PUSH1 0x24 CALLDATALOAD PUSH16 0x71727DE22E5E9D8BAF0EDAC6F37DA031 NOT CALLER ADD PUSH2 0x429 JUMPI PUSH2 0x3FD DUP3 SWAP2 PUSH2 0x414 SWAP5 PUSH2 0x1137 JUMP JUMPDEST SWAP2 PUSH2 0x418 JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE SWAP1 DUP2 SWAP1 PUSH1 0x20 DUP3 ADD SWAP1 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 SWAP1 DUP2 DUP1 CODESIZE SWAP3 CALLER GAS CALL POP CODESIZE PUSH2 0x403 JUMP JUMPDEST PUSH3 0x82B429 PUSH1 0xE8 SHL PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x1F DUP1 NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x470 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x439 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x484 PUSH1 0xC0 DUP4 PUSH2 0x44F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x470 JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x4AD DUP3 PUSH2 0x486 JUMP JUMPDEST SWAP2 PUSH2 0x4BB PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x44F JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0x244 JUMPI DUP3 DUP2 PUSH1 0x20 SWAP4 DUP5 PUSH1 0x0 SWAP7 ADD CALLDATACOPY ADD ADD MSTORE JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x244 JUMPI DUP2 PUSH1 0x20 PUSH2 0x4F3 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x4A1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI PUSH1 0xFF PUSH2 0x238 PUSH2 0x233 PUSH1 0x20 SWAP4 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x4D8 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH2 0x2F4 PUSH1 0x24 CALLDATALOAD PUSH2 0x2C5 PUSH1 0x4 CALLDATALOAD PUSH2 0x552 PUSH2 0x1697 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 PUSH1 0x60 DUP2 ADD PUSH2 0x225 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH1 0x3 NOT DUP4 ADD SLT PUSH2 0x244 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI PUSH1 0x4 ADD PUSH1 0x0 SWAP3 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x5C7 JUMPI DUP2 CALLDATALOAD SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP6 GT PUSH2 0x5C4 JUMPI POP PUSH1 0x20 DUP1 DUP4 ADD SWAP3 DUP6 PUSH1 0x5 SHL ADD ADD GT PUSH2 0x244 JUMPI SWAP2 SWAP1 JUMP JUMPDEST DUP1 REVERT JUMPDEST DUP4 DUP1 REVERT JUMPDEST PUSH2 0x5D4 CALLDATASIZE PUSH2 0x56E JUMP JUMPDEST SWAP1 PUSH16 0x71727DE22E5E9D8BAF0EDAC6F37DA032 CALLER SUB PUSH2 0x429 JUMPI PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2F4 JUMPI PUSH1 0x0 PUSH2 0x608 DUP3 PUSH1 0x5 SHL DUP5 ADD DUP5 PUSH2 0xFB6 JUMP JUMPDEST PUSH2 0x612 DUP2 DUP4 PUSH2 0xFE8 JUMP JUMPDEST PUSH2 0x61B DUP2 PUSH2 0x1460 JUMP JUMPDEST ISZERO PUSH2 0x657 JUMPI POP DUP3 SWAP2 PUSH2 0x62E SWAP2 CALLDATASIZE SWAP2 PUSH2 0x4A1 JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD DUP3 ADDRESS GAS CALL PUSH2 0x640 PUSH2 0x1329 JUMP JUMPDEST SWAP1 ISZERO PUSH2 0x64F JUMPI POP PUSH1 0x1 ADD PUSH2 0x5EF JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD REVERT JUMPDEST PUSH4 0x1D8370A3 PUSH1 0xE1 SHL DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x4 MSTORE PUSH1 0x24 DUP4 REVERT JUMPDEST PUSH2 0x67C CALLDATASIZE PUSH2 0x56E JUMP JUMPDEST SWAP1 PUSH16 0x71727DE22E5E9D8BAF0EDAC6F37DA032 CALLER SUB PUSH2 0x6F9 JUMPI JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT PUSH2 0x6A1 JUMPI STOP JUMPDEST DUP1 PUSH2 0x6F3 PUSH2 0x6B2 PUSH1 0x1 SWAP4 DUP7 DUP7 PUSH2 0x127C JUMP JUMPDEST CALLDATALOAD PUSH2 0x6BC DUP2 PUSH2 0x26C JUMP JUMPDEST PUSH1 0x20 PUSH2 0x6C9 DUP5 DUP9 DUP9 PUSH2 0x127C JUMP JUMPDEST ADD CALLDATALOAD PUSH2 0x6ED PUSH2 0x6E6 PUSH2 0x6DC DUP7 DUP11 DUP11 PUSH2 0x127C JUMP JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 PUSH2 0xFB6 JUMP JUMPDEST CALLDATASIZE SWAP2 PUSH2 0x4A1 JUMP JUMPDEST SWAP2 PUSH2 0x1B43 JUMP JUMPDEST ADD PUSH2 0x698 JUMP JUMPDEST PUSH2 0x701 PUSH2 0x1697 JUMP JUMPDEST PUSH2 0x695 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x20 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2F3F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x749 DUP2 PUSH2 0x26C JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI PUSH2 0x768 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x2F6 JUMP JUMPDEST SWAP1 SWAP2 PUSH32 0x0 ADDRESS EQ PUSH2 0x838 JUMPI PUSH2 0x799 PUSH2 0x1697 JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND RETURNDATASIZE PUSH1 0x0 MSTORE PUSH4 0x52D1902D PUSH1 0x1 MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2F1F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x20 PUSH1 0x1 PUSH1 0x4 PUSH1 0x1D DUP6 GAS STATICCALL MLOAD SUB PUSH2 0x82A JUMPI DUP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B PUSH1 0x0 DUP1 LOG2 DUP2 DUP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2F1F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE PUSH2 0x80B JUMPI STOP JUMPDEST DUP2 PUSH1 0x0 SWAP3 PUSH1 0x40 MLOAD SWAP5 DUP6 CALLDATACOPY DUP4 CODESIZE SWAP3 GAS DELEGATECALL ISZERO PUSH2 0x821 JUMPI STOP JUMPDEST RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH4 0x55299B49 PUSH1 0x1 MSTORE PUSH1 0x4 PUSH1 0x1D REVERT JUMPDEST PUSH4 0x9F03A026 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x1C REVERT JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI ADDRESS PUSH32 0x0 SUB PUSH2 0x838 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2F1F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2F1F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 SWAP1 RETURN JUMPDEST PUSH2 0x8D5 CALLDATASIZE PUSH2 0x56E JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EDF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD SWAP2 DUP3 PUSH2 0x9FD JUMPI PUSH2 0x8F6 SWAP2 CALLDATASIZE SWAP2 PUSH2 0x103B JUMP JUMPDEST SWAP1 PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x9E7 JUMPI PUSH1 0x20 PUSH2 0x90F DUP3 DUP6 PUSH2 0x10FC JUMP JUMPDEST MLOAD MLOAD EQ ISZERO DUP1 PUSH2 0x9D1 JUMPI JUMPDEST PUSH2 0x9AA JUMPI PUSH1 0x20 PUSH2 0x929 DUP3 DUP6 PUSH2 0x10FC JUMP JUMPDEST MLOAD MLOAD EQ DUP1 PUSH2 0x988 JUMPI JUMPDEST PUSH2 0x95D JUMPI DUP1 PUSH2 0x957 PUSH2 0x946 PUSH1 0x1 SWAP4 DUP7 PUSH2 0x10FC JUMP JUMPDEST MLOAD SWAP4 PUSH2 0x951 DUP2 PUSH2 0xF79 JUMP JUMPDEST SWAP5 PUSH2 0x1720 JUMP JUMPDEST ADD PUSH2 0x8FA JUMP JUMPDEST PUSH2 0x96A PUSH2 0x984 SWAP2 DUP5 PUSH2 0x10FC JUMP JUMPDEST MLOAD PUSH1 0x40 MLOAD PUSH4 0xBFF1AC65 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 DUP3 SWAP2 PUSH1 0x4 DUP4 ADD PUSH2 0xA56 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x9A4 PUSH2 0x99E DUP4 DUP7 PUSH2 0x10FC JUMP JUMPDEST MLOAD PUSH2 0x193A JUMP JUMPDEST GT PUSH2 0x932 JUMP JUMPDEST PUSH2 0x9B7 PUSH2 0x984 SWAP2 DUP5 PUSH2 0x10FC JUMP JUMPDEST MLOAD PUSH1 0x40 MLOAD PUSH4 0x27755B91 PUSH1 0xE1 SHL DUP2 MSTORE SWAP2 DUP3 SWAP2 PUSH1 0x4 DUP4 ADD PUSH2 0xA56 JUMP JUMPDEST POP PUSH1 0x40 PUSH2 0x9DE DUP3 DUP6 PUSH2 0x10FC JUMP JUMPDEST MLOAD MLOAD EQ ISZERO PUSH2 0x919 JUMP JUMPDEST PUSH2 0x2F4 DUP3 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EDF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST PUSH4 0x2ED543D PUSH1 0xE5 SHL PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT PUSH2 0xA21 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA11 JUMP JUMPDEST SWAP1 PUSH1 0x20 SWAP2 PUSH2 0xA4A DUP2 MLOAD DUP1 SWAP3 DUP2 DUP6 MSTORE DUP6 DUP1 DUP7 ADD SWAP2 ADD PUSH2 0xA0E JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND ADD ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0x4F3 SWAP3 DUP2 DUP2 MSTORE ADD SWAP1 PUSH2 0xA31 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI DUP1 PUSH1 0x4 ADD PUSH1 0x80 PUSH1 0x3 NOT DUP4 CALLDATASIZE SUB ADD SLT PUSH2 0x244 JUMPI PUSH1 0x44 DUP3 ADD CALLDATALOAD PUSH2 0xAA9 DUP2 PUSH2 0x12A8 JUMP JUMPDEST TIMESTAMP GT PUSH2 0xB46 JUMPI PUSH2 0xAE0 PUSH2 0xACD PUSH2 0xAC1 PUSH2 0xAE4 SWAP4 PUSH2 0x12E0 JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD KECCAK256 PUSH2 0x1DD4 JUMP JUMPDEST PUSH2 0xADA PUSH1 0x64 DUP7 ADD DUP6 PUSH2 0xFB6 JUMP JUMPDEST SWAP2 PUSH2 0x1A51 JUMP JUMPDEST ISZERO SWAP1 JUMP JUMPDEST PUSH2 0xB35 JUMPI PUSH1 0x0 SWAP2 PUSH2 0xB03 DUP3 PUSH1 0x24 PUSH2 0xAFB DUP7 SWAP6 PUSH2 0x129E JUMP JUMPDEST SWAP4 ADD SWAP1 PUSH2 0xFB6 JUMP JUMPDEST SWAP1 PUSH2 0xB13 PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP4 PUSH2 0x1306 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL PUSH2 0xB1F PUSH2 0x1329 JUMP JUMPDEST SWAP1 ISZERO PUSH2 0x64F JUMPI PUSH2 0x414 SWAP1 PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xA56 JUMP JUMPDEST PUSH4 0x8BAA579F PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST PUSH2 0xB52 PUSH2 0xB69 SWAP2 PUSH2 0x12A8 JUMP JUMPDEST PUSH4 0xF88F049 PUSH1 0xE4 SHL PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE TIMESTAMP PUSH1 0x24 MSTORE PUSH1 0x44 SWAP1 JUMP JUMPDEST PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH2 0xBAD PUSH2 0xBBB PUSH2 0xB8C PUSH2 0x1B63 JUMP JUMPDEST PUSH1 0x40 SWAP3 SWAP2 SWAP3 MLOAD SWAP4 DUP5 SWAP4 PUSH1 0xF PUSH1 0xF8 SHL DUP6 MSTORE PUSH1 0xE0 PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0xE0 DUP6 ADD SWAP1 PUSH2 0xA31 JUMP JUMPDEST SWAP1 DUP4 DUP3 SUB PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0xA31 JUMP JUMPDEST CHAINID PUSH1 0x60 DUP4 ADD MSTORE ADDRESS PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0xA0 DUP4 ADD MSTORE DUP2 DUP2 SUB PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0x20 PUSH1 0x60 MLOAD SWAP2 DUP3 DUP2 MSTORE ADD SWAP1 PUSH1 0x80 SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0xBF5 JUMPI POP POP POP SUB SWAP1 RETURN JUMPDEST DUP3 MLOAD DUP5 MSTORE DUP6 SWAP5 POP PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0xBE7 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH2 0x2105 DUP2 MSTORE RETURN JUMPDEST SWAP1 PUSH1 0x40 PUSH1 0x3 NOT DUP4 ADD SLT PUSH2 0x244 JUMPI PUSH1 0x4 CALLDATALOAD SWAP2 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x244 JUMPI PUSH2 0xC5A SWAP2 PUSH1 0x4 ADD PUSH2 0x2F6 JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH2 0xC6C CALLDATASIZE PUSH2 0xC2B JUMP JUMPDEST SWAP1 PUSH2 0xC75 PUSH2 0x1697 JUMP JUMPDEST PUSH1 0x1 PUSH2 0xC7F PUSH2 0xF4D JUMP JUMPDEST EQ PUSH2 0xC8D JUMPI PUSH2 0x2F4 SWAP3 PUSH2 0x1CBD JUMP JUMPDEST PUSH4 0x948BF897 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH2 0x414 PUSH2 0xCBD PUSH1 0x4 CALLDATALOAD PUSH2 0x1393 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0xA31 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 SUB PUSH2 0x244 JUMPI PUSH2 0xD01 PUSH1 0x20 SWAP2 PUSH2 0x1460 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI PUSH2 0x264 PUSH2 0xD40 PUSH1 0x20 SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x392 JUMP JUMPDEST PUSH2 0x14E3 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x20 PUSH2 0xD01 PUSH1 0x4 CALLDATALOAD PUSH2 0xD67 DUP2 PUSH2 0x26C JUMP JUMPDEST PUSH2 0x15D0 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH16 0x71727DE22E5E9D8BAF0EDAC6F37DA032 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x60 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0xDAF DUP2 PUSH2 0x26C JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x24 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT PUSH2 0x244 JUMPI PUSH2 0x6ED PUSH2 0xDD8 PUSH2 0x2F4 SWAP5 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x2F6 JUMP JUMPDEST PUSH16 0x71727DE22E5E9D8BAF0EDAC6F37DA032 CALLER SUB PUSH2 0xDF6 JUMPI CALLDATASIZE SWAP2 PUSH2 0x4A1 JUMP JUMPDEST PUSH2 0xDFE PUSH2 0x1697 JUMP JUMPDEST PUSH2 0x6E6 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH2 0xE11 CALLDATASIZE PUSH2 0xC2B JUMP JUMPDEST SWAP1 PUSH2 0xE1A PUSH2 0x1697 JUMP JUMPDEST PUSH2 0xE22 PUSH2 0xF4D JUMP JUMPDEST SWAP3 PUSH1 0x1 DUP5 GT PUSH2 0xE35 JUMPI PUSH2 0x2F4 SWAP4 POP PUSH2 0x1CBD JUMP JUMPDEST DUP4 PUSH4 0x1047E355 PUSH1 0xE3 SHL PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x20 PUSH2 0x264 PUSH1 0x4 CALLDATALOAD PUSH2 0x1DD4 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x20 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EDF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x20 PUSH2 0x264 PUSH2 0x15F6 JUMP JUMPDEST SWAP1 PUSH2 0xEC1 PUSH1 0x20 SWAP3 DUP3 DUP2 MLOAD SWAP5 DUP6 SWAP3 ADD PUSH2 0xA0E JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH2 0xEDE SWAP2 DUP2 PUSH1 0x40 MLOAD SWAP4 DUP3 DUP6 DUP1 SWAP5 MLOAD SWAP4 DUP5 SWAP3 ADD PUSH2 0xA0E JUMP JUMPDEST DUP2 ADD PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F503 DUP2 MSTORE SUB ADD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SUB SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 GT PUSH2 0xF48 JUMPI JUMP JUMPDEST PUSH2 0xF0A JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EDF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2F3F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD DUP2 SUB SWAP1 DUP2 GT PUSH2 0xF48 JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x0 NOT DUP2 EQ PUSH2 0xF48 JUMPI PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xF96 PUSH2 0xF9B SWAP4 SWAP3 PUSH2 0x1DD4 JUMP JUMPDEST PUSH2 0x1A51 JUMP JUMPDEST PUSH2 0xFAB JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 JUMP JUMPDEST PUSH4 0xB135D3F PUSH1 0xE1 SHL SWAP1 JUMP JUMPDEST SWAP1 CALLDATALOAD SWAP1 PUSH1 0x1E NOT DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x244 JUMPI ADD DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x244 JUMPI PUSH1 0x20 ADD SWAP2 DUP2 CALLDATASIZE SUB DUP4 SGT PUSH2 0x244 JUMPI JUMP JUMPDEST CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND SWAP3 SWAP2 SWAP1 PUSH1 0x4 DUP3 LT PUSH2 0x1003 JUMPI POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0x4 SWAP3 SWAP1 SWAP3 SUB PUSH1 0x3 SHL DUP3 SWAP1 SHL AND AND SWAP2 POP JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 DUP4 PUSH1 0x4 GT PUSH2 0x244 JUMPI DUP4 GT PUSH2 0x244 JUMPI PUSH1 0x4 ADD SWAP2 PUSH1 0x3 NOT ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP1 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP5 GT PUSH2 0x470 JUMPI DUP4 PUSH1 0x5 SHL SWAP1 PUSH1 0x20 PUSH1 0x40 MLOAD PUSH2 0x1063 DUP3 DUP6 ADD DUP3 PUSH2 0x44F JUMP JUMPDEST DUP1 SWAP7 DUP2 MSTORE ADD SWAP2 DUP2 ADD SWAP2 DUP4 DUP4 GT PUSH2 0x244 JUMPI DUP2 SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x1084 JUMPI POP POP POP POP POP JUMP JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI PUSH1 0x20 SWAP2 PUSH2 0x10A4 DUP8 DUP5 SWAP4 DUP8 ADD PUSH2 0x4D8 JUMP JUMPDEST DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x1076 JUMP JUMPDEST PUSH1 0x20 DUP2 DUP4 SUB SLT PUSH2 0x244 JUMPI DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x244 JUMPI ADD SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x244 JUMPI DUP2 PUSH1 0x20 PUSH2 0x4F3 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x103B JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x1110 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x10E6 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND SWAP3 SWAP2 SWAP1 PUSH1 0x4 DUP3 LT PUSH2 0x1003 JUMPI POP POP JUMP JUMPDEST SWAP2 PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x40 SHR SWAP2 PUSH1 0x60 DUP5 ADD SWAP1 PUSH2 0x1150 DUP3 DUP7 PUSH2 0xFB6 JUMP JUMPDEST PUSH4 0x16155E8F PUSH1 0xE1 SHL SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP2 PUSH2 0x116C SWAP2 PUSH2 0xFE8 JUMP JUMPDEST AND SUB PUSH2 0x124F JUMPI POP PUSH2 0x117C DUP5 PUSH2 0x14E3 JUMP JUMPDEST SWAP3 PUSH2 0x2105 DUP2 SUB PUSH2 0x123B JUMPI POP PUSH2 0x119E PUSH2 0x1197 PUSH2 0x11A6 SWAP3 DUP7 PUSH2 0xFB6 JUMP JUMPDEST DUP1 SWAP2 PUSH2 0x101E JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x10AF JUMP JUMPDEST SWAP2 PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x1215 JUMPI PUSH2 0x11BD DUP2 DUP6 PUSH2 0x10FC JUMP JUMPDEST MLOAD PUSH4 0x278F7943 PUSH1 0xE1 SHL PUSH2 0x11DF PUSH2 0x11D2 DUP4 PUSH2 0x1115 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST EQ PUSH2 0x11EE JUMPI JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x11AA JUMP JUMPDEST PUSH1 0x24 ADD MLOAD DUP1 EXTCODESIZE PUSH2 0x11E5 JUMPI PUSH4 0xC760937 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP1 SWAP3 PUSH2 0x122D SWAP3 POP PUSH2 0xADA SWAP1 JUMPDEST PUSH2 0x100 DUP2 ADD SWAP1 PUSH2 0xFB6 JUMP JUMPDEST PUSH2 0x1236 JUMPI PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH4 0x2EF37813 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 SWAP1 POP PUSH2 0x2105 DUP2 SWAP5 SWAP3 SWAP5 EQ PUSH2 0x123B JUMPI POP SWAP1 PUSH2 0xADA PUSH2 0x122D SWAP3 PUSH2 0x1222 JUMP JUMPDEST PUSH2 0x1277 PUSH1 0xFF SWAP2 PUSH2 0xEC5 JUMP JUMPDEST SLOAD AND SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x1110 JUMPI PUSH1 0x5 SHL DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x5E NOT DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x244 JUMPI ADD SWAP1 JUMP JUMPDEST CALLDATALOAD PUSH2 0x4F3 DUP2 PUSH2 0x26C JUMP JUMPDEST SWAP1 PUSH2 0x708 DUP3 ADD DUP1 SWAP3 GT PUSH2 0xF48 JUMPI JUMP JUMPDEST SWAP1 PUSH1 0x15 DUP3 ADD DUP1 SWAP3 GT PUSH2 0xF48 JUMPI JUMP JUMPDEST SWAP1 PUSH1 0x2 DUP3 ADD DUP1 SWAP3 GT PUSH2 0xF48 JUMPI JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0xF48 JUMPI JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP2 PUSH4 0x737BEBDD PUSH1 0xE0 SHL PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x24 DUP3 MSTORE PUSH2 0x484 PUSH1 0x44 DUP4 PUSH2 0x44F JUMP JUMPDEST SWAP1 DUP1 SWAP3 SWAP2 DUP3 CALLDATACOPY ADD PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x1323 PUSH1 0x20 DUP4 PUSH2 0x44F JUMP JUMPDEST PUSH1 0x0 DUP3 MSTORE JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x1354 JUMPI RETURNDATASIZE SWAP1 PUSH2 0x133A DUP3 PUSH2 0x486 JUMP JUMPDEST SWAP2 PUSH2 0x1348 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x44F JUMP JUMPDEST DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x1389 JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x1373 JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x1368 JUMP JUMPDEST PUSH1 0x0 MSTORE PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F502 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD SWAP1 DUP2 PUSH1 0x0 DUP3 SLOAD SWAP3 PUSH2 0x13D2 DUP5 PUSH2 0x1359 JUMP JUMPDEST DUP1 DUP5 MSTORE SWAP4 PUSH1 0x1 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x143E JUMPI POP PUSH1 0x1 EQ PUSH2 0x13F7 JUMPI JUMPDEST POP PUSH2 0x4F3 SWAP3 POP SUB DUP3 PUSH2 0x44F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 SWAP3 SWAP2 SWAP3 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x0 SWAP2 JUMPDEST DUP2 DUP4 LT PUSH2 0x1422 JUMPI POP POP SWAP1 PUSH1 0x20 PUSH2 0x4F3 SWAP3 DUP3 ADD ADD CODESIZE PUSH2 0x13EA JUMP JUMPDEST PUSH1 0x20 SWAP2 SWAP4 POP DUP1 PUSH1 0x1 SWAP2 SLOAD DUP4 DUP6 DUP9 ADD ADD MSTORE ADD SWAP2 ADD SWAP1 SWAP2 DUP4 SWAP3 PUSH2 0x1409 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 SWAP3 POP PUSH2 0x4F3 SWAP5 SWAP2 POP PUSH1 0xFF NOT AND DUP3 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD CODESIZE PUSH2 0x13EA JUMP JUMPDEST PUSH4 0xFFFFFFFF PUSH1 0xE0 SHL AND PUSH4 0x29565E3B PUSH1 0xE0 SHL DUP2 EQ SWAP1 DUP2 ISZERO PUSH2 0x14D2 JUMPI JUMPDEST DUP2 ISZERO PUSH2 0x14C1 JUMPI JUMPDEST DUP2 ISZERO PUSH2 0x14B0 JUMPI JUMPDEST DUP2 ISZERO PUSH2 0x149F JUMPI JUMPDEST POP PUSH2 0x149A JUMPI PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH4 0x278F7943 PUSH1 0xE1 SHL EQ SWAP1 POP CODESIZE PUSH2 0x1490 JUMP JUMPDEST PUSH4 0xB8197367 PUSH1 0xE0 SHL DUP2 EQ SWAP2 POP PUSH2 0x1489 JUMP JUMPDEST PUSH4 0x89625B57 PUSH1 0xE0 SHL DUP2 EQ SWAP2 POP PUSH2 0x1482 JUMP JUMPDEST PUSH4 0x3C3CFC9 PUSH1 0xE2 SHL DUP2 EQ SWAP2 POP PUSH2 0x147B JUMP JUMPDEST PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH2 0x1597 PUSH2 0x14F8 PUSH1 0x40 DUP5 ADD DUP5 PUSH2 0xFB6 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x40 MLOAD SWAP2 DUP3 CALLDATACOPY KECCAK256 SWAP2 PUSH2 0x225 PUSH2 0x1512 PUSH1 0x60 DUP7 ADD DUP7 PUSH2 0xFB6 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x40 MLOAD SWAP2 DUP3 CALLDATACOPY KECCAK256 PUSH1 0xC0 DUP7 ADD CALLDATALOAD PUSH1 0xA0 DUP8 ADD CALLDATALOAD PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH2 0x1540 PUSH2 0x153A PUSH1 0xE0 DUP12 ADD DUP12 PUSH2 0xFB6 JUMP JUMPDEST SWAP1 PUSH2 0x2335 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP11 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP13 ADD SWAP1 DUP2 MSTORE SWAP1 DUP12 ADD SWAP8 SWAP1 SWAP8 MSTORE PUSH1 0x60 DUP11 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH1 0x80 DUP10 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xA0 DUP9 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xC0 DUP8 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP7 ADD MSTORE PUSH2 0x100 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP3 SWAP2 DUP3 SWAP1 PUSH2 0x120 DUP3 ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 DUP4 MSTORE PUSH16 0x71727DE22E5E9D8BAF0EDAC6F37DA032 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x15CA DUP2 PUSH1 0x60 DUP2 ADD PUSH2 0x225 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x1277 PUSH1 0xFF SWAP2 PUSH1 0x40 MLOAD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x20 DUP2 MSTORE PUSH2 0x233 PUSH1 0x40 DUP3 PUSH2 0x44F JUMP JUMPDEST PUSH2 0x15FE PUSH2 0x1B63 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 PUSH1 0x20 DUP2 MLOAD SWAP2 ADD KECCAK256 PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP3 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP5 MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH2 0x15CA PUSH1 0xC0 DUP3 PUSH2 0x44F JUMP JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR PUSH4 0xBC197C81 DUP2 EQ PUSH4 0xF23A6E61 DUP3 EQ OR PUSH4 0x150B7A02 DUP3 EQ OR PUSH2 0x168E JUMPI PUSH4 0x3C10B94E PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x1C REVERT JUMPDEST PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x3C RETURN JUMPDEST PUSH2 0x16A0 CALLER PUSH2 0x15D0 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x16BB JUMPI JUMPDEST PUSH2 0x484 JUMPI PUSH3 0x82B429 PUSH1 0xE8 SHL PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST POP ADDRESS CALLER EQ PUSH2 0x16A7 JUMP JUMPDEST DUP2 DUP2 LT PUSH2 0x16CF JUMPI POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x16C4 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x1F DUP2 GT PUSH2 0x16EA JUMPI POP POP POP JUMP JUMPDEST PUSH2 0x484 SWAP3 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x20 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP4 ADD SWAP4 LT PUSH2 0x1716 JUMPI JUMPDEST PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP1 PUSH2 0x16C4 JUMP JUMPDEST SWAP1 SWAP2 POP DUP2 SWAP1 PUSH2 0x1709 JUMP JUMPDEST PUSH2 0x1729 DUP2 PUSH2 0x126C JUMP JUMPDEST PUSH2 0x1897 JUMPI PUSH2 0x1736 DUP2 PUSH2 0xEC5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xFF NOT DUP3 SLOAD AND OR SWAP1 SSTORE DUP2 PUSH1 0x0 MSTORE PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F502 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x470 JUMPI PUSH2 0x1792 DUP2 PUSH2 0x178C DUP5 SLOAD PUSH2 0x1359 JUMP JUMPDEST DUP5 PUSH2 0x16DB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 EQ PUSH2 0x1806 JUMPI SWAP2 PUSH2 0x17E7 DUP3 PUSH32 0x38109EDC26E166B5579352CE56A50813177EB25208FD90D61F2F378386220220 SWAP6 SWAP4 PUSH2 0x17F6 SWAP6 PUSH1 0x0 SWAP2 PUSH2 0x17FB JUMPI JUMPDEST POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH1 0x0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR SWAP1 JUMP JUMPDEST SWAP1 SSTORE JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xA56 JUMP JUMPDEST SUB SWAP1 LOG2 JUMP JUMPDEST SWAP1 POP DUP5 ADD MLOAD CODESIZE PUSH2 0x17D3 JUMP JUMPDEST PUSH1 0x1F NOT DUP3 AND SWAP1 PUSH2 0x181B DUP5 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP2 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0x187F JUMPI POP SWAP3 PUSH2 0x17F6 SWAP5 SWAP3 PUSH1 0x1 SWAP3 DUP3 PUSH32 0x38109EDC26E166B5579352CE56A50813177EB25208FD90D61F2F378386220220 SWAP9 SWAP7 LT PUSH2 0x1866 JUMPI JUMPDEST POP POP DUP2 SHL ADD SWAP1 SSTORE PUSH2 0x17EA JUMP JUMPDEST DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE CODESIZE DUP1 PUSH2 0x185A JUMP JUMPDEST SWAP2 SWAP3 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP7 DUP11 ADD MLOAD DUP2 SSTORE ADD SWAP5 ADD SWAP3 ADD PUSH2 0x181F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x468B12AD PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 DUP2 SWAP1 PUSH2 0x984 SWAP1 PUSH1 0x4 DUP4 ADD PUSH2 0xA56 JUMP JUMPDEST PUSH1 0x20 DUP2 DUP4 SUB SLT PUSH2 0x244 JUMPI DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x244 JUMPI ADD PUSH1 0x40 DUP2 DUP4 SUB SLT PUSH2 0x244 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH1 0x40 DUP4 ADD DUP4 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x470 JUMPI PUSH1 0x40 MSTORE DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI DUP2 PUSH2 0x1913 SWAP2 DUP5 ADD PUSH2 0x4D8 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI PUSH2 0x1932 SWAP3 ADD PUSH2 0x4D8 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD MLOAD SWAP1 PUSH1 0x20 DUP2 LT PUSH2 0x194E JUMPI POP SWAP1 JUMP JUMPDEST PUSH1 0x0 NOT SWAP1 PUSH1 0x20 SUB PUSH1 0x3 SHL SHL AND SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 PUSH1 0x40 SWAP2 SUB SLT PUSH2 0x244 JUMPI PUSH1 0x20 DUP3 MLOAD SWAP3 ADD MLOAD SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x244 JUMPI PUSH1 0x20 DUP2 MLOAD SWAP2 ADD SWAP1 PUSH2 0x198E DUP2 PUSH2 0x486 JUMP JUMPDEST SWAP3 PUSH2 0x199C PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x44F JUMP JUMPDEST DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0x244 JUMPI PUSH2 0x4F3 SWAP2 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0xA0E JUMP JUMPDEST PUSH1 0x20 DUP2 DUP4 SUB SLT PUSH2 0x244 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x244 JUMPI ADD SWAP1 PUSH1 0xC0 DUP3 DUP3 SUB SLT PUSH2 0x244 JUMPI PUSH2 0x19E4 PUSH2 0x475 JUMP JUMPDEST SWAP2 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI DUP3 PUSH2 0x1A01 SWAP2 DUP4 ADD PUSH2 0x1973 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI PUSH1 0xA0 SWAP3 PUSH2 0x1A24 SWAP2 DUP4 ADD PUSH2 0x1973 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE ADD MLOAD PUSH1 0xA0 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP1 PUSH2 0x1A60 SWAP2 DUP2 ADD SWAP1 PUSH2 0x18B4 JUMP JUMPDEST SWAP1 DUP2 MLOAD SWAP2 PUSH2 0x1A70 PUSH2 0xAE0 DUP5 PUSH2 0x126C JUMP JUMPDEST PUSH2 0x1B3A JUMPI PUSH1 0x20 DUP4 MLOAD EQ PUSH2 0x1AF1 JUMPI DUP3 MLOAD SWAP4 PUSH1 0x40 DUP6 EQ PUSH2 0x1AA3 JUMPI PUSH1 0x40 MLOAD PUSH4 0x27755B91 PUSH1 0xE1 SHL DUP2 MSTORE DUP1 PUSH2 0x984 DUP7 PUSH1 0x4 DUP4 ADD PUSH2 0xA56 JUMP JUMPDEST PUSH2 0x225 PUSH2 0x1AEC PUSH2 0x1AD7 PUSH2 0x1AC3 DUP8 PUSH1 0x20 DUP1 DUP1 SWAP10 SWAP12 PUSH2 0x4F3 SWAP12 ADD ADD SWAP2 ADD PUSH2 0x195D JUMP JUMPDEST SWAP7 SWAP1 SWAP6 ADD MLOAD PUSH1 0x20 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x19B5 JUMP JUMPDEST SWAP3 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST PUSH2 0x1FD6 JUMP JUMPDEST SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x1B07 DUP6 PUSH2 0x193A JUMP JUMPDEST GT PUSH2 0x1B1F JUMPI PUSH1 0x20 DUP1 PUSH2 0x4F3 SWAP5 SWAP6 ADD MLOAD SWAP3 ADD MLOAD SWAP2 PUSH2 0x1E49 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xBFF1AC65 PUSH1 0xE0 SHL DUP2 MSTORE DUP1 PUSH2 0x984 DUP7 PUSH1 0x4 DUP4 ADD PUSH2 0xA56 JUMP JUMPDEST POP SWAP2 POP POP PUSH1 0x0 SWAP1 JUMP JUMPDEST SWAP2 PUSH1 0x0 SWAP3 DUP4 SWAP3 PUSH1 0x20 DUP4 MLOAD SWAP4 ADD SWAP2 GAS CALL PUSH2 0x1B5A PUSH2 0x1329 JUMP JUMPDEST SWAP1 ISZERO PUSH2 0x64F JUMPI POP JUMP JUMPDEST PUSH1 0x40 SWAP1 DUP2 MLOAD PUSH2 0x1B72 DUP4 DUP3 PUSH2 0x44F JUMP JUMPDEST PUSH1 0x12 DUP2 MSTORE PUSH18 0x11DA585B9BC814DB585C9D0815D85B1B195D PUSH1 0x72 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP2 PUSH2 0x1B9E DUP2 MLOAD SWAP2 DUP3 PUSH2 0x44F JUMP JUMPDEST PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x20 SWAP4 SWAP3 DUP2 DUP5 MSTORE DUP5 DUP5 ADD CALLDATACOPY PUSH1 0x0 DUP3 DUP3 ADD DUP5 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND ADD ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 PUSH2 0x4F3 SWAP5 SWAP3 PUSH2 0x1BEE SWAP3 DUP6 MSTORE PUSH1 0x60 PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x60 DUP6 ADD SWAP2 PUSH2 0x1BAF JUMP JUMPDEST SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0xA31 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP3 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 DUP4 CALLDATACOPY DUP2 ADD PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F503 DUP2 MSTORE SUB ADD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SHL SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xFE SHL SUB DUP2 AND SUB PUSH2 0xF48 JUMPI JUMP JUMPDEST PUSH2 0x1C56 DUP2 SLOAD PUSH2 0x1359 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x1C60 JUMPI POP POP JUMP JUMPDEST DUP2 PUSH1 0x1F PUSH1 0x0 SWAP4 GT PUSH1 0x1 EQ PUSH2 0x1C72 JUMPI POP SSTORE JUMP JUMPDEST DUP2 DUP4 MSTORE PUSH1 0x20 DUP4 KECCAK256 PUSH2 0x1C8E SWAP2 PUSH1 0x1F ADD PUSH1 0x5 SHR DUP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x16C4 JUMP JUMPDEST DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 SWAP1 DUP2 SLOAD DUP4 PUSH1 0x1 SHL SWAP1 DUP5 NOT DUP6 PUSH1 0x3 SHL SHR NOT AND OR SWAP1 SSTORE SSTORE JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x4F3 SWAP4 DUP2 DUP2 MSTORE ADD SWAP2 PUSH2 0x1BAF JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x1CC8 DUP4 PUSH2 0x1393 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x1DBE JUMPI DUP1 MLOAD PUSH1 0x20 DUP3 ADD KECCAK256 PUSH2 0x1CE1 CALLDATASIZE DUP6 DUP6 PUSH2 0x4A1 JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD KECCAK256 SUB PUSH2 0x1D9F JUMPI POP SWAP1 DUP2 PUSH2 0x1D28 PUSH2 0x1D1E DUP4 PUSH32 0xCF95BBFE6F870F8CC40482DC3DCCDAFD268F0E9CE0A4F24EA1BEA9BE64E505FF SWAP6 PUSH2 0x1BFC JUMP JUMPDEST DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1D63 PUSH2 0x1D5E DUP6 PUSH1 0x0 MSTORE PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F502 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x1C4C JUMP JUMPDEST PUSH2 0x1D90 PUSH2 0x1D7E PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2F3F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH2 0xF79 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2F3F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST PUSH2 0x17F6 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP3 DUP4 PUSH2 0x1CAC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x781F2E39 PUSH1 0xE0 SHL DUP2 MSTORE SWAP4 DUP5 SWAP4 PUSH2 0x984 SWAP4 SWAP1 SWAP2 PUSH1 0x4 DUP7 ADD PUSH2 0x1BD0 JUMP JUMPDEST PUSH4 0x340C473D PUSH1 0xE1 SHL PUSH1 0x0 MSTORE PUSH1 0x4 DUP5 SWAP1 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1DDC PUSH2 0x15F6 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP2 PUSH32 0x37F248F492286AB572E2A1EE0BD5315F2AAE54A08B5871B294D657F3A1F1D007 DUP4 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x40 DUP2 MSTORE PUSH2 0x1E1C PUSH1 0x60 DUP3 PUSH2 0x44F JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP3 PUSH2 0x1901 PUSH1 0xF0 SHL DUP5 MSTORE PUSH1 0x22 DUP4 ADD MSTORE PUSH1 0x42 DUP3 ADD MSTORE PUSH1 0x42 DUP2 MSTORE PUSH2 0x15CA PUSH1 0x62 DUP3 PUSH2 0x44F JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ISZERO PUSH2 0x1F33 JUMPI PUSH1 0x40 MLOAD SWAP3 PUSH1 0x4 DUP5 ADD SWAP5 PUSH1 0x24 DUP6 ADD SWAP6 PUSH1 0x44 DUP7 ADD SWAP3 DUP6 EXTCODESIZE ISZERO PUSH2 0x1EB3 JUMPI POP SWAP2 DUP7 SWAP4 SWAP2 PUSH1 0x20 SWAP6 SWAP4 PUSH4 0xB135D3F PUSH1 0xE1 SHL DUP9 MSTORE MSTORE PUSH1 0x40 DUP5 MSTORE DUP2 MLOAD DUP6 ADD DUP1 SWAP3 PUSH1 0x4 GAS STATICCALL SWAP4 PUSH1 0x44 RETURNDATASIZE ADD SWAP2 GAS STATICCALL SWAP2 MLOAD PUSH4 0xB135D3F PUSH1 0xE1 SHL EQ SWAP2 AND AND SWAP1 JUMP JUMPDEST SWAP8 SWAP7 POP POP SWAP1 POP DUP2 MLOAD DUP1 PUSH1 0x40 EQ PUSH2 0x1F0E JUMPI PUSH1 0x41 EQ PUSH2 0x1ED0 JUMPI POP POP POP POP JUMP JUMPDEST PUSH1 0x20 SWAP3 SWAP4 SWAP6 POP PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x0 BYTE DUP4 MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 MSTORE JUMPDEST PUSH1 0x0 MSTORE ADD MLOAD PUSH1 0x40 MSTORE PUSH1 0x20 PUSH1 0x1 PUSH1 0x80 PUSH1 0x0 DUP3 GAS STATICCALL MLOAD XOR PUSH1 0x60 SHL RETURNDATASIZE GT SWAP2 PUSH1 0x0 PUSH1 0x60 MSTORE PUSH1 0x40 MSTORE JUMP JUMPDEST POP PUSH1 0x20 SWAP3 SWAP4 SWAP6 POP PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x1B DUP2 PUSH1 0xFF SHR ADD DUP5 MSTORE PUSH1 0x1 DUP1 PUSH1 0xFF SHL SUB AND PUSH1 0x60 MSTORE PUSH2 0x1EE9 JUMP JUMPDEST POP POP POP POP PUSH1 0x0 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x484 PUSH1 0x1 PUSH1 0x2D PUSH1 0x40 MLOAD DUP1 SWAP6 PUSH13 0x1131B430B63632B733B2911D11 PUSH1 0x99 SHL PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x1F72 DUP2 MLOAD DUP1 SWAP3 PUSH1 0x20 DUP7 DUP7 ADD SWAP2 ADD PUSH2 0xA0E JUMP JUMPDEST DUP2 ADD PUSH1 0x11 PUSH1 0xF9 SHL DUP4 DUP3 ADD MSTORE SUB ADD PUSH1 0x1E NOT DUP2 ADD DUP6 MSTORE ADD DUP4 PUSH2 0x44F JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 LT ISZERO PUSH2 0x1110 JUMPI PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP2 SWAP1 PUSH2 0x1FBF DUP5 SWAP3 DUP3 DUP2 MLOAD SWAP5 DUP6 SWAP3 ADD PUSH2 0xA0E JUMP JUMPDEST ADD SWAP1 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x244 JUMPI MLOAD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP1 PUSH1 0x0 SWAP4 PUSH1 0xA0 DUP3 ADD SWAP5 DUP6 MLOAD PUSH32 0x7FFFFFFF800000007FFFFFFFFFFFFFFFDE737D56D38BCF4279DCE5617E3192A8 LT PUSH2 0x21B3 JUMPI PUSH1 0x20 DUP4 ADD SWAP2 PUSH32 0xFF1A2A9176D650E4A99DEDB58F1793003935130579FE17B5A3F698AC5B00E634 PUSH2 0x2048 DUP5 MLOAD PUSH1 0x60 DUP8 ADD MLOAD PUSH2 0x2042 DUP2 PUSH2 0x12B7 JUMP JUMPDEST SWAP2 PUSH2 0x2340 JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD KECCAK256 SUB PUSH2 0x21BC JUMPI PUSH2 0x2060 PUSH2 0x2065 SWAP2 PUSH2 0x21C6 JUMP JUMPDEST PUSH2 0x1F3C JUMP JUMPDEST PUSH2 0x207A DUP4 MLOAD PUSH1 0x40 DUP7 ADD MLOAD PUSH2 0x2042 DUP5 MLOAD DUP3 PUSH2 0x12D3 JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 PUSH1 0x20 DUP2 MLOAD SWAP2 ADD KECCAK256 SUB PUSH2 0x21B3 JUMPI PUSH1 0x1 PUSH1 0xF8 SHL PUSH1 0x1 PUSH1 0xF8 SHL PUSH2 0x20B3 PUSH2 0x20A5 DUP7 MLOAD PUSH2 0x1F8D JUMP JUMPDEST MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 JUMP JUMPDEST AND SUB PUSH2 0x21B3 JUMPI PUSH2 0x20D0 PUSH1 0x20 SWAP3 PUSH1 0x0 SWAP3 POP MLOAD PUSH1 0x40 MLOAD SWAP2 DUP3 DUP1 SWAP3 PUSH2 0xEAE JUMP JUMPDEST SUB SWAP1 PUSH1 0x2 GAS STATICCALL ISZERO PUSH2 0x21AE JUMPI PUSH1 0x20 PUSH1 0x0 PUSH2 0x2106 DUP2 MLOAD PUSH2 0x20FA DUP6 MLOAD PUSH2 0x225 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 DUP9 DUP5 ADD PUSH2 0x1FA9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 DUP1 SWAP3 PUSH2 0xEAE JUMP JUMPDEST SUB SWAP1 PUSH1 0x2 GAS STATICCALL ISZERO PUSH2 0x21AE JUMPI PUSH1 0x80 PUSH1 0x0 MLOAD SWAP2 ADD SWAP4 PUSH1 0x0 DUP1 DUP7 MLOAD DUP6 PUSH2 0x2159 DUP6 MLOAD PUSH2 0x225 DUP11 PUSH1 0x40 MLOAD SWAP5 DUP6 SWAP4 PUSH1 0x20 DUP6 ADD SWAP8 DUP13 DUP10 SWAP2 SWAP3 PUSH1 0x80 SWAP4 SWAP7 SWAP6 SWAP5 SWAP2 SWAP7 PUSH1 0xA0 DUP5 ADD SWAP8 DUP5 MSTORE PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x100 GAS STATICCALL SWAP5 PUSH2 0x2169 PUSH2 0x1329 JUMP JUMPDEST DUP1 MLOAD SWAP7 DUP1 PUSH2 0x21A5 JUMPI JUMPDEST PUSH2 0x2185 JUMPI POP PUSH2 0x4F3 SWAP6 POP MLOAD SWAP1 MLOAD SWAP2 PUSH2 0x222D JUMP JUMPDEST PUSH1 0x1 SWAP7 PUSH2 0x21A1 SWAP7 POP DUP2 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP6 POP ADD SWAP3 POP PUSH2 0x1FC7 SWAP2 POP POP JUMP JUMPDEST EQ SWAP1 JUMP JUMPDEST POP DUP7 ISZERO ISZERO PUSH2 0x2172 JUMP JUMPDEST PUSH2 0x1F9D JUMP JUMPDEST SWAP5 POP POP POP POP POP SWAP1 JUMP JUMPDEST POP SWAP5 POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4F3 SWAP2 PUSH2 0x21D8 PUSH1 0x60 DUP4 PUSH2 0x44F JUMP JUMPDEST PUSH1 0x40 DUP3 MSTORE PUSH32 0x4142434445464748494A4B4C4D4E4F505152535455565758595A616263646566 PUSH1 0x20 DUP4 ADD MSTORE PUSH32 0x6768696A6B6C6D6E6F707172737475767778797A303132333435363738392D5F PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x23EC JUMP JUMPDEST SWAP4 SWAP2 SWAP1 SWAP3 SWAP4 DUP4 ISZERO DUP1 ISZERO PUSH2 0x231D JUMPI JUMPDEST DUP1 ISZERO PUSH2 0x2315 JUMPI JUMPDEST DUP1 ISZERO PUSH2 0x22FD JUMPI JUMPDEST PUSH2 0x22F3 JUMPI PUSH2 0x2257 DUP4 DUP7 PUSH2 0x2494 JUMP JUMPDEST ISZERO PUSH2 0x22F3 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 ADD MSTORE PUSH1 0x20 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH32 0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC63254F PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 PUSH1 0xC0 DUP2 PUSH1 0x5 PUSH1 0x0 NOT STATICCALL ISZERO PUSH2 0x244 JUMPI PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP5 PUSH2 0x22ED SWAP4 DUP7 PUSH2 0x22E7 SWAP5 MLOAD DUP2 DUP2 DUP10 MULMOD SWAP5 MULMOD SWAP2 PUSH2 0x256F JUMP JUMPDEST SWAP2 PUSH2 0xF20 JUMP JUMPDEST SWAP1 ADDMOD ISZERO SWAP1 JUMP JUMPDEST POP POP POP POP POP PUSH1 0x0 SWAP1 JUMP JUMPDEST POP PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 LT ISZERO PUSH2 0x2249 JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0x2242 JUMP JUMPDEST POP PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 LT ISZERO PUSH2 0x223B JUMP JUMPDEST DUP2 PUSH1 0x40 MLOAD SWAP2 DUP3 CALLDATACOPY KECCAK256 SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 SWAP5 SWAP4 SWAP3 SWAP1 DUP4 DUP2 GT ISZERO PUSH2 0x23B2 JUMPI JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x23AA JUMPI JUMPDEST POP DUP3 DUP2 LT PUSH2 0x2367 JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP5 POP SWAP2 DUP3 SWAP1 SUB SWAP2 ADD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND JUMPDEST DUP2 DUP2 ADD MLOAD DUP6 DUP3 ADD MSTORE PUSH1 0x1F NOT ADD SWAP1 DUP2 ISZERO PUSH2 0x2394 JUMPI SWAP1 PUSH2 0x237B JUMP JUMPDEST POP POP PUSH1 0x40 DUP2 DUP5 ADD PUSH1 0x0 PUSH1 0x20 DUP3 ADD MSTORE ADD PUSH1 0x40 MSTORE DUP3 MSTORE JUMP JUMPDEST SWAP1 POP CODESIZE PUSH2 0x235A JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x2351 JUMP JUMPDEST SWAP1 PUSH2 0x23C4 DUP3 PUSH2 0x486 JUMP JUMPDEST PUSH2 0x23D1 PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x44F JUMP JUMPDEST DUP3 DUP2 MSTORE DUP1 SWAP3 PUSH2 0x23E2 PUSH1 0x1F NOT SWAP2 PUSH2 0x486 JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST SWAP1 DUP2 MLOAD ISZERO PUSH2 0x248A JUMPI SWAP1 PUSH2 0x2419 PUSH2 0x2414 PUSH2 0x240D PUSH2 0x2408 DUP5 MLOAD PUSH2 0x1C34 JUMP JUMPDEST PUSH2 0x12C5 JUMP JUMPDEST PUSH1 0x3 SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH2 0x23BA JUMP JUMPDEST SWAP2 PUSH1 0x20 DUP4 ADD SWAP1 DUP3 DUP1 MLOAD ADD SWAP1 PUSH1 0x20 DUP3 ADD SWAP3 DUP4 MLOAD SWAP5 PUSH1 0x0 DUP6 MSTORE JUMPDEST DUP4 DUP2 LT PUSH2 0x2440 JUMPI POP POP POP POP MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x4 SWAP2 ADD SWAP2 PUSH1 0x1 PUSH1 0x3F DUP5 MLOAD DUP3 DUP3 DUP3 PUSH1 0x12 SHR AND DUP9 ADD ADD MLOAD DUP5 MSTORE8 DUP3 DUP3 DUP3 PUSH1 0xC SHR AND DUP9 ADD ADD MLOAD DUP4 DUP6 ADD MSTORE8 DUP3 DUP3 DUP3 PUSH1 0x6 SHR AND DUP9 ADD ADD MLOAD PUSH1 0x2 DUP6 ADD MSTORE8 AND DUP6 ADD ADD MLOAD PUSH1 0x3 DUP3 ADD MSTORE8 ADD SWAP1 PUSH2 0x2431 JUMP JUMPDEST POP POP PUSH2 0x4F3 PUSH2 0x1314 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP2 LT DUP1 ISZERO SWAP1 PUSH2 0x2557 JUMPI JUMPDEST DUP1 ISZERO PUSH2 0x2546 JUMPI JUMPDEST PUSH2 0x253F JUMPI PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 PUSH32 0x5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B SWAP1 DUP3 SWAP1 DUP2 PUSH32 0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC DUP3 MULMOD SWAP1 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP2 DUP2 DUP1 MULMOD MULMOD ADDMOD ADDMOD SWAP1 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP1 MULMOD EQ SWAP1 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP1 JUMP JUMPDEST POP DUP1 ISZERO DUP1 ISZERO PUSH2 0x24B4 JUMPI POP DUP2 ISZERO PUSH2 0x24B4 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP3 LT ISZERO PUSH2 0x24AD JUMP JUMPDEST SWAP1 SWAP3 PUSH1 0x0 SWAP3 SWAP1 DUP4 PUSH1 0xFF DUP2 DUP5 ISZERO DUP1 PUSH2 0x2B66 JUMPI JUMPDEST PUSH2 0x2B5B JUMPI PUSH2 0x258F DUP9 DUP8 PUSH2 0x2B6E JUMP JUMPDEST SWAP3 SWAP1 SWAP2 DUP3 ISZERO DUP1 PUSH2 0x2B53 JUMPI JUMPDEST PUSH2 0x2B18 JUMPI JUMPDEST POP DUP6 DUP2 SHR PUSH1 0x2 DUP7 PUSH1 0xFE SHR AND ADD JUMPDEST ISZERO PUSH2 0x2AFF JUMPI PUSH1 0x1 DUP7 DUP3 SHR AND PUSH1 0x2 DUP7 DUP4 SHR PUSH1 0x1 SHL AND ADD PUSH1 0x1 DUP2 EQ PUSH2 0x2AB4 JUMPI JUMPDEST PUSH1 0x2 DUP2 EQ PUSH2 0x2AA7 JUMPI JUMPDEST PUSH1 0x3 EQ PUSH2 0x2A9A JUMPI JUMPDEST PUSH1 0x1 SWAP9 PUSH1 0x0 NOT SWAP2 SWAP1 SWAP2 ADD SWAP7 SWAP5 SWAP6 SWAP5 DUP10 SWAP5 SWAP4 SWAP3 SWAP2 JUMPDEST DUP9 PUSH1 0x0 NOT GT PUSH2 0x266D JUMPI POP POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD SWAP2 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x20 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MSTORE PUSH1 0x20 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x2 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH1 0x60 SHL SUB PUSH1 0x60 SHL NOT PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 PUSH1 0xC0 DUP2 PUSH1 0x5 PUSH1 0x0 NOT STATICCALL ISZERO PUSH2 0x244 JUMPI SWAP1 MLOAD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 MULMOD SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 SWAP7 SWAP8 SWAP9 PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH1 0x60 SHL SUB PUSH1 0x60 SHL NOT DUP7 PUSH1 0x2 MULMOD SWAP1 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP3 DUP1 MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP2 DUP4 MULMOD SWAP3 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP3 SWAP1 MULMOD SWAP2 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP2 SWAP1 DUP16 DUP3 DUP2 DUP4 ADDMOD SWAP2 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 DUP3 SUB SWAP1 ADDMOD MULMOD PUSH1 0x3 MULMOD SWAP9 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP4 MULMOD SWAP13 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 MULMOD SWAP2 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP1 DUP3 PUSH1 0x2 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP12 DUP1 MULMOD ADDMOD SWAP9 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 DUP3 SWAP1 DUP2 SUB DUP12 ADDMOD SWAP1 MULMOD SWAP7 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP9 SWAP1 DUP3 SWAP1 DUP5 MULMOD ADDMOD SWAP7 DUP12 PUSH1 0x2 DUP13 PUSH1 0x1 DUP14 DUP5 SHR AND SWAP3 SHR PUSH1 0x1 SHL AND ADD DUP1 ISZERO PUSH2 0x2A7D JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x2A32 JUMPI JUMPDEST PUSH1 0x2 DUP2 EQ PUSH2 0x2A27 JUMPI JUMPDEST PUSH1 0x3 EQ PUSH2 0x2A1E JUMPI JUMPDEST DUP3 ISZERO PUSH2 0x2A0B JUMPI PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP9 SWAP1 DUP3 SWAP1 DUP16 SWAP1 MULMOD ADDMOD SWAP1 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP10 DUP3 SUB SWAP1 DUP3 SWAP1 DUP6 SWAP1 MULMOD ADDMOD SWAP8 DUP2 ISZERO PUSH2 0x28D1 JUMPI JUMPDEST PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP10 DUP1 MULMOD SWAP9 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP11 MULMOD SWAP3 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP11 SWAP1 MULMOD SWAP13 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP5 SWAP1 MULMOD SWAP9 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP1 DUP3 PUSH1 0x2 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP6 DUP2 SUB DUP2 DUP7 DUP1 MULMOD ADDMOD ADDMOD SWAP8 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP4 DUP5 SWAP2 MULMOD SWAP2 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 DUP3 SWAP1 DUP11 DUP3 SUB SWAP1 ADDMOD MULMOD ADDMOD SWAP5 SWAP9 JUMPDEST PUSH1 0x0 NOT ADD SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x25EF JUMP JUMPDEST DUP9 PUSH2 0x27F4 JUMPI SWAP11 SWAP2 SWAP8 POP SWAP1 SWAP6 SWAP1 POP PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP2 PUSH1 0x2 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT MULMOD SWAP11 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP13 DUP1 MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP2 DUP14 MULMOD SWAP13 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP3 SWAP1 MULMOD SWAP12 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP2 DUP12 DUP2 SUB DUP3 ADDMOD SWAP1 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP13 SWAP1 ADDMOD MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 PUSH1 0x3 MULMOD SWAP2 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP14 MULMOD SWAP9 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 MULMOD SWAP12 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP1 DUP3 PUSH1 0x2 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP5 DUP1 MULMOD ADDMOD SWAP12 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP4 DUP5 SWAP2 MULMOD SWAP2 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 DUP3 SWAP1 DUP15 DUP3 SUB SWAP1 ADDMOD SWAP1 MULMOD ADDMOD SWAP5 PUSH2 0x28C0 JUMP JUMPDEST PUSH1 0x1 SWAP13 POP SWAP1 SWAP11 DUP13 SWAP9 POP SWAP1 SWAP7 POP SWAP1 POP PUSH2 0x28C0 JUMP JUMPDEST POP POP DUP4 DUP6 PUSH2 0x27B3 JUMP JUMPDEST DUP6 SWAP3 POP DUP5 SWAP2 POP PUSH2 0x27AB JUMP JUMPDEST PUSH32 0x6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296 SWAP3 POP PUSH32 0x4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5 SWAP2 POP PUSH2 0x27A2 JUMP JUMPDEST POP POP POP SWAP10 SWAP6 SWAP9 SWAP5 PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH1 0x60 SHL SUB PUSH1 0x60 SHL NOT SUB SWAP5 PUSH2 0x28C0 JUMP JUMPDEST SWAP3 POP DUP1 SWAP7 POP SWAP6 DUP2 SWAP3 PUSH2 0x25DB JUMP JUMPDEST SWAP7 SWAP8 POP DUP8 SWAP7 DUP10 SWAP5 POP PUSH2 0x25D3 JUMP JUMPDEST PUSH32 0x6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296 SWAP9 POP PUSH32 0x4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5 SWAP5 POP PUSH2 0x25CA JUMP JUMPDEST PUSH1 0x0 NOT ADD PUSH1 0x1 DUP7 DUP3 SHR AND PUSH1 0x2 DUP7 DUP4 SHR PUSH1 0x1 SHL AND ADD PUSH2 0x25AC JUMP JUMPDEST SWAP5 SWAP6 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 SWAP7 DUP3 SUB SWAP1 ADDMOD SWAP5 DUP5 DUP7 ISZERO DUP1 PUSH2 0x2B4B JUMPI JUMPDEST ISZERO PUSH2 0x259F JUMPI SWAP9 POP POP POP POP POP POP POP POP POP SWAP1 JUMP JUMPDEST POP PUSH1 0x1 PUSH2 0x2B39 JUMP JUMPDEST POP DUP4 ISZERO PUSH2 0x259A JUMP JUMPDEST SWAP7 POP POP POP POP POP POP POP SWAP1 JUMP JUMPDEST POP DUP4 ISZERO PUSH2 0x2581 JUMP JUMPDEST SWAP2 SWAP1 PUSH32 0x6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296 PUSH32 0x4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5 SWAP2 DUP1 ISZERO PUSH2 0x2D22 JUMPI DUP5 PUSH2 0xC5A SWAP5 SWAP6 DUP4 EQ DUP1 PUSH2 0x2D19 JUMPI JUMPDEST ISZERO PUSH2 0x2D04 JUMPI POP PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 POP DUP3 PUSH1 0x2 MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP2 DUP1 MULMOD SWAP3 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP5 DUP5 MULMOD SWAP2 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP6 SWAP1 MULMOD SWAP3 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP2 SWAP1 DUP2 PUSH1 0x1 DUP3 ADDMOD SWAP1 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 PUSH32 0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFE SWAP1 ADDMOD MULMOD PUSH1 0x3 MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP1 DUP5 PUSH1 0x2 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP4 DUP1 MULMOD ADDMOD SWAP3 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT PUSH1 0x1 DUP7 MULMOD SWAP6 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 PUSH1 0x1 SWAP1 MULMOD SWAP5 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP4 DUP5 SWAP2 MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP2 SUB SWAP3 SWAP1 SWAP2 DUP3 SWAP1 DUP7 DUP3 SUB SWAP1 ADDMOD SWAP1 MULMOD ADDMOD SWAP1 PUSH2 0x2E44 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 PUSH2 0x2D10 SWAP4 PUSH2 0x2D28 JUMP JUMPDEST SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0x2E44 JUMP JUMPDEST POP DUP2 DUP5 EQ PUSH2 0x2BC7 JUMP JUMPDEST POP SWAP3 POP SWAP1 JUMP JUMPDEST SWAP2 SWAP4 SWAP1 DUP1 ISZERO PUSH2 0x2E3B JUMPI PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP2 SUB SWAP4 DUP5 SWAP1 DUP3 SWAP1 PUSH1 0x1 SWAP1 MULMOD ADDMOD SWAP4 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP4 DUP3 SUB SWAP1 DUP3 SWAP1 PUSH1 0x1 SWAP1 MULMOD ADDMOD SWAP3 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP5 DUP1 MULMOD SWAP4 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP6 MULMOD SWAP3 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP6 SWAP1 MULMOD SWAP5 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP1 DUP8 PUSH1 0x2 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP7 DUP2 SUB DUP2 DUP6 DUP1 MULMOD ADDMOD ADDMOD SWAP6 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP3 DUP4 SWAP1 DUP7 SWAP1 MULMOD SWAP2 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 DUP3 SWAP1 DUP10 DUP3 SUB SWAP1 ADDMOD MULMOD ADDMOD SWAP3 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 PUSH1 0x1 MULMOD SWAP2 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 PUSH1 0x1 MULMOD SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP2 POP DUP2 SWAP1 JUMP JUMPDEST SWAP2 SWAP1 SWAP3 PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MSTORE PUSH1 0x20 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH1 0x60 SHL SUB PUSH1 0x60 SHL NOT PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x20 DUP2 PUSH1 0xC0 DUP2 PUSH1 0x5 PUSH1 0x0 NOT STATICCALL ISZERO PUSH2 0x244 JUMPI MLOAD SWAP3 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP5 SWAP1 MULMOD SWAP3 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 SWAP1 DUP3 SWAP1 DUP1 MULMOD SWAP1 MULMOD SWAP2 JUMP INVALID MOD 0x27 0xF7 0x2A CREATE 0xE6 DELEGATECALL SLT NOT JUMPDEST 0xD DUP11 0xCB 0xE4 CODESIZE 0xB2 DUP1 SWAP1 0xDD SLOAD JUMPDEST PUSH30 0x2331FCCF77723561F500FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAAD 0xA7 OR SWAP15 DUP5 RETURN 0xB9 0xCA 0xC2 0xFC PUSH4 0x25513608 SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC0627F72AF0E6F412195B0D DUP11 0xCB 0xE4 CODESIZE 0xB2 DUP1 SWAP1 0xDD SLOAD JUMPDEST PUSH30 0x2331FCCF77723561F501A2646970667358221220890C9D20B5FC4DF99BDE 0xD2 SLOAD BLOBHASH SLT ISZERO DUP11 SAR SWAP4 EXTCODEHASH AND DUP15 0x2E DUP5 RETURNDATASIZE 0xC BYTE ISZERO LOG2 SELFDESTRUCT ORIGIN 0xCE DUP13 PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER CODESIZE LT SWAP15 0xDC 0x26 0xE1 PUSH7 0xB5579352CE56A5 ADDMOD SGT OR PUSH31 0xB25208FD90D61F2F3783862202200000000000000000000000000000000000 ", + "sourceMap": "1195:14720:16:-:0;;;;;;1279:4:8;1255:31;;1195:14720:16;;;;;;;:::i;:::-;5301:1;1195:14720;;-1:-1:-1;;1195:14720:16;;-1:-1:-1;1195:14720:16;;;;;;;;;;-1:-1:-1;1195:14720:16;5325:22;;1195:14720;;5325:22;;;;;;:::i;:::-;5313:34;;;:::i;:::-;;;;;:::i;:::-;;11593:89:18;1195:14720:16;-1:-1:-1;9026:3:18;1195:14720:16;;9007:17:18;;;;;1195:14720:16;9049:9:18;;;;:::i;:::-;;1195:14720:16;9049:22:18;;:48;;;9026:3;9045:128;;1195:14720:16;9191:9:18;;;;:::i;:::-;;1195:14720:16;9191:22:18;:73;;;9026:3;9187:157;;9375:9;;;;:::i;:::-;;;9386:17;-1:-1:-1;;1195:14720:16;;;;5301:1;1195:14720;;;;;;:::i;:::-;;;9792:51:18;;1195:14720:16;;;:::i;:::-;;;-1:-1:-1;;1195:14720:16;5301:1;1195:14720;;;-1:-1:-1;1195:14720:16;;;9954:14:18;1195:14720:16;;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;5301:1;1195:14720;;;;;;;;;9026:3:18;1195:14720:16;;;;;;;;;;;9026:3:18;1195:14720:16;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1195:14720:16;;9999:22:18;1195:14720:16;5301:1;1195:14720;;;-1:-1:-1;1195:14720:16;;;;-1:-1:-1;;;7148:33:18;1195:14720:16;;;;;;;;;;;;;;;9999:22:18;;;;;:::i;:::-;;;;1195:14720:16;8996:9:18;;1195:14720:16;;;;;;;;;;;;;;;;-1:-1:-1;1195:14720:16;;-1:-1:-1;1195:14720:16;;-1:-1:-1;1195:14720:16;;;;;;;;5301:1;1195:14720;;;;-1:-1:-1;;;;;;;;;;;1195:14720:16;;9999:22:18;1195:14720:16;;;;;;;;;;;;;;;;;;;;;;;;7148:33:18;1195:14720:16;;;;;;;;;;;;;;;5301:1;1195:14720;;;;;;;;;;;;;;;;;-1:-1:-1;1195:14720:16;;-1:-1:-1;1195:14720:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1195:14720:16;;5301:1;1195:14720;;;;;;-1:-1:-1;1195:14720:16;;;;;;;;-1:-1:-1;1195:14720:16;;;;;-1:-1:-1;1195:14720:16;;;;;;;;;;;;-1:-1:-1;1195:14720:16;;;;;-1:-1:-1;1195:14720:16;9792:51:18;1195:14720:16;;-1:-1:-1;;;9824:19:18;;1195:14720:16;;;9824:19:18;;;;;;:::i;:::-;;;;1195:14720:16;;;;-1:-1:-1;1195:14720:16;;;;;-1:-1:-1;1195:14720:16;9187:157:18;9319:9;;9291:38;9319:9;;;:::i;:::-;;1195:14720:16;;-1:-1:-1;;;9291:38:18;;1195:14720:16;;;9291:38:18;;;;:::i;9191:73::-;9233:9;;;;;:::i;:::-;;1195:14720:16;;;;;;;;;;;;9191:73:18;-1:-1:-1;;;;;;;9191:73:18;;1195:14720:16;;;;;;7148:33:18;1195:14720:16;;;;;;9045:128:18;9148:9;;9124:34;9148:9;;;:::i;:::-;;1195:14720:16;;-1:-1:-1;;;9124:34:18;;1195:14720:16;;;9124:34:18;;;;:::i;9049:48::-;9075:9;;;;;;:::i;:::-;;1195:14720:16;9075:22:18;;9049:48;;9007:17;;;11593:89;1195:14720:16;;;;;;;;1255:31:8;1195:14720:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1195:14720:16;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;1195:14720:16;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;1195:14720:16;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;7148:33:18;1195:14720:16;;;;;;;:::o" + }, + "deployedBytecode": { + "functionDebugData": { + "abi_decode_array_bytes_calldata_dyn_calldata": { + "entryPoint": 1390, + "id": null, + "parameterSlots": 1, + "returnSlots": 2 + }, + "abi_decode_array_bytes_dyn": { + "entryPoint": 4271, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_available_length_array_bytes_dyn": { + "entryPoint": 4155, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_decode_available_length_bytes": { + "entryPoint": 1185, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_decode_bytes": { + "entryPoint": 1240, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_bytes32": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + }, + "abi_decode_bytes_calldata": { + "entryPoint": 758, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_bytes_fromMemory": { + "entryPoint": 6515, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_struct_PackedUserOperation_calldata": { + "entryPoint": 914, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_struct_SignatureWrapper": { + "entryPoint": 6324, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_struct_WebAuthnAuth_fromMemory": { + "entryPoint": 6581, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_uint256": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + }, + "abi_decode_uint256_fromMemory": { + "entryPoint": 8135, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_uint256t_bytes_calldata": { + "entryPoint": 3115, + "id": null, + "parameterSlots": 1, + "returnSlots": 3 + }, + "abi_decode_uint256t_uint256_fromMemory": { + "entryPoint": 6493, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_encode_address": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_address_uint256_bytes32_bytes32_bytes32_uint256_bytes32_bytes32": { + "entryPoint": null, + "id": null, + "parameterSlots": 9, + "returnSlots": 1 + }, + "abi_encode_bytes": { + "entryPoint": 2646, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_bytes32_address": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_bytes32_bytes32": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_bytes32_uint256_uint256_uint256_uint256": { + "entryPoint": null, + "id": null, + "parameterSlots": 6, + "returnSlots": 1 + }, + "abi_encode_bytes_calldata": { + "entryPoint": 7340, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_bytes_calldata_ptr": { + "entryPoint": 4870, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_bytes_calldata_to_bytes": { + "entryPoint": 7087, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_bytes_memory_ptr": { + "entryPoint": 3758, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_bytes_to_bytes": { + "entryPoint": 2609, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_packed_bytes_bytes32": { + "entryPoint": 8105, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_uint256": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_uint256_11558": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_uint256_bytes_calldata_bytes": { + "entryPoint": 7120, + "id": null, + "parameterSlots": 5, + "returnSlots": 1 + }, + "abi_encode_uint256_uint256": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "access_calldata_tail_bytes_calldata": { + "entryPoint": 4022, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "allocate_and_zero_memory_array_string": { + "entryPoint": 9146, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "allocate_memory": { + "entryPoint": 1141, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + }, + "allocate_memory_array_bytes": { + "entryPoint": 4884, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + }, + "array_allocation_size_bytes": { + "entryPoint": 1158, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_dataslot_bytes_storage": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "bytes_concat_bytes4_bytes32": { + "entryPoint": 4832, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "calldata_array_index_access_struct_Call_calldata_dyn_calldata": { + "entryPoint": 4732, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "calldata_array_index_range_access_bytes_calldata": { + "entryPoint": 4126, + "id": null, + "parameterSlots": 3, + "returnSlots": 2 + }, + "checked_add_uint256": { + "entryPoint": 4819, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_add_uint256_11547": { + "entryPoint": 4776, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "checked_add_uint256_11598": { + "entryPoint": 4791, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "checked_add_uint256_11607": { + "entryPoint": 4805, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "checked_div_uint256": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "checked_mul_uint256": { + "entryPoint": 7220, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "checked_sub_uint256": { + "entryPoint": 3872, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "clean_up_bytearray_end_slots_bytes_storage": { + "entryPoint": 5851, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "cleanup_bool": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_bytes4": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "clear_storage_range_bytes1": { + "entryPoint": 5828, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "convert_bytes_to_fixedbytes_from_bytes_calldata_to_bytes4": { + "entryPoint": 4072, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "convert_bytes_to_fixedbytes_from_bytes_to_bytes32": { + "entryPoint": 6458, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "convert_bytes_to_fixedbytes_from_bytes_to_bytes4": { + "entryPoint": 4373, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "copy_memory_to_memory_with_cleanup": { + "entryPoint": 2574, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "external_fun_REPLAYABLE_NONCE_KEY": { + "entryPoint": 3086, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_addOwnerAddress": { + "entryPoint": 637, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_addOwnerPublicKey": { + "entryPoint": 1325, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_canSkipChainIdValidation": { + "entryPoint": 3281, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_domainSeparator": { + "entryPoint": 3731, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_eip712Domain": { + "entryPoint": 2925, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_entryPoint": { + "entryPoint": 3436, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_execute": { + "entryPoint": 3479, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_executeBatch": { + "entryPoint": 1651, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_executeWithoutChainIdValidation": { + "entryPoint": 1483, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_getSignatureLifetime": { + "entryPoint": 885, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_getUserOpHashWithoutChainId": { + "entryPoint": 3339, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_implementation": { + "entryPoint": 2198, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_initialize": { + "entryPoint": 2252, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_isOwnerAddress": { + "entryPoint": 3397, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_isOwnerBytes": { + "entryPoint": 1270, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_isOwnerPublicKey": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_isValidSignature": { + "entryPoint": 803, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_nextOwnerIndex": { + "entryPoint": 3688, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_ownerAtIndex": { + "entryPoint": 3230, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_ownerCount": { + "entryPoint": 585, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_proxiableUUID": { + "entryPoint": 2118, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_removeLastOwner": { + "entryPoint": 3587, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_removeOwnerAtIndex": { + "entryPoint": 3166, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_removedOwnersCount": { + "entryPoint": 1798, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_replaySafeHash": { + "entryPoint": 3658, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_signedStaticCall": { + "entryPoint": 2663, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_upgradeToAndCall": { + "entryPoint": 1841, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "external_fun_validateUserOp": { + "entryPoint": 929, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "extract_byte_array_length": { + "entryPoint": 4953, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "extract_returndata": { + "entryPoint": 4905, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + }, + "extract_used_part_and_set_length_of_short_byte_array": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "finalize_allocation": { + "entryPoint": 1103, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "fun__isValidSignature": { + "entryPoint": 6737, + "id": 7371, + "parameterSlots": 3, + "returnSlots": 1 + }, + "fun_addOwnerAtIndex": { + "entryPoint": 5920, + "id": 8000, + "parameterSlots": 2, + "returnSlots": 0 + }, + "fun_call": { + "entryPoint": 6979, + "id": 7249, + "parameterSlots": 3, + "returnSlots": 0 + }, + "fun_calldataKeccak": { + "entryPoint": 9013, + "id": 160, + "parameterSlots": 2, + "returnSlots": 1 + }, + "fun_canSkipChainIdValidation": { + "entryPoint": 5216, + "id": 7222, + "parameterSlots": 1, + "returnSlots": 1 + }, + "fun_checkOwner": { + "entryPoint": 5783, + "id": 8091, + "parameterSlots": 0, + "returnSlots": 0 + }, + "fun_domainNameAndVersion": { + "entryPoint": 7011, + "id": 7397, + "parameterSlots": 0, + "returnSlots": 2 + }, + "fun_domainSeparator": { + "entryPoint": 5622, + "id": 6669, + "parameterSlots": 0, + "returnSlots": 1 + }, + "fun_ecAff_add": { + "entryPoint": 11118, + "id": 1773, + "parameterSlots": 2, + "returnSlots": 2 + }, + "fun_ecAff_isOnCurve": { + "entryPoint": 9364, + "id": 1685, + "parameterSlots": 2, + "returnSlots": 1 + }, + "fun_ecZZ_AddN": { + "entryPoint": 11560, + "id": 1544, + "parameterSlots": 4, + "returnSlots": 4 + }, + "fun_ecZZ_SetAff": { + "entryPoint": 11844, + "id": 1471, + "parameterSlots": 4, + "returnSlots": 2 + }, + "fun_ecZZ_mulmuladd_S_asm": { + "entryPoint": 9583, + "id": 1867, + "parameterSlots": 4, + "returnSlots": 1 + }, + "fun_ecdsa_verify": { + "entryPoint": 8749, + "id": 685, + "parameterSlots": 5, + "returnSlots": 1 + }, + "fun_eip712Hash": { + "entryPoint": 7636, + "id": 6690, + "parameterSlots": 1, + "returnSlots": 1 + }, + "fun_encode": { + "entryPoint": 9196, + "id": 2403, + "parameterSlots": 2, + "returnSlots": 1 + }, + "fun_encodeURL": { + "entryPoint": 8646, + "id": 2349, + "parameterSlots": 1, + "returnSlots": 1 + }, + "fun_getUserOpHashWithoutChainId": { + "entryPoint": 5347, + "id": 7170, + "parameterSlots": 1, + "returnSlots": 1 + }, + "fun_isOwnerAddress": { + "entryPoint": 5584, + "id": 7768, + "parameterSlots": 1, + "returnSlots": 1 + }, + "fun_isOwnerBytes": { + "entryPoint": 4716, + "id": 7804, + "parameterSlots": 1, + "returnSlots": 1 + }, + "fun_isValidSignature": { + "entryPoint": 3976, + "id": 6615, + "parameterSlots": 3, + "returnSlots": 1 + }, + "fun_isValidSignatureNow": { + "entryPoint": 7753, + "id": 6171, + "parameterSlots": 3, + "returnSlots": 1 + }, + "fun_onImplementation": { + "entryPoint": null, + "id": 2518, + "parameterSlots": 0, + "returnSlots": 1 + }, + "fun_ownerAtIndex": { + "entryPoint": 5011, + "id": 7819, + "parameterSlots": 1, + "returnSlots": 1 + }, + "fun_ownerCount": { + "entryPoint": 3917, + "id": 7849, + "parameterSlots": 0, + "returnSlots": 1 + }, + "fun_removeOwnerAtIndex": { + "entryPoint": 7357, + "id": 8067, + "parameterSlots": 3, + "returnSlots": 0 + }, + "fun_slice": { + "entryPoint": 9024, + "id": 2846, + "parameterSlots": 3, + "returnSlots": 1 + }, + "fun_validateUserOp_inner": { + "entryPoint": 4407, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "fun_verify": { + "entryPoint": 8150, + "id": 8477, + "parameterSlots": 4, + "returnSlots": 1 + }, + "increment_uint256": { + "entryPoint": 3961, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "mapping_index_access_mapping_uint256_bytes_storage_of_uint256": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "memory_array_index_access_bytes": { + "entryPoint": 8077, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "memory_array_index_access_bytes_dyn": { + "entryPoint": 4348, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "modifier_receiverFallback": { + "entryPoint": 5727, + "id": 2439, + "parameterSlots": 0, + "returnSlots": 0 + }, + "packed_hashed_bytes_calldata_uint256_to_bytes_uint": { + "entryPoint": 7164, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "packed_hashed_bytes_uint256_to_bytes_uint": { + "entryPoint": 3781, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "panic_error_0x11": { + "entryPoint": 3850, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x32": { + "entryPoint": 4326, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x41": { + "entryPoint": 1081, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "read_from_calldatat_address": { + "entryPoint": 4766, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "read_from_memoryt_bytes1": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "revert_forward": { + "entryPoint": 8093, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "shift_right_uint256_uint8": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "storage_set_to_zero_bytes": { + "entryPoint": 7244, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "string_concat_stringliteral_113c_string_stringliteral_6e9f": { + "entryPoint": 7996, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "update_storage_value_bool_to_bool": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "update_storage_value_offset_uint256_to_uint256": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "update_storage_value_offset_uint256_to_uint256_11546": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_address": { + "entryPoint": 620, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + } + }, + "generatedSources": [], + "immutableReferences": { + "2478": [ + { + "length": 32, + "start": 1900 + }, + { + "length": 32, + "start": 2138 + } + ] + }, + "linkReferences": {}, + "object": "60806040526004361015610015575b3661165f57005b60003560e01c8063066a1eb7146101e55780630db02622146101e05780630f0f3f24146101db5780631626ba7e146101d657806317452caa146101d157806319822f7c146101cc5780631ca5393f146101c757806329565e3b146101c25780632c2abd1e146101bd57806334fcd5be146101b857806336d9cf9b146101b35780634f1ef286146101ae57806352d1902d146101a95780635c60da1b146101a45780636f2de70e1461019f578063737bebdd1461019a57806384b0196e1461019557806388ce4c7c1461019057806389625b571461018b5780638ea69029146101865780639f9bcb3414610181578063a05bd44e1461017c578063a2e1a8d814610177578063b0d691fe14610172578063b61d27f61461016d578063b819736714610168578063ce1506be14610163578063d948fd2e1461015e5763f698da250361000e57610e93565b610e68565b610e4a565b610e03565b610d97565b610d6c565b610d45565b610d0b565b610cd1565b610c9e565b610c5e565b610c0e565b610b6d565b610a67565b6108cc565b610896565b610846565b610731565b610706565b610673565b6105cb565b61052d565b6104f6565b6103a1565b610375565b610323565b61027d565b610249565b3461024457604036600319011261024457602060ff6102386004356102336024359161022560405193849288840160209093929193604081019481520152565b03601f19810183528261044f565b610ec5565b54166040519015158152f35b600080fd5b34610244576000366003190112610244576020610264610f4d565b604051908152f35b6001600160a01b0381160361024457565b34610244576020366003190112610244576102f460043561029d8161026c565b6102a5611697565b6040519060018060a01b03166020820152602081526102c560408261044f565b600080516020612edf83398151915254906102df82610f79565b600080516020612edf83398151915255611720565b005b9181601f84011215610244578235916001600160401b038311610244576020838186019501011161024457565b34610244576040366003190112610244576004356024356001600160401b0381116102445760209161035c6103629236906004016102f6565b91610f88565b6040516001600160e01b03199091168152f35b346102445760003660031901126102445760206040516107088152f35b90816101209103126102445790565b34610244576060366003190112610244576004356001600160401b038111610244576103d1903690600401610392565b6044356024356f71727de22e5e9d8baf0edac6f37da031193301610429576103fd829161041494611137565b91610418575b506040519081529081906020820190565b0390f35b60009081803892335af15038610403565b6282b42960e81b60005260046000fd5b634e487b7160e01b600052604160045260246000fd5b90601f801991011681019081106001600160401b0382111761047057604052565b610439565b6040519061048460c08361044f565b565b6001600160401b03811161047057601f01601f191660200190565b9291926104ad82610486565b916104bb604051938461044f565b829481845281830111610244578281602093846000960137010152565b9080601f83011215610244578160206104f3933591016104a1565b90565b34610244576020366003190112610244576004356001600160401b0381116102445760ff61023861023360209336906004016104d8565b34610244576040366003190112610244576102f46024356102c5600435610552611697565b6040805160208101929092528101929092528160608101610225565b906020600319830112610244576004356001600160401b0381116102445760040160009280601f830112156105c7578135936001600160401b0385116105c457506020808301928560051b010111610244579190565b80fd5b8380fd5b6105d43661056e565b906f71727de22e5e9d8baf0edac6f37da03233036104295760005b828110156102f45760006106088260051b840184610fb6565b6106128183610fe8565b61061b81611460565b156106575750829161062e9136916104a1565b60208151910182305af1610640611329565b901561064f57506001016105ef565b602081519101fd5b631d8370a360e11b84526001600160e01b031916600452602483fd5b61067c3661056e565b906f71727de22e5e9d8baf0edac6f37da03233036106f9575b60005b8281106106a157005b806106f36106b2600193868661127c565b356106bc8161026c565b60206106c984888861127c565b01356106ed6106e66106dc868a8a61127c565b6040810190610fb6565b36916104a1565b91611b43565b01610698565b610701611697565b610695565b34610244576000366003190112610244576020600080516020612f3f83398151915254604051908152f35b6040366003190112610244576004356107498161026c565b6024356001600160401b038111610244576107689036906004016102f6565b90917f0000000000000000000000000000000000000000000000000000000000000000301461083857610799611697565b60018060a01b03163d6000526352d1902d600152600080516020612f1f833981519152602060016004601d855afa510361082a57807fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a28181600080516020612f1f8339815191525561080b57005b816000926040519485378338925af41561082157005b3d6000823e3d90fd5b6355299b496001526004601dfd5b639f03a0266000526004601cfd5b3461024457600036600319011261024457307f000000000000000000000000000000000000000000000000000000000000000003610838576020604051600080516020612f1f8339815191528152f35b3461024457600036600319011261024457600080516020612f1f833981519152546040516001600160a01b039091168152602090f35b6108d53661056e565b600080516020612edf8339815191525491826109fd576108f691369161103b565b9060005b82518110156109e757602061090f82856110fc565b51511415806109d1575b6109aa57602061092982856110fc565b51511480610988575b61095d5780610957610946600193866110fc565b519361095181610f79565b94611720565b016108fa565b61096a61098491846110fc565b5160405163bff1ac6560e01b815291829160048301610a56565b0390fd5b506001600160a01b036109a461099e83866110fc565b5161193a565b11610932565b6109b761098491846110fc565b516040516327755b9160e11b815291829160048301610a56565b5060406109de82856110fc565b51511415610919565b6102f482600080516020612edf83398151915255565b6302ed543d60e51b60005260046000fd5b60005b838110610a215750506000910152565b8181015183820152602001610a11565b90602091610a4a81518092818552858086019101610a0e565b601f01601f1916010190565b9060206104f3928181520190610a31565b34610244576020366003190112610244576004356001600160401b038111610244578060040160806003198336030112610244576044820135610aa9816112a8565b4211610b4657610ae0610acd610ac1610ae4936112e0565b60208151910120611dd4565b610ada6064860185610fb6565b91611a51565b1590565b610b3557600091610b03826024610afb869561129e565b930190610fb6565b90610b1360405180938193611306565b03915afa610b1f611329565b901561064f576104149060405191829182610a56565b638baa579f60e01b60005260046000fd5b610b52610b69916112a8565b630f88f04960e41b60005260045242602452604490565b6000fd5b3461024457600036600319011261024457610bad610bbb610b8c611b63565b604092919251938493600f60f81b855260e0602086015260e0850190610a31565b908382036040850152610a31565b466060830152306080830152600060a083015281810360c0830152602060605191828152019060809060005b818110610bf5575050500390f35b8251845285945060209384019390920191600101610be7565b346102445760003660031901126102445760206040516121058152f35b9060406003198301126102445760043591602435906001600160401b03821161024457610c5a916004016102f6565b9091565b3461024457610c6c36610c2b565b90610c75611697565b6001610c7f610f4d565b14610c8d576102f492611cbd565b63948bf89760e01b60005260046000fd5b3461024457602036600319011261024457610414610cbd600435611393565b604051918291602083526020830190610a31565b34610244576020366003190112610244576004356001600160e01b03198116810361024457610d01602091611460565b6040519015158152f35b34610244576020366003190112610244576004356001600160401b03811161024457610264610d406020923690600401610392565b6114e3565b34610244576020366003190112610244576020610d01600435610d678161026c565b6115d0565b346102445760003660031901126102445760206040516f71727de22e5e9d8baf0edac6f37da0328152f35b606036600319011261024457600435610daf8161026c565b604435906024356001600160401b038311610244576106ed610dd86102f49436906004016102f6565b6f71727de22e5e9d8baf0edac6f37da0323303610df65736916104a1565b610dfe611697565b6106e6565b3461024457610e1136610c2b565b90610e1a611697565b610e22610f4d565b9260018411610e35576102f49350611cbd565b83631047e35560e31b60005260045260246000fd5b34610244576020366003190112610244576020610264600435611dd4565b34610244576000366003190112610244576020600080516020612edf83398151915254604051908152f35b346102445760003660031901126102445760206102646115f6565b90610ec160209282815194859201610a0e565b0190565b6020610ede918160405193828580945193849201610a0e565b81017f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f50381520301902090565b634e487b7160e01b600052601160045260246000fd5b600080516020612eff8339815191520390600080516020612eff8339815191528211610f4857565b610f0a565b600080516020612edf83398151915254600080516020612f3f833981519152548103908111610f485790565b6000198114610f485760010190565b90610f96610f9b9392611dd4565b611a51565b610fab576001600160e01b031990565b630b135d3f60e11b90565b903590601e198136030182121561024457018035906001600160401b0382116102445760200191813603831361024457565b356001600160e01b0319811692919060048210611003575050565b6001600160e01b031960049290920360031b82901b16169150565b909291928360041161024457831161024457600401916003190190565b929190926001600160401b038411610470578360051b9060206040516110638285018261044f565b8096815201918101918383116102445781905b838210611084575050505050565b81356001600160401b038111610244576020916110a487849387016104d8565b815201910190611076565b602081830312610244578035906001600160401b03821161024457019080601f83011215610244578160206104f39335910161103b565b634e487b7160e01b600052603260045260246000fd5b80518210156111105760209160051b010190565b6110e6565b80516020909101516001600160e01b0319811692919060048210611003575050565b91602083013560401c9160608401906111508286610fb6565b6316155e8f60e11b916001600160e01b03199161116c91610fe8565b160361124f575061117c846114e3565b92612105810361123b575061119e6111976111a69286610fb6565b809161101e565b8101906110af565b9160005b8351811015611215576111bd81856110fc565b5163278f794360e11b6111df6111d283611115565b6001600160e01b03191690565b146111ee575b506001016111aa565b60240151803b6111e557630c76093760e01b6000526001600160a01b031660045260246000fd5b50909261122d9250610ada905b610100810190610fb6565b61123657600190565b600090565b632ef3781360e01b60005260045260246000fd5b929050612105819492941461123b575090610ada61122d92611222565b61127760ff91610ec5565b541690565b91908110156111105760051b81013590605e1981360301821215610244570190565b356104f38161026c565b906107088201809211610f4857565b9060158201809211610f4857565b9060028201809211610f4857565b91908201809211610f4857565b906040519163737bebdd60e01b602084015260248301526024825261048460448361044f565b908092918237016000815290565b6040519061132360208361044f565b60008252565b3d15611354573d9061133a82610486565b91611348604051938461044f565b82523d6000602084013e565b606090565b90600182811c92168015611389575b602083101461137357565b634e487b7160e01b600052602260045260246000fd5b91607f1691611368565b6000527f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f5026020526040600020604051908160008254926113d284611359565b808452936001811690811561143e57506001146113f7575b506104f39250038261044f565b90506000929192526020600020906000915b8183106114225750509060206104f392820101386113ea565b6020919350806001915483858801015201910190918392611409565b9050602092506104f394915060ff191682840152151560051b820101386113ea565b63ffffffff60e01b166329565e3b60e01b81149081156114d2575b81156114c1575b81156114b0575b811561149f575b5061149a57600090565b600190565b63278f794360e11b14905038611490565b63b819736760e01b81149150611489565b6389625b5760e01b81149150611482565b6303c3cfc960e21b8114915061147b565b60208101356115976114f86040840184610fb6565b908160405191823720916102256115126060860186610fb6565b90816040519182372060c086013560a0870135608088013561154061153a60e08b018b610fb6565b90612335565b604080519a356001600160a01b031660208c01908152908b019790975260608a0198909852608089019390935260a088019290925260c087019190915260e086015261010085019390935292918290610120820190565b51902060408051602081019283526f71727de22e5e9d8baf0edac6f37da032918101919091526115ca8160608101610225565b51902090565b61127760ff916040519060018060a01b031660208201526020815261023360408261044f565b6115fe611b63565b906020815191012090602081519101206040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a081526115ca60c08261044f565b60003560e01c63bc197c81811463f23a6e6182141763150b7a0282141761168e57633c10b94e6000526004601cfd5b6020526020603cf35b6116a0336115d0565b80156116bb575b610484576282b42960e81b60005260046000fd5b503033146116a7565b8181106116cf575050565b600081556001016116c4565b9190601f81116116ea57505050565b610484926000526020600020906020601f840160051c83019310611716575b601f0160051c01906116c4565b9091508190611709565b6117298161126c565b6118975761173681610ec5565b600160ff19825416179055816000527f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f502602052604060002081516001600160401b038111610470576117928161178c8454611359565b846116db565b6020601f821160011461180657916117e7827f38109edc26e166b5579352ce56a50813177eb25208fd90d61f2f37838622022095936117f6956000916117fb575b508160011b916000199060031b1c19161790565b90555b60405191829182610a56565b0390a2565b9050840151386117d3565b601f1982169061181b84600052602060002090565b9160005b81811061187f5750926117f69492600192827f38109edc26e166b5579352ce56a50813177eb25208fd90d61f2f378386220220989610611866575b5050811b0190556117ea565b85015160001960f88460031b161c19169055388061185a565b9192602060018192868a01518155019401920161181f565b60405163468b12ad60e11b81529081906109849060048301610a56565b602081830312610244578035906001600160401b03821161024457016040818303126102445760405191604083018381106001600160401b038211176104705760405281356001600160401b03811161024457816119139184016104d8565b835260208201356001600160401b0381116102445761193292016104d8565b602082015290565b60208151910151906020811061194e575090565b6000199060200360031b1b1690565b9190826040910312610244576020825192015190565b81601f82011215610244576020815191019061198e81610486565b9261199c604051948561044f565b81845281830111610244576104f3916020840190610a0e565b602081830312610244578051906001600160401b03821161024457019060c082820312610244576119e4610475565b9180516001600160401b0381116102445782611a01918301611973565b835260208101516001600160401b0381116102445760a092611a24918301611973565b6020840152604081015160408401526060810151606084015260808101516080840152015160a082015290565b929190611a60918101906118b4565b90815191611a70610ae08461126c565b611b3a576020835114611af15782519360408514611aa3576040516327755b9160e11b8152806109848660048301610a56565b610225611aec611ad7611ac38760208080999b6104f39b0101910161195d565b9690950151602080825183010191016119b5565b92604051928391602083019190602083019252565b611fd6565b91929091906001600160a01b03611b078561193a565b11611b1f576020806104f39495015192015191611e49565b60405163bff1ac6560e01b8152806109848660048301610a56565b50915050600090565b916000928392602083519301915af1611b5a611329565b901561064f5750565b6040908151611b72838261044f565b601281527111da585b9bc814db585c9d0815d85b1b195d60721b602082015291611b9e8151918261044f565b60018152603160f81b602082015290565b908060209392818452848401376000828201840152601f01601f1916010190565b92916104f39492611bee928552606060208601526060850191611baf565b916040818403910152610a31565b60209082604051938492833781017f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f50381520301902090565b600281901b91906001600160fe1b03811603610f4857565b611c568154611359565b9081611c60575050565b81601f60009311600114611c72575055565b81835260208320611c8e91601f0160051c8101906001016116c4565b808252602082209081548360011b9084198560031b1c191617905555565b9160206104f3938181520191611baf565b9190611cc883611393565b805115611dbe5780516020820120611ce13685856104a1565b6020815191012003611d9f57509081611d28611d1e837fcf95bbfe6f870f8cc40482dc3dccdafd268f0e9ce0a4f24ea1bea9be64e505ff95611bfc565b805460ff19169055565b611d63611d5e856000527f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f502602052604060002090565b611c4c565b611d90611d7e600080516020612f3f83398151915254610f79565b600080516020612f3f83398151915255565b6117f660405192839283611cac565b60405163781f2e3960e01b815293849361098493909160048601611bd0565b63340c473d60e11b600052600484905260246000fd5b611ddc6115f6565b9060405160208101917f37f248f492286ab572e2a1ee0bd5315f2aae54a08b5871b294d657f3a1f1d0078352604082015260408152611e1c60608261044f565b51902060405190602082019261190160f01b845260228301526042820152604281526115ca60628261044f565b9091600091906001600160a01b03821615611f335760405192600484019460248501956044860192853b15611eb357509186939160209593630b135d3f60e11b8852526040845281518501809260045afa9360443d01915afa9151630b135d3f60e11b1491161690565b979650509050815180604014611f0e57604114611ed05750505050565b602092939550606082015160001a835260408201516060525b60005201516040526020600160806000825afa511860601b3d11916000606052604052565b506020929395506040820151601b8160ff1c01845260018060ff1b0316606052611ee9565b50505050600090565b906104846001602d60405180956c1131b430b63632b733b2911d1160991b6020830152611f728151809260208686019101610a0e565b8101601160f91b838201520301601e1981018552018361044f565b8051602010156111105760400190565b6040513d6000823e3d90fd5b6020929190611fbf849282815194859201610a0e565b019081520190565b90816020910312610244575190565b92919060009360a082019485517f7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8106121b35760208301917fff1a2a9176d650e4a99dedb58f1793003935130579fe17b5a3f698ac5b00e63461204884516060870151612042816112b7565b91612340565b60208151910120036121bc57612060612065916121c6565b611f3c565b61207a835160408601516120428451826112d3565b602081519101209060208151910120036121b357600160f81b600160f81b6120b36120a58651611f8d565b516001600160f81b03191690565b16036121b3576120d0602092600092505160405191828092610eae565b039060025afa156121ae576020600061210681516120fa8551610225604051938492888401611fa9565b60405191828092610eae565b039060025afa156121ae57608060005191019360008086518561215985516102258a60405194859360208501978c899192608093969594919660a084019784526020840152604083015260608201520152565b51906101005afa94612169611329565b805196806121a5575b61218557506104f395505190519161222d565b6001966121a19650810160209081019550019250611fc7915050565b1490565b50861515612172565b611f9d565b94505050505090565b5094505050505090565b6040516104f3916121d860608361044f565b604082527f4142434445464748494a4b4c4d4e4f505152535455565758595a61626364656660208301527f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f60408301526123ec565b93919092938315801561231d575b8015612315575b80156122fd575b6122f3576122578386612494565b156122f35760405191602083526020808401526020604084015260608301527fffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254f6080830152600080516020612eff83398151915260a083015260208260c0816005600019fa1561024457600080516020612eff833981519152946122ed93866122e794518181890994099161256f565b91610f20565b90081590565b5050505050600090565b50600080516020612eff833981519152821015612249565b508115612242565b50600080516020612eff83398151915284101561223b565b816040519182372090565b8051606094939290838111156123b2575b818111156123aa575b5082811061236757505050565b6040519450918290039101601f8201601f19165b8181015185820152601f1901908115612394579061237b565b5050604081840160006020820152016040528252565b90503861235a565b925082612351565b906123c482610486565b6123d1604051918261044f565b82815280926123e2601f1991610486565b0190602036910137565b9081511561248a579061241961241461240d6124088451611c34565b6112c5565b6003900490565b6123ba565b91602083019082805101906020820192835194600085525b83811061244057505050505290565b600360049101916001603f845182828260121c16880101518453828282600c1c16880101518385015382828260061c16880101516002850153168501015160038201530190612431565b50506104f3611314565b600160601b63ffffffff60c01b03198110801590612557575b8015612546575b61253f57600160601b63ffffffff60c01b0319907f5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b908290817fffffffff00000001000000000000000000000000fffffffffffffffffffffffc820990600160601b63ffffffff60c01b0319908181800909080890600160601b63ffffffff60c01b03199080091490565b5050600090565b50801580156124b4575081156124b4565b50600160601b63ffffffff60c01b03198210156124ad565b9092600092908360ff81841580612b66575b612b5b5761258f8887612b6e565b929091821580612b53575b612b18575b5085811c60028660fe1c16015b15612aff57600186821c16600286831c60011b160160018114612ab4575b60028114612aa7575b600314612a9a575b600198600019919091019694959489949392915b886000191161266d5750505050505050505060405191606083015260208252602080830152602060408301526002600160601b0363ffffffff60c01b03196080830152600163ffffffff60601b0360601b1960a083015260208260c0816005600019fa15610244579051600160601b63ffffffff60c01b0319910990565b909192939495969798600163ffffffff60601b0360601b198660020990600160601b63ffffffff60c01b0319828009600160601b63ffffffff60c01b031981830992600160601b63ffffffff60c01b03199082900991600160601b63ffffffff60c01b03199081908f8281830891600160601b63ffffffff60c01b031991820390080960030998600160601b63ffffffff60c01b03199083099c600160601b63ffffffff60c01b0319910991600160601b63ffffffff60c01b031980826002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b03198b80090898600160601b63ffffffff60c01b031991829081038b08900996600160601b63ffffffff60c01b03199088908290840908968b60028c60018d841c16921c60011b16018015612a7d5760018114612a32575b60028114612a27575b600314612a1e575b8215612a0b57600160601b63ffffffff60c01b031990889082908f90090890600160601b63ffffffff60c01b031990898203908290859009089781156128d1575b600160601b63ffffffff60c01b031989800998600160601b63ffffffff60c01b0319908a0992600160601b63ffffffff60c01b0319908a90099c600160601b63ffffffff60c01b03199084900998600160601b63ffffffff60c01b03199109600160601b63ffffffff60c01b031980826002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b031985810381868009080897600160601b63ffffffff60c01b03199384910991600160601b63ffffffff60c01b03199182908a82039008090894985b6000190197969594939291906125ef565b886127f4579a91975090959050600160601b63ffffffff60c01b0319816002600160601b0363ffffffff60c01b0319099a600160601b63ffffffff60c01b03198c8009600160601b63ffffffff60c01b0319818d099c600160601b63ffffffff60c01b0319908290099b600160601b63ffffffff60c01b031990818b8103820890600160601b63ffffffff60c01b0319908c900809600160601b63ffffffff60c01b03199060030991600160601b63ffffffff60c01b0319908d0998600160601b63ffffffff60c01b031991099b600160601b63ffffffff60c01b031980826002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b0319848009089b600160601b63ffffffff60c01b03199384910991600160601b63ffffffff60c01b03199182908e82039008900908946128c0565b60019c50909a8c985090965090506128c0565b505083856127b3565b8592508491506127ab565b7f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c29692507f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f591506127a2565b50505099959894600163ffffffff60601b0360601b1903946128c0565b92508096509581926125db565b96975087968994506125d3565b7f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c29698507f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f594506125ca565b60001901600186821c16600286831c60011b16016125ac565b9495600080516020612eff8339815191529196820390089484861580612b4b575b1561259f579850505050505050505090565b506001612b39565b50831561259a565b965050505050505090565b508315612581565b91907f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c2967f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5918015612d225784610c5a9495831480612d19575b15612d045750600160601b63ffffffff60c01b0319905082600209600160601b63ffffffff60c01b031981800992600160601b63ffffffff60c01b031984840991600160601b63ffffffff60c01b03199085900992600160601b63ffffffff60c01b0319908190816001820890600160601b63ffffffff60c01b0319907fffffffff00000001000000000000000000000000fffffffffffffffffffffffe900809600309600160601b63ffffffff60c01b031980846002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b03198380090892600160601b63ffffffff60c01b03196001860995600160601b63ffffffff60c01b0319906001900994600160601b63ffffffff60c01b031993849109600160601b63ffffffff60c01b03199081039290918290868203900890090890612e44565b909192612d1093612d28565b92909190612e44565b50818414612bc7565b50925090565b9193908015612e3b57600160601b63ffffffff60c01b03199081039384908290600190090893600160601b63ffffffff60c01b031990838203908290600190090892600160601b63ffffffff60c01b031984800993600160601b63ffffffff60c01b031990850992600160601b63ffffffff60c01b03199085900994600160601b63ffffffff60c01b031980876002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b031986810381858009080895600160601b63ffffffff60c01b031992839086900991600160601b63ffffffff60c01b03199182908982039008090892600160601b63ffffffff60c01b03199060010991600160601b63ffffffff60c01b03199060010990565b50600191508190565b91909260405190602082526020808301526020604083015260608201526002600160601b0363ffffffff60c01b03196080820152600163ffffffff60601b0360601b1960a082015260208160c0816005600019fa15610244575192600160601b63ffffffff60c01b03199084900992600160601b63ffffffff60c01b03199109600160601b63ffffffff60c01b031991908290800990099156fe0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f500ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f501a2646970667358221220890c9d20b5fc4df99bded2544912158a1d933f168e2e843d0c1a15a2ff32ce8c64736f6c634300081c0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x15 JUMPI JUMPDEST CALLDATASIZE PUSH2 0x165F JUMPI STOP JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x66A1EB7 EQ PUSH2 0x1E5 JUMPI DUP1 PUSH4 0xDB02622 EQ PUSH2 0x1E0 JUMPI DUP1 PUSH4 0xF0F3F24 EQ PUSH2 0x1DB JUMPI DUP1 PUSH4 0x1626BA7E EQ PUSH2 0x1D6 JUMPI DUP1 PUSH4 0x17452CAA EQ PUSH2 0x1D1 JUMPI DUP1 PUSH4 0x19822F7C EQ PUSH2 0x1CC JUMPI DUP1 PUSH4 0x1CA5393F EQ PUSH2 0x1C7 JUMPI DUP1 PUSH4 0x29565E3B EQ PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x2C2ABD1E EQ PUSH2 0x1BD JUMPI DUP1 PUSH4 0x34FCD5BE EQ PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x36D9CF9B EQ PUSH2 0x1B3 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x1AE JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x1A9 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x1A4 JUMPI DUP1 PUSH4 0x6F2DE70E EQ PUSH2 0x19F JUMPI DUP1 PUSH4 0x737BEBDD EQ PUSH2 0x19A JUMPI DUP1 PUSH4 0x84B0196E EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0x88CE4C7C EQ PUSH2 0x190 JUMPI DUP1 PUSH4 0x89625B57 EQ PUSH2 0x18B JUMPI DUP1 PUSH4 0x8EA69029 EQ PUSH2 0x186 JUMPI DUP1 PUSH4 0x9F9BCB34 EQ PUSH2 0x181 JUMPI DUP1 PUSH4 0xA05BD44E EQ PUSH2 0x17C JUMPI DUP1 PUSH4 0xA2E1A8D8 EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0xB0D691FE EQ PUSH2 0x172 JUMPI DUP1 PUSH4 0xB61D27F6 EQ PUSH2 0x16D JUMPI DUP1 PUSH4 0xB8197367 EQ PUSH2 0x168 JUMPI DUP1 PUSH4 0xCE1506BE EQ PUSH2 0x163 JUMPI DUP1 PUSH4 0xD948FD2E EQ PUSH2 0x15E JUMPI PUSH4 0xF698DA25 SUB PUSH2 0xE JUMPI PUSH2 0xE93 JUMP JUMPDEST PUSH2 0xE68 JUMP JUMPDEST PUSH2 0xE4A JUMP JUMPDEST PUSH2 0xE03 JUMP JUMPDEST PUSH2 0xD97 JUMP JUMPDEST PUSH2 0xD6C JUMP JUMPDEST PUSH2 0xD45 JUMP JUMPDEST PUSH2 0xD0B JUMP JUMPDEST PUSH2 0xCD1 JUMP JUMPDEST PUSH2 0xC9E JUMP JUMPDEST PUSH2 0xC5E JUMP JUMPDEST PUSH2 0xC0E JUMP JUMPDEST PUSH2 0xB6D JUMP JUMPDEST PUSH2 0xA67 JUMP JUMPDEST PUSH2 0x8CC JUMP JUMPDEST PUSH2 0x896 JUMP JUMPDEST PUSH2 0x846 JUMP JUMPDEST PUSH2 0x731 JUMP JUMPDEST PUSH2 0x706 JUMP JUMPDEST PUSH2 0x673 JUMP JUMPDEST PUSH2 0x5CB JUMP JUMPDEST PUSH2 0x52D JUMP JUMPDEST PUSH2 0x4F6 JUMP JUMPDEST PUSH2 0x3A1 JUMP JUMPDEST PUSH2 0x375 JUMP JUMPDEST PUSH2 0x323 JUMP JUMPDEST PUSH2 0x27D JUMP JUMPDEST PUSH2 0x249 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x20 PUSH1 0xFF PUSH2 0x238 PUSH1 0x4 CALLDATALOAD PUSH2 0x233 PUSH1 0x24 CALLDATALOAD SWAP2 PUSH2 0x225 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 DUP9 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x40 DUP2 ADD SWAP5 DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x44F JUMP JUMPDEST PUSH2 0xEC5 JUMP JUMPDEST SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x20 PUSH2 0x264 PUSH2 0xF4D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SUB PUSH2 0x244 JUMPI JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH2 0x2F4 PUSH1 0x4 CALLDATALOAD PUSH2 0x29D DUP2 PUSH2 0x26C JUMP JUMPDEST PUSH2 0x2A5 PUSH2 0x1697 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x20 DUP2 MSTORE PUSH2 0x2C5 PUSH1 0x40 DUP3 PUSH2 0x44F JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EDF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD SWAP1 PUSH2 0x2DF DUP3 PUSH2 0xF79 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EDF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE PUSH2 0x1720 JUMP JUMPDEST STOP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x244 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT PUSH2 0x244 JUMPI PUSH1 0x20 DUP4 DUP2 DUP7 ADD SWAP6 ADD ADD GT PUSH2 0x244 JUMPI JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x24 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI PUSH1 0x20 SWAP2 PUSH2 0x35C PUSH2 0x362 SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x2F6 JUMP JUMPDEST SWAP2 PUSH2 0xF88 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH2 0x708 DUP2 MSTORE RETURN JUMPDEST SWAP1 DUP2 PUSH2 0x120 SWAP2 SUB SLT PUSH2 0x244 JUMPI SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x60 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI PUSH2 0x3D1 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x392 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD PUSH1 0x24 CALLDATALOAD PUSH16 0x71727DE22E5E9D8BAF0EDAC6F37DA031 NOT CALLER ADD PUSH2 0x429 JUMPI PUSH2 0x3FD DUP3 SWAP2 PUSH2 0x414 SWAP5 PUSH2 0x1137 JUMP JUMPDEST SWAP2 PUSH2 0x418 JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE SWAP1 DUP2 SWAP1 PUSH1 0x20 DUP3 ADD SWAP1 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 SWAP1 DUP2 DUP1 CODESIZE SWAP3 CALLER GAS CALL POP CODESIZE PUSH2 0x403 JUMP JUMPDEST PUSH3 0x82B429 PUSH1 0xE8 SHL PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x1F DUP1 NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x470 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x439 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x484 PUSH1 0xC0 DUP4 PUSH2 0x44F JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x470 JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x4AD DUP3 PUSH2 0x486 JUMP JUMPDEST SWAP2 PUSH2 0x4BB PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x44F JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0x244 JUMPI DUP3 DUP2 PUSH1 0x20 SWAP4 DUP5 PUSH1 0x0 SWAP7 ADD CALLDATACOPY ADD ADD MSTORE JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x244 JUMPI DUP2 PUSH1 0x20 PUSH2 0x4F3 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x4A1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI PUSH1 0xFF PUSH2 0x238 PUSH2 0x233 PUSH1 0x20 SWAP4 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x4D8 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH2 0x2F4 PUSH1 0x24 CALLDATALOAD PUSH2 0x2C5 PUSH1 0x4 CALLDATALOAD PUSH2 0x552 PUSH2 0x1697 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 PUSH1 0x60 DUP2 ADD PUSH2 0x225 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH1 0x3 NOT DUP4 ADD SLT PUSH2 0x244 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI PUSH1 0x4 ADD PUSH1 0x0 SWAP3 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x5C7 JUMPI DUP2 CALLDATALOAD SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP6 GT PUSH2 0x5C4 JUMPI POP PUSH1 0x20 DUP1 DUP4 ADD SWAP3 DUP6 PUSH1 0x5 SHL ADD ADD GT PUSH2 0x244 JUMPI SWAP2 SWAP1 JUMP JUMPDEST DUP1 REVERT JUMPDEST DUP4 DUP1 REVERT JUMPDEST PUSH2 0x5D4 CALLDATASIZE PUSH2 0x56E JUMP JUMPDEST SWAP1 PUSH16 0x71727DE22E5E9D8BAF0EDAC6F37DA032 CALLER SUB PUSH2 0x429 JUMPI PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2F4 JUMPI PUSH1 0x0 PUSH2 0x608 DUP3 PUSH1 0x5 SHL DUP5 ADD DUP5 PUSH2 0xFB6 JUMP JUMPDEST PUSH2 0x612 DUP2 DUP4 PUSH2 0xFE8 JUMP JUMPDEST PUSH2 0x61B DUP2 PUSH2 0x1460 JUMP JUMPDEST ISZERO PUSH2 0x657 JUMPI POP DUP3 SWAP2 PUSH2 0x62E SWAP2 CALLDATASIZE SWAP2 PUSH2 0x4A1 JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD DUP3 ADDRESS GAS CALL PUSH2 0x640 PUSH2 0x1329 JUMP JUMPDEST SWAP1 ISZERO PUSH2 0x64F JUMPI POP PUSH1 0x1 ADD PUSH2 0x5EF JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD REVERT JUMPDEST PUSH4 0x1D8370A3 PUSH1 0xE1 SHL DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x4 MSTORE PUSH1 0x24 DUP4 REVERT JUMPDEST PUSH2 0x67C CALLDATASIZE PUSH2 0x56E JUMP JUMPDEST SWAP1 PUSH16 0x71727DE22E5E9D8BAF0EDAC6F37DA032 CALLER SUB PUSH2 0x6F9 JUMPI JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT PUSH2 0x6A1 JUMPI STOP JUMPDEST DUP1 PUSH2 0x6F3 PUSH2 0x6B2 PUSH1 0x1 SWAP4 DUP7 DUP7 PUSH2 0x127C JUMP JUMPDEST CALLDATALOAD PUSH2 0x6BC DUP2 PUSH2 0x26C JUMP JUMPDEST PUSH1 0x20 PUSH2 0x6C9 DUP5 DUP9 DUP9 PUSH2 0x127C JUMP JUMPDEST ADD CALLDATALOAD PUSH2 0x6ED PUSH2 0x6E6 PUSH2 0x6DC DUP7 DUP11 DUP11 PUSH2 0x127C JUMP JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 PUSH2 0xFB6 JUMP JUMPDEST CALLDATASIZE SWAP2 PUSH2 0x4A1 JUMP JUMPDEST SWAP2 PUSH2 0x1B43 JUMP JUMPDEST ADD PUSH2 0x698 JUMP JUMPDEST PUSH2 0x701 PUSH2 0x1697 JUMP JUMPDEST PUSH2 0x695 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x20 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2F3F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x749 DUP2 PUSH2 0x26C JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI PUSH2 0x768 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x2F6 JUMP JUMPDEST SWAP1 SWAP2 PUSH32 0x0 ADDRESS EQ PUSH2 0x838 JUMPI PUSH2 0x799 PUSH2 0x1697 JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND RETURNDATASIZE PUSH1 0x0 MSTORE PUSH4 0x52D1902D PUSH1 0x1 MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2F1F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x20 PUSH1 0x1 PUSH1 0x4 PUSH1 0x1D DUP6 GAS STATICCALL MLOAD SUB PUSH2 0x82A JUMPI DUP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B PUSH1 0x0 DUP1 LOG2 DUP2 DUP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2F1F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE PUSH2 0x80B JUMPI STOP JUMPDEST DUP2 PUSH1 0x0 SWAP3 PUSH1 0x40 MLOAD SWAP5 DUP6 CALLDATACOPY DUP4 CODESIZE SWAP3 GAS DELEGATECALL ISZERO PUSH2 0x821 JUMPI STOP JUMPDEST RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH4 0x55299B49 PUSH1 0x1 MSTORE PUSH1 0x4 PUSH1 0x1D REVERT JUMPDEST PUSH4 0x9F03A026 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x1C REVERT JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI ADDRESS PUSH32 0x0 SUB PUSH2 0x838 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2F1F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2F1F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 SWAP1 RETURN JUMPDEST PUSH2 0x8D5 CALLDATASIZE PUSH2 0x56E JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EDF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD SWAP2 DUP3 PUSH2 0x9FD JUMPI PUSH2 0x8F6 SWAP2 CALLDATASIZE SWAP2 PUSH2 0x103B JUMP JUMPDEST SWAP1 PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x9E7 JUMPI PUSH1 0x20 PUSH2 0x90F DUP3 DUP6 PUSH2 0x10FC JUMP JUMPDEST MLOAD MLOAD EQ ISZERO DUP1 PUSH2 0x9D1 JUMPI JUMPDEST PUSH2 0x9AA JUMPI PUSH1 0x20 PUSH2 0x929 DUP3 DUP6 PUSH2 0x10FC JUMP JUMPDEST MLOAD MLOAD EQ DUP1 PUSH2 0x988 JUMPI JUMPDEST PUSH2 0x95D JUMPI DUP1 PUSH2 0x957 PUSH2 0x946 PUSH1 0x1 SWAP4 DUP7 PUSH2 0x10FC JUMP JUMPDEST MLOAD SWAP4 PUSH2 0x951 DUP2 PUSH2 0xF79 JUMP JUMPDEST SWAP5 PUSH2 0x1720 JUMP JUMPDEST ADD PUSH2 0x8FA JUMP JUMPDEST PUSH2 0x96A PUSH2 0x984 SWAP2 DUP5 PUSH2 0x10FC JUMP JUMPDEST MLOAD PUSH1 0x40 MLOAD PUSH4 0xBFF1AC65 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 DUP3 SWAP2 PUSH1 0x4 DUP4 ADD PUSH2 0xA56 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x9A4 PUSH2 0x99E DUP4 DUP7 PUSH2 0x10FC JUMP JUMPDEST MLOAD PUSH2 0x193A JUMP JUMPDEST GT PUSH2 0x932 JUMP JUMPDEST PUSH2 0x9B7 PUSH2 0x984 SWAP2 DUP5 PUSH2 0x10FC JUMP JUMPDEST MLOAD PUSH1 0x40 MLOAD PUSH4 0x27755B91 PUSH1 0xE1 SHL DUP2 MSTORE SWAP2 DUP3 SWAP2 PUSH1 0x4 DUP4 ADD PUSH2 0xA56 JUMP JUMPDEST POP PUSH1 0x40 PUSH2 0x9DE DUP3 DUP6 PUSH2 0x10FC JUMP JUMPDEST MLOAD MLOAD EQ ISZERO PUSH2 0x919 JUMP JUMPDEST PUSH2 0x2F4 DUP3 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EDF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST PUSH4 0x2ED543D PUSH1 0xE5 SHL PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT PUSH2 0xA21 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA11 JUMP JUMPDEST SWAP1 PUSH1 0x20 SWAP2 PUSH2 0xA4A DUP2 MLOAD DUP1 SWAP3 DUP2 DUP6 MSTORE DUP6 DUP1 DUP7 ADD SWAP2 ADD PUSH2 0xA0E JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND ADD ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0x4F3 SWAP3 DUP2 DUP2 MSTORE ADD SWAP1 PUSH2 0xA31 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI DUP1 PUSH1 0x4 ADD PUSH1 0x80 PUSH1 0x3 NOT DUP4 CALLDATASIZE SUB ADD SLT PUSH2 0x244 JUMPI PUSH1 0x44 DUP3 ADD CALLDATALOAD PUSH2 0xAA9 DUP2 PUSH2 0x12A8 JUMP JUMPDEST TIMESTAMP GT PUSH2 0xB46 JUMPI PUSH2 0xAE0 PUSH2 0xACD PUSH2 0xAC1 PUSH2 0xAE4 SWAP4 PUSH2 0x12E0 JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD KECCAK256 PUSH2 0x1DD4 JUMP JUMPDEST PUSH2 0xADA PUSH1 0x64 DUP7 ADD DUP6 PUSH2 0xFB6 JUMP JUMPDEST SWAP2 PUSH2 0x1A51 JUMP JUMPDEST ISZERO SWAP1 JUMP JUMPDEST PUSH2 0xB35 JUMPI PUSH1 0x0 SWAP2 PUSH2 0xB03 DUP3 PUSH1 0x24 PUSH2 0xAFB DUP7 SWAP6 PUSH2 0x129E JUMP JUMPDEST SWAP4 ADD SWAP1 PUSH2 0xFB6 JUMP JUMPDEST SWAP1 PUSH2 0xB13 PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP4 PUSH2 0x1306 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL PUSH2 0xB1F PUSH2 0x1329 JUMP JUMPDEST SWAP1 ISZERO PUSH2 0x64F JUMPI PUSH2 0x414 SWAP1 PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xA56 JUMP JUMPDEST PUSH4 0x8BAA579F PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST PUSH2 0xB52 PUSH2 0xB69 SWAP2 PUSH2 0x12A8 JUMP JUMPDEST PUSH4 0xF88F049 PUSH1 0xE4 SHL PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE TIMESTAMP PUSH1 0x24 MSTORE PUSH1 0x44 SWAP1 JUMP JUMPDEST PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH2 0xBAD PUSH2 0xBBB PUSH2 0xB8C PUSH2 0x1B63 JUMP JUMPDEST PUSH1 0x40 SWAP3 SWAP2 SWAP3 MLOAD SWAP4 DUP5 SWAP4 PUSH1 0xF PUSH1 0xF8 SHL DUP6 MSTORE PUSH1 0xE0 PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0xE0 DUP6 ADD SWAP1 PUSH2 0xA31 JUMP JUMPDEST SWAP1 DUP4 DUP3 SUB PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0xA31 JUMP JUMPDEST CHAINID PUSH1 0x60 DUP4 ADD MSTORE ADDRESS PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0xA0 DUP4 ADD MSTORE DUP2 DUP2 SUB PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0x20 PUSH1 0x60 MLOAD SWAP2 DUP3 DUP2 MSTORE ADD SWAP1 PUSH1 0x80 SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0xBF5 JUMPI POP POP POP SUB SWAP1 RETURN JUMPDEST DUP3 MLOAD DUP5 MSTORE DUP6 SWAP5 POP PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0xBE7 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH2 0x2105 DUP2 MSTORE RETURN JUMPDEST SWAP1 PUSH1 0x40 PUSH1 0x3 NOT DUP4 ADD SLT PUSH2 0x244 JUMPI PUSH1 0x4 CALLDATALOAD SWAP2 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x244 JUMPI PUSH2 0xC5A SWAP2 PUSH1 0x4 ADD PUSH2 0x2F6 JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH2 0xC6C CALLDATASIZE PUSH2 0xC2B JUMP JUMPDEST SWAP1 PUSH2 0xC75 PUSH2 0x1697 JUMP JUMPDEST PUSH1 0x1 PUSH2 0xC7F PUSH2 0xF4D JUMP JUMPDEST EQ PUSH2 0xC8D JUMPI PUSH2 0x2F4 SWAP3 PUSH2 0x1CBD JUMP JUMPDEST PUSH4 0x948BF897 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH2 0x414 PUSH2 0xCBD PUSH1 0x4 CALLDATALOAD PUSH2 0x1393 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0xA31 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 SUB PUSH2 0x244 JUMPI PUSH2 0xD01 PUSH1 0x20 SWAP2 PUSH2 0x1460 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI PUSH2 0x264 PUSH2 0xD40 PUSH1 0x20 SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x392 JUMP JUMPDEST PUSH2 0x14E3 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x20 PUSH2 0xD01 PUSH1 0x4 CALLDATALOAD PUSH2 0xD67 DUP2 PUSH2 0x26C JUMP JUMPDEST PUSH2 0x15D0 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH16 0x71727DE22E5E9D8BAF0EDAC6F37DA032 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x60 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0xDAF DUP2 PUSH2 0x26C JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x24 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT PUSH2 0x244 JUMPI PUSH2 0x6ED PUSH2 0xDD8 PUSH2 0x2F4 SWAP5 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x2F6 JUMP JUMPDEST PUSH16 0x71727DE22E5E9D8BAF0EDAC6F37DA032 CALLER SUB PUSH2 0xDF6 JUMPI CALLDATASIZE SWAP2 PUSH2 0x4A1 JUMP JUMPDEST PUSH2 0xDFE PUSH2 0x1697 JUMP JUMPDEST PUSH2 0x6E6 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH2 0xE11 CALLDATASIZE PUSH2 0xC2B JUMP JUMPDEST SWAP1 PUSH2 0xE1A PUSH2 0x1697 JUMP JUMPDEST PUSH2 0xE22 PUSH2 0xF4D JUMP JUMPDEST SWAP3 PUSH1 0x1 DUP5 GT PUSH2 0xE35 JUMPI PUSH2 0x2F4 SWAP4 POP PUSH2 0x1CBD JUMP JUMPDEST DUP4 PUSH4 0x1047E355 PUSH1 0xE3 SHL PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x20 PUSH2 0x264 PUSH1 0x4 CALLDATALOAD PUSH2 0x1DD4 JUMP JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x20 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EDF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x244 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x244 JUMPI PUSH1 0x20 PUSH2 0x264 PUSH2 0x15F6 JUMP JUMPDEST SWAP1 PUSH2 0xEC1 PUSH1 0x20 SWAP3 DUP3 DUP2 MLOAD SWAP5 DUP6 SWAP3 ADD PUSH2 0xA0E JUMP JUMPDEST ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH2 0xEDE SWAP2 DUP2 PUSH1 0x40 MLOAD SWAP4 DUP3 DUP6 DUP1 SWAP5 MLOAD SWAP4 DUP5 SWAP3 ADD PUSH2 0xA0E JUMP JUMPDEST DUP2 ADD PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F503 DUP2 MSTORE SUB ADD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SUB SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 GT PUSH2 0xF48 JUMPI JUMP JUMPDEST PUSH2 0xF0A JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EDF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2F3F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD DUP2 SUB SWAP1 DUP2 GT PUSH2 0xF48 JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x0 NOT DUP2 EQ PUSH2 0xF48 JUMPI PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xF96 PUSH2 0xF9B SWAP4 SWAP3 PUSH2 0x1DD4 JUMP JUMPDEST PUSH2 0x1A51 JUMP JUMPDEST PUSH2 0xFAB JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 JUMP JUMPDEST PUSH4 0xB135D3F PUSH1 0xE1 SHL SWAP1 JUMP JUMPDEST SWAP1 CALLDATALOAD SWAP1 PUSH1 0x1E NOT DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x244 JUMPI ADD DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x244 JUMPI PUSH1 0x20 ADD SWAP2 DUP2 CALLDATASIZE SUB DUP4 SGT PUSH2 0x244 JUMPI JUMP JUMPDEST CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND SWAP3 SWAP2 SWAP1 PUSH1 0x4 DUP3 LT PUSH2 0x1003 JUMPI POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0x4 SWAP3 SWAP1 SWAP3 SUB PUSH1 0x3 SHL DUP3 SWAP1 SHL AND AND SWAP2 POP JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 DUP4 PUSH1 0x4 GT PUSH2 0x244 JUMPI DUP4 GT PUSH2 0x244 JUMPI PUSH1 0x4 ADD SWAP2 PUSH1 0x3 NOT ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP1 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP5 GT PUSH2 0x470 JUMPI DUP4 PUSH1 0x5 SHL SWAP1 PUSH1 0x20 PUSH1 0x40 MLOAD PUSH2 0x1063 DUP3 DUP6 ADD DUP3 PUSH2 0x44F JUMP JUMPDEST DUP1 SWAP7 DUP2 MSTORE ADD SWAP2 DUP2 ADD SWAP2 DUP4 DUP4 GT PUSH2 0x244 JUMPI DUP2 SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x1084 JUMPI POP POP POP POP POP JUMP JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI PUSH1 0x20 SWAP2 PUSH2 0x10A4 DUP8 DUP5 SWAP4 DUP8 ADD PUSH2 0x4D8 JUMP JUMPDEST DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x1076 JUMP JUMPDEST PUSH1 0x20 DUP2 DUP4 SUB SLT PUSH2 0x244 JUMPI DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x244 JUMPI ADD SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x244 JUMPI DUP2 PUSH1 0x20 PUSH2 0x4F3 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x103B JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x1110 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x10E6 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND SWAP3 SWAP2 SWAP1 PUSH1 0x4 DUP3 LT PUSH2 0x1003 JUMPI POP POP JUMP JUMPDEST SWAP2 PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x40 SHR SWAP2 PUSH1 0x60 DUP5 ADD SWAP1 PUSH2 0x1150 DUP3 DUP7 PUSH2 0xFB6 JUMP JUMPDEST PUSH4 0x16155E8F PUSH1 0xE1 SHL SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP2 PUSH2 0x116C SWAP2 PUSH2 0xFE8 JUMP JUMPDEST AND SUB PUSH2 0x124F JUMPI POP PUSH2 0x117C DUP5 PUSH2 0x14E3 JUMP JUMPDEST SWAP3 PUSH2 0x2105 DUP2 SUB PUSH2 0x123B JUMPI POP PUSH2 0x119E PUSH2 0x1197 PUSH2 0x11A6 SWAP3 DUP7 PUSH2 0xFB6 JUMP JUMPDEST DUP1 SWAP2 PUSH2 0x101E JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x10AF JUMP JUMPDEST SWAP2 PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x1215 JUMPI PUSH2 0x11BD DUP2 DUP6 PUSH2 0x10FC JUMP JUMPDEST MLOAD PUSH4 0x278F7943 PUSH1 0xE1 SHL PUSH2 0x11DF PUSH2 0x11D2 DUP4 PUSH2 0x1115 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP1 JUMP JUMPDEST EQ PUSH2 0x11EE JUMPI JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x11AA JUMP JUMPDEST PUSH1 0x24 ADD MLOAD DUP1 EXTCODESIZE PUSH2 0x11E5 JUMPI PUSH4 0xC760937 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP1 SWAP3 PUSH2 0x122D SWAP3 POP PUSH2 0xADA SWAP1 JUMPDEST PUSH2 0x100 DUP2 ADD SWAP1 PUSH2 0xFB6 JUMP JUMPDEST PUSH2 0x1236 JUMPI PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH4 0x2EF37813 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 SWAP1 POP PUSH2 0x2105 DUP2 SWAP5 SWAP3 SWAP5 EQ PUSH2 0x123B JUMPI POP SWAP1 PUSH2 0xADA PUSH2 0x122D SWAP3 PUSH2 0x1222 JUMP JUMPDEST PUSH2 0x1277 PUSH1 0xFF SWAP2 PUSH2 0xEC5 JUMP JUMPDEST SLOAD AND SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x1110 JUMPI PUSH1 0x5 SHL DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x5E NOT DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x244 JUMPI ADD SWAP1 JUMP JUMPDEST CALLDATALOAD PUSH2 0x4F3 DUP2 PUSH2 0x26C JUMP JUMPDEST SWAP1 PUSH2 0x708 DUP3 ADD DUP1 SWAP3 GT PUSH2 0xF48 JUMPI JUMP JUMPDEST SWAP1 PUSH1 0x15 DUP3 ADD DUP1 SWAP3 GT PUSH2 0xF48 JUMPI JUMP JUMPDEST SWAP1 PUSH1 0x2 DUP3 ADD DUP1 SWAP3 GT PUSH2 0xF48 JUMPI JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0xF48 JUMPI JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP2 PUSH4 0x737BEBDD PUSH1 0xE0 SHL PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x24 DUP3 MSTORE PUSH2 0x484 PUSH1 0x44 DUP4 PUSH2 0x44F JUMP JUMPDEST SWAP1 DUP1 SWAP3 SWAP2 DUP3 CALLDATACOPY ADD PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x1323 PUSH1 0x20 DUP4 PUSH2 0x44F JUMP JUMPDEST PUSH1 0x0 DUP3 MSTORE JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x1354 JUMPI RETURNDATASIZE SWAP1 PUSH2 0x133A DUP3 PUSH2 0x486 JUMP JUMPDEST SWAP2 PUSH2 0x1348 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x44F JUMP JUMPDEST DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x1389 JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x1373 JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x1368 JUMP JUMPDEST PUSH1 0x0 MSTORE PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F502 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD SWAP1 DUP2 PUSH1 0x0 DUP3 SLOAD SWAP3 PUSH2 0x13D2 DUP5 PUSH2 0x1359 JUMP JUMPDEST DUP1 DUP5 MSTORE SWAP4 PUSH1 0x1 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x143E JUMPI POP PUSH1 0x1 EQ PUSH2 0x13F7 JUMPI JUMPDEST POP PUSH2 0x4F3 SWAP3 POP SUB DUP3 PUSH2 0x44F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 SWAP3 SWAP2 SWAP3 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x0 SWAP2 JUMPDEST DUP2 DUP4 LT PUSH2 0x1422 JUMPI POP POP SWAP1 PUSH1 0x20 PUSH2 0x4F3 SWAP3 DUP3 ADD ADD CODESIZE PUSH2 0x13EA JUMP JUMPDEST PUSH1 0x20 SWAP2 SWAP4 POP DUP1 PUSH1 0x1 SWAP2 SLOAD DUP4 DUP6 DUP9 ADD ADD MSTORE ADD SWAP2 ADD SWAP1 SWAP2 DUP4 SWAP3 PUSH2 0x1409 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 SWAP3 POP PUSH2 0x4F3 SWAP5 SWAP2 POP PUSH1 0xFF NOT AND DUP3 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD CODESIZE PUSH2 0x13EA JUMP JUMPDEST PUSH4 0xFFFFFFFF PUSH1 0xE0 SHL AND PUSH4 0x29565E3B PUSH1 0xE0 SHL DUP2 EQ SWAP1 DUP2 ISZERO PUSH2 0x14D2 JUMPI JUMPDEST DUP2 ISZERO PUSH2 0x14C1 JUMPI JUMPDEST DUP2 ISZERO PUSH2 0x14B0 JUMPI JUMPDEST DUP2 ISZERO PUSH2 0x149F JUMPI JUMPDEST POP PUSH2 0x149A JUMPI PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH4 0x278F7943 PUSH1 0xE1 SHL EQ SWAP1 POP CODESIZE PUSH2 0x1490 JUMP JUMPDEST PUSH4 0xB8197367 PUSH1 0xE0 SHL DUP2 EQ SWAP2 POP PUSH2 0x1489 JUMP JUMPDEST PUSH4 0x89625B57 PUSH1 0xE0 SHL DUP2 EQ SWAP2 POP PUSH2 0x1482 JUMP JUMPDEST PUSH4 0x3C3CFC9 PUSH1 0xE2 SHL DUP2 EQ SWAP2 POP PUSH2 0x147B JUMP JUMPDEST PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH2 0x1597 PUSH2 0x14F8 PUSH1 0x40 DUP5 ADD DUP5 PUSH2 0xFB6 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x40 MLOAD SWAP2 DUP3 CALLDATACOPY KECCAK256 SWAP2 PUSH2 0x225 PUSH2 0x1512 PUSH1 0x60 DUP7 ADD DUP7 PUSH2 0xFB6 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x40 MLOAD SWAP2 DUP3 CALLDATACOPY KECCAK256 PUSH1 0xC0 DUP7 ADD CALLDATALOAD PUSH1 0xA0 DUP8 ADD CALLDATALOAD PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH2 0x1540 PUSH2 0x153A PUSH1 0xE0 DUP12 ADD DUP12 PUSH2 0xFB6 JUMP JUMPDEST SWAP1 PUSH2 0x2335 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP11 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP13 ADD SWAP1 DUP2 MSTORE SWAP1 DUP12 ADD SWAP8 SWAP1 SWAP8 MSTORE PUSH1 0x60 DUP11 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH1 0x80 DUP10 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xA0 DUP9 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xC0 DUP8 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP7 ADD MSTORE PUSH2 0x100 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP3 SWAP2 DUP3 SWAP1 PUSH2 0x120 DUP3 ADD SWAP1 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 DUP4 MSTORE PUSH16 0x71727DE22E5E9D8BAF0EDAC6F37DA032 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x15CA DUP2 PUSH1 0x60 DUP2 ADD PUSH2 0x225 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x1277 PUSH1 0xFF SWAP2 PUSH1 0x40 MLOAD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x20 DUP2 MSTORE PUSH2 0x233 PUSH1 0x40 DUP3 PUSH2 0x44F JUMP JUMPDEST PUSH2 0x15FE PUSH2 0x1B63 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 PUSH1 0x20 DUP2 MLOAD SWAP2 ADD KECCAK256 PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP3 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP5 MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH2 0x15CA PUSH1 0xC0 DUP3 PUSH2 0x44F JUMP JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR PUSH4 0xBC197C81 DUP2 EQ PUSH4 0xF23A6E61 DUP3 EQ OR PUSH4 0x150B7A02 DUP3 EQ OR PUSH2 0x168E JUMPI PUSH4 0x3C10B94E PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x1C REVERT JUMPDEST PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x3C RETURN JUMPDEST PUSH2 0x16A0 CALLER PUSH2 0x15D0 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x16BB JUMPI JUMPDEST PUSH2 0x484 JUMPI PUSH3 0x82B429 PUSH1 0xE8 SHL PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST POP ADDRESS CALLER EQ PUSH2 0x16A7 JUMP JUMPDEST DUP2 DUP2 LT PUSH2 0x16CF JUMPI POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x16C4 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x1F DUP2 GT PUSH2 0x16EA JUMPI POP POP POP JUMP JUMPDEST PUSH2 0x484 SWAP3 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x20 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP4 ADD SWAP4 LT PUSH2 0x1716 JUMPI JUMPDEST PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP1 PUSH2 0x16C4 JUMP JUMPDEST SWAP1 SWAP2 POP DUP2 SWAP1 PUSH2 0x1709 JUMP JUMPDEST PUSH2 0x1729 DUP2 PUSH2 0x126C JUMP JUMPDEST PUSH2 0x1897 JUMPI PUSH2 0x1736 DUP2 PUSH2 0xEC5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xFF NOT DUP3 SLOAD AND OR SWAP1 SSTORE DUP2 PUSH1 0x0 MSTORE PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F502 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x470 JUMPI PUSH2 0x1792 DUP2 PUSH2 0x178C DUP5 SLOAD PUSH2 0x1359 JUMP JUMPDEST DUP5 PUSH2 0x16DB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 EQ PUSH2 0x1806 JUMPI SWAP2 PUSH2 0x17E7 DUP3 PUSH32 0x38109EDC26E166B5579352CE56A50813177EB25208FD90D61F2F378386220220 SWAP6 SWAP4 PUSH2 0x17F6 SWAP6 PUSH1 0x0 SWAP2 PUSH2 0x17FB JUMPI JUMPDEST POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH1 0x0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR SWAP1 JUMP JUMPDEST SWAP1 SSTORE JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xA56 JUMP JUMPDEST SUB SWAP1 LOG2 JUMP JUMPDEST SWAP1 POP DUP5 ADD MLOAD CODESIZE PUSH2 0x17D3 JUMP JUMPDEST PUSH1 0x1F NOT DUP3 AND SWAP1 PUSH2 0x181B DUP5 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP2 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0x187F JUMPI POP SWAP3 PUSH2 0x17F6 SWAP5 SWAP3 PUSH1 0x1 SWAP3 DUP3 PUSH32 0x38109EDC26E166B5579352CE56A50813177EB25208FD90D61F2F378386220220 SWAP9 SWAP7 LT PUSH2 0x1866 JUMPI JUMPDEST POP POP DUP2 SHL ADD SWAP1 SSTORE PUSH2 0x17EA JUMP JUMPDEST DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE CODESIZE DUP1 PUSH2 0x185A JUMP JUMPDEST SWAP2 SWAP3 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP7 DUP11 ADD MLOAD DUP2 SSTORE ADD SWAP5 ADD SWAP3 ADD PUSH2 0x181F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x468B12AD PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 DUP2 SWAP1 PUSH2 0x984 SWAP1 PUSH1 0x4 DUP4 ADD PUSH2 0xA56 JUMP JUMPDEST PUSH1 0x20 DUP2 DUP4 SUB SLT PUSH2 0x244 JUMPI DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x244 JUMPI ADD PUSH1 0x40 DUP2 DUP4 SUB SLT PUSH2 0x244 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH1 0x40 DUP4 ADD DUP4 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x470 JUMPI PUSH1 0x40 MSTORE DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI DUP2 PUSH2 0x1913 SWAP2 DUP5 ADD PUSH2 0x4D8 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI PUSH2 0x1932 SWAP3 ADD PUSH2 0x4D8 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD MLOAD SWAP1 PUSH1 0x20 DUP2 LT PUSH2 0x194E JUMPI POP SWAP1 JUMP JUMPDEST PUSH1 0x0 NOT SWAP1 PUSH1 0x20 SUB PUSH1 0x3 SHL SHL AND SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 PUSH1 0x40 SWAP2 SUB SLT PUSH2 0x244 JUMPI PUSH1 0x20 DUP3 MLOAD SWAP3 ADD MLOAD SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x244 JUMPI PUSH1 0x20 DUP2 MLOAD SWAP2 ADD SWAP1 PUSH2 0x198E DUP2 PUSH2 0x486 JUMP JUMPDEST SWAP3 PUSH2 0x199C PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x44F JUMP JUMPDEST DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0x244 JUMPI PUSH2 0x4F3 SWAP2 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0xA0E JUMP JUMPDEST PUSH1 0x20 DUP2 DUP4 SUB SLT PUSH2 0x244 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x244 JUMPI ADD SWAP1 PUSH1 0xC0 DUP3 DUP3 SUB SLT PUSH2 0x244 JUMPI PUSH2 0x19E4 PUSH2 0x475 JUMP JUMPDEST SWAP2 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI DUP3 PUSH2 0x1A01 SWAP2 DUP4 ADD PUSH2 0x1973 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x244 JUMPI PUSH1 0xA0 SWAP3 PUSH2 0x1A24 SWAP2 DUP4 ADD PUSH2 0x1973 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE ADD MLOAD PUSH1 0xA0 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP1 PUSH2 0x1A60 SWAP2 DUP2 ADD SWAP1 PUSH2 0x18B4 JUMP JUMPDEST SWAP1 DUP2 MLOAD SWAP2 PUSH2 0x1A70 PUSH2 0xAE0 DUP5 PUSH2 0x126C JUMP JUMPDEST PUSH2 0x1B3A JUMPI PUSH1 0x20 DUP4 MLOAD EQ PUSH2 0x1AF1 JUMPI DUP3 MLOAD SWAP4 PUSH1 0x40 DUP6 EQ PUSH2 0x1AA3 JUMPI PUSH1 0x40 MLOAD PUSH4 0x27755B91 PUSH1 0xE1 SHL DUP2 MSTORE DUP1 PUSH2 0x984 DUP7 PUSH1 0x4 DUP4 ADD PUSH2 0xA56 JUMP JUMPDEST PUSH2 0x225 PUSH2 0x1AEC PUSH2 0x1AD7 PUSH2 0x1AC3 DUP8 PUSH1 0x20 DUP1 DUP1 SWAP10 SWAP12 PUSH2 0x4F3 SWAP12 ADD ADD SWAP2 ADD PUSH2 0x195D JUMP JUMPDEST SWAP7 SWAP1 SWAP6 ADD MLOAD PUSH1 0x20 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x19B5 JUMP JUMPDEST SWAP3 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST PUSH2 0x1FD6 JUMP JUMPDEST SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x1B07 DUP6 PUSH2 0x193A JUMP JUMPDEST GT PUSH2 0x1B1F JUMPI PUSH1 0x20 DUP1 PUSH2 0x4F3 SWAP5 SWAP6 ADD MLOAD SWAP3 ADD MLOAD SWAP2 PUSH2 0x1E49 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xBFF1AC65 PUSH1 0xE0 SHL DUP2 MSTORE DUP1 PUSH2 0x984 DUP7 PUSH1 0x4 DUP4 ADD PUSH2 0xA56 JUMP JUMPDEST POP SWAP2 POP POP PUSH1 0x0 SWAP1 JUMP JUMPDEST SWAP2 PUSH1 0x0 SWAP3 DUP4 SWAP3 PUSH1 0x20 DUP4 MLOAD SWAP4 ADD SWAP2 GAS CALL PUSH2 0x1B5A PUSH2 0x1329 JUMP JUMPDEST SWAP1 ISZERO PUSH2 0x64F JUMPI POP JUMP JUMPDEST PUSH1 0x40 SWAP1 DUP2 MLOAD PUSH2 0x1B72 DUP4 DUP3 PUSH2 0x44F JUMP JUMPDEST PUSH1 0x12 DUP2 MSTORE PUSH18 0x11DA585B9BC814DB585C9D0815D85B1B195D PUSH1 0x72 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP2 PUSH2 0x1B9E DUP2 MLOAD SWAP2 DUP3 PUSH2 0x44F JUMP JUMPDEST PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x20 SWAP4 SWAP3 DUP2 DUP5 MSTORE DUP5 DUP5 ADD CALLDATACOPY PUSH1 0x0 DUP3 DUP3 ADD DUP5 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND ADD ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 PUSH2 0x4F3 SWAP5 SWAP3 PUSH2 0x1BEE SWAP3 DUP6 MSTORE PUSH1 0x60 PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x60 DUP6 ADD SWAP2 PUSH2 0x1BAF JUMP JUMPDEST SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0xA31 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP3 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 DUP4 CALLDATACOPY DUP2 ADD PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F503 DUP2 MSTORE SUB ADD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SHL SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xFE SHL SUB DUP2 AND SUB PUSH2 0xF48 JUMPI JUMP JUMPDEST PUSH2 0x1C56 DUP2 SLOAD PUSH2 0x1359 JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x1C60 JUMPI POP POP JUMP JUMPDEST DUP2 PUSH1 0x1F PUSH1 0x0 SWAP4 GT PUSH1 0x1 EQ PUSH2 0x1C72 JUMPI POP SSTORE JUMP JUMPDEST DUP2 DUP4 MSTORE PUSH1 0x20 DUP4 KECCAK256 PUSH2 0x1C8E SWAP2 PUSH1 0x1F ADD PUSH1 0x5 SHR DUP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x16C4 JUMP JUMPDEST DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 SWAP1 DUP2 SLOAD DUP4 PUSH1 0x1 SHL SWAP1 DUP5 NOT DUP6 PUSH1 0x3 SHL SHR NOT AND OR SWAP1 SSTORE SSTORE JUMP JUMPDEST SWAP2 PUSH1 0x20 PUSH2 0x4F3 SWAP4 DUP2 DUP2 MSTORE ADD SWAP2 PUSH2 0x1BAF JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x1CC8 DUP4 PUSH2 0x1393 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x1DBE JUMPI DUP1 MLOAD PUSH1 0x20 DUP3 ADD KECCAK256 PUSH2 0x1CE1 CALLDATASIZE DUP6 DUP6 PUSH2 0x4A1 JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD KECCAK256 SUB PUSH2 0x1D9F JUMPI POP SWAP1 DUP2 PUSH2 0x1D28 PUSH2 0x1D1E DUP4 PUSH32 0xCF95BBFE6F870F8CC40482DC3DCCDAFD268F0E9CE0A4F24EA1BEA9BE64E505FF SWAP6 PUSH2 0x1BFC JUMP JUMPDEST DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1D63 PUSH2 0x1D5E DUP6 PUSH1 0x0 MSTORE PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F502 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x1C4C JUMP JUMPDEST PUSH2 0x1D90 PUSH2 0x1D7E PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2F3F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH2 0xF79 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2F3F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST PUSH2 0x17F6 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP3 DUP4 PUSH2 0x1CAC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x781F2E39 PUSH1 0xE0 SHL DUP2 MSTORE SWAP4 DUP5 SWAP4 PUSH2 0x984 SWAP4 SWAP1 SWAP2 PUSH1 0x4 DUP7 ADD PUSH2 0x1BD0 JUMP JUMPDEST PUSH4 0x340C473D PUSH1 0xE1 SHL PUSH1 0x0 MSTORE PUSH1 0x4 DUP5 SWAP1 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1DDC PUSH2 0x15F6 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP2 PUSH32 0x37F248F492286AB572E2A1EE0BD5315F2AAE54A08B5871B294D657F3A1F1D007 DUP4 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x40 DUP2 MSTORE PUSH2 0x1E1C PUSH1 0x60 DUP3 PUSH2 0x44F JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP3 PUSH2 0x1901 PUSH1 0xF0 SHL DUP5 MSTORE PUSH1 0x22 DUP4 ADD MSTORE PUSH1 0x42 DUP3 ADD MSTORE PUSH1 0x42 DUP2 MSTORE PUSH2 0x15CA PUSH1 0x62 DUP3 PUSH2 0x44F JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ISZERO PUSH2 0x1F33 JUMPI PUSH1 0x40 MLOAD SWAP3 PUSH1 0x4 DUP5 ADD SWAP5 PUSH1 0x24 DUP6 ADD SWAP6 PUSH1 0x44 DUP7 ADD SWAP3 DUP6 EXTCODESIZE ISZERO PUSH2 0x1EB3 JUMPI POP SWAP2 DUP7 SWAP4 SWAP2 PUSH1 0x20 SWAP6 SWAP4 PUSH4 0xB135D3F PUSH1 0xE1 SHL DUP9 MSTORE MSTORE PUSH1 0x40 DUP5 MSTORE DUP2 MLOAD DUP6 ADD DUP1 SWAP3 PUSH1 0x4 GAS STATICCALL SWAP4 PUSH1 0x44 RETURNDATASIZE ADD SWAP2 GAS STATICCALL SWAP2 MLOAD PUSH4 0xB135D3F PUSH1 0xE1 SHL EQ SWAP2 AND AND SWAP1 JUMP JUMPDEST SWAP8 SWAP7 POP POP SWAP1 POP DUP2 MLOAD DUP1 PUSH1 0x40 EQ PUSH2 0x1F0E JUMPI PUSH1 0x41 EQ PUSH2 0x1ED0 JUMPI POP POP POP POP JUMP JUMPDEST PUSH1 0x20 SWAP3 SWAP4 SWAP6 POP PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x0 BYTE DUP4 MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 MSTORE JUMPDEST PUSH1 0x0 MSTORE ADD MLOAD PUSH1 0x40 MSTORE PUSH1 0x20 PUSH1 0x1 PUSH1 0x80 PUSH1 0x0 DUP3 GAS STATICCALL MLOAD XOR PUSH1 0x60 SHL RETURNDATASIZE GT SWAP2 PUSH1 0x0 PUSH1 0x60 MSTORE PUSH1 0x40 MSTORE JUMP JUMPDEST POP PUSH1 0x20 SWAP3 SWAP4 SWAP6 POP PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x1B DUP2 PUSH1 0xFF SHR ADD DUP5 MSTORE PUSH1 0x1 DUP1 PUSH1 0xFF SHL SUB AND PUSH1 0x60 MSTORE PUSH2 0x1EE9 JUMP JUMPDEST POP POP POP POP PUSH1 0x0 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x484 PUSH1 0x1 PUSH1 0x2D PUSH1 0x40 MLOAD DUP1 SWAP6 PUSH13 0x1131B430B63632B733B2911D11 PUSH1 0x99 SHL PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x1F72 DUP2 MLOAD DUP1 SWAP3 PUSH1 0x20 DUP7 DUP7 ADD SWAP2 ADD PUSH2 0xA0E JUMP JUMPDEST DUP2 ADD PUSH1 0x11 PUSH1 0xF9 SHL DUP4 DUP3 ADD MSTORE SUB ADD PUSH1 0x1E NOT DUP2 ADD DUP6 MSTORE ADD DUP4 PUSH2 0x44F JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 LT ISZERO PUSH2 0x1110 JUMPI PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP2 SWAP1 PUSH2 0x1FBF DUP5 SWAP3 DUP3 DUP2 MLOAD SWAP5 DUP6 SWAP3 ADD PUSH2 0xA0E JUMP JUMPDEST ADD SWAP1 DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x244 JUMPI MLOAD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP1 PUSH1 0x0 SWAP4 PUSH1 0xA0 DUP3 ADD SWAP5 DUP6 MLOAD PUSH32 0x7FFFFFFF800000007FFFFFFFFFFFFFFFDE737D56D38BCF4279DCE5617E3192A8 LT PUSH2 0x21B3 JUMPI PUSH1 0x20 DUP4 ADD SWAP2 PUSH32 0xFF1A2A9176D650E4A99DEDB58F1793003935130579FE17B5A3F698AC5B00E634 PUSH2 0x2048 DUP5 MLOAD PUSH1 0x60 DUP8 ADD MLOAD PUSH2 0x2042 DUP2 PUSH2 0x12B7 JUMP JUMPDEST SWAP2 PUSH2 0x2340 JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD KECCAK256 SUB PUSH2 0x21BC JUMPI PUSH2 0x2060 PUSH2 0x2065 SWAP2 PUSH2 0x21C6 JUMP JUMPDEST PUSH2 0x1F3C JUMP JUMPDEST PUSH2 0x207A DUP4 MLOAD PUSH1 0x40 DUP7 ADD MLOAD PUSH2 0x2042 DUP5 MLOAD DUP3 PUSH2 0x12D3 JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 PUSH1 0x20 DUP2 MLOAD SWAP2 ADD KECCAK256 SUB PUSH2 0x21B3 JUMPI PUSH1 0x1 PUSH1 0xF8 SHL PUSH1 0x1 PUSH1 0xF8 SHL PUSH2 0x20B3 PUSH2 0x20A5 DUP7 MLOAD PUSH2 0x1F8D JUMP JUMPDEST MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 JUMP JUMPDEST AND SUB PUSH2 0x21B3 JUMPI PUSH2 0x20D0 PUSH1 0x20 SWAP3 PUSH1 0x0 SWAP3 POP MLOAD PUSH1 0x40 MLOAD SWAP2 DUP3 DUP1 SWAP3 PUSH2 0xEAE JUMP JUMPDEST SUB SWAP1 PUSH1 0x2 GAS STATICCALL ISZERO PUSH2 0x21AE JUMPI PUSH1 0x20 PUSH1 0x0 PUSH2 0x2106 DUP2 MLOAD PUSH2 0x20FA DUP6 MLOAD PUSH2 0x225 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 DUP9 DUP5 ADD PUSH2 0x1FA9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 DUP1 SWAP3 PUSH2 0xEAE JUMP JUMPDEST SUB SWAP1 PUSH1 0x2 GAS STATICCALL ISZERO PUSH2 0x21AE JUMPI PUSH1 0x80 PUSH1 0x0 MLOAD SWAP2 ADD SWAP4 PUSH1 0x0 DUP1 DUP7 MLOAD DUP6 PUSH2 0x2159 DUP6 MLOAD PUSH2 0x225 DUP11 PUSH1 0x40 MLOAD SWAP5 DUP6 SWAP4 PUSH1 0x20 DUP6 ADD SWAP8 DUP13 DUP10 SWAP2 SWAP3 PUSH1 0x80 SWAP4 SWAP7 SWAP6 SWAP5 SWAP2 SWAP7 PUSH1 0xA0 DUP5 ADD SWAP8 DUP5 MSTORE PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x100 GAS STATICCALL SWAP5 PUSH2 0x2169 PUSH2 0x1329 JUMP JUMPDEST DUP1 MLOAD SWAP7 DUP1 PUSH2 0x21A5 JUMPI JUMPDEST PUSH2 0x2185 JUMPI POP PUSH2 0x4F3 SWAP6 POP MLOAD SWAP1 MLOAD SWAP2 PUSH2 0x222D JUMP JUMPDEST PUSH1 0x1 SWAP7 PUSH2 0x21A1 SWAP7 POP DUP2 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP6 POP ADD SWAP3 POP PUSH2 0x1FC7 SWAP2 POP POP JUMP JUMPDEST EQ SWAP1 JUMP JUMPDEST POP DUP7 ISZERO ISZERO PUSH2 0x2172 JUMP JUMPDEST PUSH2 0x1F9D JUMP JUMPDEST SWAP5 POP POP POP POP POP SWAP1 JUMP JUMPDEST POP SWAP5 POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4F3 SWAP2 PUSH2 0x21D8 PUSH1 0x60 DUP4 PUSH2 0x44F JUMP JUMPDEST PUSH1 0x40 DUP3 MSTORE PUSH32 0x4142434445464748494A4B4C4D4E4F505152535455565758595A616263646566 PUSH1 0x20 DUP4 ADD MSTORE PUSH32 0x6768696A6B6C6D6E6F707172737475767778797A303132333435363738392D5F PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x23EC JUMP JUMPDEST SWAP4 SWAP2 SWAP1 SWAP3 SWAP4 DUP4 ISZERO DUP1 ISZERO PUSH2 0x231D JUMPI JUMPDEST DUP1 ISZERO PUSH2 0x2315 JUMPI JUMPDEST DUP1 ISZERO PUSH2 0x22FD JUMPI JUMPDEST PUSH2 0x22F3 JUMPI PUSH2 0x2257 DUP4 DUP7 PUSH2 0x2494 JUMP JUMPDEST ISZERO PUSH2 0x22F3 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 ADD MSTORE PUSH1 0x20 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH32 0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC63254F PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 PUSH1 0xC0 DUP2 PUSH1 0x5 PUSH1 0x0 NOT STATICCALL ISZERO PUSH2 0x244 JUMPI PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP5 PUSH2 0x22ED SWAP4 DUP7 PUSH2 0x22E7 SWAP5 MLOAD DUP2 DUP2 DUP10 MULMOD SWAP5 MULMOD SWAP2 PUSH2 0x256F JUMP JUMPDEST SWAP2 PUSH2 0xF20 JUMP JUMPDEST SWAP1 ADDMOD ISZERO SWAP1 JUMP JUMPDEST POP POP POP POP POP PUSH1 0x0 SWAP1 JUMP JUMPDEST POP PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 LT ISZERO PUSH2 0x2249 JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0x2242 JUMP JUMPDEST POP PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 LT ISZERO PUSH2 0x223B JUMP JUMPDEST DUP2 PUSH1 0x40 MLOAD SWAP2 DUP3 CALLDATACOPY KECCAK256 SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 SWAP5 SWAP4 SWAP3 SWAP1 DUP4 DUP2 GT ISZERO PUSH2 0x23B2 JUMPI JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x23AA JUMPI JUMPDEST POP DUP3 DUP2 LT PUSH2 0x2367 JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP5 POP SWAP2 DUP3 SWAP1 SUB SWAP2 ADD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND JUMPDEST DUP2 DUP2 ADD MLOAD DUP6 DUP3 ADD MSTORE PUSH1 0x1F NOT ADD SWAP1 DUP2 ISZERO PUSH2 0x2394 JUMPI SWAP1 PUSH2 0x237B JUMP JUMPDEST POP POP PUSH1 0x40 DUP2 DUP5 ADD PUSH1 0x0 PUSH1 0x20 DUP3 ADD MSTORE ADD PUSH1 0x40 MSTORE DUP3 MSTORE JUMP JUMPDEST SWAP1 POP CODESIZE PUSH2 0x235A JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x2351 JUMP JUMPDEST SWAP1 PUSH2 0x23C4 DUP3 PUSH2 0x486 JUMP JUMPDEST PUSH2 0x23D1 PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x44F JUMP JUMPDEST DUP3 DUP2 MSTORE DUP1 SWAP3 PUSH2 0x23E2 PUSH1 0x1F NOT SWAP2 PUSH2 0x486 JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST SWAP1 DUP2 MLOAD ISZERO PUSH2 0x248A JUMPI SWAP1 PUSH2 0x2419 PUSH2 0x2414 PUSH2 0x240D PUSH2 0x2408 DUP5 MLOAD PUSH2 0x1C34 JUMP JUMPDEST PUSH2 0x12C5 JUMP JUMPDEST PUSH1 0x3 SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH2 0x23BA JUMP JUMPDEST SWAP2 PUSH1 0x20 DUP4 ADD SWAP1 DUP3 DUP1 MLOAD ADD SWAP1 PUSH1 0x20 DUP3 ADD SWAP3 DUP4 MLOAD SWAP5 PUSH1 0x0 DUP6 MSTORE JUMPDEST DUP4 DUP2 LT PUSH2 0x2440 JUMPI POP POP POP POP MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x4 SWAP2 ADD SWAP2 PUSH1 0x1 PUSH1 0x3F DUP5 MLOAD DUP3 DUP3 DUP3 PUSH1 0x12 SHR AND DUP9 ADD ADD MLOAD DUP5 MSTORE8 DUP3 DUP3 DUP3 PUSH1 0xC SHR AND DUP9 ADD ADD MLOAD DUP4 DUP6 ADD MSTORE8 DUP3 DUP3 DUP3 PUSH1 0x6 SHR AND DUP9 ADD ADD MLOAD PUSH1 0x2 DUP6 ADD MSTORE8 AND DUP6 ADD ADD MLOAD PUSH1 0x3 DUP3 ADD MSTORE8 ADD SWAP1 PUSH2 0x2431 JUMP JUMPDEST POP POP PUSH2 0x4F3 PUSH2 0x1314 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP2 LT DUP1 ISZERO SWAP1 PUSH2 0x2557 JUMPI JUMPDEST DUP1 ISZERO PUSH2 0x2546 JUMPI JUMPDEST PUSH2 0x253F JUMPI PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 PUSH32 0x5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B SWAP1 DUP3 SWAP1 DUP2 PUSH32 0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC DUP3 MULMOD SWAP1 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP2 DUP2 DUP1 MULMOD MULMOD ADDMOD ADDMOD SWAP1 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP1 MULMOD EQ SWAP1 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP1 JUMP JUMPDEST POP DUP1 ISZERO DUP1 ISZERO PUSH2 0x24B4 JUMPI POP DUP2 ISZERO PUSH2 0x24B4 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP3 LT ISZERO PUSH2 0x24AD JUMP JUMPDEST SWAP1 SWAP3 PUSH1 0x0 SWAP3 SWAP1 DUP4 PUSH1 0xFF DUP2 DUP5 ISZERO DUP1 PUSH2 0x2B66 JUMPI JUMPDEST PUSH2 0x2B5B JUMPI PUSH2 0x258F DUP9 DUP8 PUSH2 0x2B6E JUMP JUMPDEST SWAP3 SWAP1 SWAP2 DUP3 ISZERO DUP1 PUSH2 0x2B53 JUMPI JUMPDEST PUSH2 0x2B18 JUMPI JUMPDEST POP DUP6 DUP2 SHR PUSH1 0x2 DUP7 PUSH1 0xFE SHR AND ADD JUMPDEST ISZERO PUSH2 0x2AFF JUMPI PUSH1 0x1 DUP7 DUP3 SHR AND PUSH1 0x2 DUP7 DUP4 SHR PUSH1 0x1 SHL AND ADD PUSH1 0x1 DUP2 EQ PUSH2 0x2AB4 JUMPI JUMPDEST PUSH1 0x2 DUP2 EQ PUSH2 0x2AA7 JUMPI JUMPDEST PUSH1 0x3 EQ PUSH2 0x2A9A JUMPI JUMPDEST PUSH1 0x1 SWAP9 PUSH1 0x0 NOT SWAP2 SWAP1 SWAP2 ADD SWAP7 SWAP5 SWAP6 SWAP5 DUP10 SWAP5 SWAP4 SWAP3 SWAP2 JUMPDEST DUP9 PUSH1 0x0 NOT GT PUSH2 0x266D JUMPI POP POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD SWAP2 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x20 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MSTORE PUSH1 0x20 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x2 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH1 0x60 SHL SUB PUSH1 0x60 SHL NOT PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 PUSH1 0xC0 DUP2 PUSH1 0x5 PUSH1 0x0 NOT STATICCALL ISZERO PUSH2 0x244 JUMPI SWAP1 MLOAD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 MULMOD SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 SWAP7 SWAP8 SWAP9 PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH1 0x60 SHL SUB PUSH1 0x60 SHL NOT DUP7 PUSH1 0x2 MULMOD SWAP1 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP3 DUP1 MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP2 DUP4 MULMOD SWAP3 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP3 SWAP1 MULMOD SWAP2 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP2 SWAP1 DUP16 DUP3 DUP2 DUP4 ADDMOD SWAP2 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 DUP3 SUB SWAP1 ADDMOD MULMOD PUSH1 0x3 MULMOD SWAP9 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP4 MULMOD SWAP13 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 MULMOD SWAP2 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP1 DUP3 PUSH1 0x2 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP12 DUP1 MULMOD ADDMOD SWAP9 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 DUP3 SWAP1 DUP2 SUB DUP12 ADDMOD SWAP1 MULMOD SWAP7 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP9 SWAP1 DUP3 SWAP1 DUP5 MULMOD ADDMOD SWAP7 DUP12 PUSH1 0x2 DUP13 PUSH1 0x1 DUP14 DUP5 SHR AND SWAP3 SHR PUSH1 0x1 SHL AND ADD DUP1 ISZERO PUSH2 0x2A7D JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x2A32 JUMPI JUMPDEST PUSH1 0x2 DUP2 EQ PUSH2 0x2A27 JUMPI JUMPDEST PUSH1 0x3 EQ PUSH2 0x2A1E JUMPI JUMPDEST DUP3 ISZERO PUSH2 0x2A0B JUMPI PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP9 SWAP1 DUP3 SWAP1 DUP16 SWAP1 MULMOD ADDMOD SWAP1 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP10 DUP3 SUB SWAP1 DUP3 SWAP1 DUP6 SWAP1 MULMOD ADDMOD SWAP8 DUP2 ISZERO PUSH2 0x28D1 JUMPI JUMPDEST PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP10 DUP1 MULMOD SWAP9 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP11 MULMOD SWAP3 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP11 SWAP1 MULMOD SWAP13 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP5 SWAP1 MULMOD SWAP9 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP1 DUP3 PUSH1 0x2 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP6 DUP2 SUB DUP2 DUP7 DUP1 MULMOD ADDMOD ADDMOD SWAP8 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP4 DUP5 SWAP2 MULMOD SWAP2 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 DUP3 SWAP1 DUP11 DUP3 SUB SWAP1 ADDMOD MULMOD ADDMOD SWAP5 SWAP9 JUMPDEST PUSH1 0x0 NOT ADD SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x25EF JUMP JUMPDEST DUP9 PUSH2 0x27F4 JUMPI SWAP11 SWAP2 SWAP8 POP SWAP1 SWAP6 SWAP1 POP PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP2 PUSH1 0x2 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT MULMOD SWAP11 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP13 DUP1 MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP2 DUP14 MULMOD SWAP13 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP3 SWAP1 MULMOD SWAP12 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP2 DUP12 DUP2 SUB DUP3 ADDMOD SWAP1 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP13 SWAP1 ADDMOD MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 PUSH1 0x3 MULMOD SWAP2 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP14 MULMOD SWAP9 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 MULMOD SWAP12 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP1 DUP3 PUSH1 0x2 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP5 DUP1 MULMOD ADDMOD SWAP12 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP4 DUP5 SWAP2 MULMOD SWAP2 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 DUP3 SWAP1 DUP15 DUP3 SUB SWAP1 ADDMOD SWAP1 MULMOD ADDMOD SWAP5 PUSH2 0x28C0 JUMP JUMPDEST PUSH1 0x1 SWAP13 POP SWAP1 SWAP11 DUP13 SWAP9 POP SWAP1 SWAP7 POP SWAP1 POP PUSH2 0x28C0 JUMP JUMPDEST POP POP DUP4 DUP6 PUSH2 0x27B3 JUMP JUMPDEST DUP6 SWAP3 POP DUP5 SWAP2 POP PUSH2 0x27AB JUMP JUMPDEST PUSH32 0x6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296 SWAP3 POP PUSH32 0x4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5 SWAP2 POP PUSH2 0x27A2 JUMP JUMPDEST POP POP POP SWAP10 SWAP6 SWAP9 SWAP5 PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH1 0x60 SHL SUB PUSH1 0x60 SHL NOT SUB SWAP5 PUSH2 0x28C0 JUMP JUMPDEST SWAP3 POP DUP1 SWAP7 POP SWAP6 DUP2 SWAP3 PUSH2 0x25DB JUMP JUMPDEST SWAP7 SWAP8 POP DUP8 SWAP7 DUP10 SWAP5 POP PUSH2 0x25D3 JUMP JUMPDEST PUSH32 0x6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296 SWAP9 POP PUSH32 0x4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5 SWAP5 POP PUSH2 0x25CA JUMP JUMPDEST PUSH1 0x0 NOT ADD PUSH1 0x1 DUP7 DUP3 SHR AND PUSH1 0x2 DUP7 DUP4 SHR PUSH1 0x1 SHL AND ADD PUSH2 0x25AC JUMP JUMPDEST SWAP5 SWAP6 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2EFF DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 SWAP7 DUP3 SUB SWAP1 ADDMOD SWAP5 DUP5 DUP7 ISZERO DUP1 PUSH2 0x2B4B JUMPI JUMPDEST ISZERO PUSH2 0x259F JUMPI SWAP9 POP POP POP POP POP POP POP POP POP SWAP1 JUMP JUMPDEST POP PUSH1 0x1 PUSH2 0x2B39 JUMP JUMPDEST POP DUP4 ISZERO PUSH2 0x259A JUMP JUMPDEST SWAP7 POP POP POP POP POP POP POP SWAP1 JUMP JUMPDEST POP DUP4 ISZERO PUSH2 0x2581 JUMP JUMPDEST SWAP2 SWAP1 PUSH32 0x6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296 PUSH32 0x4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5 SWAP2 DUP1 ISZERO PUSH2 0x2D22 JUMPI DUP5 PUSH2 0xC5A SWAP5 SWAP6 DUP4 EQ DUP1 PUSH2 0x2D19 JUMPI JUMPDEST ISZERO PUSH2 0x2D04 JUMPI POP PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 POP DUP3 PUSH1 0x2 MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP2 DUP1 MULMOD SWAP3 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP5 DUP5 MULMOD SWAP2 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP6 SWAP1 MULMOD SWAP3 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP2 SWAP1 DUP2 PUSH1 0x1 DUP3 ADDMOD SWAP1 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 PUSH32 0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFE SWAP1 ADDMOD MULMOD PUSH1 0x3 MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP1 DUP5 PUSH1 0x2 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP4 DUP1 MULMOD ADDMOD SWAP3 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT PUSH1 0x1 DUP7 MULMOD SWAP6 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 PUSH1 0x1 SWAP1 MULMOD SWAP5 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP4 DUP5 SWAP2 MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP2 SUB SWAP3 SWAP1 SWAP2 DUP3 SWAP1 DUP7 DUP3 SUB SWAP1 ADDMOD SWAP1 MULMOD ADDMOD SWAP1 PUSH2 0x2E44 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 PUSH2 0x2D10 SWAP4 PUSH2 0x2D28 JUMP JUMPDEST SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0x2E44 JUMP JUMPDEST POP DUP2 DUP5 EQ PUSH2 0x2BC7 JUMP JUMPDEST POP SWAP3 POP SWAP1 JUMP JUMPDEST SWAP2 SWAP4 SWAP1 DUP1 ISZERO PUSH2 0x2E3B JUMPI PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP2 SUB SWAP4 DUP5 SWAP1 DUP3 SWAP1 PUSH1 0x1 SWAP1 MULMOD ADDMOD SWAP4 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP4 DUP3 SUB SWAP1 DUP3 SWAP1 PUSH1 0x1 SWAP1 MULMOD ADDMOD SWAP3 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP5 DUP1 MULMOD SWAP4 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP6 MULMOD SWAP3 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP6 SWAP1 MULMOD SWAP5 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP1 DUP8 PUSH1 0x2 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT DUP7 DUP2 SUB DUP2 DUP6 DUP1 MULMOD ADDMOD ADDMOD SWAP6 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP3 DUP4 SWAP1 DUP7 SWAP1 MULMOD SWAP2 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 DUP3 SWAP1 DUP10 DUP3 SUB SWAP1 ADDMOD MULMOD ADDMOD SWAP3 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 PUSH1 0x1 MULMOD SWAP2 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 PUSH1 0x1 MULMOD SWAP1 JUMP JUMPDEST POP PUSH1 0x1 SWAP2 POP DUP2 SWAP1 JUMP JUMPDEST SWAP2 SWAP1 SWAP3 PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MSTORE PUSH1 0x20 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH1 0x60 SHL SUB PUSH1 0x60 SHL NOT PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x20 DUP2 PUSH1 0xC0 DUP2 PUSH1 0x5 PUSH1 0x0 NOT STATICCALL ISZERO PUSH2 0x244 JUMPI MLOAD SWAP3 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP1 DUP5 SWAP1 MULMOD SWAP3 PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 MULMOD PUSH1 0x1 PUSH1 0x60 SHL PUSH4 0xFFFFFFFF PUSH1 0xC0 SHL SUB NOT SWAP2 SWAP1 DUP3 SWAP1 DUP1 MULMOD SWAP1 MULMOD SWAP2 JUMP INVALID MOD 0x27 0xF7 0x2A CREATE 0xE6 DELEGATECALL SLT NOT JUMPDEST 0xD DUP11 0xCB 0xE4 CODESIZE 0xB2 DUP1 SWAP1 0xDD SLOAD JUMPDEST PUSH30 0x2331FCCF77723561F500FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAAD 0xA7 OR SWAP15 DUP5 RETURN 0xB9 0xCA 0xC2 0xFC PUSH4 0x25513608 SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC0627F72AF0E6F412195B0D DUP11 0xCB 0xE4 CODESIZE 0xB2 DUP1 SWAP1 0xDD SLOAD JUMPDEST PUSH30 0x2331FCCF77723561F501A2646970667358221220890C9D20B5FC4DF99BDE 0xD2 SLOAD BLOBHASH SLT ISZERO DUP11 SAR SWAP4 EXTCODEHASH AND DUP15 0x2E DUP5 RETURNDATASIZE 0xC BYTE ISZERO LOG2 SELFDESTRUCT ORIGIN 0xCE DUP13 PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ", + "sourceMap": "1195:14720:16:-:0;;;;;;;;;-1:-1:-1;1195:14720:16;1266:232:7;1195:14720:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;1195:14720:16;;;;;;;;;6785:16:18;1195:14720:16;;;6785:16:18;1195:14720:16;;6785:16:18;;;;;;1195:14720:16;;;;;;;;;;;;;;;6785:16:18;;;;;;;;;;:::i;:::-;1195:14720:16;:::i;:::-;;;;;;;;;;;;-1:-1:-1;1195:14720:16;;;;;;;;-1:-1:-1;;1195:14720:16;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;:::o;:::-;;;;;;-1:-1:-1;;1195:14720:16;;;;4296:42:18;1195:14720:16;;;;;:::i;:::-;4008:70:18;;:::i;:::-;1195:14720:16;;;;;;;;;;4277:17:18;;1195:14720:16;;4277:17:18;;;1195:14720:16;4277:17:18;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1195:14720:16;4296:42:18;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1195:14720:16;4296:42:18;:::i;:::-;1195:14720:16;;;;;;;;;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;1195:14720:16;;;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;-1:-1:-1;;;;;;1195:14720:16;;;;;;;;;;;;-1:-1:-1;;1195:14720:16;;;;;;;437:10:14;1195:14720:16;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;1195:14720:16;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;3825:10:16;:26;3821:78;;7285:1698;;;1195:14720;7285:1698;;:::i;:::-;4845:275;;;1195:14720;-1:-1:-1;1195:14720:16;;;;;;;;;;;;;;;;;4845:275;-1:-1:-1;4845:275:16;;;;3825:10;;4845:275;;;;;;3821:78;3874:14;;;-1:-1:-1;3874:14:16;1195:14720;-1:-1:-1;3874:14:16;1195:14720;;;;;;;;;;;;;;;6785:16:18;;1195:14720:16;;;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;:::i;:::-;:::o;:::-;-1:-1:-1;;;;;1195:14720:16;;;;;;-1:-1:-1;;1195:14720:16;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;1195:14720:16;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;-1:-1:-1;;1195:14720:16;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;1195:14720:16;;;;4630:42:18;1195:14720:16;;4612:16:18;1195:14720:16;;4008:70:18;;:::i;:::-;1195:14720:16;;;;4612:16:18;;1195:14720:16;;;;;;;;;;;;;;4612:16:18;1195:14720:16;;;;-1:-1:-1;;1195:14720:16;;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;-1:-1:-1;1195:14720:16;;;;;;;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;3825:10;11195:42;3825:10;:26;3821:78;;-1:-1:-1;9796:3:16;9778:16;;;;;;-1:-1:-1;1195:14720:16;;;;;;;;:::i;:::-;9877:12;;;;:::i;:::-;9908:34;;;:::i;:::-;9907:35;9903:109;;1195:14720;;;;;;;;:::i;:::-;13525:31;;;;;10040:4;;13525:31;;;;:::i;:::-;13570:8;;13566:133;;9796:3;1195:14720;;9767:9;;13566:133;13525:31;13594:95;;;;;9903:109;-1:-1:-1;;;9969:28:16;;-1:-1:-1;;;;;;1195:14720:16;;;;9969:28;;1195:14720;;;;:::i;:::-;4078:10;11195:42;4078:10;:26;4074:70;;1195:14720;-1:-1:-1;10886:16:16;;;;;;1195:14720;10904:3;10929:8;10923:53;10929:8;1195:14720;10929:8;;;;:::i;:::-;1195:14720;;;;:::i;:::-;10946:14;:8;;;;;:::i;:::-;:14;1195:14720;;10962:13;:8;;;;;:::i;:::-;:13;;;;;:::i;:::-;1195:14720;;;:::i;:::-;10923:53;;:::i;:::-;1195:14720;10875:9;;4074:70;;;:::i;:::-;;;1195:14720;;;;;;-1:-1:-1;;1195:14720:16;;;;;-1:-1:-1;;;;;;;;;;;1195:14720:16;;;;;;;;;;-1:-1:-1;;1195:14720:16;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;;;:::i;:::-;3080:19:8;;2661:6;2687:4;2661:32;3076:57;;4008:70:18;;:::i;:::-;1195:14720:16;;;;;3828:1370:13;;-1:-1:-1;3828:1370:13;;;;-1:-1:-1;;;;;;;;;;;1195:14720:16;3828:1370:13;1195:14720:16;3828:1370:13;;;;;;;;;;-1:-1:-1;3828:1370:13;;;;-1:-1:-1;;;;;;;;;;;3828:1370:13;;;1195:14720:16;3828:1370:13;;-1:-1:-1;3828:1370:13;1195:14720:16;3828:1370:13;;;;;;;;;;;;1195:14720:16;3828:1370:13;;-1:-1:-1;3828:1370:13;;;;;;;;;1195:14720:16;3828:1370:13;;3076:57:8;4365:120;-1:-1:-1;4365:120:8;1195:14720:16;4365:120:8;;1195:14720:16;;;;;;-1:-1:-1;;1195:14720:16;;;;2687:4:8;2661:6;:32;3340:58;;1195:14720:16;;;-1:-1:-1;;;;;;;;;;;1195:14720:16;;;;;;;;;-1:-1:-1;;1195:14720:16;;;;-1:-1:-1;;;;;;;;;;;12045:73:16;1195:14720;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1195:14720:16;5870:21;;5866:72;;1195:14720;;;;;:::i;:::-;8939:42:18;-1:-1:-1;9026:3:18;1195:14720:16;;9007:17:18;;;;;9069:2;9049:9;;;;:::i;:::-;;1195:14720:16;9049:22:18;;:48;;;9026:3;9045:128;;9069:2;9191:9;;;;:::i;:::-;;1195:14720:16;9191:22:18;:73;;;9026:3;9187:157;;9375:9;9386:17;9375:9;1195:14720:16;9375:9:18;;;:::i;:::-;;9386:17;;;;:::i;:::-;;;:::i;:::-;1195:14720:16;8996:9:18;;9187:157;9319:9;9291:38;9319:9;;;:::i;:::-;;1195:14720:16;;-1:-1:-1;;;9291:38:18;;1195:14720:16;;;;9291:38:18;;;:::i;:::-;;;;9191:73;-1:-1:-1;;;;;;9225:18:18;9233:9;;;;:::i;:::-;;9225:18;:::i;:::-;9217:47;9191:73;;9045:128;9148:9;9124:34;9148:9;;;:::i;:::-;;1195:14720:16;;-1:-1:-1;;;9124:34:18;;1195:14720:16;;;;9124:34:18;;;:::i;9049:48::-;9075:9;9095:2;9075:9;;;;:::i;:::-;;1195:14720:16;9075:22:18;;9049:48;;9007:17;9424:34;9007:17;-1:-1:-1;;;;;;;;;;;1195:14720:16;;5866:72;5914:13;;;-1:-1:-1;5914:13:16;1195:14720;-1:-1:-1;5914:13:16;1195:14720;;;;;;;;-1:-1:-1;;1195:14720:16;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;1195:14720:16;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;1195:14720:16;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;;;;;;;;;668:13:14;;;1195:14720:16;668:33:14;;;:::i;:::-;704:15;-1:-1:-1;664:157:14;;939:55;4299:17:15;855:68:14;938:56;855:68;;:::i;:::-;1195:14720:16;;;;;845:79:14;4299:17:15;:::i;:::-;979:14:14;;;;;;:::i;:::-;939:55;;:::i;:::-;938:56;;1195:14720:16;938:56:14;934:112;;-1:-1:-1;1093:11:14;1116:9;1093:11;1116:9;1093:11;;;;:::i;:::-;1116:9;;;;:::i;:::-;1195:14720:16;;668:13:14;1195:14720:16;;;;;;:::i;:::-;1093:33:14;;;;;;:::i;:::-;1140:8;;1136:117;;1195:14720:16;;668:13:14;1195:14720:16;;;;;;:::i;934:112:14:-;1017:18;;;-1:-1:-1;1017:18:14;1195:14720:16;-1:-1:-1;1017:18:14;664:157;759:33;742:68;759:33;;:::i;:::-;-1:-1:-1;;;;742:68:14;1195:14720:16;;704:15:14;1195:14720:16;;;;;742:68:14;-1:-1:-1;742:68:14;1195:14720:16;;;;;;-1:-1:-1;;1195:14720:16;;;;;;2558:23:15;;:::i;:::-;1195:14720:16;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;2601:13:15;1195:14720:16;;;;2652:4:15;1195:14720:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1195:14720:16;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1195:14720:16;;;;;;;2660:4;1195:14720;;;;;;-1:-1:-1;;1195:14720:16;;;;;;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;4008:70:18;;;:::i;:::-;5200:1;5184:12;;:::i;:::-;:17;5180:66;;5283:5;;;:::i;5180:66::-;5224:11;;;;;1195:14720:16;5224:11:18;;1195:14720:16;;;;;;-1:-1:-1;;1195:14720:16;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;1195:14720:16;;;;;;-1:-1:-1;;;;;;1195:14720:16;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;1195:14720:16;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;1195:14720:16;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;1195:14720:16;;;;;;;11195:42;1195:14720;;;;;;-1:-1:-1;;1195:14720:16;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;10519:26;1195:14720;;;;;;:::i;:::-;11195:42;4078:10;:26;4074:70;;1195:14720;;;:::i;4074:70::-;;;:::i;:::-;;;1195:14720;;;;;;;:::i;:::-;4008:70:18;;;:::i;:::-;5864:12;;:::i;:::-;5890:19;5908:1;5890:19;;5886:86;;6009:5;;;;:::i;5886:86::-;5932:29;;;;;;1195:14720:16;;;5932:29:18;;1195:14720:16;;;;;;-1:-1:-1;;1195:14720:16;;;;;4299:17:15;1195:14720:16;;4299:17:15;:::i;1195:14720:16:-;;;;;;-1:-1:-1;;1195:14720:16;;;;;-1:-1:-1;;;;;;;;;;;1195:14720:16;;;;;;;;;;;;;-1:-1:-1;;1195:14720:16;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;6751:33:18;1195:14720:16;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1195:14720:16;;-1:-1:-1;;;;;;;;;;;1195:14720:16;;;;:::o;:::-;;:::i;7950:190:18:-;-1:-1:-1;;;;;;;;;;;1195:14720:16;-1:-1:-1;;;;;;;;;;;1195:14720:16;;;;;;;;7950:190:18;:::o;1195:14720:16:-;-1:-1:-1;;1195:14720:16;;;;;;;:::o;3391:339:15:-;;4299:17;3515:69;3391:339;;4299:17;:::i;:::-;3515:69;:::i;:::-;3511:185;;-1:-1:-1;;;;;;1195:14720:16;3391:339:15:o;3511:185::-;-1:-1:-1;;;1195:14720:16;3668:17:15:o;1195:14720:16:-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;;;;;;1195:14720:16;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;;1195:14720:16;;;;;;;;;;;;;-1:-1:-1;1195:14720:16:o;:::-;;;;;;7975:1;1195:14720;;;;;;;7975:1;1195:14720;;-1:-1:-1;;1195:14720:16;;:::o;:::-;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;;1195:14720:16;;;;;;;;;;;;:::o;7285:1698::-;;7546:12;;;1195:14720;;;7586:15;;;;;;;;;:::i;:::-;-1:-1:-1;;;1195:14720:16;-1:-1:-1;;;;;;1195:14720:16;7579:23;;;:::i;:::-;1195:14720;7579:72;1195:14720;;7680:35;;;;:::i;:::-;7733:27;2660:4;7733:27;;7729:93;;7959:15;:19;:15;7948:42;7959:15;;;:::i;:::-;:19;;;:::i;:::-;7948:42;;;;:::i;:::-;8009:9;-1:-1:-1;8038:3:16;1195:14720;;8020:16;;;;;8085:8;;;;:::i;:::-;;-1:-1:-1;;;8168:53:16;8129:16;8085:8;8129:16;:::i;:::-;-1:-1:-1;;;;;;1195:14720:16;;;8168:53;;8164:462;;8038:3;;1195:14720;;8009:9;;8164:462;8292:207;;;8524:29;;8164:462;8520:87;-1:-1:-1;;;;8567:40:16;-1:-1:-1;;;;;1195:14720:16;7975:1;1195:14720;;-1:-1:-1;742:68:14;8020:16:16;;;;8851:47;8020:16;;8881;8020;7575:1198;8881:16;;;;;:::i;8851:47::-;8847:86;;8975:1;7285:1698;:::o;8847:86::-;8921:1;8914:8;:::o;7729:93::-;-1:-1:-1;;;7787:20:16;;8728;1195:14720;;-1:-1:-1;742:68:14;7575:1198:16;8674:27;;;2660:4;8674:27;;;;;8670:93;;7575:1198;;8881:16;8851:47;7575:1198;;;7052:145:18;1195:14720:16;;7052:145:18;1195:14720:16;:::i;:::-;;;7052:145:18;:::o;1195:14720:16:-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;437:10:14;1195:14720:16;;;;;;;:::o;:::-;;7261:2:20;1195:14720:16;;;;;;;:::o;:::-;;2566:1:6;1195:14720:16;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;1530:1:6;1195:14720:16;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;1195:14720:16;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;7406:149:18;-1:-1:-1;1195:14720:16;7503:38:18;1195:14720:16;;;-1:-1:-1;1195:14720:16;;;;;-1:-1:-1;1195:14720:16;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;1195:14720:16;;;;;-1:-1:-1;1195:14720:16;;-1:-1:-1;1195:14720:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12420:546;1195:14720;;;;12553:39;;;12533:59;;:132;;;;;12420:546;12533:208;;;;12420:546;12533:281;;;;12420:546;12533:358;;;;12420:546;12516:422;;;1195:14720;12420:546;:::o;12516:422::-;12923:4;12916:11;:::o;12533:358::-;-1:-1:-1;;;12830:61:16;;-1:-1:-1;12533:358:16;;;:281;-1:-1:-1;;;12757:57:16;;;-1:-1:-1;12533:281:16;;:208;-1:-1:-1;;;12681:60:16;;;-1:-1:-1;12533:208:16;;:132;-1:-1:-1;;;12608:57:16;;;-1:-1:-1;12533:132:16;;11638:202;1938:12:1;;;1195:14720:16;2342:180:1;1998:15;;;;;;:::i;:::-;2961:193:0;;1998:15:1;2961:193:0;;;;;2062:15:1;2342:180;2062:15;;;;;;:::i;:::-;2961:193:0;;1998:15:1;2961:193:0;;;;;2230:14:1;;;1195:14720:16;2177:25:1;;;1195:14720:16;2115:23:1;;;1195:14720:16;2285:39:1;2300:23;;;;2115;2300;:::i;:::-;2285:39;;:::i;:::-;1998:15;1195:14720:16;;823:61:1;;-1:-1:-1;;;;;1195:14720:16;1938:12:1;2342:180;;1195:14720:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2342:180:1;1195:14720:16;;;;;;;;2342:180:1;1195:14720:16;4962:25:1;;1998:15;1195:14720:16;;1938:12:1;11777:55:16;;1195:14720;;;11195:42;1195:14720;;;;;;;11777:55;1195:14720;;;;11777:55;1195:14720;11777:55;1195:14720;11767:66;;11638:202;:::o;6239:154:18:-;1195:14720:16;;6239:154:18;1195:14720:16;;;;;;;;;6366:19:18;;;1195:14720:16;6366:19:18;;;;1195:14720:16;6366:19:18;;:::i;4641:475:15:-;4754:23;;:::i;:::-;1195:14720:16;;;;;;4958:22:15;1195:14720:16;;;;;;4998:25:15;1195:14720:16;;4817:282:15;1195:14720:16;4817:282:15;;1195:14720:16;4845:95:15;1195:14720:16;;;;;;;;;;5041:13:15;1195:14720:16;;;;5080:4:15;1195:14720:16;;;;;4817:282:15;;;;;;:::i;1579:906:7:-;1757:663;;;;;;;;;;;;;;;;;1372:120;1757:663;1372:120;;;;1757:663;;;;;;11120:189:18;11179:26;11194:10;11179:26;:::i;:::-;:59;;;;11120:189;11175:96;;3874:14:16;;;11288::18;;;;;11179:59;11232:4;;11194:10;11210:27;11179:59;;1195:14720:16;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;1195:14720:16;;-1:-1:-1;1195:14720:16;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;1195:14720:16;;;;9704:324:18;9796:19;;;:::i;:::-;9792:51;;1195:14720:16;;;:::i;:::-;9940:4:18;1195:14720:16;;;;;;;;;;;9954:14:18;1195:14720:16;;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;9999:22:18;1195:14720:16;;9999:22:18;1195:14720:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;9999:22:18;;;;;:::i;:::-;;;;9704:324::o;1195:14720:16:-;;;;;;;;;;6785:16:18;;1195:14720:16;;;;;;;;;;;;;;;;;;;;;;;9999:22:18;1195:14720:16;;9940:4:18;1195:14720:16;;9999:22:18;1195:14720:16;;;;;;;;;;;;;;;;;;;;;;;9921:9:18;1195:14720:16;;;;;;;;;;;;;;;9940:4:18;1195:14720:16;;;;;;;;;;;;;;;9792:51:18;1195:14720:16;;-1:-1:-1;;;9824:19:18;;1195:14720:16;;;9824:19:18;;;;;;:::i;1195:14720:16:-;;;;;;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;13997:1449::-;;;;14157:41;13997:1449;14157:41;;;;:::i;:::-;14234:21;;;14349:24;14348:25;14349:24;;;:::i;14348:25::-;14344:68;;14447:2;1195:14720;;14426:23;14422:604;;1195:14720;;15040:23;15061:2;15040:23;;15036:351;;15061:2;1195:14720;-1:-1:-1;;;15404:35:16;;1195:14720;15404:35;1195:14720;15404:35;;;;:::i;15036:351::-;15308:16;;15197:61;15104:42;;14447:2;15104:42;;;;15280:96;15104:42;;;;;;:::i;:::-;15208:24;;;;;14447:2;1195:14720;;;15197:61;;;;;;:::i;:::-;1195:14720;15061:2;1195:14720;15308:16;;;14447:2;15308:16;;1195:14720;;;;;;;;15308:16;15280:96;:::i;14422:604::-;1195:14720;;;;;-1:-1:-1;;;;;14477:19:16;1195:14720;14477:19;:::i;:::-;14469:48;14465:318;;14447:2;14824:92;14937:78;14824:92;;;;14990:24;;;14937:78;;:::i;14465:318::-;1195:14720;;-1:-1:-1;;;14729:39:16;;1195:14720;14729:39;1195:14720;14729:39;;;;:::i;14344:68::-;14389:12;;;;1195:14720;14389:12;:::o;13403:302::-;;13525:31;13403:302;;;13525:31;;;;;;;;;;:::i;:::-;13570:8;;13566:133;;13403:302;:::o;15758:155::-;1195:14720;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1195:14720:16;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1195:14720:16;;;;15758:155;:::o;1195:14720::-;;;;;;;;;;;;;-1:-1:-1;1195:14720:16;;;;;;;;-1:-1:-1;;1195:14720:16;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;10808:9:18;1195:14720:16;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1195:14720:16;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::o;:::-;;;-1:-1:-1;1195:14720:16;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;10367:575:18:-;;;10482:19;;;:::i;:::-;1195:14720:16;;10515:18:18;10511:52;;1195:14720:16;;;;;10577:17:18;1195:14720:16;;;;;:::i;:::-;;;;;;10598:16:18;10577:37;10573:151;;1195:14720:16;;;;;;10910:25:18;1195:14720:16;;:::i;:::-;;;-1:-1:-1;;1195:14720:16;;;;;10834:28:18;10841:21;;1195:14720:16;;10841:14:18;1195:14720:16;;;;;;;10841:21:18;10834:28;:::i;:::-;10872:22;;-1:-1:-1;;;;;;;;;;;1195:14720:16;10872:22:18;:::i;:::-;-1:-1:-1;;;;;;;;;;;1195:14720:16;;10872:22:18;10910:25;1195:14720:16;;10910:25:18;;;;;:::i;10573:151::-;1195:14720:16;;-1:-1:-1;;;10637:76:18;;1195:14720:16;;;10637:76:18;;1195:14720:16;;10637:76:18;;;;:::i;10511:52::-;-1:-1:-1;;;10532:1:18;10542:21;8728:20:16;1195:14720;;;;-1:-1:-1;742:68:14;5590:176:15;5721:17;;:::i;:::-;1195:14720:16;;;6311:35:15;;;1195:14720:16;1399:50:15;1195:14720:16;;;;;;;6311:35:15;;;;;;:::i;:::-;1195:14720:16;6301:46:15;;1195:14720:16;;5692:66:15;6311:35;5692:66;;1195:14720:16;;;;;;;;;;;;;;;5692:66:15;;;;;;:::i;1956:2062:12:-;;;1195:14720:16;;1956:2062:12;-1:-1:-1;;;;;1195:14720:16;;2118:20:12;2114:40;;2207:1805;;;;;;;;;;;;;;;;;;;;1195:14720:16;;;;;2207:1805:12;1195:14720:16;;;;;2207:1805:12;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2207:1805:12;;;;;1956:2062::o;2207:1805::-;;;;;;;;;;;;;;;1195:14720:16;;;2207:1805:12;;;;1956:2062::o;2207:1805::-;;;;;;;;;;1195:14720:16;2207:1805:12;;;;;;;;;;1195:14720:16;2207:1805:12;;;;;;;;1195:14720:16;2207:1805:12;;;;;;;;;;1195:14720:16;2207:1805:12;;;;1956:2062::o;2207:1805::-;;;;;;;;;;;;;;;;;;1195:14720:16;2207:1805:12;;;;;;;;;2114:40;2140:14;;;;1195:14720:16;2140:14:12;:::o;2643:34:20:-;;;;;1195:14720:16;;2643:34:20;;;;;;;;;1195:14720:16;;;2643:34:20;;;;;;1195:14720:16;;;:::i;:::-;;;2643:34:20;;;1195:14720:16;;;2643:34:20;;;1195:14720:16;;2643:34:20;;;;;;;:::i;:::-;1195:14720:16;;7178:27:20;2643:34;;;;;;;:::o;1986:4::-;1195:14720:16;;1986:4:20;;;;;;;;1195:14720:16;1986:4:20;;;1195:14720:16;1986:4:20;;1195:14720:16;;;;;;;;:::i;:::-;;;;;1986:4:20;;:::o;2396:14::-;;;;;;;;;1195:14720:16;2396:14:20;:::o;6711:2934::-;;;;1195:14720:16;6870:4:20;6894:14;;;1195:14720:16;;;2162:66:5;-1:-1:-1;6890:125:20;;7178:27;;;;2643:34;28057:42:11;7178:27:20;;7212:22;;;1195:14720:16;7236:27:20;;;:::i;:::-;28057:42:11;;:::i;:::-;7178:27:20;1195:14720:16;;;;7278:23:20;:46;7274:89;;7547:27;7516:64;7547:27;;:::i;:::-;7516:64;:::i;:::-;28057:42:11;7635:27:20;;7669;;;1195:14720:16;7698:54:20;1195:14720:16;;7698:54:20;;:::i;28057:42:11:-;7178:27:20;1195:14720:16;;;;7767:33:20;1195:14720:16;7178:27:20;1195:14720:16;;;;7804:28:20;7767:65;7763:108;;1195:14720:16;2643:34:20;;1195:14720:16;2643:34:20;;7987;;:30;;:34;:::i;:::-;2643;-1:-1:-1;;;;;;1195:14720:16;;2643:34:20;7987;:56;:79;7983:122;;1986:4;7178:27;8265:137;-1:-1:-1;8265:137:20;8563:27;;7669;1195:14720:16;1986:4:20;;;;;:::i;:::-;8550:42;;;;;;;;7178:27;-1:-1:-1;1986:4:20;8550:42;;8778:68;8795:30;;8778:68;7669:27;1195:14720:16;8778:68:20;;;;;;;:::i;:::-;7669:27;1195:14720:16;1986:4:20;;;;;:::i;:::-;8771:76;;8550:42;8771:76;;;;;8901:14;-1:-1:-1;8771:76:20;8901:14;;1195:14720:16;-1:-1:-1;1195:14720:16;;;;8877:61:20;1195:14720:16;;8877:61:20;1195:14720:16;7669:27:20;1195:14720:16;8877:61:20;;;7178:27;8877:61;;;;;1986:4;;;;;;;;;;;;1195:14720:16;;;1986:4:20;;;1195:14720:16;1986:4:20;;;1195:14720:16;1986:4:20;;;1195:14720:16;1986:4:20;1195:14720:16;1986:4:20;8877:61;9030:26;;2404:5;9030:26;;;;;:::i;:::-;1195:14720:16;;9491:16:20;;;;6711:2934;9487:60;;1195:14720:16;9565:73:20;1195:14720:16;;;;;9565:73:20;;:::i;9487:60::-;1776:4;;9516:26;;-1:-1:-1;9516:26:20;;7178:27;9516:26;;;;-1:-1:-1;9516:26:20;;-1:-1:-1;9516:26:20;;-1:-1:-1;;9516:26:20:i;:::-;:31;9509:38;:::o;9491:16::-;9463:14;;;;9491:16;;8771:76;;:::i;7983:122::-;8082:12;;;;;;;:::o;7274:89::-;7340:12;;;;;;;;:::o;985:132:6:-;1195:14720:16;;1078:32:6;;1195:14720:16;;;;:::i;:::-;;;;;;;;;;;;;;1078:32:6;:::i;1562:703:4:-;;;;;;1691:6;;:32;;;;1562:703;1691:42;;;;1562:703;1691:68;;;;1562:703;1687:111;;1821:39;;;;:::i;:::-;1820:40;1816:83;;3235:647:5;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3235:647:5;;;;;1195:14720:16;3235:647:5;1195:14720:16;3235:647:5;1195:14720:16;;3235:647:5;;;;-1:-1:-1;;;;;;;;;;;3235:647:5;2222:3:4;3235:647:5;;2132:64:4;3235:647:5;;2062:34:4;;;;1984:49;;2132:64;;:::i;:::-;2222:3;;:::i;:::-;2211:18;;2251:7;1562:703;:::o;1816:83::-;1876:12;;;;;1195:14720:16;1876:12:4;:::o;1691:68::-;1737:22;-1:-1:-1;;;;;;;;;;;1737:22:4;;;1691:68;;:42;1727:6;;;1691:42;;:32;1701:22;-1:-1:-1;;;;;;;;;;;1701:22:4;;;1691:32;;2879:281:0;2961:193;;;;;;;2879:281;:::o;16753:1115:9:-;16943:919;;1195:14720:16;;16753:1115:9;;;16943:919;;;;;;16753:1115;16943:919;;;;;;16753:1115;16943:919;;;;;;16753:1115;;;:::o;16943:919::-;;;;-1:-1:-1;16943:919:9;;;;;;6785:16:18;16943:919:9;;-1:-1:-1;;16943:919:9;;;;;;;;;;-1:-1:-1;;16943:919:9;;;;;;;;;;;;;;;;;;;;;;;;;;16753:1115::o;16943:919::-;;;;;;;;-1:-1:-1;16943:919:9;;;1195:14720:16;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;6785:16:18;1195:14720:16;6785:16:18;;1195:14720:16;;:::i;:::-;;;;;;;;:::o;1186:4022:6:-;;1195:14720:16;;1515:16:6;1511:31;;2503:69;2606:24;2547:25;2548:19;:15;1195:14720:16;;2548:15:6;:::i;:::-;:19;:::i;:::-;2571:1;2162:66:5;;;;2547:25:6;2606:24;:::i;:::-;2641:2537;;;;;;;;;;;;;;;;;1104:5;2641:2537;;;;;;;;;;;;;1186:4022;:::o;2641:2537::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1511:31;1195:14720:16;;;;:::i;12684:438:5:-;-1:-1:-1;;;;;;;;12774:6:5;;;;;:16;;12684:438;12774:42;;;;12684:438;12770:85;;-1:-1:-1;;;;;;;;1531:66:5;1802;;1531;;;1666;1531;12990:15;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;;;12966:15;12959:29;12952:57;13039:17;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;12902:15;13095:10;12684:438;:::o;12770:85::-;12832:12;;1195:14720:16;12832:12:5;:::o;12774:42::-;12796:6;;;12795:20;;12774:42;12795:20;12808:6;;;12774:42;;:16;-1:-1:-1;;;;;;;;;12784:6:5;;;12774:16;;13895:6587;;;1195:14720:16;;13895:6587:5;1195:14720:16;14174:3:5;1195:14720:16;14256:13:5;;;:30;;13895:6587;14252:44;;14322:25;;;;:::i;:::-;14366:5;;;;;14365:16;;;13895:6587;14362:211;;13895:6587;14586:5830;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14586:5830:5;;;;;1195:14720:16;;;14586:5830:5;;1195:14720:16;;;14586:5830:5;1195:14720:16;;;14586:5830:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;14586:5830:5;;;;-1:-1:-1;;;;;1531:66:5;;;14586:5830;;;;;1195:14720:16;14586:5830:5;1195:14720:16;14586:5830:5;1195:14720:16;;14586:5830:5;;;;;;-1:-1:-1;;;;;;;;1531:66:5;14586:5830;13895:6587;:::o;14586:5830::-;1531:66;;;;;;;;;-1:-1:-1;;;;;1531:66:5;;;14586:5830;;;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;14586:5830;-1:-1:-1;;;;;;;;14586:5830:5;;;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;;14586:5830;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;;;;;;14586:5830;1531:66;-1:-1:-1;;;;;;;;1531:66:5;14586:5830;;;;;;;1531:66;-1:-1:-1;;;;;;;;1531:66:5;14586:5830;;1531:66;-1:-1:-1;;;;;;;;1531:66:5;14586:5830;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;-1:-1:-1;;;;;;;;;;14586:5830:5;-1:-1:-1;;;;;;;;14586:5830:5;;;;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;;14586:5830;;1531:66;14586:5830;;;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;;;;14586:5830;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;1531:66:5;;;;;;;14586:5830;;1531:66;-1:-1:-1;;;;;;;;1531:66:5;14586:5830;;;;1531:66;;;;14586:5830;;;;;;;;-1:-1:-1;;;;;;;;14586:5830:5;;;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;14586:5830;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;;14586:5830;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;;14586:5830;1531:66;-1:-1:-1;;;;;;;;1531:66:5;14586:5830;-1:-1:-1;;;;;;;;1531:66:5;14586:5830;-1:-1:-1;;;;;;;;;;14586:5830:5;-1:-1:-1;;;;;;;;14586:5830:5;;;1531:66;14586:5830;;;;;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;;14586:5830;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;;14586:5830;;;;;;;;;;-1:-1:-1;;14586:5830:5;;;;;;;;;;;;;;;1531:66;;;-1:-1:-1;1531:66:5;;;-1:-1:-1;;;;;;;;;1531:66:5;-1:-1:-1;;;;;;;;;;14586:5830:5;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;14586:5830;-1:-1:-1;;;;;;;;14586:5830:5;;;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;;14586:5830;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;14586:5830;;;1531:66;14586:5830;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;;14586:5830;;-1:-1:-1;;;;;;;;1531:66:5;14586:5830;;1531:66;-1:-1:-1;;;;;;;;1531:66:5;14586:5830;;1531:66;-1:-1:-1;;;;;;;;1531:66:5;14586:5830;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;-1:-1:-1;;;;;;;;;;14586:5830:5;-1:-1:-1;;;;;;;;14586:5830:5;;;;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;;14586:5830;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;;14586:5830;;;;;;;;;;;;;;-1:-1:-1;14586:5830:5;;;;-1:-1:-1;14586:5830:5;;-1:-1:-1;14586:5830:5;-1:-1:-1;14586:5830:5;;;;;;;;;;;;-1:-1:-1;14586:5830:5;;-1:-1:-1;14586:5830:5;;;1938:66;;-1:-1:-1;2032:66:5;;-1:-1:-1;14586:5830:5;;;1531:66;;;;;;;-1:-1:-1;;;;;1531:66:5;;;14586:5830;;;;;;;;;;;;;;;;;;-1:-1:-1;14586:5830:5;;;;-1:-1:-1;14586:5830:5;;;1938:66;;-1:-1:-1;2032:66:5;;-1:-1:-1;14586:5830:5;;;1195:14720:16;;14586:5830:5;;;;;;;;;;;;;;;;14362:211;2032:66;;-1:-1:-1;;;;;;;;;;;2032:66:5;;;;14437:31;;14486:10;;14518:13;;:30;;;14362:211;14514:44;14362:211;14514:44;14550:8;;;;;;;;;;;:::o;14518:30::-;;14535:13;14518:30;;14365:16;14375:5;;;14365:16;;14252:44;14288:8;;;;;;;;;:::o;14256:30::-;14273:13;;;14256:30;;13224:499;;;1938:66;2032;13342:11;12535:6;;13437:41;;13492:6;13686:30;13492:6;;;;13491:18;;;13224:499;13488:181;;;-1:-1:-1;;;;;;;;;1531:66:5;-1:-1:-1;9612:681:5;;;-1:-1:-1;;;;;;;;9612:681:5;;;1531:66;-1:-1:-1;;;;;;;;1531:66:5;9612:681;;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;;9612:681;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;;;13563:1;1531:66;9612:681;1531:66;-1:-1:-1;;;;;;;;1531:66:5;9612:681;;;;;;-1:-1:-1;;;;;;;;1531:66:5;9612:681;-1:-1:-1;;;;;;;;;;9612:681:5;-1:-1:-1;;;;;;;;9612:681:5;;;;1531:66;-1:-1:-1;;;;;;;;13563:1:5;9612:681;;1531:66;-1:-1:-1;;;;;;;;1531:66:5;13563:1;;9612:681;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;;9612:681;-1:-1:-1;;;;;;;;9612:681:5;;;;1531:66;;;;9612:681;;;;;;;;13525:42;13686:30;:::i;13488:181::-;13627:31;;;;;;:::i;:::-;13605:53;;;;13686:30;:::i;13491:18::-;13502:6;;;;13491:18;;13437:41;-1:-1:-1;13463:15:5;-1:-1:-1;13463:15:5;:::o;10559:1073::-;;;;10790:7;;10786:67;;-1:-1:-1;;;;;;;;10867:673:5;;;;;;1531:66;;13645:1;;10867:673;;1531:66;-1:-1:-1;;;;;;;;1531:66:5;10867:673;;;;1531:66;;13645:1;;10867:673;;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;10867:673;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;10867:673;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;;10867:673;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;-1:-1:-1;;;;;;;;;;10867:673:5;-1:-1:-1;;;;;;;;10867:673:5;;;1531:66;10867:673;;;;;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;;;;10867:673;1531:66;-1:-1:-1;;;;;;;;1531:66:5;;;10867:673;;;;;;;1531:66;-1:-1:-1;;;;;;;;1531:66:5;13645:1;10867:673;1531:66;-1:-1:-1;;;;;;;;1531:66:5;13645:1;10867:673;10559:1073;:::o;10786:67::-;-1:-1:-1;13645:1:5;;-1:-1:-1;13645:1:5;;10817:21::o;8954:351::-;;;;4081:643;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;4081:643:5;;;;-1:-1:-1;;;;;1531:66:5;;;4081:643;;;;;1195:14720:16;4081:643:5;1195:14720:16;4081:643:5;1195:14720:16;;4081:643:5;;;;;;-1:-1:-1;;;;;;;;1531:66:5;4081:643;;9135:20;1531:66;-1:-1:-1;;;;;;;;1531:66:5;9186:21;-1:-1:-1;;;;;;;;1531:66:5;;;;;9232:17;9271:20;;8954:351;:::o" + }, + "methodIdentifiers": { + "REPLAYABLE_NONCE_KEY()": "88ce4c7c", + "addOwnerAddress(address)": "0f0f3f24", + "addOwnerPublicKey(bytes32,bytes32)": "29565e3b", + "canSkipChainIdValidation(bytes4)": "9f9bcb34", + "domainSeparator()": "f698da25", + "eip712Domain()": "84b0196e", + "entryPoint()": "b0d691fe", + "execute(address,uint256,bytes)": "b61d27f6", + "executeBatch((address,uint256,bytes)[])": "34fcd5be", + "executeWithoutChainIdValidation(bytes[])": "2c2abd1e", + "getSignatureLifetime()": "17452caa", + "getUserOpHashWithoutChainId((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes))": "a05bd44e", + "implementation()": "5c60da1b", + "initialize(bytes[])": "6f2de70e", + "isOwnerAddress(address)": "a2e1a8d8", + "isOwnerBytes(bytes)": "1ca5393f", + "isOwnerPublicKey(bytes32,bytes32)": "066a1eb7", + "isValidSignature(bytes32,bytes)": "1626ba7e", + "nextOwnerIndex()": "d948fd2e", + "ownerAtIndex(uint256)": "8ea69029", + "ownerCount()": "0db02622", + "proxiableUUID()": "52d1902d", + "removeLastOwner(uint256,bytes)": "b8197367", + "removeOwnerAtIndex(uint256,bytes)": "89625b57", + "removedOwnersCount()": "36d9cf9b", + "replaySafeHash(bytes32)": "ce1506be", + "signedStaticCall((address,bytes,uint256,bytes))": "737bebdd", + "upgradeToAndCall(address,bytes)": "4f1ef286", + "validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)": "19822f7c" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"owner\",\"type\":\"bytes\"}],\"name\":\"AlreadyOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FnSelectorNotRecognized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Initialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"owner\",\"type\":\"bytes\"}],\"name\":\"InvalidEthereumAddressOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"key\",\"type\":\"uint256\"}],\"name\":\"InvalidNonceKey\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"owner\",\"type\":\"bytes\"}],\"name\":\"InvalidOwnerBytesLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LastOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"NoOwnerAtIndex\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ownersRemaining\",\"type\":\"uint256\"}],\"name\":\"NotLastOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"SelectorNotAllowed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expiredAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentTimestamp\",\"type\":\"uint256\"}],\"name\":\"SignatureExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpgradeFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"expectedOwner\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"actualOwner\",\"type\":\"bytes\"}],\"name\":\"WrongOwnerAtIndex\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"owner\",\"type\":\"bytes\"}],\"name\":\"AddOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"owner\",\"type\":\"bytes\"}],\"name\":\"RemoveOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"REPLAYABLE_NONCE_KEY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"addOwnerAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"name\":\"addOwnerPublicKey\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"functionSelector\",\"type\":\"bytes4\"}],\"name\":\"canSkipChainIdValidation\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"domainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"entryPoint\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct GianoSmartWallet.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"executeBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"calls\",\"type\":\"bytes[]\"}],\"name\":\"executeWithoutChainIdValidation\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSignatureLifetime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"accountGasLimits\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"gasFees\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct PackedUserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"}],\"name\":\"getUserOpHashWithoutChainId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"$\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"owners\",\"type\":\"bytes[]\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isOwnerAddress\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"account\",\"type\":\"bytes\"}],\"name\":\"isOwnerBytes\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"name\":\"isOwnerPublicKey\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"result\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextOwnerIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"ownerAtIndex\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ownerCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"owner\",\"type\":\"bytes\"}],\"name\":\"removeLastOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"owner\",\"type\":\"bytes\"}],\"name\":\"removeOwnerAtIndex\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"removedOwnersCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"replaySafeHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"signedAt\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct StaticCall\",\"name\":\"call\",\"type\":\"tuple\"}],\"name\":\"signedStaticCall\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"accountGasLimits\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"gasFees\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct PackedUserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"missingAccountFunds\",\"type\":\"uint256\"}],\"name\":\"validateUserOp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"validationData\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"author\":\"Applied Blockchain (https://github.com/appliedblockchain/giano)Coinbase (https://github.com/coinbase/smart-wallet)Solady (https://github.com/vectorized/solady/blob/main/src/accounts/ERC4337.sol)\",\"errors\":{\"AlreadyOwner(bytes)\":[{\"params\":{\"owner\":\"The owner bytes.\"}}],\"FnSelectorNotRecognized()\":[{\"details\":\"The function selector is not recognized.\"}],\"InvalidEthereumAddressOwner(bytes)\":[{\"params\":{\"owner\":\"The invalid owner.\"}}],\"InvalidImplementation(address)\":[{\"params\":{\"implementation\":\"The address of the implementation that has no code.\"}}],\"InvalidNonceKey(uint256)\":[{\"details\":\"Calls to `this.executeWithoutChainIdValidation` MUST use `REPLAYABLE_NONCE_KEY` and calls NOT to `this.executeWithoutChainIdValidation` MUST NOT use `REPLAYABLE_NONCE_KEY`.\",\"params\":{\"key\":\"The invalid `UserOperation.nonce` key.\"}}],\"InvalidOwnerBytesLength(bytes)\":[{\"params\":{\"owner\":\"The invalid owner.\"}}],\"NoOwnerAtIndex(uint256)\":[{\"params\":{\"index\":\"The targeted index for removal.\"}}],\"NotLastOwner(uint256)\":[{\"params\":{\"ownersRemaining\":\"The number of current owners.\"}}],\"SelectorNotAllowed(bytes4)\":[{\"params\":{\"selector\":\"The selector of the call.\"}}],\"UnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized call context.\"}],\"UpgradeFailed()\":[{\"details\":\"The upgrade failed.\"}],\"WrongOwnerAtIndex(uint256,bytes,bytes)\":[{\"params\":{\"actualOwner\":\"The actual owner at `index`.\",\"expectedOwner\":\"The owner passed in the remove call.\",\"index\":\"The index of the owner to be removed.\"}}]},\"events\":{\"AddOwner(uint256,bytes)\":{\"params\":{\"index\":\"The owner index of the owner added.\",\"owner\":\"The owner added.\"}},\"RemoveOwner(uint256,bytes)\":{\"params\":{\"index\":\"The owner index of the owner removed.\",\"owner\":\"The owner removed.\"}},\"Upgraded(address)\":{\"details\":\"Emitted when the proxy's implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"addOwnerAddress(address)\":{\"params\":{\"owner\":\"The owner address.\"}},\"addOwnerPublicKey(bytes32,bytes32)\":{\"params\":{\"x\":\"The owner public key x coordinate.\",\"y\":\"The owner public key y coordinate.\"}},\"canSkipChainIdValidation(bytes4)\":{\"returns\":{\"_0\":\"`true` is the function selector is allowed to skip the chain ID validation, else `false`.\"}},\"domainSeparator()\":{\"details\":\"Implements domainSeparator = hashStruct(eip712Domain). See https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator.\",\"returns\":{\"_0\":\"The 32 bytes domain separator result.\"}},\"eip712Domain()\":{\"details\":\"Follows ERC-5267 (see https://eips.ethereum.org/EIPS/eip-5267).\",\"returns\":{\"chainId\":\"The value of the `EIP712Domain.chainId` field.\",\"extensions\":\"The list of EIP numbers, that extends EIP-712 with new domain fields.\",\"fields\":\"The bitmap of used fields.\",\"name\":\"The value of the `EIP712Domain.name` field.\",\"salt\":\"The value of the `EIP712Domain.salt` field.\",\"verifyingContract\":\"The value of the `EIP712Domain.verifyingContract` field.\",\"version\":\"The value of the `EIP712Domain.version` field.\"}},\"entryPoint()\":{\"returns\":{\"_0\":\"The address of the EntryPoint v0.7\"}},\"execute(address,uint256,bytes)\":{\"details\":\"Can only be called by the Entrypoint or an owner of this account (including itself).\",\"params\":{\"data\":\"The data of the call.\",\"target\":\"The address to call.\",\"value\":\"The value to send with the call.\"}},\"executeBatch((address,uint256,bytes)[])\":{\"details\":\"Can only be called by the Entrypoint or an owner of this account (including itself).\",\"params\":{\"calls\":\"The list of `Call`s to execute.\"}},\"executeWithoutChainIdValidation(bytes[])\":{\"details\":\"Can only be called by the Entrypoint.Reverts if the given call is not authorized to skip the chain ID validtion.`validateUserOp()` will recompute the `userOpHash` without the chain ID before validating it if the `UserOperation.calldata` is calling this function. This allows certain UserOperations to be replayed for all accounts sharing the same address across chains. E.g. This may be useful for syncing owner changes.\",\"params\":{\"calls\":\"An array of calldata to use for separate self calls.\"}},\"getUserOpHashWithoutChainId((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes))\":{\"details\":\"This allows accounts to sign a hash that can be used on many chains.\",\"params\":{\"userOp\":\"The `UserOperation` to compute the hash for.\"},\"returns\":{\"_0\":\"The `UserOperation` hash, which does not depend on chain ID.\"}},\"implementation()\":{\"returns\":{\"$\":\"The address of implementation contract.\"}},\"initialize(bytes[])\":{\"details\":\"Reverts if the account has had at least one owner, i.e. has been initialized.\",\"params\":{\"owners\":\"Array of initial owners for this account. Each item should be an ABI encoded Ethereum address, i.e. 32 bytes with 12 leading 0 bytes, or a 64 byte public key.\"}},\"isOwnerAddress(address)\":{\"params\":{\"account\":\"The account address to check.\"},\"returns\":{\"_0\":\"`true` if the account is an owner else `false`.\"}},\"isOwnerBytes(bytes)\":{\"params\":{\"account\":\"The account, should be ABI encoded address or public key.\"},\"returns\":{\"_0\":\"`true` if the account is an owner else `false`.\"}},\"isOwnerPublicKey(bytes32,bytes32)\":{\"params\":{\"x\":\"The public key x coordinate.\",\"y\":\"The public key y coordinate.\"},\"returns\":{\"_0\":\"`true` if the account is an owner else `false`.\"}},\"isValidSignature(bytes32,bytes)\":{\"details\":\"This implementation follows ERC-1271. See https://eips.ethereum.org/EIPS/eip-1271.IMPORTANT: Signature verification is performed on the hash produced AFTER applying the anti cross-account-replay layer on the given `hash` (i.e., verification is run on the replay-safe hash version).\",\"params\":{\"hash\":\"The original hash.\",\"signature\":\"The signature of the replay-safe hash to validate.\"},\"returns\":{\"result\":\"`0x1626ba7e` if validation succeeded, else `0xffffffff`.\"}},\"nextOwnerIndex()\":{\"returns\":{\"_0\":\"The next index that will be used to add a new owner.\"}},\"ownerAtIndex(uint256)\":{\"params\":{\"index\":\"The index to lookup.\"},\"returns\":{\"_0\":\"The owner bytes (empty if no owner is registered at this `index`).\"}},\"ownerCount()\":{\"returns\":{\"_0\":\"The current owner count\"}},\"proxiableUUID()\":{\"details\":\"Returns the storage slot used by the implementation, as specified in [ERC1822](https://eips.ethereum.org/EIPS/eip-1822). Note: The `notDelegated` modifier prevents accidental upgrades to an implementation that is a proxy contract.\"},\"removeLastOwner(uint256,bytes)\":{\"details\":\"Reverts if the owner is not registered at `index`.Reverts if there is currently more than one owner.Reverts if `owner` does not match bytes found at `index`.\",\"params\":{\"index\":\"The index of the owner to be removed.\",\"owner\":\"The ABI encoded bytes of the owner to be removed.\"}},\"removeOwnerAtIndex(uint256,bytes)\":{\"details\":\"Reverts if the owner is not registered at `index`.Reverts if there is currently only one owner.Reverts if `owner` does not match bytes found at `index`.\",\"params\":{\"index\":\"The index of the owner to be removed.\",\"owner\":\"The ABI encoded bytes of the owner to be removed.\"}},\"removedOwnersCount()\":{\"details\":\"Used with `this.nextOwnerIndex` to avoid removing all owners\",\"returns\":{\"_0\":\"The number of owners that have been removed.\"}},\"replaySafeHash(bytes32)\":{\"details\":\"The returned EIP-712 compliant replay-safe hash is the result of: keccak256( \\\\x19\\\\x01 || this.domainSeparator || hashStruct(GianoSmartWalletMessage({ hash: `hash`})) )\",\"params\":{\"hash\":\"The original hash.\"},\"returns\":{\"_0\":\"The corresponding replay-safe hash.\"}},\"upgradeToAndCall(address,bytes)\":{\"details\":\"Upgrades the proxy's implementation to `newImplementation`. Emits a {Upgraded} event. Note: Passing in empty `data` skips the delegatecall to `newImplementation`.\"},\"validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)\":{\"details\":\"Signature failure should be reported by returning 1 (see: `this._isValidSignature`). This allows making a \\\"simulation call\\\" without a valid signature. Other failures (e.g. invalid signature format) should still revert to signal failure.Reverts if the `UserOperation.nonce` key is invalid for `UserOperation.calldata`.Reverts if the signature format is incorrect or invalid for owner type.\",\"params\":{\"missingAccountFunds\":\"The missing account funds that must be deposited on the Entrypoint.\",\"userOp\":\"The `UserOperation` to validate.\",\"userOpHash\":\"The `UserOperation` hash, as computed by `EntryPoint.getUserOpHash(UserOperation)`.\"},\"returns\":{\"validationData\":\"The encoded `ValidationData` structure: `(uint256(validAfter) << (160 + 48)) | (uint256(validUntil) << 160) | (success ? 0 : 1)` where `validUntil` is 0 (indefinite) and `validAfter` is 0.\"}}},\"stateVariables\":{\"REPLAYABLE_NONCE_KEY\":{\"details\":\"MUST BE the `UserOperation.nonce` key when `UserOperation.calldata` is calling `executeWithoutChainIdValidation`and MUST NOT BE `UserOperation.nonce` key when `UserOperation.calldata` is NOT calling `executeWithoutChainIdValidation`.Helps enforce sequential sequencing of replayable transactions.\"}},\"title\":\"Giano Smart Wallet\",\"version\":1},\"userdoc\":{\"errors\":{\"AlreadyOwner(bytes)\":[{\"notice\":\"Thrown when trying to add an already registered owner.\"}],\"Initialized()\":[{\"notice\":\"Thrown when `initialize` is called but the account already has had at least one owner.\"}],\"InvalidEthereumAddressOwner(bytes)\":[{\"notice\":\"Thrown if a provided owner is 32 bytes long but does not fit in an `address` type.\"}],\"InvalidImplementation(address)\":[{\"notice\":\"Thrown when an upgrade is attempted to an implementation that does not exist.\"}],\"InvalidNonceKey(uint256)\":[{\"notice\":\"Thrown in validateUserOp if the key of `UserOperation.nonce` does not match the calldata.\"}],\"InvalidOwnerBytesLength(bytes)\":[{\"notice\":\"Thrown when a provided owner is neither 64 bytes long (for public key) nor a ABI encoded address.\"}],\"LastOwner()\":[{\"notice\":\"Thrown when removeOwnerAtIndex is called and there is only one current owner.\"}],\"NoOwnerAtIndex(uint256)\":[{\"notice\":\"Thrown when trying to remove an owner from an index that is empty.\"}],\"NotLastOwner(uint256)\":[{\"notice\":\"Thrown when removeLastOwner is called and there is more than one current owner.\"}],\"SelectorNotAllowed(bytes4)\":[{\"notice\":\"Thrown when a call is passed to `executeWithoutChainIdValidation` that is not allowed by `canSkipChainIdValidation`\"}],\"Unauthorized()\":[{\"notice\":\"Thrown when the `msg.sender` is not an owner and is trying to call a privileged function.\"}],\"WrongOwnerAtIndex(uint256,bytes,bytes)\":[{\"notice\":\"Thrown when `owner` argument does not match owner found at index.\"}]},\"events\":{\"AddOwner(uint256,bytes)\":{\"notice\":\"Emitted when a new owner is registered.\"},\"RemoveOwner(uint256,bytes)\":{\"notice\":\"Emitted when an owner is removed.\"}},\"kind\":\"user\",\"methods\":{\"REPLAYABLE_NONCE_KEY()\":{\"notice\":\"Reserved nonce key (upper 192 bits of `UserOperation.nonce`) for cross-chain replayable transactions.\"},\"addOwnerAddress(address)\":{\"notice\":\"Adds a new Ethereum-address owner.\"},\"addOwnerPublicKey(bytes32,bytes32)\":{\"notice\":\"Adds a new public-key owner.\"},\"domainSeparator()\":{\"notice\":\"Returns the `domainSeparator` used to create EIP-712 compliant hashes.\"},\"eip712Domain()\":{\"notice\":\"Returns information about the `EIP712Domain` used to create EIP-712 compliant hashes.\"},\"entryPoint()\":{\"notice\":\"Returns the address of the EntryPoint v0.7.\"},\"execute(address,uint256,bytes)\":{\"notice\":\"Executes the given call from this account.\"},\"executeBatch((address,uint256,bytes)[])\":{\"notice\":\"Executes batch of `Call`s.\"},\"executeWithoutChainIdValidation(bytes[])\":{\"notice\":\"Executes `calls` on this account (i.e. self call).\"},\"getUserOpHashWithoutChainId((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes))\":{\"notice\":\"Computes the hash of the `UserOperation` in the same way as EntryPoint v0.6, but leaves out the chain ID.\"},\"implementation()\":{\"notice\":\"Returns the implementation of the ERC1967 proxy.\"},\"initialize(bytes[])\":{\"notice\":\"Initializes the account with the `owners`.\"},\"isOwnerAddress(address)\":{\"notice\":\"Checks if the given `account` address is registered as owner.\"},\"isOwnerBytes(bytes)\":{\"notice\":\"Checks if the given `account` bytes is registered as owner.\"},\"isOwnerPublicKey(bytes32,bytes32)\":{\"notice\":\"Checks if the given `x`, `y` public key is registered as owner.\"},\"isValidSignature(bytes32,bytes)\":{\"notice\":\"Validates the `signature` against the given `hash`.\"},\"nextOwnerIndex()\":{\"notice\":\"Returns the next index that will be used to add a new owner.\"},\"ownerAtIndex(uint256)\":{\"notice\":\"Returns the owner bytes at the given `index`.\"},\"ownerCount()\":{\"notice\":\"Returns the current number of owners\"},\"removeLastOwner(uint256,bytes)\":{\"notice\":\"Removes owner at the given `index`, which should be the only current owner.\"},\"removeOwnerAtIndex(uint256,bytes)\":{\"notice\":\"Removes owner at the given `index`.\"},\"removedOwnersCount()\":{\"notice\":\"Tracks the number of owners removed\"},\"replaySafeHash(bytes32)\":{\"notice\":\"Wrapper around `_eip712Hash()` to produce a replay-safe hash fron the given `hash`.\"},\"validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)\":{\"notice\":\"ERC-4337 `validateUserOp` method. The EntryPoint will call `UserOperation.sender.call(UserOperation.callData)` only if this validation call returns successfully.\"}},\"notice\":\"ERC-4337-compatible smart account, based on Solady's ERC4337 account implementation with inspiration from Alchemy's LightAccount and Daimo's DaimoAccount.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/GianoSmartWallet.sol\":\"GianoSmartWallet\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@account-abstraction/contracts/core/Helpers.sol\":{\"keccak256\":\"0x6247e011a6cb0b263b3aa098822977181674d91b62e5bdfe04c6e66f72da25d6\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ca829a69b3fbc74fec8e140d42a2bf93bc3512609272f031c846470f61f0ab7e\",\"dweb:/ipfs/QmP3r3MBgAN39KeVB1rCGJWwcBcotNt26ALtAR54poQ1Jc\"]},\"@account-abstraction/contracts/core/UserOperationLib.sol\":{\"keccak256\":\"0x9d50ece985d35f82e33e5da417595c86fac10449e3d10895d08363d33aad454b\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b1d11cc364c8bf7ed5388268c895b5ffed16e87dfbcb320ddeeba5e7974315dc\",\"dweb:/ipfs/QmYSpvjxEjweietQrYZagwQ52ipy7eXx4rwvnTzXKeGeMS\"]},\"@account-abstraction/contracts/interfaces/IAccount.sol\":{\"keccak256\":\"0x38710bec0cb20ff4ceef46a80475b5bdabc27b7efd2687fd473db68332f61b78\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://dea7a723e1ef852e8764e69914a345d2e8bc5e13facfc9d5c29d791cb4ab0020\",\"dweb:/ipfs/QmU8dYgyF4DBJXFqjwLAtnE3q8q259ChfoEk9a6wyhHzEP\"]},\"@account-abstraction/contracts/interfaces/PackedUserOperation.sol\":{\"keccak256\":\"0x1129b46381db68eddbc5cb49e50664667b66b03c480453858e7b25eabe444359\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://499a948aba60480dba6e25c763b8d918f1c246eb7a3302e04f493e080f3295be\",\"dweb:/ipfs/QmeRhhswf4NACcBKam2PyjpTP2ddSm648kah5kkQJsvwz3\"]},\"FreshCryptoLib/FCL_ecdsa.sol\":{\"keccak256\":\"0x679d2e9a655cd7e156a0cfc24de0aca88d4e0b34a8e0dfe6a599f23af092f5a2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db31eb84c6f854f076d2501e3d8b5a606fb4924168bdfc6fc3de84e67ed8a80d\",\"dweb:/ipfs/QmWGAmc7B4aT6Ki52uF9QmPQKWipaptit7r3JknBHjUGfe\"]},\"FreshCryptoLib/FCL_elliptic.sol\":{\"keccak256\":\"0xac7bb3260a446851f45b8cb71e31d64ca469d7711ed04662092a9554f1283a38\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f9b0dc5a2306ad3f3a0ff4a5b947fe49422181e97c163ea237fc8bfc6736429d\",\"dweb:/ipfs/QmeruF7BvG5BNnqwqwdshoVXuXqXtajbUYB19KwPynHrQE\"]},\"openzeppelin-contracts/contracts/utils/Base64.sol\":{\"keccak256\":\"0xbee2b819e1b4bf569ffc1b1b9d560b4abd6a589575f3093edaab9244de18a0c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e478c0e9bbf3eb8cd3b7784f9b397603e34747f9ffd16571ed1d89ce102de389\",\"dweb:/ipfs/QmZ6zXpwy5xRxx9RkodJmDZSUTeEqPQUanAC5TUoYqW2VR\"]},\"solady/accounts/Receiver.sol\":{\"keccak256\":\"0xc879aa81dd5639f5fd97b31acd91658ffe33ae4b72b70ed7bd701c37addce43b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2e03a8d37d48644857d94f7432c1e2272bfd19649dfe80aba8f979f157f71f00\",\"dweb:/ipfs/QmWWS34bNWhiZgLXS9gtD8N2dxreRsVXxhvQRKqd4wKUuU\"]},\"solady/utils/CallContextChecker.sol\":{\"keccak256\":\"0xc54c743a03f4909826712e9c6b683ca95e8b0c120c55284a9e3572621ebd734b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3d3138009aba3d2fd310636f3cc1d6029e970c57ddb74693bebf2a02d3e6f12d\",\"dweb:/ipfs/QmauMpcVDyQqVnAUF75DXy831LvtxyFS7GND7kge1Zgw55\"]},\"solady/utils/LibBytes.sol\":{\"keccak256\":\"0x320c3c933df51e8fd6f1fc96de721c8cc6f1be1d4c586c11f1c472a23b86eba5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cec71f42247eda74535c6e695a2ac194268a342594a26c090bafd04434698b20\",\"dweb:/ipfs/QmXA8Qaw6DdWujdrNHMHpDLNGG4QCgC859ozivrxkxp7Ea\"]},\"solady/utils/LibString.sol\":{\"keccak256\":\"0x8a6b219f6ccda90c08e2debae62618d78d6f0cef086eb6c9503793d7f12815dd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d1301acbf7371cb51ab01fe3bee8a9b732ee0bcf6cc0db20ed5a3fb9241d675e\",\"dweb:/ipfs/QmXuM4tSfPDeFRvP3nEQmuezp1yEm4HxyWtU41FjiCdxAG\"]},\"solady/utils/SignatureCheckerLib.sol\":{\"keccak256\":\"0x098c7eb88b3048f227b240e0e5bf1da4a8f7622b30f6d7c06416bfcab3225e77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://50c2766f652916c5d6433665fb1c3b2f04c3d9292a35c12e0f8d7c71dd6438cb\",\"dweb:/ipfs/QmWTMwN2RDZUUPg7KkH1qFBjTSh84Zw8bbYwRBCQUtLN2h\"]},\"solady/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x63899eaf1a24713464b8084ada33a83c4b7db789fe83ae22f016e39646bee361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://617fa735ffa8ba31051745614a508abd69d2cfc1b1bc1eb3c772865db5f7ce65\",\"dweb:/ipfs/QmR1pQbHPyXcLbFm2vHrXBs1qRFrGC22gF7wWYamYy8aaE\"]},\"src/AuthenticatedStaticCaller.sol\":{\"keccak256\":\"0x06bb6bea86630eda0e5920c4fe4a5d51e89d18072faf7c4b5d7ae8ca82b87b94\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2920f02558ea8bbe8ca21cbe1bcbbea7d3c4d7f0d3e812cde706f95c53b399aa\",\"dweb:/ipfs/QmaNpbMazUf1n6hpXSMq7RDJix7ipPiALKE93fMmBtbS4A\"]},\"src/ERC1271.sol\":{\"keccak256\":\"0x75c3fe08b6e1789dab7714196704f425d1afea21d725fcb6c418a70ef5bf6fad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd292bcf9b1891abb517323636493499dbdd00bebc1f759c07fb26e103a1b71d\",\"dweb:/ipfs/QmWMT3C54pakfUCTkcPzFQAvE8nRnPqDDpFaDhY5A9fpEp\"]},\"src/GianoSmartWallet.sol\":{\"keccak256\":\"0x10f35f381fe7d934aa2f83dde5f50a69efbe49600679cb8cd7777fb07931e4e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a93eeba861ccaf70dfe6d9ed594f5ae55d37ee9feab8e4867c95657b36ae1b51\",\"dweb:/ipfs/QmTPuS5LuaW2Fx3QAXoUD4gSErZ8CoRQKFk8Nsy3vMe2PV\"]},\"src/MultiOwnable.sol\":{\"keccak256\":\"0x46a9fa25c7de87b56df47b67d61b6efd96ed3f382c5d440d04de55fa23bccadd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75ac03bdfdddec29b0b1f4f9c33add4b5b9d5400b1a54691a544a59ac710de5c\",\"dweb:/ipfs/QmXajkF7z8rqmDE89H4uVaKCDyQsdwphif8BHZLLu9MQ5k\"]},\"webauthn-sol/WebAuthn.sol\":{\"keccak256\":\"0x8b940975249f72155110e5e5b4611fc9031330538183862b9d8f12ea7c30ad25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://433957720c13a834b9aab98a5054e9dabe5c660a1a3fb267e6ad1a22b99b68ed\",\"dweb:/ipfs/QmTkQxCCf8kDAHa6rBwLT2mxFXN3tSAWyx4rLmgcLkFkRh\"]}},\"version\":1}" + } + }, + "src/GianoSmartWalletFactory.sol": { + "GianoSmartWalletFactory": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "implementation_", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "constructor" + }, + { + "inputs": [], + "name": "ImplementationUndeployed", + "type": "error" + }, + { + "inputs": [], + "name": "OwnerRequired", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes[]", + "name": "owners", + "type": "bytes[]" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "name": "AccountCreated", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "bytes[]", + "name": "owners", + "type": "bytes[]" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "name": "createAccount", + "outputs": [ + { + "internalType": "contract GianoSmartWallet", + "name": "account", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes[]", + "name": "owners", + "type": "bytes[]" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "name": "getAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "implementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "initCodeHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60a0601f6105fc38819003918201601f19168301916001600160401b038311848410176100955780849260209460405283398101031261009057516001600160a01b038116810361009057803b1561007f5760805260405161055090816100ac823960805181818160600152818160a50152818161014801526102d90152f35b63870dfeb760e01b60005260046000fd5b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604052600436101561001257600080fd5b6000803560e01c8063250b1b41146102bb5780633ffba36f146100d45780635c60da1b1461008f5763db4c545e1461004957600080fd5b3461008c578060031936011261008c5760206100847f00000000000000000000000000000000000000000000000000000000000000006104a7565b604051908152f35b80fd5b503461008c578060031936011261008c576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b506100de3661032d565b919080156102ac576100f1838284610479565b928490604051917fcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f36060527f5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e20766040526160096020527f0000000000000000000000000000000000000000000000000000000000000000601e5268603d3d8160223d3973600a52605f60212060358401523060581b835260ff83538560158401526055832090341596823b1561029057505060019561028b578638818034855af11561027e575b604083905260608790526001600160a01b031694156101dc575b602085604051908152f35b818061020c7ff8e246d8281c915feaf5c1ffd75d9a144f6dbdbbf545e286088661b19d8028f49386888a97610424565b0390a2823b1561027a57604051633796f38760e11b81526020600482015293918291859182916102419160248401919061038a565b038183865af192831561026d5760209361025d575b80806101d1565b8161026791610441565b38610256565b50604051903d90823e3d90fd5b8380fd5b63b12d13eb87526004601cfd5b6101b7565b91509550605f602134f5806101b757633011642587526004601cfd5b633c776be160e01b8452600484fd5b503461008c576020906103036102d03661032d565b906102fd9392937f00000000000000000000000000000000000000000000000000000000000000006104a7565b93610479565b9060ff83536035523060601b60015260155260558120906035526040519060018060a01b03168152f35b9060406003198301126103855760043567ffffffffffffffff811161038557826023820112156103855780600401359267ffffffffffffffff84116103855760248460051b8301011161038557602401919060243590565b600080fd5b90602083828152019060208160051b85010193836000915b8383106103b25750505050505090565b909192939495601f198282030186528635601e1984360301811215610385578301906020823592019167ffffffffffffffff8111610385578036038313610385576020828280600196849695859652848401376000828201840152601f01601f191601019801960194930191906103a2565b93929160209161043c9160408752604087019161038a565b930152565b90601f8019910116810190811067ffffffffffffffff82111761046357604052565b634e487b7160e01b600052604160045260246000fd5b91906104a190610493604051938492602084019687610424565b03601f198101835282610441565b51902090565b90604051917fcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f36060527f5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076604052616009602052601e5268603d3d8160223d3973600a52605f60212091604052600060605256fea26469706673582212209043ac39e0deda770cb1183dbc33f14b238e32f625441a810092deac30b2a90e64736f6c634300081c0033", + "opcodes": "PUSH1 0xA0 PUSH1 0x1F PUSH2 0x5FC CODESIZE DUP2 SWAP1 SUB SWAP2 DUP3 ADD PUSH1 0x1F NOT AND DUP4 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT DUP5 DUP5 LT OR PUSH2 0x95 JUMPI DUP1 DUP5 SWAP3 PUSH1 0x20 SWAP5 PUSH1 0x40 MSTORE DUP4 CODECOPY DUP2 ADD SUB SLT PUSH2 0x90 JUMPI MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x90 JUMPI DUP1 EXTCODESIZE ISZERO PUSH2 0x7F JUMPI PUSH1 0x80 MSTORE PUSH1 0x40 MLOAD PUSH2 0x550 SWAP1 DUP2 PUSH2 0xAC DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 DUP2 DUP2 PUSH1 0x60 ADD MSTORE DUP2 DUP2 PUSH1 0xA5 ADD MSTORE DUP2 DUP2 PUSH2 0x148 ADD MSTORE PUSH2 0x2D9 ADD MSTORE RETURN JUMPDEST PUSH4 0x870DFEB7 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x250B1B41 EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0x3FFBA36F EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x8F JUMPI PUSH4 0xDB4C545E EQ PUSH2 0x49 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x8C JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x8C JUMPI PUSH1 0x20 PUSH2 0x84 PUSH32 0x0 PUSH2 0x4A7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x8C JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x8C JUMPI PUSH1 0x40 MLOAD PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 SWAP1 RETURN JUMPDEST POP PUSH2 0xDE CALLDATASIZE PUSH2 0x32D JUMP JUMPDEST SWAP2 SWAP1 DUP1 ISZERO PUSH2 0x2AC JUMPI PUSH2 0xF1 DUP4 DUP3 DUP5 PUSH2 0x479 JUMP JUMPDEST SWAP3 DUP5 SWAP1 PUSH1 0x40 MLOAD SWAP2 PUSH32 0xCC3735A920A3CA505D382BBC545AF43D6000803E6038573D6000FD5B3D6000F3 PUSH1 0x60 MSTORE PUSH32 0x5155F3363D3D373D3D363D7F360894A13BA1A3210667C828492DB98DCA3E2076 PUSH1 0x40 MSTORE PUSH2 0x6009 PUSH1 0x20 MSTORE PUSH32 0x0 PUSH1 0x1E MSTORE PUSH9 0x603D3D8160223D3973 PUSH1 0xA MSTORE PUSH1 0x5F PUSH1 0x21 KECCAK256 PUSH1 0x35 DUP5 ADD MSTORE ADDRESS PUSH1 0x58 SHL DUP4 MSTORE PUSH1 0xFF DUP4 MSTORE8 DUP6 PUSH1 0x15 DUP5 ADD MSTORE PUSH1 0x55 DUP4 KECCAK256 SWAP1 CALLVALUE ISZERO SWAP7 DUP3 EXTCODESIZE ISZERO PUSH2 0x290 JUMPI POP POP PUSH1 0x1 SWAP6 PUSH2 0x28B JUMPI DUP7 CODESIZE DUP2 DUP1 CALLVALUE DUP6 GAS CALL ISZERO PUSH2 0x27E JUMPI JUMPDEST PUSH1 0x40 DUP4 SWAP1 MSTORE PUSH1 0x60 DUP8 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP5 ISZERO PUSH2 0x1DC JUMPI JUMPDEST PUSH1 0x20 DUP6 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP2 DUP1 PUSH2 0x20C PUSH32 0xF8E246D8281C915FEAF5C1FFD75D9A144F6DBDBBF545E286088661B19D8028F4 SWAP4 DUP7 DUP9 DUP11 SWAP8 PUSH2 0x424 JUMP JUMPDEST SUB SWAP1 LOG2 DUP3 EXTCODESIZE ISZERO PUSH2 0x27A JUMPI PUSH1 0x40 MLOAD PUSH4 0x3796F387 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE SWAP4 SWAP2 DUP3 SWAP2 DUP6 SWAP2 DUP3 SWAP2 PUSH2 0x241 SWAP2 PUSH1 0x24 DUP5 ADD SWAP2 SWAP1 PUSH2 0x38A JUMP JUMPDEST SUB DUP2 DUP4 DUP7 GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x26D JUMPI PUSH1 0x20 SWAP4 PUSH2 0x25D JUMPI JUMPDEST DUP1 DUP1 PUSH2 0x1D1 JUMP JUMPDEST DUP2 PUSH2 0x267 SWAP2 PUSH2 0x441 JUMP JUMPDEST CODESIZE PUSH2 0x256 JUMP JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 RETURNDATASIZE SWAP1 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP4 DUP1 REVERT JUMPDEST PUSH4 0xB12D13EB DUP8 MSTORE PUSH1 0x4 PUSH1 0x1C REVERT JUMPDEST PUSH2 0x1B7 JUMP JUMPDEST SWAP2 POP SWAP6 POP PUSH1 0x5F PUSH1 0x21 CALLVALUE CREATE2 DUP1 PUSH2 0x1B7 JUMPI PUSH4 0x30116425 DUP8 MSTORE PUSH1 0x4 PUSH1 0x1C REVERT JUMPDEST PUSH4 0x3C776BE1 PUSH1 0xE0 SHL DUP5 MSTORE PUSH1 0x4 DUP5 REVERT JUMPDEST POP CALLVALUE PUSH2 0x8C JUMPI PUSH1 0x20 SWAP1 PUSH2 0x303 PUSH2 0x2D0 CALLDATASIZE PUSH2 0x32D JUMP JUMPDEST SWAP1 PUSH2 0x2FD SWAP4 SWAP3 SWAP4 PUSH32 0x0 PUSH2 0x4A7 JUMP JUMPDEST SWAP4 PUSH2 0x479 JUMP JUMPDEST SWAP1 PUSH1 0xFF DUP4 MSTORE8 PUSH1 0x35 MSTORE ADDRESS PUSH1 0x60 SHL PUSH1 0x1 MSTORE PUSH1 0x15 MSTORE PUSH1 0x55 DUP2 KECCAK256 SWAP1 PUSH1 0x35 MSTORE PUSH1 0x40 MLOAD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE RETURN JUMPDEST SWAP1 PUSH1 0x40 PUSH1 0x3 NOT DUP4 ADD SLT PUSH2 0x385 JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x385 JUMPI DUP3 PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0x385 JUMPI DUP1 PUSH1 0x4 ADD CALLDATALOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP5 GT PUSH2 0x385 JUMPI PUSH1 0x24 DUP5 PUSH1 0x5 SHL DUP4 ADD ADD GT PUSH2 0x385 JUMPI PUSH1 0x24 ADD SWAP2 SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 PUSH1 0x20 DUP4 DUP3 DUP2 MSTORE ADD SWAP1 PUSH1 0x20 DUP2 PUSH1 0x5 SHL DUP6 ADD ADD SWAP4 DUP4 PUSH1 0x0 SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x3B2 JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 PUSH1 0x1F NOT DUP3 DUP3 SUB ADD DUP7 MSTORE DUP7 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT ISZERO PUSH2 0x385 JUMPI DUP4 ADD SWAP1 PUSH1 0x20 DUP3 CALLDATALOAD SWAP3 ADD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x385 JUMPI DUP1 CALLDATASIZE SUB DUP4 SGT PUSH2 0x385 JUMPI PUSH1 0x20 DUP3 DUP3 DUP1 PUSH1 0x1 SWAP7 DUP5 SWAP7 SWAP6 DUP6 SWAP7 MSTORE DUP5 DUP5 ADD CALLDATACOPY PUSH1 0x0 DUP3 DUP3 ADD DUP5 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND ADD ADD SWAP9 ADD SWAP7 ADD SWAP5 SWAP4 ADD SWAP2 SWAP1 PUSH2 0x3A2 JUMP JUMPDEST SWAP4 SWAP3 SWAP2 PUSH1 0x20 SWAP2 PUSH2 0x43C SWAP2 PUSH1 0x40 DUP8 MSTORE PUSH1 0x40 DUP8 ADD SWAP2 PUSH2 0x38A JUMP JUMPDEST SWAP4 ADD MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F DUP1 NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x463 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 PUSH2 0x4A1 SWAP1 PUSH2 0x493 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 PUSH1 0x20 DUP5 ADD SWAP7 DUP8 PUSH2 0x424 JUMP JUMPDEST SUB PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x441 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP2 PUSH32 0xCC3735A920A3CA505D382BBC545AF43D6000803E6038573D6000FD5B3D6000F3 PUSH1 0x60 MSTORE PUSH32 0x5155F3363D3D373D3D363D7F360894A13BA1A3210667C828492DB98DCA3E2076 PUSH1 0x40 MSTORE PUSH2 0x6009 PUSH1 0x20 MSTORE PUSH1 0x1E MSTORE PUSH9 0x603D3D8160223D3973 PUSH1 0xA MSTORE PUSH1 0x5F PUSH1 0x21 KECCAK256 SWAP2 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH1 0x60 MSTORE JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP1 NUMBER 0xAC CODECOPY 0xE0 0xDE 0xDA PUSH24 0xCB1183DBC33F14B238E32F625441A810092DEAC30B2A90E PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ", + "sourceMap": "525:3885:17:-:0;;;;;;;;;;-1:-1:-1;;525:3885:17;;;;-1:-1:-1;;;;;525:3885:17;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;525:3885:17;;;;;;1600:27;;:32;1596:71;;1677:32;;525:3885;;;;;;;;1677:32;525:3885;;;;;;;;;;;;;;;;;;;;;1596:71;1641:26;;;-1:-1:-1;1641:26:17;;-1:-1:-1;1641:26:17;525:3885;-1:-1:-1;525:3885:17;;;;;;-1:-1:-1;525:3885:17;;;;;-1:-1:-1;525:3885:17" + }, + "deployedBytecode": { + "functionDebugData": { + "abi_decode_array_bytes_calldata_dyn_calldatat_uint256": { + "entryPoint": 813, + "id": null, + "parameterSlots": 1, + "returnSlots": 3 + }, + "abi_encode_array_bytes_calldata_dyn_calldata": { + "entryPoint": 906, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_array_bytes_calldata_dyn_calldata_uint256": { + "entryPoint": 1060, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "finalize_allocation": { + "entryPoint": 1089, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "fun_getSalt": { + "entryPoint": 1145, + "id": 7564, + "parameterSlots": 3, + "returnSlots": 1 + }, + "fun_initCodeHashERC1967": { + "entryPoint": 1191, + "id": 3662, + "parameterSlots": 1, + "returnSlots": 1 + } + }, + "generatedSources": [], + "immutableReferences": { + "7408": [ + { + "length": 32, + "start": 96 + }, + { + "length": 32, + "start": 165 + }, + { + "length": 32, + "start": 328 + }, + { + "length": 32, + "start": 729 + } + ] + }, + "linkReferences": {}, + "object": "6080604052600436101561001257600080fd5b6000803560e01c8063250b1b41146102bb5780633ffba36f146100d45780635c60da1b1461008f5763db4c545e1461004957600080fd5b3461008c578060031936011261008c5760206100847f00000000000000000000000000000000000000000000000000000000000000006104a7565b604051908152f35b80fd5b503461008c578060031936011261008c576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b506100de3661032d565b919080156102ac576100f1838284610479565b928490604051917fcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f36060527f5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e20766040526160096020527f0000000000000000000000000000000000000000000000000000000000000000601e5268603d3d8160223d3973600a52605f60212060358401523060581b835260ff83538560158401526055832090341596823b1561029057505060019561028b578638818034855af11561027e575b604083905260608790526001600160a01b031694156101dc575b602085604051908152f35b818061020c7ff8e246d8281c915feaf5c1ffd75d9a144f6dbdbbf545e286088661b19d8028f49386888a97610424565b0390a2823b1561027a57604051633796f38760e11b81526020600482015293918291859182916102419160248401919061038a565b038183865af192831561026d5760209361025d575b80806101d1565b8161026791610441565b38610256565b50604051903d90823e3d90fd5b8380fd5b63b12d13eb87526004601cfd5b6101b7565b91509550605f602134f5806101b757633011642587526004601cfd5b633c776be160e01b8452600484fd5b503461008c576020906103036102d03661032d565b906102fd9392937f00000000000000000000000000000000000000000000000000000000000000006104a7565b93610479565b9060ff83536035523060601b60015260155260558120906035526040519060018060a01b03168152f35b9060406003198301126103855760043567ffffffffffffffff811161038557826023820112156103855780600401359267ffffffffffffffff84116103855760248460051b8301011161038557602401919060243590565b600080fd5b90602083828152019060208160051b85010193836000915b8383106103b25750505050505090565b909192939495601f198282030186528635601e1984360301811215610385578301906020823592019167ffffffffffffffff8111610385578036038313610385576020828280600196849695859652848401376000828201840152601f01601f191601019801960194930191906103a2565b93929160209161043c9160408752604087019161038a565b930152565b90601f8019910116810190811067ffffffffffffffff82111761046357604052565b634e487b7160e01b600052604160045260246000fd5b91906104a190610493604051938492602084019687610424565b03601f198101835282610441565b51902090565b90604051917fcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f36060527f5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076604052616009602052601e5268603d3d8160223d3973600a52605f60212091604052600060605256fea26469706673582212209043ac39e0deda770cb1183dbc33f14b238e32f625441a810092deac30b2a90e64736f6c634300081c0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x250B1B41 EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0x3FFBA36F EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x8F JUMPI PUSH4 0xDB4C545E EQ PUSH2 0x49 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x8C JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x8C JUMPI PUSH1 0x20 PUSH2 0x84 PUSH32 0x0 PUSH2 0x4A7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x8C JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x8C JUMPI PUSH1 0x40 MLOAD PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 SWAP1 RETURN JUMPDEST POP PUSH2 0xDE CALLDATASIZE PUSH2 0x32D JUMP JUMPDEST SWAP2 SWAP1 DUP1 ISZERO PUSH2 0x2AC JUMPI PUSH2 0xF1 DUP4 DUP3 DUP5 PUSH2 0x479 JUMP JUMPDEST SWAP3 DUP5 SWAP1 PUSH1 0x40 MLOAD SWAP2 PUSH32 0xCC3735A920A3CA505D382BBC545AF43D6000803E6038573D6000FD5B3D6000F3 PUSH1 0x60 MSTORE PUSH32 0x5155F3363D3D373D3D363D7F360894A13BA1A3210667C828492DB98DCA3E2076 PUSH1 0x40 MSTORE PUSH2 0x6009 PUSH1 0x20 MSTORE PUSH32 0x0 PUSH1 0x1E MSTORE PUSH9 0x603D3D8160223D3973 PUSH1 0xA MSTORE PUSH1 0x5F PUSH1 0x21 KECCAK256 PUSH1 0x35 DUP5 ADD MSTORE ADDRESS PUSH1 0x58 SHL DUP4 MSTORE PUSH1 0xFF DUP4 MSTORE8 DUP6 PUSH1 0x15 DUP5 ADD MSTORE PUSH1 0x55 DUP4 KECCAK256 SWAP1 CALLVALUE ISZERO SWAP7 DUP3 EXTCODESIZE ISZERO PUSH2 0x290 JUMPI POP POP PUSH1 0x1 SWAP6 PUSH2 0x28B JUMPI DUP7 CODESIZE DUP2 DUP1 CALLVALUE DUP6 GAS CALL ISZERO PUSH2 0x27E JUMPI JUMPDEST PUSH1 0x40 DUP4 SWAP1 MSTORE PUSH1 0x60 DUP8 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP5 ISZERO PUSH2 0x1DC JUMPI JUMPDEST PUSH1 0x20 DUP6 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP2 DUP1 PUSH2 0x20C PUSH32 0xF8E246D8281C915FEAF5C1FFD75D9A144F6DBDBBF545E286088661B19D8028F4 SWAP4 DUP7 DUP9 DUP11 SWAP8 PUSH2 0x424 JUMP JUMPDEST SUB SWAP1 LOG2 DUP3 EXTCODESIZE ISZERO PUSH2 0x27A JUMPI PUSH1 0x40 MLOAD PUSH4 0x3796F387 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE SWAP4 SWAP2 DUP3 SWAP2 DUP6 SWAP2 DUP3 SWAP2 PUSH2 0x241 SWAP2 PUSH1 0x24 DUP5 ADD SWAP2 SWAP1 PUSH2 0x38A JUMP JUMPDEST SUB DUP2 DUP4 DUP7 GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x26D JUMPI PUSH1 0x20 SWAP4 PUSH2 0x25D JUMPI JUMPDEST DUP1 DUP1 PUSH2 0x1D1 JUMP JUMPDEST DUP2 PUSH2 0x267 SWAP2 PUSH2 0x441 JUMP JUMPDEST CODESIZE PUSH2 0x256 JUMP JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 RETURNDATASIZE SWAP1 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP4 DUP1 REVERT JUMPDEST PUSH4 0xB12D13EB DUP8 MSTORE PUSH1 0x4 PUSH1 0x1C REVERT JUMPDEST PUSH2 0x1B7 JUMP JUMPDEST SWAP2 POP SWAP6 POP PUSH1 0x5F PUSH1 0x21 CALLVALUE CREATE2 DUP1 PUSH2 0x1B7 JUMPI PUSH4 0x30116425 DUP8 MSTORE PUSH1 0x4 PUSH1 0x1C REVERT JUMPDEST PUSH4 0x3C776BE1 PUSH1 0xE0 SHL DUP5 MSTORE PUSH1 0x4 DUP5 REVERT JUMPDEST POP CALLVALUE PUSH2 0x8C JUMPI PUSH1 0x20 SWAP1 PUSH2 0x303 PUSH2 0x2D0 CALLDATASIZE PUSH2 0x32D JUMP JUMPDEST SWAP1 PUSH2 0x2FD SWAP4 SWAP3 SWAP4 PUSH32 0x0 PUSH2 0x4A7 JUMP JUMPDEST SWAP4 PUSH2 0x479 JUMP JUMPDEST SWAP1 PUSH1 0xFF DUP4 MSTORE8 PUSH1 0x35 MSTORE ADDRESS PUSH1 0x60 SHL PUSH1 0x1 MSTORE PUSH1 0x15 MSTORE PUSH1 0x55 DUP2 KECCAK256 SWAP1 PUSH1 0x35 MSTORE PUSH1 0x40 MLOAD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE RETURN JUMPDEST SWAP1 PUSH1 0x40 PUSH1 0x3 NOT DUP4 ADD SLT PUSH2 0x385 JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x385 JUMPI DUP3 PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0x385 JUMPI DUP1 PUSH1 0x4 ADD CALLDATALOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP5 GT PUSH2 0x385 JUMPI PUSH1 0x24 DUP5 PUSH1 0x5 SHL DUP4 ADD ADD GT PUSH2 0x385 JUMPI PUSH1 0x24 ADD SWAP2 SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 PUSH1 0x20 DUP4 DUP3 DUP2 MSTORE ADD SWAP1 PUSH1 0x20 DUP2 PUSH1 0x5 SHL DUP6 ADD ADD SWAP4 DUP4 PUSH1 0x0 SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x3B2 JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 PUSH1 0x1F NOT DUP3 DUP3 SUB ADD DUP7 MSTORE DUP7 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT ISZERO PUSH2 0x385 JUMPI DUP4 ADD SWAP1 PUSH1 0x20 DUP3 CALLDATALOAD SWAP3 ADD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x385 JUMPI DUP1 CALLDATASIZE SUB DUP4 SGT PUSH2 0x385 JUMPI PUSH1 0x20 DUP3 DUP3 DUP1 PUSH1 0x1 SWAP7 DUP5 SWAP7 SWAP6 DUP6 SWAP7 MSTORE DUP5 DUP5 ADD CALLDATACOPY PUSH1 0x0 DUP3 DUP3 ADD DUP5 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND ADD ADD SWAP9 ADD SWAP7 ADD SWAP5 SWAP4 ADD SWAP2 SWAP1 PUSH2 0x3A2 JUMP JUMPDEST SWAP4 SWAP3 SWAP2 PUSH1 0x20 SWAP2 PUSH2 0x43C SWAP2 PUSH1 0x40 DUP8 MSTORE PUSH1 0x40 DUP8 ADD SWAP2 PUSH2 0x38A JUMP JUMPDEST SWAP4 ADD MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F DUP1 NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x463 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 PUSH2 0x4A1 SWAP1 PUSH2 0x493 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 PUSH1 0x20 DUP5 ADD SWAP7 DUP8 PUSH2 0x424 JUMP JUMPDEST SUB PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x441 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP2 PUSH32 0xCC3735A920A3CA505D382BBC545AF43D6000803E6038573D6000FD5B3D6000F3 PUSH1 0x60 MSTORE PUSH32 0x5155F3363D3D373D3D363D7F360894A13BA1A3210667C828492DB98DCA3E2076 PUSH1 0x40 MSTORE PUSH2 0x6009 PUSH1 0x20 MSTORE PUSH1 0x1E MSTORE PUSH9 0x603D3D8160223D3973 PUSH1 0xA MSTORE PUSH1 0x5F PUSH1 0x21 KECCAK256 SWAP2 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH1 0x60 MSTORE JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP1 NUMBER 0xAC CODECOPY 0xE0 0xDE 0xDA PUSH24 0xCB1183DBC33F14B238E32F625441A810092DEAC30B2A90E PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ", + "sourceMap": "525:3885:17:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;49637:1499:10;525:3885:17;49637:1499:10;;;525:3885:17;;;;;;;;;;;;;;;;;;;;3890:44;3919:14;3890:44;:::i;:::-;525:3885;;;;;;;;;;;;;;;;;;;;;;;;660:39;-1:-1:-1;;;;;525:3885:17;;;;;;;;;;;:::i;:::-;2602:18;;;;2598:71;;2791:23;;;;;:::i;:::-;2728:87;49540:20:10;49637:1499;525:3885:17;49637:1499:10;;;;;;525:3885:17;49637:1499:10;;;;2775:14:17;49637:1499:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;2764:9:17;;49637:1499:10;;;;;;;;;;;;;;;2764:9:17;;;49637:1499:10;;;;;;;525:3885:17;49637:1499:10;;;;;;;-1:-1:-1;;;;;525:3885:17;;2892:16;2888:137;;49637:1499:10;;525:3885:17;;;;;;;2888:137;2929:45;;;;;;;;;;:::i;:::-;;;;2988:26;;;;;525:3885;;-1:-1:-1;;;2988:26:17;;49637:1499:10;525:3885:17;2988:26;;525:3885;;;;;;;;;;;;;;;;;:::i;:::-;2988:26;;;;;;;;;;;49637:1499:10;2988:26:17;;;2888:137;;;;;2988:26;;;;;:::i;:::-;;;;;525:3885;;;;;;;;;;;2988:26;525:3885;;;49637:1499:10;;;;525:3885:17;49637:1499:10;;;;;;2764:9:17;;;;49637:1499:10;;2764:9:17;49637:1499:10;;;;;;;525:3885:17;49637:1499:10;;2598:71:17;-1:-1:-1;;;2643:15:17;;525:3885;2643:15;;525:3885;;;;;;;3556:23;525:3885;;;:::i;:::-;3919:14;3890:44;3919:14;;;;3890:44;:::i;:::-;3556:23;;:::i;:::-;155145:366:10;;;;;;3589:4:17;155145:366:10;;;;;;;;;;;;525:3885:17;;;;;;;;;;;;;;;-1:-1:-1;;525:3885:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;525:3885:17;;;;;;;;;;;;;;;;;;;;-1:-1:-1;525:3885:17;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;525:3885:17;;;;;;;;-1:-1:-1;;525:3885:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;525:3885:17;;;;;-1:-1:-1;525:3885:17;4258:150;;;4375:25;4258:150;4375:25;525:3885;;4375:25;;;;;;;;;:::i;:::-;;525:3885;;4375:25;;;;;;:::i;:::-;525:3885;4365:36;;4258:150;:::o;51982:703:10:-;;52125:554;;;;;;;;;;;;;;;;;;;;;;;;;;51982:703::o" + }, + "methodIdentifiers": { + "createAccount(bytes[],uint256)": "3ffba36f", + "getAddress(bytes[],uint256)": "250b1b41", + "implementation()": "5c60da1b", + "initCodeHash()": "db4c545e" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation_\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ImplementationUndeployed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OwnerRequired\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes[]\",\"name\":\"owners\",\"type\":\"bytes[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"AccountCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"owners\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"createAccount\",\"outputs\":[{\"internalType\":\"contract GianoSmartWallet\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"owners\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"getAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initCodeHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Applied Blockchain (https://github.com/appliedblockchain/giano)Coinbase (https://github.com/coinbase/smart-wallet)Solady (https://github.com/vectorized/solady/blob/main/src/accounts/ERC4337Factory.sol)\",\"events\":{\"AccountCreated(address,bytes[],uint256)\":{\"params\":{\"account\":\"The address of the created account.\",\"nonce\":\"The nonce of the created account.\",\"owners\":\"Array of initial owners.\"}}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"implementation_\":\"The address of the GianoSmartWallet implementation which new accounts will proxy to.\"}},\"createAccount(bytes[],uint256)\":{\"details\":\"Deployed as a ERC-1967 proxy that's implementation is `this.implementation`.\",\"params\":{\"nonce\":\"The nonce of the account, a caller defined value which allows multiple accounts with the same `owners` to exist at different addresses.\",\"owners\":\"Array of initial owners. Each item should be an ABI encoded address or 64 byte public key.\"},\"returns\":{\"account\":\"The address of the ERC-1967 proxy created with inputs `owners`, `nonce`, and `this.implementation`.\"}},\"getAddress(bytes[],uint256)\":{\"params\":{\"nonce\":\"The nonce provided to `createAccount()`.\",\"owners\":\"Array of initial owners. Each item should be an ABI encoded address or 64 byte public key.\"},\"returns\":{\"_0\":\"The predicted account deployment address.\"}},\"initCodeHash()\":{\"returns\":{\"_0\":\"The initialization code hash.\"}}},\"title\":\"Giano Smart Wallet Factory\",\"version\":1},\"userdoc\":{\"errors\":{\"ImplementationUndeployed()\":[{\"notice\":\"Thrown when trying to construct with an implementation that is not deployed.\"}],\"OwnerRequired()\":[{\"notice\":\"Thrown when trying to create a new `GianoSmartWallet` account without any owner.\"}]},\"events\":{\"AccountCreated(address,bytes[],uint256)\":{\"notice\":\"Emitted when a new account is created.\"}},\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Factory constructor used to initialize the implementation address to use for future GianoSmartWallet deployments.\"},\"createAccount(bytes[],uint256)\":{\"notice\":\"Returns the deterministic address for a GianoSmartWallet created with `owners` and `nonce` deploys and initializes contract if it has not yet been created.\"},\"getAddress(bytes[],uint256)\":{\"notice\":\"Returns the deterministic address of the account that would be created by `createAccount`.\"},\"implementation()\":{\"notice\":\"Address of the ERC-4337 implementation used as implementation for new accounts.\"},\"initCodeHash()\":{\"notice\":\"Returns the initialization code hash of the account: a ERC1967 proxy that's implementation is `this.implementation`.\"}},\"notice\":\"GianoSmartWallet factory, based on Solady's ERC4337Factory.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/GianoSmartWalletFactory.sol\":\"GianoSmartWalletFactory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@account-abstraction/contracts/core/Helpers.sol\":{\"keccak256\":\"0x6247e011a6cb0b263b3aa098822977181674d91b62e5bdfe04c6e66f72da25d6\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ca829a69b3fbc74fec8e140d42a2bf93bc3512609272f031c846470f61f0ab7e\",\"dweb:/ipfs/QmP3r3MBgAN39KeVB1rCGJWwcBcotNt26ALtAR54poQ1Jc\"]},\"@account-abstraction/contracts/core/UserOperationLib.sol\":{\"keccak256\":\"0x9d50ece985d35f82e33e5da417595c86fac10449e3d10895d08363d33aad454b\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b1d11cc364c8bf7ed5388268c895b5ffed16e87dfbcb320ddeeba5e7974315dc\",\"dweb:/ipfs/QmYSpvjxEjweietQrYZagwQ52ipy7eXx4rwvnTzXKeGeMS\"]},\"@account-abstraction/contracts/interfaces/IAccount.sol\":{\"keccak256\":\"0x38710bec0cb20ff4ceef46a80475b5bdabc27b7efd2687fd473db68332f61b78\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://dea7a723e1ef852e8764e69914a345d2e8bc5e13facfc9d5c29d791cb4ab0020\",\"dweb:/ipfs/QmU8dYgyF4DBJXFqjwLAtnE3q8q259ChfoEk9a6wyhHzEP\"]},\"@account-abstraction/contracts/interfaces/PackedUserOperation.sol\":{\"keccak256\":\"0x1129b46381db68eddbc5cb49e50664667b66b03c480453858e7b25eabe444359\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://499a948aba60480dba6e25c763b8d918f1c246eb7a3302e04f493e080f3295be\",\"dweb:/ipfs/QmeRhhswf4NACcBKam2PyjpTP2ddSm648kah5kkQJsvwz3\"]},\"FreshCryptoLib/FCL_ecdsa.sol\":{\"keccak256\":\"0x679d2e9a655cd7e156a0cfc24de0aca88d4e0b34a8e0dfe6a599f23af092f5a2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db31eb84c6f854f076d2501e3d8b5a606fb4924168bdfc6fc3de84e67ed8a80d\",\"dweb:/ipfs/QmWGAmc7B4aT6Ki52uF9QmPQKWipaptit7r3JknBHjUGfe\"]},\"FreshCryptoLib/FCL_elliptic.sol\":{\"keccak256\":\"0xac7bb3260a446851f45b8cb71e31d64ca469d7711ed04662092a9554f1283a38\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f9b0dc5a2306ad3f3a0ff4a5b947fe49422181e97c163ea237fc8bfc6736429d\",\"dweb:/ipfs/QmeruF7BvG5BNnqwqwdshoVXuXqXtajbUYB19KwPynHrQE\"]},\"openzeppelin-contracts/contracts/utils/Base64.sol\":{\"keccak256\":\"0xbee2b819e1b4bf569ffc1b1b9d560b4abd6a589575f3093edaab9244de18a0c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e478c0e9bbf3eb8cd3b7784f9b397603e34747f9ffd16571ed1d89ce102de389\",\"dweb:/ipfs/QmZ6zXpwy5xRxx9RkodJmDZSUTeEqPQUanAC5TUoYqW2VR\"]},\"solady/accounts/Receiver.sol\":{\"keccak256\":\"0xc879aa81dd5639f5fd97b31acd91658ffe33ae4b72b70ed7bd701c37addce43b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2e03a8d37d48644857d94f7432c1e2272bfd19649dfe80aba8f979f157f71f00\",\"dweb:/ipfs/QmWWS34bNWhiZgLXS9gtD8N2dxreRsVXxhvQRKqd4wKUuU\"]},\"solady/utils/CallContextChecker.sol\":{\"keccak256\":\"0xc54c743a03f4909826712e9c6b683ca95e8b0c120c55284a9e3572621ebd734b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3d3138009aba3d2fd310636f3cc1d6029e970c57ddb74693bebf2a02d3e6f12d\",\"dweb:/ipfs/QmauMpcVDyQqVnAUF75DXy831LvtxyFS7GND7kge1Zgw55\"]},\"solady/utils/LibBytes.sol\":{\"keccak256\":\"0x320c3c933df51e8fd6f1fc96de721c8cc6f1be1d4c586c11f1c472a23b86eba5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cec71f42247eda74535c6e695a2ac194268a342594a26c090bafd04434698b20\",\"dweb:/ipfs/QmXA8Qaw6DdWujdrNHMHpDLNGG4QCgC859ozivrxkxp7Ea\"]},\"solady/utils/LibClone.sol\":{\"keccak256\":\"0x1b96fd03a3948155bd2fe95dc4980930c759b174026e18f11bc8e88d55ae030e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://64998d16472a127031ee6a796ed9afcf13dd662afd30eb4d3e2a42c2bc9fd204\",\"dweb:/ipfs/QmTXHGy9t8YTW96tjiZ8RBqmijXUTqc1JznEBqHv8Duc4A\"]},\"solady/utils/LibString.sol\":{\"keccak256\":\"0x8a6b219f6ccda90c08e2debae62618d78d6f0cef086eb6c9503793d7f12815dd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d1301acbf7371cb51ab01fe3bee8a9b732ee0bcf6cc0db20ed5a3fb9241d675e\",\"dweb:/ipfs/QmXuM4tSfPDeFRvP3nEQmuezp1yEm4HxyWtU41FjiCdxAG\"]},\"solady/utils/SignatureCheckerLib.sol\":{\"keccak256\":\"0x098c7eb88b3048f227b240e0e5bf1da4a8f7622b30f6d7c06416bfcab3225e77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://50c2766f652916c5d6433665fb1c3b2f04c3d9292a35c12e0f8d7c71dd6438cb\",\"dweb:/ipfs/QmWTMwN2RDZUUPg7KkH1qFBjTSh84Zw8bbYwRBCQUtLN2h\"]},\"solady/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x63899eaf1a24713464b8084ada33a83c4b7db789fe83ae22f016e39646bee361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://617fa735ffa8ba31051745614a508abd69d2cfc1b1bc1eb3c772865db5f7ce65\",\"dweb:/ipfs/QmR1pQbHPyXcLbFm2vHrXBs1qRFrGC22gF7wWYamYy8aaE\"]},\"src/AuthenticatedStaticCaller.sol\":{\"keccak256\":\"0x06bb6bea86630eda0e5920c4fe4a5d51e89d18072faf7c4b5d7ae8ca82b87b94\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2920f02558ea8bbe8ca21cbe1bcbbea7d3c4d7f0d3e812cde706f95c53b399aa\",\"dweb:/ipfs/QmaNpbMazUf1n6hpXSMq7RDJix7ipPiALKE93fMmBtbS4A\"]},\"src/ERC1271.sol\":{\"keccak256\":\"0x75c3fe08b6e1789dab7714196704f425d1afea21d725fcb6c418a70ef5bf6fad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd292bcf9b1891abb517323636493499dbdd00bebc1f759c07fb26e103a1b71d\",\"dweb:/ipfs/QmWMT3C54pakfUCTkcPzFQAvE8nRnPqDDpFaDhY5A9fpEp\"]},\"src/GianoSmartWallet.sol\":{\"keccak256\":\"0x10f35f381fe7d934aa2f83dde5f50a69efbe49600679cb8cd7777fb07931e4e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a93eeba861ccaf70dfe6d9ed594f5ae55d37ee9feab8e4867c95657b36ae1b51\",\"dweb:/ipfs/QmTPuS5LuaW2Fx3QAXoUD4gSErZ8CoRQKFk8Nsy3vMe2PV\"]},\"src/GianoSmartWalletFactory.sol\":{\"keccak256\":\"0x047319a845313e24dd7d80263618e28075e3bb9ee3bbfbe68cbc2d3784e88114\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://14f9fcac74018f75d8f1ddc5aa790f4a93797fbcbb3c047f391142896ca69324\",\"dweb:/ipfs/QmZhpKteqQgt7Wt72pN7Ae9mk5J2W3k6cteaFbFzDBMcU9\"]},\"src/MultiOwnable.sol\":{\"keccak256\":\"0x46a9fa25c7de87b56df47b67d61b6efd96ed3f382c5d440d04de55fa23bccadd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75ac03bdfdddec29b0b1f4f9c33add4b5b9d5400b1a54691a544a59ac710de5c\",\"dweb:/ipfs/QmXajkF7z8rqmDE89H4uVaKCDyQsdwphif8BHZLLu9MQ5k\"]},\"webauthn-sol/WebAuthn.sol\":{\"keccak256\":\"0x8b940975249f72155110e5e5b4611fc9031330538183862b9d8f12ea7c30ad25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://433957720c13a834b9aab98a5054e9dabe5c660a1a3fb267e6ad1a22b99b68ed\",\"dweb:/ipfs/QmTkQxCCf8kDAHa6rBwLT2mxFXN3tSAWyx4rLmgcLkFkRh\"]}},\"version\":1}" + } + }, + "src/MultiOwnable.sol": { + "MultiOwnable": { + "abi": [ + { + "inputs": [ + { + "internalType": "bytes", + "name": "owner", + "type": "bytes" + } + ], + "name": "AlreadyOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "owner", + "type": "bytes" + } + ], + "name": "InvalidEthereumAddressOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "owner", + "type": "bytes" + } + ], + "name": "InvalidOwnerBytesLength", + "type": "error" + }, + { + "inputs": [], + "name": "LastOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "NoOwnerAtIndex", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "ownersRemaining", + "type": "uint256" + } + ], + "name": "NotLastOwner", + "type": "error" + }, + { + "inputs": [], + "name": "Unauthorized", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "expectedOwner", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "actualOwner", + "type": "bytes" + } + ], + "name": "WrongOwnerAtIndex", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "owner", + "type": "bytes" + } + ], + "name": "AddOwner", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "owner", + "type": "bytes" + } + ], + "name": "RemoveOwner", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "addOwnerAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "x", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "y", + "type": "bytes32" + } + ], + "name": "addOwnerPublicKey", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isOwnerAddress", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "account", + "type": "bytes" + } + ], + "name": "isOwnerBytes", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "x", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "y", + "type": "bytes32" + } + ], + "name": "isOwnerPublicKey", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "nextOwnerIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "ownerAtIndex", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "ownerCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "owner", + "type": "bytes" + } + ], + "name": "removeLastOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "owner", + "type": "bytes" + } + ], + "name": "removeOwnerAtIndex", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "removedOwnersCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60808060405234601557610aa4908161001b8239f35b600080fdfe608080604052600436101561001357600080fd5b60003560e01c908163066a1eb714610318575080630db02622146102f55780630f0f3f24146102ab5780631ca5393f1461025157806329565e3b146101ec57806336d9cf9b146101c157806389625b57146101815780638ea690291461014a578063a2e1a8d814610111578063b8197367146100c85763d948fd2e1461009857600080fd5b346100c35760003660031901126100c3576020600080516020610a2f83398151915254604051908152f35b600080fd5b346100c3576100d6366103dc565b906100df610643565b6100e76104bd565b92600184116100fc576100fa9350610886565b005b83631047e35560e31b60005260045260246000fd5b346100c35760203660031901126100c3576004356001600160a01b03811681036100c357610140602091610618565b6040519015158152f35b346100c35760203660031901126100c35761017d610169600435610548565b604051918291602083526020830190610453565b0390f35b346100c35761018f366103dc565b90610198610643565b60016101a26104bd565b146101b0576100fa92610886565b63948bf89760e01b60005260046000fd5b346100c35760003660031901126100c3576020600080516020610a4f83398151915254604051908152f35b346100c3576100fa6101fd36610347565b610205610643565b60405191602083015260408201526040815261022260608261035d565b600080516020610a2f833981519152549061023c826104ff565b600080516020610a2f83398151915255610689565b346100c35760203660031901126100c35760043567ffffffffffffffff81116100c357366023820112156100c35760ff61029f61029a6020933690602481600401359101610395565b610478565b54166040519015158152f35b346100c35760203660031901126100c3576004356001600160a01b038116908190036100c3576100fa906102dd610643565b6040519060208201526020815261022260408261035d565b346100c35760003660031901126100c35760206103106104bd565b604051908152f35b346100c35760ff61029f60209261032e36610347565b908583015260408201526040815261029a60608261035d565b60409060031901126100c3576004359060243590565b90601f8019910116810190811067ffffffffffffffff82111761037f57604052565b634e487b7160e01b600052604160045260246000fd5b92919267ffffffffffffffff821161037f57604051916103bf601f8201601f19166020018461035d565b8294818452818301116100c3578281602093846000960137010152565b60406003198201126100c3576004359160243567ffffffffffffffff81116100c357826023820112156100c35780600401359267ffffffffffffffff84116100c357602484830101116100c3576024019190565b60005b8381106104435750506000910152565b8181015183820152602001610433565b9060209161046c81518092818552858086019101610430565b601f01601f1916010190565b6020610491918160405193828580945193849201610430565b81017f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f50381520301902090565b600080516020610a2f83398151915254600080516020610a4f8339815191525481039081116104e95790565b634e487b7160e01b600052601160045260246000fd5b60001981146104e95760010190565b90600182811c9216801561053e575b602083101461052857565b634e487b7160e01b600052602260045260246000fd5b91607f169161051d565b6000527f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f5026020526040600020604051908160008254926105878461050e565b80845293600181169081156105f657506001146105af575b506105ac9250038261035d565b90565b90506000929192526020600020906000915b8183106105da5750509060206105ac928201013861059f565b60209193508060019154838588010152019101909183926105c1565b9050602092506105ac94915060ff191682840152151560051b8201013861059f565b61063e60ff916040519060018060a01b031660208201526020815261029a60408261035d565b541690565b61064c33610618565b8015610669575b610667576282b42960e81b60005260046000fd5b565b50303314610653565b81811061067d575050565b60008155600101610672565b60ff61069482610478565b541661083c576106a381610478565b600160ff19825416179055816000527f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f5026020526040600020815167ffffffffffffffff811161037f576106f6825461050e565b601f81116107ff575b506020601f82116001146107755791817f38109edc26e166b5579352ce56a50813177eb25208fd90d61f2f37838622022094926107659460009161076a575b508160011b916000199060031b1c1916179055604051918291602083526020830190610453565b0390a2565b90508301513861073e565b601f1982169083600052806000209160005b8181106107e75750926107659492600192827f38109edc26e166b5579352ce56a50813177eb25208fd90d61f2f3783862202209896106107ce575b5050811b019055610169565b85015160001960f88460031b161c1916905538806107c2565b9192602060018192868a015181550194019201610787565b61082c90836000526020600020601f840160051c81019160208510610832575b601f0160051c0190610672565b386106ff565b909150819061081f565b60405163468b12ad60e11b815260206004820152908190610861906024830190610453565b0390fd5b908060209392818452848401376000828201840152601f01601f1916010190565b9161089083610548565b805115610a1957805160208201206108a9368486610395565b60208151910120036109d85750907fcf95bbfe6f870f8cc40482dc3dccdafd268f0e9ce0a4f24ea1bea9be64e505ff91604051818382376020818381017f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f50381520301902060ff198154169055836000527f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f502602052604060002061094c815461050e565b9081610994575b505061096d600080516020610a4f833981519152546104ff565b600080516020610a4f83398151915255610765604051928392602084526020840191610865565b81601f600093116001146109ac5750555b3880610953565b818352602083206109c891601f0160051c810190600101610672565b80825281602081209155556109a5565b610a0761086192949360405195869563781f2e3960e01b87526004870152606060248701526064860191610865565b83810360031901604485015290610453565b8363340c473d60e11b60005260045260246000fdfe0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f5000627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f501a264697066735822122008bf9e3c9de7ba06546136e69ceefea4e48f805cfa106f7803c7fdf5277353a464736f6c634300081c0033", + "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x15 JUMPI PUSH2 0xAA4 SWAP1 DUP2 PUSH2 0x1B DUP3 CODECOPY RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x66A1EB7 EQ PUSH2 0x318 JUMPI POP DUP1 PUSH4 0xDB02622 EQ PUSH2 0x2F5 JUMPI DUP1 PUSH4 0xF0F3F24 EQ PUSH2 0x2AB JUMPI DUP1 PUSH4 0x1CA5393F EQ PUSH2 0x251 JUMPI DUP1 PUSH4 0x29565E3B EQ PUSH2 0x1EC JUMPI DUP1 PUSH4 0x36D9CF9B EQ PUSH2 0x1C1 JUMPI DUP1 PUSH4 0x89625B57 EQ PUSH2 0x181 JUMPI DUP1 PUSH4 0x8EA69029 EQ PUSH2 0x14A JUMPI DUP1 PUSH4 0xA2E1A8D8 EQ PUSH2 0x111 JUMPI DUP1 PUSH4 0xB8197367 EQ PUSH2 0xC8 JUMPI PUSH4 0xD948FD2E EQ PUSH2 0x98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xC3 JUMPI PUSH1 0x20 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA2F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH2 0xD6 CALLDATASIZE PUSH2 0x3DC JUMP JUMPDEST SWAP1 PUSH2 0xDF PUSH2 0x643 JUMP JUMPDEST PUSH2 0xE7 PUSH2 0x4BD JUMP JUMPDEST SWAP3 PUSH1 0x1 DUP5 GT PUSH2 0xFC JUMPI PUSH2 0xFA SWAP4 POP PUSH2 0x886 JUMP JUMPDEST STOP JUMPDEST DUP4 PUSH4 0x1047E355 PUSH1 0xE3 SHL PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xC3 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0xC3 JUMPI PUSH2 0x140 PUSH1 0x20 SWAP2 PUSH2 0x618 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xC3 JUMPI PUSH2 0x17D PUSH2 0x169 PUSH1 0x4 CALLDATALOAD PUSH2 0x548 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x453 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH2 0x18F CALLDATASIZE PUSH2 0x3DC JUMP JUMPDEST SWAP1 PUSH2 0x198 PUSH2 0x643 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x1A2 PUSH2 0x4BD JUMP JUMPDEST EQ PUSH2 0x1B0 JUMPI PUSH2 0xFA SWAP3 PUSH2 0x886 JUMP JUMPDEST PUSH4 0x948BF897 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xC3 JUMPI PUSH1 0x20 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA4F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH2 0xFA PUSH2 0x1FD CALLDATASIZE PUSH2 0x347 JUMP JUMPDEST PUSH2 0x205 PUSH2 0x643 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x40 DUP2 MSTORE PUSH2 0x222 PUSH1 0x60 DUP3 PUSH2 0x35D JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA2F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD SWAP1 PUSH2 0x23C DUP3 PUSH2 0x4FF JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA2F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE PUSH2 0x689 JUMP JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xC3 JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xC3 JUMPI CALLDATASIZE PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0xC3 JUMPI PUSH1 0xFF PUSH2 0x29F PUSH2 0x29A PUSH1 0x20 SWAP4 CALLDATASIZE SWAP1 PUSH1 0x24 DUP2 PUSH1 0x4 ADD CALLDATALOAD SWAP2 ADD PUSH2 0x395 JUMP JUMPDEST PUSH2 0x478 JUMP JUMPDEST SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xC3 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 DUP2 SWAP1 SUB PUSH2 0xC3 JUMPI PUSH2 0xFA SWAP1 PUSH2 0x2DD PUSH2 0x643 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x20 DUP2 MSTORE PUSH2 0x222 PUSH1 0x40 DUP3 PUSH2 0x35D JUMP JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xC3 JUMPI PUSH1 0x20 PUSH2 0x310 PUSH2 0x4BD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH1 0xFF PUSH2 0x29F PUSH1 0x20 SWAP3 PUSH2 0x32E CALLDATASIZE PUSH2 0x347 JUMP JUMPDEST SWAP1 DUP6 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x40 DUP2 MSTORE PUSH2 0x29A PUSH1 0x60 DUP3 PUSH2 0x35D JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH1 0x3 NOT ADD SLT PUSH2 0xC3 JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1F DUP1 NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x37F JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 SWAP2 SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x37F JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x3BF PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP5 PUSH2 0x35D JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0xC3 JUMPI DUP3 DUP2 PUSH1 0x20 SWAP4 DUP5 PUSH1 0x0 SWAP7 ADD CALLDATACOPY ADD ADD MSTORE JUMP JUMPDEST PUSH1 0x40 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0xC3 JUMPI PUSH1 0x4 CALLDATALOAD SWAP2 PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xC3 JUMPI DUP3 PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0xC3 JUMPI DUP1 PUSH1 0x4 ADD CALLDATALOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP5 GT PUSH2 0xC3 JUMPI PUSH1 0x24 DUP5 DUP4 ADD ADD GT PUSH2 0xC3 JUMPI PUSH1 0x24 ADD SWAP2 SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT PUSH2 0x443 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x433 JUMP JUMPDEST SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x46C DUP2 MLOAD DUP1 SWAP3 DUP2 DUP6 MSTORE DUP6 DUP1 DUP7 ADD SWAP2 ADD PUSH2 0x430 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x491 SWAP2 DUP2 PUSH1 0x40 MLOAD SWAP4 DUP3 DUP6 DUP1 SWAP5 MLOAD SWAP4 DUP5 SWAP3 ADD PUSH2 0x430 JUMP JUMPDEST DUP2 ADD PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F503 DUP2 MSTORE SUB ADD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA2F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA4F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD DUP2 SUB SWAP1 DUP2 GT PUSH2 0x4E9 JUMPI SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 NOT DUP2 EQ PUSH2 0x4E9 JUMPI PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x53E JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x528 JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x51D JUMP JUMPDEST PUSH1 0x0 MSTORE PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F502 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD SWAP1 DUP2 PUSH1 0x0 DUP3 SLOAD SWAP3 PUSH2 0x587 DUP5 PUSH2 0x50E JUMP JUMPDEST DUP1 DUP5 MSTORE SWAP4 PUSH1 0x1 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x5F6 JUMPI POP PUSH1 0x1 EQ PUSH2 0x5AF JUMPI JUMPDEST POP PUSH2 0x5AC SWAP3 POP SUB DUP3 PUSH2 0x35D JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 SWAP3 SWAP2 SWAP3 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x0 SWAP2 JUMPDEST DUP2 DUP4 LT PUSH2 0x5DA JUMPI POP POP SWAP1 PUSH1 0x20 PUSH2 0x5AC SWAP3 DUP3 ADD ADD CODESIZE PUSH2 0x59F JUMP JUMPDEST PUSH1 0x20 SWAP2 SWAP4 POP DUP1 PUSH1 0x1 SWAP2 SLOAD DUP4 DUP6 DUP9 ADD ADD MSTORE ADD SWAP2 ADD SWAP1 SWAP2 DUP4 SWAP3 PUSH2 0x5C1 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 SWAP3 POP PUSH2 0x5AC SWAP5 SWAP2 POP PUSH1 0xFF NOT AND DUP3 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD CODESIZE PUSH2 0x59F JUMP JUMPDEST PUSH2 0x63E PUSH1 0xFF SWAP2 PUSH1 0x40 MLOAD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x20 DUP2 MSTORE PUSH2 0x29A PUSH1 0x40 DUP3 PUSH2 0x35D JUMP JUMPDEST SLOAD AND SWAP1 JUMP JUMPDEST PUSH2 0x64C CALLER PUSH2 0x618 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x669 JUMPI JUMPDEST PUSH2 0x667 JUMPI PUSH3 0x82B429 PUSH1 0xE8 SHL PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST JUMP JUMPDEST POP ADDRESS CALLER EQ PUSH2 0x653 JUMP JUMPDEST DUP2 DUP2 LT PUSH2 0x67D JUMPI POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x672 JUMP JUMPDEST PUSH1 0xFF PUSH2 0x694 DUP3 PUSH2 0x478 JUMP JUMPDEST SLOAD AND PUSH2 0x83C JUMPI PUSH2 0x6A3 DUP2 PUSH2 0x478 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xFF NOT DUP3 SLOAD AND OR SWAP1 SSTORE DUP2 PUSH1 0x0 MSTORE PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F502 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x37F JUMPI PUSH2 0x6F6 DUP3 SLOAD PUSH2 0x50E JUMP JUMPDEST PUSH1 0x1F DUP2 GT PUSH2 0x7FF JUMPI JUMPDEST POP PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 EQ PUSH2 0x775 JUMPI SWAP2 DUP2 PUSH32 0x38109EDC26E166B5579352CE56A50813177EB25208FD90D61F2F378386220220 SWAP5 SWAP3 PUSH2 0x765 SWAP5 PUSH1 0x0 SWAP2 PUSH2 0x76A JUMPI JUMPDEST POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH1 0x0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x453 JUMP JUMPDEST SUB SWAP1 LOG2 JUMP JUMPDEST SWAP1 POP DUP4 ADD MLOAD CODESIZE PUSH2 0x73E JUMP JUMPDEST PUSH1 0x1F NOT DUP3 AND SWAP1 DUP4 PUSH1 0x0 MSTORE DUP1 PUSH1 0x0 KECCAK256 SWAP2 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0x7E7 JUMPI POP SWAP3 PUSH2 0x765 SWAP5 SWAP3 PUSH1 0x1 SWAP3 DUP3 PUSH32 0x38109EDC26E166B5579352CE56A50813177EB25208FD90D61F2F378386220220 SWAP9 SWAP7 LT PUSH2 0x7CE JUMPI JUMPDEST POP POP DUP2 SHL ADD SWAP1 SSTORE PUSH2 0x169 JUMP JUMPDEST DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE CODESIZE DUP1 PUSH2 0x7C2 JUMP JUMPDEST SWAP2 SWAP3 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP7 DUP11 ADD MLOAD DUP2 SSTORE ADD SWAP5 ADD SWAP3 ADD PUSH2 0x787 JUMP JUMPDEST PUSH2 0x82C SWAP1 DUP4 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD SWAP2 PUSH1 0x20 DUP6 LT PUSH2 0x832 JUMPI JUMPDEST PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP1 PUSH2 0x672 JUMP JUMPDEST CODESIZE PUSH2 0x6FF JUMP JUMPDEST SWAP1 SWAP2 POP DUP2 SWAP1 PUSH2 0x81F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x468B12AD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE SWAP1 DUP2 SWAP1 PUSH2 0x861 SWAP1 PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x453 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 DUP1 PUSH1 0x20 SWAP4 SWAP3 DUP2 DUP5 MSTORE DUP5 DUP5 ADD CALLDATACOPY PUSH1 0x0 DUP3 DUP3 ADD DUP5 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND ADD ADD SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x890 DUP4 PUSH2 0x548 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0xA19 JUMPI DUP1 MLOAD PUSH1 0x20 DUP3 ADD KECCAK256 PUSH2 0x8A9 CALLDATASIZE DUP5 DUP7 PUSH2 0x395 JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD KECCAK256 SUB PUSH2 0x9D8 JUMPI POP SWAP1 PUSH32 0xCF95BBFE6F870F8CC40482DC3DCCDAFD268F0E9CE0A4F24EA1BEA9BE64E505FF SWAP2 PUSH1 0x40 MLOAD DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x20 DUP2 DUP4 DUP2 ADD PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F503 DUP2 MSTORE SUB ADD SWAP1 KECCAK256 PUSH1 0xFF NOT DUP2 SLOAD AND SWAP1 SSTORE DUP4 PUSH1 0x0 MSTORE PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F502 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH2 0x94C DUP2 SLOAD PUSH2 0x50E JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x994 JUMPI JUMPDEST POP POP PUSH2 0x96D PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA4F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH2 0x4FF JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA4F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE PUSH2 0x765 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP3 PUSH1 0x20 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP2 PUSH2 0x865 JUMP JUMPDEST DUP2 PUSH1 0x1F PUSH1 0x0 SWAP4 GT PUSH1 0x1 EQ PUSH2 0x9AC JUMPI POP SSTORE JUMPDEST CODESIZE DUP1 PUSH2 0x953 JUMP JUMPDEST DUP2 DUP4 MSTORE PUSH1 0x20 DUP4 KECCAK256 PUSH2 0x9C8 SWAP2 PUSH1 0x1F ADD PUSH1 0x5 SHR DUP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x672 JUMP JUMPDEST DUP1 DUP3 MSTORE DUP2 PUSH1 0x20 DUP2 KECCAK256 SWAP2 SSTORE SSTORE PUSH2 0x9A5 JUMP JUMPDEST PUSH2 0xA07 PUSH2 0x861 SWAP3 SWAP5 SWAP4 PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP6 PUSH4 0x781F2E39 PUSH1 0xE0 SHL DUP8 MSTORE PUSH1 0x4 DUP8 ADD MSTORE PUSH1 0x60 PUSH1 0x24 DUP8 ADD MSTORE PUSH1 0x64 DUP7 ADD SWAP2 PUSH2 0x865 JUMP JUMPDEST DUP4 DUP2 SUB PUSH1 0x3 NOT ADD PUSH1 0x44 DUP6 ADD MSTORE SWAP1 PUSH2 0x453 JUMP JUMPDEST DUP4 PUSH4 0x340C473D PUSH1 0xE1 SHL PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID MOD 0x27 0xF7 0x2A CREATE 0xE6 DELEGATECALL SLT NOT JUMPDEST 0xD DUP11 0xCB 0xE4 CODESIZE 0xB2 DUP1 SWAP1 0xDD SLOAD JUMPDEST PUSH30 0x2331FCCF77723561F5000627F72AF0E6F412195B0D8ACBE438B28090DD54 JUMPDEST PUSH30 0x2331FCCF77723561F501A264697066735822122008BF9E3C9DE7BA065461 CALLDATASIZE 0xE6 SWAP13 0xEE INVALID LOG4 0xE4 DUP16 DUP1 TLOAD STATICCALL LT PUSH16 0x7803C7FDF5277353A464736F6C634300 ADDMOD SHR STOP CALLER ", + "sourceMap": "1427:10263:18:-:0;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "abi_decode_available_length_bytes": { + "entryPoint": 917, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_decode_bytes32t_bytes32": { + "entryPoint": 839, + "id": null, + "parameterSlots": 1, + "returnSlots": 2 + }, + "abi_decode_uint256t_bytes_calldata": { + "entryPoint": 988, + "id": null, + "parameterSlots": 1, + "returnSlots": 3 + }, + "abi_encode_bytes": { + "entryPoint": 1107, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_bytes_calldata": { + "entryPoint": 2149, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "clear_storage_range_bytes1": { + "entryPoint": 1650, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "copy_memory_to_memory_with_cleanup": { + "entryPoint": 1072, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "extract_byte_array_length": { + "entryPoint": 1294, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "finalize_allocation": { + "entryPoint": 861, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "fun_addOwnerAtIndex": { + "entryPoint": 1673, + "id": 8000, + "parameterSlots": 2, + "returnSlots": 0 + }, + "fun_checkOwner": { + "entryPoint": 1603, + "id": 8091, + "parameterSlots": 0, + "returnSlots": 0 + }, + "fun_isOwnerAddress": { + "entryPoint": 1560, + "id": 7768, + "parameterSlots": 1, + "returnSlots": 1 + }, + "fun_ownerAtIndex": { + "entryPoint": 1352, + "id": 7819, + "parameterSlots": 1, + "returnSlots": 1 + }, + "fun_ownerCount": { + "entryPoint": 1213, + "id": 7849, + "parameterSlots": 0, + "returnSlots": 1 + }, + "fun_removeOwnerAtIndex": { + "entryPoint": 2182, + "id": 8067, + "parameterSlots": 3, + "returnSlots": 0 + }, + "increment_uint256": { + "entryPoint": 1279, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "packed_hashed_bytes_uint256_to_bytes_uint": { + "entryPoint": 1144, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + } + }, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "608080604052600436101561001357600080fd5b60003560e01c908163066a1eb714610318575080630db02622146102f55780630f0f3f24146102ab5780631ca5393f1461025157806329565e3b146101ec57806336d9cf9b146101c157806389625b57146101815780638ea690291461014a578063a2e1a8d814610111578063b8197367146100c85763d948fd2e1461009857600080fd5b346100c35760003660031901126100c3576020600080516020610a2f83398151915254604051908152f35b600080fd5b346100c3576100d6366103dc565b906100df610643565b6100e76104bd565b92600184116100fc576100fa9350610886565b005b83631047e35560e31b60005260045260246000fd5b346100c35760203660031901126100c3576004356001600160a01b03811681036100c357610140602091610618565b6040519015158152f35b346100c35760203660031901126100c35761017d610169600435610548565b604051918291602083526020830190610453565b0390f35b346100c35761018f366103dc565b90610198610643565b60016101a26104bd565b146101b0576100fa92610886565b63948bf89760e01b60005260046000fd5b346100c35760003660031901126100c3576020600080516020610a4f83398151915254604051908152f35b346100c3576100fa6101fd36610347565b610205610643565b60405191602083015260408201526040815261022260608261035d565b600080516020610a2f833981519152549061023c826104ff565b600080516020610a2f83398151915255610689565b346100c35760203660031901126100c35760043567ffffffffffffffff81116100c357366023820112156100c35760ff61029f61029a6020933690602481600401359101610395565b610478565b54166040519015158152f35b346100c35760203660031901126100c3576004356001600160a01b038116908190036100c3576100fa906102dd610643565b6040519060208201526020815261022260408261035d565b346100c35760003660031901126100c35760206103106104bd565b604051908152f35b346100c35760ff61029f60209261032e36610347565b908583015260408201526040815261029a60608261035d565b60409060031901126100c3576004359060243590565b90601f8019910116810190811067ffffffffffffffff82111761037f57604052565b634e487b7160e01b600052604160045260246000fd5b92919267ffffffffffffffff821161037f57604051916103bf601f8201601f19166020018461035d565b8294818452818301116100c3578281602093846000960137010152565b60406003198201126100c3576004359160243567ffffffffffffffff81116100c357826023820112156100c35780600401359267ffffffffffffffff84116100c357602484830101116100c3576024019190565b60005b8381106104435750506000910152565b8181015183820152602001610433565b9060209161046c81518092818552858086019101610430565b601f01601f1916010190565b6020610491918160405193828580945193849201610430565b81017f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f50381520301902090565b600080516020610a2f83398151915254600080516020610a4f8339815191525481039081116104e95790565b634e487b7160e01b600052601160045260246000fd5b60001981146104e95760010190565b90600182811c9216801561053e575b602083101461052857565b634e487b7160e01b600052602260045260246000fd5b91607f169161051d565b6000527f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f5026020526040600020604051908160008254926105878461050e565b80845293600181169081156105f657506001146105af575b506105ac9250038261035d565b90565b90506000929192526020600020906000915b8183106105da5750509060206105ac928201013861059f565b60209193508060019154838588010152019101909183926105c1565b9050602092506105ac94915060ff191682840152151560051b8201013861059f565b61063e60ff916040519060018060a01b031660208201526020815261029a60408261035d565b541690565b61064c33610618565b8015610669575b610667576282b42960e81b60005260046000fd5b565b50303314610653565b81811061067d575050565b60008155600101610672565b60ff61069482610478565b541661083c576106a381610478565b600160ff19825416179055816000527f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f5026020526040600020815167ffffffffffffffff811161037f576106f6825461050e565b601f81116107ff575b506020601f82116001146107755791817f38109edc26e166b5579352ce56a50813177eb25208fd90d61f2f37838622022094926107659460009161076a575b508160011b916000199060031b1c1916179055604051918291602083526020830190610453565b0390a2565b90508301513861073e565b601f1982169083600052806000209160005b8181106107e75750926107659492600192827f38109edc26e166b5579352ce56a50813177eb25208fd90d61f2f3783862202209896106107ce575b5050811b019055610169565b85015160001960f88460031b161c1916905538806107c2565b9192602060018192868a015181550194019201610787565b61082c90836000526020600020601f840160051c81019160208510610832575b601f0160051c0190610672565b386106ff565b909150819061081f565b60405163468b12ad60e11b815260206004820152908190610861906024830190610453565b0390fd5b908060209392818452848401376000828201840152601f01601f1916010190565b9161089083610548565b805115610a1957805160208201206108a9368486610395565b60208151910120036109d85750907fcf95bbfe6f870f8cc40482dc3dccdafd268f0e9ce0a4f24ea1bea9be64e505ff91604051818382376020818381017f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f50381520301902060ff198154169055836000527f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f502602052604060002061094c815461050e565b9081610994575b505061096d600080516020610a4f833981519152546104ff565b600080516020610a4f83398151915255610765604051928392602084526020840191610865565b81601f600093116001146109ac5750555b3880610953565b818352602083206109c891601f0160051c810190600101610672565b80825281602081209155556109a5565b610a0761086192949360405195869563781f2e3960e01b87526004870152606060248701526064860191610865565b83810360031901604485015290610453565b8363340c473d60e11b60005260045260246000fdfe0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f5000627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f501a264697066735822122008bf9e3c9de7ba06546136e69ceefea4e48f805cfa106f7803c7fdf5277353a464736f6c634300081c0033", + "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x66A1EB7 EQ PUSH2 0x318 JUMPI POP DUP1 PUSH4 0xDB02622 EQ PUSH2 0x2F5 JUMPI DUP1 PUSH4 0xF0F3F24 EQ PUSH2 0x2AB JUMPI DUP1 PUSH4 0x1CA5393F EQ PUSH2 0x251 JUMPI DUP1 PUSH4 0x29565E3B EQ PUSH2 0x1EC JUMPI DUP1 PUSH4 0x36D9CF9B EQ PUSH2 0x1C1 JUMPI DUP1 PUSH4 0x89625B57 EQ PUSH2 0x181 JUMPI DUP1 PUSH4 0x8EA69029 EQ PUSH2 0x14A JUMPI DUP1 PUSH4 0xA2E1A8D8 EQ PUSH2 0x111 JUMPI DUP1 PUSH4 0xB8197367 EQ PUSH2 0xC8 JUMPI PUSH4 0xD948FD2E EQ PUSH2 0x98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xC3 JUMPI PUSH1 0x20 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA2F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH2 0xD6 CALLDATASIZE PUSH2 0x3DC JUMP JUMPDEST SWAP1 PUSH2 0xDF PUSH2 0x643 JUMP JUMPDEST PUSH2 0xE7 PUSH2 0x4BD JUMP JUMPDEST SWAP3 PUSH1 0x1 DUP5 GT PUSH2 0xFC JUMPI PUSH2 0xFA SWAP4 POP PUSH2 0x886 JUMP JUMPDEST STOP JUMPDEST DUP4 PUSH4 0x1047E355 PUSH1 0xE3 SHL PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xC3 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0xC3 JUMPI PUSH2 0x140 PUSH1 0x20 SWAP2 PUSH2 0x618 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xC3 JUMPI PUSH2 0x17D PUSH2 0x169 PUSH1 0x4 CALLDATALOAD PUSH2 0x548 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x453 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH2 0x18F CALLDATASIZE PUSH2 0x3DC JUMP JUMPDEST SWAP1 PUSH2 0x198 PUSH2 0x643 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x1A2 PUSH2 0x4BD JUMP JUMPDEST EQ PUSH2 0x1B0 JUMPI PUSH2 0xFA SWAP3 PUSH2 0x886 JUMP JUMPDEST PUSH4 0x948BF897 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xC3 JUMPI PUSH1 0x20 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA4F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH2 0xFA PUSH2 0x1FD CALLDATASIZE PUSH2 0x347 JUMP JUMPDEST PUSH2 0x205 PUSH2 0x643 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x40 DUP2 MSTORE PUSH2 0x222 PUSH1 0x60 DUP3 PUSH2 0x35D JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA2F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD SWAP1 PUSH2 0x23C DUP3 PUSH2 0x4FF JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA2F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE PUSH2 0x689 JUMP JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xC3 JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xC3 JUMPI CALLDATASIZE PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0xC3 JUMPI PUSH1 0xFF PUSH2 0x29F PUSH2 0x29A PUSH1 0x20 SWAP4 CALLDATASIZE SWAP1 PUSH1 0x24 DUP2 PUSH1 0x4 ADD CALLDATALOAD SWAP2 ADD PUSH2 0x395 JUMP JUMPDEST PUSH2 0x478 JUMP JUMPDEST SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xC3 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 DUP2 SWAP1 SUB PUSH2 0xC3 JUMPI PUSH2 0xFA SWAP1 PUSH2 0x2DD PUSH2 0x643 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x20 DUP2 MSTORE PUSH2 0x222 PUSH1 0x40 DUP3 PUSH2 0x35D JUMP JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0xC3 JUMPI PUSH1 0x20 PUSH2 0x310 PUSH2 0x4BD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0xC3 JUMPI PUSH1 0xFF PUSH2 0x29F PUSH1 0x20 SWAP3 PUSH2 0x32E CALLDATASIZE PUSH2 0x347 JUMP JUMPDEST SWAP1 DUP6 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x40 DUP2 MSTORE PUSH2 0x29A PUSH1 0x60 DUP3 PUSH2 0x35D JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH1 0x3 NOT ADD SLT PUSH2 0xC3 JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1F DUP1 NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x37F JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 SWAP2 SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x37F JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x3BF PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP5 PUSH2 0x35D JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0xC3 JUMPI DUP3 DUP2 PUSH1 0x20 SWAP4 DUP5 PUSH1 0x0 SWAP7 ADD CALLDATACOPY ADD ADD MSTORE JUMP JUMPDEST PUSH1 0x40 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0xC3 JUMPI PUSH1 0x4 CALLDATALOAD SWAP2 PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xC3 JUMPI DUP3 PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0xC3 JUMPI DUP1 PUSH1 0x4 ADD CALLDATALOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP5 GT PUSH2 0xC3 JUMPI PUSH1 0x24 DUP5 DUP4 ADD ADD GT PUSH2 0xC3 JUMPI PUSH1 0x24 ADD SWAP2 SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT PUSH2 0x443 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x433 JUMP JUMPDEST SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x46C DUP2 MLOAD DUP1 SWAP3 DUP2 DUP6 MSTORE DUP6 DUP1 DUP7 ADD SWAP2 ADD PUSH2 0x430 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x491 SWAP2 DUP2 PUSH1 0x40 MLOAD SWAP4 DUP3 DUP6 DUP1 SWAP5 MLOAD SWAP4 DUP5 SWAP3 ADD PUSH2 0x430 JUMP JUMPDEST DUP2 ADD PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F503 DUP2 MSTORE SUB ADD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA2F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA4F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD DUP2 SUB SWAP1 DUP2 GT PUSH2 0x4E9 JUMPI SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 NOT DUP2 EQ PUSH2 0x4E9 JUMPI PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x53E JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x528 JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x51D JUMP JUMPDEST PUSH1 0x0 MSTORE PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F502 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD SWAP1 DUP2 PUSH1 0x0 DUP3 SLOAD SWAP3 PUSH2 0x587 DUP5 PUSH2 0x50E JUMP JUMPDEST DUP1 DUP5 MSTORE SWAP4 PUSH1 0x1 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x5F6 JUMPI POP PUSH1 0x1 EQ PUSH2 0x5AF JUMPI JUMPDEST POP PUSH2 0x5AC SWAP3 POP SUB DUP3 PUSH2 0x35D JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 SWAP3 SWAP2 SWAP3 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x0 SWAP2 JUMPDEST DUP2 DUP4 LT PUSH2 0x5DA JUMPI POP POP SWAP1 PUSH1 0x20 PUSH2 0x5AC SWAP3 DUP3 ADD ADD CODESIZE PUSH2 0x59F JUMP JUMPDEST PUSH1 0x20 SWAP2 SWAP4 POP DUP1 PUSH1 0x1 SWAP2 SLOAD DUP4 DUP6 DUP9 ADD ADD MSTORE ADD SWAP2 ADD SWAP1 SWAP2 DUP4 SWAP3 PUSH2 0x5C1 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 SWAP3 POP PUSH2 0x5AC SWAP5 SWAP2 POP PUSH1 0xFF NOT AND DUP3 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD CODESIZE PUSH2 0x59F JUMP JUMPDEST PUSH2 0x63E PUSH1 0xFF SWAP2 PUSH1 0x40 MLOAD SWAP1 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x20 DUP2 MSTORE PUSH2 0x29A PUSH1 0x40 DUP3 PUSH2 0x35D JUMP JUMPDEST SLOAD AND SWAP1 JUMP JUMPDEST PUSH2 0x64C CALLER PUSH2 0x618 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x669 JUMPI JUMPDEST PUSH2 0x667 JUMPI PUSH3 0x82B429 PUSH1 0xE8 SHL PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST JUMP JUMPDEST POP ADDRESS CALLER EQ PUSH2 0x653 JUMP JUMPDEST DUP2 DUP2 LT PUSH2 0x67D JUMPI POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x672 JUMP JUMPDEST PUSH1 0xFF PUSH2 0x694 DUP3 PUSH2 0x478 JUMP JUMPDEST SLOAD AND PUSH2 0x83C JUMPI PUSH2 0x6A3 DUP2 PUSH2 0x478 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xFF NOT DUP3 SLOAD AND OR SWAP1 SSTORE DUP2 PUSH1 0x0 MSTORE PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F502 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x37F JUMPI PUSH2 0x6F6 DUP3 SLOAD PUSH2 0x50E JUMP JUMPDEST PUSH1 0x1F DUP2 GT PUSH2 0x7FF JUMPI JUMPDEST POP PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 EQ PUSH2 0x775 JUMPI SWAP2 DUP2 PUSH32 0x38109EDC26E166B5579352CE56A50813177EB25208FD90D61F2F378386220220 SWAP5 SWAP3 PUSH2 0x765 SWAP5 PUSH1 0x0 SWAP2 PUSH2 0x76A JUMPI JUMPDEST POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH1 0x0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x453 JUMP JUMPDEST SUB SWAP1 LOG2 JUMP JUMPDEST SWAP1 POP DUP4 ADD MLOAD CODESIZE PUSH2 0x73E JUMP JUMPDEST PUSH1 0x1F NOT DUP3 AND SWAP1 DUP4 PUSH1 0x0 MSTORE DUP1 PUSH1 0x0 KECCAK256 SWAP2 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT PUSH2 0x7E7 JUMPI POP SWAP3 PUSH2 0x765 SWAP5 SWAP3 PUSH1 0x1 SWAP3 DUP3 PUSH32 0x38109EDC26E166B5579352CE56A50813177EB25208FD90D61F2F378386220220 SWAP9 SWAP7 LT PUSH2 0x7CE JUMPI JUMPDEST POP POP DUP2 SHL ADD SWAP1 SSTORE PUSH2 0x169 JUMP JUMPDEST DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE CODESIZE DUP1 PUSH2 0x7C2 JUMP JUMPDEST SWAP2 SWAP3 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP7 DUP11 ADD MLOAD DUP2 SSTORE ADD SWAP5 ADD SWAP3 ADD PUSH2 0x787 JUMP JUMPDEST PUSH2 0x82C SWAP1 DUP4 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD SWAP2 PUSH1 0x20 DUP6 LT PUSH2 0x832 JUMPI JUMPDEST PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP1 PUSH2 0x672 JUMP JUMPDEST CODESIZE PUSH2 0x6FF JUMP JUMPDEST SWAP1 SWAP2 POP DUP2 SWAP1 PUSH2 0x81F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x468B12AD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE SWAP1 DUP2 SWAP1 PUSH2 0x861 SWAP1 PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x453 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST SWAP1 DUP1 PUSH1 0x20 SWAP4 SWAP3 DUP2 DUP5 MSTORE DUP5 DUP5 ADD CALLDATACOPY PUSH1 0x0 DUP3 DUP3 ADD DUP5 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND ADD ADD SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x890 DUP4 PUSH2 0x548 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0xA19 JUMPI DUP1 MLOAD PUSH1 0x20 DUP3 ADD KECCAK256 PUSH2 0x8A9 CALLDATASIZE DUP5 DUP7 PUSH2 0x395 JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD KECCAK256 SUB PUSH2 0x9D8 JUMPI POP SWAP1 PUSH32 0xCF95BBFE6F870F8CC40482DC3DCCDAFD268F0E9CE0A4F24EA1BEA9BE64E505FF SWAP2 PUSH1 0x40 MLOAD DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x20 DUP2 DUP4 DUP2 ADD PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F503 DUP2 MSTORE SUB ADD SWAP1 KECCAK256 PUSH1 0xFF NOT DUP2 SLOAD AND SWAP1 SSTORE DUP4 PUSH1 0x0 MSTORE PUSH32 0x627F72AF0E6F412195B0D8ACBE438B28090DD545B7D2331FCCF77723561F502 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH2 0x94C DUP2 SLOAD PUSH2 0x50E JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x994 JUMPI JUMPDEST POP POP PUSH2 0x96D PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA4F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH2 0x4FF JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA4F DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE PUSH2 0x765 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP3 PUSH1 0x20 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP2 PUSH2 0x865 JUMP JUMPDEST DUP2 PUSH1 0x1F PUSH1 0x0 SWAP4 GT PUSH1 0x1 EQ PUSH2 0x9AC JUMPI POP SSTORE JUMPDEST CODESIZE DUP1 PUSH2 0x953 JUMP JUMPDEST DUP2 DUP4 MSTORE PUSH1 0x20 DUP4 KECCAK256 PUSH2 0x9C8 SWAP2 PUSH1 0x1F ADD PUSH1 0x5 SHR DUP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x672 JUMP JUMPDEST DUP1 DUP3 MSTORE DUP2 PUSH1 0x20 DUP2 KECCAK256 SWAP2 SSTORE SSTORE PUSH2 0x9A5 JUMP JUMPDEST PUSH2 0xA07 PUSH2 0x861 SWAP3 SWAP5 SWAP4 PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP6 PUSH4 0x781F2E39 PUSH1 0xE0 SHL DUP8 MSTORE PUSH1 0x4 DUP8 ADD MSTORE PUSH1 0x60 PUSH1 0x24 DUP8 ADD MSTORE PUSH1 0x64 DUP7 ADD SWAP2 PUSH2 0x865 JUMP JUMPDEST DUP4 DUP2 SUB PUSH1 0x3 NOT ADD PUSH1 0x44 DUP6 ADD MSTORE SWAP1 PUSH2 0x453 JUMP JUMPDEST DUP4 PUSH4 0x340C473D PUSH1 0xE1 SHL PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID MOD 0x27 0xF7 0x2A CREATE 0xE6 DELEGATECALL SLT NOT JUMPDEST 0xD DUP11 0xCB 0xE4 CODESIZE 0xB2 DUP1 SWAP1 0xDD SLOAD JUMPDEST PUSH30 0x2331FCCF77723561F5000627F72AF0E6F412195B0D8ACBE438B28090DD54 JUMPDEST PUSH30 0x2331FCCF77723561F501A264697066735822122008BF9E3C9DE7BA065461 CALLDATASIZE 0xE6 SWAP13 0xEE INVALID LOG4 0xE4 DUP16 DUP1 TLOAD STATICCALL LT PUSH16 0x7803C7FDF5277353A464736F6C634300 ADDMOD SHR STOP CALLER ", + "sourceMap": "1427:10263:18:-:0;;;;;;;;;;;;;;;;;;;;;;;;6785:16;;1427:10263;6785:16;;;1427:10263;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1427:10263:18;;;;;-1:-1:-1;;;;;;;;;;;1427:10263:18;;;;;;;;;;;;;;;;;;:::i;:::-;4008:70;;;:::i;:::-;5864:12;;:::i;:::-;5890:19;5908:1;5890:19;;5886:86;;6009:5;;;;:::i;:::-;1427:10263;5886:86;5932:29;;;;1427:10263;5932:29;1427:10263;;;;5932:29;1427:10263;;;;;;-1:-1:-1;;1427:10263:18;;;;;;-1:-1:-1;;;;;1427:10263:18;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;1427:10263:18;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;4008:70;;;:::i;:::-;5200:1;5184:12;;:::i;:::-;:17;5180:66;;5283:5;;;:::i;5180:66::-;5224:11;;;1427:10263;5224:11;1427:10263;;5224:11;1427:10263;;;;;;-1:-1:-1;;1427:10263:18;;;;;-1:-1:-1;;;;;;;;;;;1427:10263:18;;;;;;;;;;;4630:42;1427:10263;;;:::i;:::-;4008:70;;:::i;:::-;1427:10263;;4612:16;;;;1427:10263;;;;;;4612:16;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1427:10263:18;4630:42;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1427:10263:18;4630:42;:::i;1427:10263::-;;;;;;-1:-1:-1;;1427:10263:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;;1427:10263:18;;;;;;-1:-1:-1;;;;;1427:10263:18;;;;;;;;4296:42;4008:70;;;:::i;:::-;1427:10263;;4277:17;1427:10263;4277:17;;1427:10263;;4277:17;;;1427:10263;4277:17;;:::i;1427:10263::-;;;;;;-1:-1:-1;;1427:10263:18;;;;;;;:::i;:::-;;;;;;;;;;;;;6785:16;1427:10263;;;;:::i;:::-;6785:16;;;;1427:10263;;;;;;6785:16;;;;;;:::i;1427:10263::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;1427:10263:18;;;;;-1:-1:-1;1427:10263:18;;;;;;;;;;;;;;;;;-1:-1:-1;;1427:10263:18;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;1427:10263:18;;;;;;:::o;:::-;;-1:-1:-1;;1427:10263:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;1427:10263:18;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;1427:10263:18;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;6751:33;1427:10263;;;;;;;:::o;7950:190::-;-1:-1:-1;;;;;;;;;;;1427:10263:18;-1:-1:-1;;;;;;;;;;;1427:10263:18;;;;;;;;7950:190;:::o;1427:10263::-;;;;-1:-1:-1;1427:10263:18;;;;;-1:-1:-1;1427:10263:18;;-1:-1:-1;;1427:10263:18;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;7406:149;-1:-1:-1;1427:10263:18;7503:38;1427:10263;;;-1:-1:-1;1427:10263:18;;;;;-1:-1:-1;1427:10263:18;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7406:149;:::o;1427:10263::-;;;-1:-1:-1;1427:10263:18;;;;;-1:-1:-1;1427:10263:18;;-1:-1:-1;1427:10263:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6239:154;1427:10263;;6239:154;1427:10263;;;;;;;;;6366:19;;;1427:10263;6366:19;;;;1427:10263;6366:19;;:::i;1427:10263::-;;;6239:154;:::o;11120:189::-;11179:26;11194:10;11179:26;:::i;:::-;:59;;;;11120:189;11175:96;;11288:14;;;;;;;;11175:96;11254:7::o;11179:59::-;11232:4;;11194:10;11210:27;11179:59;;1427:10263;;;;;;;;:::o;:::-;;;;;;;;9704:324;1427:10263;;;;:::i;:::-;;;9792:51;;1427:10263;;;:::i;:::-;9940:4;1427:10263;;;;;;;;;-1:-1:-1;1427:10263:18;9954:14;1427:10263;;;-1:-1:-1;1427:10263:18;;;;;;;;;;;;:::i;:::-;;;;;;9704:324;1427:10263;;;;;;;;;;;9999:22;1427:10263;;;;-1:-1:-1;1427:10263:18;;;;;;9940:4;1427:10263;;;;;7148:33;1427:10263;;;;;;;;;;;;;;;;;;;;:::i;:::-;9999:22;;;9704:324::o;1427:10263::-;;;;;;;;;;;;;;;;-1:-1:-1;1427:10263:18;;-1:-1:-1;1427:10263:18;;-1:-1:-1;1427:10263:18;;;;;;;;;;;9940:4;1427:10263;;9999:22;1427:10263;;;;;;;;;;;;;;;;;;;;;;;7148:33;1427:10263;;;;;;;;;;;;;;;9940:4;1427:10263;;;;;;;;;;;;;;;;;;;-1:-1:-1;1427:10263:18;;-1:-1:-1;1427:10263:18;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;1427:10263:18;;;;9792:51;1427:10263;;-1:-1:-1;;;9824:19:18;;1427:10263;9824:19;;;1427:10263;;;;;;;;;;;:::i;:::-;9824:19;;;1427:10263;;;;;;;;;;;;;-1:-1:-1;1427:10263:18;;;;;;;;-1:-1:-1;;1427:10263:18;;;;:::o;10367:575::-;;10482:19;;;:::i;:::-;1427:10263;;10515:18;10511:52;;1427:10263;;;;;10577:17;1427:10263;;;;;:::i;:::-;;;;;;10598:16;10577:37;10573:151;;1427:10263;;10910:25;1427:10263;;;;;;;;;;;;10808:9;1427:10263;;;;;;;;;;;;;;10532:1;1427:10263;10841:14;1427:10263;;;10532:1;1427:10263;;;;;:::i;:::-;;;;;10367:575;1427:10263;;10872:22;-1:-1:-1;;;;;;;;;;;1427:10263:18;10872:22;:::i;:::-;-1:-1:-1;;;;;;;;;;;1427:10263:18;;;;;;;;;;;;;;;:::i;:::-;;;10532:1;1427:10263;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;10573:151;1427:10263;;;;;;;10637:76;;;;;;;;;;;1427:10263;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1427:10263:18;;;;;;;:::i;10511:52::-;10542:21;;;;10532:1;10542:21;;1427:10263;;10532:1;10542:21" + }, + "methodIdentifiers": { + "addOwnerAddress(address)": "0f0f3f24", + "addOwnerPublicKey(bytes32,bytes32)": "29565e3b", + "isOwnerAddress(address)": "a2e1a8d8", + "isOwnerBytes(bytes)": "1ca5393f", + "isOwnerPublicKey(bytes32,bytes32)": "066a1eb7", + "nextOwnerIndex()": "d948fd2e", + "ownerAtIndex(uint256)": "8ea69029", + "ownerCount()": "0db02622", + "removeLastOwner(uint256,bytes)": "b8197367", + "removeOwnerAtIndex(uint256,bytes)": "89625b57", + "removedOwnersCount()": "36d9cf9b" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"owner\",\"type\":\"bytes\"}],\"name\":\"AlreadyOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"owner\",\"type\":\"bytes\"}],\"name\":\"InvalidEthereumAddressOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"owner\",\"type\":\"bytes\"}],\"name\":\"InvalidOwnerBytesLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LastOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"NoOwnerAtIndex\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ownersRemaining\",\"type\":\"uint256\"}],\"name\":\"NotLastOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"expectedOwner\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"actualOwner\",\"type\":\"bytes\"}],\"name\":\"WrongOwnerAtIndex\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"owner\",\"type\":\"bytes\"}],\"name\":\"AddOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"owner\",\"type\":\"bytes\"}],\"name\":\"RemoveOwner\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"addOwnerAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"name\":\"addOwnerPublicKey\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isOwnerAddress\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"account\",\"type\":\"bytes\"}],\"name\":\"isOwnerBytes\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"name\":\"isOwnerPublicKey\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextOwnerIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"ownerAtIndex\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ownerCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"owner\",\"type\":\"bytes\"}],\"name\":\"removeLastOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"owner\",\"type\":\"bytes\"}],\"name\":\"removeOwnerAtIndex\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"removedOwnersCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Applied Blockchain (https://github.com/appliedblockchain/giano)Coinbase (https://github.com/coinbase/smart-wallet)\",\"errors\":{\"AlreadyOwner(bytes)\":[{\"params\":{\"owner\":\"The owner bytes.\"}}],\"InvalidEthereumAddressOwner(bytes)\":[{\"params\":{\"owner\":\"The invalid owner.\"}}],\"InvalidOwnerBytesLength(bytes)\":[{\"params\":{\"owner\":\"The invalid owner.\"}}],\"NoOwnerAtIndex(uint256)\":[{\"params\":{\"index\":\"The targeted index for removal.\"}}],\"NotLastOwner(uint256)\":[{\"params\":{\"ownersRemaining\":\"The number of current owners.\"}}],\"WrongOwnerAtIndex(uint256,bytes,bytes)\":[{\"params\":{\"actualOwner\":\"The actual owner at `index`.\",\"expectedOwner\":\"The owner passed in the remove call.\",\"index\":\"The index of the owner to be removed.\"}}]},\"events\":{\"AddOwner(uint256,bytes)\":{\"params\":{\"index\":\"The owner index of the owner added.\",\"owner\":\"The owner added.\"}},\"RemoveOwner(uint256,bytes)\":{\"params\":{\"index\":\"The owner index of the owner removed.\",\"owner\":\"The owner removed.\"}}},\"kind\":\"dev\",\"methods\":{\"addOwnerAddress(address)\":{\"params\":{\"owner\":\"The owner address.\"}},\"addOwnerPublicKey(bytes32,bytes32)\":{\"params\":{\"x\":\"The owner public key x coordinate.\",\"y\":\"The owner public key y coordinate.\"}},\"isOwnerAddress(address)\":{\"params\":{\"account\":\"The account address to check.\"},\"returns\":{\"_0\":\"`true` if the account is an owner else `false`.\"}},\"isOwnerBytes(bytes)\":{\"params\":{\"account\":\"The account, should be ABI encoded address or public key.\"},\"returns\":{\"_0\":\"`true` if the account is an owner else `false`.\"}},\"isOwnerPublicKey(bytes32,bytes32)\":{\"params\":{\"x\":\"The public key x coordinate.\",\"y\":\"The public key y coordinate.\"},\"returns\":{\"_0\":\"`true` if the account is an owner else `false`.\"}},\"nextOwnerIndex()\":{\"returns\":{\"_0\":\"The next index that will be used to add a new owner.\"}},\"ownerAtIndex(uint256)\":{\"params\":{\"index\":\"The index to lookup.\"},\"returns\":{\"_0\":\"The owner bytes (empty if no owner is registered at this `index`).\"}},\"ownerCount()\":{\"returns\":{\"_0\":\"The current owner count\"}},\"removeLastOwner(uint256,bytes)\":{\"details\":\"Reverts if the owner is not registered at `index`.Reverts if there is currently more than one owner.Reverts if `owner` does not match bytes found at `index`.\",\"params\":{\"index\":\"The index of the owner to be removed.\",\"owner\":\"The ABI encoded bytes of the owner to be removed.\"}},\"removeOwnerAtIndex(uint256,bytes)\":{\"details\":\"Reverts if the owner is not registered at `index`.Reverts if there is currently only one owner.Reverts if `owner` does not match bytes found at `index`.\",\"params\":{\"index\":\"The index of the owner to be removed.\",\"owner\":\"The ABI encoded bytes of the owner to be removed.\"}},\"removedOwnersCount()\":{\"details\":\"Used with `this.nextOwnerIndex` to avoid removing all owners\",\"returns\":{\"_0\":\"The number of owners that have been removed.\"}}},\"stateVariables\":{\"MUTLI_OWNABLE_STORAGE_LOCATION\":{\"details\":\"Slot for the `MultiOwnableStorage` struct in storage. Computed from keccak256(abi.encode(uint256(keccak256(\\\"appliedblockchain.storage.MultiOwnable\\\")) - 1)) & ~bytes32(uint256(0xff)) Follows ERC-7201 (see https://eips.ethereum.org/EIPS/eip-7201).\"}},\"title\":\"Multi Ownable\",\"version\":1},\"userdoc\":{\"errors\":{\"AlreadyOwner(bytes)\":[{\"notice\":\"Thrown when trying to add an already registered owner.\"}],\"InvalidEthereumAddressOwner(bytes)\":[{\"notice\":\"Thrown if a provided owner is 32 bytes long but does not fit in an `address` type.\"}],\"InvalidOwnerBytesLength(bytes)\":[{\"notice\":\"Thrown when a provided owner is neither 64 bytes long (for public key) nor a ABI encoded address.\"}],\"LastOwner()\":[{\"notice\":\"Thrown when removeOwnerAtIndex is called and there is only one current owner.\"}],\"NoOwnerAtIndex(uint256)\":[{\"notice\":\"Thrown when trying to remove an owner from an index that is empty.\"}],\"NotLastOwner(uint256)\":[{\"notice\":\"Thrown when removeLastOwner is called and there is more than one current owner.\"}],\"Unauthorized()\":[{\"notice\":\"Thrown when the `msg.sender` is not an owner and is trying to call a privileged function.\"}],\"WrongOwnerAtIndex(uint256,bytes,bytes)\":[{\"notice\":\"Thrown when `owner` argument does not match owner found at index.\"}]},\"events\":{\"AddOwner(uint256,bytes)\":{\"notice\":\"Emitted when a new owner is registered.\"},\"RemoveOwner(uint256,bytes)\":{\"notice\":\"Emitted when an owner is removed.\"}},\"kind\":\"user\",\"methods\":{\"addOwnerAddress(address)\":{\"notice\":\"Adds a new Ethereum-address owner.\"},\"addOwnerPublicKey(bytes32,bytes32)\":{\"notice\":\"Adds a new public-key owner.\"},\"isOwnerAddress(address)\":{\"notice\":\"Checks if the given `account` address is registered as owner.\"},\"isOwnerBytes(bytes)\":{\"notice\":\"Checks if the given `account` bytes is registered as owner.\"},\"isOwnerPublicKey(bytes32,bytes32)\":{\"notice\":\"Checks if the given `x`, `y` public key is registered as owner.\"},\"nextOwnerIndex()\":{\"notice\":\"Returns the next index that will be used to add a new owner.\"},\"ownerAtIndex(uint256)\":{\"notice\":\"Returns the owner bytes at the given `index`.\"},\"ownerCount()\":{\"notice\":\"Returns the current number of owners\"},\"removeLastOwner(uint256,bytes)\":{\"notice\":\"Removes owner at the given `index`, which should be the only current owner.\"},\"removeOwnerAtIndex(uint256,bytes)\":{\"notice\":\"Removes owner at the given `index`.\"},\"removedOwnersCount()\":{\"notice\":\"Tracks the number of owners removed\"}},\"notice\":\"Auth contract allowing multiple owners, each identified as bytes.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MultiOwnable.sol\":\"MultiOwnable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"src/MultiOwnable.sol\":{\"keccak256\":\"0x46a9fa25c7de87b56df47b67d61b6efd96ed3f382c5d440d04de55fa23bccadd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75ac03bdfdddec29b0b1f4f9c33add4b5b9d5400b1a54691a544a59ac710de5c\",\"dweb:/ipfs/QmXajkF7z8rqmDE89H4uVaKCDyQsdwphif8BHZLLu9MQ5k\"]}},\"version\":1}" + } + }, + "src/utils/ERC1271InputGenerator.sol": { + "ERC1271InputGenerator": { + "abi": [ + { + "inputs": [ + { + "internalType": "contract GianoSmartWallet", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "accountFactory", + "type": "address" + }, + { + "internalType": "bytes", + "name": "factoryCalldata", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "AccountDeploymentFailed", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "returned", + "type": "address" + } + ], + "name": "ReturnedAddressDoesNotMatchAccount", + "type": "error" + } + ], + "evm": { + "bytecode": { + "functionDebugData": { + "abi_decode_address_payable_fromMemory": { + "entryPoint": 432, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_bytes32_fromMemory": { + "entryPoint": 357, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_address_address": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_bytes32": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "array_allocation_size_bytes": { + "entryPoint": 309, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "constructor_ERC1271InputGenerator": { + "entryPoint": 336, + "id": 8140, + "parameterSlots": 4, + "returnSlots": 0 + }, + "convert_contract_GianoSmartWallet_to_address": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "extract_returndata": { + "entryPoint": 384, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + }, + "finalize_allocation": { + "entryPoint": 257, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "finalize_allocation_991": { + "entryPoint": 214, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "fun_gianoSmartWallet1271Input": { + "entryPoint": 456, + "id": 8218, + "parameterSlots": 4, + "returnSlots": 1 + }, + "panic_error_0x41": { + "entryPoint": 192, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_forward": { + "entryPoint": 372, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "validator_revert_contract_GianoSmartWallet": { + "entryPoint": 292, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + } + }, + "generatedSources": [], + "linkReferences": {}, + "object": "6080604052346100bb576102ee803803809161001a826100d6565b608039608081810191126100bb5760805161003481610124565b60a05160c0519161004483610124565b60e0516001600160401b0381116100bb5784609f820112156100bb5780608001519061006f82610135565b9561007d6040519788610101565b82875260a083830101116100bb5760005b8281106100a5575050602060009186010152610150565b8060a06020928401015182828a0101520161008e565b600080fd5b634e487b7160e01b600052604160045260246000fd5b6080601f91909101601f19168101906001600160401b038211908210176100fc57604052565b6100c0565b601f909101601f19168101906001600160401b038211908210176100fc57604052565b6001600160a01b038116036100bb57565b6001600160401b0381116100fc57601f01601f191660200190565b9061015c9392916101c8565b60805260206080f35b908160209103126100bb575190565b6040513d6000823e3d90fd5b3d156101ab573d9061019182610135565b9161019f6040519384610101565b82523d6000602084013e565b606090565b908160209103126100bb57516101c581610124565b90565b90926001600160a01b0390911691823b6102c65781600092918360208194519301915af16101f4610180565b90156102b6576102108160208061021c945183010191016101b0565b6001600160a01b031690565b6001600160a01b038116829003610293575060405163670a835f60e11b8152600481019290925260209082908180602481015b03915afa90811561028e57600091610265575090565b6101c5915060203d602011610287575b61027f8183610101565b810190610165565b503d610275565b610174565b63c862438360e01b6000526001600160a01b039182166004521660245260446000fd5b6294555560e51b60005260046000fd5b505060405163670a835f60e11b81526004810192909252602090829081806024810161024f56fe", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE PUSH2 0xBB JUMPI PUSH2 0x2EE DUP1 CODESIZE SUB DUP1 SWAP2 PUSH2 0x1A DUP3 PUSH2 0xD6 JUMP JUMPDEST PUSH1 0x80 CODECOPY PUSH1 0x80 DUP2 DUP2 ADD SWAP2 SLT PUSH2 0xBB JUMPI PUSH1 0x80 MLOAD PUSH2 0x34 DUP2 PUSH2 0x124 JUMP JUMPDEST PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD SWAP2 PUSH2 0x44 DUP4 PUSH2 0x124 JUMP JUMPDEST PUSH1 0xE0 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0xBB JUMPI DUP5 PUSH1 0x9F DUP3 ADD SLT ISZERO PUSH2 0xBB JUMPI DUP1 PUSH1 0x80 ADD MLOAD SWAP1 PUSH2 0x6F DUP3 PUSH2 0x135 JUMP JUMPDEST SWAP6 PUSH2 0x7D PUSH1 0x40 MLOAD SWAP8 DUP9 PUSH2 0x101 JUMP JUMPDEST DUP3 DUP8 MSTORE PUSH1 0xA0 DUP4 DUP4 ADD ADD GT PUSH2 0xBB JUMPI PUSH1 0x0 JUMPDEST DUP3 DUP2 LT PUSH2 0xA5 JUMPI POP POP PUSH1 0x20 PUSH1 0x0 SWAP2 DUP7 ADD ADD MSTORE PUSH2 0x150 JUMP JUMPDEST DUP1 PUSH1 0xA0 PUSH1 0x20 SWAP3 DUP5 ADD ADD MLOAD DUP3 DUP3 DUP11 ADD ADD MSTORE ADD PUSH2 0x8E JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x80 PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND DUP2 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT SWAP1 DUP3 LT OR PUSH2 0xFC JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0xC0 JUMP JUMPDEST PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND DUP2 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT SWAP1 DUP3 LT OR PUSH2 0xFC JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SUB PUSH2 0xBB JUMPI JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0xFC JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x15C SWAP4 SWAP3 SWAP2 PUSH2 0x1C8 JUMP JUMPDEST PUSH1 0x80 MSTORE PUSH1 0x20 PUSH1 0x80 RETURN JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0xBB JUMPI MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x1AB JUMPI RETURNDATASIZE SWAP1 PUSH2 0x191 DUP3 PUSH2 0x135 JUMP JUMPDEST SWAP2 PUSH2 0x19F PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x101 JUMP JUMPDEST DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0xBB JUMPI MLOAD PUSH2 0x1C5 DUP2 PUSH2 0x124 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 DUP3 EXTCODESIZE PUSH2 0x2C6 JUMPI DUP2 PUSH1 0x0 SWAP3 SWAP2 DUP4 PUSH1 0x20 DUP2 SWAP5 MLOAD SWAP4 ADD SWAP2 GAS CALL PUSH2 0x1F4 PUSH2 0x180 JUMP JUMPDEST SWAP1 ISZERO PUSH2 0x2B6 JUMPI PUSH2 0x210 DUP2 PUSH1 0x20 DUP1 PUSH2 0x21C SWAP5 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x1B0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP3 SWAP1 SUB PUSH2 0x293 JUMPI POP PUSH1 0x40 MLOAD PUSH4 0x670A835F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x20 SWAP1 DUP3 SWAP1 DUP2 DUP1 PUSH1 0x24 DUP2 ADD JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x28E JUMPI PUSH1 0x0 SWAP2 PUSH2 0x265 JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x1C5 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x287 JUMPI JUMPDEST PUSH2 0x27F DUP2 DUP4 PUSH2 0x101 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x165 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x275 JUMP JUMPDEST PUSH2 0x174 JUMP JUMPDEST PUSH4 0xC8624383 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 MSTORE AND PUSH1 0x24 MSTORE PUSH1 0x44 PUSH1 0x0 REVERT JUMPDEST PUSH3 0x945555 PUSH1 0xE5 SHL PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH4 0x670A835F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x20 SWAP1 DUP3 SWAP1 DUP2 DUP1 PUSH1 0x24 DUP2 ADD PUSH2 0x24F JUMP INVALID ", + "sourceMap": "832:3656:19:-:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;832:3656:19;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;832:3656:19;;;;;;;;;-1:-1:-1;832:3656:19;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;832:3656:19;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;832:3656:19;;;;-1:-1:-1;;;;;832:3656:19;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;-1:-1:-1;;832:3656:19;;;;-1:-1:-1;;;;;832:3656:19;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;832:3656:19;;;;;:::o;:::-;-1:-1:-1;;;;;832:3656:19;;;;;;-1:-1:-1;;832:3656:19;;;;:::o;2056:738::-;;2535:74;2056:738;;;2535:74;:::i;:::-;2619:169;;;;;832:3656;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;832:3656:19;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;:::o;3574:912::-;;;-1:-1:-1;;;;;832:3656:19;;;;3862:28;;3858:98;;4035:36;832:3656;4035:36;;;;;;;;;;;;;;:::i;:::-;4085:8;;4081:71;;4186:29;832:3656;4035:36;832:3656;4162:53;832:3656;;4186:29;;;;;;:::i;:::-;-1:-1:-1;;;;;832:3656:19;;;4162:53;-1:-1:-1;;;;;832:3656:19;;4229:33;;;4225:138;;-1:-1:-1;832:3656:19;;-1:-1:-1;;;4451:28:19;;;;;832:3656;;;;4035:36;;832:3656;;;;;;;4451:28;;;;;;;;;;832:3656;4451:28;;;4444:35;3574:912;:::o;4451:28::-;;;;4035:36;4451:28;4035:36;4451:28;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;4225:138::-;-1:-1:-1;;;832:3656:19;4285:67;-1:-1:-1;;;;;832:3656:19;;;4285:67;832:3656;;;;;;4285:67;4081:71;4116:25;;;832:3656;4116:25;;832:3656;4116:25;3858:98;-1:-1:-1;;832:3656:19;;-1:-1:-1;;;3917:28:19;;;;;832:3656;;;;3917:28;;832:3656;;;;;;;3917:28;832:3656" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "600080fdfea264697066735822122075b85d684d26100df94357202e9674d7360d22dd0f45f66c918a469fd3c920c764736f6c634300081c0033", + "opcodes": "PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH22 0xB85D684D26100DF94357202E9674D7360D22DD0F45F6 PUSH13 0x918A469FD3C920C764736F6C63 NUMBER STOP ADDMOD SHR STOP CALLER ", + "sourceMap": "832:3656:19:-:0;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract GianoSmartWallet\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"accountFactory\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"factoryCalldata\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccountDeploymentFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"returned\",\"type\":\"address\"}],\"name\":\"ReturnedAddressDoesNotMatchAccount\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"Applied Blockchain (https://github.com/appliedblockchain/giano)Coinbase (https://github.com/coinbase/smart-wallet)\",\"details\":\"This contract is not meant to ever actually be deployed, only mock deployed and used via a static eth_call.\",\"errors\":{\"ReturnedAddressDoesNotMatchAccount(address,address)\":[{\"params\":{\"account\":\"The passed account\",\"returned\":\"The returned account\"}}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"`accountFactory` can be any address if the account is already deployed.`factoryCalldata` can be 0x if the account is already deployed.If calling with solidity, the `replaySafeHash` will be `.code`.\",\"params\":{\"account\":\"The account that will receive the ERC-1271 `isValidSignature` call.\",\"accountFactory\":\"The factory that will be used to deploy the account (if not already deployed).\",\"factoryCalldata\":\"The calldata that will be used to deploy the account (if not already deployed).\",\"hash\":\"The hash the wallet was asked to sign.\"}}},\"title\":\"ERC1271 Input Generator\",\"version\":1},\"userdoc\":{\"errors\":{\"AccountDeploymentFailed()\":[{\"notice\":\"Thrown when call to `accountFactory` with `factoryCalldata` fails.\"}],\"ReturnedAddressDoesNotMatchAccount(address,address)\":[{\"notice\":\"Thrown when the address returned from call to `accountFactory` does not match passed account\"}]},\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Computes and returns the expected ERC-1271 replay-safe hash for a GianoSmartWallet.\"}},\"notice\":\"Helper contract for generating an ERC-1271 input hash to sign for deployed and undeployed GianoSmartWallet. May be useful for generating ERC-6492 compliant signatures. Inspired by Ambire's DeploylessUniversalSigValidator https://github.com/AmbireTech/signature-validator/blob/d5f84f5fc00bfdf79b80205b983a8258b6d1b3ea/contracts/DeploylessUniversalSigValidator.sol.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/utils/ERC1271InputGenerator.sol\":\"ERC1271InputGenerator\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@account-abstraction/contracts/core/Helpers.sol\":{\"keccak256\":\"0x6247e011a6cb0b263b3aa098822977181674d91b62e5bdfe04c6e66f72da25d6\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ca829a69b3fbc74fec8e140d42a2bf93bc3512609272f031c846470f61f0ab7e\",\"dweb:/ipfs/QmP3r3MBgAN39KeVB1rCGJWwcBcotNt26ALtAR54poQ1Jc\"]},\"@account-abstraction/contracts/core/UserOperationLib.sol\":{\"keccak256\":\"0x9d50ece985d35f82e33e5da417595c86fac10449e3d10895d08363d33aad454b\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b1d11cc364c8bf7ed5388268c895b5ffed16e87dfbcb320ddeeba5e7974315dc\",\"dweb:/ipfs/QmYSpvjxEjweietQrYZagwQ52ipy7eXx4rwvnTzXKeGeMS\"]},\"@account-abstraction/contracts/interfaces/IAccount.sol\":{\"keccak256\":\"0x38710bec0cb20ff4ceef46a80475b5bdabc27b7efd2687fd473db68332f61b78\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://dea7a723e1ef852e8764e69914a345d2e8bc5e13facfc9d5c29d791cb4ab0020\",\"dweb:/ipfs/QmU8dYgyF4DBJXFqjwLAtnE3q8q259ChfoEk9a6wyhHzEP\"]},\"@account-abstraction/contracts/interfaces/PackedUserOperation.sol\":{\"keccak256\":\"0x1129b46381db68eddbc5cb49e50664667b66b03c480453858e7b25eabe444359\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://499a948aba60480dba6e25c763b8d918f1c246eb7a3302e04f493e080f3295be\",\"dweb:/ipfs/QmeRhhswf4NACcBKam2PyjpTP2ddSm648kah5kkQJsvwz3\"]},\"FreshCryptoLib/FCL_ecdsa.sol\":{\"keccak256\":\"0x679d2e9a655cd7e156a0cfc24de0aca88d4e0b34a8e0dfe6a599f23af092f5a2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db31eb84c6f854f076d2501e3d8b5a606fb4924168bdfc6fc3de84e67ed8a80d\",\"dweb:/ipfs/QmWGAmc7B4aT6Ki52uF9QmPQKWipaptit7r3JknBHjUGfe\"]},\"FreshCryptoLib/FCL_elliptic.sol\":{\"keccak256\":\"0xac7bb3260a446851f45b8cb71e31d64ca469d7711ed04662092a9554f1283a38\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f9b0dc5a2306ad3f3a0ff4a5b947fe49422181e97c163ea237fc8bfc6736429d\",\"dweb:/ipfs/QmeruF7BvG5BNnqwqwdshoVXuXqXtajbUYB19KwPynHrQE\"]},\"openzeppelin-contracts/contracts/utils/Base64.sol\":{\"keccak256\":\"0xbee2b819e1b4bf569ffc1b1b9d560b4abd6a589575f3093edaab9244de18a0c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e478c0e9bbf3eb8cd3b7784f9b397603e34747f9ffd16571ed1d89ce102de389\",\"dweb:/ipfs/QmZ6zXpwy5xRxx9RkodJmDZSUTeEqPQUanAC5TUoYqW2VR\"]},\"solady/accounts/Receiver.sol\":{\"keccak256\":\"0xc879aa81dd5639f5fd97b31acd91658ffe33ae4b72b70ed7bd701c37addce43b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2e03a8d37d48644857d94f7432c1e2272bfd19649dfe80aba8f979f157f71f00\",\"dweb:/ipfs/QmWWS34bNWhiZgLXS9gtD8N2dxreRsVXxhvQRKqd4wKUuU\"]},\"solady/utils/CallContextChecker.sol\":{\"keccak256\":\"0xc54c743a03f4909826712e9c6b683ca95e8b0c120c55284a9e3572621ebd734b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3d3138009aba3d2fd310636f3cc1d6029e970c57ddb74693bebf2a02d3e6f12d\",\"dweb:/ipfs/QmauMpcVDyQqVnAUF75DXy831LvtxyFS7GND7kge1Zgw55\"]},\"solady/utils/LibBytes.sol\":{\"keccak256\":\"0x320c3c933df51e8fd6f1fc96de721c8cc6f1be1d4c586c11f1c472a23b86eba5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cec71f42247eda74535c6e695a2ac194268a342594a26c090bafd04434698b20\",\"dweb:/ipfs/QmXA8Qaw6DdWujdrNHMHpDLNGG4QCgC859ozivrxkxp7Ea\"]},\"solady/utils/LibString.sol\":{\"keccak256\":\"0x8a6b219f6ccda90c08e2debae62618d78d6f0cef086eb6c9503793d7f12815dd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d1301acbf7371cb51ab01fe3bee8a9b732ee0bcf6cc0db20ed5a3fb9241d675e\",\"dweb:/ipfs/QmXuM4tSfPDeFRvP3nEQmuezp1yEm4HxyWtU41FjiCdxAG\"]},\"solady/utils/SignatureCheckerLib.sol\":{\"keccak256\":\"0x098c7eb88b3048f227b240e0e5bf1da4a8f7622b30f6d7c06416bfcab3225e77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://50c2766f652916c5d6433665fb1c3b2f04c3d9292a35c12e0f8d7c71dd6438cb\",\"dweb:/ipfs/QmWTMwN2RDZUUPg7KkH1qFBjTSh84Zw8bbYwRBCQUtLN2h\"]},\"solady/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x63899eaf1a24713464b8084ada33a83c4b7db789fe83ae22f016e39646bee361\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://617fa735ffa8ba31051745614a508abd69d2cfc1b1bc1eb3c772865db5f7ce65\",\"dweb:/ipfs/QmR1pQbHPyXcLbFm2vHrXBs1qRFrGC22gF7wWYamYy8aaE\"]},\"src/AuthenticatedStaticCaller.sol\":{\"keccak256\":\"0x06bb6bea86630eda0e5920c4fe4a5d51e89d18072faf7c4b5d7ae8ca82b87b94\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2920f02558ea8bbe8ca21cbe1bcbbea7d3c4d7f0d3e812cde706f95c53b399aa\",\"dweb:/ipfs/QmaNpbMazUf1n6hpXSMq7RDJix7ipPiALKE93fMmBtbS4A\"]},\"src/ERC1271.sol\":{\"keccak256\":\"0x75c3fe08b6e1789dab7714196704f425d1afea21d725fcb6c418a70ef5bf6fad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd292bcf9b1891abb517323636493499dbdd00bebc1f759c07fb26e103a1b71d\",\"dweb:/ipfs/QmWMT3C54pakfUCTkcPzFQAvE8nRnPqDDpFaDhY5A9fpEp\"]},\"src/GianoSmartWallet.sol\":{\"keccak256\":\"0x10f35f381fe7d934aa2f83dde5f50a69efbe49600679cb8cd7777fb07931e4e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a93eeba861ccaf70dfe6d9ed594f5ae55d37ee9feab8e4867c95657b36ae1b51\",\"dweb:/ipfs/QmTPuS5LuaW2Fx3QAXoUD4gSErZ8CoRQKFk8Nsy3vMe2PV\"]},\"src/MultiOwnable.sol\":{\"keccak256\":\"0x46a9fa25c7de87b56df47b67d61b6efd96ed3f382c5d440d04de55fa23bccadd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75ac03bdfdddec29b0b1f4f9c33add4b5b9d5400b1a54691a544a59ac710de5c\",\"dweb:/ipfs/QmXajkF7z8rqmDE89H4uVaKCDyQsdwphif8BHZLLu9MQ5k\"]},\"src/utils/ERC1271InputGenerator.sol\":{\"keccak256\":\"0xeedc1d0ae56555659e3c4242955fdb0ee3b4ab24495bcd58ed5fdf2711fcf62e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://83fad6dad1f69c6dcddacfd647bd6c329995a36614ab076d4a7d45b7a863e1ef\",\"dweb:/ipfs/QmanbjcevRe7YYv4hdofu59vuudwVLJaCXofjHY7wXiDPT\"]},\"webauthn-sol/WebAuthn.sol\":{\"keccak256\":\"0x8b940975249f72155110e5e5b4611fc9031330538183862b9d8f12ea7c30ad25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://433957720c13a834b9aab98a5054e9dabe5c660a1a3fb267e6ad1a22b99b68ed\",\"dweb:/ipfs/QmTkQxCCf8kDAHa6rBwLT2mxFXN3tSAWyx4rLmgcLkFkRh\"]}},\"version\":1}" + } + }, + "webauthn-sol/WebAuthn.sol": { + "WebAuthn": { + "abi": [], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea264697066735822122005e34eb23fb9c6a050d1789ffaa8d1e291a45b310524f395a5b9cd0ff332741b64736f6c634300081c0033", + "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x3A SWAP1 DUP2 PUSH1 0x1D DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SDIV 0xE3 0x4E 0xB2 EXTCODEHASH 0xB9 0xC6 LOG0 POP 0xD1 PUSH25 0x9FFAA8D1E291A45B310524F395A5B9CD0FF332741B64736F6C PUSH4 0x4300081C STOP CALLER ", + "sourceMap": "761:8886:20:-:0;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "600080fdfea264697066735822122005e34eb23fb9c6a050d1789ffaa8d1e291a45b310524f395a5b9cd0ff332741b64736f6c634300081c0033", + "opcodes": "PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SDIV 0xE3 0x4E 0xB2 EXTCODEHASH 0xB9 0xC6 LOG0 POP 0xD1 PUSH25 0x9FFAA8D1E291A45B310524F395A5B9CD0FF332741B64736F6C PUSH4 0x4300081C STOP CALLER ", + "sourceMap": "761:8886:20:-:0;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Coinbase (https://github.com/base-org/webauthn-sol)Daimo (https://github.com/daimo-eth/p256-verifier/blob/master/src/WebAuthn.sol)\",\"details\":\"Attempts to use the RIP-7212 precompile for signature verification. If precompile verification fails, it falls back to FreshCryptoLib.\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"_AUTH_DATA_FLAGS_UP\":{\"details\":\"Bit 0 of the authenticator data struct, corresponding to the \\\"User Present\\\" bit. See https://www.w3.org/TR/webauthn-2/#flags.\"},\"_AUTH_DATA_FLAGS_UV\":{\"details\":\"Bit 2 of the authenticator data struct, corresponding to the \\\"User Verified\\\" bit. See https://www.w3.org/TR/webauthn-2/#flags.\"},\"_EXPECTED_TYPE_HASH\":{\"details\":\"The expected type (hash) in the client data JSON when verifying assertion signatures. See https://www.w3.org/TR/webauthn-2/#dom-collectedclientdata-type\"},\"_P256_N_DIV_2\":{\"details\":\"Secp256r1 curve order / 2 used as guard to prevent signature malleability issue.\"},\"_VERIFIER\":{\"details\":\"The precompiled contract address to use for signature verification in the \\u201csecp256r1\\u201d elliptic curve. See https://github.com/ethereum/RIPs/blob/master/RIPS/rip-7212.md.\"}},\"title\":\"WebAuthn\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"A library for verifying WebAuthn Authentication Assertions, built off the work of Daimo.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"webauthn-sol/WebAuthn.sol\":\"WebAuthn\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"FreshCryptoLib/FCL_ecdsa.sol\":{\"keccak256\":\"0x679d2e9a655cd7e156a0cfc24de0aca88d4e0b34a8e0dfe6a599f23af092f5a2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db31eb84c6f854f076d2501e3d8b5a606fb4924168bdfc6fc3de84e67ed8a80d\",\"dweb:/ipfs/QmWGAmc7B4aT6Ki52uF9QmPQKWipaptit7r3JknBHjUGfe\"]},\"FreshCryptoLib/FCL_elliptic.sol\":{\"keccak256\":\"0xac7bb3260a446851f45b8cb71e31d64ca469d7711ed04662092a9554f1283a38\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f9b0dc5a2306ad3f3a0ff4a5b947fe49422181e97c163ea237fc8bfc6736429d\",\"dweb:/ipfs/QmeruF7BvG5BNnqwqwdshoVXuXqXtajbUYB19KwPynHrQE\"]},\"openzeppelin-contracts/contracts/utils/Base64.sol\":{\"keccak256\":\"0xbee2b819e1b4bf569ffc1b1b9d560b4abd6a589575f3093edaab9244de18a0c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e478c0e9bbf3eb8cd3b7784f9b397603e34747f9ffd16571ed1d89ce102de389\",\"dweb:/ipfs/QmZ6zXpwy5xRxx9RkodJmDZSUTeEqPQUanAC5TUoYqW2VR\"]},\"solady/utils/LibBytes.sol\":{\"keccak256\":\"0x320c3c933df51e8fd6f1fc96de721c8cc6f1be1d4c586c11f1c472a23b86eba5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cec71f42247eda74535c6e695a2ac194268a342594a26c090bafd04434698b20\",\"dweb:/ipfs/QmXA8Qaw6DdWujdrNHMHpDLNGG4QCgC859ozivrxkxp7Ea\"]},\"solady/utils/LibString.sol\":{\"keccak256\":\"0x8a6b219f6ccda90c08e2debae62618d78d6f0cef086eb6c9503793d7f12815dd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d1301acbf7371cb51ab01fe3bee8a9b732ee0bcf6cc0db20ed5a3fb9241d675e\",\"dweb:/ipfs/QmXuM4tSfPDeFRvP3nEQmuezp1yEm4HxyWtU41FjiCdxAG\"]},\"webauthn-sol/WebAuthn.sol\":{\"keccak256\":\"0x8b940975249f72155110e5e5b4611fc9031330538183862b9d8f12ea7c30ad25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://433957720c13a834b9aab98a5054e9dabe5c660a1a3fb267e6ad1a22b99b68ed\",\"dweb:/ipfs/QmTkQxCCf8kDAHa6rBwLT2mxFXN3tSAWyx4rLmgcLkFkRh\"]}},\"version\":1}" + } + } + } + } +} \ No newline at end of file diff --git a/packages/contracts/ignition/deployments/chain-84532/journal.jsonl b/packages/contracts/ignition/deployments/chain-84532/journal.jsonl index bf2d060..0395ee7 100644 --- a/packages/contracts/ignition/deployments/chain-84532/journal.jsonl +++ b/packages/contracts/ignition/deployments/chain-84532/journal.jsonl @@ -1,14 +1,4 @@ {"chainId":84532,"type":"DEPLOYMENT_INITIALIZE"} -{"artifactId":"GianoAccountFactory#GianoSmartWallet","constructorArgs":[],"contractName":"GianoSmartWallet","dependencies":[],"from":"0xaa6113eef876eeaf6acc863a9f6da05b44550e93","futureId":"GianoAccountFactory#GianoSmartWallet","futureType":"NAMED_ARTIFACT_CONTRACT_DEPLOYMENT","libraries":{},"strategy":"create2","strategyConfig":{"salt":"0xAB000000000000000000000000000000000000000000000000000000000000AB"},"type":"DEPLOYMENT_EXECUTION_STATE_INITIALIZE","value":{"_kind":"bigint","value":"0"}} -{"futureId":"GianoAccountFactory#GianoSmartWallet","networkInteraction":{"data":"0x26307668ab000000000000000000000000000000000000000000000000000000000000ab0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000348660a0604052346103de57306080526040805161001b82826103e3565b60018152601f19820160005b8181106103cd5750508151600060208201526020815261004783826103e3565b61005082610406565b5261005a81610406565b507f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f5005460005b825181101561038c5760206100958285610429565b5151141580610377575b6103505760206100af8285610429565b51511480610312575b6102eb576100c68184610429565b51918060001981146102d5576001019260ff6100e18261048c565b54166102b5576100f08161048c565b805460ff1916600117905560008281527f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f50260205286902081516001600160401b03811161029f578154600181811c91168015610295575b602082101461027f57601f8111610237575b506020601f82116001146101bc579260008051602061346683398151915292826101a89360019897966000916101b1575b50600019600383901b1c191690881b1790555b885191829182610460565b0390a201610080565b90508301513861018a565b601f1982169083600052806000209160005b81811061021f57508360019897969360008051602061346683398151915296936101a8968b9410610206575b5050811b01905561019d565b85015160001960f88460031b161c1916905538806101fa565b9192602060018192868a0151815501940192016101ce565b826000526020600020601f830160051c81019160208410610275575b601f0160051c01905b8181106102695750610159565b6000815560010161025c565b9091508190610253565b634e487b7160e01b600052602260045260246000fd5b90607f1690610147565b634e487b7160e01b600052604160045260246000fd5b855163468b12ad60e11b81529081906102d19060048301610460565b0390fd5b634e487b7160e01b600052601160045260246000fd5b836102f96102d19285610429565b51905163bff1ac6560e01b815291829160048301610460565b5061031d8184610429565b5160208151910151906020811061033e575b506001600160a01b03106100b8565b6000199060200360031b1b163861032f565b8361035e6102d19285610429565b5190516327755b9160e11b815291829160048301610460565b50836103838285610429565b5151141561009f565b83827f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f5005551612f9490816104d2823960805181818161076c015261085a0152f35b806060602080938601015201610027565b600080fd5b601f909101601f19168101906001600160401b0382119082101761029f57604052565b8051156104135760200190565b634e487b7160e01b600052603260045260246000fd5b80518210156104135760209160051b010190565b60005b8381106104505750506000910152565b8181015183820152602001610440565b60409160208252610480815180928160208601526020868601910161043d565b601f01601f1916010190565b60206104a591816040519382858094519384920161043d565b81017f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f5038152030190209056fe60806040526004361015610015575b3661165f57005b60003560e01c8063066a1eb7146101e55780630db02622146101e05780630f0f3f24146101db5780631626ba7e146101d657806317452caa146101d157806319822f7c146101cc5780631ca5393f146101c757806329565e3b146101c25780632c2abd1e146101bd57806334fcd5be146101b857806336d9cf9b146101b35780634f1ef286146101ae57806352d1902d146101a95780635c60da1b146101a45780636f2de70e1461019f578063737bebdd1461019a57806384b0196e1461019557806388ce4c7c1461019057806389625b571461018b5780638ea69029146101865780639f9bcb3414610181578063a05bd44e1461017c578063a2e1a8d814610177578063b0d691fe14610172578063b61d27f61461016d578063b819736714610168578063ce1506be14610163578063d948fd2e1461015e5763f698da250361000e57610e93565b610e68565b610e4a565b610e03565b610d97565b610d6c565b610d45565b610d0b565b610cd1565b610c9e565b610c5e565b610c0e565b610b6d565b610a67565b6108cc565b610896565b610846565b610731565b610706565b610673565b6105cb565b61052d565b6104f6565b6103a1565b610375565b610323565b61027d565b610249565b3461024457604036600319011261024457602060ff6102386004356102336024359161022560405193849288840160209093929193604081019481520152565b03601f19810183528261044f565b610ec5565b54166040519015158152f35b600080fd5b34610244576000366003190112610244576020610264610f4d565b604051908152f35b6001600160a01b0381160361024457565b34610244576020366003190112610244576102f460043561029d8161026c565b6102a5611697565b6040519060018060a01b03166020820152602081526102c560408261044f565b600080516020612edf83398151915254906102df82610f79565b600080516020612edf83398151915255611720565b005b9181601f84011215610244578235916001600160401b038311610244576020838186019501011161024457565b34610244576040366003190112610244576004356024356001600160401b0381116102445760209161035c6103629236906004016102f6565b91610f88565b6040516001600160e01b03199091168152f35b346102445760003660031901126102445760206040516107088152f35b90816101209103126102445790565b34610244576060366003190112610244576004356001600160401b038111610244576103d1903690600401610392565b6044356024356f71727de22e5e9d8baf0edac6f37da031193301610429576103fd829161041494611137565b91610418575b506040519081529081906020820190565b0390f35b60009081803892335af15038610403565b6282b42960e81b60005260046000fd5b634e487b7160e01b600052604160045260246000fd5b90601f801991011681019081106001600160401b0382111761047057604052565b610439565b6040519061048460c08361044f565b565b6001600160401b03811161047057601f01601f191660200190565b9291926104ad82610486565b916104bb604051938461044f565b829481845281830111610244578281602093846000960137010152565b9080601f83011215610244578160206104f3933591016104a1565b90565b34610244576020366003190112610244576004356001600160401b0381116102445760ff61023861023360209336906004016104d8565b34610244576040366003190112610244576102f46024356102c5600435610552611697565b6040805160208101929092528101929092528160608101610225565b906020600319830112610244576004356001600160401b0381116102445760040160009280601f830112156105c7578135936001600160401b0385116105c457506020808301928560051b010111610244579190565b80fd5b8380fd5b6105d43661056e565b906f71727de22e5e9d8baf0edac6f37da03233036104295760005b828110156102f45760006106088260051b840184610fb6565b6106128183610fe8565b61061b81611460565b156106575750829161062e9136916104a1565b60208151910182305af1610640611329565b901561064f57506001016105ef565b602081519101fd5b631d8370a360e11b84526001600160e01b031916600452602483fd5b61067c3661056e565b906f71727de22e5e9d8baf0edac6f37da03233036106f9575b60005b8281106106a157005b806106f36106b2600193868661127c565b356106bc8161026c565b60206106c984888861127c565b01356106ed6106e66106dc868a8a61127c565b6040810190610fb6565b36916104a1565b91611b43565b01610698565b610701611697565b610695565b34610244576000366003190112610244576020600080516020612f3f83398151915254604051908152f35b6040366003190112610244576004356107498161026c565b6024356001600160401b038111610244576107689036906004016102f6565b90917f0000000000000000000000000000000000000000000000000000000000000000301461083857610799611697565b60018060a01b03163d6000526352d1902d600152600080516020612f1f833981519152602060016004601d855afa510361082a57807fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a28181600080516020612f1f8339815191525561080b57005b816000926040519485378338925af41561082157005b3d6000823e3d90fd5b6355299b496001526004601dfd5b639f03a0266000526004601cfd5b3461024457600036600319011261024457307f000000000000000000000000000000000000000000000000000000000000000003610838576020604051600080516020612f1f8339815191528152f35b3461024457600036600319011261024457600080516020612f1f833981519152546040516001600160a01b039091168152602090f35b6108d53661056e565b600080516020612edf8339815191525491826109fd576108f691369161103b565b9060005b82518110156109e757602061090f82856110fc565b51511415806109d1575b6109aa57602061092982856110fc565b51511480610988575b61095d5780610957610946600193866110fc565b519361095181610f79565b94611720565b016108fa565b61096a61098491846110fc565b5160405163bff1ac6560e01b815291829160048301610a56565b0390fd5b506001600160a01b036109a461099e83866110fc565b5161193a565b11610932565b6109b761098491846110fc565b516040516327755b9160e11b815291829160048301610a56565b5060406109de82856110fc565b51511415610919565b6102f482600080516020612edf83398151915255565b6302ed543d60e51b60005260046000fd5b60005b838110610a215750506000910152565b8181015183820152602001610a11565b90602091610a4a81518092818552858086019101610a0e565b601f01601f1916010190565b9060206104f3928181520190610a31565b34610244576020366003190112610244576004356001600160401b038111610244578060040160806003198336030112610244576044820135610aa9816112a8565b4211610b4657610ae0610acd610ac1610ae4936112e0565b60208151910120611dd4565b610ada6064860185610fb6565b91611a51565b1590565b610b3557600091610b03826024610afb869561129e565b930190610fb6565b90610b1360405180938193611306565b03915afa610b1f611329565b901561064f576104149060405191829182610a56565b638baa579f60e01b60005260046000fd5b610b52610b69916112a8565b630f88f04960e41b60005260045242602452604490565b6000fd5b3461024457600036600319011261024457610bad610bbb610b8c611b63565b604092919251938493600f60f81b855260e0602086015260e0850190610a31565b908382036040850152610a31565b466060830152306080830152600060a083015281810360c0830152602060605191828152019060809060005b818110610bf5575050500390f35b8251845285945060209384019390920191600101610be7565b346102445760003660031901126102445760206040516121058152f35b9060406003198301126102445760043591602435906001600160401b03821161024457610c5a916004016102f6565b9091565b3461024457610c6c36610c2b565b90610c75611697565b6001610c7f610f4d565b14610c8d576102f492611cbd565b63948bf89760e01b60005260046000fd5b3461024457602036600319011261024457610414610cbd600435611393565b604051918291602083526020830190610a31565b34610244576020366003190112610244576004356001600160e01b03198116810361024457610d01602091611460565b6040519015158152f35b34610244576020366003190112610244576004356001600160401b03811161024457610264610d406020923690600401610392565b6114e3565b34610244576020366003190112610244576020610d01600435610d678161026c565b6115d0565b346102445760003660031901126102445760206040516f71727de22e5e9d8baf0edac6f37da0328152f35b606036600319011261024457600435610daf8161026c565b604435906024356001600160401b038311610244576106ed610dd86102f49436906004016102f6565b6f71727de22e5e9d8baf0edac6f37da0323303610df65736916104a1565b610dfe611697565b6106e6565b3461024457610e1136610c2b565b90610e1a611697565b610e22610f4d565b9260018411610e35576102f49350611cbd565b83631047e35560e31b60005260045260246000fd5b34610244576020366003190112610244576020610264600435611dd4565b34610244576000366003190112610244576020600080516020612edf83398151915254604051908152f35b346102445760003660031901126102445760206102646115f6565b90610ec160209282815194859201610a0e565b0190565b6020610ede918160405193828580945193849201610a0e565b81017f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f50381520301902090565b634e487b7160e01b600052601160045260246000fd5b600080516020612eff8339815191520390600080516020612eff8339815191528211610f4857565b610f0a565b600080516020612edf83398151915254600080516020612f3f833981519152548103908111610f485790565b6000198114610f485760010190565b90610f96610f9b9392611dd4565b611a51565b610fab576001600160e01b031990565b630b135d3f60e11b90565b903590601e198136030182121561024457018035906001600160401b0382116102445760200191813603831361024457565b356001600160e01b0319811692919060048210611003575050565b6001600160e01b031960049290920360031b82901b16169150565b909291928360041161024457831161024457600401916003190190565b929190926001600160401b038411610470578360051b9060206040516110638285018261044f565b8096815201918101918383116102445781905b838210611084575050505050565b81356001600160401b038111610244576020916110a487849387016104d8565b815201910190611076565b602081830312610244578035906001600160401b03821161024457019080601f83011215610244578160206104f39335910161103b565b634e487b7160e01b600052603260045260246000fd5b80518210156111105760209160051b010190565b6110e6565b80516020909101516001600160e01b0319811692919060048210611003575050565b91602083013560401c9160608401906111508286610fb6565b6316155e8f60e11b916001600160e01b03199161116c91610fe8565b160361124f575061117c846114e3565b92612105810361123b575061119e6111976111a69286610fb6565b809161101e565b8101906110af565b9160005b8351811015611215576111bd81856110fc565b5163278f794360e11b6111df6111d283611115565b6001600160e01b03191690565b146111ee575b506001016111aa565b60240151803b6111e557630c76093760e01b6000526001600160a01b031660045260246000fd5b50909261122d9250610ada905b610100810190610fb6565b61123657600190565b600090565b632ef3781360e01b60005260045260246000fd5b929050612105819492941461123b575090610ada61122d92611222565b61127760ff91610ec5565b541690565b91908110156111105760051b81013590605e1981360301821215610244570190565b356104f38161026c565b906107088201809211610f4857565b9060158201809211610f4857565b9060028201809211610f4857565b91908201809211610f4857565b906040519163737bebdd60e01b602084015260248301526024825261048460448361044f565b908092918237016000815290565b6040519061132360208361044f565b60008252565b3d15611354573d9061133a82610486565b91611348604051938461044f565b82523d6000602084013e565b606090565b90600182811c92168015611389575b602083101461137357565b634e487b7160e01b600052602260045260246000fd5b91607f1691611368565b6000527f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f5026020526040600020604051908160008254926113d284611359565b808452936001811690811561143e57506001146113f7575b506104f39250038261044f565b90506000929192526020600020906000915b8183106114225750509060206104f392820101386113ea565b6020919350806001915483858801015201910190918392611409565b9050602092506104f394915060ff191682840152151560051b820101386113ea565b63ffffffff60e01b166329565e3b60e01b81149081156114d2575b81156114c1575b81156114b0575b811561149f575b5061149a57600090565b600190565b63278f794360e11b14905038611490565b63b819736760e01b81149150611489565b6389625b5760e01b81149150611482565b6303c3cfc960e21b8114915061147b565b60208101356115976114f86040840184610fb6565b908160405191823720916102256115126060860186610fb6565b90816040519182372060c086013560a0870135608088013561154061153a60e08b018b610fb6565b90612335565b604080519a356001600160a01b031660208c01908152908b019790975260608a0198909852608089019390935260a088019290925260c087019190915260e086015261010085019390935292918290610120820190565b51902060408051602081019283526f71727de22e5e9d8baf0edac6f37da032918101919091526115ca8160608101610225565b51902090565b61127760ff916040519060018060a01b031660208201526020815261023360408261044f565b6115fe611b63565b906020815191012090602081519101206040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a081526115ca60c08261044f565b60003560e01c63bc197c81811463f23a6e6182141763150b7a0282141761168e57633c10b94e6000526004601cfd5b6020526020603cf35b6116a0336115d0565b80156116bb575b610484576282b42960e81b60005260046000fd5b503033146116a7565b8181106116cf575050565b600081556001016116c4565b9190601f81116116ea57505050565b610484926000526020600020906020601f840160051c83019310611716575b601f0160051c01906116c4565b9091508190611709565b6117298161126c565b6118975761173681610ec5565b600160ff19825416179055816000527f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f502602052604060002081516001600160401b038111610470576117928161178c8454611359565b846116db565b6020601f821160011461180657916117e7827f38109edc26e166b5579352ce56a50813177eb25208fd90d61f2f37838622022095936117f6956000916117fb575b508160011b916000199060031b1c19161790565b90555b60405191829182610a56565b0390a2565b9050840151386117d3565b601f1982169061181b84600052602060002090565b9160005b81811061187f5750926117f69492600192827f38109edc26e166b5579352ce56a50813177eb25208fd90d61f2f378386220220989610611866575b5050811b0190556117ea565b85015160001960f88460031b161c19169055388061185a565b9192602060018192868a01518155019401920161181f565b60405163468b12ad60e11b81529081906109849060048301610a56565b602081830312610244578035906001600160401b03821161024457016040818303126102445760405191604083018381106001600160401b038211176104705760405281356001600160401b03811161024457816119139184016104d8565b835260208201356001600160401b0381116102445761193292016104d8565b602082015290565b60208151910151906020811061194e575090565b6000199060200360031b1b1690565b9190826040910312610244576020825192015190565b81601f82011215610244576020815191019061198e81610486565b9261199c604051948561044f565b81845281830111610244576104f3916020840190610a0e565b602081830312610244578051906001600160401b03821161024457019060c082820312610244576119e4610475565b9180516001600160401b0381116102445782611a01918301611973565b835260208101516001600160401b0381116102445760a092611a24918301611973565b6020840152604081015160408401526060810151606084015260808101516080840152015160a082015290565b929190611a60918101906118b4565b90815191611a70610ae08461126c565b611b3a576020835114611af15782519360408514611aa3576040516327755b9160e11b8152806109848660048301610a56565b610225611aec611ad7611ac38760208080999b6104f39b0101910161195d565b9690950151602080825183010191016119b5565b92604051928391602083019190602083019252565b611fd6565b91929091906001600160a01b03611b078561193a565b11611b1f576020806104f39495015192015191611e49565b60405163bff1ac6560e01b8152806109848660048301610a56565b50915050600090565b916000928392602083519301915af1611b5a611329565b901561064f5750565b6040908151611b72838261044f565b601281527111da585b9bc814db585c9d0815d85b1b195d60721b602082015291611b9e8151918261044f565b60018152603160f81b602082015290565b908060209392818452848401376000828201840152601f01601f1916010190565b92916104f39492611bee928552606060208601526060850191611baf565b916040818403910152610a31565b60209082604051938492833781017f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f50381520301902090565b600281901b91906001600160fe1b03811603610f4857565b611c568154611359565b9081611c60575050565b81601f60009311600114611c72575055565b81835260208320611c8e91601f0160051c8101906001016116c4565b808252602082209081548360011b9084198560031b1c191617905555565b9160206104f3938181520191611baf565b9190611cc883611393565b805115611dbe5780516020820120611ce13685856104a1565b6020815191012003611d9f57509081611d28611d1e837fcf95bbfe6f870f8cc40482dc3dccdafd268f0e9ce0a4f24ea1bea9be64e505ff95611bfc565b805460ff19169055565b611d63611d5e856000527f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f502602052604060002090565b611c4c565b611d90611d7e600080516020612f3f83398151915254610f79565b600080516020612f3f83398151915255565b6117f660405192839283611cac565b60405163781f2e3960e01b815293849361098493909160048601611bd0565b63340c473d60e11b600052600484905260246000fd5b611ddc6115f6565b9060405160208101917f37f248f492286ab572e2a1ee0bd5315f2aae54a08b5871b294d657f3a1f1d0078352604082015260408152611e1c60608261044f565b51902060405190602082019261190160f01b845260228301526042820152604281526115ca60628261044f565b9091600091906001600160a01b03821615611f335760405192600484019460248501956044860192853b15611eb357509186939160209593630b135d3f60e11b8852526040845281518501809260045afa9360443d01915afa9151630b135d3f60e11b1491161690565b979650509050815180604014611f0e57604114611ed05750505050565b602092939550606082015160001a835260408201516060525b60005201516040526020600160806000825afa511860601b3d11916000606052604052565b506020929395506040820151601b8160ff1c01845260018060ff1b0316606052611ee9565b50505050600090565b906104846001602d60405180956c1131b430b63632b733b2911d1160991b6020830152611f728151809260208686019101610a0e565b8101601160f91b838201520301601e1981018552018361044f565b8051602010156111105760400190565b6040513d6000823e3d90fd5b6020929190611fbf849282815194859201610a0e565b019081520190565b90816020910312610244575190565b92919060009360a082019485517f7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8106121b35760208301917fff1a2a9176d650e4a99dedb58f1793003935130579fe17b5a3f698ac5b00e63461204884516060870151612042816112b7565b91612340565b60208151910120036121bc57612060612065916121c6565b611f3c565b61207a835160408601516120428451826112d3565b602081519101209060208151910120036121b357600160f81b600160f81b6120b36120a58651611f8d565b516001600160f81b03191690565b16036121b3576120d0602092600092505160405191828092610eae565b039060025afa156121ae576020600061210681516120fa8551610225604051938492888401611fa9565b60405191828092610eae565b039060025afa156121ae57608060005191019360008086518561215985516102258a60405194859360208501978c899192608093969594919660a084019784526020840152604083015260608201520152565b51906101005afa94612169611329565b805196806121a5575b61218557506104f395505190519161222d565b6001966121a19650810160209081019550019250611fc7915050565b1490565b50861515612172565b611f9d565b94505050505090565b5094505050505090565b6040516104f3916121d860608361044f565b604082527f4142434445464748494a4b4c4d4e4f505152535455565758595a61626364656660208301527f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f60408301526123ec565b93919092938315801561231d575b8015612315575b80156122fd575b6122f3576122578386612494565b156122f35760405191602083526020808401526020604084015260608301527fffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254f6080830152600080516020612eff83398151915260a083015260208260c0816005600019fa1561024457600080516020612eff833981519152946122ed93866122e794518181890994099161256f565b91610f20565b90081590565b5050505050600090565b50600080516020612eff833981519152821015612249565b508115612242565b50600080516020612eff83398151915284101561223b565b816040519182372090565b8051606094939290838111156123b2575b818111156123aa575b5082811061236757505050565b6040519450918290039101601f8201601f19165b8181015185820152601f1901908115612394579061237b565b5050604081840160006020820152016040528252565b90503861235a565b925082612351565b906123c482610486565b6123d1604051918261044f565b82815280926123e2601f1991610486565b0190602036910137565b9081511561248a579061241961241461240d6124088451611c34565b6112c5565b6003900490565b6123ba565b91602083019082805101906020820192835194600085525b83811061244057505050505290565b600360049101916001603f845182828260121c16880101518453828282600c1c16880101518385015382828260061c16880101516002850153168501015160038201530190612431565b50506104f3611314565b600160601b63ffffffff60c01b03198110801590612557575b8015612546575b61253f57600160601b63ffffffff60c01b0319907f5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b908290817fffffffff00000001000000000000000000000000fffffffffffffffffffffffc820990600160601b63ffffffff60c01b0319908181800909080890600160601b63ffffffff60c01b03199080091490565b5050600090565b50801580156124b4575081156124b4565b50600160601b63ffffffff60c01b03198210156124ad565b9092600092908360ff81841580612b66575b612b5b5761258f8887612b6e565b929091821580612b53575b612b18575b5085811c60028660fe1c16015b15612aff57600186821c16600286831c60011b160160018114612ab4575b60028114612aa7575b600314612a9a575b600198600019919091019694959489949392915b886000191161266d5750505050505050505060405191606083015260208252602080830152602060408301526002600160601b0363ffffffff60c01b03196080830152600163ffffffff60601b0360601b1960a083015260208260c0816005600019fa15610244579051600160601b63ffffffff60c01b0319910990565b909192939495969798600163ffffffff60601b0360601b198660020990600160601b63ffffffff60c01b0319828009600160601b63ffffffff60c01b031981830992600160601b63ffffffff60c01b03199082900991600160601b63ffffffff60c01b03199081908f8281830891600160601b63ffffffff60c01b031991820390080960030998600160601b63ffffffff60c01b03199083099c600160601b63ffffffff60c01b0319910991600160601b63ffffffff60c01b031980826002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b03198b80090898600160601b63ffffffff60c01b031991829081038b08900996600160601b63ffffffff60c01b03199088908290840908968b60028c60018d841c16921c60011b16018015612a7d5760018114612a32575b60028114612a27575b600314612a1e575b8215612a0b57600160601b63ffffffff60c01b031990889082908f90090890600160601b63ffffffff60c01b031990898203908290859009089781156128d1575b600160601b63ffffffff60c01b031989800998600160601b63ffffffff60c01b0319908a0992600160601b63ffffffff60c01b0319908a90099c600160601b63ffffffff60c01b03199084900998600160601b63ffffffff60c01b03199109600160601b63ffffffff60c01b031980826002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b031985810381868009080897600160601b63ffffffff60c01b03199384910991600160601b63ffffffff60c01b03199182908a82039008090894985b6000190197969594939291906125ef565b886127f4579a91975090959050600160601b63ffffffff60c01b0319816002600160601b0363ffffffff60c01b0319099a600160601b63ffffffff60c01b03198c8009600160601b63ffffffff60c01b0319818d099c600160601b63ffffffff60c01b0319908290099b600160601b63ffffffff60c01b031990818b8103820890600160601b63ffffffff60c01b0319908c900809600160601b63ffffffff60c01b03199060030991600160601b63ffffffff60c01b0319908d0998600160601b63ffffffff60c01b031991099b600160601b63ffffffff60c01b031980826002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b0319848009089b600160601b63ffffffff60c01b03199384910991600160601b63ffffffff60c01b03199182908e82039008900908946128c0565b60019c50909a8c985090965090506128c0565b505083856127b3565b8592508491506127ab565b7f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c29692507f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f591506127a2565b50505099959894600163ffffffff60601b0360601b1903946128c0565b92508096509581926125db565b96975087968994506125d3565b7f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c29698507f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f594506125ca565b60001901600186821c16600286831c60011b16016125ac565b9495600080516020612eff8339815191529196820390089484861580612b4b575b1561259f579850505050505050505090565b506001612b39565b50831561259a565b965050505050505090565b508315612581565b91907f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c2967f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5918015612d225784610c5a9495831480612d19575b15612d045750600160601b63ffffffff60c01b0319905082600209600160601b63ffffffff60c01b031981800992600160601b63ffffffff60c01b031984840991600160601b63ffffffff60c01b03199085900992600160601b63ffffffff60c01b0319908190816001820890600160601b63ffffffff60c01b0319907fffffffff00000001000000000000000000000000fffffffffffffffffffffffe900809600309600160601b63ffffffff60c01b031980846002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b03198380090892600160601b63ffffffff60c01b03196001860995600160601b63ffffffff60c01b0319906001900994600160601b63ffffffff60c01b031993849109600160601b63ffffffff60c01b03199081039290918290868203900890090890612e44565b909192612d1093612d28565b92909190612e44565b50818414612bc7565b50925090565b9193908015612e3b57600160601b63ffffffff60c01b03199081039384908290600190090893600160601b63ffffffff60c01b031990838203908290600190090892600160601b63ffffffff60c01b031984800993600160601b63ffffffff60c01b031990850992600160601b63ffffffff60c01b03199085900994600160601b63ffffffff60c01b031980876002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b031986810381858009080895600160601b63ffffffff60c01b031992839086900991600160601b63ffffffff60c01b03199182908982039008090892600160601b63ffffffff60c01b03199060010991600160601b63ffffffff60c01b03199060010990565b50600191508190565b91909260405190602082526020808301526020604083015260608201526002600160601b0363ffffffff60c01b03196080820152600163ffffffff60601b0360601b1960a082015260208160c0816005600019fa15610244575192600160601b63ffffffff60c01b03199084900992600160601b63ffffffff60c01b03199109600160601b63ffffffff60c01b031991908290800990099156fe0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f500ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f501a2646970667358221220890c9d20b5fc4df99bded2544912158a1d933f168e2e843d0c1a15a2ff32ce8c64736f6c634300081c003338109edc26e166b5579352ce56a50813177eb25208fd90d61f2f3783862202200000000000000000000000000000000000000000000000000000","id":1,"to":"0xba5Ed099633D3B313e4D5F7bdc1305d3c28ba5Ed","type":"ONCHAIN_INTERACTION","value":{"_kind":"bigint","value":"0"}},"type":"NETWORK_INTERACTION_REQUEST"} -{"futureId":"GianoAccountFactory#GianoSmartWallet","networkInteractionId":1,"nonce":5,"type":"TRANSACTION_PREPARE_SEND"} -{"futureId":"GianoAccountFactory#GianoSmartWallet","networkInteractionId":1,"nonce":5,"transaction":{"fees":{"maxFeePerGas":{"_kind":"bigint","value":"1000144"},"maxPriorityFeePerGas":{"_kind":"bigint","value":"1000000"}},"hash":"0x32ab04c6fd87a53068254320d0eef13c7949f7bcce4e5ce9652cfa1699b4acd0"},"type":"TRANSACTION_SEND"} -{"futureId":"GianoAccountFactory#GianoSmartWallet","hash":"0x32ab04c6fd87a53068254320d0eef13c7949f7bcce4e5ce9652cfa1699b4acd0","networkInteractionId":1,"receipt":{"blockHash":"0x9d9af88ed13ce4b9728cf34e192d3d71e584b3f3ed32735323f911bb267937b7","blockNumber":30174695,"logs":[{"address":"0x15cC758f7D3188c2361f6141CEaa9Ab2792bea56","data":"0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000","logIndex":110,"topics":["0x38109edc26e166b5579352ce56a50813177eb25208fd90d61f2f378386220220","0x0000000000000000000000000000000000000000000000000000000000000000"]},{"address":"0xba5Ed099633D3B313e4D5F7bdc1305d3c28ba5Ed","data":"0x","logIndex":111,"topics":["0xb8fda7e00c6b06a2b54e58521bc5894fee35f1090e5a3bb6390bfe2b98b497f7","0x00000000000000000000000015cc758f7d3188c2361f6141ceaa9ab2792bea56","0x05181ba0bcd64d2da7b68686d9a8814ef0f459a40e4ed876a6297477e17bd11c"]}],"status":"SUCCESS"},"type":"TRANSACTION_CONFIRM"} -{"futureId":"GianoAccountFactory#GianoSmartWallet","result":{"address":"0x15cC758f7D3188c2361f6141CEaa9Ab2792bea56","type":"SUCCESS"},"type":"DEPLOYMENT_EXECUTION_STATE_COMPLETE"} -{"artifactId":"GianoAccountFactory#GianoSmartWalletFactory","constructorArgs":["0x15cC758f7D3188c2361f6141CEaa9Ab2792bea56"],"contractName":"GianoSmartWalletFactory","dependencies":["GianoAccountFactory#GianoSmartWallet"],"from":"0xaa6113eef876eeaf6acc863a9f6da05b44550e93","futureId":"GianoAccountFactory#GianoSmartWalletFactory","futureType":"NAMED_ARTIFACT_CONTRACT_DEPLOYMENT","libraries":{},"strategy":"create2","strategyConfig":{"salt":"0xAB000000000000000000000000000000000000000000000000000000000000AB"},"type":"DEPLOYMENT_EXECUTION_STATE_INITIALIZE","value":{"_kind":"bigint","value":"0"}} -{"futureId":"GianoAccountFactory#GianoSmartWalletFactory","networkInteraction":{"data":"0x26307668ab000000000000000000000000000000000000000000000000000000000000ab0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000061c60a0601f6105fc38819003918201601f19168301916001600160401b038311848410176100955780849260209460405283398101031261009057516001600160a01b038116810361009057803b1561007f5760805260405161055090816100ac823960805181818160600152818160a50152818161014801526102d90152f35b63870dfeb760e01b60005260046000fd5b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604052600436101561001257600080fd5b6000803560e01c8063250b1b41146102bb5780633ffba36f146100d45780635c60da1b1461008f5763db4c545e1461004957600080fd5b3461008c578060031936011261008c5760206100847f00000000000000000000000000000000000000000000000000000000000000006104a7565b604051908152f35b80fd5b503461008c578060031936011261008c576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b506100de3661032d565b919080156102ac576100f1838284610479565b928490604051917fcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f36060527f5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e20766040526160096020527f0000000000000000000000000000000000000000000000000000000000000000601e5268603d3d8160223d3973600a52605f60212060358401523060581b835260ff83538560158401526055832090341596823b1561029057505060019561028b578638818034855af11561027e575b604083905260608790526001600160a01b031694156101dc575b602085604051908152f35b818061020c7ff8e246d8281c915feaf5c1ffd75d9a144f6dbdbbf545e286088661b19d8028f49386888a97610424565b0390a2823b1561027a57604051633796f38760e11b81526020600482015293918291859182916102419160248401919061038a565b038183865af192831561026d5760209361025d575b80806101d1565b8161026791610441565b38610256565b50604051903d90823e3d90fd5b8380fd5b63b12d13eb87526004601cfd5b6101b7565b91509550605f602134f5806101b757633011642587526004601cfd5b633c776be160e01b8452600484fd5b503461008c576020906103036102d03661032d565b906102fd9392937f00000000000000000000000000000000000000000000000000000000000000006104a7565b93610479565b9060ff83536035523060601b60015260155260558120906035526040519060018060a01b03168152f35b9060406003198301126103855760043567ffffffffffffffff811161038557826023820112156103855780600401359267ffffffffffffffff84116103855760248460051b8301011161038557602401919060243590565b600080fd5b90602083828152019060208160051b85010193836000915b8383106103b25750505050505090565b909192939495601f198282030186528635601e1984360301811215610385578301906020823592019167ffffffffffffffff8111610385578036038313610385576020828280600196849695859652848401376000828201840152601f01601f191601019801960194930191906103a2565b93929160209161043c9160408752604087019161038a565b930152565b90601f8019910116810190811067ffffffffffffffff82111761046357604052565b634e487b7160e01b600052604160045260246000fd5b91906104a190610493604051938492602084019687610424565b03601f198101835282610441565b51902090565b90604051917fcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f36060527f5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076604052616009602052601e5268603d3d8160223d3973600a52605f60212091604052600060605256fea26469706673582212209043ac39e0deda770cb1183dbc33f14b238e32f625441a810092deac30b2a90e64736f6c634300081c003300000000000000000000000015cc758f7d3188c2361f6141ceaa9ab2792bea5600000000","id":1,"to":"0xba5Ed099633D3B313e4D5F7bdc1305d3c28ba5Ed","type":"ONCHAIN_INTERACTION","value":{"_kind":"bigint","value":"0"}},"type":"NETWORK_INTERACTION_REQUEST"} -{"futureId":"GianoAccountFactory#GianoSmartWalletFactory","networkInteractionId":1,"nonce":6,"type":"TRANSACTION_PREPARE_SEND"} -{"futureId":"GianoAccountFactory#GianoSmartWalletFactory","networkInteractionId":1,"nonce":6,"transaction":{"fees":{"maxFeePerGas":{"_kind":"bigint","value":"1000140"},"maxPriorityFeePerGas":{"_kind":"bigint","value":"1000000"}},"hash":"0x0cc05f61cc609a9ad93e423c730250e576d7fe88c2610a8a730c0614d22451b3"},"type":"TRANSACTION_SEND"} -{"futureId":"GianoAccountFactory#GianoSmartWalletFactory","hash":"0x0cc05f61cc609a9ad93e423c730250e576d7fe88c2610a8a730c0614d22451b3","networkInteractionId":1,"receipt":{"blockHash":"0x88218e1067125638a6938d7252cc482972b1da82f4cefb95f4ca06680a6b21ed","blockNumber":30174702,"logs":[{"address":"0xba5Ed099633D3B313e4D5F7bdc1305d3c28ba5Ed","data":"0x","logIndex":49,"topics":["0xb8fda7e00c6b06a2b54e58521bc5894fee35f1090e5a3bb6390bfe2b98b497f7","0x00000000000000000000000026dcd29390eba3b22bccbd2143989e5994ac7050","0x05181ba0bcd64d2da7b68686d9a8814ef0f459a40e4ed876a6297477e17bd11c"]}],"status":"SUCCESS"},"type":"TRANSACTION_CONFIRM"} -{"futureId":"GianoAccountFactory#GianoSmartWalletFactory","result":{"address":"0x26dCd29390eba3B22BcCbd2143989E5994Ac7050","type":"SUCCESS"},"type":"DEPLOYMENT_EXECUTION_STATE_COMPLETE"} \ No newline at end of file +{"artifactId":"GianoAccountFactory#GianoSmartWallet","constructorArgs":[],"contractName":"GianoSmartWallet","dependencies":[],"from":"0x13f1576bc02215d837dbcd37bc986c4e1de2d918","futureId":"GianoAccountFactory#GianoSmartWallet","futureType":"NAMED_ARTIFACT_CONTRACT_DEPLOYMENT","libraries":{},"strategy":"create2","strategyConfig":{"salt":"0xAB000000000000000000000000000000000000000000000000000000000000AB"},"type":"DEPLOYMENT_EXECUTION_STATE_INITIALIZE","value":{"_kind":"bigint","value":"0"}} +{"futureId":"GianoAccountFactory#GianoSmartWallet","networkInteraction":{"data":"0x26307668ab000000000000000000000000000000000000000000000000000000000000ab0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000348660a0604052346103de57306080526040805161001b82826103e3565b60018152601f19820160005b8181106103cd5750508151600060208201526020815261004783826103e3565b61005082610406565b5261005a81610406565b507f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f5005460005b825181101561038c5760206100958285610429565b5151141580610377575b6103505760206100af8285610429565b51511480610312575b6102eb576100c68184610429565b51918060001981146102d5576001019260ff6100e18261048c565b54166102b5576100f08161048c565b805460ff1916600117905560008281527f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f50260205286902081516001600160401b03811161029f578154600181811c91168015610295575b602082101461027f57601f8111610237575b506020601f82116001146101bc579260008051602061346683398151915292826101a89360019897966000916101b1575b50600019600383901b1c191690881b1790555b885191829182610460565b0390a201610080565b90508301513861018a565b601f1982169083600052806000209160005b81811061021f57508360019897969360008051602061346683398151915296936101a8968b9410610206575b5050811b01905561019d565b85015160001960f88460031b161c1916905538806101fa565b9192602060018192868a0151815501940192016101ce565b826000526020600020601f830160051c81019160208410610275575b601f0160051c01905b8181106102695750610159565b6000815560010161025c565b9091508190610253565b634e487b7160e01b600052602260045260246000fd5b90607f1690610147565b634e487b7160e01b600052604160045260246000fd5b855163468b12ad60e11b81529081906102d19060048301610460565b0390fd5b634e487b7160e01b600052601160045260246000fd5b836102f96102d19285610429565b51905163bff1ac6560e01b815291829160048301610460565b5061031d8184610429565b5160208151910151906020811061033e575b506001600160a01b03106100b8565b6000199060200360031b1b163861032f565b8361035e6102d19285610429565b5190516327755b9160e11b815291829160048301610460565b50836103838285610429565b5151141561009f565b83827f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f5005551612f9490816104d2823960805181818161076c015261085a0152f35b806060602080938601015201610027565b600080fd5b601f909101601f19168101906001600160401b0382119082101761029f57604052565b8051156104135760200190565b634e487b7160e01b600052603260045260246000fd5b80518210156104135760209160051b010190565b60005b8381106104505750506000910152565b8181015183820152602001610440565b60409160208252610480815180928160208601526020868601910161043d565b601f01601f1916010190565b60206104a591816040519382858094519384920161043d565b81017f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f5038152030190209056fe60806040526004361015610015575b3661165f57005b60003560e01c8063066a1eb7146101e55780630db02622146101e05780630f0f3f24146101db5780631626ba7e146101d657806317452caa146101d157806319822f7c146101cc5780631ca5393f146101c757806329565e3b146101c25780632c2abd1e146101bd57806334fcd5be146101b857806336d9cf9b146101b35780634f1ef286146101ae57806352d1902d146101a95780635c60da1b146101a45780636f2de70e1461019f578063737bebdd1461019a57806384b0196e1461019557806388ce4c7c1461019057806389625b571461018b5780638ea69029146101865780639f9bcb3414610181578063a05bd44e1461017c578063a2e1a8d814610177578063b0d691fe14610172578063b61d27f61461016d578063b819736714610168578063ce1506be14610163578063d948fd2e1461015e5763f698da250361000e57610e93565b610e68565b610e4a565b610e03565b610d97565b610d6c565b610d45565b610d0b565b610cd1565b610c9e565b610c5e565b610c0e565b610b6d565b610a67565b6108cc565b610896565b610846565b610731565b610706565b610673565b6105cb565b61052d565b6104f6565b6103a1565b610375565b610323565b61027d565b610249565b3461024457604036600319011261024457602060ff6102386004356102336024359161022560405193849288840160209093929193604081019481520152565b03601f19810183528261044f565b610ec5565b54166040519015158152f35b600080fd5b34610244576000366003190112610244576020610264610f4d565b604051908152f35b6001600160a01b0381160361024457565b34610244576020366003190112610244576102f460043561029d8161026c565b6102a5611697565b6040519060018060a01b03166020820152602081526102c560408261044f565b600080516020612edf83398151915254906102df82610f79565b600080516020612edf83398151915255611720565b005b9181601f84011215610244578235916001600160401b038311610244576020838186019501011161024457565b34610244576040366003190112610244576004356024356001600160401b0381116102445760209161035c6103629236906004016102f6565b91610f88565b6040516001600160e01b03199091168152f35b346102445760003660031901126102445760206040516107088152f35b90816101209103126102445790565b34610244576060366003190112610244576004356001600160401b038111610244576103d1903690600401610392565b6044356024356f71727de22e5e9d8baf0edac6f37da031193301610429576103fd829161041494611137565b91610418575b506040519081529081906020820190565b0390f35b60009081803892335af15038610403565b6282b42960e81b60005260046000fd5b634e487b7160e01b600052604160045260246000fd5b90601f801991011681019081106001600160401b0382111761047057604052565b610439565b6040519061048460c08361044f565b565b6001600160401b03811161047057601f01601f191660200190565b9291926104ad82610486565b916104bb604051938461044f565b829481845281830111610244578281602093846000960137010152565b9080601f83011215610244578160206104f3933591016104a1565b90565b34610244576020366003190112610244576004356001600160401b0381116102445760ff61023861023360209336906004016104d8565b34610244576040366003190112610244576102f46024356102c5600435610552611697565b6040805160208101929092528101929092528160608101610225565b906020600319830112610244576004356001600160401b0381116102445760040160009280601f830112156105c7578135936001600160401b0385116105c457506020808301928560051b010111610244579190565b80fd5b8380fd5b6105d43661056e565b906f71727de22e5e9d8baf0edac6f37da03233036104295760005b828110156102f45760006106088260051b840184610fb6565b6106128183610fe8565b61061b81611460565b156106575750829161062e9136916104a1565b60208151910182305af1610640611329565b901561064f57506001016105ef565b602081519101fd5b631d8370a360e11b84526001600160e01b031916600452602483fd5b61067c3661056e565b906f71727de22e5e9d8baf0edac6f37da03233036106f9575b60005b8281106106a157005b806106f36106b2600193868661127c565b356106bc8161026c565b60206106c984888861127c565b01356106ed6106e66106dc868a8a61127c565b6040810190610fb6565b36916104a1565b91611b43565b01610698565b610701611697565b610695565b34610244576000366003190112610244576020600080516020612f3f83398151915254604051908152f35b6040366003190112610244576004356107498161026c565b6024356001600160401b038111610244576107689036906004016102f6565b90917f0000000000000000000000000000000000000000000000000000000000000000301461083857610799611697565b60018060a01b03163d6000526352d1902d600152600080516020612f1f833981519152602060016004601d855afa510361082a57807fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a28181600080516020612f1f8339815191525561080b57005b816000926040519485378338925af41561082157005b3d6000823e3d90fd5b6355299b496001526004601dfd5b639f03a0266000526004601cfd5b3461024457600036600319011261024457307f000000000000000000000000000000000000000000000000000000000000000003610838576020604051600080516020612f1f8339815191528152f35b3461024457600036600319011261024457600080516020612f1f833981519152546040516001600160a01b039091168152602090f35b6108d53661056e565b600080516020612edf8339815191525491826109fd576108f691369161103b565b9060005b82518110156109e757602061090f82856110fc565b51511415806109d1575b6109aa57602061092982856110fc565b51511480610988575b61095d5780610957610946600193866110fc565b519361095181610f79565b94611720565b016108fa565b61096a61098491846110fc565b5160405163bff1ac6560e01b815291829160048301610a56565b0390fd5b506001600160a01b036109a461099e83866110fc565b5161193a565b11610932565b6109b761098491846110fc565b516040516327755b9160e11b815291829160048301610a56565b5060406109de82856110fc565b51511415610919565b6102f482600080516020612edf83398151915255565b6302ed543d60e51b60005260046000fd5b60005b838110610a215750506000910152565b8181015183820152602001610a11565b90602091610a4a81518092818552858086019101610a0e565b601f01601f1916010190565b9060206104f3928181520190610a31565b34610244576020366003190112610244576004356001600160401b038111610244578060040160806003198336030112610244576044820135610aa9816112a8565b4211610b4657610ae0610acd610ac1610ae4936112e0565b60208151910120611dd4565b610ada6064860185610fb6565b91611a51565b1590565b610b3557600091610b03826024610afb869561129e565b930190610fb6565b90610b1360405180938193611306565b03915afa610b1f611329565b901561064f576104149060405191829182610a56565b638baa579f60e01b60005260046000fd5b610b52610b69916112a8565b630f88f04960e41b60005260045242602452604490565b6000fd5b3461024457600036600319011261024457610bad610bbb610b8c611b63565b604092919251938493600f60f81b855260e0602086015260e0850190610a31565b908382036040850152610a31565b466060830152306080830152600060a083015281810360c0830152602060605191828152019060809060005b818110610bf5575050500390f35b8251845285945060209384019390920191600101610be7565b346102445760003660031901126102445760206040516121058152f35b9060406003198301126102445760043591602435906001600160401b03821161024457610c5a916004016102f6565b9091565b3461024457610c6c36610c2b565b90610c75611697565b6001610c7f610f4d565b14610c8d576102f492611cbd565b63948bf89760e01b60005260046000fd5b3461024457602036600319011261024457610414610cbd600435611393565b604051918291602083526020830190610a31565b34610244576020366003190112610244576004356001600160e01b03198116810361024457610d01602091611460565b6040519015158152f35b34610244576020366003190112610244576004356001600160401b03811161024457610264610d406020923690600401610392565b6114e3565b34610244576020366003190112610244576020610d01600435610d678161026c565b6115d0565b346102445760003660031901126102445760206040516f71727de22e5e9d8baf0edac6f37da0328152f35b606036600319011261024457600435610daf8161026c565b604435906024356001600160401b038311610244576106ed610dd86102f49436906004016102f6565b6f71727de22e5e9d8baf0edac6f37da0323303610df65736916104a1565b610dfe611697565b6106e6565b3461024457610e1136610c2b565b90610e1a611697565b610e22610f4d565b9260018411610e35576102f49350611cbd565b83631047e35560e31b60005260045260246000fd5b34610244576020366003190112610244576020610264600435611dd4565b34610244576000366003190112610244576020600080516020612edf83398151915254604051908152f35b346102445760003660031901126102445760206102646115f6565b90610ec160209282815194859201610a0e565b0190565b6020610ede918160405193828580945193849201610a0e565b81017f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f50381520301902090565b634e487b7160e01b600052601160045260246000fd5b600080516020612eff8339815191520390600080516020612eff8339815191528211610f4857565b610f0a565b600080516020612edf83398151915254600080516020612f3f833981519152548103908111610f485790565b6000198114610f485760010190565b90610f96610f9b9392611dd4565b611a51565b610fab576001600160e01b031990565b630b135d3f60e11b90565b903590601e198136030182121561024457018035906001600160401b0382116102445760200191813603831361024457565b356001600160e01b0319811692919060048210611003575050565b6001600160e01b031960049290920360031b82901b16169150565b909291928360041161024457831161024457600401916003190190565b929190926001600160401b038411610470578360051b9060206040516110638285018261044f565b8096815201918101918383116102445781905b838210611084575050505050565b81356001600160401b038111610244576020916110a487849387016104d8565b815201910190611076565b602081830312610244578035906001600160401b03821161024457019080601f83011215610244578160206104f39335910161103b565b634e487b7160e01b600052603260045260246000fd5b80518210156111105760209160051b010190565b6110e6565b80516020909101516001600160e01b0319811692919060048210611003575050565b91602083013560401c9160608401906111508286610fb6565b6316155e8f60e11b916001600160e01b03199161116c91610fe8565b160361124f575061117c846114e3565b92612105810361123b575061119e6111976111a69286610fb6565b809161101e565b8101906110af565b9160005b8351811015611215576111bd81856110fc565b5163278f794360e11b6111df6111d283611115565b6001600160e01b03191690565b146111ee575b506001016111aa565b60240151803b6111e557630c76093760e01b6000526001600160a01b031660045260246000fd5b50909261122d9250610ada905b610100810190610fb6565b61123657600190565b600090565b632ef3781360e01b60005260045260246000fd5b929050612105819492941461123b575090610ada61122d92611222565b61127760ff91610ec5565b541690565b91908110156111105760051b81013590605e1981360301821215610244570190565b356104f38161026c565b906107088201809211610f4857565b9060158201809211610f4857565b9060028201809211610f4857565b91908201809211610f4857565b906040519163737bebdd60e01b602084015260248301526024825261048460448361044f565b908092918237016000815290565b6040519061132360208361044f565b60008252565b3d15611354573d9061133a82610486565b91611348604051938461044f565b82523d6000602084013e565b606090565b90600182811c92168015611389575b602083101461137357565b634e487b7160e01b600052602260045260246000fd5b91607f1691611368565b6000527f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f5026020526040600020604051908160008254926113d284611359565b808452936001811690811561143e57506001146113f7575b506104f39250038261044f565b90506000929192526020600020906000915b8183106114225750509060206104f392820101386113ea565b6020919350806001915483858801015201910190918392611409565b9050602092506104f394915060ff191682840152151560051b820101386113ea565b63ffffffff60e01b166329565e3b60e01b81149081156114d2575b81156114c1575b81156114b0575b811561149f575b5061149a57600090565b600190565b63278f794360e11b14905038611490565b63b819736760e01b81149150611489565b6389625b5760e01b81149150611482565b6303c3cfc960e21b8114915061147b565b60208101356115976114f86040840184610fb6565b908160405191823720916102256115126060860186610fb6565b90816040519182372060c086013560a0870135608088013561154061153a60e08b018b610fb6565b90612335565b604080519a356001600160a01b031660208c01908152908b019790975260608a0198909852608089019390935260a088019290925260c087019190915260e086015261010085019390935292918290610120820190565b51902060408051602081019283526f71727de22e5e9d8baf0edac6f37da032918101919091526115ca8160608101610225565b51902090565b61127760ff916040519060018060a01b031660208201526020815261023360408261044f565b6115fe611b63565b906020815191012090602081519101206040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a081526115ca60c08261044f565b60003560e01c63bc197c81811463f23a6e6182141763150b7a0282141761168e57633c10b94e6000526004601cfd5b6020526020603cf35b6116a0336115d0565b80156116bb575b610484576282b42960e81b60005260046000fd5b503033146116a7565b8181106116cf575050565b600081556001016116c4565b9190601f81116116ea57505050565b610484926000526020600020906020601f840160051c83019310611716575b601f0160051c01906116c4565b9091508190611709565b6117298161126c565b6118975761173681610ec5565b600160ff19825416179055816000527f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f502602052604060002081516001600160401b038111610470576117928161178c8454611359565b846116db565b6020601f821160011461180657916117e7827f38109edc26e166b5579352ce56a50813177eb25208fd90d61f2f37838622022095936117f6956000916117fb575b508160011b916000199060031b1c19161790565b90555b60405191829182610a56565b0390a2565b9050840151386117d3565b601f1982169061181b84600052602060002090565b9160005b81811061187f5750926117f69492600192827f38109edc26e166b5579352ce56a50813177eb25208fd90d61f2f378386220220989610611866575b5050811b0190556117ea565b85015160001960f88460031b161c19169055388061185a565b9192602060018192868a01518155019401920161181f565b60405163468b12ad60e11b81529081906109849060048301610a56565b602081830312610244578035906001600160401b03821161024457016040818303126102445760405191604083018381106001600160401b038211176104705760405281356001600160401b03811161024457816119139184016104d8565b835260208201356001600160401b0381116102445761193292016104d8565b602082015290565b60208151910151906020811061194e575090565b6000199060200360031b1b1690565b9190826040910312610244576020825192015190565b81601f82011215610244576020815191019061198e81610486565b9261199c604051948561044f565b81845281830111610244576104f3916020840190610a0e565b602081830312610244578051906001600160401b03821161024457019060c082820312610244576119e4610475565b9180516001600160401b0381116102445782611a01918301611973565b835260208101516001600160401b0381116102445760a092611a24918301611973565b6020840152604081015160408401526060810151606084015260808101516080840152015160a082015290565b929190611a60918101906118b4565b90815191611a70610ae08461126c565b611b3a576020835114611af15782519360408514611aa3576040516327755b9160e11b8152806109848660048301610a56565b610225611aec611ad7611ac38760208080999b6104f39b0101910161195d565b9690950151602080825183010191016119b5565b92604051928391602083019190602083019252565b611fd6565b91929091906001600160a01b03611b078561193a565b11611b1f576020806104f39495015192015191611e49565b60405163bff1ac6560e01b8152806109848660048301610a56565b50915050600090565b916000928392602083519301915af1611b5a611329565b901561064f5750565b6040908151611b72838261044f565b601281527111da585b9bc814db585c9d0815d85b1b195d60721b602082015291611b9e8151918261044f565b60018152603160f81b602082015290565b908060209392818452848401376000828201840152601f01601f1916010190565b92916104f39492611bee928552606060208601526060850191611baf565b916040818403910152610a31565b60209082604051938492833781017f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f50381520301902090565b600281901b91906001600160fe1b03811603610f4857565b611c568154611359565b9081611c60575050565b81601f60009311600114611c72575055565b81835260208320611c8e91601f0160051c8101906001016116c4565b808252602082209081548360011b9084198560031b1c191617905555565b9160206104f3938181520191611baf565b9190611cc883611393565b805115611dbe5780516020820120611ce13685856104a1565b6020815191012003611d9f57509081611d28611d1e837fcf95bbfe6f870f8cc40482dc3dccdafd268f0e9ce0a4f24ea1bea9be64e505ff95611bfc565b805460ff19169055565b611d63611d5e856000527f0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f502602052604060002090565b611c4c565b611d90611d7e600080516020612f3f83398151915254610f79565b600080516020612f3f83398151915255565b6117f660405192839283611cac565b60405163781f2e3960e01b815293849361098493909160048601611bd0565b63340c473d60e11b600052600484905260246000fd5b611ddc6115f6565b9060405160208101917f37f248f492286ab572e2a1ee0bd5315f2aae54a08b5871b294d657f3a1f1d0078352604082015260408152611e1c60608261044f565b51902060405190602082019261190160f01b845260228301526042820152604281526115ca60628261044f565b9091600091906001600160a01b03821615611f335760405192600484019460248501956044860192853b15611eb357509186939160209593630b135d3f60e11b8852526040845281518501809260045afa9360443d01915afa9151630b135d3f60e11b1491161690565b979650509050815180604014611f0e57604114611ed05750505050565b602092939550606082015160001a835260408201516060525b60005201516040526020600160806000825afa511860601b3d11916000606052604052565b506020929395506040820151601b8160ff1c01845260018060ff1b0316606052611ee9565b50505050600090565b906104846001602d60405180956c1131b430b63632b733b2911d1160991b6020830152611f728151809260208686019101610a0e565b8101601160f91b838201520301601e1981018552018361044f565b8051602010156111105760400190565b6040513d6000823e3d90fd5b6020929190611fbf849282815194859201610a0e565b019081520190565b90816020910312610244575190565b92919060009360a082019485517f7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8106121b35760208301917fff1a2a9176d650e4a99dedb58f1793003935130579fe17b5a3f698ac5b00e63461204884516060870151612042816112b7565b91612340565b60208151910120036121bc57612060612065916121c6565b611f3c565b61207a835160408601516120428451826112d3565b602081519101209060208151910120036121b357600160f81b600160f81b6120b36120a58651611f8d565b516001600160f81b03191690565b16036121b3576120d0602092600092505160405191828092610eae565b039060025afa156121ae576020600061210681516120fa8551610225604051938492888401611fa9565b60405191828092610eae565b039060025afa156121ae57608060005191019360008086518561215985516102258a60405194859360208501978c899192608093969594919660a084019784526020840152604083015260608201520152565b51906101005afa94612169611329565b805196806121a5575b61218557506104f395505190519161222d565b6001966121a19650810160209081019550019250611fc7915050565b1490565b50861515612172565b611f9d565b94505050505090565b5094505050505090565b6040516104f3916121d860608361044f565b604082527f4142434445464748494a4b4c4d4e4f505152535455565758595a61626364656660208301527f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f60408301526123ec565b93919092938315801561231d575b8015612315575b80156122fd575b6122f3576122578386612494565b156122f35760405191602083526020808401526020604084015260608301527fffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254f6080830152600080516020612eff83398151915260a083015260208260c0816005600019fa1561024457600080516020612eff833981519152946122ed93866122e794518181890994099161256f565b91610f20565b90081590565b5050505050600090565b50600080516020612eff833981519152821015612249565b508115612242565b50600080516020612eff83398151915284101561223b565b816040519182372090565b8051606094939290838111156123b2575b818111156123aa575b5082811061236757505050565b6040519450918290039101601f8201601f19165b8181015185820152601f1901908115612394579061237b565b5050604081840160006020820152016040528252565b90503861235a565b925082612351565b906123c482610486565b6123d1604051918261044f565b82815280926123e2601f1991610486565b0190602036910137565b9081511561248a579061241961241461240d6124088451611c34565b6112c5565b6003900490565b6123ba565b91602083019082805101906020820192835194600085525b83811061244057505050505290565b600360049101916001603f845182828260121c16880101518453828282600c1c16880101518385015382828260061c16880101516002850153168501015160038201530190612431565b50506104f3611314565b600160601b63ffffffff60c01b03198110801590612557575b8015612546575b61253f57600160601b63ffffffff60c01b0319907f5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b908290817fffffffff00000001000000000000000000000000fffffffffffffffffffffffc820990600160601b63ffffffff60c01b0319908181800909080890600160601b63ffffffff60c01b03199080091490565b5050600090565b50801580156124b4575081156124b4565b50600160601b63ffffffff60c01b03198210156124ad565b9092600092908360ff81841580612b66575b612b5b5761258f8887612b6e565b929091821580612b53575b612b18575b5085811c60028660fe1c16015b15612aff57600186821c16600286831c60011b160160018114612ab4575b60028114612aa7575b600314612a9a575b600198600019919091019694959489949392915b886000191161266d5750505050505050505060405191606083015260208252602080830152602060408301526002600160601b0363ffffffff60c01b03196080830152600163ffffffff60601b0360601b1960a083015260208260c0816005600019fa15610244579051600160601b63ffffffff60c01b0319910990565b909192939495969798600163ffffffff60601b0360601b198660020990600160601b63ffffffff60c01b0319828009600160601b63ffffffff60c01b031981830992600160601b63ffffffff60c01b03199082900991600160601b63ffffffff60c01b03199081908f8281830891600160601b63ffffffff60c01b031991820390080960030998600160601b63ffffffff60c01b03199083099c600160601b63ffffffff60c01b0319910991600160601b63ffffffff60c01b031980826002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b03198b80090898600160601b63ffffffff60c01b031991829081038b08900996600160601b63ffffffff60c01b03199088908290840908968b60028c60018d841c16921c60011b16018015612a7d5760018114612a32575b60028114612a27575b600314612a1e575b8215612a0b57600160601b63ffffffff60c01b031990889082908f90090890600160601b63ffffffff60c01b031990898203908290859009089781156128d1575b600160601b63ffffffff60c01b031989800998600160601b63ffffffff60c01b0319908a0992600160601b63ffffffff60c01b0319908a90099c600160601b63ffffffff60c01b03199084900998600160601b63ffffffff60c01b03199109600160601b63ffffffff60c01b031980826002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b031985810381868009080897600160601b63ffffffff60c01b03199384910991600160601b63ffffffff60c01b03199182908a82039008090894985b6000190197969594939291906125ef565b886127f4579a91975090959050600160601b63ffffffff60c01b0319816002600160601b0363ffffffff60c01b0319099a600160601b63ffffffff60c01b03198c8009600160601b63ffffffff60c01b0319818d099c600160601b63ffffffff60c01b0319908290099b600160601b63ffffffff60c01b031990818b8103820890600160601b63ffffffff60c01b0319908c900809600160601b63ffffffff60c01b03199060030991600160601b63ffffffff60c01b0319908d0998600160601b63ffffffff60c01b031991099b600160601b63ffffffff60c01b031980826002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b0319848009089b600160601b63ffffffff60c01b03199384910991600160601b63ffffffff60c01b03199182908e82039008900908946128c0565b60019c50909a8c985090965090506128c0565b505083856127b3565b8592508491506127ab565b7f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c29692507f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f591506127a2565b50505099959894600163ffffffff60601b0360601b1903946128c0565b92508096509581926125db565b96975087968994506125d3565b7f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c29698507f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f594506125ca565b60001901600186821c16600286831c60011b16016125ac565b9495600080516020612eff8339815191529196820390089484861580612b4b575b1561259f579850505050505050505090565b506001612b39565b50831561259a565b965050505050505090565b508315612581565b91907f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c2967f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5918015612d225784610c5a9495831480612d19575b15612d045750600160601b63ffffffff60c01b0319905082600209600160601b63ffffffff60c01b031981800992600160601b63ffffffff60c01b031984840991600160601b63ffffffff60c01b03199085900992600160601b63ffffffff60c01b0319908190816001820890600160601b63ffffffff60c01b0319907fffffffff00000001000000000000000000000000fffffffffffffffffffffffe900809600309600160601b63ffffffff60c01b031980846002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b03198380090892600160601b63ffffffff60c01b03196001860995600160601b63ffffffff60c01b0319906001900994600160601b63ffffffff60c01b031993849109600160601b63ffffffff60c01b03199081039290918290868203900890090890612e44565b909192612d1093612d28565b92909190612e44565b50818414612bc7565b50925090565b9193908015612e3b57600160601b63ffffffff60c01b03199081039384908290600190090893600160601b63ffffffff60c01b031990838203908290600190090892600160601b63ffffffff60c01b031984800993600160601b63ffffffff60c01b031990850992600160601b63ffffffff60c01b03199085900994600160601b63ffffffff60c01b031980876002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b031986810381858009080895600160601b63ffffffff60c01b031992839086900991600160601b63ffffffff60c01b03199182908982039008090892600160601b63ffffffff60c01b03199060010991600160601b63ffffffff60c01b03199060010990565b50600191508190565b91909260405190602082526020808301526020604083015260608201526002600160601b0363ffffffff60c01b03196080820152600163ffffffff60601b0360601b1960a082015260208160c0816005600019fa15610244575192600160601b63ffffffff60c01b03199084900992600160601b63ffffffff60c01b03199109600160601b63ffffffff60c01b031991908290800990099156fe0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f500ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc0627f72af0e6f412195b0d8acbe438b28090dd545b7d2331fccf77723561f501a2646970667358221220890c9d20b5fc4df99bded2544912158a1d933f168e2e843d0c1a15a2ff32ce8c64736f6c634300081c003338109edc26e166b5579352ce56a50813177eb25208fd90d61f2f3783862202200000000000000000000000000000000000000000000000000000","id":1,"to":"0xba5Ed099633D3B313e4D5F7bdc1305d3c28ba5Ed","type":"ONCHAIN_INTERACTION","value":{"_kind":"bigint","value":"0"}},"type":"NETWORK_INTERACTION_REQUEST"} \ No newline at end of file